diff --git a/README.md b/README.md index 68e85a68e..f86803200 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ * NTM Reloaded: https://github.com/TheOriginalGolem/Hbm-s-Nuclear-Tech-GIT/releases * NTM Extended Edition (Alcater): https://github.com/Alcatergit/Hbm-s-Nuclear-Tech-GIT/releases +* NTM WarFactory: https://github.com/MisterNorwood/Hbm-s-Nuclear-Tech-GIT/releases For 1.18, try Martin's remake: https://codeberg.org/MartinTheDragon/Nuclear-Tech-Mod-Remake/releases diff --git a/changelog b/changelog index 9c2a128f4..8778e076f 100644 --- a/changelog +++ b/changelog @@ -1,12 +1,29 @@ +## Added +* `/ntmserver` + * Functions like `/ntmclient` but for common settings + * Can toggle `DAMAGE_COMPATIBILITY_MODE`, off by default, enables a more compatible (but slightly jankier) version of the bullet damage code + * `MINE__DAMAGE` can be used to adjust landmine damage + * `TAINT_TRAILS` now replaces the hardcore taint config option, making taint blocks more potent and the potion effect trail taint blocks + ## Changed -* Particle detectors now print an error for when the recipe could not be completed -* Removed "no ore dict data" line from tooltips with extended view enabled -* Added a client config called `GUN_ANIMATION_SPEED` which allows the speed of gun animations to be changed - * Mostly for debugging, since it only applies to the bus animation system, things like smoke trails and muzzle flashes are unaffected +* Fat mines now use the standardized mini nuke code + * Fat mines now have a base damage of exactly 100, being identical to demolition mini nukes + * Fat mines now gib affected entities +* IV bags now use `setHealth` operations instead of dealing damage, preventing health duplication by just avoiding the damage +* The settings tool can now copy and paste the "paint" from paintable cables and fluid ducts +* Changed the way taint works + * Instead of neon purple vines, taint is bow a greyish sludge + * Taint now actively replaces blocks instead of growing along them + * Taint is still limited in spread, however taint spread is lower underground, taint decays three times faster in intensity if the block is not exposed to air, making taint spread more along the surface + * Taint has a 25% chance of splashing down when replacing a block with no supports, causing structures to collapse and taint to spread faster + * Similar to soil sand, entities will sink in taint and get slowed down + * The sludge consumeth +* `enableGuns` config option now applies to SEDNA system guns, simply canceling all gun-related keybinds +* Cinnabar dust, if registered by another mod, can now be acidized into cinnabar using hydrogen peroxide +* Copper wires, like AA and gold, can now be welded into dense wires ## Fixed -* Fixed items being annihilated when shift clicking them into the particle source -* Fixed packet optimization not allowing packets to be sent when the day night cycle is halted -* Fixed particle detectors not always using power when they should -* Fixed rotary furnace voiding low pressure steam when dealing with input numbers not divisible by 100 -* Fixed state leak causing smoke from the right akimbo weapon to glow when the first one is fired \ No newline at end of file +* Fixed animation error on the MAS-36 +* Fixed drone docks, requester and provider crates not dropping their contents when broken +* Fixed all missing texture errors that appear in the startup log +* Potentially fixed a crash with mekanism during the recipe change phase \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index f1fef826d..57936ce9d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=5230 +mod_build_number=5257 credits=HbMinecraft,\ \ rodolphito (explosion algorithms),\ @@ -12,6 +12,7 @@ credits=HbMinecraft,\ \ MellowArpeggiation (new animation system, turbine sounds, sound fixes, industrial lights, better particle diodes),\ \ Pheo (textures, various machines, models, weapons),\ \ Vær (gas centrifuges, better worldgen, ZIRNOX, CP-1 parts, starter guide, new cyclotron, weapon animations),\ + \ UFFR (RTG pellets, guns, casings, euphemium capacitor, nucleartech.wiki),\ \ LePeep (coilgun model, BDCL QC),\ \ Adam29 (liquid petroleum, ethanol, electric furnace),\ \ Pvndols (thorium fuel recipe, gas turbine),\ @@ -33,7 +34,6 @@ credits=HbMinecraft,\ \ Maksymisio (polish localization)\ \ el3ctro4ndre (italian localization),\ \ Pu-238 (Tom impact effects),\ - \ UFFR (RTG pellets, guns, casings, euphemium capacitor),\ \ Frooz (gun models),\ \ VT-6/24 (models, textures),\ \ Nos (models),\ diff --git a/src/main/java/api/hbm/energymk2/IEnergyProviderMK2.java b/src/main/java/api/hbm/energymk2/IEnergyProviderMK2.java index e8c8cf09b..57b10fe2d 100644 --- a/src/main/java/api/hbm/energymk2/IEnergyProviderMK2.java +++ b/src/main/java/api/hbm/energymk2/IEnergyProviderMK2.java @@ -2,6 +2,8 @@ package api.hbm.energymk2; import com.hbm.handler.threading.PacketThreading; import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.uninos.IGenProvider; +import com.hbm.uninos.networkproviders.PowerNetProvider; import com.hbm.util.Compat; import api.hbm.energymk2.Nodespace.PowerNode; @@ -12,7 +14,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; /** If it sends energy, use this */ -public interface IEnergyProviderMK2 extends IEnergyHandlerMK2 { +public interface IEnergyProviderMK2 extends IEnergyHandlerMK2, IGenProvider { /** Uses up available power, default implementation has no sanity checking, make sure that the requested power is lequal to the current power */ public default void usePower(long power) { diff --git a/src/main/java/api/hbm/energymk2/IEnergyReceiverMK2.java b/src/main/java/api/hbm/energymk2/IEnergyReceiverMK2.java index b41ef5b03..749007cc7 100644 --- a/src/main/java/api/hbm/energymk2/IEnergyReceiverMK2.java +++ b/src/main/java/api/hbm/energymk2/IEnergyReceiverMK2.java @@ -3,6 +3,8 @@ package api.hbm.energymk2; import com.hbm.handler.threading.PacketThreading; import com.hbm.interfaces.NotableComments; import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.uninos.IGenReceiver; +import com.hbm.uninos.networkproviders.PowerNetProvider; import com.hbm.util.Compat; import api.hbm.energymk2.Nodespace.PowerNode; @@ -14,7 +16,7 @@ import net.minecraftforge.common.util.ForgeDirection; /** If it receives energy, use this */ @NotableComments -public interface IEnergyReceiverMK2 extends IEnergyHandlerMK2 { +public interface IEnergyReceiverMK2 extends IEnergyHandlerMK2, IGenReceiver { public default long transferPower(long power) { if(power + this.getPower() <= this.getMaxPower()) { @@ -76,31 +78,6 @@ public interface IEnergyReceiverMK2 extends IEnergyHandlerMK2 { } } - /** - * Project MKUltra was an illegal human experiments program designed and undertaken by the U.S. Central Intelligence Agency (CIA) - * to develop procedures and identify drugs that could be used during interrogations to weaken people and force confessions through - * brainwashing and psychological torture. It began in 1953 and was halted in 1973. MKUltra used numerous methods to manipulate - * its subjects' mental states and brain functions, such as the covert administration of high doses of psychoactive drugs (especially LSD) - * and other chemicals without the subjects' consent, electroshocks, hypnosis, sensory deprivation, isolation, verbal and sexual - * abuse, and other forms of torture. - * MKUltra was preceded by Project Artichoke. It was organized through the CIA's Office of Scientific Intelligence and coordinated - * with the United States Army Biological Warfare Laboratories. The program engaged in illegal activities, including the - * use of U.S. and Canadian citizens as unwitting test subjects. MKUltra's scope was broad, with activities carried - * out under the guise of research at more than 80 institutions aside from the military, including colleges and universities, - * hospitals, prisons, and pharmaceutical companies. The CIA operated using front organizations, although some top officials at these - * institutions were aware of the CIA's involvement. - * MKUltra was revealed to the public in 1975 by the Church Committee of the United States Congress and Gerald Ford's United States - * President's Commission on CIA activities within the United States (the Rockefeller Commission). Investigative efforts were hampered - * by CIA Director Richard Helms's order that all MKUltra files be destroyed in 1973; the Church Committee and Rockefeller Commission - * investigations relied on the sworn testimony of direct participants and on the small number of documents that survived Helms's order. - * In 1977, a Freedom of Information Act request uncovered a cache of 20,000 documents relating to MKUltra, which led to Senate hearings. - * Some surviving information about MKUltra was declassified in 2001. - * */ - public default ConnectionPriority getPriority() { - return ConnectionPriority.NORMAL; - } - - /** More is better-er */ public enum ConnectionPriority { LOWEST, LOW, diff --git a/src/main/java/api/hbm/energymk2/Nodespace.java b/src/main/java/api/hbm/energymk2/Nodespace.java index 401664333..114c4dd75 100644 --- a/src/main/java/api/hbm/energymk2/Nodespace.java +++ b/src/main/java/api/hbm/energymk2/Nodespace.java @@ -1,161 +1,40 @@ package api.hbm.energymk2; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map.Entry; -import java.util.Set; - import com.hbm.interfaces.NotableComments; +import com.hbm.uninos.GenNode; +import com.hbm.uninos.UniNodespace; +import com.hbm.uninos.networkproviders.PowerNetProvider; import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.util.fauxpointtwelve.DirPos; -import net.minecraft.server.MinecraftServer; import net.minecraft.world.World; /** - * The "Nodespace" is an intermediate, "ethereal" layer of abstraction that tracks nodes (i.e. cables) even when they are no longer loaded, allowing continued operation even when unloaded + * The dead fucking corpse of nodespace MK1. + * A fantastic proof of concept, but ultimately it was killed for being just not that versatile. + * This class is mostly just a compatibility husk that should allow uninodespace to slide into the mod with as much lubrication as it deserves. + * * @author hbm - * */ public class Nodespace { - /** Contains all "NodeWorld" instances, i.e. lists of nodes existing per world */ - public static HashMap worlds = new HashMap<>(); - public static Set activePowerNets = new HashSet<>(); + public static final PowerNetProvider THE_POWER_PROVIDER = new PowerNetProvider(); - public static PowerNode getNode(World world, int x, int y, int z) { - NodeWorld nodeWorld = worlds.get(world); - if(nodeWorld != null) return nodeWorld.nodes.get(new BlockPos(x, y, z)); - return null; + @Deprecated public static PowerNode getNode(World world, int x, int y, int z) { + return (PowerNode) UniNodespace.getNode(world, x, y, z, THE_POWER_PROVIDER); } - public static void createNode(World world, PowerNode node) { - NodeWorld nodeWorld = worlds.get(world); - if(nodeWorld == null) { - nodeWorld = new NodeWorld(); - worlds.put(world, nodeWorld); - } - nodeWorld.pushNode(node); + @Deprecated public static void createNode(World world, PowerNode node) { + UniNodespace.createNode(world, node); } - public static void destroyNode(World world, int x, int y, int z) { - PowerNode node = getNode(world, x, y, z); - if(node != null) { - worlds.get(world).popNode(node); - } - } - - /** Goes over each node and manages connections */ - public static void updateNodespace() { - - for(World world : MinecraftServer.getServer().worldServers) { - NodeWorld nodes = worlds.get(world); - - if(nodes == null) - continue; - - for(Entry entry : nodes.nodes.entrySet()) { - PowerNode node = entry.getValue(); - if(!node.hasValidNet() || node.recentlyChanged) { - checkNodeConnection(world, node); - node.recentlyChanged = false; - } - } - } - - updatePowerNets(); - } - - private static void updatePowerNets() { - - for(PowerNetMK2 net : activePowerNets) net.resetEnergyTracker(); //reset has to be done before everything else - for(PowerNetMK2 net : activePowerNets) net.transferPower(); - } - - /** Goes over each connection point of the given node, tries to find neighbor nodes and to join networks with them */ - private static void checkNodeConnection(World world, PowerNode node) { - - for(DirPos con : node.connections) { - - PowerNode conNode = getNode(world, con.getX(), con.getY(), con.getZ()); // get whatever neighbor node intersects with that connection - - if(conNode != null) { // if there is a node at that place - - if(conNode.hasValidNet() && conNode.net == node.net) continue; // if the net is valid and both nodes have the same net, skip - - if(checkConnection(conNode, con, false)) { - connectToNode(node, conNode); - } - } - } - - if(node.net == null || !node.net.isValid()) new PowerNetMK2().joinLink(node); - } - - public static boolean checkConnection(PowerNode connectsTo, DirPos connectFrom, boolean skipSideCheck) { - - for(DirPos revCon : connectsTo.connections) { - - if(revCon.getX() - revCon.getDir().offsetX == connectFrom.getX() && revCon.getY() - revCon.getDir().offsetY == connectFrom.getY() && revCon.getZ() - revCon.getDir().offsetZ == connectFrom.getZ() && (revCon.getDir() == connectFrom.getDir().getOpposite() || skipSideCheck)) { - return true; - } - } - - return false; - } - - /** Links two nodes with different or potentially no networks */ - private static void connectToNode(PowerNode origin, PowerNode connection) { - - if(origin.hasValidNet() && connection.hasValidNet()) { // both nodes have nets, but the nets are different (previous assumption), join networks - if(origin.net.links.size() > connection.net.links.size()) { - origin.net.joinNetworks(connection.net); - } else { - connection.net.joinNetworks(origin.net); - } - } else if(!origin.hasValidNet() && connection.hasValidNet()) { // origin has no net, connection does, have origin join connection's net - connection.net.joinLink(origin); - } else if(origin.hasValidNet() && !connection.hasValidNet()) { // ...and vice versa - origin.net.joinLink(connection); - } - } - - public static class NodeWorld { - - /** Contains a map showing where each node is, a node is every spot that a cable exists at. - * Instead of the old proxy system, things like substation now create multiple nodes at their connection points */ - public HashMap nodes = new HashMap<>(); - - /** Adds a node at all its positions to the nodespace */ - public void pushNode(PowerNode node) { - for(BlockPos pos : node.positions) { - nodes.put(pos, node); - } - } - - /** Removes the specified node from all positions from nodespace */ - public void popNode(PowerNode node) { - if(node.net != null) node.net.destroy(); - for(BlockPos pos : node.positions) { - nodes.remove(pos); - node.expired = true; - } - } - - /** Grabs the node at one position, then removes it from all positions it occupies */ - public void popNode(BlockPos pos) { - PowerNode node = nodes.get(pos); - if(node != null) popNode(node); - } + @Deprecated public static void destroyNode(World world, int x, int y, int z) { + UniNodespace.destroyNode(world, x, y, z, THE_POWER_PROVIDER); } @NotableComments - public static class PowerNode { + public static class PowerNode extends GenNode { - public BlockPos[] positions; - public DirPos[] connections; - public PowerNetMK2 net; - public boolean expired = false; /** * Okay so here's the deal: The code has shit idiot brain fungus. I don't know why. I re-tested every part involved several times. * I don't know why. But for some reason, during neighbor checks, on certain arbitrary fucking places, the joining operation just fails. @@ -167,32 +46,16 @@ public class Nodespace { * breaking, but it seems to allow those parts to connect back to their neighbor nets as they are supposed to. I am not proud of this solution, * this issue shouldn't exist to begin with and I am going fucking insane but it is what it is. */ - public boolean recentlyChanged = true; public PowerNode(BlockPos... positions) { + super(THE_POWER_PROVIDER, positions); this.positions = positions; } + @Override public PowerNode setConnections(DirPos... connections) { - this.connections = connections; + super.setConnections(connections); return this; } - - public PowerNode addConnection(DirPos connection) { - DirPos[] newCons = new DirPos[this.connections.length + 1]; - for(int i = 0; i < this.connections.length; i++) newCons[i] = this.connections[i]; - newCons[newCons.length - 1] = connection; - this.connections = newCons; - return this; - } - - public boolean hasValidNet() { - return this.net != null && this.net.isValid(); - } - - public void setNet(PowerNetMK2 net) { - this.net = net; - this.recentlyChanged = true; - } } } diff --git a/src/main/java/api/hbm/energymk2/PowerNetMK2.java b/src/main/java/api/hbm/energymk2/PowerNetMK2.java index 8afc59890..ff8043898 100644 --- a/src/main/java/api/hbm/energymk2/PowerNetMK2.java +++ b/src/main/java/api/hbm/energymk2/PowerNetMK2.java @@ -2,124 +2,32 @@ package api.hbm.energymk2; import java.util.ArrayList; import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; import java.util.Iterator; import java.util.List; -import java.util.Set; +import com.hbm.uninos.NodeNet; import com.hbm.util.Tuple.Pair; import java.util.Map.Entry; -import java.util.Random; import api.hbm.energymk2.IEnergyReceiverMK2.ConnectionPriority; import api.hbm.energymk2.Nodespace.PowerNode; -public class PowerNetMK2 { - - public static Random rand = new Random(); - public boolean valid = true; - public Set links = new HashSet(); - - /** Maps all active subscribers to a timestamp, handy for handling timeouts. In a good system this shouldn't be necessary, but the previous system taught me to be cautious anyway */ - public HashMap receiverEntries = new HashMap(); - public HashMap providerEntries = new HashMap(); +/** + * Technically MK3 since it's now UNINOS compatible, although UNINOS was build out of 95% nodespace code + * + * @author hbm + */ +public class PowerNetMK2 extends NodeNet { public long energyTracker = 0L; - public PowerNetMK2() { - Nodespace.activePowerNets.add(this); - } - - /// SUBSCRIBER HANDLING /// - public boolean isSubscribed(IEnergyReceiverMK2 receiver) { - return this.receiverEntries.containsKey(receiver); - } - - public void addReceiver(IEnergyReceiverMK2 receiver) { - this.receiverEntries.put(receiver, System.currentTimeMillis()); - } - - public void removeReceiver(IEnergyReceiverMK2 receiver) { - this.receiverEntries.remove(receiver); - } - - /// PROVIDER HANDLING /// - public boolean isProvider(IEnergyProviderMK2 provider) { - return this.providerEntries.containsKey(provider); - } - - public void addProvider(IEnergyProviderMK2 provider) { - this.providerEntries.put(provider, System.currentTimeMillis()); - } - - public void removeProvider(IEnergyProviderMK2 provider) { - this.providerEntries.remove(provider); - } - - /// LINK JOINING /// - - /** Combines two networks into one */ - public void joinNetworks(PowerNetMK2 network) { - - if(network == this) return; //wtf?! - - List oldNodes = new ArrayList(network.links.size()); - oldNodes.addAll(network.links); // might prevent oddities related to joining - nvm it does nothing - - for(PowerNode conductor : oldNodes) forceJoinLink(conductor); - network.links.clear(); - - for(IEnergyReceiverMK2 connector : network.receiverEntries.keySet()) this.addReceiver(connector); - for(IEnergyProviderMK2 connector : network.providerEntries.keySet()) this.addProvider(connector); - network.destroy(); - } - - /** Adds the power node as part of this network's links */ - public PowerNetMK2 joinLink(PowerNode node) { - if(node.net != null) node.net.leaveLink(node); - return forceJoinLink(node); - } - - /** Adds the power node as part of this network's links, skips the part about removing it from existing networks */ - public PowerNetMK2 forceJoinLink(PowerNode node) { - this.links.add(node); - node.setNet(this); - return this; - } - - /** Removes the specified power node */ - public void leaveLink(PowerNode node) { - node.setNet(null); - this.links.remove(node); - } - - /// GENERAL POWER NET CONTROL /// - public void invalidate() { - this.valid = false; - Nodespace.activePowerNets.remove(this); - } - - public boolean isValid() { - return this.valid; - } - - public void destroy() { - this.invalidate(); - for(PowerNode link : this.links) if(link.net == this) link.setNet(null); - this.links.clear(); - this.receiverEntries.clear(); - this.providerEntries.clear(); - } - - public void resetEnergyTracker() { - this.energyTracker = 0; - } - protected static int timeout = 3_000; - public void transferPower() { + @Override public void resetTrackers() { this.energyTracker = 0; } + + @Override + public void update() { if(providerEntries.isEmpty()) return; if(receiverEntries.isEmpty()) return; @@ -195,118 +103,6 @@ public class PowerNetMK2 { } } - @Deprecated public void transferPowerOld() { - - if(providerEntries.isEmpty()) return; - if(receiverEntries.isEmpty()) return; - - long timestamp = System.currentTimeMillis(); - long transferCap = 100_000_000_000_000_00L; // that ought to be enough - - long supply = 0; - long demand = 0; - long[] priorityDemand = new long[ConnectionPriority.values().length]; - - Iterator> provIt = providerEntries.entrySet().iterator(); - while(provIt.hasNext()) { - Entry entry = provIt.next(); - if(timestamp - entry.getValue() > timeout) { provIt.remove(); continue; } - supply += Math.min(entry.getKey().getPower(), entry.getKey().getProviderSpeed()); - } - - if(supply <= 0) return; - - Iterator> recIt = receiverEntries.entrySet().iterator(); - while(recIt.hasNext()) { - Entry entry = recIt.next(); - if(timestamp - entry.getValue() > timeout) { recIt.remove(); continue; } - long rec = Math.min(entry.getKey().getMaxPower() - entry.getKey().getPower(), entry.getKey().getReceiverSpeed()); - demand += rec; - for(int i = 0; i <= entry.getKey().getPriority().ordinal(); i++) priorityDemand[i] += rec; - } - - if(demand <= 0) return; - - long toTransfer = Math.min(supply, demand); - if(toTransfer > transferCap) toTransfer = transferCap; - if(toTransfer <= 0) return; - - List buffers = new ArrayList(); - List providers = new ArrayList(); - Set receiverSet = receiverEntries.keySet(); - for(IEnergyProviderMK2 provider : providerEntries.keySet()) { - if(receiverSet.contains(provider)) { - buffers.add(provider); - } else { - providers.add(provider); - } - } - providers.addAll(buffers); //makes buffers go last - List receivers = new ArrayList() {{ addAll(receiverSet); }}; - - receivers.sort(COMP); - - int maxIteration = 1000; - - //how much the current sender/receiver have already sent/received - long prevSrc = 0; - long prevDest = 0; - - while(!receivers.isEmpty() && !providers.isEmpty() && maxIteration > 0) { - maxIteration--; - - IEnergyProviderMK2 src = providers.get(0); - IEnergyReceiverMK2 dest = receivers.get(0); - - if(src.getPower() <= 0) { providers.remove(0); prevSrc = 0; continue; } - - if(src == dest) { // STALEMATE DETECTED - //if this happens, a buffer will waste both its share of transfer and receiving potential and do effectively nothing, essentially breaking - - //try if placing the conflicting provider at the end of the list does anything - //we do this first because providers have no priority, so we may shuffle those around as much as we want - if(providers.size() > 1) { - providers.add(providers.get(0)); - providers.remove(0); - prevSrc = 0; //this might cause slight issues due to the tracking being effectively lost while there still might be pending operations - continue; - } - //if that didn't work, try shifting the receiver by one place (to minimize priority breakage) - if(receivers.size() > 1) { - receivers.add(2, receivers.get(0)); - receivers.remove(0); - prevDest = 0; //ditto - continue; - } - - //if neither option could be performed, the only conclusion is that this buffer mode battery is alone in the power net, in which case: not my provlem - } - - long pd = priorityDemand[dest.getPriority().ordinal()]; - - long receiverShare = Math.min((long) Math.ceil((double) Math.min(dest.getMaxPower() - dest.getPower(), dest.getReceiverSpeed()) * (double) supply / (double) pd), dest.getReceiverSpeed()) - prevDest; - long providerShare = Math.min((long) Math.ceil((double) Math.min(src.getPower(), src.getProviderSpeed()) * (double) demand / (double) supply), src.getProviderSpeed()) - prevSrc; - - long toDrain = Math.min((long) (src.getPower()), providerShare); - long toFill = Math.min(dest.getMaxPower() - dest.getPower(), receiverShare); - - long finalTransfer = Math.min(toDrain, toFill); - if(toFill <= 0) { receivers.remove(0); prevDest = 0; continue; } - - finalTransfer -= dest.transferPower(finalTransfer); - src.usePower(finalTransfer); - - prevSrc += finalTransfer; - prevDest += finalTransfer; - - if(prevSrc >= src.getProviderSpeed()) { providers.remove(0); prevSrc = 0; continue; } - if(prevDest >= dest.getReceiverSpeed()) { receivers.remove(0); prevDest = 0; continue; } - - toTransfer -= finalTransfer; - this.energyTracker += finalTransfer; - } - } - public long sendPowerDiode(long power) { if(receiverEntries.isEmpty()) return power; diff --git a/src/main/java/api/hbm/fluid/FluidNet.java b/src/main/java/api/hbm/fluid/FluidNet.java new file mode 100644 index 000000000..f49b77264 --- /dev/null +++ b/src/main/java/api/hbm/fluid/FluidNet.java @@ -0,0 +1,17 @@ +package api.hbm.fluid; + +import com.hbm.uninos.NodeNet; + +public class FluidNet extends NodeNet { // yeah i don't feel like it, gonna do that shit tomorrow or sth + + public long tracker = 0L; + + protected static int timeout = 3_000; + + @Override public void resetTrackers() { this.tracker = 0; } + + @Override + public void update() { + + } +} diff --git a/src/main/java/api/hbm/fluidmk2/FluidNetMK2.java b/src/main/java/api/hbm/fluidmk2/FluidNetMK2.java new file mode 100644 index 000000000..14052452d --- /dev/null +++ b/src/main/java/api/hbm/fluidmk2/FluidNetMK2.java @@ -0,0 +1,11 @@ +package api.hbm.fluidmk2; + +import com.hbm.uninos.NodeNet; + +public class FluidNetMK2 extends NodeNet { + + @Override + public void update() { + + } +} diff --git a/src/main/java/api/hbm/fluidmk2/FluidNode.java b/src/main/java/api/hbm/fluidmk2/FluidNode.java new file mode 100644 index 000000000..a4c0c3141 --- /dev/null +++ b/src/main/java/api/hbm/fluidmk2/FluidNode.java @@ -0,0 +1,19 @@ +package api.hbm.fluidmk2; + +import com.hbm.uninos.GenNode; +import com.hbm.uninos.INetworkProvider; +import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.util.fauxpointtwelve.DirPos; + +public class FluidNode extends GenNode { + + public FluidNode(INetworkProvider provider, BlockPos... positions) { + super(provider, positions); + } + + @Override + public FluidNode setConnections(DirPos... connections) { + super.setConnections(connections); + return this; + } +} diff --git a/src/main/java/api/hbm/fluidmk2/IFluidConnectorBlockMK2.java b/src/main/java/api/hbm/fluidmk2/IFluidConnectorBlockMK2.java new file mode 100644 index 000000000..f7a1a47a7 --- /dev/null +++ b/src/main/java/api/hbm/fluidmk2/IFluidConnectorBlockMK2.java @@ -0,0 +1,12 @@ +package api.hbm.fluidmk2; + +import com.hbm.inventory.fluid.FluidType; + +import net.minecraft.world.IBlockAccess; +import net.minecraftforge.common.util.ForgeDirection; + +public interface IFluidConnectorBlockMK2 { + + /** dir is the face that is connected to, the direction going outwards from the block */ + public boolean canConnect(FluidType type, IBlockAccess world, int x, int y, int z, ForgeDirection dir); +} diff --git a/src/main/java/api/hbm/fluidmk2/IFluidConnectorMK2.java b/src/main/java/api/hbm/fluidmk2/IFluidConnectorMK2.java new file mode 100644 index 000000000..dc0a3dbf3 --- /dev/null +++ b/src/main/java/api/hbm/fluidmk2/IFluidConnectorMK2.java @@ -0,0 +1,17 @@ +package api.hbm.fluidmk2; + +import com.hbm.inventory.fluid.FluidType; + +import net.minecraftforge.common.util.ForgeDirection; + +public interface IFluidConnectorMK2 { + + /** + * Whether the given side can be connected to + * @param dir + * @return + */ + public default boolean canConnect(FluidType type, ForgeDirection dir) { + return dir != ForgeDirection.UNKNOWN; + } +} diff --git a/src/main/java/api/hbm/fluidmk2/IFluidPipeMK2.java b/src/main/java/api/hbm/fluidmk2/IFluidPipeMK2.java new file mode 100644 index 000000000..d95fb2998 --- /dev/null +++ b/src/main/java/api/hbm/fluidmk2/IFluidPipeMK2.java @@ -0,0 +1,23 @@ +package api.hbm.fluidmk2; + +import com.hbm.inventory.fluid.FluidType; +import com.hbm.lib.Library; +import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.util.fauxpointtwelve.DirPos; + +import net.minecraft.tileentity.TileEntity; + +public interface IFluidPipeMK2 { + + public default FluidNode createNode(FluidType type) { + TileEntity tile = (TileEntity) this; + return new FluidNode(type.getNetworkProvider(), new BlockPos(tile.xCoord, tile.yCoord, tile.zCoord)).setConnections( + new DirPos(tile.xCoord + 1, tile.yCoord, tile.zCoord, Library.POS_X), + new DirPos(tile.xCoord - 1, tile.yCoord, tile.zCoord, Library.NEG_X), + new DirPos(tile.xCoord, tile.yCoord + 1, tile.zCoord, Library.POS_Y), + new DirPos(tile.xCoord, tile.yCoord - 1, tile.zCoord, Library.NEG_Y), + new DirPos(tile.xCoord, tile.yCoord, tile.zCoord + 1, Library.POS_Z), + new DirPos(tile.xCoord, tile.yCoord, tile.zCoord - 1, Library.NEG_Z) + ); + } +} diff --git a/src/main/java/api/hbm/fluidmk2/IFluidProviderMK2.java b/src/main/java/api/hbm/fluidmk2/IFluidProviderMK2.java new file mode 100644 index 000000000..c5316a0be --- /dev/null +++ b/src/main/java/api/hbm/fluidmk2/IFluidProviderMK2.java @@ -0,0 +1,11 @@ +package api.hbm.fluidmk2; + +import com.hbm.inventory.fluid.FluidType; +import com.hbm.uninos.IGenProvider; +import com.hbm.uninos.networkproviders.FluidNetProvider; + +public interface IFluidProviderMK2 extends IGenProvider { + + public void useUpFluid(FluidType type, int pressure, long amount); + public long getProviderSpeed(FluidType type, int pressure); +} diff --git a/src/main/java/api/hbm/fluidmk2/IFluidReceiverMK2.java b/src/main/java/api/hbm/fluidmk2/IFluidReceiverMK2.java new file mode 100644 index 000000000..f20fba01e --- /dev/null +++ b/src/main/java/api/hbm/fluidmk2/IFluidReceiverMK2.java @@ -0,0 +1,12 @@ +package api.hbm.fluidmk2; + +import com.hbm.inventory.fluid.FluidType; +import com.hbm.uninos.IGenReceiver; +import com.hbm.uninos.networkproviders.FluidNetProvider; + +public interface IFluidReceiverMK2 extends IGenReceiver { + + /** Sends fluid of the desired type and pressure to the receiver, returns the remainder */ + public long transferFluid(FluidType type, int pressure, long amount); + public long getReceiverSpeed(FluidType type, int pressure); +} diff --git a/src/main/java/api/hbm/fluidmk2/package-info.java b/src/main/java/api/hbm/fluidmk2/package-info.java new file mode 100644 index 000000000..b948336d8 --- /dev/null +++ b/src/main/java/api/hbm/fluidmk2/package-info.java @@ -0,0 +1,16 @@ +/** + * + */ +/** + * @author hbm + * + */ +package api.hbm.fluidmk2; + +/* + +It's rather shrimple: the shiny new energy system using universal nodespace, but hit with a hammer until it works with fluids. +Has a few extra bits and pieces for handling, but the concept is basically the same. +Sounds good? + +*/ \ No newline at end of file diff --git a/src/main/java/api/hbm/recipe/IRecipeRegisterListener.java b/src/main/java/api/hbm/recipe/IRecipeRegisterListener.java new file mode 100644 index 000000000..14832ec3a --- /dev/null +++ b/src/main/java/api/hbm/recipe/IRecipeRegisterListener.java @@ -0,0 +1,13 @@ +package api.hbm.recipe; + +public interface IRecipeRegisterListener { + + /** + * Called during SerializableRecipe.initialize(), after the defaults are loaded but before the template is written. + * Due to the way the recipes are handled, calling it once is not enough, it has to be called once for every SerializableRecipe + * instance handled, therefore the load operation passes the type name of the recipe, so that the listeners know what type of recipe + * to register at that point. Note that the actual SerializableRecipe instance is irrelevant, since recipes are static anyway, + * and direct tampering with SerializableRecipes is not recommended. + */ + public void onRecipeLoad(String recipeClassName); +} diff --git a/src/main/java/api/hbm/recipe/package-info.java b/src/main/java/api/hbm/recipe/package-info.java new file mode 100644 index 000000000..53e838a43 --- /dev/null +++ b/src/main/java/api/hbm/recipe/package-info.java @@ -0,0 +1,17 @@ +package api.hbm.recipe; + +/* + +Quick guide on how to make robust and safe recipe integration: +* Implement IRecipeRegisterListener, the resulting class will handle all recipes, and the onRecipeLoad method is called every time the SerializableRecipe system updates +* Register your IRecipeRegisterListener using CompatExternal.registerRecipeRegisterListener, this has to happen before the SerializableRecipe initializes, doing this during PreInit should be safe +* In your IRecipeRegisterListener, check the supplied recipe type string (which will be the class name of the SerializableRecipe currently being registered) and register your custom recipes accordingly using CompatRecipeRegistry + +Explanation: +* Order of operations is important for the recipes to work, if recipes are loaded outside the scope of SerializableRecipe.initialize, they will not work correctly +* If recipes are registered before the init, they are deleted, if they are registered after the init, they will not be part of the config template file, and get deleted when running /ntmreload +* Machines change all the time, so the recipe classes should not be considered API, since the compat would break immediately if a machine is changed or removed +* CompatRecipeRegistry promises to never change its method signatures, and have solid sanity checking when recipes are registered, allowing it to make the bst of whatever data is thrown at it +* Using this dedicated registry class means that even if a machine is changed or removed, the recipes will continue to work to the best of its abilities + +*/ \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/BlockDummyable.java b/src/main/java/com/hbm/blocks/BlockDummyable.java index cfedf6246..75dd39c2f 100644 --- a/src/main/java/com/hbm/blocks/BlockDummyable.java +++ b/src/main/java/com/hbm/blocks/BlockDummyable.java @@ -5,12 +5,15 @@ import com.hbm.handler.ThreeInts; import com.hbm.interfaces.ICopiable; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; +import com.hbm.world.gen.INBTTransformable; + import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.RenderGlobal; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; @@ -32,7 +35,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; -public abstract class BlockDummyable extends BlockContainer implements ICustomBlockHighlight, ICopiable { +public abstract class BlockDummyable extends BlockContainer implements ICustomBlockHighlight, ICopiable, INBTTransformable { public BlockDummyable(Material mat) { super(mat); @@ -116,7 +119,7 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl return findCoreRec(world, x, y, z); } - List positions = new ArrayList(); + List positions = new ArrayList<>(); public int[] findCoreRec(World world, int x, int y, int z) { @@ -216,11 +219,6 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl super.onBlockPlacedBy(world, x, y, z, player, itemStack); } - /*@Override - public void onBlockAdded(World world, int x, int y, int z) { - lastBlockSet = new BlockPos(x, y, z); - }*/ - /** * A bit more advanced than the dir modifier, but it is important that the resulting direction meta is in the core range. * Using the "extra" metas is technically possible but requires a bit of tinkering, e.g. preventing a recursive loop @@ -267,9 +265,9 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl return; // world.setBlockMetadataWithNotify(x, y, z, meta + extra, 3); - this.safeRem = true; + safeRem = true; world.setBlock(x, y, z, this, meta + extra, 3); - this.safeRem = false; + safeRem = false; } public void removeExtra(World world, int x, int y, int z) { @@ -283,9 +281,9 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl return; // world.setBlockMetadataWithNotify(x, y, z, meta + extra, 3); - this.safeRem = true; + safeRem = true; world.setBlock(x, y, z, this, meta - extra, 3); - this.safeRem = false; + safeRem = false; } // checks if the dummy metadata is within the extra range @@ -423,8 +421,9 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl return !bounding.isEmpty(); } - public List bounding = new ArrayList(); + public List bounding = new ArrayList<>(); + @SuppressWarnings({ "rawtypes", "unchecked" }) @Override public void addCollisionBoxesToList(World world, int x, int y, int z, AxisAlignedBB entityBounding, List list, Entity entity) { @@ -443,7 +442,7 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl z = pos[2]; for(AxisAlignedBB aabb :this.bounding) { - AxisAlignedBB boxlet = getAABBRotationOffset(aabb, x + 0.5, y, z + 0.5, ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z) - this.offset).getRotation(ForgeDirection.UP)); + AxisAlignedBB boxlet = getAABBRotationOffset(aabb, x + 0.5, y, z + 0.5, ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z) - offset).getRotation(ForgeDirection.UP)); if(entityBounding.intersectsWith(boxlet)) { list.add(boxlet); @@ -504,7 +503,7 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl int meta = world.getBlockMetadata(x, y, z); ICustomBlockHighlight.setup(); - for(AxisAlignedBB aabb : this.bounding) event.context.drawOutlinedBoundingBox(getAABBRotationOffset(aabb.expand(exp, exp, exp), 0, 0, 0, ForgeDirection.getOrientation(meta - offset).getRotation(ForgeDirection.UP)).getOffsetBoundingBox(x - dX + 0.5, y - dY, z - dZ + 0.5), -1); + for(AxisAlignedBB aabb : this.bounding) RenderGlobal.drawOutlinedBoundingBox(getAABBRotationOffset(aabb.expand(exp, exp, exp), 0, 0, 0, ForgeDirection.getOrientation(meta - offset).getRotation(ForgeDirection.UP)).getOffsetBoundingBox(x - dX + 0.5, y - dY, z - dZ + 0.5), -1); ICustomBlockHighlight.cleanup(); } @@ -534,4 +533,27 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl return ((ICopiable) tile).infoForDisplay(world, x, y, z); return null; } -} + + @Override + public int transformMeta(int meta, int coordBaseMode) { + boolean isOffset = meta >= 12; // squishing causes issues + boolean isExtra = !isOffset && meta >= extra; + + if(isOffset) { + meta -= offset; + } else if(isExtra) { + meta -= extra; + } + + meta = INBTTransformable.transformMetaDeco(meta, coordBaseMode); + + if(isOffset) { + meta += offset; + } else if(isExtra) { + meta += extra; + } + + return meta; + } + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/IBlockSideRotation.java b/src/main/java/com/hbm/blocks/IBlockSideRotation.java index d24282cce..a8769a139 100644 --- a/src/main/java/com/hbm/blocks/IBlockSideRotation.java +++ b/src/main/java/com/hbm/blocks/IBlockSideRotation.java @@ -11,4 +11,27 @@ public interface IBlockSideRotation { public static int getRenderType() { return renderID; } + + // 0 1 3 2 becomes 0 2 3 1 + // I want to smoke that swedish kush because it clearly makes you fucking stupid + public static int topToBottom(int topRotation) { + switch(topRotation) { + case 1: return 2; + case 2: return 1; + default: return topRotation; + } + } + + public static boolean isOpposite(int from, int to) { + switch(from) { + case 0: return to == 1; + case 1: return to == 0; + case 2: return to == 3; + case 3: return to == 2; + case 4: return to == 5; + case 5: return to == 4; + default: return false; + } + } + } diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 03e3c52de..9ae694c17 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -35,6 +35,7 @@ import net.minecraft.block.Block; import net.minecraft.block.BlockFalling; import net.minecraft.block.material.*; import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; @@ -603,6 +604,7 @@ public class ModBlocks { public static Block spikes; public static Block charger; + public static Block refueler; public static Block tesla; @@ -1227,6 +1229,11 @@ public class ModBlocks { public static Block pink_double_slab; public static Block pink_stairs; + // NBT Structure wand blocks + public static Block wand_air; + public static Block wand_loot; + public static Block wand_jigsaw; + public static Material materialGas = new MaterialGas(); private static void initializeBlock() { @@ -1835,7 +1842,7 @@ public class ModBlocks { pa_quadrupole = new BlockPAQuadrupole().setStepSound(Block.soundTypeMetal).setBlockName("pa_quadrupole").setHardness(5.0F).setResistance(10.0F); pa_dipole = new BlockPADipole().setStepSound(Block.soundTypeMetal).setBlockName("pa_dipole").setHardness(5.0F).setResistance(10.0F); pa_detector = new BlockPADetector().setStepSound(Block.soundTypeMetal).setBlockName("pa_detector").setHardness(5.0F).setResistance(10.0F); - + machine_electric_furnace_off = new MachineElectricFurnace(false).setBlockName("machine_electric_furnace_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); machine_electric_furnace_on = new MachineElectricFurnace(true).setBlockName("machine_electric_furnace_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); machine_arc_furnace_off = new MachineArcFurnace(false).setBlockName("machine_arc_furnace_off").setHardness(5.0F).setResistance(10.0F); @@ -2068,6 +2075,7 @@ public class ModBlocks { spikes = new Spikes(Material.iron).setBlockName("spikes").setHardness(2.5F).setResistance(5.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":spikes"); charger = new Charger(Material.iron).setBlockName("charger").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + refueler = new BlockRefueler(Material.iron).setBlockName("refueler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); tesla = new MachineTesla(Material.iron).setBlockName("tesla").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":tesla"); @@ -2169,7 +2177,7 @@ public class ModBlocks { mass_storage = new BlockMassStorage().setBlockName("mass_storage").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); boxcar = new DecoBlock(Material.iron).setBlockName("boxcar").setStepSound(Block.soundTypeMetal).setHardness(10.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":boxcar"); - boat = new DecoBlock(Material.iron).setBlockName("boat").setStepSound(Block.soundTypeMetal).setHardness(10.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":boat"); + boat = new DecoBlock(Material.iron).setBlockName("boat").setStepSound(Block.soundTypeMetal).setHardness(10.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":asphalt"); machine_well = new MachineOilWell().setBlockName("machine_well").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_well"); machine_pumpjack = new MachinePumpjack().setBlockName("machine_pumpjack").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_pumpjack"); @@ -2271,7 +2279,7 @@ public class ModBlocks { crystal_virus = new CrystalVirus(Material.iron).setBlockName("crystal_virus").setHardness(15.0F).setResistance(Float.POSITIVE_INFINITY).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":crystal_virus"); crystal_hardened = new BlockGeneric(Material.iron).setBlockName("crystal_hardened").setHardness(15.0F).setResistance(Float.POSITIVE_INFINITY).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":crystal_hardened"); crystal_pulsar = new CrystalPulsar(Material.iron).setBlockName("crystal_pulsar").setHardness(15.0F).setResistance(Float.POSITIVE_INFINITY).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":crystal_pulsar"); - taint = new BlockTaint(Material.iron).setBlockName("taint").setHardness(15.0F).setResistance(10.0F).setCreativeTab(null); + taint = new BlockTaint(Material.iron).setBlockName("taint").setHardness(15.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":taint"); vent_chlorine = new BlockVent(Material.iron).setBlockName("vent_chlorine").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":vent_chlorine"); vent_cloud = new BlockVent(Material.iron).setBlockName("vent_cloud").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":vent_cloud"); @@ -2352,6 +2360,10 @@ public class ModBlocks { pink_slab = new BlockPinkSlab(false, Material.wood).setBlockName("pink_slab").setStepSound(Block.soundTypeWood).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pink_planks"); pink_double_slab = new BlockPinkSlab(true, Material.wood).setBlockName("pink_double_slab").setStepSound(Block.soundTypeWood).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pink_planks"); pink_stairs = new BlockGenericStairs(pink_planks, 0).setBlockName("pink_stairs").setStepSound(Block.soundTypeWood).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pink_planks"); + + wand_air = new BlockWand(Blocks.air).setBlockName("wand_air").setBlockTextureName(RefStrings.MODID + ":wand_air"); + wand_loot = new BlockWandLoot().setBlockName("wand_loot").setBlockTextureName(RefStrings.MODID + ":wand_loot"); + wand_jigsaw = new BlockWandJigsaw().setBlockName("wand_jigsaw").setBlockTextureName(RefStrings.MODID + ":wand_jigsaw"); } private static void registerBlock() { @@ -2709,6 +2721,7 @@ public class ModBlocks { //Charger GameRegistry.registerBlock(charger, charger.getUnlocalizedName()); + GameRegistry.registerBlock(refueler, refueler.getUnlocalizedName()); //GameRegistry.registerBlock(floodlight, floodlight.getUnlocalizedName()); //Decoration Blocks @@ -3463,7 +3476,7 @@ public class ModBlocks { GameRegistry.registerBlock(crystal_virus, crystal_virus.getUnlocalizedName()); GameRegistry.registerBlock(crystal_hardened, crystal_hardened.getUnlocalizedName()); GameRegistry.registerBlock(crystal_pulsar, crystal_pulsar.getUnlocalizedName()); - GameRegistry.registerBlock(taint, ItemTaintBlock.class, taint.getUnlocalizedName()); + register(taint); GameRegistry.registerBlock(cheater_virus, cheater_virus.getUnlocalizedName()); GameRegistry.registerBlock(cheater_virus_seed, cheater_virus_seed.getUnlocalizedName()); GameRegistry.registerBlock(ntm_dirt, ntm_dirt.getUnlocalizedName()); @@ -3472,6 +3485,10 @@ public class ModBlocks { GameRegistry.registerBlock(pink_slab, pink_slab.getUnlocalizedName()); GameRegistry.registerBlock(pink_double_slab, pink_double_slab.getUnlocalizedName()); GameRegistry.registerBlock(pink_stairs, pink_stairs.getUnlocalizedName()); + + register(wand_air); + register(wand_loot); + register(wand_jigsaw); } private static void register(Block b) { diff --git a/src/main/java/com/hbm/blocks/bomb/BlockTaint.java b/src/main/java/com/hbm/blocks/bomb/BlockTaint.java index 3b92192de..079058a64 100644 --- a/src/main/java/com/hbm/blocks/bomb/BlockTaint.java +++ b/src/main/java/com/hbm/blocks/bomb/BlockTaint.java @@ -4,169 +4,71 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; -import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.ITooltipProvider; import com.hbm.entity.mob.EntityTaintCrab; import com.hbm.entity.mob.EntityCreeperTainted; import com.hbm.entity.mob.EntityTeslaCrab; import com.hbm.potion.HbmPotion; -import cpw.mods.fml.client.registry.RenderingRegistry; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; +import net.minecraft.block.BlockFalling; import net.minecraft.block.material.MapColor; import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityFallingBlock; import net.minecraft.entity.monster.EntityCreeper; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.potion.PotionEffect; import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.IIcon; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; -public class BlockTaint extends Block/*Container*/ { - - @SideOnly(Side.CLIENT) - private IIcon[] icons; +public class BlockTaint extends Block implements ITooltipProvider { - public BlockTaint(Material p_i45386_1_) { - super(p_i45386_1_); - this.setTickRandomly(true); + public BlockTaint(Material mat) { + super(mat); + this.setTickRandomly(true); } - /*@Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityTaint(); - }*/ - - @SideOnly(Side.CLIENT) - public IIcon getIcon(int p_149691_1_, int meta) - { - return this.icons[meta % this.icons.length]; - } - - public int damageDropped(int meta) - { - return 0; - } + @Override public MapColor getMapColor(int meta) { return MapColor.grayColor; } + @Override public Item getItemDropped(int i, Random rand, int j) { return null; } - public static int func_150032_b(int p_150032_0_) - { - return func_150031_c(p_150032_0_); - } - - public static int func_150031_c(int p_150031_0_) - { - return p_150031_0_ & 15; - } - - @SideOnly(Side.CLIENT) - public void getSubBlocks(Item p_149666_1_, CreativeTabs p_149666_2_, List p_149666_3_) - { - for (int i = 0; i < 16; ++i) - { - p_149666_3_.add(new ItemStack(p_149666_1_, 1, i)); - } - } - - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister p_149651_1_) - { - this.icons = new IIcon[16]; - - for (int i = 0; i < this.icons.length; ++i) - { - this.icons[i] = p_149651_1_.registerIcon("hbm:taint_" + i); - } - } - - public MapColor getMapColor(int p_149728_1_) - { - return MapColor.purpleColor; - } - - public static int renderID = RenderingRegistry.getNextAvailableRenderId(); - @Override - public int getRenderType(){ - return renderID; + public void updateTick(World world, int x, int y, int z, Random rand) { + + int meta = world.getBlockMetadata(x, y, z); + if(meta >= 15) return; + + for(int i = -3; i <= 3; i++) for(int j = -3; j <= 3; j++) for(int k = -3; k <= 3; k++) { + if(Math.abs(i) + Math.abs(j) + Math.abs(k) > 4) continue; + if(rand.nextFloat() > 0.25F) continue; + Block b = world.getBlock(x + i, y + j, z + k); + if(!b.isNormalCube() || b.isAir(world, x + i, y + j, z + k)) continue; + int targetMeta = meta + 1; + boolean hasAir = false; + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + if(world.getBlock(x + i + dir.offsetX, y + j + dir.offsetY, z + k + dir.offsetZ).isAir(world, x + i + dir.offsetX, y + j + dir.offsetY, z + k + dir.offsetZ)) { + hasAir = true; + break; + } + } + if(!hasAir) targetMeta = meta + 3; + if(targetMeta > 15) continue; + if(b == this && world.getBlockMetadata(x + i, y + j, z + k) >= targetMeta) continue; + world.setBlock(x + i, y + j, z + k, this, targetMeta, 3); + if(rand.nextFloat() < 0.25F && BlockFalling.func_149831_e(world, x + i, y + j - 1, z + k)) { + EntityFallingBlock falling = new EntityFallingBlock(world, x + i + 0.5, y + j + 0.5, z + k + 0.5, this, targetMeta); + world.spawnEntityInWorld(falling); + } + } } - @Override - public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) - { - return null; - } - @Override - public boolean isOpaqueCube() { - return false; - } - - @Override - public boolean renderAsNormalBlock() { - return false; - } - - public void onNeighborBlockChange(World world, int x, int y, int z, Block b) - { - if(!hasPosNeightbour(world, x, y, z) && !world.isRemote) - world.setBlockToAir(x, y, z); - } - - public void updateTick(World world, int x, int y, int z, Random rand) - { - int meta = world.getBlockMetadata(x, y, z); - if(!world.isRemote && meta < 15) { - - for(int i = 0; i < 15; i++) { - int a = rand.nextInt(11) + x - 5; - int b = rand.nextInt(11) + y - 5; - int c = rand.nextInt(11) + z - 5; - if(world.getBlock(a, b, c).isReplaceable(world, a, b, c) && hasPosNeightbour(world, a, b, c)) - world.setBlock(a, b, c, ModBlocks.taint, meta + 1, 2); - } - - for(int i = 0; i < 85; i++) { - int a = rand.nextInt(7) + x - 3; - int b = rand.nextInt(7) + y - 3; - int c = rand.nextInt(7) + z - 3; - if(world.getBlock(a, b, c).isReplaceable(world, a, b, c) && hasPosNeightbour(world, a, b, c)) - world.setBlock(a, b, c, ModBlocks.taint, meta + 1, 2); - } - } - } - - public static boolean hasPosNeightbour(World world, int x, int y, int z) { - Block b0 = world.getBlock(x + 1, y, z); - Block b1 = world.getBlock(x, y + 1, z); - Block b2 = world.getBlock(x, y, z + 1); - Block b3 = world.getBlock(x - 1, y, z); - Block b4 = world.getBlock(x, y - 1, z); - Block b5 = world.getBlock(x, y, z - 1); - boolean b = (b0.renderAsNormalBlock() && b0.getMaterial().isOpaque()) || - (b1.renderAsNormalBlock() && b1.getMaterial().isOpaque()) || - (b2.renderAsNormalBlock() && b2.getMaterial().isOpaque()) || - (b3.renderAsNormalBlock() && b3.getMaterial().isOpaque()) || - (b4.renderAsNormalBlock() && b4.getMaterial().isOpaque()) || - (b5.renderAsNormalBlock() && b5.getMaterial().isOpaque()); - return b; - } - - @Override - public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4) - { - return null; - } - - @Override - public AxisAlignedBB getSelectedBoundingBoxFromPool(World par1World, int par2, int par3, int par4) - { - return AxisAlignedBB.getBoundingBox(par2, par3, par4, par2, par3, par4); + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + return AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y + 0.75, z + 1); } @Override @@ -174,36 +76,43 @@ public class BlockTaint extends Block/*Container*/ { int meta = world.getBlockMetadata(x, y, z); int level = 15 - meta; - - List list = new ArrayList(); - PotionEffect effect = new PotionEffect(HbmPotion.taint.id, 15 * 20, level); - effect.setCurativeItems(list); - - if(entity instanceof EntityLivingBase) { - if(world.rand.nextInt(50) == 0) { - ((EntityLivingBase)entity).addPotionEffect(effect); - } - } - - if(entity != null && entity.getClass().equals(EntityCreeper.class)) { - EntityCreeperTainted creep = new EntityCreeperTainted(world); - creep.setLocationAndAngles(entity.posX, entity.posY, entity.posZ, entity.rotationYaw, entity.rotationPitch); - if(!world.isRemote) { - entity.setDead(); - world.spawnEntityInWorld(creep); - } - } - - if(entity instanceof EntityTeslaCrab) { - EntityTaintCrab crab = new EntityTaintCrab(world); - crab.setLocationAndAngles(entity.posX, entity.posY, entity.posZ, entity.rotationYaw, entity.rotationPitch); + entity.motionX *= 0.6; + entity.motionZ *= 0.6; - if(!world.isRemote) { - entity.setDead(); - world.spawnEntityInWorld(crab); - } - } + List list = new ArrayList(); + PotionEffect effect = new PotionEffect(HbmPotion.taint.id, 15 * 20, level); + effect.setCurativeItems(list); + + if(entity instanceof EntityLivingBase) { + if(world.rand.nextInt(50) == 0) { + ((EntityLivingBase) entity).addPotionEffect(effect); + } + } + + if(entity != null && entity.getClass().equals(EntityCreeper.class)) { + EntityCreeperTainted creep = new EntityCreeperTainted(world); + creep.setLocationAndAngles(entity.posX, entity.posY, entity.posZ, entity.rotationYaw, entity.rotationPitch); + + if(!world.isRemote) { + entity.setDead(); + world.spawnEntityInWorld(creep); + } + } + + if(entity instanceof EntityTeslaCrab) { + EntityTaintCrab crab = new EntityTaintCrab(world); + crab.setLocationAndAngles(entity.posX, entity.posY, entity.posZ, entity.rotationYaw, entity.rotationPitch); + + if(!world.isRemote) { + entity.setDead(); + world.spawnEntityInWorld(crab); + } + } } + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + list.add("DO NOT TOUCH, BREATHE OR STARE AT."); + } } diff --git a/src/main/java/com/hbm/blocks/bomb/Landmine.java b/src/main/java/com/hbm/blocks/bomb/Landmine.java index 03a505e55..ec75235b6 100644 --- a/src/main/java/com/hbm/blocks/bomb/Landmine.java +++ b/src/main/java/com/hbm/blocks/bomb/Landmine.java @@ -3,8 +3,8 @@ package com.hbm.blocks.bomb; import java.util.Random; import com.hbm.blocks.ModBlocks; +import com.hbm.config.ServerConfig; import com.hbm.explosion.ExplosionLarge; -import com.hbm.explosion.ExplosionNukeSmall; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; @@ -13,8 +13,13 @@ import com.hbm.explosion.vanillant.standard.ExplosionEffectWeapon; import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; import com.hbm.interfaces.IBomb; import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.factory.XFactoryCatapult; +import com.hbm.main.MainRegistry; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.bomb.TileEntityLandmine; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.BlockFence; @@ -23,6 +28,7 @@ import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.IBlockAccess; @@ -138,7 +144,7 @@ public class Landmine extends BlockContainer implements IBomb { if(this == ModBlocks.mine_ap) { ExplosionVNT vnt = new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 3F); - vnt.setEntityProcessor(new EntityProcessorCrossSmooth(0.5, 10F).setupPiercing(5F, 0.2F)); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(0.5, ServerConfig.MINE_AP_DAMAGE.get()).setupPiercing(5F, 0.2F)); vnt.setPlayerProcessor(new PlayerProcessorStandard()); vnt.setSFX(new ExplosionEffectWeapon(5, 1F, 0.5F)); vnt.explode(); @@ -146,13 +152,13 @@ public class Landmine extends BlockContainer implements IBomb { ExplosionVNT vnt = new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 4F); vnt.setBlockAllocator(new BlockAllocatorStandard()); vnt.setBlockProcessor(new BlockProcessorStandard()); - vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, 35).setupPiercing(15F, 0.2F)); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, ServerConfig.MINE_HE_DAMAGE.get()).setupPiercing(15F, 0.2F)); vnt.setPlayerProcessor(new PlayerProcessorStandard()); vnt.setSFX(new ExplosionEffectWeapon(15, 3.5F, 1.25F)); vnt.explode(); } else if(this == ModBlocks.mine_shrap) { ExplosionVNT vnt = new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 3F); - vnt.setEntityProcessor(new EntityProcessorCrossSmooth(0.5, 7.5F)); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(0.5, ServerConfig.MINE_SHRAP_DAMAGE.get())); vnt.setPlayerProcessor(new PlayerProcessorStandard()); vnt.setSFX(new ExplosionEffectWeapon(5, 1F, 0.5F)); vnt.explode(); @@ -160,7 +166,20 @@ public class Landmine extends BlockContainer implements IBomb { ExplosionLarge.spawnShrapnelShower(world, x + 0.5, y + 0.5, z + 0.5, 0, 1D, 0, 45, 0.2D); ExplosionLarge.spawnShrapnels(world, x + 0.5, y + 0.5, z + 0.5, 5); } else if(this == ModBlocks.mine_fat) { - ExplosionNukeSmall.explode(world, x + 0.5, y + 0.5, z + 0.5, ExplosionNukeSmall.PARAMS_MEDIUM); + + ExplosionVNT vnt = new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 10); + vnt.setBlockAllocator(new BlockAllocatorStandard(64)); + vnt.setBlockProcessor(new BlockProcessorStandard()); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(2, ServerConfig.MINE_NUKE_DAMAGE.get()).withRangeMod(1.5F)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.explode(); + + XFactoryCatapult.incrementRad(world, x, y, z, 1.5F); + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "muke"); + data.setBoolean("balefire", MainRegistry.polaroidID == 11 || world.rand.nextInt(100) == 0); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x + 0.5, y + 0.5, z + 0.5), new TargetPoint(world.provider.dimensionId, x + 0.5, y + 0.5, z + 0.5, 250)); + } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockBobble.java b/src/main/java/com/hbm/blocks/generic/BlockBobble.java index 5e5226e6f..da175541c 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockBobble.java +++ b/src/main/java/com/hbm/blocks/generic/BlockBobble.java @@ -4,6 +4,9 @@ import com.hbm.inventory.gui.GUIScreenBobble; import com.hbm.items.special.ItemPlasticScrap.ScrapType; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IGUIProvider; +import com.hbm.world.gen.INBTTileEntityTransformable; +import com.hbm.world.gen.INBTTransformable; + import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -31,7 +34,7 @@ import net.minecraft.world.World; import java.util.List; import java.util.Random; -public class BlockBobble extends BlockContainer implements IGUIProvider { +public class BlockBobble extends BlockContainer implements IGUIProvider, INBTTransformable { public BlockBobble() { super(Material.iron); @@ -136,12 +139,17 @@ public class BlockBobble extends BlockContainer implements IGUIProvider { return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); } + @Override + public int transformMeta(int meta, int coordBaseMode) { + return (meta + coordBaseMode * 4) % 16; + } + @Override public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityBobble(); } - public static class TileEntityBobble extends TileEntity { + public static class TileEntityBobble extends TileEntity implements INBTTileEntityTransformable { public BobbleType type = BobbleType.NONE; @@ -173,6 +181,11 @@ public class BlockBobble extends BlockContainer implements IGUIProvider { super.writeToNBT(nbt); nbt.setByte("type", (byte) type.ordinal()); } + + @Override + public void transformTE(World world, int coordBaseMode) { + type = BobbleType.values()[world.rand.nextInt(BobbleType.values().length - 1) + 1]; + } } public static enum BobbleType { @@ -200,7 +213,7 @@ public class BlockBobble extends BlockContainer implements IGUIProvider { CIRNO( "Cirno", "Cirno", "the only multi layered skin i had", "No brain. Head empty.", true, ScrapType.BOARD_BLANK), MICROWAVE( "Microwave", "Microwave", "OC Compatibility and massive RBMK/packet optimizations", "they call me the food heater$john optimization", true, ScrapType.BOARD_CONVERTER), PEEP( "Peep", "LePeeperSauvage", "Coilgun, Leadburster and Congo Lake models, BDCL QC", "Fluffy ears can't hide in ash, nor snow.", true, ScrapType.CARD_BOARD), - MELLOW( "MELLOWARPEGGIATION", "Mellow", "Industrial lighting, animation tools", "Make something cool now, ask for permission later.", true, ScrapType.CARD_PROCESSOR); + MELLOW( "MELLOWARPEGGIATION", "Mellow", "NBT Structures, industrial lighting, animation tools", "Make something cool now, ask for permission later.", true, ScrapType.CARD_PROCESSOR); public String name; //the title of the tooltip public String label; //the name engraved in the socket diff --git a/src/main/java/com/hbm/blocks/generic/BlockDecoCRT.java b/src/main/java/com/hbm/blocks/generic/BlockDecoCRT.java index 724912ed3..b1ede562a 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockDecoCRT.java +++ b/src/main/java/com/hbm/blocks/generic/BlockDecoCRT.java @@ -2,6 +2,7 @@ package com.hbm.blocks.generic; import com.hbm.blocks.BlockMulti; import com.hbm.lib.RefStrings; +import com.hbm.world.gen.INBTTransformable; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.relauncher.Side; @@ -14,7 +15,7 @@ import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; import net.minecraft.world.World; -public class BlockDecoCRT extends BlockMulti { +public class BlockDecoCRT extends BlockMulti implements INBTTransformable { protected String[] variants = new String[] {"crt_clean", "crt_broken", "crt_blinking", "crt_bsod"}; @SideOnly(Side.CLIENT) protected IIcon[] icons; @@ -24,17 +25,17 @@ public class BlockDecoCRT extends BlockMulti { } public static int renderID = RenderingRegistry.getNextAvailableRenderId(); - + @Override public int getRenderType(){ return renderID; } - + @Override public boolean isOpaqueCube() { return false; } - + @Override public boolean renderAsNormalBlock() { return false; @@ -45,12 +46,12 @@ public class BlockDecoCRT extends BlockMulti { public void registerBlockIcons(IIconRegister reg) { super.registerBlockIcons(reg); this.icons = new IIcon[variants.length]; - + for(int i = 0; i < variants.length; i++) { this.icons[i] = reg.registerIcon(RefStrings.MODID + ":" + variants[i]); } } - + @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { @@ -61,7 +62,7 @@ public class BlockDecoCRT extends BlockMulti { public int damageDropped(int meta) { return (Math.abs(meta) % 16) / 4; } - + @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; @@ -73,4 +74,10 @@ public class BlockDecoCRT extends BlockMulti { public int getSubCount() { return 4; } -} + + @Override + public int transformMeta(int meta, int coordBaseMode) { + return INBTTransformable.transformMetaDecoModel(meta, coordBaseMode); + } + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/generic/BlockDecoModel.java b/src/main/java/com/hbm/blocks/generic/BlockDecoModel.java index d70fd5fe4..f10edc069 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockDecoModel.java +++ b/src/main/java/com/hbm/blocks/generic/BlockDecoModel.java @@ -1,6 +1,7 @@ package com.hbm.blocks.generic; import com.hbm.blocks.BlockEnumMulti; +import com.hbm.world.gen.INBTTransformable; import cpw.mods.fml.client.registry.RenderingRegistry; import net.minecraft.block.material.Material; @@ -11,14 +12,14 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; -public class BlockDecoModel extends BlockEnumMulti { - +public class BlockDecoModel extends BlockEnumMulti implements INBTTransformable { + public BlockDecoModel(Material mat, Class theEnum, boolean multiName, boolean multiTexture) { super(mat, theEnum, multiName, multiTexture); } - + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); - + @Override public int getRenderType() { return renderID; @@ -33,18 +34,18 @@ public class BlockDecoModel extends BlockEnumMulti { public boolean renderAsNormalBlock() { return false; } - + //Did somebody say - pain? //Alright fuckers, looks like 2/b010 = North, 3/b011 = South, 4/b100 = West, 5/b101 = East for sides. //I'll just opt for something similar (0/b00 North, 1/b01 South, 2/b10 West, 3/b11 East) - + //Assumes meta is using the third and fourth bits. @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - + int meta; - + if((i & 1) != 1) meta = i >> 1; //For North(b00>b00) and South(b10>b01), shift bits right by one else { @@ -53,15 +54,15 @@ public class BlockDecoModel extends BlockEnumMulti { else meta = 3; //For East(b01>b11), just set to 3 } - + world.setBlockMetadataWithNotify(x, y, z, (meta << 2) | stack.getItemDamage(), 2); } - + @Override public int damageDropped(int meta) { return meta & 3; } - + //These are separate because they have to be constant private float mnX = 0.0F; //min private float mnY = 0.0F; @@ -69,7 +70,7 @@ public class BlockDecoModel extends BlockEnumMulti { private float mxX = 1.0F; //max private float mxY = 1.0F; private float mxZ = 1.0F; - + public BlockDecoModel setBlockBoundsTo(float minX, float minY, float minZ, float maxX, float maxY, float maxZ) { mnX = minX; mnY = minY; @@ -77,10 +78,10 @@ public class BlockDecoModel extends BlockEnumMulti { mxX = maxX; mxY = maxY; mxZ = maxZ; - + return this; } - + @Override public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { switch(world.getBlockMetadata(x, y, z) >> 2) { @@ -98,10 +99,39 @@ public class BlockDecoModel extends BlockEnumMulti { break; } } - + @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { this.setBlockBoundsBasedOnState(world, x, y, z); return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); } + + @Override + public int transformMeta(int meta, int coordBaseMode) { + //N: 0b00, S: 0b01, W: 0b10, E: 0b11 + int rot = meta >> 2; + int type = meta & 3; + + switch(coordBaseMode) { + default: //South + break; + case 1: //West + if((rot & 3) < 2) //N & S can just have bits toggled + rot = rot ^ 3; + else //W & E can just have first bit set to 0 + rot = rot ^ 2; + break; + case 2: //North + rot = rot ^ 1; //N, W, E & S can just have first bit toggled + break; + case 3: //East + if((rot & 3) < 2)//N & S can just have second bit set to 1 + rot = rot ^ 2; + else //W & E can just have bits toggled + rot = rot ^ 3; + break; + } + //genuinely like. why did i do that + return (rot << 2) | type; //To accommodate for BlockDecoModel's shift in the rotation bits; otherwise, simply bit-shift right and or any non-rotation meta after + } } \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/generic/BlockDecoToaster.java b/src/main/java/com/hbm/blocks/generic/BlockDecoToaster.java index a11061fa0..c35dd1d3b 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockDecoToaster.java +++ b/src/main/java/com/hbm/blocks/generic/BlockDecoToaster.java @@ -2,6 +2,7 @@ package com.hbm.blocks.generic; import com.hbm.blocks.BlockMulti; import com.hbm.lib.RefStrings; +import com.hbm.world.gen.INBTTransformable; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.relauncher.Side; @@ -16,7 +17,7 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; -public class BlockDecoToaster extends BlockMulti { +public class BlockDecoToaster extends BlockMulti implements INBTTransformable { protected String[] variants = new String[] {"toaster_iron", "toaster_steel", "toaster_wood"}; @SideOnly(Side.CLIENT) protected IIcon[] icons; @@ -26,17 +27,17 @@ public class BlockDecoToaster extends BlockMulti { } public static int renderID = RenderingRegistry.getNextAvailableRenderId(); - + @Override public int getRenderType(){ return renderID; } - + @Override public boolean isOpaqueCube() { return false; } - + @Override public boolean renderAsNormalBlock() { return false; @@ -47,12 +48,12 @@ public class BlockDecoToaster extends BlockMulti { public void registerBlockIcons(IIconRegister reg) { super.registerBlockIcons(reg); this.icons = new IIcon[variants.length]; - + for(int i = 0; i < variants.length; i++) { this.icons[i] = reg.registerIcon(RefStrings.MODID + ":" + variants[i]); } } - + @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { @@ -63,7 +64,7 @@ public class BlockDecoToaster extends BlockMulti { public int damageDropped(int meta) { return (Math.abs(meta) % 12) / 4; } - + @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; @@ -90,4 +91,10 @@ public class BlockDecoToaster extends BlockMulti { this.setBlockBoundsBasedOnState(world, x, y, z); return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); } -} + + @Override + public int transformMeta(int meta, int coordBaseMode) { + return INBTTransformable.transformMetaDecoModel(meta, coordBaseMode); + } + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/generic/BlockFissure.java b/src/main/java/com/hbm/blocks/generic/BlockFissure.java index dac40abf0..0f1dea15a 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockFissure.java +++ b/src/main/java/com/hbm/blocks/generic/BlockFissure.java @@ -2,21 +2,28 @@ package com.hbm.blocks.generic; import java.util.Random; +import api.hbm.fluid.IFluidStandardSender; import com.hbm.blocks.IBlockMultiPass; import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.lib.RefStrings; import com.hbm.render.block.RenderBlockMultipass; +import com.hbm.tileentity.TileEntityLoadedBase; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.init.Blocks; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; -public class BlockFissure extends Block implements IBlockMultiPass { +public class BlockFissure extends BlockContainer implements IBlockMultiPass { private IIcon overlay; @@ -65,4 +72,31 @@ public class BlockFissure extends Block implements IBlockMultiPass { public int getRenderType(){ return IBlockMultiPass.getRenderType(); } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityFissure(); + } + + public static class TileEntityFissure extends TileEntityLoadedBase implements IFluidStandardSender { + + public FluidTank lava = new FluidTank(Fluids.LAVA, 1_000); + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + lava.setFill(1_000); + this.sendFluid(lava, worldObj, xCoord, yCoord + 1, zCoord, ForgeDirection.UP); + } + } + + @Override + public boolean canConnect(FluidType type, ForgeDirection dir) { + return dir == ForgeDirection.DOWN && type == Fluids.LAVA; + } + + @Override public FluidTank[] getAllTanks() { return new FluidTank[] {lava}; } + @Override public FluidTank[] getSendingTanks() { return new FluidTank[] {lava}; } + } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockGenericStairs.java b/src/main/java/com/hbm/blocks/generic/BlockGenericStairs.java index 7bd3ee8f6..61df2ed89 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockGenericStairs.java +++ b/src/main/java/com/hbm/blocks/generic/BlockGenericStairs.java @@ -18,6 +18,6 @@ public class BlockGenericStairs extends BlockStairs { recipeGen.add(new Object[] {block, meta, this}); - this.setBlockTextureName(RefStrings.MODID + ":concrete_smooth"); + this.setBlockTextureName(RefStrings.MODID + ":concrete"); } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockMultiSlab.java b/src/main/java/com/hbm/blocks/generic/BlockMultiSlab.java index bcc38242d..8374ba803 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockMultiSlab.java +++ b/src/main/java/com/hbm/blocks/generic/BlockMultiSlab.java @@ -39,7 +39,7 @@ public class BlockMultiSlab extends BlockSlab implements IStepTickReceiver { } } - this.setBlockTextureName(RefStrings.MODID + ":concrete_smooth"); + this.setBlockTextureName(RefStrings.MODID + ":concrete"); } @Override diff --git a/src/main/java/com/hbm/blocks/generic/BlockPedestal.java b/src/main/java/com/hbm/blocks/generic/BlockPedestal.java index 080881687..5e1774c52 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockPedestal.java +++ b/src/main/java/com/hbm/blocks/generic/BlockPedestal.java @@ -1,8 +1,11 @@ package com.hbm.blocks.generic; +import java.util.List; + import com.hbm.inventory.recipes.PedestalRecipes; import com.hbm.inventory.recipes.PedestalRecipes.PedestalRecipe; import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; import com.hbm.particle.helper.ExplosionSmallCreator; import com.hbm.util.Compat; @@ -21,6 +24,7 @@ import net.minecraft.network.NetworkManager; import net.minecraft.network.Packet; import net.minecraft.network.play.server.S35PacketUpdateTileEntity; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -169,6 +173,9 @@ public class BlockPedestal extends BlockContainer { world.markBlockForUpdate(x, y, z); ExplosionSmallCreator.composeEffect(world, x + 0.5, y + 1.5, z + 0.5, 10, 2.5F, 1F); + List players = world.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(x + 0.5, y, z + 0.5, x + 0.5, y, z + 0.5).expand(50, 50, 50)); + for(EntityPlayer player : players) player.addStat(MainRegistry.statLegendary, 1); + return; } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockPipe.java b/src/main/java/com/hbm/blocks/generic/BlockPipe.java index a41d6cfdf..27eaf3b27 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockPipe.java +++ b/src/main/java/com/hbm/blocks/generic/BlockPipe.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.blocks.ITooltipProvider; import com.hbm.lib.RefStrings; +import com.hbm.world.gen.INBTTransformable; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.relauncher.Side; @@ -16,7 +17,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.world.World; -public class BlockPipe extends Block implements ITooltipProvider { +public class BlockPipe extends Block implements ITooltipProvider, INBTTransformable { @SideOnly(Side.CLIENT) private IIcon sideIcon; @@ -24,7 +25,7 @@ public class BlockPipe extends Block implements ITooltipProvider { public IIcon frameIcon; @SideOnly(Side.CLIENT) public IIcon meshIcon; - + private String sideString; public int rType = 0; //because registering either new renderer classes or making new block classes is a pain in the ass @@ -33,7 +34,7 @@ public class BlockPipe extends Block implements ITooltipProvider { this.sideString = tex; this.rType = rType; } - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { @@ -42,7 +43,7 @@ public class BlockPipe extends Block implements ITooltipProvider { this.frameIcon = iconRegister.registerIcon(RefStrings.MODID + ":pipe_frame"); this.meshIcon = iconRegister.registerIcon(RefStrings.MODID + ":pipe_mesh"); } - + @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int metadata) { @@ -92,4 +93,10 @@ public class BlockPipe extends Block implements ITooltipProvider { public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { list.add("Purely decorative"); } -} + + @Override + public int transformMeta(int meta, int coordBaseMode) { + return INBTTransformable.transformMetaPillar(meta, coordBaseMode); + } + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/generic/BlockWand.java b/src/main/java/com/hbm/blocks/generic/BlockWand.java new file mode 100644 index 000000000..c25c390eb --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockWand.java @@ -0,0 +1,51 @@ +package com.hbm.blocks.generic; + +import cpw.mods.fml.client.registry.RenderingRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +public class BlockWand extends Block { + + public final Block exportAs; + + public BlockWand(Block exportAs) { + super(Material.glass); + this.exportAs = exportAs; + setBlockBounds(1F/16F, 1F/16F, 1F/16F, 15F/16F, 15F/16F, 15F/16F); + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + return null; + } + + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + + @Override + public int getRenderType() { + return renderID; + } + + @SideOnly(Side.CLIENT) + public boolean shouldSideBeRendered(IBlockAccess world, int x, int y, int z, int side) { + Block block = world.getBlock(x, y, z); + + return block != this; + } + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/generic/BlockWandJigsaw.java b/src/main/java/com/hbm/blocks/generic/BlockWandJigsaw.java new file mode 100644 index 000000000..a8a44a55e --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockWandJigsaw.java @@ -0,0 +1,387 @@ +package com.hbm.blocks.generic; + +import java.util.ArrayList; +import java.util.List; + +import org.lwjgl.input.Keyboard; + +import com.hbm.blocks.IBlockSideRotation; +import com.hbm.blocks.ILookOverlay; +import com.hbm.blocks.ModBlocks; +import com.hbm.interfaces.IControlReceiver; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.TileEntityLoadedBase; +import com.hbm.util.BufferUtil; +import com.hbm.util.I18nUtil; +import com.hbm.world.gen.INBTTransformable; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.BlockPistonBase; +import net.minecraft.block.material.Material; +import net.minecraft.client.gui.GuiButton; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.gui.GuiTextField; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.inventory.Container; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +public class BlockWandJigsaw extends BlockContainer implements IBlockSideRotation, INBTTransformable, IGUIProvider, ILookOverlay { + + private IIcon iconTop; + private IIcon iconSide; + private IIcon iconBack; + + public BlockWandJigsaw() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityWandJigsaw(); + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { + int l = BlockPistonBase.determineOrientation(world, x, y, z, player); + world.setBlockMetadataWithNotify(x, y, z, l, 2); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":wand_jigsaw"); + this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":wand_jigsaw_top"); + this.iconSide = iconRegister.registerIcon(RefStrings.MODID + ":wand_jigsaw_side"); + this.iconBack = iconRegister.registerIcon(RefStrings.MODID + ":wand_jigsaw_back"); + } + + @Override + public IIcon getIcon(int side, int meta) { + if(side == meta) return blockIcon; + if(IBlockSideRotation.isOpposite(side, meta)) return iconBack; + if(side <= 1) return iconTop; + if(side > 3 && meta <= 1) return iconTop; + return iconSide; + } + + @Override + public int getRotationFromSide(IBlockAccess world, int x, int y, int z, int side) { + if(side == 0) return IBlockSideRotation.topToBottom(getRotationFromSide(world, x, y, z, 1)); + + int meta = world.getBlockMetadata(x, y, z); + if(side == meta || IBlockSideRotation.isOpposite(side, meta)) return 0; + + // downwards facing has no changes, upwards flips anything not handled already + if(meta == 0) return 0; + if(meta == 1) return 3; + + // top (and bottom) is rotated fairly normally + if(side == 1) { + switch(meta) { + case 2: return 3; + case 3: return 0; + case 4: return 1; + case 5: return 2; + } + } + + // you know what I aint explaining further, it's a fucking mess here + if(meta == 2) return side == 4 ? 2 : 1; + if(meta == 3) return side == 4 ? 1 : 2; + if(meta == 4) return side == 2 ? 1 : 2; + if(meta == 5) return side == 2 ? 2 : 1; + + return 0; + } + + @Override + public int getRenderType() { + return IBlockSideRotation.getRenderType(); + } + + @Override + public int transformMeta(int meta, int coordBaseMode) { + return INBTTransformable.transformMetaDeco(meta, coordBaseMode); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityWandJigsaw)) return false; + + TileEntityWandJigsaw jigsaw = (TileEntityWandJigsaw) te; + + if(!player.isSneaking()) { + Block block = getBlock(world, player.getHeldItem()); + if(block == ModBlocks.wand_air) block = Blocks.air; + + if(block != null && block != ModBlocks.wand_jigsaw && block != ModBlocks.wand_loot) { + jigsaw.replaceBlock = block; + jigsaw.replaceMeta = player.getHeldItem().getItemDamage(); + + return true; + } + + if(world.isRemote) FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); + + return true; + } + + return false; + } + + private Block getBlock(World world, ItemStack stack) { + if(stack == null) return null; + if(!(stack.getItem() instanceof ItemBlock)) return null; + + return ((ItemBlock) stack.getItem()).field_150939_a; + } + + @Override + @SideOnly(Side.CLIENT) + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GuiWandJigsaw((TileEntityWandJigsaw) world.getTileEntity(x, y, z)); + } + + @Override + public Container provideContainer(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) { + TileEntity te = world.getTileEntity(x, y, z); + if(!(te instanceof TileEntityWandJigsaw)) return; + TileEntityWandJigsaw jigsaw = (TileEntityWandJigsaw) te; + + List text = new ArrayList(); + + text.add(EnumChatFormatting.GRAY + "Target pool: " + EnumChatFormatting.RESET + jigsaw.pool); + text.add(EnumChatFormatting.GRAY + "Name: " + EnumChatFormatting.RESET + jigsaw.name); + text.add(EnumChatFormatting.GRAY + "Target name: " + EnumChatFormatting.RESET + jigsaw.target); + text.add(EnumChatFormatting.GRAY + "Turns into: " + EnumChatFormatting.RESET + GameRegistry.findUniqueIdentifierFor(jigsaw.replaceBlock).toString()); + text.add(EnumChatFormatting.GRAY + " with meta: " + EnumChatFormatting.RESET + jigsaw.replaceMeta); + text.add(EnumChatFormatting.GRAY + "Selection/Placement priority: " + EnumChatFormatting.RESET + jigsaw.selectionPriority + "/" + jigsaw.placementPriority); + text.add(EnumChatFormatting.GRAY + "Joint type: " + EnumChatFormatting.RESET + (jigsaw.isRollable ? "Rollable" : "Aligned")); + + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } + + + public static class TileEntityWandJigsaw extends TileEntityLoadedBase implements IControlReceiver { + + private int selectionPriority = 0; // higher priority = this jigsaw block is selected first for generation + private int placementPriority = 0; // higher priority = children of this jigsaw block are checked for jigsaw blocks of their own and selected first + private String pool = "default"; + private String name = "default"; + private String target = "default"; + private Block replaceBlock = Blocks.air; + private int replaceMeta = 0; + private boolean isRollable = true; // sets joint type, rollable joints can be placed in any orientation for vertical jigsaw connections + + @Override + public void updateEntity() { + if(!worldObj.isRemote) { + networkPackNT(15); + } + } + + @Override + public void serialize(ByteBuf buf) { + buf.writeInt(selectionPriority); + buf.writeInt(placementPriority); + BufferUtil.writeString(buf, pool); + BufferUtil.writeString(buf, name); + BufferUtil.writeString(buf, target); + buf.writeInt(Block.getIdFromBlock(replaceBlock)); + buf.writeInt(replaceMeta); + buf.writeBoolean(isRollable); + } + + @Override + public void deserialize(ByteBuf buf) { + selectionPriority = buf.readInt(); + placementPriority = buf.readInt(); + pool = BufferUtil.readString(buf); + name = BufferUtil.readString(buf); + target = BufferUtil.readString(buf); + replaceBlock = Block.getBlockById(buf.readInt()); + replaceMeta = buf.readInt(); + isRollable = buf.readBoolean(); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setInteger("direction", this.getBlockMetadata()); + + nbt.setInteger("selection", selectionPriority); + nbt.setInteger("placement", placementPriority); + nbt.setString("pool", pool); + nbt.setString("name", name); + nbt.setString("target", target); + nbt.setString("block", GameRegistry.findUniqueIdentifierFor(replaceBlock).toString()); + nbt.setInteger("meta", replaceMeta); + nbt.setBoolean("roll", isRollable); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + selectionPriority = nbt.getInteger("selection"); + placementPriority = nbt.getInteger("placement"); + pool = nbt.getString("pool"); + name = nbt.getString("name"); + target = nbt.getString("target"); + replaceBlock = Block.getBlockFromName(nbt.getString("block")); + replaceMeta = nbt.getInteger("meta"); + isRollable = nbt.getBoolean("roll"); + } + + @Override + public boolean hasPermission(EntityPlayer player) { + return true; + } + + @Override + public void receiveControl(NBTTagCompound nbt) { + readFromNBT(nbt); + markDirty(); + } + + } + + public static class GuiWandJigsaw extends GuiScreen { + + private final TileEntityWandJigsaw jigsaw; + + private GuiTextField textPool; + private GuiTextField textName; + private GuiTextField textTarget; + + private GuiTextField textSelectionPriority; + private GuiTextField textPlacementPriority; + + private GuiButton jointToggle; + + public GuiWandJigsaw(TileEntityWandJigsaw jigsaw) { + this.jigsaw = jigsaw; + } + + @Override + public void initGui() { + Keyboard.enableRepeatEvents(true); + + textPool = new GuiTextField(fontRendererObj, this.width / 2 - 150, 50, 300, 20); + textPool.setText(jigsaw.pool); + + textName = new GuiTextField(fontRendererObj, this.width / 2 - 150, 100, 140, 20); + textName.setText(jigsaw.name); + + textTarget = new GuiTextField(fontRendererObj, this.width / 2 + 10, 100, 140, 20); + textTarget.setText(jigsaw.target); + + textSelectionPriority = new GuiTextField(fontRendererObj, this.width / 2 - 150, 150, 90, 20); + textSelectionPriority.setText("" + jigsaw.selectionPriority); + + textPlacementPriority = new GuiTextField(fontRendererObj, this.width / 2 - 40, 150, 90, 20); + textPlacementPriority.setText("" + jigsaw.placementPriority); + + jointToggle = new GuiButton(0, this.width / 2 + 60, 150, 90, 20, jigsaw.isRollable ? "Rollable" : "Aligned"); + } + + @Override + public void drawScreen(int mouseX, int mouseY, float partialTicks) { + drawDefaultBackground(); + + drawString(fontRendererObj, "Target pool:", this.width / 2 - 150, 37, 0xA0A0A0); + textPool.drawTextBox(); + + drawString(fontRendererObj, "Name:", this.width / 2 - 150, 87, 0xA0A0A0); + textName.drawTextBox(); + + drawString(fontRendererObj, "Target name:", this.width / 2 + 10, 87, 0xA0A0A0); + textTarget.drawTextBox(); + + drawString(fontRendererObj, "Selection priority:", this.width / 2 - 150, 137, 0xA0A0A0); + textSelectionPriority.drawTextBox(); + + drawString(fontRendererObj, "Placement priority:", this.width / 2 - 40, 137, 0xA0A0A0); + textPlacementPriority.drawTextBox(); + + drawString(fontRendererObj, "Joint type:", this.width / 2 + 60, 137, 0xA0A0A0); + jointToggle.drawButton(mc, mouseX, mouseY); + + super.drawScreen(mouseX, mouseY, partialTicks); + } + + @Override + public void onGuiClosed() { + Keyboard.enableRepeatEvents(false); + + NBTTagCompound data = new NBTTagCompound(); + jigsaw.writeToNBT(data); + + data.setString("pool", textPool.getText()); + data.setString("name", textName.getText()); + data.setString("target", textTarget.getText()); + + try { data.setInteger("selection", Integer.parseInt(textSelectionPriority.getText())); } catch(Exception ex) {} + try { data.setInteger("placement", Integer.parseInt(textPlacementPriority.getText())); } catch(Exception ex) {} + + data.setBoolean("roll", jointToggle.displayString == "Rollable"); + + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, jigsaw.xCoord, jigsaw.yCoord, jigsaw.zCoord)); + } + + @Override + protected void keyTyped(char typedChar, int keyCode) { + super.keyTyped(typedChar, keyCode); + textPool.textboxKeyTyped(typedChar, keyCode); + textName.textboxKeyTyped(typedChar, keyCode); + textTarget.textboxKeyTyped(typedChar, keyCode); + textSelectionPriority.textboxKeyTyped(typedChar, keyCode); + textPlacementPriority.textboxKeyTyped(typedChar, keyCode); + } + + @Override + protected void mouseClicked(int mouseX, int mouseY, int mouseButton) { + super.mouseClicked(mouseX, mouseY, mouseButton); + textPool.mouseClicked(mouseX, mouseY, mouseButton); + textName.mouseClicked(mouseX, mouseY, mouseButton); + textTarget.mouseClicked(mouseX, mouseY, mouseButton); + textSelectionPriority.mouseClicked(mouseX, mouseY, mouseButton); + textPlacementPriority.mouseClicked(mouseX, mouseY, mouseButton); + + if(jointToggle.mousePressed(mc, mouseX, mouseY)) { + System.out.println("displayString: " + jointToggle.displayString); + jointToggle.displayString = jointToggle.displayString == "Rollable" ? "Aligned" : "Rollable"; + } + } + + } + +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockWandLoot.java b/src/main/java/com/hbm/blocks/generic/BlockWandLoot.java new file mode 100644 index 000000000..80b1f3b92 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockWandLoot.java @@ -0,0 +1,338 @@ +package com.hbm.blocks.generic; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; + +import com.hbm.blocks.IBlockSideRotation; +import com.hbm.blocks.ILookOverlay; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.blocks.ModBlocks; +import com.hbm.config.StructureConfig; +import com.hbm.itempool.ItemPool; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.TileEntityLoadedBase; +import com.hbm.util.BufferUtil; +import com.hbm.util.I18nUtil; +import com.hbm.util.LootGenerator; +import com.hbm.world.gen.INBTTileEntityTransformable; +import com.mojang.authlib.GameProfile; + +import api.hbm.block.IToolable; +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.ITileEntityProvider; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IIcon; +import net.minecraft.util.MathHelper; +import net.minecraft.util.WeightedRandomChestContent; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraft.world.WorldServer; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; +import net.minecraftforge.common.util.FakePlayer; +import net.minecraftforge.common.util.FakePlayerFactory; + +public class BlockWandLoot extends BlockContainer implements ILookOverlay, IToolable, ITooltipProvider, IBlockSideRotation { + + @SideOnly(Side.CLIENT) protected IIcon iconTop; + + public BlockWandLoot() { + super(Material.iron); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":wand_loot"); + this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":wand_loot_top"); + } + + @Override + public IIcon getIcon(int side, int meta) { + return (side <= 1) ? iconTop : blockIcon; + } + + @Override + public int getRotationFromSide(IBlockAccess world, int x, int y, int z, int side) { + if(side == 0) return IBlockSideRotation.topToBottom(world.getBlockMetadata(x, y, z)); + if(side == 1) return world.getBlockMetadata(x, y, z); + return 0; + } + + @Override + public int getRenderType() { + return IBlockSideRotation.getRenderType(); + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { + int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; + + if(i == 0) world.setBlockMetadataWithNotify(x, y, z, 3, 2); + if(i == 1) world.setBlockMetadataWithNotify(x, y, z, 2, 2); + if(i == 2) world.setBlockMetadataWithNotify(x, y, z, 0, 2); + if(i == 3) world.setBlockMetadataWithNotify(x, y, z, 1, 2); + + TileEntity te = world.getTileEntity(x, y, z); + if(!(te instanceof TileEntityWandLoot)) return; + ((TileEntityWandLoot) te).placedRotation = player.rotationYaw; + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityWandLoot)) return; + + TileEntityWandLoot loot = (TileEntityWandLoot) te; + + List text = new ArrayList(); + text.add("Will replace with: " + loot.replaceBlock.getUnlocalizedName()); + text.add(" meta: " + loot.replaceMeta); + text.add("Loot pool: " + loot.poolName); + if(loot.replaceBlock != ModBlocks.deco_loot) { + text.add("Minimum items: " + loot.minItems); + text.add("Maximum items: " + loot.maxItems); + } + + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + list.add("Define loot crates/piles in .nbt structures"); + list.add(EnumChatFormatting.GOLD + "Use screwdriver to increase/decrease minimum loot"); + list.add(EnumChatFormatting.GOLD + "Use hand drill to increase/decrease maximum loot"); + list.add(EnumChatFormatting.GOLD + "Use defuser to cycle loot types"); + list.add(EnumChatFormatting.GOLD + "Use container block to set the block that spawns with loot inside"); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityWandLoot)) return false; + + TileEntityWandLoot loot = (TileEntityWandLoot) te; + + if(!player.isSneaking()) { + + Block block = getLootableBlock(world, player.getHeldItem()); + + if(block != null) { + loot.replaceBlock = block; + loot.replaceMeta = player.getHeldItem().getItemDamage(); + + List poolNames = loot.getPoolNames(block == ModBlocks.deco_loot); + if(!poolNames.contains(loot.poolName)) { + loot.poolName = poolNames.get(0); + } + + return true; + } + } + + return false; + } + + private Block getLootableBlock(World world, ItemStack stack) { + if(stack == null) return null; + + if(stack.getItem() instanceof ItemBlock) { + Block block = ((ItemBlock) stack.getItem()).field_150939_a; + + if(block == ModBlocks.deco_loot) return block; + + if(block instanceof ITileEntityProvider) { + TileEntity te = ((ITileEntityProvider) block).createNewTileEntity(world, 12); + if(te instanceof IInventory) return block; + } + } + + return null; + } + + @Override + public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityWandLoot)) return false; + + TileEntityWandLoot loot = (TileEntityWandLoot) te; + + switch(tool) { + case SCREWDRIVER: + if(player.isSneaking()) { + loot.minItems--; + if(loot.minItems < 0) loot.minItems = 0; + } else { + loot.minItems++; + loot.maxItems = Math.max(loot.minItems, loot.maxItems); + } + + return true; + + case HAND_DRILL: + if(player.isSneaking()) { + loot.maxItems--; + if(loot.maxItems < 0) loot.maxItems = 0; + loot.minItems = Math.min(loot.minItems, loot.maxItems); + } else { + loot.maxItems++; + } + + return true; + + case DEFUSER: + List poolNames = loot.getPoolNames(loot.replaceBlock == ModBlocks.deco_loot); + int index = poolNames.indexOf(loot.poolName); + + index += player.isSneaking() ? -1 : 1; + index = MathHelper.clamp_int(index, 0, poolNames.size() - 1); + + loot.poolName = poolNames.get(index); + + return true; + + default: return false; + } + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityWandLoot(); + } + + public static class TileEntityWandLoot extends TileEntityLoadedBase implements INBTTileEntityTransformable { + + private boolean triggerReplace; + + private Block replaceBlock = ModBlocks.deco_loot; + private int replaceMeta; + + private String poolName = LootGenerator.LOOT_BOOKLET; + private int minItems; + private int maxItems = 1; + + private float placedRotation; + + private static final GameProfile FAKE_PROFILE = new GameProfile(UUID.fromString("839eb18c-50bc-400c-8291-9383f09763e7"), "[NTM]"); + private static FakePlayer fakePlayer; + + @Override + public void updateEntity() { + if(!worldObj.isRemote) { + if(triggerReplace) { + // On the first tick of this TE, replace with intended block and fill with loot + replace(); + } else { + networkPackNT(15); + } + } + } + + private void replace() { + WeightedRandomChestContent[] pool = ItemPool.getPool(poolName); + + worldObj.setBlock(xCoord, yCoord, zCoord, replaceBlock, replaceMeta, 2); + + TileEntity te = worldObj.getTileEntity(xCoord, yCoord, zCoord); + + if(te instanceof IInventory) { + int count = minItems; + if(maxItems - minItems > 0) count += worldObj.rand.nextInt(maxItems - minItems); + WeightedRandomChestContent.generateChestContents(worldObj.rand, pool, (IInventory) te, count); + } else if(te instanceof BlockLoot.TileEntityLoot) { + LootGenerator.applyLoot(worldObj, xCoord, yCoord, zCoord, poolName); + } + + // Shouldn't happen but let's guard anyway, if it fails we just don't rotate the chest block correctly + if(!(worldObj instanceof WorldServer)) return; + + if(fakePlayer == null || fakePlayer.worldObj != worldObj) { + fakePlayer = FakePlayerFactory.get((WorldServer)worldObj, FAKE_PROFILE); + } + + fakePlayer.rotationYaw = fakePlayer.rotationYawHead = placedRotation; + + ItemStack fakeStack = new ItemStack(replaceBlock, 1, replaceMeta); + + replaceBlock.onBlockPlacedBy(worldObj, xCoord, yCoord, zCoord, fakePlayer, fakeStack); + } + + private List getPoolNames(boolean loot) { + if(loot) return Arrays.asList(LootGenerator.getLootNames()); + + List names = new ArrayList<>(); + names.addAll(ItemPool.pools.keySet()); + return names; + } + + @Override + public void transformTE(World world, int coordBaseMode) { + triggerReplace = !StructureConfig.debugStructures; + placedRotation = MathHelper.wrapAngleTo180_float(placedRotation + coordBaseMode * 90); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + Block writeBlock = replaceBlock == null ? ModBlocks.deco_loot : replaceBlock; + nbt.setString("block", GameRegistry.findUniqueIdentifierFor(writeBlock).toString()); + nbt.setInteger("meta", replaceMeta); + nbt.setInteger("min", minItems); + nbt.setInteger("max", maxItems); + nbt.setString("pool", poolName); + nbt.setFloat("rot", placedRotation); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + replaceBlock = Block.getBlockFromName(nbt.getString("block")); + replaceMeta = nbt.getInteger("meta"); + minItems = nbt.getInteger("min"); + maxItems = nbt.getInteger("max"); + poolName = nbt.getString("pool"); + placedRotation = nbt.getFloat("rot"); + + if(replaceBlock == null) replaceBlock = ModBlocks.deco_loot; + } + + @Override + public void serialize(ByteBuf buf) { + buf.writeInt(Block.getIdFromBlock(replaceBlock)); + buf.writeInt(replaceMeta); + buf.writeInt(minItems); + buf.writeInt(maxItems); + BufferUtil.writeString(buf, poolName); + } + + @Override + public void deserialize(ByteBuf buf) { + replaceBlock = Block.getBlockById(buf.readInt()); + replaceMeta = buf.readInt(); + minItems = buf.readInt(); + maxItems = buf.readInt(); + poolName = BufferUtil.readString(buf); + } + + } + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/generic/DecoBlock.java b/src/main/java/com/hbm/blocks/generic/DecoBlock.java index 9037b4f6a..bf25850eb 100644 --- a/src/main/java/com/hbm/blocks/generic/DecoBlock.java +++ b/src/main/java/com/hbm/blocks/generic/DecoBlock.java @@ -6,6 +6,7 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.tileentity.deco.TileEntityDecoBlock; +import com.hbm.world.gen.INBTTransformable; import api.hbm.block.IToolable; import cpw.mods.fml.client.registry.RenderingRegistry; @@ -24,8 +25,8 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; -public class DecoBlock extends BlockContainer implements IToolable { - +public class DecoBlock extends BlockContainer implements IToolable, INBTTransformable { + Random rand = new Random(); public DecoBlock(Material p_i45386_1_) { @@ -36,7 +37,7 @@ public class DecoBlock extends BlockContainer implements IToolable { 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(this != ModBlocks.steel_wall && this != ModBlocks.steel_corner) return false; - + int meta = world.getBlockMetadata(x, y, z); if(!player.isSneaking()) { @@ -50,7 +51,7 @@ public class DecoBlock extends BlockContainer implements IToolable { else if(meta == 2) world.setBlockMetadataWithNotify(x, y, z, 4, 3); else if(meta == 5) world.setBlockMetadataWithNotify(x, y, z, 2, 3); } - + return true; } @@ -65,7 +66,7 @@ public class DecoBlock extends BlockContainer implements IToolable { public static int renderIDBeam = RenderingRegistry.getNextAvailableRenderId(); public static int renderIDWall = RenderingRegistry.getNextAvailableRenderId(); public static int renderIDCorner = RenderingRegistry.getNextAvailableRenderId(); - + @Override public int getRenderType(){ if(this == ModBlocks.steel_wall) return renderIDWall; @@ -73,32 +74,32 @@ public class DecoBlock extends BlockContainer implements IToolable { if(this == ModBlocks.steel_beam) return renderIDBeam; return -1; } - + @Override public boolean isOpaqueCube() { return false; } - + @Override public boolean renderAsNormalBlock() { return false; } - + @Override public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { return Item.getItemFromBlock(this); } - + @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - + if(i == 0) world.setBlockMetadataWithNotify(x, y, z, 3, 2); if(i == 1) world.setBlockMetadataWithNotify(x, y, z, 4, 2); if(i == 2) world.setBlockMetadataWithNotify(x, y, z, 2, 2); if(i == 3) world.setBlockMetadataWithNotify(x, y, z, 5, 2); } - + @Override public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { int te = world.getBlockMetadata(x, y, z); @@ -141,14 +142,14 @@ public class DecoBlock extends BlockContainer implements IToolable { this.setBlockBoundsBasedOnState(world, x, y, z); return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); } - + @Override public void addCollisionBoxesToList(World world, int x, int y, int z, AxisAlignedBB aabb, List list, Entity collider) { - + if(this == ModBlocks.steel_corner) { int meta = world.getBlockMetadata(x, y, z); List bbs = new ArrayList(); - + switch(meta) { case 2: bbs.add(AxisAlignedBB.getBoundingBox(x + 0.25D, y + 0D, z + 0.875D, x + 1D, y + 1D, z + 1D)); @@ -171,7 +172,7 @@ public class DecoBlock extends BlockContainer implements IToolable { bbs.add(AxisAlignedBB.getBoundingBox(x + 0.25D, y + 0D, z + 0D, x + 1D, y + 1D, z + 0.125D)); break; } - + for(AxisAlignedBB bb : bbs) { if(aabb.intersectsWith(bb)) { list.add(bb); @@ -181,4 +182,9 @@ public class DecoBlock extends BlockContainer implements IToolable { super.addCollisionBoxesToList(world, x, y, z, aabb, list, collider); } } -} + + @Override + public int transformMeta(int meta, int coordBaseMode) { + return INBTTransformable.transformMetaDeco(meta, coordBaseMode); + } +} \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/generic/DecoPoleSatelliteReceiver.java b/src/main/java/com/hbm/blocks/generic/DecoPoleSatelliteReceiver.java index 481236f78..109cabbc5 100644 --- a/src/main/java/com/hbm/blocks/generic/DecoPoleSatelliteReceiver.java +++ b/src/main/java/com/hbm/blocks/generic/DecoPoleSatelliteReceiver.java @@ -1,6 +1,7 @@ package com.hbm.blocks.generic; import com.hbm.tileentity.deco.TileEntityDecoPoleSatelliteReceiver; +import com.hbm.world.gen.INBTTransformable; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; @@ -10,7 +11,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MathHelper; import net.minecraft.world.World; -public class DecoPoleSatelliteReceiver extends BlockContainer { +public class DecoPoleSatelliteReceiver extends BlockContainer implements INBTTransformable { public DecoPoleSatelliteReceiver(Material p_i45386_1_) { super(p_i45386_1_); @@ -20,26 +21,26 @@ public class DecoPoleSatelliteReceiver extends BlockContainer { public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { return new TileEntityDecoPoleSatelliteReceiver(); } - + @Override public int getRenderType(){ return -1; } - + @Override public boolean isOpaqueCube() { return false; } - + @Override public boolean renderAsNormalBlock() { return false; } - + @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - + if(i == 0) { world.setBlockMetadataWithNotify(x, y, z, 2, 2); @@ -58,4 +59,9 @@ public class DecoPoleSatelliteReceiver extends BlockContainer { } } -} + @Override + public int transformMeta(int meta, int coordBaseMode) { + return INBTTransformable.transformMetaDeco(meta, coordBaseMode); + } + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/generic/DecoTapeRecorder.java b/src/main/java/com/hbm/blocks/generic/DecoTapeRecorder.java index 6d94427e2..e7143aae6 100644 --- a/src/main/java/com/hbm/blocks/generic/DecoTapeRecorder.java +++ b/src/main/java/com/hbm/blocks/generic/DecoTapeRecorder.java @@ -1,5 +1,7 @@ package com.hbm.blocks.generic; +import com.hbm.world.gen.INBTTransformable; + import cpw.mods.fml.client.registry.RenderingRegistry; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; @@ -9,7 +11,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MathHelper; import net.minecraft.world.World; -public class DecoTapeRecorder extends BlockContainer { +public class DecoTapeRecorder extends BlockContainer implements INBTTransformable { public DecoTapeRecorder(Material p_i45386_1_) { super(p_i45386_1_); @@ -19,28 +21,28 @@ public class DecoTapeRecorder extends BlockContainer { public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { return null; } - + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); - + @Override public int getRenderType(){ return renderID; } - + @Override public boolean isOpaqueCube() { return false; } - + @Override public boolean renderAsNormalBlock() { return false; } - + @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - + if(i == 0) { world.setBlockMetadataWithNotify(x, y, z, 2, 2); @@ -59,4 +61,9 @@ public class DecoTapeRecorder extends BlockContainer { } } -} + @Override + public int transformMeta(int meta, int coordBaseMode) { + return INBTTransformable.transformMetaDeco(meta, coordBaseMode); + } + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/generic/RedBarrel.java b/src/main/java/com/hbm/blocks/generic/RedBarrel.java index 857cb7b55..753e47b09 100644 --- a/src/main/java/com/hbm/blocks/generic/RedBarrel.java +++ b/src/main/java/com/hbm/blocks/generic/RedBarrel.java @@ -4,11 +4,11 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.bomb.BlockDetonatable; -import com.hbm.blocks.bomb.BlockTaint; import com.hbm.blocks.machine.BlockFluidBarrel; import com.hbm.entity.item.EntityTNTPrimedBase; import com.hbm.explosion.ExplosionThermo; +import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; @@ -68,7 +68,8 @@ public class RedBarrel extends BlockDetonatable { int a = rand.nextInt(9) - 4 + ix; int b = rand.nextInt(9) - 4 + iy; int c = rand.nextInt(9) - 4 + iz; - if(world.getBlock(a, b, c).isReplaceable(world, a, b, c) && BlockTaint.hasPosNeightbour(world, a, b, c)) { + Block block = world.getBlock(a, b, c); + if(block.isNormalCube() && !block.isAir(world, a, b, c)) { world.setBlock(a, b, c, ModBlocks.taint, rand.nextInt(3) + 4, 2); } } diff --git a/src/main/java/com/hbm/blocks/machine/BlockRefueler.java b/src/main/java/com/hbm/blocks/machine/BlockRefueler.java new file mode 100644 index 000000000..543e8963d --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/BlockRefueler.java @@ -0,0 +1,101 @@ +package com.hbm.blocks.machine; + +import com.hbm.inventory.fluid.FluidType; +import com.hbm.items.machine.IItemFluidIdentifier; +import com.hbm.tileentity.machine.TileEntityRefueler; + +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ChatStyle; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.MathHelper; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +public class BlockRefueler extends BlockContainer { + + public BlockRefueler(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityRefueler(); + } + + @Override + public int getRenderType() { + return -1; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + if(!world.isRemote && !player.isSneaking()) { + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IItemFluidIdentifier) { + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityRefueler)) + return false; + + TileEntityRefueler refueler = (TileEntityRefueler) te; + FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, x, y, z, player.getHeldItem()); + refueler.tank.setTankType(type); + refueler.markDirty(); + player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!"))); + + return true; + } + + return false; + } else { + return true; + } + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { + int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; + + if(i == 0) world.setBlockMetadataWithNotify(x, y, z, 2, 2); + if(i == 1) world.setBlockMetadataWithNotify(x, y, z, 5, 2); + if(i == 2) world.setBlockMetadataWithNotify(x, y, z, 3, 2); + if(i == 3) world.setBlockMetadataWithNotify(x, y, z, 4, 2); + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { + float f = 0.0625F; + + switch(world.getBlockMetadata(x, y, z)) { + case 2: this.setBlockBounds(0F, 0F, 12 * f, 1F, 1F, 1F); break; + case 3: this.setBlockBounds(0F, 0F, 0F, 1F, 1F, 4 * f); break; + case 4: this.setBlockBounds(12 * f, 0F, 0F, 1F, 1F, 1F); break; + case 5: this.setBlockBounds(0F, 0F, 0F, 4 * f, 1F, 1F); break; + default: this.setBlockBounds(0F, 0F, 0F, 1F, 1F, 1F); break; + } + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + this.setBlockBoundsBasedOnState(world, x, y, z); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + +} diff --git a/src/main/java/com/hbm/blocks/machine/Spotlight.java b/src/main/java/com/hbm/blocks/machine/Spotlight.java index c40a9ef9c..f5a89d404 100644 --- a/src/main/java/com/hbm/blocks/machine/Spotlight.java +++ b/src/main/java/com/hbm/blocks/machine/Spotlight.java @@ -7,6 +7,7 @@ import java.util.Random; import com.hbm.blocks.BlockEnums.LightType; import com.hbm.blocks.ISpotlight; import com.hbm.main.ResourceManager; +import com.hbm.world.gen.INBTTransformable; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.relauncher.Side; @@ -14,6 +15,7 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.BlockSlab; import net.minecraft.block.material.Material; +import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.AxisAlignedBB; @@ -22,7 +24,7 @@ import net.minecraft.world.World; import net.minecraftforge.client.model.obj.WavefrontObject; import net.minecraftforge.common.util.ForgeDirection; -public class Spotlight extends Block implements ISpotlight { +public class Spotlight extends Block implements ISpotlight, INBTTransformable { // I'd be extending the ReinforcedLamp class if it wasn't for the inverted behaviour of these specific lights // I want these blocks to be eminently useful, so removing the need for redstone by default is desired, @@ -38,7 +40,7 @@ public class Spotlight extends Block implements ISpotlight { this.beamLength = beamLength; this.type = type; this.isOn = isOn; - + this.setHardness(1F); if(isOn) setLightLevel(1.0F); @@ -123,6 +125,8 @@ public class Spotlight extends Block implements ISpotlight { } private boolean updatePower(World world, int x, int y, int z) { + if(isBroken(world.getBlockMetadata(x, y, z))) return false; + boolean isPowered = world.isBlockIndirectlyGettingPowered(x, y, z); if(isOn && isPowered) { world.scheduleBlockUpdate(x, y, z, this, 4); @@ -148,7 +152,7 @@ public class Spotlight extends Block implements ISpotlight { @Override public void updateTick(World world, int x, int y, int z, Random p_149674_5_) { if (world.isRemote) return; - + if (isOn && world.isBlockIndirectlyGettingPowered(x, y, z)) { world.setBlock(x, y, z, getOff(), world.getBlockMetadata(x, y, z), 2); } @@ -159,6 +163,7 @@ public class Spotlight extends Block implements ISpotlight { public void onNeighborBlockChange(World world, int x, int y, int z, Block neighborBlock) { if(world.isRemote) return; if(neighborBlock instanceof SpotlightBeam) return; + if(neighborBlock == Blocks.air) return; ForgeDirection dir = getDirection(world, x, y, z); @@ -172,13 +177,13 @@ public class Spotlight extends Block implements ISpotlight { updateBeam(world, x, y, z); } - + @Override public boolean canPlaceBlockOnSide(World world, int x, int y, int z, int side) { if(!super.canPlaceBlockOnSide(world, x, y, z, side)) return false; - + ForgeDirection dir = ForgeDirection.getOrientation(side); - + return canPlace(world, x, y, z, dir); } @@ -215,6 +220,10 @@ public class Spotlight extends Block implements ISpotlight { return ForgeDirection.getOrientation(metadata >> 1); } + public boolean isBroken(int metadata) { + return (metadata & 1) == 1; + } + @Override public Item getItemDropped(int i, Random r, int j) { return Item.getItemFromBlock(getOn()); @@ -292,20 +301,20 @@ public class Spotlight extends Block implements ISpotlight { backPropagate(world, x, y, z, dir); } - + protected Block getOff() { if(this == ModBlocks.spotlight_incandescent) return ModBlocks.spotlight_incandescent_off; if(this == ModBlocks.spotlight_fluoro) return ModBlocks.spotlight_fluoro_off; if(this == ModBlocks.spotlight_halogen) return ModBlocks.spotlight_halogen_off; - + return this; } - + protected Block getOn() { if(this == ModBlocks.spotlight_incandescent_off) return ModBlocks.spotlight_incandescent; if(this == ModBlocks.spotlight_fluoro_off) return ModBlocks.spotlight_fluoro; if(this == ModBlocks.spotlight_halogen_off) return ModBlocks.spotlight_halogen; - + return this; } @@ -313,4 +322,19 @@ public class Spotlight extends Block implements ISpotlight { public int getBeamLength() { return this.beamLength; } -} + + @Override + public int transformMeta(int meta, int coordBaseMode) { + // +1 to set as broken, won't turn on until broken and replaced + return (INBTTransformable.transformMetaDeco(meta >> 1, coordBaseMode) << 1) + 1; + } + + @Override + public Block transformBlock(Block block) { + if(block == ModBlocks.spotlight_incandescent) return ModBlocks.spotlight_incandescent_off; + if(block == ModBlocks.spotlight_fluoro) return ModBlocks.spotlight_fluoro_off; + if(block == ModBlocks.spotlight_halogen) return ModBlocks.spotlight_halogen_off; + return block; + } + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKBase.java b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKBase.java index 234a2a4b9..6dba321ce 100644 --- a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKBase.java +++ b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKBase.java @@ -58,31 +58,31 @@ public abstract class RBMKBase extends BlockDummyable implements IToolable, ILoo public int getOffset() { return 0; } - + public boolean openInv(World world, int x, int y, int z, EntityPlayer player) { - + if(world.isRemote) { return true; } - + int[] pos = this.findCore(world, x, y, z); - + if(pos == null) return false; - + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); - + if(!(te instanceof TileEntityRBMKBase)) return false; - + TileEntityRBMKBase rbmk = (TileEntityRBMKBase) te; - + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemRBMKLid) { - + if(!rbmk.hasLid()) return false; } - + if(!player.isSneaking()) { FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]); return true; @@ -93,27 +93,27 @@ public abstract class RBMKBase extends BlockDummyable implements IToolable, ILoo @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { - + float height = 0.0F; - + int[] pos = this.findCore(world, x, y, z); - + if(pos != null) { TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); - + if(te instanceof TileEntityRBMKBase) { - + TileEntityRBMKBase rbmk = (TileEntityRBMKBase) te; - + if(rbmk.hasLid()) { height += 0.25F; } } } - + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY + height, z + this.maxZ); } - + /* * NORTH: no cover * EAST: concrete cover @@ -130,21 +130,21 @@ public abstract class RBMKBase extends BlockDummyable implements IToolable, ILoo MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, getDimensions(world), this, dir); this.makeExtra(world, x, y + RBMKDials.getColumnHeight(world), z); } - + @Override protected ForgeDirection getDirModified(ForgeDirection dir) { return DIR_NO_LID; } - + public int[] getDimensions(World world) { return new int[] {RBMKDials.getColumnHeight(world), 0, 0, 0, 0, 0}; } @Override public void breakBlock(World world, int x, int y, int z, Block b, int i) { - + if(!world.isRemote && dropLids) { - + if(i == DIR_NORMAL_LID.ordinal() + offset) { world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5 + RBMKDials.getColumnHeight(world), z + 0.5, new ItemStack(ModItems.rbmk_lid))); } @@ -152,32 +152,32 @@ public abstract class RBMKBase extends BlockDummyable implements IToolable, ILoo world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5 + RBMKDials.getColumnHeight(world), z + 0.5, new ItemStack(ModItems.rbmk_lid_glass))); } } - + super.breakBlock(world, x, y, z, b, i); } - + @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; - + int[] pos = this.findCore(world, x, y, z); - + if(pos != null) { TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); - + if(te instanceof TileEntityRBMKBase) { - + TileEntityRBMKBase rbmk = (TileEntityRBMKBase) te; int i = rbmk.getBlockMetadata(); - + if(rbmk.hasLid() && rbmk.isLidRemovable()) { - RBMKNeutronNode node = (RBMKNeutronNode) NeutronNodeWorld.getNode(new BlockPos(te)); - if (node != null) + RBMKNeutronNode node = (RBMKNeutronNode) NeutronNodeWorld.getNode(world, new BlockPos(te)); + if(node != null) node.removeLid(); - + if(!world.isRemote) { if(i == DIR_NORMAL_LID.ordinal() + offset) { world.spawnEntityInWorld(new EntityItem(world, pos[0] + 0.5, pos[1] + 0.5 + RBMKDials.getColumnHeight(world), pos[2] + 0.5, new ItemStack(ModItems.rbmk_lid))); @@ -185,15 +185,15 @@ public abstract class RBMKBase extends BlockDummyable implements IToolable, ILoo if(i == DIR_GLASS_LID.ordinal() + offset) { world.spawnEntityInWorld(new EntityItem(world, pos[0] + 0.5, pos[1] + 0.5 + RBMKDials.getColumnHeight(world), pos[2] + 0.5, new ItemStack(ModItems.rbmk_lid_glass))); } - - world.setBlockMetadataWithNotify(pos[0], pos[1], pos[2], DIR_NO_LID.ordinal() + this.offset, 3); + + world.setBlockMetadataWithNotify(pos[0], pos[1], pos[2], DIR_NO_LID.ordinal() + offset, 3); } - + return true; } } } - + return false; } diff --git a/src/main/java/com/hbm/blocks/network/BlockCablePaintable.java b/src/main/java/com/hbm/blocks/network/BlockCablePaintable.java index 68a0232ee..3587df3c5 100644 --- a/src/main/java/com/hbm/blocks/network/BlockCablePaintable.java +++ b/src/main/java/com/hbm/blocks/network/BlockCablePaintable.java @@ -2,6 +2,7 @@ package com.hbm.blocks.network; import api.hbm.block.IToolable; import com.hbm.blocks.IBlockMultiPass; +import com.hbm.interfaces.ICopiable; import com.hbm.lib.RefStrings; import com.hbm.render.block.RenderBlockMultipass; import com.hbm.tileentity.network.TileEntityCableBaseNT; @@ -124,7 +125,7 @@ public class BlockCablePaintable extends BlockContainer implements IToolable, IB return IBlockMultiPass.getRenderType(); } - public static class TileEntityCablePaintable extends TileEntityCableBaseNT { + public static class TileEntityCablePaintable extends TileEntityCableBaseNT implements ICopiable { private Block block; private int meta; @@ -168,5 +169,23 @@ public class BlockCablePaintable extends BlockContainer implements IToolable, IB if(block != null) nbt.setInteger("block", Block.getIdFromBlock(block)); nbt.setInteger("meta", meta); } + + @Override + public NBTTagCompound getSettings(World world, int x, int y, int z) { + NBTTagCompound nbt = new NBTTagCompound(); + if(block != null) { + nbt.setInteger("paintblock", Block.getIdFromBlock(block)); + nbt.setInteger("paintmeta", meta); + } + return nbt; + } + + @Override + public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) { + if(nbt.hasKey("paintblock")) { + this.block = Block.getBlockById(nbt.getInteger("paintblock")); + this.meta = nbt.getInteger("paintmeta"); + } + } } } diff --git a/src/main/java/com/hbm/blocks/network/DroneDock.java b/src/main/java/com/hbm/blocks/network/DroneDock.java index 226d3c3f0..83bb9d68f 100644 --- a/src/main/java/com/hbm/blocks/network/DroneDock.java +++ b/src/main/java/com/hbm/blocks/network/DroneDock.java @@ -9,16 +9,21 @@ import com.hbm.tileentity.network.TileEntityDroneRequester; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.World; import java.util.List; +import java.util.Random; public class DroneDock extends BlockContainer implements ITooltipProvider { @@ -69,4 +74,53 @@ public class DroneDock extends BlockContainer implements ITooltipProvider { public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { this.addStandardInfo(stack, player, list, ext); } + + @Override + public void breakBlock(World world, int x, int y, int z, Block block, int meta) { + if(this == ModBlocks.drone_dock) this.dropContents(world, x, y, z, block, meta, 0, 9); + if(this == ModBlocks.drone_crate_provider) this.dropContents(world, x, y, z, block, meta, 0, 9); + if(this == ModBlocks.drone_crate_requester) this.dropContents(world, x, y, z, block, meta, 9, 18); + super.breakBlock(world, x, y, z, block, meta); + } + + private final Random rand = new Random(); + public void dropContents(World world, int x, int y, int z, Block block, int meta, int start, int end) { + ISidedInventory sidedInventory = (ISidedInventory) world.getTileEntity(x, y, z); + + if(sidedInventory != null) { + + for(int i1 = start; i1 < end; ++i1) { + ItemStack stack = sidedInventory.getStackInSlot(i1); + + if(stack != null) { + float f = this.rand.nextFloat() * 0.8F + 0.1F; + float f1 = this.rand.nextFloat() * 0.8F + 0.1F; + float f2 = this.rand.nextFloat() * 0.8F + 0.1F; + + while(stack.stackSize > 0) { + int j1 = this.rand.nextInt(21) + 10; + + if(j1 > stack.stackSize) { + j1 = stack.stackSize; + } + + stack.stackSize -= j1; + EntityItem entity = new EntityItem(world, x + f, y + f1, z + f2, new ItemStack(stack.getItem(), j1, stack.getItemDamage())); + + if(stack.hasTagCompound()) { + entity.getEntityItem().setTagCompound((NBTTagCompound) stack.getTagCompound().copy()); + } + + float f3 = 0.05F; + entity.motionX = (float) this.rand.nextGaussian() * f3; + entity.motionY = (float) this.rand.nextGaussian() * f3 + 0.2F; + entity.motionZ = (float) this.rand.nextGaussian() * f3; + world.spawnEntityInWorld(entity); + } + } + } + + world.func_147453_f(x, y, z, block); + } + } } diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctPaintable.java b/src/main/java/com/hbm/blocks/network/FluidDuctPaintable.java index 37599923b..0bca70d6b 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctPaintable.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctPaintable.java @@ -3,6 +3,7 @@ package com.hbm.blocks.network; import api.hbm.block.IToolable; import com.hbm.blocks.IBlockMultiPass; import com.hbm.blocks.ILookOverlay; +import com.hbm.interfaces.ICopiable; import com.hbm.lib.RefStrings; import com.hbm.render.block.RenderBlockMultipass; import com.hbm.tileentity.network.TileEntityPipeBaseNT; @@ -163,7 +164,7 @@ public class FluidDuctPaintable extends FluidDuctBase implements IToolable, IBlo ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } - public static class TileEntityPipePaintable extends TileEntityPipeBaseNT { + public static class TileEntityPipePaintable extends TileEntityPipeBaseNT implements ICopiable { private Block block; private int meta; @@ -195,5 +196,23 @@ public class FluidDuctPaintable extends FluidDuctBase implements IToolable, IBlo if(block != null) nbt.setInteger("block", Block.getIdFromBlock(block)); nbt.setInteger("meta", meta); } + + @Override + public NBTTagCompound getSettings(World world, int x, int y, int z) { + NBTTagCompound nbt = new NBTTagCompound(); + if(block != null) { + nbt.setInteger("paintblock", Block.getIdFromBlock(block)); + nbt.setInteger("paintmeta", meta); + } + return nbt; + } + + @Override + public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) { + if(nbt.hasKey("paintblock")) { + this.block = Block.getBlockById(nbt.getInteger("paintblock")); + this.meta = nbt.getInteger("paintmeta"); + } + } } } diff --git a/src/main/java/com/hbm/commands/CommandReloadClient.java b/src/main/java/com/hbm/commands/CommandReloadClient.java index 6f0c9672a..84f21988b 100644 --- a/src/main/java/com/hbm/commands/CommandReloadClient.java +++ b/src/main/java/com/hbm/commands/CommandReloadClient.java @@ -1,24 +1,18 @@ package com.hbm.commands; -import java.util.Collections; -import java.util.List; -import java.util.Map.Entry; -import java.util.stream.Collectors; +import java.util.HashMap; import com.hbm.config.ClientConfig; -import com.hbm.config.ClientConfig.ConfigWrapper; +import com.hbm.config.RunningConfig.ConfigWrapper; import cpw.mods.fml.relauncher.FMLLaunchHandler; import cpw.mods.fml.relauncher.Side; -import net.minecraft.command.CommandBase; -import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; import net.minecraftforge.client.ClientCommandHandler; -public class CommandReloadClient extends CommandBase { +public class CommandReloadClient extends CommandReloadConfig { public static void register() { if(FMLLaunchHandler.side() != Side.CLIENT) return; @@ -34,95 +28,26 @@ public class CommandReloadClient extends CommandBase { public String getCommandUsage(ICommandSender sender) { return "/ntmclient help"; } - - @Override - public boolean canCommandSenderUseCommand(ICommandSender sender) { - return sender instanceof EntityPlayer; - } - - @Override - public void processCommand(ICommandSender sender, String[] args) { - - if(args.length < 1) throw new CommandException(getCommandUsage(sender)); - - String operator = args[0]; - - if("help".equals(operator)) { - - if(args.length >= 2) { - String command = args[1]; - if("help".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Shows usage for /ntmclient subcommands.")); - if("list".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Shows all client variable names and values.")); - if("reload".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Reads client variables from the config file.")); - if("get".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Shows value for the specified variable name.")); - if("set".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Sets a variable's value and saves it to the config file.")); - } else { - sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmclient " + EnumChatFormatting.GOLD + "help " + EnumChatFormatting.RED + "")); - sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmclient " + EnumChatFormatting.GOLD + "list")); - sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmclient " + EnumChatFormatting.GOLD + "reload")); - sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmclient " + EnumChatFormatting.GOLD + "get " + EnumChatFormatting.RED + "")); - sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmclient " + EnumChatFormatting.GOLD + "set " + EnumChatFormatting.RED + " ")); - } - return; - } - - if("list".equals(operator)) { - sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "CLIENT VARIABLES:")); - for(Entry line : ClientConfig.configMap.entrySet()) { - sender.addChatMessage(new ChatComponentText(" " + EnumChatFormatting.GOLD + line.getKey() + ": " + EnumChatFormatting.YELLOW + line.getValue().value)); - } - return; - } - - if("reload".equals(operator)) { - ClientConfig.reload(); - sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Variables loaded from config file.")); - return; - } - - if(args.length < 2) throw new CommandException(getCommandUsage(sender)); - - String key = args[1]; - - if("get".equals(operator)) { - ConfigWrapper wrapper = ClientConfig.configMap.get(key); - if(wrapper == null) throw new CommandException("Key does not exist."); - sender.addChatMessage(new ChatComponentText(EnumChatFormatting.GOLD + key + ": " + EnumChatFormatting.YELLOW + wrapper.value)); - return; - } - - if(args.length < 3) throw new CommandException(getCommandUsage(sender)); - - String value = args[2]; - - if("set".equals(operator)) { - ConfigWrapper wrapper = ClientConfig.configMap.get(key); - if(wrapper == null) throw new CommandException("Key does not exist."); - - try { - wrapper.update(value); - ClientConfig.refresh(); - sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Value updated.")); - } catch(Exception ex) { - throw new CommandException("Error parsing type for " + wrapper.value.getClass().getSimpleName() + ": " + ex.getLocalizedMessage()); - } - - return; - } - - throw new CommandException(getCommandUsage(sender)); - } - - @SuppressWarnings("rawtypes") - @Override - public List addTabCompletionOptions(ICommandSender sender, String[] args) { - if(!(sender instanceof EntityPlayer)) return Collections.emptyList(); - if(args.length < 1) return Collections.emptyList(); - if(args.length == 1) return getListOfStringsMatchingLastWord(args, "list", "reload", "get", "set"); - String operator = args[0]; - if(args.length == 2 && ("get".equals(operator) || "set".equals(operator))) { - return getListOfStringsFromIterableMatchingLastWord(args, ClientConfig.configMap.keySet().stream().map(String::valueOf).collect(Collectors.toList())); - } - return Collections.emptyList(); + + @Override public void help(ICommandSender sender, String[] args) { + if(args.length >= 2) { + String command = args[1]; + if("help".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Shows usage for /ntmclient subcommands.")); + if("list".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Shows all client variable names and values.")); + if("reload".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Reads client variables from the config file.")); + if("get".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Shows value for the specified variable name.")); + if("set".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Sets a variable's value and saves it to the config file.")); + } else { + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmclient " + EnumChatFormatting.GOLD + "help " + EnumChatFormatting.RED + "")); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmclient " + EnumChatFormatting.GOLD + "list")); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmclient " + EnumChatFormatting.GOLD + "reload")); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmclient " + EnumChatFormatting.GOLD + "get " + EnumChatFormatting.RED + "")); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmclient " + EnumChatFormatting.GOLD + "set " + EnumChatFormatting.RED + " ")); + } } + + @Override public HashMap getConfigMap() { return ClientConfig.configMap; } + @Override public void refresh() { ClientConfig.refresh(); } + @Override public void reload() { ClientConfig.reload(); } + @Override public String getTitle() { return "CLIENT VARIABLES:"; } } diff --git a/src/main/java/com/hbm/commands/CommandReloadConfig.java b/src/main/java/com/hbm/commands/CommandReloadConfig.java new file mode 100644 index 000000000..fbe35111a --- /dev/null +++ b/src/main/java/com/hbm/commands/CommandReloadConfig.java @@ -0,0 +1,102 @@ +package com.hbm.commands; + +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map.Entry; +import java.util.stream.Collectors; + +import com.hbm.config.RunningConfig.ConfigWrapper; + +import net.minecraft.command.CommandBase; +import net.minecraft.command.CommandException; +import net.minecraft.command.ICommandSender; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumChatFormatting; + +public abstract class CommandReloadConfig extends CommandBase { + + @Override + public boolean canCommandSenderUseCommand(ICommandSender sender) { + return sender instanceof EntityPlayer; + } + + public abstract void help(ICommandSender sender, String[] args); + public abstract HashMap getConfigMap(); + public abstract void refresh(); + public abstract void reload(); + public abstract String getTitle(); + + @Override + public void processCommand(ICommandSender sender, String[] args) { + + if(args.length < 1) throw new CommandException(getCommandUsage(sender)); + + String operator = args[0]; + + if("help".equals(operator)) { + help(sender, args); + return; + } + + if("list".equals(operator)) { + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + getTitle())); + for(Entry line : getConfigMap().entrySet()) { + sender.addChatMessage(new ChatComponentText(" " + EnumChatFormatting.GOLD + line.getKey() + ": " + EnumChatFormatting.YELLOW + line.getValue().value)); + } + return; + } + + if("reload".equals(operator)) { + reload(); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Variables loaded from config file.")); + return; + } + + if(args.length < 2) throw new CommandException(getCommandUsage(sender)); + + String key = args[1]; + + if("get".equals(operator)) { + ConfigWrapper wrapper = getConfigMap().get(key); + if(wrapper == null) throw new CommandException("Key does not exist."); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.GOLD + key + ": " + EnumChatFormatting.YELLOW + wrapper.value)); + return; + } + + if(args.length < 3) throw new CommandException(getCommandUsage(sender)); + + String value = args[2]; + + if("set".equals(operator)) { + ConfigWrapper wrapper = getConfigMap().get(key); + if(wrapper == null) throw new CommandException("Key does not exist."); + + try { + wrapper.update(value); + refresh(); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Value updated.")); + } catch(Exception ex) { + throw new CommandException("Error parsing type for " + wrapper.value.getClass().getSimpleName() + ": " + ex.getLocalizedMessage()); + } + + return; + } + + throw new CommandException(getCommandUsage(sender)); + } + + @SuppressWarnings("rawtypes") + @Override + public List addTabCompletionOptions(ICommandSender sender, String[] args) { + if(!(sender instanceof EntityPlayer)) return Collections.emptyList(); + if(args.length < 1) return Collections.emptyList(); + if(args.length == 1) return getListOfStringsMatchingLastWord(args, "list", "reload", "get", "set"); + String operator = args[0]; + if(args.length == 2 && ("get".equals(operator) || "set".equals(operator))) { + return getListOfStringsFromIterableMatchingLastWord(args, getConfigMap().keySet().stream().map(String::valueOf).collect(Collectors.toList())); + } + return Collections.emptyList(); + } +} diff --git a/src/main/java/com/hbm/commands/CommandReloadRecipes.java b/src/main/java/com/hbm/commands/CommandReloadRecipes.java index 9068adb38..b73da42fd 100644 --- a/src/main/java/com/hbm/commands/CommandReloadRecipes.java +++ b/src/main/java/com/hbm/commands/CommandReloadRecipes.java @@ -26,10 +26,10 @@ public class CommandReloadRecipes extends CommandBase { @Override public void processCommand(ICommandSender sender, String[] args) { try { + Fluids.reloadFluids(); SerializableRecipe.initialize(); ItemPoolConfigJSON.initialize(); DamageResistanceHandler.init(); - Fluids.reloadFluids(); sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Reload complete :)")); } catch(Exception ex) { diff --git a/src/main/java/com/hbm/commands/CommandReloadServer.java b/src/main/java/com/hbm/commands/CommandReloadServer.java new file mode 100644 index 000000000..33c572141 --- /dev/null +++ b/src/main/java/com/hbm/commands/CommandReloadServer.java @@ -0,0 +1,45 @@ +package com.hbm.commands; + +import java.util.HashMap; + +import com.hbm.config.RunningConfig.ConfigWrapper; +import com.hbm.config.ServerConfig; + +import net.minecraft.command.ICommandSender; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumChatFormatting; + +public class CommandReloadServer extends CommandReloadConfig { + + @Override + public String getCommandName() { + return "ntmserver"; + } + + @Override + public String getCommandUsage(ICommandSender sender) { + return "/ntmserver help"; + } + + @Override public void help(ICommandSender sender, String[] args) { + if(args.length >= 2) { + String command = args[1]; + if("help".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Shows usage for /ntmserver subcommands.")); + if("list".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Shows all server variable names and values.")); + if("reload".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Reads server variables from the config file.")); + if("get".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Shows value for the specified variable name.")); + if("set".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Sets a variable's value and saves it to the config file.")); + } else { + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmserver " + EnumChatFormatting.GOLD + "help " + EnumChatFormatting.RED + "")); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmserver " + EnumChatFormatting.GOLD + "list")); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmserver " + EnumChatFormatting.GOLD + "reload")); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmserver " + EnumChatFormatting.GOLD + "get " + EnumChatFormatting.RED + "")); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmserver " + EnumChatFormatting.GOLD + "set " + EnumChatFormatting.RED + " ")); + } + } + + @Override public HashMap getConfigMap() { return ServerConfig.configMap; } + @Override public void refresh() { ServerConfig.refresh(); } + @Override public void reload() { ServerConfig.reload(); } + @Override public String getTitle() { return "SERVER VARIABLES:"; } +} diff --git a/src/main/java/com/hbm/config/ClientConfig.java b/src/main/java/com/hbm/config/ClientConfig.java index 4d171cad7..e5905a135 100644 --- a/src/main/java/com/hbm/config/ClientConfig.java +++ b/src/main/java/com/hbm/config/ClientConfig.java @@ -1,24 +1,13 @@ package com.hbm.config; import com.google.gson.Gson; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.stream.JsonWriter; -import com.hbm.main.MainRegistry; import com.hbm.util.Compat; import java.io.File; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; -import java.util.List; -import java.util.Map.Entry; // https://youtube.com/shorts/XTHZWqZt_AI -public class ClientConfig { +public class ClientConfig extends RunningConfig { public static final Gson gson = new Gson(); public static HashMap configMap = new HashMap(); @@ -65,112 +54,28 @@ public class ClientConfig { /** Initializes defaults, then reads the config file if it exists, then writes the config file. */ public static void initConfig() { initDefaults(); - File folder = MainRegistry.configHbmDir; - File config = new File(folder.getAbsolutePath() + File.separatorChar + "hbmClient.json"); + File config = getConfig("hbmClient.json"); if(config.exists()) readConfig(config); refresh(); } /** Writes over the config file using the running config. */ public static void refresh() { - File folder = MainRegistry.configHbmDir; - File config = new File(folder.getAbsolutePath() + File.separatorChar + "hbmClient.json"); + File config = getConfig("hbmClient.json"); writeConfig(config); } /** Writes over the running config using the config file. */ public static void reload() { - File folder = MainRegistry.configHbmDir; - File config = new File(folder.getAbsolutePath() + File.separatorChar + "hbmClient.json"); + File config = getConfig("hbmClient.json"); if(config.exists()) readConfig(config); } private static void readConfig(File config) { - - try { - JsonObject json = gson.fromJson(new FileReader(config), JsonObject.class); - - for(Entry line : configMap.entrySet()) { - - if(json.has(line.getKey())) { - JsonElement value = json.get(line.getKey()); - - try { - - //world's shittiest dynamic type parser - if(configMap.containsKey(line.getKey())) { - if(line.getValue().value instanceof String) configMap.get(line.getKey()).set(value.getAsString()); - if(line.getValue().value instanceof Float) configMap.get(line.getKey()).set(value.getAsFloat()); - if(line.getValue().value instanceof Double) configMap.get(line.getKey()).set(value.getAsDouble()); - if(line.getValue().value instanceof Integer) configMap.get(line.getKey()).set(value.getAsInt()); - if(line.getValue().value instanceof Boolean) configMap.get(line.getKey()).set(value.getAsBoolean()); - } - - //gson doesn't give me the option to read the raw value of a JsonPrimitive so we have to this shit effectively twice - //once to make sure that the parsed data matches with what's determined by the default, - //and a second time in the ConfigWrapper to add ease of reading the data without needing manual casts - - } catch(Exception ex) { - ex.printStackTrace(); - } - } - } - - } catch(Exception ex) { - ex.printStackTrace(); - } + RunningConfig.readConfig(config, configMap); } private static void writeConfig(File config) { - - try { - JsonWriter writer = new JsonWriter(new FileWriter(config)); - writer.setIndent(" "); - writer.beginObject(); - - writer.name("info").value("This file can be edited ingame using the /ntmclient command."); - - List keys = new ArrayList(); - keys.addAll(configMap.keySet()); - Collections.sort(keys); //readability is cool - - for(String key : keys) { - - ConfigWrapper wrapper = configMap.get(key); - Object value = wrapper.value; - //this sucks and i am too stupid to come up with something better - if(value instanceof String) writer.name(key).value((String) value); - if(value instanceof Float) writer.name(key).value((Float) value); - if(value instanceof Double) writer.name(key).value((Double) value); - if(value instanceof Integer) writer.name(key).value((Integer) value); - if(value instanceof Boolean) writer.name(key).value((Boolean) value); - } - - writer.endObject(); - writer.close(); - } catch(IOException e) { - e.printStackTrace(); - } - } - - public static class ConfigWrapper { - public T value; - - public ConfigWrapper(T o) { - this.value = o; - } - - public T get() { return value; } - public void set(T value) { this.value = value; } - - public void update(String param) { - Object stupidBufferObject = null; // wahh wahh can't cast Float to T wahh wahh shut the fuck up - if(value instanceof String) stupidBufferObject = param; - if(value instanceof Float) stupidBufferObject = Float.parseFloat(param); - if(value instanceof Double) stupidBufferObject = Double.parseDouble(param); - if(value instanceof Integer) stupidBufferObject = Integer.parseInt(param); - if(value instanceof Boolean) stupidBufferObject = Boolean.parseBoolean(param); - if(stupidBufferObject != null) this.value = (T) stupidBufferObject; - } + RunningConfig.writeConfig(config, configMap, "This file can be edited ingame using the /ntmclient command."); } } diff --git a/src/main/java/com/hbm/config/GeneralConfig.java b/src/main/java/com/hbm/config/GeneralConfig.java index 916bd9e9c..039384940 100644 --- a/src/main/java/com/hbm/config/GeneralConfig.java +++ b/src/main/java/com/hbm/config/GeneralConfig.java @@ -23,13 +23,11 @@ public class GeneralConfig { public static boolean enableVaults = true; public static boolean enableCataclysm = false; public static boolean enableExtendedLogging = false; - public static boolean enableHardcoreTaint = false; public static boolean enableGuns = true; public static boolean enableVirus = true; public static boolean enableCrosshairs = true; public static boolean enableReflectorCompat = false; public static boolean enableRenderDistCheck = true; - public static boolean enableReEval = true; public static boolean enableSilentCompStackErrors = true; public static boolean enableSkyboxes = true; public static boolean enableImpactWorldProvider = true; @@ -42,7 +40,6 @@ public class GeneralConfig { public static boolean enableSoundExtension = true; public static boolean enableMekanismChanges = true; public static int normalSoundChannels = 200; - public static int hintPos = 0; public static boolean enableExpensiveMode = false; @@ -100,15 +97,12 @@ public class GeneralConfig { enableVaults = config.get(CATEGORY_GENERAL, "1.15_enableVaultSpawn", true, "Allows locked safes to spawn").getBoolean(true); enableCataclysm = config.get(CATEGORY_GENERAL, "1.17_enableCataclysm", false, "Causes satellites to fall whenever a mob dies").getBoolean(false); enableExtendedLogging = config.get(CATEGORY_GENERAL, "1.18_enableExtendedLogging", false, "Logs uses of the detonator, nuclear explosions, missile launches, grenades, etc.").getBoolean(false); - enableHardcoreTaint = config.get(CATEGORY_GENERAL, "1.19_enableHardcoreTaint", false, "Allows tainted mobs to spread taint").getBoolean(false); enableGuns = config.get(CATEGORY_GENERAL, "1.20_enableGuns", true, "Prevents new system guns to be fired").getBoolean(true); enableVirus = config.get(CATEGORY_GENERAL, "1.21_enableVirus", false, "Allows virus blocks to spread").getBoolean(false); enableCrosshairs = config.get(CATEGORY_GENERAL, "1.22_enableCrosshairs", true, "Shows custom crosshairs when an NTM gun is being held").getBoolean(true); enableReflectorCompat = config.get(CATEGORY_GENERAL, "1.24_enableReflectorCompat", false, "Enable old reflector oredict name (\"plateDenseLead\") instead of new \"plateTungCar\"").getBoolean(false); enableRenderDistCheck = config.get(CATEGORY_GENERAL, "1.25_enableRenderDistCheck", true, "Check invalid render distances (over 16, without OptiFine) and fix it").getBoolean(true); - enableReEval = config.get(CATEGORY_GENERAL, "1.27_enableReEval", true, "Allows re-evaluating power networks on link remove instead of destroying and recreating").getBoolean(true); enableSilentCompStackErrors = config.get(CATEGORY_GENERAL, "1.28_enableSilentCompStackErrors", false, "Enabling this will disable log spam created by unregistered items in ComparableStack instances.").getBoolean(false); - hintPos = CommonConfig.createConfigInt(config, CATEGORY_GENERAL, "1.29_hudOverlayPosition", "0: Top left\n1: Top right\n2: Center right\n3: Center Left", 0); enableSkyboxes = config.get(CATEGORY_GENERAL, "1.31_enableSkyboxes", true, "If enabled, will try to use NTM's custom skyboxes.").getBoolean(true); enableImpactWorldProvider = config.get(CATEGORY_GENERAL, "1.32_enableImpactWorldProvider", true, "If enabled, registers custom world provider which modifies lighting and sky colors for post impact effects.").getBoolean(true); enableStatReRegistering = config.get(CATEGORY_GENERAL, "1.33_enableStatReRegistering", true, "If enabled, will re-register item crafting/breaking/usage stats in order to fix a forge bug where modded items just won't show up.").getBoolean(true); diff --git a/src/main/java/com/hbm/config/RunningConfig.java b/src/main/java/com/hbm/config/RunningConfig.java new file mode 100644 index 000000000..453a123b2 --- /dev/null +++ b/src/main/java/com/hbm/config/RunningConfig.java @@ -0,0 +1,116 @@ +package com.hbm.config; + +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map.Entry; + +import com.google.gson.Gson; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import com.hbm.main.MainRegistry; + +public class RunningConfig { + + public static final Gson gson = new Gson(); + + public static File getConfig(String name) { + File folder = MainRegistry.configHbmDir; + return new File(folder.getAbsolutePath() + File.separatorChar + name); + } + + public static void readConfig(File config, HashMap configMap) { + + try { + JsonObject json = gson.fromJson(new FileReader(config), JsonObject.class); + + for(Entry line : configMap.entrySet()) { + + if(json.has(line.getKey())) { + JsonElement value = json.get(line.getKey()); + + try { + + //world's shittiest dynamic type parser + if(configMap.containsKey(line.getKey())) { + if(line.getValue().value instanceof String) configMap.get(line.getKey()).set(value.getAsString()); + if(line.getValue().value instanceof Float) configMap.get(line.getKey()).set(value.getAsFloat()); + if(line.getValue().value instanceof Double) configMap.get(line.getKey()).set(value.getAsDouble()); + if(line.getValue().value instanceof Integer) configMap.get(line.getKey()).set(value.getAsInt()); + if(line.getValue().value instanceof Boolean) configMap.get(line.getKey()).set(value.getAsBoolean()); + } + + //gson doesn't give me the option to read the raw value of a JsonPrimitive so we have to this shit effectively twice + //once to make sure that the parsed data matches with what's determined by the default, + //and a second time in the ConfigWrapper to add ease of reading the data without needing manual casts + + } catch(Exception ex) { + ex.printStackTrace(); + } + } + } + + } catch(Exception ex) { + ex.printStackTrace(); + } + } + + public static void writeConfig(File config, HashMap configMap, String info) { + + try { + JsonWriter writer = new JsonWriter(new FileWriter(config)); + writer.setIndent(" "); + writer.beginObject(); + + writer.name("info").value(info); + + List keys = new ArrayList(); + keys.addAll(configMap.keySet()); + Collections.sort(keys); //readability is cool + + for(String key : keys) { + + ConfigWrapper wrapper = configMap.get(key); + Object value = wrapper.value; + //this sucks and i am too stupid to come up with something better + if(value instanceof String) writer.name(key).value((String) value); + if(value instanceof Float) writer.name(key).value((Float) value); + if(value instanceof Double) writer.name(key).value((Double) value); + if(value instanceof Integer) writer.name(key).value((Integer) value); + if(value instanceof Boolean) writer.name(key).value((Boolean) value); + } + + writer.endObject(); + writer.close(); + } catch(IOException e) { + e.printStackTrace(); + } + } + + public static class ConfigWrapper { + public T value; + + public ConfigWrapper(T o) { + this.value = o; + } + + public T get() { return value; } + public void set(T value) { this.value = value; } + + public void update(String param) { + Object stupidBufferObject = null; // wahh wahh can't cast Float to T wahh wahh shut the fuck up + if(value instanceof String) stupidBufferObject = param; + if(value instanceof Float) stupidBufferObject = Float.parseFloat(param); + if(value instanceof Double) stupidBufferObject = Double.parseDouble(param); + if(value instanceof Integer) stupidBufferObject = Integer.parseInt(param); + if(value instanceof Boolean) stupidBufferObject = Boolean.parseBoolean(param); + if(stupidBufferObject != null) this.value = (T) stupidBufferObject; + } + } +} diff --git a/src/main/java/com/hbm/config/ServerConfig.java b/src/main/java/com/hbm/config/ServerConfig.java new file mode 100644 index 000000000..0ae3d11a2 --- /dev/null +++ b/src/main/java/com/hbm/config/ServerConfig.java @@ -0,0 +1,56 @@ +package com.hbm.config; + +import java.io.File; +import java.util.HashMap; + +import com.google.gson.Gson; + +public class ServerConfig extends RunningConfig { + + public static final Gson gson = new Gson(); + public static HashMap configMap = new HashMap(); + + public static ConfigWrapper DAMAGE_COMPATIBILITY_MODE = new ConfigWrapper(false); + public static ConfigWrapper MINE_AP_DAMAGE = new ConfigWrapper(10F); + public static ConfigWrapper MINE_HE_DAMAGE = new ConfigWrapper(35F); + public static ConfigWrapper MINE_SHRAP_DAMAGE = new ConfigWrapper(7.5F); + public static ConfigWrapper MINE_NUKE_DAMAGE = new ConfigWrapper(100F); + public static ConfigWrapper TAINT_TRAILS = new ConfigWrapper(false); + + private static void initDefaults() { + configMap.put("DAMAGE_COMPATIBILITY_MODE", DAMAGE_COMPATIBILITY_MODE); + configMap.put("MINE_AP_DAMAGE", MINE_AP_DAMAGE); + configMap.put("MINE_HE_DAMAGE", MINE_HE_DAMAGE); + configMap.put("MINE_SHRAP_DAMAGE", MINE_SHRAP_DAMAGE); + configMap.put("MINE_NUKE_DAMAGE", MINE_NUKE_DAMAGE); + configMap.put("TAINT_TRAILS", TAINT_TRAILS); + } + + /** Initializes defaults, then reads the config file if it exists, then writes the config file. */ + public static void initConfig() { + initDefaults(); + File config = getConfig("hbmServer.json"); + if(config.exists()) readConfig(config); + refresh(); + } + + /** Writes over the config file using the running config. */ + public static void refresh() { + File config = getConfig("hbmServer.json"); + writeConfig(config); + } + + /** Writes over the running config using the config file. */ + public static void reload() { + File config = getConfig("hbmServer.json"); + if(config.exists()) readConfig(config); + } + + private static void readConfig(File config) { + RunningConfig.readConfig(config, configMap); + } + + private static void writeConfig(File config) { + RunningConfig.writeConfig(config, configMap, "This file can be edited ingame using the /ntmserver command."); + } +} diff --git a/src/main/java/com/hbm/config/StructureConfig.java b/src/main/java/com/hbm/config/StructureConfig.java index 944a7cbb0..2f6bb9bf9 100644 --- a/src/main/java/com/hbm/config/StructureConfig.java +++ b/src/main/java/com/hbm/config/StructureConfig.java @@ -7,36 +7,40 @@ import com.hbm.main.MainRegistry; import net.minecraftforge.common.config.Configuration; public class StructureConfig { - + public static int enableStructures = 2; - + public static int structureMinChunks = 8; public static int structureMaxChunks = 24; - + public static double lootAmountFactor = 1D; - + + public static boolean debugStructures = false; + public static void loadFromConfig(Configuration config) { - + final String CATEGORY_STRUCTURES = CommonConfig.CATEGORY_STRUCTURES; String unparsedStructureFlag = CommonConfig.createConfigString(config, CATEGORY_STRUCTURES, "5.00_enableStructures", "Flag for whether modern NTM structures will spawn. Valid values are true|false|flag - flag will respect the \"Generate Structures\" world flag.", "flag"); enableStructures = CommonConfig.parseStructureFlag(unparsedStructureFlag); - + structureMinChunks = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.01_structureMinChunks", "Minimum non-zero distance between structures in chunks (Settings lower than 8 may be problematic).", 8); structureMaxChunks = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.02_structureMaxChunks", "Maximum non-zero distance between structures in chunks.", 24); - + lootAmountFactor = CommonConfig.createConfigDouble(config, CATEGORY_STRUCTURES, "5.03_lootAmountFactor", "General factor for loot spawns. Applies to spawned IInventories, not loot blocks.", 1D); - + + debugStructures = CommonConfig.createConfigBool(config, CATEGORY_STRUCTURES, "5.04_debugStructures", "If enabled, special structure blocks like jigsaw blocks will not be transformed after generating", false); + structureMinChunks = CommonConfig.setDef(structureMinChunks, 8); structureMaxChunks = CommonConfig.setDef(structureMaxChunks, 24); - + if(structureMinChunks > structureMaxChunks) { MainRegistry.logger.error("Fatal error config: Minimum value has been set higher than the maximum value!"); MainRegistry.logger.error(String.format(Locale.US, "Errored values will default back to %1$d and %2$d respectively, PLEASE REVIEW CONFIGURATION DESCRIPTION BEFORE MEDDLING WITH VALUES!", 8, 24)); structureMinChunks = 8; structureMaxChunks = 24; } - + } } diff --git a/src/main/java/com/hbm/config/WorldConfig.java b/src/main/java/com/hbm/config/WorldConfig.java index fbf08bc63..0eb14c026 100644 --- a/src/main/java/com/hbm/config/WorldConfig.java +++ b/src/main/java/com/hbm/config/WorldConfig.java @@ -7,7 +7,7 @@ public class WorldConfig { public static boolean overworldOre = true; public static boolean netherOre = true; public static boolean endOre = true; - + public static int uraniumSpawn = 6; public static int thoriumSpawn = 7; public static int titaniumSpawn = 8; @@ -74,10 +74,16 @@ public class WorldConfig { public static int endTikiteSpawn = 8; + public static boolean enableHematite = true; + public static boolean enableMalachite = true; + public static boolean enableBauxite = true; + + public static boolean enableSulfurCave = true; + public static boolean enableAsbestosCave = true; + public static int radioStructure = 500; public static int antennaStructure = 250; public static int atomStructure = 500; - public static int vertibirdStructure = 500; public static int dungeonStructure = 64; public static int relayStructure = 500; public static int satelliteStructure = 500; @@ -88,7 +94,6 @@ public class WorldConfig { public static int geyserWater = 3000; public static int geyserChlorine = 3000; public static int geyserVapor = 500; - public static int meteorStructure = 15000; public static int capsuleStructure = 100; public static int arcticStructure = 500; public static int jungleStructure = 2000; @@ -115,15 +120,15 @@ public class WorldConfig { public static float craterBiomeInnerRad = 25F; public static float craterBiomeOuterRad = 0.5F; public static float craterBiomeWaterMult = 5F; - + public static void loadFromConfig(Configuration config) { final String CATEGORY_OREGEN = CommonConfig.CATEGORY_ORES; - + overworldOre = CommonConfig.createConfigBool(config, CATEGORY_OREGEN, "2.D00_overworldOres", "General switch for whether overworld ores should be generated. Does not include special structures like oil.", true); netherOre = CommonConfig.createConfigBool(config, CATEGORY_OREGEN, "2.D01_netherOres", "General switch for whether nether ores should be generated.", true); endOre = CommonConfig.createConfigBool(config, CATEGORY_OREGEN, "2.D02_endOres", "General switch for whether end ores should be generated. Does not include special structures like trixite crystals.", true); - + uraniumSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.00_uraniumSpawnrate", "Amount of uranium ore veins per chunk", 7); titaniumSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.01_titaniumSpawnrate", "Amount of titanium ore veins per chunk", 8); sulfurSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.02_sulfurSpawnrate", "Amount of sulfur ore veins per chunk", 5); @@ -191,11 +196,17 @@ public class WorldConfig { endTikiteSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.E00_tikiteSpawnrate", "Amount of end trixite per chunk", 8); + enableHematite = CommonConfig.createConfigBool(config, CATEGORY_OREGEN, "2.L00_enableHematite", "Toggles hematite deposits", true); + enableMalachite = CommonConfig.createConfigBool(config, CATEGORY_OREGEN, "2.L01_enableMalachite", "Toggles malachite deposits", true); + enableBauxite = CommonConfig.createConfigBool(config, CATEGORY_OREGEN, "2.L02_enableBauxite", "Toggles bauxite deposits", true); + + enableSulfurCave = CommonConfig.createConfigBool(config, CATEGORY_OREGEN, "2.C00_enableSulfurCave", "Toggles sulfur caves", true); + enableAsbestosCave = CommonConfig.createConfigBool(config, CATEGORY_OREGEN, "2.C01_enableAsbestosCave", "Toggles asbestos caves", true); + final String CATEGORY_DUNGEON = CommonConfig.CATEGORY_DUNGEONS; radioStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.00_radioSpawn", "Spawn radio station on every nTH chunk", 500); antennaStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.01_antennaSpawn", "Spawn antenna on every nTH chunk", 250); atomStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.02_atomSpawn", "Spawn power plant on every nTH chunk", 500); - vertibirdStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.03_vertibirdSpawn", "Spawn vertibird on every nTH chunk", 500); dungeonStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.04_dungeonSpawn", "Spawn library dungeon on every nTH chunk", 64); relayStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.05_relaySpawn", "Spawn relay on every nTH chunk", 500); satelliteStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.06_satelliteSpawn", "Spawn satellite dish on every nTH chunk", 500); @@ -210,7 +221,6 @@ public class WorldConfig { geyserWater = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.17_geyserWaterSpawn", "Spawn water geyser on every nTH chunk", 3000); geyserChlorine = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.18_geyserChlorineSpawn", "Spawn poison geyser on every nTH chunk", 3000); geyserVapor = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.19_geyserVaporSpawn", "Spawn vapor geyser on every nTH chunk", 500); - meteorStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.20_meteorSpawn", "Spawn meteor dungeon on every nTH chunk", 15000); capsuleStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.21_capsuleSpawn", "Spawn landing capsule on every nTH chunk", 100); arcticStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.22_arcticVaultSpawn", "Spawn arctic code vault on every nTH chunk", 500); jungleStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.23_jungleDungeonSpawn", "Spawn jungle dungeon on every nTH chunk", 2000); @@ -238,7 +248,6 @@ public class WorldConfig { radioStructure = CommonConfig.setDefZero(radioStructure, 1000); antennaStructure = CommonConfig.setDefZero(antennaStructure, 1000); atomStructure = CommonConfig.setDefZero(atomStructure, 1000); - vertibirdStructure = CommonConfig.setDefZero(vertibirdStructure, 1000); dungeonStructure = CommonConfig.setDefZero(dungeonStructure, 1000); relayStructure = CommonConfig.setDefZero(relayStructure, 1000); satelliteStructure = CommonConfig.setDefZero(satelliteStructure, 1000); @@ -253,11 +262,10 @@ public class WorldConfig { minefreq = CommonConfig.setDefZero(minefreq, 1000); radfreq = CommonConfig.setDefZero(radfreq, 1000); vaultfreq = CommonConfig.setDefZero(vaultfreq, 1000); - meteorStructure = CommonConfig.setDefZero(meteorStructure, 15000); jungleStructure = CommonConfig.setDefZero(jungleStructure, 1000); capsuleStructure = CommonConfig.setDefZero(capsuleStructure, 100); arcticStructure = CommonConfig.setDefZero(arcticStructure, 500); - + meteorStrikeChance = CommonConfig.setDef(meteorStrikeChance, 1000); meteorShowerChance = CommonConfig.setDef(meteorShowerChance, 1000); } diff --git a/src/main/java/com/hbm/crafting/ToolRecipes.java b/src/main/java/com/hbm/crafting/ToolRecipes.java index 113b4c80a..b56361021 100644 --- a/src/main/java/com/hbm/crafting/ToolRecipes.java +++ b/src/main/java/com/hbm/crafting/ToolRecipes.java @@ -163,10 +163,7 @@ public class ToolRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.boltgun), new Object[] { "DPS", " RD", " D ", 'D', DURA.ingot(), 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'R', RUBBER.ingot(), 'S', STEEL.shell() }); //Bobmazon - CraftingManager.addShapelessAuto(new ItemStack(ModItems.bobmazon_materials), new Object[] { Items.book, Items.gold_nugget, Items.string }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.bobmazon_machines), new Object[] { Items.book, Items.gold_nugget, KEY_RED }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.bobmazon_weapons), new Object[] { Items.book, Items.gold_nugget, KEY_GRAY }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.bobmazon_tools), new Object[] { Items.book, Items.gold_nugget, KEY_GREEN }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.bobmazon), new Object[] { Items.book, Items.gold_nugget, Items.string, KEY_BLUE }); //Carts CraftingManager.addRecipeAuto(ItemModMinecart.createCartItem(EnumCartBase.WOOD, EnumMinecart.EMPTY), new Object[] { "P P", "WPW", 'P',KEY_SLAB, 'W', KEY_PLANKS }); diff --git a/src/main/java/com/hbm/crafting/handlers/MKUCraftingHandler.java b/src/main/java/com/hbm/crafting/handlers/MKUCraftingHandler.java index 5086e6388..8405b0f77 100644 --- a/src/main/java/com/hbm/crafting/handlers/MKUCraftingHandler.java +++ b/src/main/java/com/hbm/crafting/handlers/MKUCraftingHandler.java @@ -6,50 +6,52 @@ import java.util.List; import java.util.Random; import com.hbm.items.ModItems; +import com.hbm.items.special.ItemBookLore; import net.minecraft.inventory.InventoryCrafting; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.IRecipe; import net.minecraft.world.World; public class MKUCraftingHandler implements IRecipe { - + public static ItemStack[] MKURecipe; private static long lastSeed; @Override public boolean matches(InventoryCrafting inventory, World world) { - + if(world == null) return false; - + if(MKURecipe == null || world.getSeed() != lastSeed) generateRecipe(world); - + for(int i = 0; i < 9; i++) { ItemStack stack = inventory.getStackInRowAndColumn(i % 3, i / 3); ItemStack recipe = MKURecipe[i]; - + if(stack == null && recipe == null) continue; - + if(stack != null && recipe != null && stack.getItem() == recipe.getItem() && stack.getItemDamage() == recipe.getItemDamage()) continue; - + return false; } - + return true; } - + public static void generateRecipe(World world) { Random rand = new Random(world.getSeed()); - + if(lastSeed == world.getSeed() && MKURecipe != null) return; - + lastSeed = world.getSeed(); - + List list = Arrays.asList(new ItemStack[] { new ItemStack(ModItems.powder_iodine), new ItemStack(ModItems.powder_fire), @@ -61,12 +63,54 @@ public class MKUCraftingHandler implements IRecipe { null, null }); - + Collections.shuffle(list, rand); - + MKURecipe = list.toArray(new ItemStack[9]); } + public static Item getMKUItem(World world) { + switch(world.rand.nextInt(6)) { + case 0: return ModItems.powder_iodine; + case 1: return ModItems.powder_fire; + case 2: return ModItems.dust; + case 3: return ModItems.ingot_mercury; + case 4: return ModItems.morning_glory; + case 5: return ModItems.syringe_metal_empty; + default: return ModItems.flame_pony; + } + } + + public static ItemStack generateBook(World world, Item mkuItem) { + MKUCraftingHandler.generateRecipe(world); + ItemStack[] recipe = MKUCraftingHandler.MKURecipe; + + if(recipe == null) return new ItemStack(ModItems.flame_pony); + + String key = null; + int pages = 1; + if(mkuItem == ModItems.powder_iodine) { key = "book_iodine"; pages = 3; } + if(mkuItem == ModItems.powder_fire) { key = "book_phosphorous"; pages = 2; } + if(mkuItem == ModItems.dust) { key = "book_dust"; pages = 3; } + if(mkuItem == ModItems.ingot_mercury) { key = "book_mercury"; pages = 2; } + if(mkuItem == ModItems.morning_glory) { key = "book_flower"; pages = 2; } + if(mkuItem == ModItems.syringe_metal_empty) { key = "book_syringe"; pages = 2; } + + if(key == null) return new ItemStack(ModItems.flame_pony); + + int s = 1; + for(int i = 0; i < 9; i++) { + if(recipe[i] != null && recipe[i].getItem() == mkuItem) { + s = i + 1; break; + } + } + + ItemStack book = ItemBookLore.createBook(key, pages, 0x271E44, 0xFBFFF4); + ItemBookLore.addArgs(book, pages - 1, String.valueOf(s)); + + return book; + } + @Override public int getRecipeSize() { return 6; @@ -81,4 +125,4 @@ public class MKUCraftingHandler implements IRecipe { public ItemStack getRecipeOutput() { return new ItemStack(ModItems.syringe_mkunicorn); } -} +} \ No newline at end of file diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java b/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java index 0b6a51cf8..e929e2fe2 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java @@ -4,7 +4,6 @@ import java.util.ArrayList; import java.util.List; import com.hbm.blocks.ModBlocks; -import com.hbm.blocks.bomb.BlockTaint; import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.entity.logic.EntityBalefire; import com.hbm.entity.logic.EntityNukeExplosionMK5; @@ -22,6 +21,7 @@ import com.hbm.items.weapon.ItemCustomMissilePart.WarheadType; import com.hbm.main.MainRegistry; import api.hbm.entity.IRadarDetectableNT; +import net.minecraft.block.Block; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -211,7 +211,8 @@ public class EntityMissileCustom extends EntityMissileBaseNT implements IChunkLo int a = rand.nextInt(r) + (int) posX - (r / 2 - 1); int b = rand.nextInt(r) + (int) posY - (r / 2 - 1); int c = rand.nextInt(r) + (int) posZ - (r / 2 - 1); - if(worldObj.getBlock(a, b, c).isReplaceable(worldObj, a, b, c) && BlockTaint.hasPosNeightbour(worldObj, a, b, c)) { + Block block = worldObj.getBlock(a, b, c); + if(block.isNormalCube() && !block.isAir(worldObj, a, b, c)) { worldObj.setBlock(a, b, c, ModBlocks.taint, rand.nextInt(3) + 4, 2); } } diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java index ed2a47309..315f7c30b 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java @@ -4,7 +4,6 @@ import java.util.ArrayList; import java.util.List; import com.hbm.blocks.ModBlocks; -import com.hbm.blocks.bomb.BlockTaint; import com.hbm.config.BombConfig; import com.hbm.entity.effect.EntityBlackHole; import com.hbm.entity.effect.EntityCloudFleija; @@ -128,7 +127,10 @@ public abstract class EntityMissileTier0 extends EntityMissileBaseNT { int a = rand.nextInt(11) + (int) this.posX - 5; int b = rand.nextInt(11) + (int) this.posY - 5; int c = rand.nextInt(11) + (int) this.posZ - 5; - if(worldObj.getBlock(a, b, c).isReplaceable(worldObj, a, b, c) && BlockTaint.hasPosNeightbour(worldObj, a, b, c)) worldObj.setBlock(a, b, c, ModBlocks.taint); + Block block = worldObj.getBlock(a, b, c); + if(block.isNormalCube() && !block.isAir(worldObj, a, b, c)) { + worldObj.setBlock(a, b, c, ModBlocks.taint, rand.nextInt(3) + 4, 2); + } } } @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.powder_spark_mix, 1); } diff --git a/src/main/java/com/hbm/entity/mob/EntityCreeperTainted.java b/src/main/java/com/hbm/entity/mob/EntityCreeperTainted.java index 807e6c543..cbb20b671 100644 --- a/src/main/java/com/hbm/entity/mob/EntityCreeperTainted.java +++ b/src/main/java/com/hbm/entity/mob/EntityCreeperTainted.java @@ -1,7 +1,7 @@ package com.hbm.entity.mob; import com.hbm.blocks.ModBlocks; -import com.hbm.config.GeneralConfig; +import com.hbm.config.ServerConfig; import api.hbm.entity.IRadiationImmune; import net.minecraft.block.Block; @@ -55,9 +55,9 @@ public class EntityCreeperTainted extends EntityCreeper implements IRadiationImm int a = rand.nextInt(15) + (int) posX - 7; int b = rand.nextInt(15) + (int) posY - 7; int c = rand.nextInt(15) + (int) posZ - 7; - - if(worldObj.getBlock(a, b, c).isReplaceable(worldObj, a, b, c) && hasPosNeightbour(worldObj, a, b, c)) { - if(!GeneralConfig.enableHardcoreTaint) { + Block block = worldObj.getBlock(a, b, c); + if(block.isNormalCube() && !block.isAir(worldObj, a, b, c)) { + if(!ServerConfig.TAINT_TRAILS.get()) { worldObj.setBlock(a, b, c, ModBlocks.taint, rand.nextInt(3) + 5, 2); } else { worldObj.setBlock(a, b, c, ModBlocks.taint, rand.nextInt(3), 2); @@ -71,9 +71,9 @@ public class EntityCreeperTainted extends EntityCreeper implements IRadiationImm int a = rand.nextInt(7) + (int) posX - 3; int b = rand.nextInt(7) + (int) posY - 3; int c = rand.nextInt(7) + (int) posZ - 3; - - if(worldObj.getBlock(a, b, c).isReplaceable(worldObj, a, b, c) && hasPosNeightbour(worldObj, a, b, c)) { - if(!GeneralConfig.enableHardcoreTaint) { + Block block = worldObj.getBlock(a, b, c); + if(block.isNormalCube() && !block.isAir(worldObj, a, b, c)) { + if(!ServerConfig.TAINT_TRAILS.get()) { worldObj.setBlock(a, b, c, ModBlocks.taint, rand.nextInt(6) + 10, 2); } else { worldObj.setBlock(a, b, c, ModBlocks.taint, rand.nextInt(3) + 4, 2); diff --git a/src/main/java/com/hbm/explosion/ExplosionNukeSmall.java b/src/main/java/com/hbm/explosion/ExplosionNukeSmall.java index 9e0a4bc07..0d405dba7 100644 --- a/src/main/java/com/hbm/explosion/ExplosionNukeSmall.java +++ b/src/main/java/com/hbm/explosion/ExplosionNukeSmall.java @@ -12,7 +12,7 @@ import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -public class ExplosionNukeSmall { +@Deprecated public class ExplosionNukeSmall { public static void explode(World world, double posX, double posY, double posZ, MukeParams params) { diff --git a/src/main/java/com/hbm/handler/BobmazonOfferFactory.java b/src/main/java/com/hbm/handler/BobmazonOfferFactory.java index 26fcfd55b..e0b3c4560 100644 --- a/src/main/java/com/hbm/handler/BobmazonOfferFactory.java +++ b/src/main/java/com/hbm/handler/BobmazonOfferFactory.java @@ -4,6 +4,10 @@ import java.util.ArrayList; import java.util.List; import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockConcreteColoredExt.EnumConcreteType; +import com.hbm.blocks.generic.BlockNTMFlower.EnumFlowerType; +import com.hbm.blocks.generic.BlockPlushie.PlushieType; +import com.hbm.blocks.generic.BlockSnowglobe.SnowglobeType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.gui.GUIScreenBobmazon.Offer; import com.hbm.inventory.gui.GUIScreenBobmazon.Requirement; @@ -14,124 +18,38 @@ import com.hbm.items.special.ItemKitCustom; import com.hbm.items.special.ItemKitNBT; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; public class BobmazonOfferFactory { - public static List materials = new ArrayList(); - public static List machines = new ArrayList(); - public static List weapons = new ArrayList(); - public static List tools = new ArrayList(); + public static List standard = new ArrayList(); public static List special = new ArrayList(); public static void init() { - materials.clear(); - machines.clear(); - weapons.clear(); - tools.clear(); + standard.clear(); special.clear(); - int inflation = 5; - materials.add(new Offer(new ItemStack(ModItems.ingot_uranium), Requirement.NUCLEAR, 6 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.ingot_u233), Requirement.NUCLEAR, 20 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.ingot_u238), Requirement.NUCLEAR, 15 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.ingot_th232), Requirement.NUCLEAR, 4 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.ingot_plutonium), Requirement.NUCLEAR, 25 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.ingot_titanium), Requirement.STEEL, 2 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.ingot_copper), Requirement.STEEL, 2 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.ingot_red_copper), Requirement.STEEL, 4 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.ingot_tungsten), Requirement.STEEL, 3 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.ingot_aluminium), Requirement.STEEL, 2 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.ingot_steel), Requirement.STEEL, 4 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.ingot_lead), Requirement.STEEL, 2 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.ingot_polymer), Requirement.OIL, 8 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.ingot_uranium_fuel), Requirement.NUCLEAR, 18 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.ingot_thorium_fuel), Requirement.NUCLEAR, 16 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.ingot_desh), Requirement.OIL, 16 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.ingot_saturnite), Requirement.STEEL, 8 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.lithium), Requirement.CHEMICS, 6 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.solid_fuel), Requirement.OIL, 4 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.lignite), Requirement.STEEL, 2 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.canister_full, 1, Fluids.OIL.getID()), Requirement.OIL, 4 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.canister_full, 1, Fluids.DIESEL.getID()), Requirement.OIL, 16 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.canister_full, 1, Fluids.PETROIL.getID()), Requirement.OIL, 12 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.canister_full, 1, Fluids.GASOLINE.getID()), Requirement.OIL, 20 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.canister_full, 1, Fluids.KEROSENE.getID()), Requirement.OIL, 20 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.canister_full, 1, Fluids.NITAN.getID()), Requirement.OIL, 100 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.gas_full, 1, Fluids.PETROLEUM.getID()), Requirement.OIL, 8 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.motor), Requirement.ASSEMBLY, 12 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.rtg_unit), Requirement.NUCLEAR, 25 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.pellet_gas), Requirement.CHEMICS, 4 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.magnetron), Requirement.ASSEMBLY, 10 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.pellet_rtg), Requirement.NUCLEAR, 27 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.piston_selenium), Requirement.ASSEMBLY, 12 * inflation)); - materials.add(new Offer(ItemBattery.getFullBattery(ModItems.battery_advanced), Requirement.ASSEMBLY, 15 * inflation)); - materials.add(new Offer(ItemBattery.getFullBattery(ModItems.battery_lithium), Requirement.CHEMICS, 30 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.arc_electrode), Requirement.ASSEMBLY, 15 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.fuse), Requirement.ASSEMBLY, 5 * inflation)); - - machines.add(new Offer(new ItemStack(ModBlocks.concrete_smooth, 16), Requirement.CHEMICS, 32 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.brick_compound, 8), Requirement.CHEMICS, 48 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.barbed_wire, 16), Requirement.ASSEMBLY, 12 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.machine_siren), Requirement.ASSEMBLY, 12 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.vault_door), Requirement.CHEMICS, 250 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.blast_door), Requirement.CHEMICS, 120 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.machine_epress), Requirement.OIL, 60 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.machine_difurnace_off), Requirement.STEEL, 26 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.machine_gascent), Requirement.OIL, 100 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.machine_diesel), Requirement.CHEMICS, 65 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.machine_geo), Requirement.CHEMICS, 30 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.machine_battery), Requirement.ASSEMBLY, 30 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.machine_lithium_battery), Requirement.CHEMICS, 60 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.machine_assembler), Requirement.ASSEMBLY, 30 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.machine_chemplant), Requirement.CHEMICS, 50 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.machine_shredder), Requirement.ASSEMBLY, 45 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.machine_well), Requirement.OIL, 40 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.machine_refinery), Requirement.OIL, 80 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.absorber), Requirement.CHEMICS, 10 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.absorber_green), Requirement.OIL, 25 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.decon), Requirement.CHEMICS, 15 * inflation)); - - weapons.add(new Offer(new ItemStack(ModItems.loot_10), Requirement.OIL, 50 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.loot_15), Requirement.OIL, 65 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.loot_misc), Requirement.NUCLEAR, 65 * inflation)); - weapons.add(new Offer(new ItemStack(ModBlocks.launch_pad), Requirement.OIL, 95 * inflation)); - weapons.add(new Offer(new ItemStack(ModBlocks.machine_radar), Requirement.OIL, 90 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.designator), Requirement.CHEMICS, 35 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.designator_range), Requirement.CHEMICS, 50 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.sat_chip), Requirement.CHEMICS, 35 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.turret_chip), Requirement.CHEMICS, 80 * inflation)); - weapons.add(new Offer(new ItemStack(ModBlocks.mine_ap, 4), Requirement.ASSEMBLY, 25 * inflation)); - weapons.add(new Offer(new ItemStack(ModBlocks.emp_bomb), Requirement.CHEMICS, 90 * inflation)); - weapons.add(new Offer(new ItemStack(ModBlocks.det_cord, 16), Requirement.ASSEMBLY, 50 * inflation)); - weapons.add(new Offer(new ItemStack(ModBlocks.det_charge), Requirement.CHEMICS, 25 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.detonator), Requirement.ASSEMBLY, 15 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.detonator_laser), Requirement.CHEMICS, 60 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.defuser), Requirement.OIL, 5 * inflation)); - - tools.add(new Offer(new ItemStack(ModBlocks.crate_can, 1), Requirement.STEEL, 20 * inflation)); - tools.add(new Offer(new ItemStack(ModBlocks.machine_keyforge), Requirement.STEEL, 10 * inflation)); - tools.add(new Offer(new ItemStack(ModBlocks.machine_satlinker), Requirement.CHEMICS, 50 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.oil_detector), Requirement.CHEMICS, 45 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.geiger_counter), Requirement.CHEMICS, 10 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.key), Requirement.STEEL, 2 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.padlock), Requirement.STEEL, 5 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.padlock_reinforced), Requirement.OIL, 15 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.syringe_antidote, 6), Requirement.STEEL, 10 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.syringe_metal_stimpak, 4), Requirement.STEEL, 10 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.syringe_metal_medx, 4), Requirement.STEEL, 10 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.radaway, 6), Requirement.ASSEMBLY, 30 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.radaway_strong, 3), Requirement.ASSEMBLY, 35 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.radx, 4), Requirement.ASSEMBLY, 20 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.pill_iodine, 6), Requirement.ASSEMBLY, 20 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.gas_mask_filter, 1), Requirement.ASSEMBLY, 5 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.gun_kit_1, 4), Requirement.OIL, 20 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.gun_kit_2, 2), Requirement.OIL, 45 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.hazmat_kit), Requirement.ASSEMBLY, 40 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.hazmat_red_kit), Requirement.CHEMICS, 100 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.hazmat_grey_kit), Requirement.OIL, 160 * inflation)); + //gear + standard.add(new Offer(new ItemStack(Blocks.torch, 64), Requirement.NONE, 2)); + standard.add(new Offer(new ItemStack(ModItems.definitelyfood, 16), Requirement.NONE, 4)); + standard.add(new Offer(new ItemStack(ModItems.nitra, 4), Requirement.CHEMICS, 16)); + standard.add(new Offer(new ItemStack(ModItems.gun_kit_1, 1), Requirement.ASSEMBLY, 16)); + standard.add(new Offer(new ItemStack(ModItems.geiger_counter, 1), Requirement.NONE, 16)); + standard.add(new Offer(new ItemStack(ModItems.matchstick, 16), Requirement.STEEL, 2)); + //plants + standard.add(new Offer(new ItemStack(Blocks.sapling, 1, 3), Requirement.STEEL, 12, 9)); + standard.add(new Offer(new ItemStack(ModBlocks.plant_flower, 1, EnumFlowerType.FOXGLOVE.ordinal()), Requirement.STEEL, 16, 5)); + standard.add(new Offer(new ItemStack(ModBlocks.plant_flower, 1, EnumFlowerType.TOBACCO.ordinal()), Requirement.STEEL, 16, 9)); + standard.add(new Offer(new ItemStack(ModBlocks.plant_flower, 1, EnumFlowerType.NIGHTSHADE.ordinal()), Requirement.STEEL, 16, 3)); + standard.add(new Offer(new ItemStack(ModBlocks.plant_flower, 1, EnumFlowerType.WEED.ordinal()), Requirement.STEEL, 4, 10)); + standard.add(new Offer(new ItemStack(ModBlocks.plant_flower, 1, EnumFlowerType.CD0.ordinal()), Requirement.NUCLEAR, 64, 8)); + //deco + for(EnumConcreteType conc : EnumConcreteType.values()) standard.add(new Offer(new ItemStack(ModBlocks.concrete_colored_ext, 16, conc.ordinal()), Requirement.CHEMICS, 4)); + for(SnowglobeType globe : SnowglobeType.values()) standard.add(new Offer(new ItemStack(ModBlocks.snowglobe, 1, globe.ordinal()), Requirement.CHEMICS, 128)); + for(int i = 1; i < PlushieType.values().length; i++) standard.add(new Offer(new ItemStack(ModBlocks.plushie, 1, i), Requirement.OIL, 16, i < 3 ? 10 : 0)); special.add(new Offer(new ItemStack(Items.iron_ingot, 64), Requirement.STEEL, 1)); special.add(new Offer(new ItemStack(ModItems.ingot_steel, 64), Requirement.STEEL, 1)); @@ -160,8 +78,8 @@ public class BobmazonOfferFactory { special.add(new Offer(new ItemStack(ModItems.grenade_kit), Requirement.STEEL, 5)); special.add(new Offer(new ItemStack(ModItems.jetpack_vector), Requirement.STEEL, 2)); special.add(new Offer(new ItemStack(ModItems.jetpack_tank), Requirement.STEEL, 2)); - special.add(new Offer(new ItemStack(ModItems.gun_kit_1, 10), Requirement.STEEL, 1)); - special.add(new Offer(new ItemStack(ModItems.gun_kit_2, 5), Requirement.STEEL, 3)); + special.add(new Offer(new ItemStack(ModItems.gun_kit_1, 1), Requirement.STEEL, 1)); + special.add(new Offer(new ItemStack(ModItems.gun_kit_2, 1), Requirement.STEEL, 3)); special.add(new Offer(new ItemStack(ModBlocks.struct_launcher_core, 1), Requirement.STEEL, 3)); special.add(new Offer(new ItemStack(ModBlocks.struct_launcher_core_large, 1), Requirement.STEEL, 3)); special.add(new Offer(new ItemStack(ModBlocks.struct_launcher, 40), Requirement.STEEL, 7)); @@ -242,17 +160,13 @@ public class BobmazonOfferFactory { new ItemStack(ModItems.ammo_standard, 64, EnumAmmo.CAPACITOR_OVERCHARGE.ordinal()), new ItemStack(ModItems.ammo_standard, 64, EnumAmmo.CAPACITOR_OVERCHARGE.ordinal()), new ItemStack(ModItems.ammo_standard, 64, EnumAmmo.CAPACITOR_OVERCHARGE.ordinal()) - ).setStackDisplayName("Frenchman's Reward"), Requirement.HIDDEN, 32)); + ).setStackDisplayName("Frenchie's Reward"), Requirement.HIDDEN, 32)); } public static List getOffers(ItemStack stack) { if(stack != null) { - - if(stack.getItem() == ModItems.bobmazon_materials) return materials; - if(stack.getItem() == ModItems.bobmazon_machines) return machines; - if(stack.getItem() == ModItems.bobmazon_weapons) return weapons; - if(stack.getItem() == ModItems.bobmazon_tools) return tools; + if(stack.getItem() == ModItems.bobmazon) return standard; if(stack.getItem() == ModItems.bobmazon_hidden) return special; } diff --git a/src/main/java/com/hbm/handler/CasingEjector.java b/src/main/java/com/hbm/handler/CasingEjector.java index 321aa8d71..5c27ac673 100644 --- a/src/main/java/com/hbm/handler/CasingEjector.java +++ b/src/main/java/com/hbm/handler/CasingEjector.java @@ -94,7 +94,7 @@ public class CasingEjector implements Cloneable { @SideOnly(Side.CLIENT) public void spawnCasing(TextureManager textureManager, SpentCasing config, World world, double x, double y, double z, float pitch, float yaw, boolean crouched) { Vec3 rotatedMotionVec = rotateVector(getMotion(), pitch + (float) rand.nextGaussian() * getPitchFactor(), yaw + (float) rand.nextGaussian() * getPitchFactor(), getPitchFactor(), getPitchFactor()); - ParticleSpentCasing casing = new ParticleSpentCasing(textureManager, world, x, y, z, rotatedMotionVec.xCoord, rotatedMotionVec.yCoord, rotatedMotionVec.zCoord, (float) (getPitchFactor() * rand.nextGaussian()), (float) (getYawFactor() * rand.nextGaussian()), config, false, 0, 0, 0); + ParticleSpentCasing casing = new ParticleSpentCasing(textureManager, world, x, y, z, rotatedMotionVec.xCoord, rotatedMotionVec.yCoord, rotatedMotionVec.zCoord, (float) (world.rand.nextGaussian() * 5F), (float) (world.rand.nextGaussian() * 10F), config, false, 0, 0, 0); offsetCasing(casing, getOffset(), pitch, yaw, crouched); diff --git a/src/main/java/com/hbm/handler/guncfg/GunCannonFactory.java b/src/main/java/com/hbm/handler/guncfg/GunCannonFactory.java index 411574bbe..13a68e433 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunCannonFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunCannonFactory.java @@ -13,7 +13,7 @@ public class GunCannonFactory { protected static SpentCasing CASINNG240MM; static { - CASINNG240MM = new SpentCasing(CasingType.BOTTLENECK).setScale(7.5F).setBounceMotion(0.02F, 0.05F).setColor(SpentCasing.COLOR_CASE_BRASS).setupSmoke(1F, 0.5D, 60, 20); + CASINNG240MM = new SpentCasing(CasingType.BOTTLENECK).setScale(7.5F).setBounceMotion(0.5F, 0.5F).setColor(SpentCasing.COLOR_CASE_BRASS).setupSmoke(1F, 0.5D, 60, 20); } public static BulletConfiguration getShellConfig() { diff --git a/src/main/java/com/hbm/handler/guncfg/GunDGKFactory.java b/src/main/java/com/hbm/handler/guncfg/GunDGKFactory.java index 240521609..f50897995 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunDGKFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunDGKFactory.java @@ -8,7 +8,7 @@ public class GunDGKFactory { public static final SpentCasing CASINGDGK; static { - CASINGDGK = new SpentCasing(CasingType.STRAIGHT).setScale(1.5F).setBounceMotion(0.05F, 0.02F).setColor(SpentCasing.COLOR_CASE_BRASS).register("DGK").setupSmoke(0.02F, 0.5D, 60, 20).setMaxAge(60); //3 instead of 12 seconds + CASINGDGK = new SpentCasing(CasingType.STRAIGHT).setScale(1.5F).setBounceMotion(1F, 0.5F).setColor(SpentCasing.COLOR_CASE_BRASS).register("DGK").setupSmoke(0.02F, 0.5D, 60, 20).setMaxAge(60); //3 instead of 12 seconds } /*public static BulletConfiguration getDGKConfig() { diff --git a/src/main/java/com/hbm/handler/nei/CrystallizerRecipeHandler.java b/src/main/java/com/hbm/handler/nei/CrystallizerRecipeHandler.java index a3789f8cd..39f76178a 100644 --- a/src/main/java/com/hbm/handler/nei/CrystallizerRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/CrystallizerRecipeHandler.java @@ -3,8 +3,13 @@ package com.hbm.handler.nei; import java.awt.Rectangle; import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.gui.GUICrystallizer; import com.hbm.inventory.recipes.CrystallizerRecipes; +import com.hbm.inventory.recipes.CrystallizerRecipes.CrystallizerRecipe; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; public class CrystallizerRecipeHandler extends NEIUniversalHandler { @@ -24,4 +29,19 @@ public class CrystallizerRecipeHandler extends NEIUniversalHandler { guiGui.add(GUICrystallizer.class); RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); } + + @Override + public void drawExtras(int recipe) { + + RecipeSet rec = (RecipeSet) this.arecipes.get(recipe); + + CrystallizerRecipe cRecipe = CrystallizerRecipes.getOutput(rec.input[1].item, Fluids.fromID(rec.input[0].item.getItemDamage())); + + if(cRecipe != null && cRecipe.productivity > 0) { + FontRenderer fontRenderer = Minecraft.getMinecraft().fontRenderer; + String momentum = "Effectiveness: +" + Math.min((int) (cRecipe.productivity * 100), 99) + "% per level"; + int side = 8; + fontRenderer.drawString(momentum, side, 52, 0x404040); + } + } } diff --git a/src/main/java/com/hbm/handler/nei/HadronRecipeHandler.java b/src/main/java/com/hbm/handler/nei/HadronRecipeHandler.java deleted file mode 100644 index b9325cd9c..000000000 --- a/src/main/java/com/hbm/handler/nei/HadronRecipeHandler.java +++ /dev/null @@ -1,164 +0,0 @@ -package com.hbm.handler.nei; - -import static codechicken.lib.gui.GuiDraw.drawTexturedModalRect; - -import java.awt.Rectangle; -import java.util.Arrays; -import java.util.LinkedList; -import java.util.List; -import java.util.Locale; - -import com.hbm.blocks.ModBlocks; -import com.hbm.handler.imc.ICompatNHNEI; -import com.hbm.inventory.gui.GUIHadron; -import com.hbm.inventory.recipes.HadronRecipes; -import com.hbm.inventory.recipes.HadronRecipes.HadronRecipe; -import com.hbm.lib.RefStrings; - -import codechicken.nei.NEIServerUtils; -import codechicken.nei.PositionedStack; -import codechicken.nei.recipe.TemplateRecipeHandler; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.item.ItemStack; - -public class HadronRecipeHandler extends TemplateRecipeHandler implements ICompatNHNEI { - - @Override - public ItemStack[] getMachinesForRecipe() { - return new ItemStack[]{ - new ItemStack(ModBlocks.hadron_core)}; - } - @Override - public String getRecipeID() { - return "hadron"; - } - public LinkedList transferRectsRec = new LinkedList(); - public LinkedList transferRectsGui = new LinkedList(); - public LinkedList> guiRec = new LinkedList>(); - public LinkedList> guiGui = new LinkedList>(); - - public class RecipeSet extends TemplateRecipeHandler.CachedRecipe { - - PositionedStack input1; - PositionedStack input2; - PositionedStack output1; - PositionedStack output2; - int momentum; - boolean analysisOnly; - - public RecipeSet(HadronRecipe recipe) { - - this.input1 = new PositionedStack(recipe.in1.toStack(), 12, 24); - this.input2 = new PositionedStack(recipe.in2.toStack(), 30, 24); - this.output1 = new PositionedStack(recipe.out1, 84, 24); - this.output2 = new PositionedStack(recipe.out2, 102, 24); - this.momentum = recipe.momentum; - this.analysisOnly = recipe.analysisOnly; - } - - @Override - public List getIngredients() { - return Arrays.asList(new PositionedStack[] { input1, input2 }); - } - - @Override - public List getOtherStacks() { - return Arrays.asList(new PositionedStack[] { output1, output2 }); - } - - @Override - public PositionedStack getResult() { - return output1; - } - } - - @Override - public String getRecipeName() { - return "Particle Accelerator"; - } - - @Override - public void loadCraftingRecipes(String outputId, Object... results) { - - if(outputId.equals("hadron") && getClass() == HadronRecipeHandler.class) { - - List recipes = HadronRecipes.getRecipes(); - - for(HadronRecipe recipe : recipes) { - this.arecipes.add(new RecipeSet(recipe)); - } - - } else { - super.loadCraftingRecipes(outputId, results); - } - } - - @Override - public void loadCraftingRecipes(ItemStack result) { - - List recipes = HadronRecipes.getRecipes(); - - for(HadronRecipe recipe : recipes) { - - if(NEIServerUtils.areStacksSameTypeCrafting(recipe.out1, result) || NEIServerUtils.areStacksSameTypeCrafting(recipe.out2, result)) { - this.arecipes.add(new RecipeSet(recipe)); - } - } - } - - @Override - public void loadUsageRecipes(String inputId, Object... ingredients) { - - if(inputId.equals("hadron") && getClass() == HadronRecipeHandler.class) { - loadCraftingRecipes("hadron", new Object[0]); - } else { - super.loadUsageRecipes(inputId, ingredients); - } - } - - @Override - public void loadUsageRecipes(ItemStack ingredient) { - - List recipes = HadronRecipes.getRecipes(); - - for(HadronRecipe recipe : recipes) { - - if(NEIServerUtils.areStacksSameTypeCrafting(recipe.in1.toStack(), ingredient) || NEIServerUtils.areStacksSameTypeCrafting(recipe.in2.toStack(), ingredient)) { - this.arecipes.add(new RecipeSet(recipe)); - } - } - } - - @Override - public void loadTransferRects() { - transferRectsGui = new LinkedList(); - guiGui = new LinkedList>(); - - transferRects.add(new RecipeTransferRect(new Rectangle(58 - 5, 34 - 11, 24, 18), "hadron")); - transferRectsGui.add(new RecipeTransferRect(new Rectangle(72 - 5, 28 - 11, 30, 30), "hadron")); - guiGui.add(GUIHadron.class); - RecipeTransferRectHandler.registerRectsToGuis(getRecipeTransferRectGuis(), transferRects); - RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); - } - - @Override - public void drawExtras(int recipe) { - - RecipeSet rec = (RecipeSet) this.arecipes.get(recipe); - - if(rec.analysisOnly) - drawTexturedModalRect(128, 23, 0, 86, 18, 18); - - FontRenderer fontRenderer = Minecraft.getMinecraft().fontRenderer; - - String mom = String.format(Locale.US, "%,d", rec.momentum); - fontRenderer.drawString(mom, -fontRenderer.getStringWidth(mom) / 2 + 30, 42, 0x404040); - } - - @Override - public String getGuiTexture() { - return RefStrings.MODID + ":textures/gui/nei/gui_nei_hadron.png"; - } -} diff --git a/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java b/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java index 2b8eeed8b..d82303b6c 100644 --- a/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java +++ b/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java @@ -106,8 +106,8 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler implemen @Override public List getOtherStacks() { List other = new ArrayList(); - for(PositionedStack pos : output) { - other.add(pos); + for(int i = 1; i < output.length; i++) { + other.add(output[i]); } other.add(machinePositioned); return getCycledIngredients(cycleticks / 20, other); diff --git a/src/main/java/com/hbm/handler/nei/SatelliteHandler.java b/src/main/java/com/hbm/handler/nei/SatelliteHandler.java new file mode 100644 index 000000000..7206b10b2 --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/SatelliteHandler.java @@ -0,0 +1,178 @@ +package com.hbm.handler.nei; + +import codechicken.nei.NEIServerUtils; +import codechicken.nei.PositionedStack; +import codechicken.nei.recipe.TemplateRecipeHandler; +import com.hbm.blocks.ModBlocks; +import com.hbm.handler.imc.ICompatNHNEI; +import com.hbm.itempool.ItemPool; +import com.hbm.itempool.ItemPoolsSatellite; +import com.hbm.items.ModItems; +import com.hbm.lib.RefStrings; +import com.hbm.saveddata.satellites.SatelliteMiner; +import com.hbm.util.ItemStackUtil; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.WeightedRandomChestContent; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import static codechicken.lib.gui.GuiDraw.drawTexturedModalRect; + +public class SatelliteHandler extends TemplateRecipeHandler implements ICompatNHNEI { + @Override + public ItemStack[] getMachinesForRecipe() { + return new ItemStack[] { + new ItemStack(ModBlocks.sat_dock) + }; + } + + @Override + public String getRecipeID() { + return "ntmSatellite"; + } + + @Override + public String getRecipeName() { + return "Satellite"; + } + + @Override + public String getGuiTexture() { + return RefStrings.MODID + ":textures/gui/nei/gui_nei_anvil.png"; + } + + @Override + public void loadCraftingRecipes(String outputId, Object... results) { + if(outputId.equals("ntmSatellite")) { + for(Item satelliteItem : new Item[]{ModItems.sat_miner, ModItems.sat_lunar_miner}) { + String poolName = SatelliteMiner.getCargoForItem(satelliteItem); + if(poolName == null) { + continue; + } + this.addRecipeToList(satelliteItem, ItemPool.getPool(poolName)); + } + } else { + super.loadCraftingRecipes(outputId, results); + } + } + + @Override + public void loadCraftingRecipes(ItemStack result) { + for(Item satelliteItem : new Item[]{ModItems.sat_miner, ModItems.sat_lunar_miner}) { + String poolName = SatelliteMiner.getCargoForItem(satelliteItem); + if(poolName == null) { + continue; + } + WeightedRandomChestContent[] pool = ItemPool.getPool(poolName); + for(WeightedRandomChestContent poolEntry : pool) { + if(NEIServerUtils.areStacksSameTypeCrafting(poolEntry.theItemId, result)) { + this.addRecipeToList(satelliteItem, pool); + break; + } + } + } + } + + @Override + public void loadUsageRecipes(String inputId, Object... ingredients) { + if(inputId.equals("ntmSatellite")) { + loadCraftingRecipes("ntmSatellite"); + } else { + super.loadUsageRecipes(inputId, ingredients); + } + } + + @Override + public void loadUsageRecipes(ItemStack ingredient) { + if(ingredient.getItem() == ModItems.sat_miner) { + this.addRecipeToList(ModItems.sat_miner, ItemPool.getPool(ItemPoolsSatellite.POOL_SAT_MINER)); + } else if(ingredient.getItem() == ModItems.sat_lunar_miner) { + this.addRecipeToList(ModItems.sat_lunar_miner, ItemPool.getPool(ItemPoolsSatellite.POOL_SAT_LUNAR)); + } + } + + + private void addRecipeToList(Item poolItem, WeightedRandomChestContent[] poolEntries) { + List outs = new ArrayList<>(); + int weight = Arrays.stream(poolEntries).mapToInt(poolEntry -> poolEntry.itemWeight).sum(); + + for(WeightedRandomChestContent poolEntry : poolEntries) { + ItemStack stack = poolEntry.theItemId.copy(); + + float chance = 100F * poolEntry.itemWeight / weight; + ItemStackUtil.addTooltipToStack(stack, EnumChatFormatting.RED + "" + ((int)(chance * 10F) / 10F) + "%"); + + outs.add(stack); + } + + this.arecipes.add(new RecipeSet(new ItemStack(poolItem), outs)); + } + + @Override + public void drawBackground(int recipe) { + super.drawBackground(recipe); + + drawTexturedModalRect(11, 23, 113, 105, 18, 18); //in + drawTexturedModalRect(47, 5, 5, 87, 108, 54); //out + drawTexturedModalRect(29, 14, 131, 96, 18, 36); //operation + } + + public class RecipeSet extends TemplateRecipeHandler.CachedRecipe { + List input = new ArrayList<>(); + List output = new ArrayList<>(); + PositionedStack satelliteDock; + + public RecipeSet(Object in, List out) { + //not the prettiest of solutions but certainly the most pleasant to work with + int inLine = 1; + int outLine = 1; + int inOX = 0; + int inOY = 0; + int outOX = 0; + int outOY = 0; + int anvX = 0; + int anvY = 31; + + outLine = 6; + inOX = 12; + inOY = 24; + outOX = 48; + outOY = 6; + anvX = 30; + + this.input.add(new PositionedStack(in, inOX, inOY)); + + int overflowCount = out.size() / 18; + for(int i = 0; i < Math.min(out.size(), 18); i++) { + ItemStack[] stacks = new ItemStack[overflowCount + 1]; + for(int j = 0; j < overflowCount + 1 && j * 18 + i < out.size(); j++) { + stacks[j] = out.get(j * 18 + i); + } + this.output.add(new PositionedStack(stacks, outOX + 18 * (i % outLine), outOY + 18 * (i / outLine))); + } + + this.satelliteDock = new PositionedStack(new ItemStack(ModBlocks.sat_dock), anvX, anvY); + } + + @Override + public List getIngredients() { + return getCycledIngredients(cycleticks / 20, input); + } + + @Override + public PositionedStack getResult() { + return output.get(0); + } + + @Override + public List getOtherStacks() { + ArrayList stacks = new ArrayList<>(output); + stacks.add(satelliteDock); + return getCycledIngredients(cycleticks / 20, stacks); + } + } +} diff --git a/src/main/java/com/hbm/handler/neutron/NeutronHandler.java b/src/main/java/com/hbm/handler/neutron/NeutronHandler.java index efc536f2e..d05472427 100644 --- a/src/main/java/com/hbm/handler/neutron/NeutronHandler.java +++ b/src/main/java/com/hbm/handler/neutron/NeutronHandler.java @@ -1,13 +1,10 @@ package com.hbm.handler.neutron; import com.hbm.tileentity.machine.rbmk.RBMKDials; -import com.hbm.util.fauxpointtwelve.BlockPos; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.TickEvent; import net.minecraft.world.World; -import java.util.ArrayList; -import java.util.List; import java.util.Map; @@ -21,20 +18,16 @@ public class NeutronHandler { if(event.phase != TickEvent.Phase.START) return; + // Freshen the node cache every `cacheTime` ticks to prevent huge RAM usage from idle nodes. + int cacheTime = 20; + boolean cacheClear = ticks >= cacheTime; + if(cacheClear) ticks = 0; + ticks++; + // Remove `StreamWorld` objects if they have no streams. - { // aflghdkljghlkbhfjkghgilurbhlkfjghkffdjgn - List toRemove = new ArrayList<>(); - NeutronNodeWorld.streamWorlds.forEach((world, streamWorld) -> { - if (streamWorld.streams.isEmpty()) - toRemove.add(world); - }); + NeutronNodeWorld.removeEmptyWorlds(); - for (World world : toRemove) { - NeutronNodeWorld.streamWorlds.remove(world); - } - } - - for (Map.Entry world : NeutronNodeWorld.streamWorlds.entrySet()) { + for(Map.Entry world : NeutronNodeWorld.streamWorlds.entrySet()) { // Gamerule caching because this apparently is kinda slow? // meh, good enough @@ -48,33 +41,10 @@ public class NeutronHandler { RBMKNeutronHandler.columnHeight = RBMKDials.getColumnHeight(world.getKey()) + 1; RBMKNeutronHandler.fluxRange = RBMKDials.getFluxRange(world.getKey()); - for (NeutronStream stream : world.getValue().streams) { - stream.runStreamInteraction(world.getKey()); - } + world.getValue().runStreamInteractions(world.getKey()); world.getValue().removeAllStreams(); + + if(cacheClear) world.getValue().cleanNodes(); } - - // Freshen the node cache every `cacheTime` ticks to prevent huge RAM usage from idle nodes. - int cacheTime = 20; - if (ticks >= cacheTime) { - ticks = 0; - List toRemove = new ArrayList<>(); - for (NeutronNode cachedNode : NeutronNodeWorld.nodeCache.values()) { - if (cachedNode.type == NeutronStream.NeutronType.RBMK) { - RBMKNeutronHandler.RBMKNeutronNode node = (RBMKNeutronHandler.RBMKNeutronNode) cachedNode; - toRemove.addAll(node.checkNode()); - } - /* TODO: actually do this and uncache pile nodes - if (cachedNode.type == NeutronStream.NeutronType.PILE) { - PileNeutronNode node = (PileNeutronNode) cachedNode; - toRemove.addAll(node.checkNode()); - } - */ - } - - toRemove.forEach(NeutronNodeWorld::removeNode); - - } - ticks++; } } diff --git a/src/main/java/com/hbm/handler/neutron/NeutronNodeWorld.java b/src/main/java/com/hbm/handler/neutron/NeutronNodeWorld.java index 1f544ae7f..8ebe8a521 100644 --- a/src/main/java/com/hbm/handler/neutron/NeutronNodeWorld.java +++ b/src/main/java/com/hbm/handler/neutron/NeutronNodeWorld.java @@ -8,55 +8,97 @@ import java.util.HashMap; import java.util.List; public class NeutronNodeWorld { - // HashMap of all neutron nodes and their positions. - protected static HashMap nodeCache = new HashMap<>(); - - public static void addNode(NeutronNode node) { - nodeCache.put(node.pos, node); - } - - public static void removeNode(BlockPos position) { - nodeCache.remove(position); - } - - public static NeutronNode getNode(BlockPos position) { - return nodeCache.get(position); - } - - public static void removeAllNodes() { - nodeCache.clear(); - } // List of all stream worlds. public static HashMap streamWorlds = new HashMap<>(); - public static class StreamWorld { + public static NeutronNode getNode(World world, BlockPos pos) { + StreamWorld streamWorld = streamWorlds.get(world); + return streamWorld != null ? streamWorld.nodeCache.get(pos) : null; + } - List streams; + public static void removeNode(World world, BlockPos pos) { + StreamWorld streamWorld = streamWorlds.get(world); + if(streamWorld == null) return; + streamWorld.removeNode(pos); + } - public StreamWorld() { - streams = new ArrayList<>(); - } - - public void addStream(NeutronStream stream) { - this.streams.add(stream); - } - - public void removeAllStreams() { - this.streams.clear(); - } - - public void removeAllStreamsOfType(NeutronStream.NeutronType type) { - List toRemove = new ArrayList<>(); - for (NeutronStream stream : streams) { - if (stream.type == type) - toRemove.add(stream); - } - toRemove.forEach((stream) -> streams.remove(stream)); + public static StreamWorld getOrAddWorld(World world) { + StreamWorld streamWorld = streamWorlds.get(world); + if(streamWorld == null) { + streamWorld = new StreamWorld(); + streamWorlds.put(world, streamWorld); } + return streamWorld; } public static void removeAllWorlds() { streamWorlds.clear(); } + + public static void removeEmptyWorlds() { + streamWorlds.values().removeIf((streamWorld) -> { + return streamWorld.streams.isEmpty(); + }); + } + + public static class StreamWorld { + + private List streams; + private HashMap nodeCache = new HashMap<>(); + + public StreamWorld() { + streams = new ArrayList<>(); + } + + public void runStreamInteractions(World world) { + for(NeutronStream stream : streams) { + stream.runStreamInteraction(world, this); + } + } + + public void addStream(NeutronStream stream) { + streams.add(stream); + } + + public void removeAllStreams() { + streams.clear(); + } + + public void cleanNodes() { + List toRemove = new ArrayList<>(); + for(NeutronNode cachedNode : nodeCache.values()) { + if(cachedNode.type == NeutronStream.NeutronType.RBMK) { + RBMKNeutronHandler.RBMKNeutronNode node = (RBMKNeutronHandler.RBMKNeutronNode) cachedNode; + toRemove.addAll(node.checkNode(this)); + } + /* TODO: actually do this and uncache pile nodes + if(cachedNode.type == NeutronStream.NeutronType.PILE) { + PileNeutronNode node = (PileNeutronNode) cachedNode; + toRemove.addAll(node.checkNode()); + } + */ + } + + for(BlockPos pos : toRemove) { + nodeCache.remove(pos); + } + } + + public NeutronNode getNode(BlockPos pos) { + return nodeCache.get(pos); + } + + public void addNode(NeutronNode node) { + nodeCache.put(node.pos, node); + } + + public void removeNode(BlockPos pos) { + nodeCache.remove(pos); + } + + public void removeAllStreamsOfType(NeutronStream.NeutronType type) { + streams.removeIf(stream -> stream.type == type); + } + } } diff --git a/src/main/java/com/hbm/handler/neutron/NeutronStream.java b/src/main/java/com/hbm/handler/neutron/NeutronStream.java index 7de1cc4aa..5f887cb4a 100644 --- a/src/main/java/com/hbm/handler/neutron/NeutronStream.java +++ b/src/main/java/com/hbm/handler/neutron/NeutronStream.java @@ -1,9 +1,9 @@ package com.hbm.handler.neutron; +import com.hbm.handler.neutron.NeutronNodeWorld.StreamWorld; import com.hbm.util.fauxpointtwelve.BlockPos; import net.minecraft.util.Vec3; import net.minecraft.world.World; -import com.hbm.handler.neutron.NeutronNodeWorld.StreamWorld; import java.util.Iterator; @@ -43,13 +43,8 @@ public abstract class NeutronStream { this.fluxQuantity = flux; this.fluxRatio = ratio; this.type = type; - World worldObj = origin.tile.getWorldObj(); - if (NeutronNodeWorld.streamWorlds.get(worldObj) == null) { - StreamWorld world = new StreamWorld(); - world.addStream(this); - NeutronNodeWorld.streamWorlds.put(worldObj, world); - } else - NeutronNodeWorld.streamWorlds.get(worldObj).addStream(this); + + NeutronNodeWorld.getOrAddWorld(origin.tile.getWorldObj()).addStream(this); } protected BlockPos posInstance; @@ -78,5 +73,5 @@ public abstract class NeutronStream { }; } - public abstract void runStreamInteraction(World worldObj); + public abstract void runStreamInteraction(World worldObj, StreamWorld streamWorld); } diff --git a/src/main/java/com/hbm/handler/neutron/PileNeutronHandler.java b/src/main/java/com/hbm/handler/neutron/PileNeutronHandler.java index 56913bc91..50b9af133 100644 --- a/src/main/java/com/hbm/handler/neutron/PileNeutronHandler.java +++ b/src/main/java/com/hbm/handler/neutron/PileNeutronHandler.java @@ -2,6 +2,7 @@ package com.hbm.handler.neutron; import api.hbm.block.IPileNeutronReceiver; import com.hbm.blocks.ModBlocks; +import com.hbm.handler.neutron.NeutronNodeWorld.StreamWorld; import com.hbm.tileentity.machine.pile.TileEntityPileBase; import com.hbm.util.ContaminationUtil; import com.hbm.util.fauxpointtwelve.BlockPos; @@ -26,11 +27,10 @@ public class PileNeutronHandler { } - public static PileNeutronNode makeNode(TileEntityPileBase tile) { + public static PileNeutronNode makeNode(StreamWorld streamWorld, TileEntityPileBase tile) { BlockPos pos = new BlockPos(tile); - if (NeutronNodeWorld.nodeCache.containsKey(pos)) - return (PileNeutronNode) NeutronNodeWorld.getNode(pos); - return new PileNeutronNode(tile); + PileNeutronNode node = (PileNeutronNode) streamWorld.getNode(pos); + return node != null ? node : new PileNeutronNode(tile); } private static TileEntity blockPosToTE(World worldObj, BlockPos pos) { @@ -43,35 +43,38 @@ public class PileNeutronHandler { super(origin, vector, flux, 0D, NeutronType.PILE); } + @SuppressWarnings("unchecked") @Override - public void runStreamInteraction(World worldObj) { + public void runStreamInteraction(World worldObj, StreamWorld streamWorld) { TileEntityPileBase originTE = (TileEntityPileBase) origin.tile; BlockPos pos = new BlockPos(originTE); for(float i = 1; i <= range; i += 0.5F) { - BlockPos node = new BlockPos( + BlockPos nodePos = new BlockPos( (int)Math.floor(pos.getX() + 0.5 + vector.xCoord * i), (int)Math.floor(pos.getY() + 0.5 + vector.yCoord * i), (int)Math.floor(pos.getZ() + 0.5 + vector.zCoord * i) ); - if(node.equals(pos)) + if(nodePos.equals(pos)) continue; // don't interact with itself! - pos.mutate(node.getX(), node.getY(), node.getZ()); + pos.mutate(nodePos.getX(), nodePos.getY(), nodePos.getZ()); TileEntity tile; - if (NeutronNodeWorld.nodeCache.containsKey(node)) - tile = NeutronNodeWorld.nodeCache.get(node).tile; - else { - tile = blockPosToTE(worldObj, node); - if (tile == null) - return; // Doesn't exist! - if (tile instanceof TileEntityPileBase) - NeutronNodeWorld.addNode(new PileNeutronNode((TileEntityPileBase) tile)); + NeutronNode node = streamWorld.getNode(nodePos); + if(node != null && node instanceof PileNeutronNode) { + tile = node.tile; + } else { + tile = blockPosToTE(worldObj, nodePos); + if(tile == null) return; + + if(tile instanceof TileEntityPileBase) { + streamWorld.addNode(new PileNeutronNode((TileEntityPileBase) tile)); + } } Block block = tile.getBlockType(); @@ -79,17 +82,17 @@ public class PileNeutronHandler { if(!(tile instanceof TileEntityPileBase)) { // Return when a boron block is hit - if (block == ModBlocks.block_boron) + if(block == ModBlocks.block_boron) return; - else if (block == ModBlocks.concrete || + else if(block == ModBlocks.concrete || block == ModBlocks.concrete_smooth || block == ModBlocks.concrete_asbestos || block == ModBlocks.concrete_colored || block == ModBlocks.brick_concrete) fluxQuantity *= 0.25; - if (block == ModBlocks.block_graphite_rod && (meta & 8) == 0) + if(block == ModBlocks.block_graphite_rod && (meta & 8) == 0) return; } @@ -102,9 +105,9 @@ public class PileNeutronHandler { return; } - int x = (int) (node.getX() + 0.5); - int y = (int) (node.getY() + 0.5); - int z = (int) (node.getZ() + 0.5); + int x = (int) (nodePos.getX() + 0.5); + int y = (int) (nodePos.getY() + 0.5); + int z = (int) (nodePos.getZ() + 0.5); List entities = worldObj.getEntitiesWithinAABB(EntityLivingBase.class, AxisAlignedBB.getBoundingBox(x, y, z, x, y, z)); if(entities != null) diff --git a/src/main/java/com/hbm/handler/neutron/RBMKNeutronHandler.java b/src/main/java/com/hbm/handler/neutron/RBMKNeutronHandler.java index 3b78af0e1..dfe595599 100644 --- a/src/main/java/com/hbm/handler/neutron/RBMKNeutronHandler.java +++ b/src/main/java/com/hbm/handler/neutron/RBMKNeutronHandler.java @@ -1,6 +1,7 @@ package com.hbm.handler.neutron; import com.hbm.blocks.machine.rbmk.RBMKBase; +import com.hbm.handler.neutron.NeutronNodeWorld.StreamWorld; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.tileentity.machine.rbmk.*; import com.hbm.util.fauxpointtwelve.BlockPos; @@ -37,11 +38,10 @@ public class RBMKNeutronHandler { return worldObj.getTileEntity(pos.getX(), pos.getY(), pos.getZ()); } - public static RBMKNeutronNode makeNode(TileEntityRBMKBase tile) { + public static RBMKNeutronNode makeNode(StreamWorld streamWorld, TileEntityRBMKBase tile) { BlockPos pos = new BlockPos(tile); - if (NeutronNodeWorld.nodeCache.containsKey(pos)) - return (RBMKNeutronNode) NeutronNodeWorld.getNode(pos); - return new RBMKNeutronNode(tile, tile.getRBMKType(), tile.hasLid()); + RBMKNeutronNode node = (RBMKNeutronNode) streamWorld.getNode(pos); + return node != null ? node : new RBMKNeutronNode(tile, tile.getRBMKType(), tile.hasLid()); } public static class RBMKNeutronNode extends NeutronNode { @@ -79,16 +79,16 @@ public class RBMKNeutronHandler { @Override public BlockPos next() { - if (Math.pow(x, 2) + Math.pow(z, 2) <= fluxRange * fluxRange) { + if(Math.pow(x, 2) + Math.pow(z, 2) <= fluxRange * fluxRange) { z++; - if (z > fluxRange) { + if(z > fluxRange) { z = -fluxRange; x++; } return posInstance.mutate(tile.xCoord + x, tile.yCoord, tile.zCoord + z); } else { z++; - if (z > fluxRange) { + if(z > fluxRange) { z = -fluxRange; x++; } @@ -98,7 +98,7 @@ public class RBMKNeutronHandler { }; } - public List checkNode() { + public List checkNode(StreamWorld streamWorld) { List list = new ArrayList<>(); BlockPos pos = new BlockPos(this.tile); @@ -107,18 +107,18 @@ public class RBMKNeutronHandler { // Simulate streams coming out of the RBMK rod. ForgeDirection[] fluxDirs = TileEntityRBMKRod.fluxDirs; - for (int i = 0; i < fluxDirs.length; i++) { + for(int i = 0; i < fluxDirs.length; i++) { streams[i] = (new RBMKNeutronStream(this, Vec3.createVectorHelper(fluxDirs[i].offsetX, 0, fluxDirs[i].offsetZ))); } // Check if the rod should uncache nodes. - if (tile instanceof TileEntityRBMKRod && !(tile instanceof TileEntityRBMKRodReaSim)) { + if(tile instanceof TileEntityRBMKRod && !(tile instanceof TileEntityRBMKRodReaSim)) { TileEntityRBMKRod rod = (TileEntityRBMKRod) tile; - if (!rod.hasRod || rod.lastFluxQuantity == 0) { + if(!rod.hasRod || rod.lastFluxQuantity == 0) { - for (RBMKNeutronStream stream : streams) { - for(RBMKNeutronNode node : stream.getNodes(false)) - if (node != null) + for(RBMKNeutronStream stream : streams) { + for(NeutronNode node : stream.getNodes(streamWorld, false)) + if(node != null) list.add(new BlockPos(node.tile)); } @@ -130,11 +130,11 @@ public class RBMKNeutronHandler { Iterator reaSimNodes = getReaSimNodes(); // Check if the ReaSim rod should be culled from the cache due to no rod or no flux. - if (tile instanceof TileEntityRBMKRodReaSim) { // fuckkkkkkk + if(tile instanceof TileEntityRBMKRodReaSim) { // fuckkkkkkk TileEntityRBMKRodReaSim rod = (TileEntityRBMKRodReaSim) tile; - if (!rod.hasRod || rod.lastFluxQuantity == 0) { + if(!rod.hasRod || rod.lastFluxQuantity == 0) { reaSimNodes.forEachRemaining((a) -> { - if (a != null) + if(a != null) list.add(a.clone()); // ae The RAM usage will be really high here but hopefully the GC can take care of it :pray: }); return list; @@ -155,32 +155,32 @@ public class RBMKNeutronHandler { if(nodePos == null) continue; - NeutronNode node = NeutronNodeWorld.nodeCache.get(nodePos); + NeutronNode node = streamWorld.getNode(nodePos); - if (node != null && node.tile instanceof TileEntityRBMKRod) { + if(node != null && node.tile instanceof TileEntityRBMKRod) { TileEntityRBMKRod rod = (TileEntityRBMKRod) node.tile; - if (rod.hasRod && rod.lastFluxQuantity > 0) { + if(rod.hasRod && rod.lastFluxQuantity > 0) { hasRod = true; break; } } } - if (!hasRod) { + if(!hasRod) { list.add(pos); return list; } } // Check if non-rod nodes should be uncached due to no rod in range. - for (RBMKNeutronStream stream : streams) { + for(RBMKNeutronStream stream : streams) { - RBMKNeutronNode[] nodes = stream.getNodes(false); + NeutronNode[] nodes = stream.getNodes(streamWorld, false); - for (RBMKNeutronNode node : nodes) { - if (!(node == null) && node.tile instanceof TileEntityRBMKRod) + for(NeutronNode node : nodes) { + if(!(node == null) && node.tile instanceof TileEntityRBMKRod) return list; } } @@ -209,28 +209,28 @@ public class RBMKNeutronHandler { // Does NOT include the origin node // USES THE CACHE!!! - public RBMKNeutronNode[] getNodes(boolean addNode) { - RBMKNeutronNode[] positions = new RBMKNeutronNode[fluxRange]; + public NeutronNode[] getNodes(StreamWorld streamWorld, boolean addNode) { + NeutronNode[] positions = new RBMKNeutronNode[fluxRange]; BlockPos pos = new BlockPos(origin.tile); + World world = origin.tile.getWorldObj(); - for (int i = 1; i <= fluxRange; i++) { + for(int i = 1; i <= fluxRange; i++) { int x = (int) Math.floor(0.5 + vector.xCoord * i); int z = (int) Math.floor(0.5 + vector.zCoord * i); pos.mutate(origin.tile.xCoord + x, origin.tile.yCoord, origin.tile.zCoord + z); - if (NeutronNodeWorld.nodeCache.containsKey(pos)) - positions[i - 1] = (RBMKNeutronNode) NeutronNodeWorld.getNode(pos); - - else if (this.origin.tile.getBlockType() instanceof RBMKBase) { - TileEntity te = blockPosToTE(this.origin.tile.getWorldObj(), pos); - if (te instanceof TileEntityRBMKBase) { + NeutronNode node = streamWorld.getNode(pos); + if(node != null && node instanceof RBMKNeutronNode) { + positions[i - 1] = node; + } else if(this.origin.tile.getBlockType() instanceof RBMKBase) { + TileEntity te = blockPosToTE(world, pos); + if(te instanceof TileEntityRBMKBase) { TileEntityRBMKBase rbmkBase = (TileEntityRBMKBase) te; - RBMKNeutronNode node = makeNode(rbmkBase); + node = makeNode(streamWorld, rbmkBase); positions[i - 1] = node; - if (addNode) - NeutronNodeWorld.addNode(node); + if(addNode) streamWorld.addNode(node); } } } @@ -238,23 +238,24 @@ public class RBMKNeutronHandler { } // The... small one? whatever it's still pretty big, runs the interaction for the stream. - public void runStreamInteraction(World worldObj) { + public void runStreamInteraction(World worldObj, StreamWorld streamWorld) { // do nothing if there's nothing to do lmao - if (fluxQuantity == 0D) + if(fluxQuantity == 0D) return; BlockPos pos = new BlockPos(origin.tile); TileEntityRBMKBase originTE; - if (NeutronNodeWorld.nodeCache.containsKey(pos)) - originTE = (TileEntityRBMKBase) NeutronNodeWorld.nodeCache.get(pos).tile; - else { + NeutronNode node = streamWorld.getNode(pos); + if(node != null) { + originTE = (TileEntityRBMKBase) node.tile; + } else { originTE = (TileEntityRBMKBase) blockPosToTE(worldObj, pos); - if (originTE == null) - return; // Doesn't exist anymore! - NeutronNodeWorld.addNode(new RBMKNeutronNode(originTE, originTE.getRBMKType(), originTE.hasLid())); + if(originTE == null) return; // Doesn't exist anymore! + + streamWorld.addNode(new RBMKNeutronNode(originTE, originTE.getRBMKType(), originTE.hasLid())); } int moderatedCount = 0; @@ -263,23 +264,22 @@ public class RBMKNeutronHandler { while(iterator.hasNext()) { - BlockPos nodePos = iterator.next(); + BlockPos targetPos = iterator.next(); - if (fluxQuantity == 0D) // Whoops, used it all up! + if(fluxQuantity == 0D) // Whoops, used it all up! return; - RBMKNeutronNode node; - - if (!NeutronNodeWorld.nodeCache.containsKey(nodePos)) { - TileEntity te = blockPosToTE(worldObj, nodePos); // ok, maybe it didn't get added to the list somehow?? - if (te instanceof TileEntityRBMKBase) { - node = makeNode((TileEntityRBMKBase) te); - NeutronNodeWorld.addNode(node); // whoops! + NeutronNode targetNode = streamWorld.getNode(targetPos); + if(targetNode == null) { + TileEntity te = blockPosToTE(worldObj, targetPos); // ok, maybe it didn't get added to the list somehow?? + if(te instanceof TileEntityRBMKBase) { + targetNode = makeNode(streamWorld, (TileEntityRBMKBase) te); + streamWorld.addNode(targetNode); // whoops! } else { - int hits = getHits(nodePos); // Get the amount of hits on blocks. - if (hits == columnHeight) // If stream is fully blocked. + int hits = getHits(targetPos); // Get the amount of hits on blocks. + if(hits == columnHeight) // If stream is fully blocked. return; - else if (hits > 0) { // If stream is partially blocked. + else if(hits > 0) { // If stream is partially blocked. irradiateFromFlux(pos, hits); fluxQuantity *= 1 - ((double) hits / columnHeight); // Inverse to get partial blocking by blocks. continue; @@ -290,81 +290,79 @@ public class RBMKNeutronHandler { } } - node = (RBMKNeutronNode) NeutronNodeWorld.nodeCache.get(nodePos); + RBMKType type = (RBMKType) targetNode.data.get("type"); - RBMKType type = (RBMKType) node.data.get("type"); - - if (type == RBMKType.OTHER) // pass right on by! + if(type == RBMKType.OTHER || type == null) // pass right on by! continue; // we established earlier during `getNodes()` that they should all be RBMKBase TEs // no issue with casting here! - TileEntityRBMKBase nodeTE = (TileEntityRBMKBase) node.tile; + TileEntityRBMKBase nodeTE = (TileEntityRBMKBase) targetNode.tile; - if (!(boolean) node.data.get("hasLid")) - ChunkRadiationManager.proxy.incrementRad(worldObj, nodePos.getX(), nodePos.getY(), nodePos.getZ(), (float) (this.fluxQuantity * 0.05F)); + if(!(boolean) targetNode.data.get("hasLid")) + ChunkRadiationManager.proxy.incrementRad(worldObj, targetPos.getX(), targetPos.getY(), targetPos.getZ(), (float) (this.fluxQuantity * 0.05F)); - if (type == RBMKType.MODERATOR || nodeTE.isModerated()) { + if(type == RBMKType.MODERATOR || nodeTE.isModerated()) { moderatedCount++; moderateStream(); } - if (nodeTE instanceof IRBMKFluxReceiver) { + if(nodeTE instanceof IRBMKFluxReceiver) { IRBMKFluxReceiver column = (IRBMKFluxReceiver) nodeTE; - if (type == RBMKType.ROD) { + if(type == RBMKType.ROD) { TileEntityRBMKRod rod = (TileEntityRBMKRod) column; - if (rod.hasRod) { + if(rod.hasRod) { rod.receiveFlux(this); return; } - } else if (type == RBMKType.OUTGASSER) { + } else if(type == RBMKType.OUTGASSER) { TileEntityRBMKOutgasser outgasser = ((TileEntityRBMKOutgasser) column); - if (outgasser.canProcess()) { + if(outgasser.canProcess()) { column.receiveFlux(this); return; } } - } else if (type == RBMKType.CONTROL_ROD) { + } else if(type == RBMKType.CONTROL_ROD) { TileEntityRBMKControl rod = (TileEntityRBMKControl) nodeTE; - if (rod.level > 0.0D) { + if(rod.level > 0.0D) { this.fluxQuantity *= rod.getMult(); continue; } return; - } else if (type == RBMKType.REFLECTOR) { + } else if(type == RBMKType.REFLECTOR) { - if (((TileEntityRBMKBase) this.origin.tile).isModerated()) + if(((TileEntityRBMKBase) this.origin.tile).isModerated()) moderatedCount++; - if (this.fluxRatio > 0 && moderatedCount > 0) - for (int i = 0; i < moderatedCount; i++) + if(this.fluxRatio > 0 && moderatedCount > 0) + for(int i = 0; i < moderatedCount; i++) moderateStream(); - if (reflectorEfficiency != 1.0D) { + if(reflectorEfficiency != 1.0D) { this.fluxQuantity *= reflectorEfficiency; continue; } ((TileEntityRBMKRod) originTE).receiveFlux(this); return; - } else if (type == RBMKType.ABSORBER) { - if (absorberEfficiency == 1) + } else if(type == RBMKType.ABSORBER) { + if(absorberEfficiency == 1) return; this.fluxQuantity *= absorberEfficiency; } } - RBMKNeutronNode[] nodes = getNodes(true); + NeutronNode[] nodes = getNodes(streamWorld, true); - RBMKNeutronNode lastNode = nodes[(nodes.length - 1)]; + NeutronNode lastNode = nodes[(nodes.length - 1)]; if(lastNode == null) { // This implies that there was *no* last node, meaning either way it was never caught. // There is really no good way to figure out where exactly it should irradiate, so just irradiate at the origin tile. @@ -374,9 +372,9 @@ public class RBMKNeutronHandler { RBMKType lastNodeType = (RBMKType) lastNode.data.get("type"); - if (lastNodeType == RBMKType.CONTROL_ROD) { + if(lastNodeType == RBMKType.CONTROL_ROD) { TileEntityRBMKControl rod = (TileEntityRBMKControl) lastNode.tile; - if (rod.getMult() > 0.0D) { + if(rod.getMult() > 0.0D) { this.fluxQuantity *= rod.getMult(); BlockPos posAfter = new BlockPos(lastNode.tile.xCoord + this.vector.xCoord, lastNode.tile.yCoord, lastNode.tile.zCoord + this.vector.zCoord); @@ -404,7 +402,7 @@ public class RBMKNeutronHandler { // I FUCKING HATE THIS // total count of bugs fixed attributed to this function: 14 Block block = origin.tile.getWorldObj().getBlock(pos.getX(), pos.getY() + h, pos.getZ()); - if (block.isOpaqueCube()) + if(block.isOpaqueCube()) hits += 1; } diff --git a/src/main/java/com/hbm/inventory/fluid/FluidType.java b/src/main/java/com/hbm/inventory/fluid/FluidType.java index f08ae979a..a0175fbd9 100644 --- a/src/main/java/com/hbm/inventory/fluid/FluidType.java +++ b/src/main/java/com/hbm/inventory/fluid/FluidType.java @@ -13,8 +13,10 @@ import com.hbm.inventory.fluid.trait.*; import com.hbm.inventory.fluid.trait.FluidTraitSimple.*; import com.hbm.lib.RefStrings; import com.hbm.render.util.EnumSymbol; +import com.hbm.uninos.INetworkProvider; import com.hbm.util.I18nUtil; +import api.hbm.fluidmk2.FluidNetMK2; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.tileentity.TileEntity; @@ -252,4 +254,8 @@ public class FluidType { public String name() { return this.stringId; } + + public INetworkProvider getNetworkProvider() { + return null; //TBI + } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIAutocrafter.java b/src/main/java/com/hbm/inventory/gui/GUIAutocrafter.java index 49ed13445..cc26020ab 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIAutocrafter.java +++ b/src/main/java/com/hbm/inventory/gui/GUIAutocrafter.java @@ -7,6 +7,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.interfaces.NotableComments; import com.hbm.inventory.container.ContainerAutocrafter; import com.hbm.lib.RefStrings; +import com.hbm.module.ModulePatternMatcher; import com.hbm.tileentity.machine.TileEntityMachineAutocrafter; import net.minecraft.client.Minecraft; @@ -41,16 +42,7 @@ public class GUIAutocrafter extends GuiInfoContainer { Slot slot = (Slot) this.inventorySlots.inventorySlots.get(i); if(this.isMouseOverSlot(slot, x, y) && diFurnace.matcher.modes[i] != null) { - - String label = EnumChatFormatting.YELLOW + ""; - - switch(diFurnace.matcher.modes[i]) { - case "exact": label += "Item and meta match"; break; - case "wildcard": label += "Item matches"; break; - default: label += "Ore dict key matches: " + diFurnace.matcher.modes[i]; break; - } - - this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", label }), x, y - 30); + this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", ModulePatternMatcher.getLabel(diFurnace.matcher.modes[i]) }), x, y - 30); } } diff --git a/src/main/java/com/hbm/inventory/gui/GUICounterTorch.java b/src/main/java/com/hbm/inventory/gui/GUICounterTorch.java index 6a066a684..8a27e27cf 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICounterTorch.java +++ b/src/main/java/com/hbm/inventory/gui/GUICounterTorch.java @@ -7,6 +7,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerCounterTorch; import com.hbm.lib.RefStrings; +import com.hbm.module.ModulePatternMatcher; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.network.TileEntityRadioTorchCounter; @@ -72,16 +73,7 @@ public class GUICounterTorch extends GuiInfoContainer { Slot slot = (Slot) this.inventorySlots.inventorySlots.get(i); if(this.isMouseOverSlot(slot, x, y) && counter.matcher.modes[i] != null) { - - String label = EnumChatFormatting.YELLOW + ""; - - switch(counter.matcher.modes[i]) { - case "exact": label += "Item and meta match"; break; - case "wildcard": label += "Item matches"; break; - default: label += "Ore dict key matches: " + counter.matcher.modes[i]; break; - } - - this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", label }), x, y - 30); + this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", ModulePatternMatcher.getLabel(counter.matcher.modes[i]) }), x, y - 30); } } } diff --git a/src/main/java/com/hbm/inventory/gui/GUICraneExtractor.java b/src/main/java/com/hbm/inventory/gui/GUICraneExtractor.java index 7e8f74ab0..18cd12019 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICraneExtractor.java +++ b/src/main/java/com/hbm/inventory/gui/GUICraneExtractor.java @@ -6,6 +6,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerCraneExtractor; import com.hbm.lib.RefStrings; +import com.hbm.module.ModulePatternMatcher; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.network.TileEntityCraneExtractor; @@ -41,16 +42,7 @@ public class GUICraneExtractor extends GuiInfoContainer { Slot slot = (Slot) this.inventorySlots.inventorySlots.get(i); if(this.isMouseOverSlot(slot, x, y) && ejector.matcher.modes[i] != null) { - - String label = EnumChatFormatting.YELLOW + ""; - - switch(ejector.matcher.modes[i]) { - case "exact": label += "Item and meta match"; break; - case "wildcard": label += "Item matches"; break; - default: label += "Ore dict key matches: " + ejector.matcher.modes[i]; break; - } - - this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", label }), x, y - 30); + this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", ModulePatternMatcher.getLabel(ejector.matcher.modes[i]) }), x, y - 30); } } } diff --git a/src/main/java/com/hbm/inventory/gui/GUICraneGrabber.java b/src/main/java/com/hbm/inventory/gui/GUICraneGrabber.java index 6bff412fc..641f7eba9 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICraneGrabber.java +++ b/src/main/java/com/hbm/inventory/gui/GUICraneGrabber.java @@ -6,6 +6,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerCraneGrabber; import com.hbm.lib.RefStrings; +import com.hbm.module.ModulePatternMatcher; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.network.TileEntityCraneGrabber; @@ -41,16 +42,7 @@ public class GUICraneGrabber extends GuiInfoContainer { Slot slot = (Slot) this.inventorySlots.inventorySlots.get(i); if(this.isMouseOverSlot(slot, x, y) && grabber.matcher.modes[i] != null) { - - String label = EnumChatFormatting.YELLOW + ""; - - switch(grabber.matcher.modes[i]) { - case "exact": label += "Item and meta match"; break; - case "wildcard": label += "Item matches"; break; - default: label += "Ore dict key matches: " + grabber.matcher.modes[i]; break; - } - - this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", label }), x, y - 30); + this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", ModulePatternMatcher.getLabel(grabber.matcher.modes[i]) }), x, y - 30); } } } diff --git a/src/main/java/com/hbm/inventory/gui/GUICraneRouter.java b/src/main/java/com/hbm/inventory/gui/GUICraneRouter.java index 77798355b..657a09736 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICraneRouter.java +++ b/src/main/java/com/hbm/inventory/gui/GUICraneRouter.java @@ -83,16 +83,7 @@ public class GUICraneRouter extends GuiInfoContainer { int index = i % 5; if(this.isMouseOverSlot(slot, x, y) && matcher.modes[index] != null) { - - String label = EnumChatFormatting.YELLOW + ""; - - switch(matcher.modes[index]) { - case "exact": label += "Item and meta match"; break; - case "wildcard": label += "Item matches"; break; - default: label += "Ore dict key matches: " + matcher.modes[index]; break; - } - - this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", label}), x, y - 30); + this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", ModulePatternMatcher.getLabel(matcher.modes[index])}), x, y - 30); } } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIDroneRequester.java b/src/main/java/com/hbm/inventory/gui/GUIDroneRequester.java index 4fec012e5..9010e1ce6 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIDroneRequester.java +++ b/src/main/java/com/hbm/inventory/gui/GUIDroneRequester.java @@ -6,6 +6,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerDroneRequester; import com.hbm.lib.RefStrings; +import com.hbm.module.ModulePatternMatcher; import com.hbm.tileentity.network.TileEntityDroneRequester; import net.minecraft.client.Minecraft; @@ -37,16 +38,7 @@ public class GUIDroneRequester extends GuiInfoContainer { Slot slot = (Slot) this.inventorySlots.inventorySlots.get(i); if(this.isMouseOverSlot(slot, x, y) && diFurnace.matcher.modes[i] != null) { - - String label = EnumChatFormatting.YELLOW + ""; - - switch(diFurnace.matcher.modes[i]) { - case "exact": label += "Item and meta match"; break; - case "wildcard": label += "Item matches"; break; - default: label += "Ore dict key matches: " + diFurnace.matcher.modes[i]; break; - } - - this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", label }), x, y - 30); + this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", ModulePatternMatcher.getLabel(diFurnace.matcher.modes[i]) }), x, y - 30); } } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineCustom.java b/src/main/java/com/hbm/inventory/gui/GUIMachineCustom.java index 2a02cd763..d106f3717 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineCustom.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineCustom.java @@ -10,6 +10,7 @@ import com.hbm.inventory.SlotPattern; import com.hbm.inventory.container.ContainerMachineCustom; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; +import com.hbm.module.ModulePatternMatcher; import com.hbm.tileentity.machine.TileEntityCustomMachine; import net.minecraft.client.Minecraft; @@ -44,16 +45,7 @@ public class GUIMachineCustom extends GuiInfoContainer { int tileIndex = slot.getSlotIndex(); if(this.isMouseOverSlot(slot, x, y) && slot instanceof SlotPattern && custom.matcher.modes[tileIndex - 10] != null) { - - String label = EnumChatFormatting.YELLOW + ""; - - switch(custom.matcher.modes[tileIndex - 10]) { - case "exact": label += "Item and meta match"; break; - case "wildcard": label += "Item matches"; break; - default: label += "Ore dict key matches: " + custom.matcher.modes[tileIndex - 10]; break; - } - - this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", label }), x, y - 30); + this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", ModulePatternMatcher.getLabel(custom.matcher.modes[tileIndex - 10]) }), x, y - 30); } } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenBobmazon.java b/src/main/java/com/hbm/inventory/gui/GUIScreenBobmazon.java index 14ed3b483..bd74622e5 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenBobmazon.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenBobmazon.java @@ -5,6 +5,7 @@ import java.util.Arrays; import java.util.List; import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; @@ -21,89 +22,88 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; import net.minecraft.stats.Achievement; +import net.minecraft.stats.AchievementList; import net.minecraft.util.ResourceLocation; public class GUIScreenBobmazon extends GuiScreen { - - protected static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_bobmazon.png"); - protected int xSize = 176; - protected int ySize = 229; - protected int guiLeft; - protected int guiTop; - int currentPage = 0; - List offers = new ArrayList(); - List buttons = new ArrayList(); - private final EntityPlayer player; - - public GUIScreenBobmazon(EntityPlayer player, List offers) { - - this.player = player; - this.offers = offers; - } - - int getPageCount() { - return (int)Math.ceil((offers.size() - 1) / 3); - } - - public void updateScreen() { - if(currentPage < 0) - currentPage = 0; - if(currentPage > getPageCount()) - currentPage = getPageCount(); - - if(this.player.getHeldItem() != null && this.player.getHeldItem().getItem() == ModItems.bobmazon_hidden && player.getDisplayName().equals("SolsticeUnlimitd")) - this.mc.thePlayer.closeScreen(); - } - - 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); - } - - public void initGui() - { - super.initGui(); - this.guiLeft = (this.width - this.xSize) / 2; - this.guiTop = (this.height - this.ySize) / 2; + protected static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_bobmazon.png"); + protected int xSize = 176 + 41; + protected int ySize = 229; + protected int guiLeft; + protected int guiTop; + int currentPage = 0; + List offers = new ArrayList(); + List buttons = new ArrayList(); + private final EntityPlayer player; - updateButtons(); - } - - protected void updateButtons() { - - if(!buttons.isEmpty()) - buttons.clear(); - - for(int i = currentPage * 3; i < Math.min(currentPage * 3 + 3, offers.size()); i++) { - buttons.add(new FolderButton(guiLeft + 34, guiTop + 35 + (54 * (int)Math.floor(i)) - currentPage * 3 * 54, offers.get(i))); - } + public GUIScreenBobmazon(EntityPlayer player, List offers) { - if(currentPage != 0) - buttons.add(new FolderButton(guiLeft + 25 - 18, guiTop + 26 + (27 * 3), 1, "Previous")); - if(currentPage != getPageCount()) - buttons.add(new FolderButton(guiLeft + 25 + (27 * 4) + 18, guiTop + 26 + (27 * 3), 2, "Next")); - } + this.player = player; + + this.offers = offers; + } + + int getPageCount() { + return (int) Math.ceil((offers.size() - 1) / 3); + } + + public void updateScreen() { + if(currentPage < 0) + currentPage = 0; + if(currentPage > getPageCount()) + currentPage = getPageCount(); + + if(this.player.getHeldItem() != null && this.player.getHeldItem().getItem() == ModItems.bobmazon_hidden && player.getDisplayName().equals("SolsticeUnlimitd")) + this.mc.thePlayer.closeScreen(); + } + + 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); + } + + public void initGui() { + super.initGui(); + this.guiLeft = (this.width - this.xSize) / 2; + this.guiTop = (this.height - this.ySize) / 2; + + updateButtons(); + } + + protected void updateButtons() { + + if(!buttons.isEmpty()) + buttons.clear(); + + for(int i = currentPage * 3; i < Math.min(currentPage * 3 + 3, offers.size()); i++) { + buttons.add(new FolderButton(guiLeft + 34, guiTop + 35 + (54 * (int) Math.floor(i)) - currentPage * 3 * 54, offers.get(i))); + } + + if(currentPage != 0) + buttons.add(new FolderButton(guiLeft + 25 - 18, guiTop + 26 + (27 * 3), 1, "Previous")); + if(currentPage != getPageCount()) + buttons.add(new FolderButton(guiLeft + 25 + (27 * 4) + 18 + 41, guiTop + 26 + (27 * 3), 2, "Next")); + } + + protected void mouseClicked(int i, int j, int k) { + try { + for(FolderButton b : buttons) + if(b.isMouseOnButton(i, j)) + b.executeAction(); + } catch(Exception ex) { + updateButtons(); + } + } - protected void mouseClicked(int i, int j, int k) { - try { - for(FolderButton b : buttons) - if(b.isMouseOnButton(i, j)) - b.executeAction(); - } catch (Exception ex) { - updateButtons(); - } - } - protected void drawGuiContainerForegroundLayer(int i, int j) { - this.fontRendererObj.drawString(I18n.format((currentPage + 1) + "/" + (getPageCount() + 1)), + this.fontRendererObj.drawString(I18n.format((currentPage + 1) + "/" + (getPageCount() + 1)), guiLeft + this.xSize / 2 - this.fontRendererObj.getStringWidth(I18n.format((currentPage + 1) + "/" + (getPageCount() + 1))) / 2, guiTop + 205, 4210752); - + for(FolderButton b : buttons) if(b.isMouseOnButton(i, j)) b.drawString(i, j); @@ -118,73 +118,73 @@ public class GUIScreenBobmazon extends GuiScreen { b.drawButton(b.isMouseOnButton(i, j)); for(FolderButton b : buttons) b.drawIcon(b.isMouseOnButton(i, j)); - - for(int d = currentPage * 3; d < Math.min(currentPage * 3 + 3, offers.size()); d++) { - offers.get(d).drawRequirement(this, guiLeft + 34, guiTop + 53 + (54 * (int)Math.floor(d)) - currentPage * 3 * 54); - } + + for(int d = currentPage * 3; d < Math.min(currentPage * 3 + 3, offers.size()); d++) { + offers.get(d).drawRequirement(this, guiLeft + 34, guiTop + 53 + (54 * (int) Math.floor(d)) - currentPage * 3 * 54); + } } - - protected void keyTyped(char p_73869_1_, int p_73869_2_) - { - if (p_73869_2_ == 1 || p_73869_2_ == this.mc.gameSettings.keyBindInventory.getKeyCode()) - { - this.mc.thePlayer.closeScreen(); - } - - } - + + protected void keyTyped(char p_73869_1_, int p_73869_2_) { + if(p_73869_2_ == 1 || p_73869_2_ == this.mc.gameSettings.keyBindInventory.getKeyCode()) { + this.mc.thePlayer.closeScreen(); + } + + } + class FolderButton { - + int xPos; int yPos; - //0: regular, 1: prev, 2: next + // 0: regular, 1: prev, 2: next int type; String info; Offer offer; - + public FolderButton(int x, int y, int t, String i) { xPos = x; yPos = y; type = t; info = i; } - + public FolderButton(int x, int y, Offer offer) { xPos = x; yPos = y; type = 0; this.offer = offer; } - + public void updateButton(int mouseX, int mouseY) { } - + public boolean isMouseOnButton(int mouseX, int mouseY) { return xPos <= mouseX && xPos + 18 > mouseX && yPos < mouseY && yPos + 18 >= mouseY; } - + public void drawButton(boolean b) { Minecraft.getMinecraft().getTextureManager().bindTexture(texture); - drawTexturedModalRect(xPos, yPos, b ? 176 + 18 : 176, type == 1 ? 18 : (type == 2 ? 36 : 0), 18, 18); + drawTexturedModalRect(xPos, yPos, b ? 176 + 41 + 18 : 176 + 41, type == 1 ? 18 : (type == 2 ? 36 : 0), 18, 18); } - + public void drawIcon(boolean b) { try { - GL11.glDisable(GL11.GL_LIGHTING); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); if(offer != null) { + RenderHelper.enableGUIStandardItemLighting(); itemRender.renderItemAndEffectIntoGUI(fontRendererObj, mc.getTextureManager(), offer.offer, xPos + 1, yPos + 1); } - GL11.glEnable(GL11.GL_LIGHTING); - } catch(Exception x) { } + } catch(Exception x) { + } } - + public void drawString(int x, int y) { if(info == null || info.isEmpty()) return; - + func_146283_a(Arrays.asList(new String[] { info }), x, y); } - + public void executeAction() { mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); if(type == 0) { @@ -200,21 +200,21 @@ public class GUIScreenBobmazon extends GuiScreen { } } } - + @Override public boolean doesGuiPauseGame() { return false; } - + public static class Offer { - + public ItemStack offer; public Requirement requirement; public int cost; public int rating; public String comment; public String author; - + public Offer(ItemStack offer, Requirement requirement, int cost, int rating, String comment, String author) { this.offer = offer; this.requirement = requirement; @@ -223,82 +223,81 @@ public class GUIScreenBobmazon extends GuiScreen { this.comment = comment; this.author = author; } - + public Offer(ItemStack offer, Requirement requirement, int cost) { - this.offer = offer; - this.requirement = requirement; - this.cost = cost; - this.rating = 0; - this.comment = "No Ratings"; - this.author = ""; + this(offer, requirement, cost, 0); } - + + public Offer(ItemStack offer, Requirement requirement, int cost, int rating) { + this(offer, requirement, cost, rating, "No Ratings", ""); + } + public void drawRequirement(GUIScreenBobmazon gui, int x, int y) { try { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); RenderHelper.enableGUIStandardItemLighting(); - GL11.glColor3f(1F, 1F, 1F); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); Minecraft.getMinecraft().getTextureManager().bindTexture(texture); - gui.drawTexturedModalRect(x + 19, y - 4, 176, 62, 39, 8); - gui.drawTexturedModalRect(x + 19, y - 4, 176, 54, rating, 8); - + gui.drawTexturedModalRect(x + 19, y - 4, 176 + 41, 62, 39, 8); + gui.drawTexturedModalRect(x + 19, y - 4, 176 + 41, 54, rating, 8); + String count = ""; if(offer.stackSize > 1) count = " x" + offer.stackSize; GL11.glPushMatrix(); - - float scale = 0.65F; + float scale = 0.5F; GL11.glScalef(scale, scale, scale); - gui.fontRendererObj.drawString(I18n.format(offer.getDisplayName()) + count, (int)((x + 20) / scale), (int)((y - 12) / scale), 4210752); - + gui.fontRendererObj.drawString(I18n.format(offer.getDisplayName()) + count, (int) ((x + 20) / scale), (int) ((y - 12) / scale), 4210752); GL11.glPopMatrix(); - + String price = cost + " Cap"; if(cost != 1) price += "s"; gui.fontRendererObj.drawString(price, x + 62, y - 3, 4210752); - + GL11.glPushMatrix(); - - GL11.glScalef(0.5F, 0.5F, 0.5F); - - if(!author.isEmpty()) - gui.fontRendererObj.drawString("- " + author, (x + 20) * 2, (y + 18) * 2, 0x222222); - gui.fontRendererObj.drawString(comment, (x + 20) * 2, (y + 8) * 2, 0x222222); - + + GL11.glScalef(0.5F, 0.5F, 0.5F); + + if(!author.isEmpty()) + gui.fontRendererObj.drawString("- " + author, (x + 20) * 2, (y + 18) * 2, 0x222222); + gui.fontRendererObj.drawString(comment, (x + 20) * 2, (y + 8) * 2, 0x222222); + GL11.glPopMatrix(); - - GL11.glDisable(GL11.GL_LIGHTING); if(offer != null) { + GL11.glEnable(GL11.GL_LIGHTING); gui.itemRender.renderItemAndEffectIntoGUI(gui.fontRendererObj, gui.mc.getTextureManager(), requirement.achievement.theItemStack, x + 1, y + 1); } - GL11.glEnable(GL11.GL_LIGHTING); - - } catch(Exception ex) { } + + } catch(Exception ex) { + } } - + } - + public enum Requirement { + NONE(AchievementList.openInventory), STEEL(MainRegistry.achBlastFurnace), ASSEMBLY(MainRegistry.achAssembly), CHEMICS(MainRegistry.achChemplant), OIL(MainRegistry.achDesh), NUCLEAR(MainRegistry.achTechnetium), HIDDEN(MainRegistry.bobHidden); - + private Requirement(Achievement achievement) { this.achievement = achievement; } - + public boolean fullfills(EntityPlayerMP player) { - + return player.func_147099_x().hasAchievementUnlocked(achievement); } - + public Achievement achievement; } diff --git a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java index 2dacf92dd..669a4bde2 100644 --- a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java @@ -46,6 +46,8 @@ public class ArcWelderRecipes extends SerializableRecipe { new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 2), new OreDictStack(CMB.plateWelded(), 1), new ComparableStack(ModItems.ingot_cft))); //Dense Wires + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_COPPER.id), 100, 10_000L, + new OreDictStack(CU.wireFine(), 8))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_ALLOY.id), 100, 10_000L, new OreDictStack(ALLOY.wireFine(), 8))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_GOLD.id), 100, 10_000L, diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index e3e16a140..c1949152a 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -79,7 +79,7 @@ public class AssemblerRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModItems.rtg_unit, 1), new AStack[] {new ComparableStack(ModItems.thermo_element, 2), new OreDictStack(CU.plateCast(), 1), new OreDictStack(PB.ingot(), 2), new OreDictStack(STEEL.plate(), 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CAPACITOR.ordinal()), },100); makeRecipe(new ComparableStack(ModItems.levitation_unit, 1), new AStack[] {new ComparableStack(ModItems.coil_copper, 4), new ComparableStack(ModItems.coil_tungsten, 2), new OreDictStack(TI.plate(), 6), new ComparableStack(ModItems.nugget_schrabidium, 2), },100); makeRecipe(new ComparableStack(ModItems.drill_titanium, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new OreDictStack(DURA.ingot(), 2), new OreDictStack(DURA.bolt(), 4), new OreDictStack(TI.plate(), 6), },100); - makeRecipe(new ComparableStack(ModItems.entanglement_kit, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new OreDictStack(DURA.ingot(), 4), new OreDictStack(CU.plate(), 24), new ComparableStack(ModBlocks.hadron_coil_gold, 4), new OreDictStack(Fluids.XENON.getDict(1_000))},200); + makeRecipe(new ComparableStack(ModItems.entanglement_kit, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new OreDictStack(DURA.ingot(), 4), new OreDictStack(CU.plate(), 24), new OreDictStack(GOLD.wireDense(), 16), new OreDictStack(Fluids.XENON.getDict(1_000))},200); makeRecipe(new ComparableStack(ModItems.dysfunctional_reactor, 1), new AStack[] {new OreDictStack(STEEL.plate(), 15), new OreDictStack(PB.ingot(), 5), new ComparableStack(ModItems.rod_quad_empty, 10), new OreDictStack("dyeBrown", 3), },200); makeRecipe(new ComparableStack(ModItems.missile_assembly, 1), new AStack[] {new OreDictStack(STEEL.shell(), 2), new OreDictStack(AL.shell(), 2), new OreDictStack(TI.plate(), 8), new OreDictStack(ANY_PLASTIC.ingot(), 8), new ComparableStack(ModItems.rocket_fuel, 8), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BASIC), }, 200); makeRecipe(new ComparableStack(ModItems.warhead_generic_small, 1), new AStack[] {new OreDictStack(TI.plate(), 5), new OreDictStack(STEEL.plate(), 3), new ComparableStack(ModItems.ball_dynamite, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CHIP) },100); @@ -552,8 +552,7 @@ public class AssemblerRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModBlocks.machine_cyclotron, 1), new AStack[] { new ComparableStack(ModBlocks.machine_lithium_battery, 3), - new ComparableStack(ModBlocks.hadron_coil_neodymium, 8), - new OreDictStack(ALLOY.wireDense(), 16), + new OreDictStack(ND.wireDense(), 32), !exp ? new OreDictStack(STEEL.ingot(), 16) : new OreDictStack(STEEL.heavyComp(), 3), new OreDictStack(STEEL.plate528(), 32), new OreDictStack(AL.plate528(), 32), @@ -1149,16 +1148,6 @@ public class AssemblerRecipes extends SerializableRecipe { new ComparableStack(ModItems.circuit, 10, EnumCircuitType.CAPACITOR_BOARD), }, 300); - makeRecipe(new ComparableStack(ModBlocks.hadron_core, 1), new AStack[] { - new ComparableStack(ModBlocks.hadron_coil_alloy, 24), - new OreDictStack(STEEL.ingot(), 8), - new OreDictStack(ANY_PLASTIC.ingot(), 16), - new OreDictStack(ANY_RESISTANTALLOY.ingot(), 8), - new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID), - new ComparableStack(ModItems.circuit, 192, EnumCircuitType.CAPACITOR_BOARD), - new ComparableStack(ModItems.crt_display, 1), - }, 300); - makeRecipe(new ComparableStack(ModBlocks.struct_launcher_core, 1), new AStack[] { new ComparableStack(ModBlocks.machine_battery, 3), new ComparableStack(ModBlocks.steel_scaffold, 10), diff --git a/src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java b/src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java index af7032305..1a7599b5d 100644 --- a/src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java @@ -77,7 +77,7 @@ public class BlastFurnaceRecipes extends SerializableRecipe { hiddenRecipes.add(new ComparableStack(ModItems.meteorite_sword_alloyed)); } - private static void addRecipe(Object in1, Object in2, ItemStack out) { + public static void addRecipe(Object in1, Object in2, ItemStack out) { if(in1 instanceof Item) in1 = new ComparableStack((Item) in1); if(in1 instanceof Block) in1 = new ComparableStack((Block) in1); diff --git a/src/main/java/com/hbm/inventory/recipes/BreederRecipes.java b/src/main/java/com/hbm/inventory/recipes/BreederRecipes.java index 7503b3dec..1ff4b65fb 100644 --- a/src/main/java/com/hbm/inventory/recipes/BreederRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/BreederRecipes.java @@ -19,7 +19,7 @@ import net.minecraft.item.ItemStack; public class BreederRecipes extends SerializableRecipe { - private static HashMap recipes = new HashMap(); + public static HashMap recipes = new HashMap(); @Override public void registerDefaults() { diff --git a/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java b/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java index 641008670..027efb67d 100644 --- a/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java @@ -43,7 +43,7 @@ import net.minecraftforge.oredict.OreDictionary; public class CentrifugeRecipes extends SerializableRecipe { - private static HashMap recipes = new HashMap(); + public static HashMap recipes = new HashMap(); @Override public void registerDefaults() { diff --git a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java index 5331f09d4..7a44817d3 100644 --- a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java @@ -38,7 +38,7 @@ public class ChemplantRecipes extends SerializableRecipe { @Override public void registerDefaults() { - //6-30, formerly oil cracking, coal liquefaction and solidifciation + //6-30, formerly oil cracking, coal liquefaction and solidification registerOtherOil(); recipes.add(new ChemRecipe(36, "COOLANT", 50) diff --git a/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java index ce4c4dfb5..32f1bbd6a 100644 --- a/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java @@ -25,7 +25,7 @@ import net.minecraft.item.ItemStack; public class CokerRecipes extends SerializableRecipe { - private static HashMap> recipes = new HashMap(); + public static HashMap> recipes = new HashMap(); @Override public void registerDefaults() { @@ -68,7 +68,7 @@ public class CokerRecipes extends SerializableRecipe { registerRecipe(VITRIOL, 4000, new ItemStack(ModItems.powder_iron), new FluidStack(SULFURIC_ACID, 500)); } - private static void registerAuto(FluidType fluid, FluidType type) { + public static void registerAuto(FluidType fluid, FluidType type) { registerSFAuto(fluid, 820_000L, DictFrame.fromOne(ModItems.coke, EnumCokeType.PETROLEUM), type); //3200 burntime * 1.25 burntime bonus * 200 TU/t + 20000TU per operation } private static void registerSFAuto(FluidType fluid, long tuPerSF, ItemStack fuel, FluidType type) { diff --git a/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java b/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java index 5698426dc..58cc7784a 100644 --- a/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java @@ -34,7 +34,7 @@ import net.minecraft.item.ItemStack; public class CombinationRecipes extends SerializableRecipe { - private static HashMap> recipes = new HashMap(); + public static HashMap> recipes = new HashMap(); @Override public void registerDefaults() { diff --git a/src/main/java/com/hbm/inventory/recipes/CrackingRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrackingRecipes.java index 7bfe680ec..b66cf903d 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrackingRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrackingRecipes.java @@ -36,7 +36,7 @@ public class CrackingRecipes extends SerializableRecipe { public static final int xyl_crack_aroma = 80; public static final int xyl_crack_petro = 20; - private static Map> cracking = new HashMap(); + public static Map> cracking = new HashMap(); @Override public void registerDefaults() { diff --git a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java index 814baafe2..e4b8907ba 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java @@ -61,57 +61,56 @@ public class CrystallizerRecipes extends SerializableRecipe { final int mixingTime = 20; FluidStack sulfur = new FluidStack(Fluids.SULFURIC_ACID, 500); - registerRecipe(COAL.ore(), new CrystallizerRecipe(ModItems.crystal_coal, baseTime)); - registerRecipe(IRON.ore(), new CrystallizerRecipe(ModItems.crystal_iron, baseTime)); - registerRecipe(GOLD.ore(), new CrystallizerRecipe(ModItems.crystal_gold, baseTime)); - registerRecipe(REDSTONE.ore(), new CrystallizerRecipe(ModItems.crystal_redstone, baseTime)); - registerRecipe(LAPIS.ore(), new CrystallizerRecipe(ModItems.crystal_lapis, baseTime)); - registerRecipe(DIAMOND.ore(), new CrystallizerRecipe(ModItems.crystal_diamond, baseTime)); - registerRecipe(U.ore(), new CrystallizerRecipe(ModItems.crystal_uranium, baseTime), sulfur); - for(String ore : OreDictManager.TH232.all(MaterialShapes.ONLY_ORE)) registerRecipe(ore, new CrystallizerRecipe(ModItems.crystal_thorium, baseTime), sulfur); - registerRecipe(PU.ore(), new CrystallizerRecipe(ModItems.crystal_plutonium, baseTime), sulfur); - registerRecipe(TI.ore(), new CrystallizerRecipe(ModItems.crystal_titanium, baseTime), sulfur); - registerRecipe(S.ore(), new CrystallizerRecipe(ModItems.crystal_sulfur, baseTime)); - registerRecipe(KNO.ore(), new CrystallizerRecipe(ModItems.crystal_niter, baseTime)); - registerRecipe(CU.ore(), new CrystallizerRecipe(ModItems.crystal_copper, baseTime)); - registerRecipe(W.ore(), new CrystallizerRecipe(ModItems.crystal_tungsten, baseTime), sulfur); - registerRecipe(AL.ore(), new CrystallizerRecipe(ModItems.crystal_aluminium, baseTime)); - registerRecipe(F.ore(), new CrystallizerRecipe(ModItems.crystal_fluorite, baseTime)); - registerRecipe(BE.ore(), new CrystallizerRecipe(ModItems.crystal_beryllium, baseTime)); - registerRecipe(PB.ore(), new CrystallizerRecipe(ModItems.crystal_lead, baseTime)); - registerRecipe(SA326.ore(), new CrystallizerRecipe(ModItems.crystal_schrabidium, baseTime), sulfur); - registerRecipe(LI.ore(), new CrystallizerRecipe(ModItems.crystal_lithium, baseTime), sulfur); - //registerRecipe(STAR.ore(), new CrystallizerRecipe(ModItems.crystal_starmetal, baseTime), sulfur); - registerRecipe(CO.ore(), new CrystallizerRecipe(ModItems.crystal_cobalt, baseTime), sulfur); + registerRecipe(COAL.ore(), new CrystallizerRecipe(ModItems.crystal_coal, baseTime).prod(0.05F)); + registerRecipe(IRON.ore(), new CrystallizerRecipe(ModItems.crystal_iron, baseTime).prod(0.05F)); + registerRecipe(GOLD.ore(), new CrystallizerRecipe(ModItems.crystal_gold, baseTime).prod(0.05F)); + registerRecipe(REDSTONE.ore(), new CrystallizerRecipe(ModItems.crystal_redstone, baseTime).prod(0.05F)); + registerRecipe(LAPIS.ore(), new CrystallizerRecipe(ModItems.crystal_lapis, baseTime).prod(0.05F)); + registerRecipe(DIAMOND.ore(), new CrystallizerRecipe(ModItems.crystal_diamond, baseTime).prod(0.05F)); + registerRecipe(U.ore(), new CrystallizerRecipe(ModItems.crystal_uranium, baseTime).prod(0.05F), sulfur); + for(String ore : OreDictManager.TH232.all(MaterialShapes.ONLY_ORE)) registerRecipe(ore, new CrystallizerRecipe(ModItems.crystal_thorium, baseTime).prod(0.05F), sulfur); + registerRecipe(PU.ore(), new CrystallizerRecipe(ModItems.crystal_plutonium, baseTime).prod(0.05F), sulfur); + registerRecipe(TI.ore(), new CrystallizerRecipe(ModItems.crystal_titanium, baseTime).prod(0.05F), sulfur); + registerRecipe(S.ore(), new CrystallizerRecipe(ModItems.crystal_sulfur, baseTime).prod(0.05F)); + registerRecipe(KNO.ore(), new CrystallizerRecipe(ModItems.crystal_niter, baseTime).prod(0.05F)); + registerRecipe(CU.ore(), new CrystallizerRecipe(ModItems.crystal_copper, baseTime).prod(0.05F)); + registerRecipe(W.ore(), new CrystallizerRecipe(ModItems.crystal_tungsten, baseTime).prod(0.05F), sulfur); + registerRecipe(AL.ore(), new CrystallizerRecipe(ModItems.crystal_aluminium, baseTime).prod(0.05F)); + registerRecipe(F.ore(), new CrystallizerRecipe(ModItems.crystal_fluorite, baseTime).prod(0.05F)); + registerRecipe(BE.ore(), new CrystallizerRecipe(ModItems.crystal_beryllium, baseTime).prod(0.05F)); + registerRecipe(PB.ore(), new CrystallizerRecipe(ModItems.crystal_lead, baseTime).prod(0.05F)); + registerRecipe(SA326.ore(), new CrystallizerRecipe(ModItems.crystal_schrabidium, baseTime).prod(0.05F), sulfur); + registerRecipe(LI.ore(), new CrystallizerRecipe(ModItems.crystal_lithium, baseTime).prod(0.05F), sulfur); + registerRecipe(CO.ore(), new CrystallizerRecipe(ModItems.crystal_cobalt, baseTime).prod(0.05F), sulfur); - registerRecipe(new ComparableStack(ModItems.powder_calcium), new CrystallizerRecipe(new ItemStack(ModItems.powder_cement, 8), utilityTime), new FluidStack(Fluids.REDMUD, 75)); - registerRecipe(MALACHITE.ingot(), new CrystallizerRecipe(ItemScraps.create(new MaterialStack(Mats.MAT_COPPER, MaterialShapes.INGOT.q(1))), 300), new FluidStack(Fluids.SULFURIC_ACID, 250)); + registerRecipe(new ComparableStack(ModItems.powder_calcium), new CrystallizerRecipe(new ItemStack(ModItems.powder_cement, 8), utilityTime).prod(0.1F), new FluidStack(Fluids.REDMUD, 75)); + registerRecipe(MALACHITE.ingot(), new CrystallizerRecipe(ItemScraps.create(new MaterialStack(Mats.MAT_COPPER, MaterialShapes.INGOT.q(1))), 300).prod(0.1F), new FluidStack(Fluids.SULFURIC_ACID, 250)); - registerRecipe("oreRareEarth", new CrystallizerRecipe(ModItems.crystal_rare, baseTime), sulfur); - registerRecipe("oreCinnabar", new CrystallizerRecipe(ModItems.crystal_cinnebar, baseTime)); + registerRecipe("oreRareEarth", new CrystallizerRecipe(ModItems.crystal_rare, baseTime).prod(0.05F), sulfur); + registerRecipe("oreCinnabar", new CrystallizerRecipe(ModItems.crystal_cinnebar, baseTime).prod(0.05F)); - registerRecipe(new ComparableStack(ModBlocks.ore_nether_fire), new CrystallizerRecipe(ModItems.crystal_phosphorus, baseTime)); - registerRecipe(new ComparableStack(ModBlocks.ore_tikite), new CrystallizerRecipe(ModItems.crystal_trixite, baseTime), sulfur); - registerRecipe(new ComparableStack(ModBlocks.gravel_diamond), new CrystallizerRecipe(ModItems.crystal_diamond, baseTime)); - registerRecipe(SRN.ingot(), new CrystallizerRecipe(ModItems.crystal_schraranium, baseTime)); + registerRecipe(new ComparableStack(ModBlocks.ore_nether_fire), new CrystallizerRecipe(ModItems.crystal_phosphorus, baseTime).prod(0.05F)); + registerRecipe(new ComparableStack(ModBlocks.ore_tikite), new CrystallizerRecipe(ModItems.crystal_trixite, baseTime).prod(0.05F), sulfur); + registerRecipe(new ComparableStack(ModBlocks.gravel_diamond), new CrystallizerRecipe(ModItems.crystal_diamond, baseTime).prod(0.05F)); + registerRecipe(SRN.ingot(), new CrystallizerRecipe(ModItems.crystal_schraranium, baseTime).prod(0.05F)); - registerRecipe(KEY_SAND, new CrystallizerRecipe(ModItems.ingot_fiberglass, utilityTime)); - registerRecipe(SI.ingot(), new CrystallizerRecipe(new ItemStack(Items.quartz, 2), utilityTime), new FluidStack(Fluids.OXYGEN, 250)); - registerRecipe(REDSTONE.block(), new CrystallizerRecipe(ModItems.ingot_mercury, baseTime)); - registerRecipe(CINNABAR.crystal(), new CrystallizerRecipe(new ItemStack(ModItems.ingot_mercury, 3), baseTime)); - registerRecipe(BORAX.dust(), new CrystallizerRecipe(new ItemStack(ModItems.powder_boron_tiny, 3), baseTime), sulfur); + registerRecipe(KEY_SAND, new CrystallizerRecipe(ModItems.ingot_fiberglass, utilityTime).prod(0.15F)); + registerRecipe(SI.ingot(), new CrystallizerRecipe(new ItemStack(Items.quartz, 2), utilityTime).prod(0.1F), new FluidStack(Fluids.OXYGEN, 250)); + registerRecipe(REDSTONE.block(), new CrystallizerRecipe(ModItems.ingot_mercury, baseTime).prod(0.25F)); + registerRecipe(CINNABAR.crystal(), new CrystallizerRecipe(new ItemStack(ModItems.ingot_mercury, 3), baseTime).prod(0.25F)); + registerRecipe(BORAX.dust(), new CrystallizerRecipe(new ItemStack(ModItems.powder_boron_tiny, 3), baseTime).prod(0.25F), sulfur); registerRecipe(COAL.block(), new CrystallizerRecipe(ModBlocks.block_graphite, baseTime)); registerRecipe(new ComparableStack(Blocks.cobblestone), new CrystallizerRecipe(ModBlocks.reinforced_stone, utilityTime)); registerRecipe(new ComparableStack(ModBlocks.gravel_obsidian), new CrystallizerRecipe(ModBlocks.brick_obsidian, utilityTime)); - registerRecipe(new ComparableStack(Items.rotten_flesh), new CrystallizerRecipe(Items.leather, utilityTime)); + registerRecipe(new ComparableStack(Items.rotten_flesh), new CrystallizerRecipe(Items.leather, utilityTime).prod(0.25F)); registerRecipe(new ComparableStack(ModItems.coal_infernal), new CrystallizerRecipe(ModItems.solid_fuel, utilityTime)); - registerRecipe(new ComparableStack(ModBlocks.stone_gneiss), new CrystallizerRecipe(ModItems.powder_lithium, utilityTime)); + registerRecipe(new ComparableStack(ModBlocks.stone_gneiss), new CrystallizerRecipe(ModItems.powder_lithium, utilityTime).prod(0.25F)); registerRecipe(new ComparableStack(Items.dye, 1, 15), new CrystallizerRecipe(new ItemStack(Items.slime_ball, 4), mixingTime), new FluidStack(Fluids.SULFURIC_ACID, 250)); registerRecipe(new ComparableStack(Items.bone), new CrystallizerRecipe(new ItemStack(Items.slime_ball, 16), mixingTime), new FluidStack(Fluids.SULFURIC_ACID, 1_000)); registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.plant_item, EnumPlantType.MUSTARDWILLOW)), new CrystallizerRecipe(new ItemStack(ModItems.powder_cadmium), 100).setReq(10), new FluidStack(Fluids.RADIOSOLVENT, 250)); - registerRecipe(new ComparableStack(ModItems.scrap_oil), new CrystallizerRecipe(new ItemStack(ModItems.nugget_arsenic), 100).setReq(16), new FluidStack(Fluids.RADIOSOLVENT, 100)); - registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.FULLERENE)), new CrystallizerRecipe(new ItemStack(ModItems.ingot_cft), baseTime).setReq(4), new FluidStack(Fluids.XYLENE, 1_000)); + registerRecipe(new ComparableStack(ModItems.scrap_oil), new CrystallizerRecipe(new ItemStack(ModItems.nugget_arsenic), 100).prod(0.3F).setReq(16), new FluidStack(Fluids.RADIOSOLVENT, 100)); + registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.FULLERENE)), new CrystallizerRecipe(new ItemStack(ModItems.ingot_cft), baseTime).prod(0.1F).setReq(4), new FluidStack(Fluids.XYLENE, 1_000)); registerRecipe(DIAMOND.dust(), new CrystallizerRecipe(Items.diamond, utilityTime)); registerRecipe(EMERALD.dust(), new CrystallizerRecipe(Items.emerald, utilityTime)); @@ -120,8 +119,8 @@ public class CrystallizerRecipes extends SerializableRecipe { registerRecipe(new ComparableStack(ModItems.powder_desh_ready), new CrystallizerRecipe(ModItems.ingot_desh, baseTime)); registerRecipe(new ComparableStack(ModItems.powder_meteorite), new CrystallizerRecipe(ModItems.fragment_meteorite, utilityTime)); registerRecipe(CD.dust(), new CrystallizerRecipe(ModItems.ingot_rubber, utilityTime), new FluidStack(Fluids.FISHOIL, 250)); - registerRecipe(LATEX.ingot(), new CrystallizerRecipe(ModItems.ingot_rubber, mixingTime), new FluidStack(Fluids.SOURGAS, 25)); - registerRecipe(new ComparableStack(ModItems.powder_sawdust), new CrystallizerRecipe(ModItems.cordite, mixingTime), new FluidStack(Fluids.NITROGLYCERIN, 250)); + registerRecipe(LATEX.ingot(), new CrystallizerRecipe(ModItems.ingot_rubber, mixingTime).prod(0.15F), new FluidStack(Fluids.SOURGAS, 25)); + registerRecipe(new ComparableStack(ModItems.powder_sawdust), new CrystallizerRecipe(ModItems.cordite, mixingTime).prod(0.25F), new FluidStack(Fluids.NITROGLYCERIN, 250)); registerRecipe(new ComparableStack(ModItems.meteorite_sword_treated), new CrystallizerRecipe(ModItems.meteorite_sword_etched, baseTime)); registerRecipe(new ComparableStack(ModItems.powder_impure_osmiridium), new CrystallizerRecipe(ModItems.crystal_osmiridium, baseTime), new FluidStack(Fluids.SCHRABIDIC, 1_000)); @@ -202,14 +201,14 @@ public class CrystallizerRecipes extends SerializableRecipe { registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.BASE, type), bedrock).setReq(64), new FluidStack(Fluids.NITRIC_ACID, 1000)); } - FluidStack[] dyes = new FluidStack[] {new FluidStack(Fluids.WOODOIL, 100), new FluidStack(Fluids.FISHOIL, 100)}; + FluidStack[] dyes = new FluidStack[] {new FluidStack(Fluids.WOODOIL, 100), new FluidStack(Fluids.FISHOIL, 100), new FluidStack(Fluids.LIGHTOIL, 100)}; for(FluidStack dye : dyes) { - registerRecipe(COAL.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.BLACK, 4), mixingTime), dye); - registerRecipe(TI.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.WHITE, 4), mixingTime), dye); - registerRecipe(IRON.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.RED, 4), mixingTime), dye); - registerRecipe(W.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.YELLOW, 4), mixingTime), dye); - registerRecipe(CU.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.GREEN, 4), mixingTime), dye); - registerRecipe(CO.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.BLUE, 4), mixingTime), dye); + registerRecipe(COAL.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.BLACK, 4), mixingTime).prod(0.15F), dye); + registerRecipe(TI.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.WHITE, 4), mixingTime).prod(0.15F), dye); + registerRecipe(IRON.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.RED, 4), mixingTime).prod(0.15F), dye); + registerRecipe(W.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.YELLOW, 4), mixingTime).prod(0.15F), dye); + registerRecipe(CU.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.GREEN, 4), mixingTime).prod(0.15F), dye); + registerRecipe(CO.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.BLUE, 4), mixingTime).prod(0.15F), dye); } registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE)), new CrystallizerRecipe(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WAX), 20), new FluidStack(Fluids.CHLORINE, 250)); @@ -236,6 +235,12 @@ public class CrystallizerRecipes extends SerializableRecipe { registerRecipe(P_WHITE.dust(), new CrystallizerRecipe(new ItemStack(ModItems.ingot_phosphorus), utilityTime), new FluidStack(Fluids.AROMATICS, 50)); } + /// COMPAT CINNABAR DUST /// + List dustCinnabar = OreDictionary.getOres(CINNABAR.dust()); + if(dustCinnabar != null && !dustCinnabar.isEmpty()) { + registerRecipe(CINNABAR.dust(), new CrystallizerRecipe(new ItemStack(ModItems.cinnebar), utilityTime), new FluidStack(Fluids.PEROXIDE, 50)); + } + if(!IMCCrystallizer.buffer.isEmpty()) { recipes.putAll(IMCCrystallizer.buffer); MainRegistry.logger.info("Fetched " + IMCCrystallizer.buffer.size() + " IMC crystallizer recipes!"); @@ -327,6 +332,7 @@ public class CrystallizerRecipes extends SerializableRecipe { public int acidAmount; public int itemAmount = 1; public int duration; + public float productivity = 0F; public ItemStack output; public CrystallizerRecipe(Block output, int duration) { this(new ItemStack(output), duration); } @@ -342,6 +348,11 @@ public class CrystallizerRecipes extends SerializableRecipe { this.duration = duration; this.acidAmount = 500; } + + public CrystallizerRecipe prod(float productivity) { + this.productivity = productivity; + return this; + } } @Override @@ -371,6 +382,7 @@ public class CrystallizerRecipes extends SerializableRecipe { } else if(input instanceof OreDictStack) { recipes.put(new Pair(((OreDictStack) input).name, fluid.type), cRecipe); } + if(obj.has("productivity")) cRecipe.prod(obj.get("productivity").getAsFloat()); } @Override @@ -389,6 +401,7 @@ public class CrystallizerRecipes extends SerializableRecipe { this.writeAStack(input, writer); writer.name("output"); this.writeItemStack(cRecipe.output, writer); + writer.name("productivity").value(cRecipe.productivity); } @Override diff --git a/src/main/java/com/hbm/inventory/recipes/FractionRecipes.java b/src/main/java/com/hbm/inventory/recipes/FractionRecipes.java index 93e932ef3..dda69009f 100644 --- a/src/main/java/com/hbm/inventory/recipes/FractionRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/FractionRecipes.java @@ -19,7 +19,7 @@ import net.minecraft.item.ItemStack; public class FractionRecipes extends SerializableRecipe { - private static Map> fractions = new HashMap(); + public static Map> fractions = new HashMap(); @Override public void registerDefaults() { @@ -40,8 +40,8 @@ public class FractionRecipes extends SerializableRecipe { fractions.put(Fluids.OIL_COKER, new Pair(new FluidStack(Fluids.CRACKOIL, 30), new FluidStack(Fluids.HEATINGOIL, 70))); fractions.put(Fluids.NAPHTHA_COKER, new Pair(new FluidStack(Fluids.NAPHTHA_CRACK, 75), new FluidStack(Fluids.LIGHTOIL_CRACK, 25))); fractions.put(Fluids.GAS_COKER, new Pair(new FluidStack(Fluids.AROMATICS, 25), new FluidStack(Fluids.CARBONDIOXIDE, 75))); - fractions.put(Fluids.CHLOROCALCITE_MIX, new Pair(new FluidStack(Fluids.CHLOROCALCITE_CLEANED, 50), new FluidStack(Fluids.COLLOID, 50))); - fractions.put(Fluids.BAUXITE_SOLUTION, new Pair(new FluidStack(Fluids.REDMUD, 50), new FluidStack(Fluids.SODIUM_ALUMINATE, 50))); + fractions.put(Fluids.CHLOROCALCITE_MIX, new Pair(new FluidStack(Fluids.CHLOROCALCITE_CLEANED, 50), new FluidStack(Fluids.COLLOID, 50))); + fractions.put(Fluids.BAUXITE_SOLUTION, new Pair(new FluidStack(Fluids.REDMUD, 50), new FluidStack(Fluids.SODIUM_ALUMINATE, 50))); } public static Pair getFractions(FluidType oil) { diff --git a/src/main/java/com/hbm/inventory/recipes/HadronRecipes.java b/src/main/java/com/hbm/inventory/recipes/HadronRecipes.java index e0694e1ae..d2cccc339 100644 --- a/src/main/java/com/hbm/inventory/recipes/HadronRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/HadronRecipes.java @@ -5,7 +5,6 @@ import java.util.ArrayList; import java.util.List; import com.google.gson.JsonElement; -import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.recipes.loader.SerializableRecipe; @@ -15,7 +14,7 @@ import com.hbm.tileentity.machine.TileEntityHadron.EnumHadronState; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; -public class HadronRecipes extends SerializableRecipe { +@Deprecated public class HadronRecipes extends SerializableRecipe { /* * Since we're dealing with like 10 or so recipes, using a HashMap (or to combine two keys, a HashMap *in* a HashMap) @@ -183,45 +182,10 @@ public class HadronRecipes extends SerializableRecipe { } @Override - public void readRecipe(JsonElement recipe) { - JsonObject obj = (JsonObject) recipe; - int momentum = obj.get("momentum").getAsInt(); - boolean lineMode = obj.get("lineMode").getAsBoolean(); - ItemStack[] in = this.readItemStackArray(obj.get("inputs").getAsJsonArray()); - ItemStack[] out = this.readItemStackArray(obj.get("outputs").getAsJsonArray()); - - this.recipes.add(new HadronRecipe( - in[0], - in[1], - momentum, - out[0], - out[1], - lineMode - )); - } + public void readRecipe(JsonElement recipe) { } @Override - public void writeRecipe(Object recipe, JsonWriter writer) throws IOException { - HadronRecipe rec = (HadronRecipe) recipe; - - writer.name("momentum").value(rec.momentum); - writer.name("lineMode").value(rec.analysisOnly); - - writer.name("inputs").beginArray(); - this.writeItemStack(rec.in1.toStack(), writer); - this.writeItemStack(rec.in2.toStack(), writer); - writer.endArray(); - - writer.name("outputs").beginArray(); - this.writeItemStack(rec.out1, writer); - this.writeItemStack(rec.out2, writer); - writer.endArray(); - } - - @Override - public String getComment() { - return "Rules: Both in- and output stacks cannot be null. Stacksizes are set to 1 for all stacks."; - } + public void writeRecipe(Object recipe, JsonWriter writer) throws IOException { } @Override public void deleteRecipes() { diff --git a/src/main/java/com/hbm/inventory/recipes/HydrotreatingRecipes.java b/src/main/java/com/hbm/inventory/recipes/HydrotreatingRecipes.java index 620d5b490..46f5b2e11 100644 --- a/src/main/java/com/hbm/inventory/recipes/HydrotreatingRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/HydrotreatingRecipes.java @@ -18,7 +18,7 @@ import net.minecraft.item.ItemStack; public class HydrotreatingRecipes extends SerializableRecipe { - private static HashMap> recipes = new HashMap(); + public static HashMap> recipes = new HashMap(); @Override public void registerDefaults() { diff --git a/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java b/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java index feb244d49..ed171ee75 100644 --- a/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java @@ -27,7 +27,7 @@ import net.minecraftforge.oredict.OreDictionary; public class LiquefactionRecipes extends SerializableRecipe { - private static HashMap recipes = new HashMap(); + public static HashMap recipes = new HashMap(); @Override public void registerDefaults() { diff --git a/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java b/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java index dfb802485..863f76c25 100644 --- a/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java @@ -56,18 +56,6 @@ public class MagicRecipes { new ComparableStack(ModItems.powder_dineutronium), new ComparableStack(ModItems.blades_desh), new ComparableStack(ModItems.diamond_gavel))); - - recipes.add(new MagicRecipe(new ItemStack(ModBlocks.hadron_coil_mese), - new ComparableStack(ModBlocks.hadron_coil_chlorophyte), - new ComparableStack(ModItems.powder_dineutronium), - new ComparableStack(ModItems.plate_desh), - new OreDictStack(GOLD.dust()))); - - recipes.add(new MagicRecipe(new ItemStack(ModBlocks.hadron_coil_mese), - new ComparableStack(ModBlocks.hadron_coil_chlorophyte), - new OreDictStack(DNT.wireDense()), - new OreDictStack(W.wireDense()), - new OreDictStack(GOLD.wireDense()))); } public static List getRecipes() { diff --git a/src/main/java/com/hbm/inventory/recipes/PedestalRecipes.java b/src/main/java/com/hbm/inventory/recipes/PedestalRecipes.java index d11a40f93..c5d5c95bb 100644 --- a/src/main/java/com/hbm/inventory/recipes/PedestalRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/PedestalRecipes.java @@ -147,7 +147,7 @@ public class PedestalRecipes extends SerializableRecipe { } public static enum PedestalExtraCondition { - NONE, FULL_MOON, NEW_MOON, SUN + NONE, FULL_MOON, NEW_MOON, SUN, GOOD_KARMA, BAD_KARMA } public static class PedestalRecipe { diff --git a/src/main/java/com/hbm/inventory/recipes/PyroOvenRecipes.java b/src/main/java/com/hbm/inventory/recipes/PyroOvenRecipes.java index 384783d3f..1cb68724a 100644 --- a/src/main/java/com/hbm/inventory/recipes/PyroOvenRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/PyroOvenRecipes.java @@ -118,9 +118,13 @@ public class PyroOvenRecipes extends SerializableRecipe { recipes.add(new PyroOvenRecipe(60) .in(new FluidStack(GAS_COKER, 4_000)) .out(new FluidStack(Fluids.REFORMGAS, 100))); + //hydrogen and carbon from natgas + recipes.add(new PyroOvenRecipe(60) + .in(new FluidStack(Fluids.GAS, 12_000)) + .out(new FluidStack(Fluids.HYDROGEN, 8_000)).out(new ItemStack(ModItems.ingot_graphite, 1))); } - private static void registerSFAuto(FluidType fluid) { + public static void registerSFAuto(FluidType fluid) { registerSFAuto(fluid, 1_440_000L, ModItems.solid_fuel); //3200 burntime * 1.5 burntime bonus * 300 TU/t } private static void registerSFAuto(FluidType fluid, long tuPerSF, Item fuel) { diff --git a/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java b/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java index ce8b44627..d728bb2de 100644 --- a/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java @@ -18,7 +18,7 @@ import net.minecraft.item.ItemStack; public class ReformingRecipes extends SerializableRecipe { - private static HashMap> recipes = new HashMap(); + public static HashMap> recipes = new HashMap(); @Override public void registerDefaults() { diff --git a/src/main/java/com/hbm/inventory/recipes/RotaryFurnaceRecipes.java b/src/main/java/com/hbm/inventory/recipes/RotaryFurnaceRecipes.java index 8efe4b2ee..981df895e 100644 --- a/src/main/java/com/hbm/inventory/recipes/RotaryFurnaceRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/RotaryFurnaceRecipes.java @@ -47,6 +47,7 @@ public class RotaryFurnaceRecipes extends SerializableRecipe { recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_GUNMETAL, INGOT.q(4)), 200, 100, new OreDictStack(CU.ingot(), 3), new OreDictStack(AL.ingot(), 1))); recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_WEAPONSTEEL, INGOT.q(1)), 200, 400, new FluidStack(Fluids.GAS_COKER, 100), new OreDictStack(STEEL.ingot(), 1), new ComparableStack(ModItems.powder_flux, 2))); recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_SATURN, INGOT.q(2)), 200, 400, new FluidStack(Fluids.REFORMGAS, 250), new OreDictStack(DURA.dust(), 4), new OreDictStack(CU.dust()))); + recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_SATURN, INGOT.q(4)), 200, 300, new FluidStack(Fluids.REFORMGAS, 250), new OreDictStack(DURA.dust(), 4), new OreDictStack(CU.dust()), new OreDictStack(BORAX.dust()))); recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_ALUMINIUM, INGOT.q(2)), 100, 400, new FluidStack(Fluids.SODIUM_ALUMINATE, 150))); recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_ALUMINIUM, INGOT.q(3)), 40, 200, new FluidStack(Fluids.SODIUM_ALUMINATE, 150), new ComparableStack(ModItems.powder_flux, 2))); } diff --git a/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java b/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java index f3fc6a15d..4e7aed3ad 100644 --- a/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java @@ -56,7 +56,7 @@ public class SolidificationRecipes extends SerializableRecipe { //aromatics can be idfk wax or soap or sth, perhaps artificial lubricant? //on that note, add more leaded variants - private static HashMap> recipes = new HashMap(); + public static HashMap> recipes = new HashMap(); @Override public void registerDefaults() { diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index 47b60d9e2..b30c58bee 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -38,8 +38,8 @@ import net.minecraftforge.oredict.OreDictionary; public class AnvilRecipes extends SerializableRecipe { - private static List smithingRecipes = new ArrayList(); - private static List constructionRecipes = new ArrayList(); + public static List smithingRecipes = new ArrayList(); + public static List constructionRecipes = new ArrayList(); public static void register() { registerSmithing(); diff --git a/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java b/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java index 7b99b1b9f..753fb048f 100644 --- a/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java +++ b/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java @@ -29,6 +29,7 @@ import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; import com.hbm.util.Tuple.Pair; +import api.hbm.recipe.IRecipeRegisterListener; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -37,6 +38,7 @@ public abstract class SerializableRecipe { public static final Gson gson = new Gson(); public static List recipeHandlers = new ArrayList(); + public static List additionalListeners = new ArrayList(); public boolean modified = false; @@ -114,6 +116,10 @@ public abstract class SerializableRecipe { MainRegistry.logger.info("No recipe file found, registering defaults for " + recipe.getFileName()); recipe.registerDefaults(); + for(IRecipeRegisterListener listener : additionalListeners) { + listener.onRecipeLoad(recipe.getClass().getSimpleName()); + } + File recTemplate = new File(recDir.getAbsolutePath() + File.separatorChar + "_" + recipe.getFileName()); MainRegistry.logger.info("Writing template file " + recTemplate.getName()); recipe.writeTemplateFile(recTemplate); @@ -141,7 +147,7 @@ public abstract class SerializableRecipe { public abstract void writeRecipe(Object recipe, JsonWriter writer) throws IOException; /** Registers the default recipes */ public abstract void registerDefaults(); - /** Deletes all existing recipes, currenly unused */ + /** Deletes all existing recipes, currently unused */ public abstract void deleteRecipes(); /** A routine called after registering all recipes, whether it's a template or not. Good for IMC functionality. */ public void registerPost() { } diff --git a/src/main/java/com/hbm/itempool/ItemPoolsComponent.java b/src/main/java/com/hbm/itempool/ItemPoolsComponent.java index 02d14641c..5fbd16c08 100644 --- a/src/main/java/com/hbm/itempool/ItemPoolsComponent.java +++ b/src/main/java/com/hbm/itempool/ItemPoolsComponent.java @@ -22,9 +22,10 @@ public class ItemPoolsComponent { public static final String POOL_SOLID_FUEL = "POOL_SOLID_FUEL"; public static final String POOL_VAULT_LAB = "POOL_VAULT_LAB"; public static final String POOL_VAULT_LOCKERS = "POOL_VAULT_LOCKERS"; - + public static final String POOL_METEOR_SAFE = "POOL_METEOR_SAFE"; + public static void init() { - + //machine parts new ItemPool(POOL_MACHINE_PARTS) {{ this.pool = new WeightedRandomChestContent[] { @@ -47,7 +48,7 @@ public class ItemPoolsComponent { weighted(ModItems.blade_titanium, 0, 1, 8, 1) }; }}; - + //fuel isotopes found in bunkers and labs new ItemPool(POOL_NUKE_FUEL) {{ this.pool = new WeightedRandomChestContent[] { @@ -68,7 +69,7 @@ public class ItemPoolsComponent { weighted(ModItems.screwdriver, 0, 1, 1, 2) }; }}; - + //missile parts found in silos new ItemPool(POOL_SILO) {{ this.pool = new WeightedRandomChestContent[] { @@ -86,7 +87,7 @@ public class ItemPoolsComponent { weighted(ModItems.bottle_nuka, 0, 1, 3, 10) }; }}; - + //low quality items from offices in chests new ItemPool(POOL_OFFICE_TRASH) {{ this.pool = new WeightedRandomChestContent[] { @@ -105,7 +106,7 @@ public class ItemPoolsComponent { weighted(ModBlocks.deco_computer, 0, 1, 1, 1) }; }}; - + //things found in various filing cabinets, paper, books, etc new ItemPool(POOL_FILING_CABINET) {{ this.pool = new WeightedRandomChestContent[] { @@ -120,7 +121,7 @@ public class ItemPoolsComponent { weighted(ModItems.ink, 0, 1, 1, 1) }; }}; - + //solid fuels from bunker power rooms new ItemPool(POOL_SOLID_FUEL) {{ this.pool = new WeightedRandomChestContent[] { @@ -132,7 +133,7 @@ public class ItemPoolsComponent { weighted(ModItems.niter, 0, 1, 3, 1) }; }}; - + //various lab related items from bunkers new ItemPool(POOL_VAULT_LAB) {{ this.pool = new WeightedRandomChestContent[] { @@ -153,7 +154,7 @@ public class ItemPoolsComponent { weighted(ModItems.powder_boron, 0, 1, 1, 1) }; }}; - + //personal items and gear from vaults new ItemPool(POOL_VAULT_LOCKERS) {{ this.pool = new WeightedRandomChestContent[] { @@ -181,5 +182,20 @@ public class ItemPoolsComponent { weighted(Items.experience_bottle, 0, 1, 3, 1) }; }}; + + // Black Book safe in meteor dungeons + new ItemPool(POOL_METEOR_SAFE) {{ + this.pool = new WeightedRandomChestContent[] { + weighted(ModItems.book_of_, 0, 1, 1, 1), + weighted(ModItems.stamp_book, 0, 1, 1, 1), + weighted(ModItems.stamp_book, 1, 1, 1, 1), + weighted(ModItems.stamp_book, 2, 1, 1, 1), + weighted(ModItems.stamp_book, 3, 1, 1, 1), + weighted(ModItems.stamp_book, 4, 1, 1, 1), + weighted(ModItems.stamp_book, 5, 1, 1, 1), + weighted(ModItems.stamp_book, 6, 1, 1, 1), + weighted(ModItems.stamp_book, 7, 1, 1, 1), + }; + }}; } } diff --git a/src/main/java/com/hbm/itempool/ItemPoolsRedRoom.java b/src/main/java/com/hbm/itempool/ItemPoolsRedRoom.java index 690f2580e..4b1c88353 100644 --- a/src/main/java/com/hbm/itempool/ItemPoolsRedRoom.java +++ b/src/main/java/com/hbm/itempool/ItemPoolsRedRoom.java @@ -30,6 +30,7 @@ public class ItemPoolsRedRoom { weighted(ModItems.heart_container, 0, 1, 1, 10), weighted(ModItems.black_diamond, 0, 1, 1, 10), weighted(ModItems.scrumpy, 0, 1, 1, 10), + weighted(ModItems.wild_p, 0, 1, 1, 5), weighted(ModItems.card_aos, 0, 1, 1, 5), weighted(ModItems.card_qos, 0, 1, 1, 5), @@ -39,6 +40,9 @@ public class ItemPoolsRedRoom { weighted(ModItems.flask_infusion, 0, 1, 1, 5), weighted(ModBlocks.boxcar, 0, 1, 1, 5), weighted(ModItems.book_of_, 0, 1, 1, 5), + + weighted(ModItems.gun_hangman, 0, 1, 1, 1), + weighted(ModItems.gun_mas36, 0, 1, 1, 1), }; }}; diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index a1e46e603..724ddd405 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1226,10 +1226,7 @@ public class ModItems { public static Item siren_track; public static Item fluid_duct; - public static Item bobmazon_materials; - public static Item bobmazon_machines; - public static Item bobmazon_weapons; - public static Item bobmazon_tools; + public static Item bobmazon; public static Item bobmazon_hidden; public static Item launch_code_piece; @@ -1420,7 +1417,6 @@ public class ModItems { public static Item missile_custom; - public static Item missile_carrier; public static Item missile_soyuz; public static Item missile_soyuz_lander; public static Item sat_mapper; @@ -1498,6 +1494,7 @@ public class ModItems { public static Item gun_lasrifle; public static Item gun_coilgun; public static Item gun_hangman; + public static Item gun_mas36; public static Item gun_bolter; public static Item gun_folly; public static Item gun_aberrator; @@ -2896,7 +2893,7 @@ public class ModItems { demon_core_open = new ItemDemonCore().setUnlocalizedName("demon_core_open").setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":demon_core_open"); demon_core_closed = new Item().setUnlocalizedName("demon_core_closed").setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":demon_core_closed"); - pa_coil = new ItemPACoil().setUnlocalizedName("pa_coil").setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":pa_coil"); + pa_coil = new ItemPACoil().setUnlocalizedName("pa_coil").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pa_coil"); particle_empty = new Item().setUnlocalizedName("particle_empty").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":particle_empty"); particle_hydrogen = new Item().setUnlocalizedName("particle_hydrogen").setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.particle_empty).setTextureName(RefStrings.MODID + ":particle_hydrogen"); @@ -3025,7 +3022,8 @@ public class ModItems { iv_empty = new ItemSimpleConsumable().setUseActionServer((stack, user) -> { if(user.hurtResistantTime <= 0) { ItemSimpleConsumable.giveSoundAndDecrement(stack, user, "hbm:item.syringe", new ItemStack(ModItems.iv_blood)); - user.attackEntityFrom(DamageSource.magic, 5F); + user.setHealth(Math.max(user.getHealth() - 5F, 0F)); + if(user.getHealth() <= 0) user.onDeath(DamageSource.magic); } }).setUnlocalizedName("iv_empty").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":iv_empty"); @@ -3077,7 +3075,7 @@ public class ModItems { gas_mask_filter_combo = new ItemFilter().setUnlocalizedName("gas_mask_filter_combo").setTextureName(RefStrings.MODID + ":gas_mask_filter_combo"); gas_mask_filter_rag = new ItemFilter().setUnlocalizedName("gas_mask_filter_rag").setTextureName(RefStrings.MODID + ":gas_mask_filter_rag"); gas_mask_filter_piss = new ItemFilter().setUnlocalizedName("gas_mask_filter_piss").setTextureName(RefStrings.MODID + ":gas_mask_filter_piss"); - jetpack_tank = new ItemSyringe().setUnlocalizedName("jetpack_tank").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":jetpack_tank"); + jetpack_tank = new ItemSyringe().setUnlocalizedName("jetpack_tank").setMaxStackSize(16).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":jetpack_tank"); gun_kit_1 = new ItemRepairKit(10).setUnlocalizedName("gun_kit_1").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":gun_kit_1"); gun_kit_2 = new ItemRepairKit(100).setUnlocalizedName("gun_kit_2").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":gun_kit_2"); cbt_device = new ItemSyringe().setUnlocalizedName("cbt_device").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":cbt_device"); @@ -3652,7 +3650,6 @@ public class ModItems { missile_shuttle = new ItemMissile(MissileFormFactor.OTHER, MissileTier.TIER3, MissileFuel.KEROSENE_PEROXIDE).setUnlocalizedName("missile_shuttle").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_shuttle"); missile_stealth = new ItemMissile(MissileFormFactor.STRONG, MissileTier.TIER1).setUnlocalizedName("missile_stealth").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_stealth"); missile_test = new ItemMissile(MissileFormFactor.MICRO, MissileTier.TIER0).setUnlocalizedName("missile_test").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":missile_micro"); - missile_carrier = new Item().setUnlocalizedName("missile_carrier").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":missile_carrier"); missile_soyuz = new ItemSoyuz().setUnlocalizedName("missile_soyuz").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":soyuz"); missile_soyuz_lander = new ItemCustomLore().setUnlocalizedName("missile_soyuz_lander").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":soyuz_lander"); missile_custom = new ItemCustomMissile().setUnlocalizedName("missile_custom").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":missile_custom"); @@ -3833,7 +3830,7 @@ public class ModItems { gun_b92_ammo = new GunB92Cell().setUnlocalizedName("gun_b92_ammo").setMaxStackSize(1).setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_b92_ammo_alt"); gun_b92 = new GunB92().setUnlocalizedName("gun_b92").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_b92"); gun_cryolator_ammo = new Item().setUnlocalizedName("gun_cryolator_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_cryolator_ammo"); - gun_cryocannon = new ItemCryoCannon(GunEnergyFactory.getCryoCannonConfig()).setUnlocalizedName("gun_cryocannon").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_cryocannon"); + gun_cryocannon = new ItemCryoCannon(GunEnergyFactory.getCryoCannonConfig()).setUnlocalizedName("gun_cryocannon").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_darter"); gun_fireext = new ItemGunBase(GunEnergyFactory.getExtConfig()).setUnlocalizedName("gun_fireext").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fireext"); ToolMaterial matCrucible = EnumHelper.addToolMaterial("CRUCIBLE", 10, 3, 50.0F, 100.0F, 0); @@ -4225,10 +4222,7 @@ public class ModItems { siren_track = new ItemCassette().setUnlocalizedName("siren_track").setMaxStackSize(1).setCreativeTab(MainRegistry.templateTab).setTextureName(RefStrings.MODID + ":cassette"); fluid_duct = new ItemFluidDuct().setUnlocalizedName("fluid_duct").setCreativeTab(MainRegistry.templateTab).setTextureName(RefStrings.MODID + ":duct"); - bobmazon_materials = new ItemCatalog().setUnlocalizedName("bobmazon_materials").setMaxStackSize(1).setCreativeTab(MainRegistry.templateTab).setTextureName(RefStrings.MODID + ":bobmazon_materials"); - bobmazon_machines = new ItemCatalog().setUnlocalizedName("bobmazon_machines").setMaxStackSize(1).setCreativeTab(MainRegistry.templateTab).setTextureName(RefStrings.MODID + ":bobmazon_machines"); - bobmazon_weapons = new ItemCatalog().setUnlocalizedName("bobmazon_weapons").setMaxStackSize(1).setCreativeTab(MainRegistry.templateTab).setTextureName(RefStrings.MODID + ":bobmazon_weapons"); - bobmazon_tools = new ItemCatalog().setUnlocalizedName("bobmazon_tools").setMaxStackSize(1).setCreativeTab(MainRegistry.templateTab).setTextureName(RefStrings.MODID + ":bobmazon_tools"); + bobmazon = new ItemCatalog().setUnlocalizedName("bobmazon").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":bobmazon"); bobmazon_hidden = new ItemCatalog().setUnlocalizedName("bobmazon_hidden").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":bobmazon_special"); euphemium_helmet = new ArmorEuphemium(MainRegistry.aMatEuph, 0).setUnlocalizedName("euphemium_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":euphemium_helmet"); @@ -5840,10 +5834,7 @@ public class ModItems { GameRegistry.registerItem(journal_pip, journal_pip.getUnlocalizedName()); GameRegistry.registerItem(journal_bj, journal_bj.getUnlocalizedName()); GameRegistry.registerItem(journal_silver, journal_silver.getUnlocalizedName()); - GameRegistry.registerItem(bobmazon_materials, bobmazon_materials.getUnlocalizedName()); - GameRegistry.registerItem(bobmazon_machines, bobmazon_machines.getUnlocalizedName()); - GameRegistry.registerItem(bobmazon_weapons, bobmazon_weapons.getUnlocalizedName()); - GameRegistry.registerItem(bobmazon_tools, bobmazon_tools.getUnlocalizedName()); + GameRegistry.registerItem(bobmazon, bobmazon.getUnlocalizedName()); GameRegistry.registerItem(bobmazon_hidden, bobmazon_hidden.getUnlocalizedName()); //Hydraulic Press Stamps @@ -6230,7 +6221,7 @@ public class ModItems { GameRegistry.registerItem(plastic_bag, plastic_bag.getUnlocalizedName()); GameRegistry.registerItem(casing_bag, casing_bag.getUnlocalizedName()); - + //Keys and Locks GameRegistry.registerItem(key, key.getUnlocalizedName()); GameRegistry.registerItem(key_red, key_red.getUnlocalizedName()); @@ -6282,7 +6273,6 @@ public class ModItems { GameRegistry.registerItem(missile_doomsday, missile_doomsday.getUnlocalizedName()); GameRegistry.registerItem(missile_doomsday_rusted, missile_doomsday_rusted.getUnlocalizedName()); //Rockets - GameRegistry.registerItem(missile_carrier, missile_carrier.getUnlocalizedName()); GameRegistry.registerItem(missile_soyuz, missile_soyuz.getUnlocalizedName()); GameRegistry.registerItem(missile_soyuz_lander, missile_soyuz_lander.getUnlocalizedName()); GameRegistry.registerItem(missile_custom, missile_custom.getUnlocalizedName()); @@ -6493,6 +6483,7 @@ public class ModItems { GameRegistry.registerItem(gun_lasrifle, gun_lasrifle.getUnlocalizedName()); GameRegistry.registerItem(gun_coilgun, gun_coilgun.getUnlocalizedName()); GameRegistry.registerItem(gun_hangman, gun_hangman.getUnlocalizedName()); + GameRegistry.registerItem(gun_mas36, gun_mas36.getUnlocalizedName()); GameRegistry.registerItem(gun_bolter, gun_bolter.getUnlocalizedName()); GameRegistry.registerItem(gun_folly, gun_folly.getUnlocalizedName()); GameRegistry.registerItem(gun_aberrator, gun_aberrator.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/armor/ItemModNightVision.java b/src/main/java/com/hbm/items/armor/ItemModNightVision.java index 6418a88bc..305819aaf 100644 --- a/src/main/java/com/hbm/items/armor/ItemModNightVision.java +++ b/src/main/java/com/hbm/items/armor/ItemModNightVision.java @@ -1,10 +1,12 @@ package com.hbm.items.armor; +import com.hbm.extprop.HbmPlayerProps; import com.hbm.handler.ArmorModHandler; import net.minecraft.client.resources.I18n; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.util.EnumChatFormatting; @@ -12,6 +14,8 @@ import net.minecraft.util.EnumChatFormatting; import java.util.List; public class ItemModNightVision extends ItemArmorMod { + private static final String NIGHT_VISION_ACTIVE_NBT_KEY = "ITEM_MOD_NV_ACTIVE"; + public ItemModNightVision() { super(ArmorModHandler.helmet_only, true, false, false, false); } @@ -31,10 +35,22 @@ public class ItemModNightVision extends ItemArmorMod { @Override public void modUpdate(EntityLivingBase entity, ItemStack armor) { if(!entity.worldObj.isRemote && entity instanceof EntityPlayer && armor.getItem() instanceof ArmorFSBPowered && ArmorFSBPowered.hasFSBArmor((EntityPlayer) entity)) { - entity.addPotionEffect(new PotionEffect(Potion.nightVision.id, 15 * 20, 0)); + if(HbmPlayerProps.getData(((EntityPlayer) entity)).enableHUD) { + // 15 seconds to make less flickering if the client lags + entity.addPotionEffect(new PotionEffect(Potion.nightVision.id, 15 * 20, 0)); + if(!armor.hasTagCompound()) { + armor.setTagCompound(new NBTTagCompound()); + } + if(!armor.getTagCompound().hasKey(NIGHT_VISION_ACTIVE_NBT_KEY)) { + armor.getTagCompound().setBoolean(NIGHT_VISION_ACTIVE_NBT_KEY, true); // Value does not matter, it's just a flag + } - if(entity.getRNG().nextInt(100) == 0) { - armor.damageItem(1, entity); + if (entity.getRNG().nextInt(100) == 0) { + armor.damageItem(1, entity); + } + } else if(armor.hasTagCompound() && armor.getTagCompound().hasKey(NIGHT_VISION_ACTIVE_NBT_KEY)) { // Disable night vision if it was the armor mod that applied it to avoid removing other night vision sources. + entity.removePotionEffect(Potion.nightVision.id); + armor.getTagCompound().removeTag(NIGHT_VISION_ACTIVE_NBT_KEY); } } } diff --git a/src/main/java/com/hbm/items/block/ItemTaintBlock.java b/src/main/java/com/hbm/items/block/ItemTaintBlock.java deleted file mode 100644 index 2f048d02a..000000000 --- a/src/main/java/com/hbm/items/block/ItemTaintBlock.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.hbm.items.block; - -import java.util.List; - -import com.hbm.blocks.bomb.BlockTaint; - -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.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.util.IIcon; - -public class ItemTaintBlock extends ItemBlock -{ - public ItemTaintBlock(Block p_i45358_1_) - { - super(p_i45358_1_); - this.setMaxDamage(0); - this.setHasSubtypes(true); - } - - @SideOnly(Side.CLIENT) - public IIcon getIconFromDamage(int p_77617_1_) - { - return this.field_150939_a.func_149735_b(2, BlockTaint.func_150032_b(p_77617_1_)); - } - - public int getMetadata(int p_77647_1_) - { - return p_77647_1_; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) - { - list.add("DO NOT TOUCH, BREATHE OR STARE AT."); - } -} diff --git a/src/main/java/com/hbm/items/machine/ItemAssemblyTemplate.java b/src/main/java/com/hbm/items/machine/ItemAssemblyTemplate.java index d3e58e448..f7bad43dd 100644 --- a/src/main/java/com/hbm/items/machine/ItemAssemblyTemplate.java +++ b/src/main/java/com/hbm/items/machine/ItemAssemblyTemplate.java @@ -168,14 +168,11 @@ public class ItemAssemblyTemplate extends Item { return; } - boolean nbtType = true; - //NEW ComparableStack out = readType(stack); //LEGACY if(out == null) { out = AssemblerRecipes.recipeList.get(i); - nbtType = false; } AssemblerRecipe recipe = AssemblerRecipes.recipes.get(out); @@ -202,13 +199,6 @@ public class ItemAssemblyTemplate extends Item { } list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("info.templatefolder", String.join(" / ", names))); - - if(nbtType) { - list.add(EnumChatFormatting.GREEN + "Persistent template"); - } else { - list.add(EnumChatFormatting.RED + "Volatile template"); - } - list.add(""); if(out == null) { diff --git a/src/main/java/com/hbm/items/machine/ItemRBMKLid.java b/src/main/java/com/hbm/items/machine/ItemRBMKLid.java index 853fe918f..87e59ca73 100644 --- a/src/main/java/com/hbm/items/machine/ItemRBMKLid.java +++ b/src/main/java/com/hbm/items/machine/ItemRBMKLid.java @@ -20,46 +20,46 @@ public class ItemRBMKLid extends Item { @Override public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float fx, float fy, float fz) { - + Block b = world.getBlock(x, y, z); - + if(b instanceof RBMKBase) { RBMKBase rbmk = (RBMKBase) b; - + int[] pos = rbmk.findCore(world, x, y, z); - + if(pos == null) return false; - + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); - + if(!(te instanceof TileEntityRBMKBase)) return false; - + TileEntityRBMKBase tile = (TileEntityRBMKBase) te; - + if(tile.hasLid()) return false; - RBMKNeutronNode node = (RBMKNeutronNode) NeutronNodeWorld.getNode(new BlockPos(te)); - if (node != null) + RBMKNeutronNode node = (RBMKNeutronNode) NeutronNodeWorld.getNode(world, new BlockPos(te)); + if(node != null) node.addLid(); int meta = RBMKBase.DIR_NORMAL_LID.ordinal(); - + if(this == ModItems.rbmk_lid_glass) { meta = RBMKBase.DIR_GLASS_LID.ordinal(); world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, Blocks.glass.stepSound.func_150496_b(), (Blocks.glass.stepSound.getVolume() + 1.0F) / 2.0F, Blocks.glass.stepSound.getPitch() * 0.8F); } else { world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, ModBlocks.concrete_smooth.stepSound.func_150496_b(), (ModBlocks.concrete_smooth.stepSound.getVolume() + 1.0F) / 2.0F, ModBlocks.concrete_smooth.stepSound.getPitch() * 0.8F); } - + world.setBlockMetadataWithNotify(pos[0], pos[1], pos[2], meta + RBMKBase.offset, 3); stack.stackSize--; - + return true; } - + return false; } } diff --git a/src/main/java/com/hbm/items/machine/ItemTemplateFolder.java b/src/main/java/com/hbm/items/machine/ItemTemplateFolder.java index a459e3fee..be0883149 100644 --- a/src/main/java/com/hbm/items/machine/ItemTemplateFolder.java +++ b/src/main/java/com/hbm/items/machine/ItemTemplateFolder.java @@ -6,6 +6,7 @@ import com.hbm.inventory.gui.GUIScreenTemplateFolder; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IGUIProvider; +import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; @@ -14,6 +15,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; public class ItemTemplateFolder extends Item implements IGUIProvider { @@ -31,8 +33,9 @@ public class ItemTemplateFolder extends Item implements IGUIProvider { public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { String[] lang = I18nUtil.resolveKeyArray(ModItems.template_folder.getUnlocalizedName() + ".desc"); + EnumChatFormatting color = BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.YELLOW; for(String line : lang) { - list.add(line); + list.add(color + line); } } diff --git a/src/main/java/com/hbm/items/special/ItemSyringe.java b/src/main/java/com/hbm/items/special/ItemSyringe.java index 48b6e928b..b8aad87e1 100644 --- a/src/main/java/com/hbm/items/special/ItemSyringe.java +++ b/src/main/java/com/hbm/items/special/ItemSyringe.java @@ -48,7 +48,7 @@ public class ItemSyringe extends Item { if(!player.inventory.addItemStackToInventory(new ItemStack(ModItems.syringe_empty))) { player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.syringe_empty, 1, 0), false); } - + VersatileConfig.applyPotionSickness(player, 5); } } @@ -77,7 +77,7 @@ public class ItemSyringe extends Item { if(!player.inventory.addItemStackToInventory(new ItemStack(ModItems.syringe_empty))) { player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.syringe_empty, 1, 0), false); } - + VersatileConfig.applyPotionSickness(player, 50); } } @@ -116,7 +116,7 @@ public class ItemSyringe extends Item { if(!player.inventory.addItemStackToInventory(new ItemStack(ModItems.syringe_metal_empty))) { player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.syringe_metal_empty, 1, 0), false); } - + VersatileConfig.applyPotionSickness(player, 5); } } @@ -135,7 +135,7 @@ public class ItemSyringe extends Item { if(!player.inventory.addItemStackToInventory(new ItemStack(ModItems.syringe_metal_empty))) { player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.syringe_metal_empty, 1, 0), false); } - + VersatileConfig.applyPotionSickness(player, 5); } } @@ -155,7 +155,7 @@ public class ItemSyringe extends Item { if(!player.inventory.addItemStackToInventory(new ItemStack(ModItems.syringe_metal_empty))) { player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.syringe_metal_empty, 1, 0), false); } - + VersatileConfig.applyPotionSickness(player, 5); } } @@ -175,7 +175,7 @@ public class ItemSyringe extends Item { if(!player.inventory.addItemStackToInventory(new ItemStack(ModItems.syringe_metal_empty))) { player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.syringe_metal_empty, 1, 0), false); } - + VersatileConfig.applyPotionSickness(player, 15); } } @@ -193,7 +193,7 @@ public class ItemSyringe extends Item { player.removePotionEffect(Potion.weakness.id); player.removePotionEffect(Potion.wither.id); player.removePotionEffect(HbmPotion.radiation.id); - + VersatileConfig.applyPotionSickness(player, 15); stack.stackSize--; @@ -283,18 +283,17 @@ public class ItemSyringe extends Item { return stack; IFillableItem fillable = (IFillableItem) jetpack.getItem(); - + if(!fillable.acceptsFluid(Fluids.KEROSENE, jetpack)) return stack; - - fillable.tryFill(Fluids.KEROSENE, 1000, jetpack); - + + if(fillable.tryFill(Fluids.KEROSENE, 1000, jetpack) < 1000) { + world.playSoundAtEntity(player, "hbm:item.jetpackTank", 1.0F, 1.0F); + stack.stackSize--; + } + if(jetpack.getItem() != player.inventory.armorInventory[2].getItem()) ArmorModHandler.applyMod(player.inventory.armorInventory[2], jetpack); - - world.playSoundAtEntity(player, "hbm:item.jetpackTank", 1.0F, 1.0F); - - stack.stackSize--; } } @@ -386,11 +385,11 @@ public class ItemSyringe extends Item { if(this == ModItems.syringe_awesome && !VersatileConfig.hasPotionSickness(entity)) { if(!world.isRemote) { - + if(entity instanceof EntityCow) { - + entity.addPotionEffect(new PotionEffect(HbmPotion.bang.id, 40, 0)); - + } else { entity.addPotionEffect(new PotionEffect(Potion.regeneration.id, 50 * 20, 9)); entity.addPotionEffect(new PotionEffect(Potion.resistance.id, 50 * 20, 9)); @@ -592,7 +591,7 @@ public class ItemSyringe extends Item { if(this == ModItems.gun_kit_2) { list.add("Repairs all weapons in hotbar by 50%"); } - + if(this == ModItems.syringe_mkunicorn) { list.add(EnumChatFormatting.RED + "?"); } diff --git a/src/main/java/com/hbm/items/tool/ItemCatalog.java b/src/main/java/com/hbm/items/tool/ItemCatalog.java index 1f679a88a..5bf610aa7 100644 --- a/src/main/java/com/hbm/items/tool/ItemCatalog.java +++ b/src/main/java/com/hbm/items/tool/ItemCatalog.java @@ -20,10 +20,7 @@ public class ItemCatalog extends Item implements IGUIProvider { @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - - if(world.isRemote) - player.openGui(MainRegistry.instance, 0, world, 0, 0, 0); - + if(world.isRemote) player.openGui(MainRegistry.instance, 0, world, 0, 0, 0); return stack; } @@ -46,7 +43,6 @@ public class ItemCatalog extends Item implements IGUIProvider { public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { if(BobmazonOfferFactory.getOffers(player.getHeldItem()) != null) return new GUIScreenBobmazon(player, BobmazonOfferFactory.getOffers(player.getHeldItem())); - return null; } } diff --git a/src/main/java/com/hbm/items/tool/ItemWandS.java b/src/main/java/com/hbm/items/tool/ItemWandS.java index 303a3114f..2de5998fb 100644 --- a/src/main/java/com/hbm/items/tool/ItemWandS.java +++ b/src/main/java/com/hbm/items/tool/ItemWandS.java @@ -1,7 +1,156 @@ package com.hbm.items.tool; +import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.text.DateFormat; +import java.text.SimpleDateFormat; + +import com.hbm.blocks.ModBlocks; +import com.hbm.util.BobMathUtil; +import com.hbm.util.Tuple.Pair; +import com.hbm.world.gen.NBTStructure; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; public class ItemWandS extends Item { - -} + + private static final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd_HH.mm.ss"); + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { + list.add("Creative-only item"); + list.add("\"Replication breeds decadence\""); + list.add("(Saves an area defined by two right-clicks,"); + list.add("adds a block to the blacklist by crouch right-clicking!)"); + + if(stack.stackTagCompound != null) { + int px = stack.stackTagCompound.getInteger("x"); + int py = stack.stackTagCompound.getInteger("y"); + int pz = stack.stackTagCompound.getInteger("z"); + + if(px != 0 || py != 0 || pz != 0) { + list.add(EnumChatFormatting.AQUA + "From: " + px + ", " + py + ", " + pz); + } else { + list.add(EnumChatFormatting.AQUA + "No start position set"); + } + + Set> blocks = getBlocks(stack); + + if(blocks.size() > 0) { + list.add("Blacklist:"); + for(Pair block : blocks) { + list.add(EnumChatFormatting.RED + "- " + block.key.getUnlocalizedName()); + } + } + } + } + + // why the fuck ye'd leave this whole thing obfuscated is beyond me + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float fx, float fy, float fz) { + if(stack.stackTagCompound == null) { + stack.stackTagCompound = new NBTTagCompound(); + } + + if(player.isSneaking()) { + Pair target = new Pair(world.getBlock(x, y, z), world.getBlockMetadata(x, y, z)); + Set> blocks = getBlocks(stack); + + if(blocks.contains(target)) { + blocks.remove(target); + if(world.isRemote) player.addChatMessage(new ChatComponentText("Removed from blacklist " + target.key.getUnlocalizedName())); + } else { + blocks.add(target); + if(world.isRemote) player.addChatMessage(new ChatComponentText("Added to blacklist " + target.key.getUnlocalizedName())); + } + + setBlocks(stack, blocks); + + } else { + int px = stack.stackTagCompound.getInteger("x"); + int py = stack.stackTagCompound.getInteger("y"); + int pz = stack.stackTagCompound.getInteger("z"); + + if(px == 0 && py == 0 && pz == 0) { + setPosition(stack, x, y, z); + + if(world.isRemote) player.addChatMessage(new ChatComponentText("First position set!")); + } else { + setPosition(stack, 0, 0, 0); + + Set> blocks = getBlocks(stack); + blocks.add(new Pair(Blocks.air, 0)); + blocks.add(new Pair(ModBlocks.spotlight_beam, 0)); + + String filename = "structure_" + dateFormat.format(new Date()).toString() + ".nbt"; + + NBTStructure.saveArea(filename, world, x, y, z, px, py, pz, blocks); + + if(world.isRemote) player.addChatMessage(new ChatComponentText("Structure saved to: .minecraft/structures/" + filename)); + } + } + + return true; + } + + private void setPosition(ItemStack stack, int x, int y, int z) { + stack.stackTagCompound.setInteger("x", x); + stack.stackTagCompound.setInteger("y", y); + stack.stackTagCompound.setInteger("z", z); + } + + private Set> getBlocks(ItemStack stack) { + if(stack.stackTagCompound == null) { + return new HashSet<>(); + } + + int[] blockIds = stack.stackTagCompound.getIntArray("blocks"); + int[] metas = stack.stackTagCompound.getIntArray("metas"); + Set> blocks = new HashSet<>(blockIds.length); + + for(int i = 0; i < blockIds.length; i++) { + blocks.add(new Pair(Block.getBlockById(blockIds[i]), metas[i])); + } + + return blocks; + } + + @SuppressWarnings("unchecked") + private void setBlocks(ItemStack stack, Set> blocks) { + if(stack.stackTagCompound == null) { + stack.stackTagCompound = new NBTTagCompound(); + } + + stack.stackTagCompound.setIntArray("blocks", BobMathUtil.collectionToIntArray(blocks, i -> Block.getIdFromBlock(((Pair)i).getKey()))); + stack.stackTagCompound.setIntArray("metas", BobMathUtil.collectionToIntArray(blocks, i -> ((Pair)i).getValue())); + } + + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { + if(stack.stackTagCompound == null) { + stack.stackTagCompound = new NBTTagCompound(); + } + + if(player.isSneaking()) { + stack.stackTagCompound.setIntArray("blocks", new int[0]); + stack.stackTagCompound.setIntArray("metas", new int[0]); + + if(world.isRemote) { + player.addChatMessage(new ChatComponentText("Cleared blacklist")); + } + } + + return stack; + } + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java b/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java index 58103bf86..ff3bb0829 100644 --- a/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java +++ b/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java @@ -184,7 +184,7 @@ public class ItemAmmoArty extends Item { return "item." + itemTypes[Math.abs(stack.getItemDamage()) % itemTypes.length].name; } - protected static SpentCasing SIXTEEN_INCH_CASE = new SpentCasing(CasingType.STRAIGHT).setScale(15F, 15F, 10F).setupSmoke(1F, 1D, 200, 60).setMaxAge(300); + protected static SpentCasing SIXTEEN_INCH_CASE = new SpentCasing(CasingType.STRAIGHT).setScale(15F, 15F, 10F).setupSmoke(1F, 1D, 200, 60).setMaxAge(300).setBounceMotion(1F, 0.5F); public abstract class ArtilleryShell { diff --git a/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java b/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java index 49d84dd35..0fac30620 100644 --- a/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java +++ b/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java @@ -54,7 +54,7 @@ public class ItemAmmoHIMARS extends Item { public ItemAmmoHIMARS() { this.setHasSubtypes(true); this.setCreativeTab(MainRegistry.weaponTab); - this.setTextureName(RefStrings.MODID + ":ammo_rocket"); + this.setTextureName(RefStrings.MODID + ":ammo_standard.rocket_he"); this.setMaxStackSize(1); init(); } diff --git a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java index ce88b06df..96a9b099f 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java +++ b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java @@ -5,6 +5,7 @@ import java.util.List; import java.util.concurrent.ConcurrentHashMap; import java.util.function.BiConsumer; +import com.hbm.config.GeneralConfig; import com.hbm.handler.HbmKeybinds.EnumKeybind; import com.hbm.interfaces.IItemHUD; import com.hbm.items.IEquipReceiver; @@ -169,6 +170,8 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipRecei } public void handleKeybind(EntityLivingBase entity, IInventory inventory, ItemStack stack, EnumKeybind keybind, boolean newState) { + if(!GeneralConfig.enableGuns) return; + int configs = this.configs_DNA.length; for(int i = 0; i < configs; i++) { diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java b/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java index 8509bcac7..10745b90d 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java @@ -2,6 +2,7 @@ package com.hbm.items.weapon.sedna.factory; import java.util.Locale; +import com.hbm.entity.mob.*; import com.hbm.handler.threading.PacketThreading; import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.particle.helper.AshesCreator; @@ -10,6 +11,8 @@ import com.hbm.util.DamageResistanceHandler.DamageClass; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.monster.EntitySkeleton; +import net.minecraft.entity.monster.EntitySlime; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.DamageSource; import net.minecraft.util.MathHelper; @@ -39,6 +42,12 @@ public class ConfettiUtil { } public static void gib(EntityLivingBase entity) { + if(entity instanceof EntityCyberCrab) return; + if(entity instanceof EntityTeslaCrab) return; + if(entity instanceof EntityTaintCrab) return; + if(entity instanceof EntitySkeleton) return; + if(entity instanceof EntitySlime) return; + NBTTagCompound vdat = new NBTTagCompound(); vdat.setString("type", "giblets"); vdat.setInteger("ent", entity.getEntityId()); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java index 93775156f..7429db1ab 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java @@ -21,7 +21,7 @@ public class GunFactory { public static BulletConfig ammo_debug; - public static SpentCasing CASING44 = new SpentCasing(CasingType.STRAIGHT).setScale(1.5F, 1.0F, 1.5F).setBounceMotion(0.01F, 0.05F).setColor(SpentCasing.COLOR_CASE_44); + public static SpentCasing CASING44 = new SpentCasing(CasingType.STRAIGHT).setScale(1.5F, 1.0F, 1.5F).setColor(SpentCasing.COLOR_CASE_44); public static void init() { diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java index 81daf1584..c6aa1a0a4 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java @@ -81,6 +81,7 @@ public class GunFactoryClient { MinecraftForgeClient.registerItemRenderer(ModItems.gun_lasrifle, new ItemRenderLasrifle()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_coilgun, new ItemRenderCoilgun()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_hangman, new ItemRenderHangman()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_mas36, new ItemRenderMAS36()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolter, new ItemRenderBolter()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_folly, new ItemRenderFolly()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_aberrator, new ItemRenderAberrator()); @@ -193,7 +194,7 @@ public class GunFactoryClient { folly_sm.setRendererBeam(LegoClient.RENDER_FOLLY); folly_nuke.setRenderer(LegoClient.RENDER_BIG_NUKE); - p35800.setRendererBeam(LegoClient.RENDER_LASER_WHITE); + p35800.setRendererBeam(LegoClient.RENDER_CRACKLE); setRendererBulk(LegoClient.RENDER_GRENADE, shell_normal, shell_explosive, shell_ap, shell_du, shell_w9); //TODO: change the sabots @@ -239,6 +240,7 @@ public class GunFactoryClient { ((ItemGunBaseNT) ModItems.gun_lasrifle) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_coilgun) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_hangman) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_mas36) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_bolter) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_folly) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_aberrator) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_AMMO); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java b/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java index 693180de3..d00796660 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java @@ -22,6 +22,7 @@ import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; import com.hbm.items.weapon.sedna.ItemGunBaseNT.SmokeNode; import com.hbm.items.weapon.sedna.Receiver; import com.hbm.items.weapon.sedna.mags.IMagazine; +import com.hbm.main.MainRegistry; import com.hbm.particle.helper.BlackPowderCreator; import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationSequence; @@ -238,6 +239,7 @@ public class Lego { } } + if(player != null) player.addStat(MainRegistry.statBullets, 1); mag.useUpAmmo(stack, ctx.inventory, 1); if(calcWear) ItemGunBaseNT.setWear(stack, index, Math.min(ItemGunBaseNT.getWear(stack, index) + config.wear, ctx.config.getDurability(stack))); } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java b/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java index d59fc4960..bd3500d01 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java @@ -318,6 +318,25 @@ public class LegoClient { GL11.glPopMatrix(); RenderArcFurnace.fullbright(false); }; + + public static BiConsumer RENDER_CRACKLE = (bullet, interp) -> { + + RenderArcFurnace.fullbright(true); + double age = MathHelper.clamp_double(1D - ((double) bullet.ticksExisted - 2 + interp) / (double) bullet.getBulletConfig().expires, 0, 1); + + GL11.glPushMatrix(); + GL11.glRotatef(180 - bullet.rotationYaw, 0, 1F, 0); + GL11.glRotatef(-bullet.rotationPitch - 90, 1F, 0, 0); + + double scale = 5D; + GL11.glScaled(age * scale, 1, age * scale); + GL11.glTranslated(0, bullet.beamLength, 0); + GL11.glRotatef(-90, 0, 0, 1); + renderBulletStandard(Tessellator.instance, 0xE3D692, 0xffffff, bullet.beamLength, true); + + GL11.glPopMatrix(); + RenderArcFurnace.fullbright(false); + }; public static BiConsumer RENDER_LASER_RED = (bullet, interp) -> { renderStandardLaser(bullet, interp, 0x80, 0x15, 0x15); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java index 363004a32..53363d648 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java @@ -173,7 +173,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 14) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.5, -0.125, aiming ? -0.125 : -0.375D, 0, 0.12, -0.12, 0.01, casing.getName(), true, 60, 0.5D, 20); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.5, -0.125, aiming ? -0.125 : -0.375D, 0, 0.12, -0.12, 0.01, -7.5F + (float)entity.getRNG().nextGaussian() * 5F, (float)entity.getRNG().nextGaussian() * 1.5F, casing.getName(), true, 60, 0.5D, 20); } if(timer == 12) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.leverCock", 1F, 1F); } @@ -196,7 +196,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 2) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.55, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, casing.getName()); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.55, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, -7.5F + (float)entity.getRNG().nextGaussian() * 5F, 12F + (float)entity.getRNG().nextGaussian() * 5F, casing.getName()); } } if(type == AnimType.CYCLE_DRY) { @@ -244,7 +244,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 14) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.3125, -0.125, aiming ? -0.125 : -0.375D, 0, 0.18, -0.12, 0.01, casing.getName(), true, 60, 0.5D, 20); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.3125, -0.125, aiming ? -0.125 : -0.375D, 0, 0.18, -0.12, 0.01, -10F + (float)entity.getRNG().nextGaussian() * 5F, (float)entity.getRNG().nextGaussian() * 2.5F, casing.getName(), true, 60, 0.5D, 20); } if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.leverCock", 1F, 0.8F); } @@ -279,7 +279,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 14) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.3125, -0.125, aiming ? -0.125 : -0.375D, 0, -0.08, 0, 0.01, casing.getName(), true, 60, 0.5D, 20); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.3125, -0.125, aiming ? -0.125 : -0.375D, 0, -0.08, 0, 0.01, -15F + (float)entity.getRNG().nextGaussian() * 5F, (float)entity.getRNG().nextGaussian() * 2.5F, casing.getName(), true, 60, 0.5D, 20); } if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.leverCock", 1F, 0.8F); } @@ -300,7 +300,7 @@ public class Orchestras { if(timer == 14) { int offset = ctx.configIndex == 0 ? -1 : 1; SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.3125, -0.125, aiming ? -0.125 * offset : -0.375D * offset, 0, -0.08, 0, 0.01, casing.getName(), true, 60, 0.5D, 20); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.3125, -0.125, aiming ? -0.125 * offset : -0.375D * offset, 0, -0.08, 0, 0.01, -15F + (float)entity.getRNG().nextGaussian() * 5F, (float)entity.getRNG().nextGaussian() * 2.5F, casing.getName(), true, 60, 0.5D, 20); } if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.leverCock", 1F, 0.8F); return; @@ -322,7 +322,7 @@ public class Orchestras { IMagazine mag = ctx.config.getReceivers(stack)[0].getMagazine(stack); if(mag.getAmountAfterReload(stack) > 0) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.625, -0.125, aiming ? -0.125 : -0.375D, -0.12, 0.18, 0, 0.01, casing.getName(), true, 60, 0.5D, 20); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.625, -0.125, aiming ? -0.125 : -0.375D, -0.12, 0.18, 0, 0.01, -15F + (float)entity.getRNG().nextGaussian() * 7.5F, (float)entity.getRNG().nextGaussian() * 5F, casing.getName(), true, 60, 0.5D, 20); mag.setAmountBeforeReload(stack, 0); } } @@ -358,7 +358,7 @@ public class Orchestras { Receiver rec = ctx.config.getReceivers(stack)[0]; IMagazine mag = rec.getMagazine(stack); SpentCasing casing = mag.getCasing(stack, ctx.inventory); - if(casing != null) for(int i = 0; i < mag.getCapacity(stack); i++) CasingCreator.composeEffect(entity.worldObj, entity, 0.25, -0.125, -0.125, -0.05, 0, 0, 0.01, casing.getName()); + if(casing != null) for(int i = 0; i < mag.getCapacity(stack); i++) CasingCreator.composeEffect(entity.worldObj, entity, 0.25, -0.125, -0.125, -0.05, 0, 0, 0.01, -6.5F + (float)entity.getRNG().nextGaussian() * 3F, (float)entity.getRNG().nextGaussian() * 5F, casing.getName()); } } if(type == AnimType.CYCLE) { @@ -374,7 +374,7 @@ public class Orchestras { } }; - public static BiConsumer ORCHESTRA_CARBIBE = (stack, ctx) -> { + public static BiConsumer ORCHESTRA_CARBINE = (stack, ctx) -> { EntityLivingBase entity = ctx.entity; if(entity.worldObj.isRemote) return; AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); @@ -382,9 +382,9 @@ public class Orchestras { boolean aiming = ItemGunBaseNT.getIsAiming(stack); if(type == AnimType.CYCLE) { - if(timer == 2) { + if(timer == 1) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.3125, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.06, 0.01, casing.getName(), true, 60, 0.5D, 20); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.3125, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.21, -0.06, 0.01, -10F + (float)entity.getRNG().nextGaussian() * 2.5F, 2.5F + (float)entity.getRNG().nextGaussian() * 2F, casing.getName(), true, 60, 0.5D, 20); } } if(type == AnimType.CYCLE_DRY) { @@ -419,7 +419,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 0) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.4375, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, -0.06, 0, 0.01, casing.getName()); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.4375, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, -0.06, 0, 0.01, (float)entity.getRNG().nextGaussian() * 10F, (float)entity.getRNG().nextGaussian() * 10F, casing.getName()); } } if(type == AnimType.CYCLE_DRY) { @@ -443,7 +443,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 0) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.4375, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, -0.06, 0, 0.01, casing.getName()); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.4375, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, -0.06, 0, 0.01, (float)entity.getRNG().nextGaussian() * 10F, (float)entity.getRNG().nextGaussian() * 10F, casing.getName()); } } if(type == AnimType.CYCLE_DRY) { @@ -479,7 +479,7 @@ public class Orchestras { IMagazine mag = ctx.config.getReceivers(stack)[0].getMagazine(stack); int toEject = mag.getAmountAfterReload(stack) - mag.getAmount(stack, ctx.inventory); SpentCasing casing = mag.getCasing(stack, ctx.inventory); - if(casing != null) for(int i = 0; i < toEject; i++) CasingCreator.composeEffect(entity.worldObj, entity, 0.625, -0.1875, -0.375D, -0.12, 0.18, 0, 0.01, casing.getName(), true, 60, 0.5D, 20); + if(casing != null) for(int i = 0; i < toEject; i++) CasingCreator.composeEffect(entity.worldObj, entity, 0.625, -0.1875, -0.375D, -0.12, 0.18, 0, 0.01, -15F + (float)entity.getRNG().nextGaussian() * 7.5F, (float)entity.getRNG().nextGaussian() * 5F, casing.getName(), true, 60, 0.5D, 20); } if(timer == 15) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallInsert", 1F, 1F); } @@ -503,7 +503,7 @@ public class Orchestras { int toEject = mag.getAmountAfterReload(stack) - mag.getAmount(stack, ctx.inventory); if(timer == 4 && toEject > 0) { SpentCasing casing = mag.getCasing(stack, ctx.inventory); - if(casing != null) for(int i = 0; i < toEject; i++) CasingCreator.composeEffect(entity.worldObj, entity, 0.625, -0.1875, -0.375D, -0.12, 0.18, 0, 0.01, casing.getName(), true, 60, 0.5D, 20); + if(casing != null) for(int i = 0; i < toEject; i++) CasingCreator.composeEffect(entity.worldObj, entity, 0.625, -0.1875, -0.375D, -0.12, 0.18, 0, 0.01, -15F * (float)entity.getRNG().nextGaussian() * 7.5F, (float)entity.getRNG().nextGaussian() * 5F, casing.getName(), true, 60, 0.5D, 20); mag.setAmountAfterReload(stack, 0); } if(timer == 20) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 0.9F); @@ -521,7 +521,7 @@ public class Orchestras { if(timer == 15) { IMagazine mag = ctx.config.getReceivers(stack)[0].getMagazine(stack); SpentCasing casing = mag.getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.625, aiming ? -0.0625 : -0.25, aiming ? 0 : -0.375D, 0, 0.18, 0.12, 0.01, casing.getName(), true, 60, 0.5D, 20); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.625, aiming ? -0.0625 : -0.25, aiming ? 0 : -0.375D, 0, 0.18, 0.12, 0.01, -5F + (float)entity.getRNG().nextGaussian() * 3.5F, -10F + entity.getRNG().nextFloat() * 5F, casing.getName(), true, 60, 0.5D, 20); } } if(type == AnimType.RELOAD || type == AnimType.RELOAD_CYCLE) { @@ -599,7 +599,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 1) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? 0 : -0.0625, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, casing.getName()); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? 0 : -0.0625, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, -10F + (float)entity.getRNG().nextGaussian() * 5F, 10F + entity.getRNG().nextFloat() * 10F, casing.getName()); } } if(type == AnimType.CYCLE_DRY) { @@ -632,7 +632,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 1) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, casing.getName()); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, -2.5F + (float)entity.getRNG().nextGaussian() * 5F, 10F + (float)entity.getRNG().nextFloat() * 15F, casing.getName()); } } if(type == AnimType.CYCLE_DRY) { @@ -664,7 +664,7 @@ public class Orchestras { if(timer == 1) { int mult = ctx.configIndex == 0 ? -1 : 1; SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, -0.125, -0.375D * mult, 0, 0.18, -0.12 * mult, 0.01, casing.getName()); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, -0.125, -0.375D * mult, 0, 0.18, -0.12 * mult, 0.01, -2.5F + (float)entity.getRNG().nextGaussian() * 5F, (10F + (float)entity.getRNG().nextFloat() * 15F) * mult, casing.getName()); } } if(type == AnimType.CYCLE_DRY) { @@ -693,8 +693,8 @@ public class Orchestras { if(type == AnimType.CYCLE || type == AnimType.ALT_CYCLE) { if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.shotgunCock", 1F, 1F); if(timer == 10) { - SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, casing.getName()); + SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); //turns out there's a reason why stovepipes look like that + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, -3F + (float)entity.getRNG().nextGaussian() * 2.5F, -15F + entity.getRNG().nextFloat() * -5F, casing.getName()); } } if(type == AnimType.CYCLE_DRY) { @@ -744,7 +744,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 0) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.5, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, casing.getName()); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.5, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, (float)entity.getRNG().nextGaussian() * 5F, 12.5F + (float)entity.getRNG().nextFloat() * 5F, casing.getName()); } } if(type == AnimType.CYCLE_DRY) { @@ -846,7 +846,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 0) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? 0 : -0.125, aiming ? 0 : -0.3125D, 0, 0.06, -0.18, 0.01, casing.getName()); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? 0 : -0.125, aiming ? 0 : -0.3125D, 0, 0.06, -0.18, 0.01, (float)entity.getRNG().nextGaussian() * 20F, 12.5F + (float)entity.getRNG().nextGaussian() * 7.5F, casing.getName()); } } }; @@ -920,7 +920,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 0) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, aiming ? 0.125 : 0.5, aiming ? -0.125 : -0.25, aiming ? -0.25 : -0.5D, 0, 0.18, -0.12, 0.01, casing.getName()); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, aiming ? 0.125 : 0.5, aiming ? -0.125 : -0.25, aiming ? -0.25 : -0.5D, 0, 0.18, -0.12, 0.01, (float)entity.getRNG().nextGaussian() * 15F, (float)entity.getRNG().nextGaussian() * 15F, casing.getName()); } if(timer == 1) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverSpin", 1F, 0.75F); } @@ -986,7 +986,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 0) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, aiming ? 0.125 : 0.125, aiming ? -0.125 : -0.25, aiming ? -0.125 : -0.25D, 0, 0.18, -0.12, 0.01, casing.getName()); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, aiming ? 0.125 : 0.125, aiming ? -0.125 : -0.25, aiming ? -0.125 : -0.25D, 0, 0.18, -0.12, 0.01, (float)entity.getRNG().nextGaussian() * 5F, 7.5F + entity.getRNG().nextFloat() * 5F, casing.getName()); } if(timer == 40) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 0.25F, 1.25F); } @@ -1012,7 +1012,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 0) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, aiming ? 0.125 : 0.25, aiming ? -0.125 : -0.25, aiming ? -0.125 : -0.25D, 0, 0.18, -0.12, 0.01, casing.getName()); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, aiming ? 0.125 : 0.25, aiming ? -0.125 : -0.25, aiming ? -0.125 : -0.25D, 0, 0.18, -0.12, 0.01, (float)entity.getRNG().nextGaussian() * 5F, 7.5F + entity.getRNG().nextFloat() * 5F, casing.getName()); } if(timer == 40) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 0.25F, 1.25F); } @@ -1187,7 +1187,7 @@ public class Orchestras { Receiver rec = ctx.config.getReceivers(stack)[0]; IMagazine mag = rec.getMagazine(stack); SpentCasing casing = mag.getCasing(stack, ctx.inventory); - if(casing != null) for(int i = 0; i < mag.getCapacity(stack); i++) CasingCreator.composeEffect(entity.worldObj, entity, 0.25, -0.25, -0.125, -0.05, 0, 0, 0.01, casing.getName()); + if(casing != null) for(int i = 0; i < mag.getCapacity(stack); i++) CasingCreator.composeEffect(entity.worldObj, entity, 0.25, -0.25, -0.125, -0.05, 0, 0, 0.01, -6.5F + (float)entity.getRNG().nextGaussian() * 3F, (float)entity.getRNG().nextGaussian() * 5F, casing.getName()); } } @@ -1228,7 +1228,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 1) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.5, aiming ? 0 : -0.125, aiming ? -0.0625 : -0.25D, 0, 0.18, -0.12, 0.01, casing.getName()); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.5, aiming ? 0 : -0.125, aiming ? -0.0625 : -0.25D, 0, 0.18, -0.12, 0.01, -10F + (float)entity.getRNG().nextGaussian() * 5F, 10F + entity.getRNG().nextFloat() * 10F, casing.getName()); } } @@ -1266,7 +1266,7 @@ public class Orchestras { IMagazine mag = ctx.config.getReceivers(stack)[0].getMagazine(stack); int toEject = mag.getAmountAfterReload(stack) - mag.getAmount(stack, ctx.inventory); SpentCasing casing = mag.getCasing(stack, ctx.inventory); - if(casing != null) for(int i = 0; i < toEject; i++) CasingCreator.composeEffect(entity.worldObj, entity, 0, -0.1875, -0.375D, -0.12, 0.18, 0, 0.01, casing.getName(), true, 60, 0.5D, 20); + if(casing != null) for(int i = 0; i < toEject; i++) CasingCreator.composeEffect(entity.worldObj, entity, 0, -0.1875, -0.375D, -0.24, 0.18, 0, 0.01, -20F + (float)entity.getRNG().nextGaussian() * 5F, (float)entity.getRNG().nextGaussian() * 2.5F, casing.getName(), true, 60, 0.5D, 20); } } @@ -1297,7 +1297,7 @@ public class Orchestras { if(timer == 1) { int cba = (stack.getItem() == ModItems.gun_aberrator_eott && ctx.configIndex == 0) ? -1 : 1; SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? 0 : -0.125, aiming ? -0.0625 : -0.25D * cba, -0.075, 0.25, 0, 0.01, casing.getName()); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? 0 : -0.125, aiming ? -0.0625 : -0.25D * cba, -0.05, 0.25, -0.05 * cba, 0.01, -10F + (float)entity.getRNG().nextGaussian() * 10F, (float)entity.getRNG().nextGaussian() * 12.5F, casing.getName()); } } @@ -1306,4 +1306,53 @@ public class Orchestras { if(timer == 9) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 0.75F); } }; + + public static BiConsumer ORCHESTRA_MAS36 = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + boolean aiming = ItemGunBaseNT.getIsAiming(stack); + + if(type == AnimType.EQUIP) { + if(timer == 10) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.openLatch", 1F, 1F); + if(timer == 18) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 1F); + } + + if(type == AnimType.CYCLE) { + if(timer == 7) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.boltOpen", 0.5F, 1F); + if(timer == 16) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.boltClose", 0.5F, 1F); + if(timer == 12) { + SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, + 0.375, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, + -0.05, 0.2, -0.025, + 0.01, -10F + (float) entity.getRNG().nextGaussian() * 10F, (float) entity.getRNG().nextGaussian() * 12.5F, casing.getName()); + } + } + + if(type == AnimType.CYCLE_DRY) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 0.75F); + if(timer == 7) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.boltOpen", 0.5F, 1F); + if(timer == 16) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.boltClose", 0.5F, 1F); + } + + if(type == AnimType.RELOAD) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.boltOpen", 1F, 1F); + if(timer == 20) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.rifleCock", 1F, 1F); + if(timer == 36) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.boltClose", 1F, 1F); + } + + if(type == AnimType.JAMMED) { + if(timer == 5) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.boltOpen", 0.5F, 1F); + if(timer == 12) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.boltClose", 0.5F, 1F); + if(timer == 16) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.boltOpen", 0.5F, 1F); + if(timer == 23) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.boltClose", 0.5F, 1F); + } + + if(type == AnimType.INSPECT) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.boltOpen", 0.5F, 1F); + if(timer == 17) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.boltClose", 0.5F, 1F); + } + }; } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory10ga.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory10ga.java index 3cfd53c12..85165ea5c 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory10ga.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory10ga.java @@ -31,10 +31,11 @@ public class XFactory10ga { public static BulletConfig g10_slug; public static void init() { - - g10 = new BulletConfig().setItem(EnumAmmo.G10).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 4).setProjectiles(10).setDamage(1F/10F).setSpread(0.05F).setRicochetAngle(15).setThresholdNegation(5F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xB52B2B, SpentCasing.COLOR_CASE_12GA).setScale(1F).register("10GA")); - g10_shrapnel = new BulletConfig().setItem(EnumAmmo.G10_SHRAPNEL).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 4).setProjectiles(10).setDamage(1F/10F).setSpread(0.05F).setRicochetAngle(90).setRicochetCount(15).setThresholdNegation(5F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xE5DD00, SpentCasing.COLOR_CASE_12GA).setScale(1F).register("10GAShrapnel")); - g10_du = new BulletConfig().setItem(EnumAmmo.G10_DU).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 4).setProjectiles(10).setDamage(1F/4F).setSpread(0.05F).setRicochetAngle(15).setThresholdNegation(10F).setArmorPiercing(0.2F).setDoesPenetrate(true).setDamageFalloutByPen(false).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x538D53, SpentCasing.COLOR_CASE_12GA).setScale(1F).register("10GADU")); + + float buckshotSpread = 0.035F; + g10 = new BulletConfig().setItem(EnumAmmo.G10).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 4).setProjectiles(10).setDamage(1F/10F).setSpread(buckshotSpread).setRicochetAngle(15).setThresholdNegation(5F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xB52B2B, SpentCasing.COLOR_CASE_12GA).setScale(1F).register("10GA")); + g10_shrapnel = new BulletConfig().setItem(EnumAmmo.G10_SHRAPNEL).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 4).setProjectiles(10).setDamage(1F/10F).setSpread(buckshotSpread).setRicochetAngle(90).setRicochetCount(15).setThresholdNegation(5F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xE5DD00, SpentCasing.COLOR_CASE_12GA).setScale(1F).register("10GAShrapnel")); + g10_du = new BulletConfig().setItem(EnumAmmo.G10_DU).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 4).setProjectiles(10).setDamage(1F/4F).setSpread(buckshotSpread).setRicochetAngle(15).setThresholdNegation(10F).setArmorPiercing(0.2F).setDoesPenetrate(true).setDamageFalloutByPen(false).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x538D53, SpentCasing.COLOR_CASE_12GA).setScale(1F).register("10GADU")); g10_slug = new BulletConfig().setItem(EnumAmmo.G10_SLUG).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 4).setRicochetAngle(15).setThresholdNegation(10F).setArmorPiercing(0.1F).setDoesPenetrate(true).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x808080, SpentCasing.COLOR_CASE_12GA).setScale(1F).register("10GASlug")); ModItems.gun_double_barrel = new ItemGunBaseNT(WeaponQuality.SPECIAL, new GunConfig() diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java index 3afc84c3c..399837376 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java @@ -255,16 +255,18 @@ public class XFactory12ga { } public static void init() { - - g12_bp = new BulletConfig().setItem(EnumAmmo.G12_BP).setCasing(EnumCasingType.SHOTSHELL, 12).setBlackPowder(true).setProjectiles(8).setDamage(0.75F/8F).setSpread(0.05F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP")); - g12_bp_magnum = new BulletConfig().setItem(EnumAmmo.G12_BP_MAGNUM).setCasing(EnumCasingType.SHOTSHELL, 12).setBlackPowder(true).setProjectiles(4).setDamage(0.75F/4F).setSpread(0.05F).setRicochetAngle(25).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP_MAGNUM")); + + float buckshotSpread = 0.035F; + float magnumSpread = 0.015F; + g12_bp = new BulletConfig().setItem(EnumAmmo.G12_BP).setCasing(EnumCasingType.SHOTSHELL, 12).setBlackPowder(true).setProjectiles(8).setDamage(0.75F/8F).setSpread(buckshotSpread).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP")); + g12_bp_magnum = new BulletConfig().setItem(EnumAmmo.G12_BP_MAGNUM).setCasing(EnumCasingType.SHOTSHELL, 12).setBlackPowder(true).setProjectiles(4).setDamage(0.75F/4F).setSpread(buckshotSpread).setRicochetAngle(25).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP_MAGNUM")); g12_bp_slug = new BulletConfig().setItem(EnumAmmo.G12_BP_SLUG).setCasing(EnumCasingType.SHOTSHELL, 12).setBlackPowder(true).setDamage(0.75F).setSpread(0.01F).setRicochetAngle(5).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP_SLUG")); - g12 = new BulletConfig().setItem(EnumAmmo.G12).setCasing(EnumCasingType.BUCKSHOT, 6).setProjectiles(8).setDamage(1F/8F).setSpread(0.05F).setRicochetAngle(15).setThresholdNegation(2F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xB52B2B, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA")); + g12 = new BulletConfig().setItem(EnumAmmo.G12).setCasing(EnumCasingType.BUCKSHOT, 6).setProjectiles(8).setDamage(1F/8F).setSpread(buckshotSpread).setRicochetAngle(15).setThresholdNegation(2F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xB52B2B, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA")); g12_slug = new BulletConfig().setItem(EnumAmmo.G12_SLUG).setCasing(EnumCasingType.BUCKSHOT, 6).setHeadshot(1.5F).setSpread(0.0F).setRicochetAngle(25).setThresholdNegation(4F).setArmorPiercing(0.15F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x393939, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_SLUG")); g12_flechette = new BulletConfig().setItem(EnumAmmo.G12_FLECHETTE).setCasing(EnumCasingType.BUCKSHOT, 6).setProjectiles(8).setDamage(1F/8F).setThresholdNegation(5F).setThresholdNegation(3F).setArmorPiercing(0.2F).setSpread(0.025F).setRicochetAngle(5).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x3C80F0, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_FLECHETTE")); - g12_magnum = new BulletConfig().setItem(EnumAmmo.G12_MAGNUM).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 6).setProjectiles(4).setDamage(2F/4F).setSpread(0.015F).setRicochetAngle(15).setThresholdNegation(4F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x278400, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_MAGNUM")); + g12_magnum = new BulletConfig().setItem(EnumAmmo.G12_MAGNUM).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 6).setProjectiles(4).setDamage(2F/4F).setSpread(magnumSpread).setRicochetAngle(15).setThresholdNegation(4F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x278400, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_MAGNUM")); g12_explosive = new BulletConfig().setItem(EnumAmmo.G12_EXPLOSIVE).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 6).setDamage(2.5F).setOnImpact(LAMBDA_STANDARD_EXPLODE).setSpread(0F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xDA4127, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_EXPLOSIVE")); - g12_phosphorus = new BulletConfig().setItem(EnumAmmo.G12_PHOSPHORUS).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 6).setProjectiles(8).setDamage(1F/8F).setSpread(0.015F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x910001, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_PHOSPHORUS")) + g12_phosphorus = new BulletConfig().setItem(EnumAmmo.G12_PHOSPHORUS).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 6).setProjectiles(8).setDamage(1F/8F).setSpread(magnumSpread).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x910001, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_PHOSPHORUS")) .setOnImpact((bullet, mop) -> { if(mop.entityHit != null && mop.entityHit instanceof EntityLivingBase) { HbmLivingProps data = HbmLivingProps.getData((EntityLivingBase) mop.entityHit); if(data.phosphorus < 300) data.phosphorus = 300; } }); //g12_anthrax = new BulletConfig().setItem(EnumAmmo.G12_ANTHRAX).setProjectiles(8).setDamage(1F/8F).setSpread(0.015F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x749300, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_ANTHRAX")); g12_equestrian_bj = new BulletConfig().setItem(EnumAmmoSecret.G12_EQUESTRIAN).setDamage(0F).setOnImpact(LAMBDA_BOAT).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_EQUESTRIAN, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12gaEquestrianBJ")); @@ -318,7 +320,7 @@ public class XFactory12ga { ModItems.gun_maresleg_broken = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() .dura(0).draw(5).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(32F).spreadAmmo(1.35F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.shotgun", 1.0F, 1.0F) + .dmg(32F).spreadAmmo(1.15F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.shotgun", 1.0F, 1.0F) .mag(new MagazineSingleReload(0, 6).addConfigs(g12_equestrian_tkr, g12_bp, g12_bp_magnum, g12_bp_slug, g12, g12_slug, g12_flechette, g12_magnum, g12_explosive, g12_phosphorus)) .offset(0.75, -0.0625, -0.1875) .canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_NOWEAR_FIRE).recoil(LAMBDA_RECOIL_MARESLEG)) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java index bdea3cedb..f63275b9a 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java @@ -63,7 +63,7 @@ public class XFactory762mm { .offset(1, -0.0625 * 2.5, -0.25D) .setupStandardFire().recoil(LAMBDA_RECOIL_CARBINE)) .setupStandardConfiguration() - .anim(LAMBDA_CARBINE_ANIMS).orchestra(Orchestras.ORCHESTRA_CARBIBE) + .anim(LAMBDA_CARBINE_ANIMS).orchestra(Orchestras.ORCHESTRA_CARBINE) ).setUnlocalizedName("gun_carbine"); ModItems.gun_minigun = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() @@ -86,6 +86,17 @@ public class XFactory762mm { .setupStandardConfiguration() .anim(LAMBDA_MINIGUN_ANIMS).orchestra(Orchestras.ORCHESTRA_MINIGUN) ).setUnlocalizedName("gun_minigun_lacunae"); + + ModItems.gun_mas36 = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() + .dura(5_000).draw(20).inspect(31).reloadSequential(true).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE) + .rec(new Receiver(0) + .dmg(30F).delay(25).dry(25).spread(0.0F).reload(43).jam(43).sound("hbm:weapon.fire.rifleHeavy", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 7).addConfigs(r762_sp, r762_fmj, r762_jhp, r762_ap, r762_du)) + .offset(1, -0.0625 * 1.5, -0.25D) + .setupStandardFire().recoil(LAMBDA_RECOIL_CARBINE)) + .setupStandardConfiguration() + .anim(LAMBDA_MAS36_ANIMS).orchestra(Orchestras.ORCHESTRA_MAS36) + ).setUnlocalizedName("gun_mas36"); } public static BiConsumer LAMBDA_SMOKE = (stack, ctx) -> { @@ -153,4 +164,45 @@ public class XFactory762mm { return null; }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_MAS36_ANIMS = (stack, type) -> { + int mag = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, MainRegistry.proxy.me().inventory); + double turn = -90; + double pullAmount = ItemGunBaseNT.getIsAiming(stack) ? -1F : -1.5D; + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("STOCK", new BusAnimationSequence().setPos(-158, 0, 0).hold(500).addPos(0, 0, 0, 500, IType.SIN_FULL)) + .addBus("EQUIP", new BusAnimationSequence().setPos(45, 0, 0).addPos(0, 0, 0, 500, IType.SIN_FULL).hold(500).addPos(1, 0, 0, 100, IType.SIN_DOWN).addPos(0, 0, 0, 100, IType.SIN_FULL)); + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, -0.5, 50, IType.SIN_DOWN).addPos(0, 0, 0, 100, IType.SIN_FULL)) + .addBus("BOLT_TURN", new BusAnimationSequence().hold(250).addPos(0, 0, turn, 150).hold(700).addPos(0, 0, 0, 150)) + .addBus("BOLT_PULL", new BusAnimationSequence().hold(350).addPos(0, 0, pullAmount, 250, IType.SIN_UP).hold(250).addPos(0, 0, 0, 200, IType.LINEAR)) + .addBus("LIFT", new BusAnimationSequence().hold(600).addPos(-3, 0, 0, 150, IType.SIN_DOWN).hold(300).addPos(0, 0, 0, 250, IType.SIN_FULL)) + .addBus("BULLET", mag <= 1 ? new BusAnimationSequence().setPos(-100, 0, 0) : new BusAnimationSequence().hold(850).addPos(0, 0.1875, 1.5, 200, IType.LINEAR)); + case CYCLE_DRY: return new BusAnimation() + .addBus("BOLT_TURN", new BusAnimationSequence().hold(250).addPos(0, 0, turn, 150).hold(700).addPos(0, 0, 0, 150)) + .addBus("BOLT_PULL", new BusAnimationSequence().hold(350).addPos(0, 0, pullAmount, 250, IType.SIN_UP).hold(250).addPos(0, 0, 0, 200, IType.LINEAR)) + .addBus("LIFT", new BusAnimationSequence().hold(600).addPos(-3, 0, 0, 150, IType.SIN_DOWN).hold(300).addPos(0, 0, 0, 250, IType.SIN_FULL)) + .addBus("BULLET", new BusAnimationSequence().setPos(-100, 0, 0)); + case RELOAD: return new BusAnimation() + .addBus("BOLT_TURN", new BusAnimationSequence().addPos(0, 0, turn, 150).holdUntil(2000).addPos(0, 0, 0, 150)) + .addBus("BOLT_PULL", new BusAnimationSequence().hold(100).addPos(0, 0, -1.5D, 250, IType.SIN_UP).holdUntil(1800).addPos(0, 0, 0, 200, IType.LINEAR)) + .addBus("BULLET", new BusAnimationSequence().setPos(-100, 0, 0).holdUntil(1200).setPos(0, 0, 0).hold(600).addPos(0, 0.1875, 1.5, 200, IType.LINEAR)) + .addBus("LIFT", new BusAnimationSequence().hold(200).addPos(30, 0, 0, 500, IType.SIN_FULL).holdUntil(1200).addPos(0, 0, 0, 500, IType.SIN_FULL)) + .addBus("SHOW_CLIP", new BusAnimationSequence().setPos(1, 1, 1)) + .addBus("CLIP", new BusAnimationSequence().setPos(2, -3, 0).hold(250).addPos(0.5, 1, 0, 500, IType.SIN_DOWN).addPos(0, 0, 0, 250, IType.SIN_FULL).hold(400).addPos(-0.5, 0.5, 0, 150).addPos(-3, -3, 0, 250, IType.SIN_UP)) + .addBus("BULLETS", new BusAnimationSequence().setPos(2, -3, 0).hold(250).addPos(0.5, 1, 0, 500, IType.SIN_DOWN).addPos(0, 0, 0, 250, IType.SIN_FULL).hold(150).addPos(0, -1.5, 0, 250, IType.SIN_DOWN)); + case JAMMED: return new BusAnimation() + .addBus("LIFT", new BusAnimationSequence().hold(250).addPos(-15, 0, 0, 500, IType.SIN_FULL).holdUntil(1650).addPos(0, 0, 0, 500, IType.SIN_FULL)) + .addBus("BOLT_TURN", new BusAnimationSequence().hold(250).addPos(0, 0, turn, 150).holdUntil(1250).addPos(0, 0, 0, 150)) + .addBus("BOLT_PULL", new BusAnimationSequence().hold(350).addPos(0, 0, pullAmount, 250, IType.SIN_UP).addPos(0, 0, 0, 200, IType.LINEAR).addPos(0, 0, pullAmount, 250, IType.SIN_UP).addPos(0, 0, 0, 200, IType.LINEAR)); + case INSPECT: return new BusAnimation() + .addBus("LIFT", new BusAnimationSequence().hold(350).addPos(-3, 0, 0, 150, IType.SIN_DOWN).holdUntil(1050).addPos(0, 0, 0, 250, IType.SIN_FULL)) + .addBus("BOLT_TURN", new BusAnimationSequence().addPos(0, 0, turn, 150).holdUntil(1050).addPos(0, 0, 0, 150)) + .addBus("BOLT_PULL", new BusAnimationSequence().hold(100).addPos(0, 0, -1D, 250, IType.SIN_UP).hold(500).addPos(0, 0, 0, 200, IType.LINEAR)) + .addBus("BULLET", mag == 0 ? new BusAnimationSequence().setPos(-100, 0, 0) : new BusAnimationSequence().setPos(0, 0.1875, 1.5).hold(100).addPos(0, 0.125, 0.5, 250, IType.SIN_UP).hold(500).addPos(0, 0.1875, 1.5, 200, IType.LINEAR)); + } + + return null; + }; } diff --git a/src/main/java/com/hbm/lib/HbmWorld.java b/src/main/java/com/hbm/lib/HbmWorld.java index 3cd40d0ba..ed4ca9208 100644 --- a/src/main/java/com/hbm/lib/HbmWorld.java +++ b/src/main/java/com/hbm/lib/HbmWorld.java @@ -1,6 +1,7 @@ package com.hbm.lib; import com.hbm.world.gen.MapGenNTMFeatures; +import com.hbm.world.gen.NBTStructure; import com.hbm.world.gen.NTMWorldGenerator; import com.hbm.world.gen.component.*; import com.hbm.world.gen.component.BunkerComponents.BunkerStart; @@ -18,9 +19,6 @@ public class HbmWorld { public static NTMWorldGenerator worldGenerator; public static void initWorldGen() { - - //MapGenStructureIO.registerStructure(StructureStartTest.class, "HFR_STRUCTURE"); - //MapGenStructureIO.func_143031_a(StructureComponentTest.class, "HFR_COMPONENT"); MapGenStructureIO.registerStructure(MapGenNTMFeatures.Start.class, "NTMFeatures"); MapGenStructureIO.registerStructure(BunkerStart.class, "NTMBunker"); registerNTMFeatures(); @@ -30,19 +28,20 @@ public class HbmWorld { worldGenerator = new NTMWorldGenerator(); registerWorldGen(worldGenerator, 1); //Ideally, move everything over from HbmWorldGen to NTMWorldGenerator MinecraftForge.EVENT_BUS.register(worldGenerator); - //registerWorldGen(new WorldGenTest(), 1); + + NBTStructure.register(); } - public static void registerWorldGen(IWorldGenerator nukerWorldGen, int weightedProbability) { + private static void registerWorldGen(IWorldGenerator nukerWorldGen, int weightedProbability) { GameRegistry.registerWorldGenerator(nukerWorldGen, weightedProbability); } /** Register structures in MapGenStructureIO */ - public static void registerNTMFeatures() { + private static void registerNTMFeatures() { CivilianFeatures.registerComponents(); OfficeFeatures.registerComponents(); RuinFeatures.registerComponents(); BunkerComponents.registerComponents(); MapGenStructureIO.func_143031_a(SiloComponent.class, "NTMSiloComponent"); } -} +} \ No newline at end of file diff --git a/src/main/java/com/hbm/lib/HbmWorldGen.java b/src/main/java/com/hbm/lib/HbmWorldGen.java index 7604f50bf..1c4ade7fb 100644 --- a/src/main/java/com/hbm/lib/HbmWorldGen.java +++ b/src/main/java/com/hbm/lib/HbmWorldGen.java @@ -28,7 +28,6 @@ import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntityChest; -import net.minecraft.tileentity.TileEntitySkull; import net.minecraft.util.WeightedRandom; import net.minecraft.util.WeightedRandomChestContent; import net.minecraft.world.World; @@ -169,7 +168,7 @@ public class HbmWorldGen implements IWorldGenerator { int colZ = (int) (colRand.nextGaussian() * 1500); int colRange = 750; - if((GeneralConfig.enable528BedrockSpawn || GeneralConfig.enable528BedrockDeposit) && rand.nextInt(GeneralConfig.bedrockRate) != 0) { + if((GeneralConfig.enable528BedrockSpawn || GeneralConfig.enable528BedrockDeposit) && rand.nextInt(GeneralConfig.bedrockRate) == 0) { int x = i + rand.nextInt(16) + 8; int z = j + rand.nextInt(16) + 8; @@ -260,23 +259,6 @@ public class HbmWorldGen implements IWorldGenerator { } } - if(!biome.canSpawnLightningBolt() && biome.temperature >= 2F) { - if(WorldConfig.vertibirdStructure > 0 && rand.nextInt(WorldConfig.vertibirdStructure) == 0) { - for(int a = 0; a < 1; a++) { - int x = i + rand.nextInt(16); - int z = j + rand.nextInt(16); - int y = world.getHeightValue(x, z); - - if(rand.nextInt(2) == 0) { - new Vertibird().generate(world, rand, x, y, z); - } else { - new CrashedVertibird().generate(world, rand, x, y, z); - } - - } - } - } - if(WorldConfig.dungeonStructure > 0 && rand.nextInt(WorldConfig.dungeonStructure) == 0) { int x = i + rand.nextInt(16); int y = rand.nextInt(256); @@ -320,14 +302,6 @@ public class HbmWorldGen implements IWorldGenerator { } } - /*if(WorldConfig.siloStructure > 0 && rand.nextInt(WorldConfig.siloStructure) == 0) { - int x = i + rand.nextInt(16); - int z = j + rand.nextInt(16); - int y = world.getHeightValue(x, z); - - new Silo().generate(world, rand, x, y, z); - }*/ - if(WorldConfig.factoryStructure > 0 && rand.nextInt(WorldConfig.factoryStructure) == 0) { int x = i + rand.nextInt(16); int z = j + rand.nextInt(16); @@ -548,37 +522,6 @@ public class HbmWorldGen implements IWorldGenerator { } - if (WorldConfig.meteorStructure > 0 && rand.nextInt(WorldConfig.meteorStructure) == 0 && biome != BiomeGenBase.ocean && biome != BiomeGenBase.deepOcean) { - int x = i + rand.nextInt(16) + 8; - int z = j + rand.nextInt(16) + 8; - - CellularDungeonFactory.meteor.generate(world, x, 10, z, rand); - - if(GeneralConfig.enableDebugMode) - MainRegistry.logger.info("[Debug] Successfully spawned meteor dungeon at " + x + " 10 " + z); - - int y = world.getHeightValue(x, z); - - for(int f = 0; f < 3; f++) - world.setBlock(x, y + f, z, ModBlocks.meteor_pillar); - world.setBlock(x, y + 3, z, ModBlocks.meteor_brick_chiseled); - - for(int f = 0; f < 10; f++) { - - x = i + rand.nextInt(65) - 32; - z = j + rand.nextInt(65) - 32; - y = world.getHeightValue(x, z); - - if(world.getBlock(x, y - 1, z).canPlaceTorchOnTop(world, x, y - 1, z)) { - world.setBlock(x, y, z, Blocks.skull, 1, 2); - TileEntitySkull skull = (TileEntitySkull)world.getTileEntity(x, y, z); - - if(skull != null) - skull.func_145903_a(rand.nextInt(16)); - } - } - } - if((biome == BiomeGenBase.jungle || biome == BiomeGenBase.jungleEdge || biome == BiomeGenBase.jungleHills) && WorldConfig.jungleStructure > 0 && rand.nextInt(WorldConfig.jungleStructure) == 0) { int x = i + rand.nextInt(16); diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 1440e8237..d939975a4 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (5230)"; + public static final String VERSION = "1.0.27 BETA (5257)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 04feaf810..3a4db1cdd 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -157,7 +157,7 @@ public class ClientProxy extends ServerProxy { registerBlockRenderer(); Jars.initJars(); - + ((IReloadableResourceManager) Minecraft.getMinecraft().getResourceManager()).registerReloadListener(new QMAWLoader()); if(GeneralConfig.enableSoundExtension) { @@ -376,6 +376,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySubstation.class, new RenderSubstation()); //chargers ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCharger.class, new RenderCharger()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRefueler.class, new RenderRefueler()); //DecoContainer ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFileCabinet.class, new RenderFileCabinet()); //multiblocks @@ -446,7 +447,7 @@ public class ClientProxy extends ServerProxy { double[] sfp = new double[] {1.36, 1.36, 0.68}; double[] rir = new double[] {0, 0, 0}; double[] tir = new double[] {0, 0, 0}; - double[] sir = new double[] {1.1, 1.1, 1.1}; + double[] sir = new double[] {1, 1, 1}; MinecraftForgeClient.registerItemRenderer(ModItems.titanium_sword, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp, sfp, rir, tir, sir)); MinecraftForgeClient.registerItemRenderer(ModItems.alloy_sword, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp, sfp, rir, tir, sir)); @@ -499,7 +500,6 @@ public class ClientProxy extends ServerProxy { MinecraftForgeClient.registerItemRenderer(ModItems.missile_volcano, new ItemRenderMissileGeneric(RenderMissileType.TYPE_NUCLEAR)); MinecraftForgeClient.registerItemRenderer(ModItems.missile_doomsday, new ItemRenderMissileGeneric(RenderMissileType.TYPE_NUCLEAR)); MinecraftForgeClient.registerItemRenderer(ModItems.missile_doomsday_rusted, new ItemRenderMissileGeneric(RenderMissileType.TYPE_NUCLEAR)); - MinecraftForgeClient.registerItemRenderer(ModItems.missile_carrier, new ItemRenderMissileGeneric(RenderMissileType.TYPE_CARRIER)); MinecraftForgeClient.registerItemRenderer(ModItems.missile_shuttle, new ItemRenderMissileGeneric(RenderMissileType.TYPE_ROBIN)); //templates @@ -771,7 +771,6 @@ public class ClientProxy extends ServerProxy { @Override public void registerBlockRenderer() { - RenderingRegistry.registerBlockHandler(new RenderTaintBlock()); RenderingRegistry.registerBlockHandler(new RenderScaffoldBlock()); RenderingRegistry.registerBlockHandler(new RenderTapeBlock()); RenderingRegistry.registerBlockHandler(new RenderSteelBeam()); @@ -830,6 +829,8 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerBlockHandler(new RenderRBMKReflector()); RenderingRegistry.registerBlockHandler(new RenderRBMKControl()); RenderingRegistry.registerBlockHandler(new RenderPribris()); + + RenderingRegistry.registerBlockHandler(new RenderBlockWand()); } @Override @@ -1725,6 +1726,22 @@ public class ClientProxy extends ServerProxy { } } + if("fluidfill".equals(type)) { + double mX = data.getDouble("mX"); + double mY = data.getDouble("mY"); + double mZ = data.getDouble("mZ"); + + EntityFX fx = new net.minecraft.client.particle.EntityCritFX(world, x, y, z, mX, mY, mZ); + fx.nextTextureIndexX(); + + if(data.hasKey("color")) { + Color color = new Color(data.getInteger("color")); + fx.setRBGColorF(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F); + } + + Minecraft.getMinecraft().effectRenderer.addEffect(fx); + } + if("deadleaf".equals(type)) { if(particleSetting == 0 || (particleSetting == 1 && rand.nextBoolean())) Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleDeadLeaf(man, world, x, y, z)); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 61431fc45..240886151 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -11,6 +11,7 @@ import com.hbm.config.GeneralConfig; import com.hbm.crafting.*; import com.hbm.crafting.handlers.*; import com.hbm.inventory.OreDictManager; +import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.material.MaterialShapes; import com.hbm.inventory.material.Mats; @@ -270,9 +271,9 @@ public class CraftingManager { // Note: voids the last few slots when placed, because a safe's inventory is smaller than a crate's one GameRegistry.addRecipe(new ContainerUpgradeCraftingHandler(new ItemStack(ModBlocks.safe, 1), new Object[] { "LAL", "ACA", "LAL", 'L', PB.plate(), 'A', ALLOY.plate(), 'C', ModBlocks.crate_steel })); // Note: doesn't preserve storage because a crate's contents are different items, but a mass storage's is just one - addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 0), new Object[] { "ICI", "CLC", "ICI", 'I', TI.ingot(), 'C', ModBlocks.crate_steel, 'L', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE) }); - GameRegistry.addRecipe(new ContainerUpgradeCraftingHandler(new ItemStack(ModBlocks.mass_storage, 1, 1), new Object[] { "PCP", "PMP", "PPP", 'P', DESH.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP), 'M', new ItemStack(ModBlocks.mass_storage, 1, 0) })); - GameRegistry.addRecipe(new ContainerUpgradeCraftingHandler(new ItemStack(ModBlocks.mass_storage, 1, 2), new Object[] { "PCP", "PMP", "PPP", 'P', ANY_RESISTANTALLOY.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'M', new ItemStack(ModBlocks.mass_storage, 1, 1) })); + addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 0), new Object[] { " L ", "ICI", " I ", 'I', TI.ingot(), 'C', ModBlocks.crate_steel, 'L', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE) }); + GameRegistry.addRecipe(new ContainerUpgradeCraftingHandler(new ItemStack(ModBlocks.mass_storage, 1, 1), new Object[] { " C ", "PMP", " P ", 'P', DESH.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP), 'M', new ItemStack(ModBlocks.mass_storage, 1, 0) })); + GameRegistry.addRecipe(new ContainerUpgradeCraftingHandler(new ItemStack(ModBlocks.mass_storage, 1, 2), new Object[] { " C ", "PMP", " P ", 'P', ANY_RESISTANTALLOY.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'M', new ItemStack(ModBlocks.mass_storage, 1, 1) })); addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 3), new Object[] { "PPP", "PIP", "PPP", 'P', KEY_PLANKS, 'I', IRON.plate() }); addRecipeAuto(new ItemStack(ModBlocks.machine_autocrafter, 1), new Object[] { "SCS", "MWM", "SCS", 'S', STEEL.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE), 'M', ModItems.motor, 'W', Blocks.crafting_table }); @@ -774,39 +775,50 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.mech_key, 1), new Object[] { "MCM", "MKM", "MMM", 'M', ModItems.ingot_meteorite_forged, 'C', ModItems.coin_maskman, 'K', ModItems.key }); addRecipeAuto(new ItemStack(ModItems.spawn_ufo, 1), new Object[] { "MMM", "DCD", "MMM", 'M', ModItems.ingot_meteorite, 'D', DNT.ingot(), 'C', ModItems.coin_worm }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_alloy, 1), new Object[] { "WWW", "WCW", "WWW", 'W', ALLOY.wireFine(), 'C', ModBlocks.fusion_conductor }); + addShapelessAuto(new ItemStack(ModItems.wire_dense, 4, Mats.MAT_GOLD.id), new Object[] { ModBlocks.hadron_coil_gold }); + addShapelessAuto(new ItemStack(ModItems.wire_dense, 4, Mats.MAT_NEODYMIUM.id), new Object[] { ModBlocks.hadron_coil_neodymium }); + addShapelessAuto(new ItemStack(ModItems.wire_dense, 4, Mats.MAT_MAGTUNG.id), new Object[] { ModBlocks.hadron_coil_magtung }); + addShapelessAuto(new ItemStack(ModItems.wire_dense, 2, Mats.MAT_SCHRABIDIUM.id), new Object[] { ModBlocks.hadron_coil_schrabidium }); + addShapelessAuto(new ItemStack(ModItems.wire_dense, 2, Mats.MAT_SCHRABIDATE.id), new Object[] { ModBlocks.hadron_coil_schrabidate }); + addShapelessAuto(new ItemStack(ModItems.wire_dense, 2, Mats.MAT_STAR.id), new Object[] { ModBlocks.hadron_coil_starmetal }); + addShapelessAuto(new ItemStack(ModItems.powder_chlorophyte, 2), new Object[] { ModBlocks.hadron_coil_chlorophyte }); + addShapelessAuto(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_DNT.id), new Object[] { ModBlocks.hadron_coil_mese }); + addShapelessAuto(new ItemStack(ModItems.plate_cast, 1, Mats.MAT_STEEL.id), new Object[] { ModBlocks.hadron_plating }); + addShapelessAuto(new ItemStack(ModItems.plate_cast, 1, Mats.MAT_STEEL.id), new Object[] { ModBlocks.hadron_plating_blue }); + addShapelessAuto(new ItemStack(ModItems.plate_cast, 1, Mats.MAT_STEEL.id), new Object[] { ModBlocks.hadron_plating_black }); + addShapelessAuto(new ItemStack(ModItems.plate_cast, 1, Mats.MAT_STEEL.id), new Object[] { ModBlocks.hadron_plating_yellow }); + addShapelessAuto(new ItemStack(ModItems.plate_cast, 1, Mats.MAT_STEEL.id), new Object[] { ModBlocks.hadron_plating_striped }); + addShapelessAuto(new ItemStack(ModItems.plate_cast, 1, Mats.MAT_STEEL.id), new Object[] { ModBlocks.hadron_plating_glass }); + addShapelessAuto(new ItemStack(ModItems.plate_cast, 1, Mats.MAT_STEEL.id), new Object[] { ModBlocks.hadron_plating_voltz }); + addShapelessAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), new Object[] { ModBlocks.hadron_analysis }); + addShapelessAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), new Object[] { ModBlocks.hadron_analysis_glass }); + addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_alloy, 1), new Object[] { "WW", "WW", 'W', ALLOY.wireDense() }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_gold, 1), new Object[] { "PGP", "PCP", "PGP", 'G', GOLD.dust(), 'C', ModBlocks.hadron_coil_alloy, 'P', IRON.plate() }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_gold, 1), new Object[] { "WG", "GW", 'W', ALLOY.wireDense(), 'G', GOLD.wireDense() }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_neodymium, 1), new Object[] { "G", "C", "G", 'G', ND.dust(), 'C', ModBlocks.hadron_coil_gold }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_neodymium, 1), new Object[] { "WG", "GW", 'W', ND.wireDense(), 'G', GOLD.wireDense() }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_magtung, 1), new Object[] { "WW", "WW", 'W', MAGTUNG.wireDense() }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_schrabidium, 1), new Object[] { "WWW", "WCW", "WWW", 'W', SA326.wireFine(), 'C', ModBlocks.hadron_coil_magtung }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_schrabidium, 1), new Object[] { "WS", "SW", 'W', MAGTUNG.wireDense(), 'S', SA326.wireDense() }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_schrabidate, 1), new Object[] { " S ", "SCS", " S ", 'S', SBD.dust(), 'C', ModBlocks.hadron_coil_schrabidium }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_schrabidate, 1), new Object[] { "WS", "SW", 'W', SBD.wireDense(), 'S', SA326.wireDense() }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_starmetal, 1), new Object[] { "SNS", "SCS", "SNS", 'S', STAR.ingot(), 'N', ModBlocks.hadron_coil_neodymium, 'C', ModBlocks.hadron_coil_schrabidate }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_starmetal, 1), new Object[] { "SW", "WS", 'W', SBD.wireDense(), 'S', STAR.wireDense() }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_chlorophyte, 1), new Object[] { "TCT", "TST", "TCT", 'T', ModItems.coil_tungsten, 'C', ModItems.powder_chlorophyte, 'S', ModBlocks.hadron_coil_starmetal }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_chlorophyte, 1), new Object[] { "TC", "CT", 'T', W.wireDense(), 'C', ModItems.powder_chlorophyte }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_diode, 1), new Object[] { "CIC", "ISI", "CIC", 'C', ModBlocks.hadron_coil_alloy, 'I', STEEL.ingot(), 'S', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_plating, 16), new Object[] { "CC", "CC", 'C', STEEL.plateCast()}); - addShapelessAuto(new ItemStack(ModBlocks.hadron_plating_blue, 1), new Object[] { ModBlocks.hadron_plating, KEY_BLUE }); - addShapelessAuto(new ItemStack(ModBlocks.hadron_plating_black, 1), new Object[] { ModBlocks.hadron_plating, KEY_BLACK }); - addShapelessAuto(new ItemStack(ModBlocks.hadron_plating_yellow, 1), new Object[] { ModBlocks.hadron_plating, KEY_YELLOW }); - addShapelessAuto(new ItemStack(ModBlocks.hadron_plating_striped, 1), new Object[] { ModBlocks.hadron_plating, KEY_BLACK, KEY_YELLOW }); - addShapelessAuto(new ItemStack(ModBlocks.hadron_plating_glass, 1), new Object[] { ModBlocks.hadron_plating, KEY_ANYGLASS }); - addShapelessAuto(new ItemStack(ModBlocks.hadron_plating_voltz, 1), new Object[] { ModBlocks.hadron_plating, KEY_RED }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_power, 1), new Object[] { "SFS", "FTF", "SFS", 'S', BIGMT.ingot(), 'T', ModBlocks.machine_transformer, 'F', ModItems.fuse }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_power_10m, 1), new Object[] { "HF", 'H', ModBlocks.hadron_power, 'F', ModItems.fuse }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_power_100m, 1), new Object[] { "HF", 'H', ModBlocks.hadron_power_10m, 'F', ModItems.fuse }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_power_1g, 1), new Object[] { "HF", 'H', ModBlocks.hadron_power_100m, 'F', ModItems.fuse }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_power_10g, 1), new Object[] { "HF", 'H', ModBlocks.hadron_power_1g, 'F', ModItems.fuse }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_analysis, 1), new Object[] { "IPI", "PCP", "IPI", 'I', TI.ingot(), 'P', getReflector(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) }); - addShapelessAuto(new ItemStack(ModBlocks.hadron_analysis_glass, 1), new Object[] { ModBlocks.hadron_analysis, KEY_ANYGLASS }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_access, 1), new Object[] { "IGI", "CRC", "IPI", 'I', ModItems.plate_polymer, 'G', KEY_ANYPANE, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'R', REDSTONE.block(), 'P', ModBlocks.hadron_plating_blue }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_cooler, 1, 0), new Object[] { "PCP", "CHC", "PCP", 'P', ANY_RESISTANTALLOY.plateCast(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'H', Fluids.HELIUM4.getDict(16_000) }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_cooler, 1, 1), new Object[] { "PCP", "CHC", "PCP", 'P', GOLD.plateCast(), 'C', ModItems.motor_bismuth, 'H', new ItemStack(ModBlocks.hadron_cooler, 1, 0) }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_gold, 1), new Object[] { "WG", "GW", 'W', ALLOY.wireDense(), 'G', GOLD.wireDense() }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_neodymium, 1), new Object[] { "WG", "GW", 'W', ND.wireDense(), 'G', GOLD.wireDense() }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_magtung, 1), new Object[] { "WW", "WW", 'W', MAGTUNG.wireDense() }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_schrabidium, 1), new Object[] { "WS", "SW", 'W', MAGTUNG.wireDense(), 'S', SA326.wireDense() }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_schrabidate, 1), new Object[] { "WS", "SW", 'W', SBD.wireDense(), 'S', SA326.wireDense() }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_starmetal, 1), new Object[] { "SW", "WS", 'W', SBD.wireDense(), 'S', STAR.wireDense() }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_chlorophyte, 1), new Object[] { "TC", "CT", 'T', CU.wireDense(), 'C', ModItems.powder_chlorophyte }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_diode, 1), new Object[] { "CIC", "ISI", "CIC", 'C', ModBlocks.hadron_coil_alloy, 'I', STEEL.ingot(), 'S', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_plating, 16), new Object[] { "CC", "CC", 'C', STEEL.plateCast()}); + //addShapelessAuto(new ItemStack(ModBlocks.hadron_plating_blue, 1), new Object[] { ModBlocks.hadron_plating, KEY_BLUE }); + //addShapelessAuto(new ItemStack(ModBlocks.hadron_plating_black, 1), new Object[] { ModBlocks.hadron_plating, KEY_BLACK }); + //addShapelessAuto(new ItemStack(ModBlocks.hadron_plating_yellow, 1), new Object[] { ModBlocks.hadron_plating, KEY_YELLOW }); + //addShapelessAuto(new ItemStack(ModBlocks.hadron_plating_striped, 1), new Object[] { ModBlocks.hadron_plating, KEY_BLACK, KEY_YELLOW }); + //addShapelessAuto(new ItemStack(ModBlocks.hadron_plating_glass, 1), new Object[] { ModBlocks.hadron_plating, KEY_ANYGLASS }); + //addShapelessAuto(new ItemStack(ModBlocks.hadron_plating_voltz, 1), new Object[] { ModBlocks.hadron_plating, KEY_RED }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_power, 1), new Object[] { "SFS", "FTF", "SFS", 'S', BIGMT.ingot(), 'T', ModBlocks.machine_transformer, 'F', ModItems.fuse }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_power_10m, 1), new Object[] { "HF", 'H', ModBlocks.hadron_power, 'F', ModItems.fuse }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_power_100m, 1), new Object[] { "HF", 'H', ModBlocks.hadron_power_10m, 'F', ModItems.fuse }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_power_1g, 1), new Object[] { "HF", 'H', ModBlocks.hadron_power_100m, 'F', ModItems.fuse }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_power_10g, 1), new Object[] { "HF", 'H', ModBlocks.hadron_power_1g, 'F', ModItems.fuse }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_analysis, 1), new Object[] { "IPI", "PCP", "IPI", 'I', TI.ingot(), 'P', getReflector(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) }); + //addShapelessAuto(new ItemStack(ModBlocks.hadron_analysis_glass, 1), new Object[] { ModBlocks.hadron_analysis, KEY_ANYGLASS }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_access, 1), new Object[] { "IGI", "CRC", "IPI", 'I', ModItems.plate_polymer, 'G', KEY_ANYPANE, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'R', REDSTONE.block(), 'P', ModBlocks.hadron_plating_blue }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_cooler, 1, 0), new Object[] { "PCP", "CHC", "PCP", 'P', ANY_RESISTANTALLOY.plateCast(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'H', Fluids.HELIUM4.getDict(16_000) }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_cooler, 1, 1), new Object[] { "PCP", "CHC", "PCP", 'P', GOLD.plateCast(), 'C', ModItems.motor_bismuth, 'H', new ItemStack(ModBlocks.hadron_cooler, 1, 0) }); addRecipeAuto(new ItemStack(ModBlocks.fireworks, 1), new Object[] { "PPP", "PPP", "WIW", 'P', Items.paper, 'W', KEY_PLANKS, 'I', IRON.ingot() }); addRecipeAuto(new ItemStack(ModItems.safety_fuse, 8), new Object[] { "SSS", "SGS", "SSS", 'S', Items.string, 'G', Items.gunpowder }); @@ -913,6 +925,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.charger), new Object[] { "G", "S", "C", 'G', Items.glowstone_dust, 'S', STEEL.ingot(), 'C', ModItems.coil_copper }); addRecipeAuto(new ItemStack(ModBlocks.charger, 16), new Object[] { "G", "S", "C", 'G', Blocks.glowstone, 'S', STEEL.block(), 'C', ModItems.coil_copper_torus }); + addRecipeAuto(new ItemStack(ModBlocks.refueler), new Object[] { "SS", "HC", "SS", 'S', TI.plate(), 'H', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_HYDRAULIC), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC) }); addRecipeAuto(new ItemStack(ModBlocks.press_preheater), new Object[] { "CCC", "SLS", "TST", 'C', CU.plate(), 'S', Blocks.stone, 'L', Fluids.LAVA.getDict(1000), 'T', W.ingot() }); addRecipeAuto(new ItemStack(ModItems.fluid_identifier_multi), new Object[] { "D", "C", "P", 'D', "dye", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ANALOG), 'P', IRON.plate() }); @@ -1138,8 +1151,6 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.cm_flux, 1, 0), "NNN", "ZCZ", "NNN", 'Z', ZR.plateCast(), 'N', ModItems.neutron_reflector, 'C', ModItems.reactor_core); addRecipeAuto(new ItemStack(ModBlocks.cm_heat, 1, 0), "PCP", "PCP", "PCP", 'P', ModItems.plate_polymer, 'C', CU.ingot()); - addShapelessAuto(new ItemStack(ModItems.missile_soyuz), new ItemStack(ModItems.missile_carrier)); - addRecipeAuto(new ItemStack(ModBlocks.plushie, 1, PlushieType.YOMI.ordinal()), "LCR", 'L', "cropCarrot", 'C', ModItems.rag, 'R', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE)); addRecipeAuto(new ItemStack(ModBlocks.plushie, 1, PlushieType.NUMBERNINE.ordinal()), " C ", "LCR", " C ", 'L', ModItems.cigarette, 'C', ModItems.rag, 'R', COAL.gem()); } @@ -1164,30 +1175,34 @@ public class CraftingManager { List toDestroy = new ArrayList(); - for(Object o : net.minecraft.item.crafting.CraftingManager.getInstance().getRecipeList()) { - - if(o instanceof IRecipe) { - IRecipe rec = (IRecipe)o; - ItemStack stack = rec.getRecipeOutput(); - - for(ItemStack target : targets) { - if(stack != null && stack.getItem() == target.getItem() && stack.getItemDamage() == target.getItemDamage()) toDestroy.add(rec); + List recipeList = net.minecraft.item.crafting.CraftingManager.getInstance().getRecipeList(); + + synchronized(recipeList) { //this is how threading works. i think. + for(Object o : recipeList) { + + if(o instanceof IRecipe) { + IRecipe rec = (IRecipe)o; + ItemStack stack = rec.getRecipeOutput(); + + for(ItemStack target : targets) { + if(stack != null && stack.getItem() == target.getItem() && stack.getItemDamage() == target.getItemDamage()) toDestroy.add(rec); + } } } - } - - if(toDestroy.size() > 0) { - net.minecraft.item.crafting.CraftingManager.getInstance().getRecipeList().removeAll(toDestroy); - } - - if(Loader.isModLoaded("Mekanism")) { - Item disassembler = (Item) Item.itemRegistry.getObject("Mekanism:AtomicDisassembler"); - if(disassembler != null) addRecipeAuto(new ItemStack(disassembler, 1), "GAG", "EIE", " I ", 'G', GOLD.plateCast(), 'A', "alloyUltimate", 'E', "battery", 'I', "ingotRefinedObsidian"); - } - - if(Loader.isModLoaded("MekanismGenerators")) { - Block generator = (Block) Block.blockRegistry.getObject("MekanismGenerators:Generator"); - if(generator != null) addRecipeAuto(new ItemStack(generator, 1, 6), " T ", "TAT", "BCB", 'T', TI.plateCast(), 'A', "alloyAdvanced", 'B', "battery", 'C', ANY_PLASTIC.ingot()); + + if(toDestroy.size() > 0) { + recipeList.removeAll(toDestroy); + } + + if(Loader.isModLoaded("Mekanism")) { + Item disassembler = (Item) Item.itemRegistry.getObject("Mekanism:AtomicDisassembler"); + if(disassembler != null) addRecipeAuto(new ItemStack(disassembler, 1), "GAG", "EIE", " I ", 'G', GOLD.plateCast(), 'A', "alloyUltimate", 'E', "battery", 'I', "ingotRefinedObsidian"); + } + + if(Loader.isModLoaded("MekanismGenerators")) { + Block generator = (Block) Block.blockRegistry.getObject("MekanismGenerators:Generator"); + if(generator != null) addRecipeAuto(new ItemStack(generator, 1, 6), " T ", "TAT", "BCB", 'T', TI.plateCast(), 'A', "alloyAdvanced", 'B', "battery", 'C', ANY_PLASTIC.ingot()); + } } } } diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index bb4402ad2..bb9616014 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -73,7 +73,10 @@ import net.minecraft.item.Item.ToolMaterial; import net.minecraft.item.ItemArmor.ArmorMaterial; import net.minecraft.item.ItemStack; import net.minecraft.stats.Achievement; +import net.minecraft.stats.StatBase; +import net.minecraft.stats.StatBasic; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.EnumFacing; import net.minecraft.util.WeightedRandomChestContent; import net.minecraft.world.World; @@ -164,6 +167,11 @@ public class MainRegistry { public static CreativeTabs weaponTab = new WeaponTab(CreativeTabs.getNextID(), "tabWeapon"); // turrets, weapons, ammo public static CreativeTabs consumableTab = new ConsumableTab(CreativeTabs.getNextID(), "tabConsumable"); // drinks, kits, tools + // Statistics + public static StatBase statLegendary; + public static StatBase statMines; + public static StatBase statBullets; + // Achievements public static Achievement achSacrifice; public static Achievement achImpossible; @@ -656,6 +664,10 @@ public class MainRegistry { RodRecipes.registerInit(); + statLegendary = new StatBasic("stat.ntmLegendary", new ChatComponentTranslation("stat.ntmLegendary")).registerStat(); + statMines = new StatBasic("stat.ntmMines", new ChatComponentTranslation("stat.ntmMines")).registerStat(); + statBullets = new StatBasic("stat.ntmBullets", new ChatComponentTranslation("stat.ntmBullets")).registerStat(); + achSacrifice = new Achievement("achievement.sacrifice", "sacrifice", -3, 1, ModItems.burnt_bark, null).initIndependentStat().setSpecial().registerStat(); achImpossible = new Achievement("achievement.impossible", "impossible", 18, 10, ModItems.nothing, null).initIndependentStat().setSpecial().registerStat(); achTOB = new Achievement("achievement.tasteofblood", "tasteofblood", 3, 10, new ItemStack(ModItems.fluid_icon, 1, Fluids.ASCHRAB.getID()), null).initIndependentStat().setSpecial().registerStat(); @@ -710,7 +722,7 @@ public class MainRegistry { achCentrifuge = new Achievement("achievement.centrifuge", "centrifuge", 12, -2, new ItemStack(ModBlocks.machine_centrifuge), achPolymer).initIndependentStat().registerStat(); achFOEQ = new Achievement("achievement.FOEQ", "FOEQ", 5, 5, ModItems.sat_foeq, achDesh).initIndependentStat().setSpecial().registerStat(); achSoyuz = new Achievement("achievement.soyuz", "soyuz", 7, 6, Items.baked_potato, achDesh).initIndependentStat().setSpecial().registerStat(); - achSpace = new Achievement("achievement.space", "space", 9, 7, ModItems.missile_carrier, achDesh).initIndependentStat().setSpecial().registerStat(); + achSpace = new Achievement("achievement.space", "space", 9, 7, ModItems.missile_soyuz, achDesh).initIndependentStat().setSpecial().registerStat(); achSchrab = new Achievement("achievement.schrab", "schrab", 11, 3, ModItems.ingot_schrabidium, achDesh).initIndependentStat().registerStat(); achAcidizer = new Achievement("achievement.acidizer", "acidizer", 11, 5, new ItemStack(ModBlocks.machine_crystallizer), achDesh).initIndependentStat().registerStat(); achRadium = new Achievement("achievement.radium", "radium", 13, -4, ModItems.coffee_radium, achCentrifuge).initIndependentStat().setSpecial().registerStat(); @@ -849,7 +861,9 @@ public class MainRegistry { FalloutConfigJSON.initialize(); ItemPoolConfigJSON.initialize(); + ClientConfig.initConfig(); + ServerConfig.initConfig(); TileEntityNukeCustom.registerBombItems(); ArmorUtil.register(); @@ -870,11 +884,11 @@ public class MainRegistry { MinecraftForge.EVENT_BUS.register(new SchistStratum()); //DecorateBiomeEvent.Pre //MinecraftForge.EVENT_BUS.register(new DeepLayer()); //DecorateBiomeEvent.Pre - new OreCave(ModBlocks.stone_resource, 0).setThreshold(1.5D).setRangeMult(20).setYLevel(30).setMaxRange(20).withFluid(ModBlocks.sulfuric_acid_block); //sulfur - new OreCave(ModBlocks.stone_resource, 1).setThreshold(1.75D).setRangeMult(20).setYLevel(25).setMaxRange(20); //asbestos - new OreLayer3D(ModBlocks.stone_resource, EnumStoneType.HEMATITE.ordinal()).setScaleH(0.04D).setScaleV(0.25D).setThreshold(230); - new OreLayer3D(ModBlocks.stone_resource, EnumStoneType.BAUXITE.ordinal()).setScaleH(0.03D).setScaleV(0.15D).setThreshold(300); - new OreLayer3D(ModBlocks.stone_resource, EnumStoneType.MALACHITE.ordinal()).setScaleH(0.1D).setScaleV(0.15D).setThreshold(275); + if(WorldConfig.enableSulfurCave) new OreCave(ModBlocks.stone_resource, 0).setThreshold(1.5D).setRangeMult(20).setYLevel(30).setMaxRange(20).withFluid(ModBlocks.sulfuric_acid_block); //sulfur + if(WorldConfig.enableAsbestosCave) new OreCave(ModBlocks.stone_resource, 1).setThreshold(1.75D).setRangeMult(20).setYLevel(25).setMaxRange(20); //asbestos + if(WorldConfig.enableHematite) new OreLayer3D(ModBlocks.stone_resource, EnumStoneType.HEMATITE.ordinal()).setScaleH(0.04D).setScaleV(0.25D).setThreshold(230); + if(WorldConfig.enableMalachite) new OreLayer3D(ModBlocks.stone_resource, EnumStoneType.BAUXITE.ordinal()).setScaleH(0.03D).setScaleV(0.15D).setThreshold(300); + if(WorldConfig.enableBauxite) new OreLayer3D(ModBlocks.stone_resource, EnumStoneType.MALACHITE.ordinal()).setScaleH(0.1D).setScaleV(0.15D).setThreshold(275); //new BiomeCave().setThreshold(1.5D).setRangeMult(20).setYLevel(40).setMaxRange(20); //new OreLayer(Blocks.coal_ore, 0.2F).setThreshold(4).setRangeMult(3).setYLevel(70); BedrockOre.init(); @@ -936,6 +950,7 @@ public class MainRegistry { event.registerServerCommand(new CommandSatellites()); event.registerServerCommand(new CommandRadiation()); event.registerServerCommand(new CommandPacketInfo()); + event.registerServerCommand(new CommandReloadServer()); } @EventHandler @@ -1643,6 +1658,11 @@ public class MainRegistry { ignoreMappings.add("hbm:item.pellet_canister"); ignoreMappings.add("hbm:item.pellet_claws"); ignoreMappings.add("hbm:item.pellet_flechette"); + ignoreMappings.add("hbm:item.bobmazon_materials"); + ignoreMappings.add("hbm:item.bobmazon_machines"); + ignoreMappings.add("hbm:item.bobmazon_weapons"); + ignoreMappings.add("hbm:item.bobmazon_tools"); + ignoreMappings.add("hbm:item.missile_carrier"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index bd5ec48e4..bdba621ca 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -1,6 +1,5 @@ package com.hbm.main; -import api.hbm.energymk2.Nodespace; import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; import com.hbm.blocks.IStepTickReceiver; @@ -50,6 +49,7 @@ import com.hbm.tileentity.machine.TileEntityMachineRadarNT; import com.hbm.tileentity.machine.rbmk.RBMKDials; import com.hbm.tileentity.network.RTTYSystem; import com.hbm.tileentity.network.RequestNetwork; +import com.hbm.uninos.UniNodespace; import com.hbm.util.*; import com.hbm.util.ArmorRegistry.HazardClass; import com.hbm.world.generator.TimedGenerator; @@ -114,6 +114,7 @@ import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent.Action; import net.minecraftforge.event.entity.player.PlayerUseItemEvent; import net.minecraftforge.event.world.BlockEvent.BreakEvent; +import net.minecraftforge.event.world.ChunkEvent; import net.minecraftforge.event.world.WorldEvent; import org.apache.commons.lang3.math.NumberUtils; import org.apache.logging.log4j.Level; @@ -566,8 +567,7 @@ public class ModEventHandler { @SubscribeEvent public void onUnload(WorldEvent.Unload event) { - NeutronNodeWorld.removeAllWorlds(); // Remove world from worlds when unloaded to avoid world issues. - NeutronNodeWorld.removeAllNodes(); // Remove all nodes. + NeutronNodeWorld.streamWorlds.remove(event.world); } public static boolean didSit = false; @@ -1185,8 +1185,8 @@ public class ModEventHandler { RTTYSystem.updateBroadcastQueue(); RequestNetwork.updateEntries(); TileEntityMachineRadarNT.updateSystem(); - Nodespace.updateNodespace(); - // bob i beg of you i need fluid nodespace :pray: + //Nodespace.updateNodespace(); + UniNodespace.updateNodespace(); } // There is an issue here somewhere... @@ -1232,6 +1232,18 @@ public class ModEventHandler { }*/ } + @SubscribeEvent + public void onChunkLoad(ChunkEvent.Load event) { + + //test for automatic in-world block replacement + + /*for(int x = 0; x < 16; x++) for(int y = 0; y < 255; y++) for(int z = 0; z < 16; z++) { + if(event.getChunk().getBlock(x, y, z) instanceof MachineArcFurnace) { + event.getChunk().func_150807_a(x, y, z, Blocks.air, 0); + } + }*/ + } + @SubscribeEvent public void onPlayerClone(net.minecraftforge.event.entity.player.PlayerEvent.Clone event) { diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 1d46f091c..d3e5269e1 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -372,6 +372,11 @@ public class ModEventHandlerClient { RenderScreenOverlay.renderScope(resolution, cfg.getScopeTexture(held)); } } + + //prevents NBT changes (read: every fucking tick) on guns from bringing up the item's name over the hotbar + if(held != null && held.getItem() instanceof ItemGunBaseNT && Minecraft.getMinecraft().ingameGUI.highlightingItemStack != null && Minecraft.getMinecraft().ingameGUI.highlightingItemStack.getItem() == held.getItem()) { + Minecraft.getMinecraft().ingameGUI.highlightingItemStack = held; + } /// HANDLE FSB HUD /// ItemStack helmet = player.inventory.armorInventory[3]; diff --git a/src/main/java/com/hbm/main/NEIRegistry.java b/src/main/java/com/hbm/main/NEIRegistry.java index 9ca24ffcd..12d7101c7 100644 --- a/src/main/java/com/hbm/main/NEIRegistry.java +++ b/src/main/java/com/hbm/main/NEIRegistry.java @@ -36,7 +36,6 @@ public class NEIRegistry { handlers.add(new CrystallizerRecipeHandler()); handlers.add(new BookRecipeHandler()); handlers.add(new FusionRecipeHandler()); - handlers.add(new HadronRecipeHandler()); handlers.add(new SILEXRecipeHandler()); handlers.add(new FuelPoolHandler()); handlers.add(new CrucibleSmeltingHandler()); @@ -44,6 +43,7 @@ public class NEIRegistry { handlers.add(new CrucibleCastingHandler()); handlers.add(new ToolingHandler()); handlers.add(new ConstructionHandler()); + handlers.add(new SatelliteHandler()); //universal boyes handlers.add(new ZirnoxRecipeHandler()); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 14974adb9..7279498fe 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -391,6 +391,7 @@ public class ResourceManager { //Charging Station public static final IModelCustom charger = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/blocks/charger.obj")); + public static final IModelCustom refueler = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/blocks/refueler.obj")); //DecoContainer (File Cabinet for now) public static final IModelCustom file_cabinet = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/file_cabinet.obj")); @@ -805,6 +806,7 @@ public class ResourceManager { //Charger public static final ResourceLocation charger_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/charger.png"); + public static final ResourceLocation refueler_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/refueler.png"); //DecoContainer public static final ResourceLocation file_cabinet_tex = new ResourceLocation(RefStrings.MODID, "textures/models/file_cabinet.png"); @@ -887,6 +889,7 @@ public class ResourceManager { public static final IModelCustom folly = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/folly.obj")).asVBO(); public static final IModelCustom double_barrel = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/sacred_dragon.obj")).asVBO(); public static final IModelCustom aberrator = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/aberrator.obj")).asVBO(); + public static final IModelCustom mas36 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/mas36.obj")).asVBO(); public static final HashMap python_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/python.json")); public static final HashMap cursed_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/cursed.json")); @@ -1037,6 +1040,7 @@ public class ResourceManager { public static final ResourceLocation double_barrel_sacred_dragon_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/double_barrel_sacred_dragon.png"); public static final ResourceLocation aberrator_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/aberrator.png"); public static final ResourceLocation eott_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/eott.png"); + public static final ResourceLocation mas36_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/mas36.png"); public static final ResourceLocation lance_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lance.png"); @@ -1149,7 +1153,7 @@ public class ResourceManager { //Projectiles public static final IModelCustom projectiles = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/projectiles/projectiles.obj")); public static final IModelCustom leadburster = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/projectiles/leadburster.obj")); - public static final IModelCustom casings = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/effect/casings.obj")); + public static final IModelCustom casings = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/effect/casings.obj")).asVBO(); //Bomber public static final IModelCustom dornier = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/dornier.obj")); diff --git a/src/main/java/com/hbm/main/StructureManager.java b/src/main/java/com/hbm/main/StructureManager.java new file mode 100644 index 000000000..eca4c4853 --- /dev/null +++ b/src/main/java/com/hbm/main/StructureManager.java @@ -0,0 +1,65 @@ +package com.hbm.main; + +import com.hbm.lib.RefStrings; +import com.hbm.world.gen.NBTStructure; + +import net.minecraft.util.ResourceLocation; + +public class StructureManager { + + // METEOR DUNGEON + public static final NBTStructure meteor_spike = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/meteor-spike.nbt")); + public static final NBTStructure meteor_core = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/meteor-core.nbt")); + public static final NBTStructure meteor_corner = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/meteor-corner.nbt")); + public static final NBTStructure meteor_t = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/meteor-t.nbt")); + public static final NBTStructure meteor_stairs = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/meteor-stairs.nbt")); + public static final NBTStructure meteor_fallback = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/meteor-fallback.nbt")); + + public static final NBTStructure meteor_3_bale = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-bale.nbt")); + public static final NBTStructure meteor_3_blank = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-blank.nbt")); + public static final NBTStructure meteor_3_block = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-block.nbt")); + public static final NBTStructure meteor_3_crab = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-crab.nbt")); + public static final NBTStructure meteor_3_crab_tesla = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-crab-tesla.nbt")); + public static final NBTStructure meteor_3_crate = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-crate.nbt")); + public static final NBTStructure meteor_3_dirt = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-dirt.nbt")); + public static final NBTStructure meteor_3_lead = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-lead.nbt")); + public static final NBTStructure meteor_3_ooze = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-ooze.nbt")); + public static final NBTStructure meteor_3_pillar = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-pillar.nbt")); + public static final NBTStructure meteor_3_star = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-star.nbt")); + public static final NBTStructure meteor_3_tesla = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-tesla.nbt")); + public static final NBTStructure meteor_3_book = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-book.nbt")); + public static final NBTStructure meteor_3_mku = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-mku.nbt")); + public static final NBTStructure meteor_3_statue = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-statue.nbt")); + public static final NBTStructure meteor_3_glow = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-glow.nbt")); + + public static final NBTStructure meteor_room_base_end = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/room-base-end.nbt")); + public static final NBTStructure meteor_room_base_thru = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/room-base-thru.nbt")); + + public static final NBTStructure meteor_room_balcony = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/room-balcony.nbt")); + public static final NBTStructure meteor_room_basic = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/room-basic.nbt")); + public static final NBTStructure meteor_room_dragon = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/room-dragon.nbt")); + public static final NBTStructure meteor_room_ladder = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/room-ladder.nbt")); + public static final NBTStructure meteor_room_ooze = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/room-ooze.nbt")); + public static final NBTStructure meteor_room_split = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/room-split.nbt")); + public static final NBTStructure meteor_room_stairs = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/room-stairs.nbt")); + public static final NBTStructure meteor_room_triple = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/room-triple.nbt")); + public static final NBTStructure meteor_room_fallback = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/room-fallback.nbt")); + + public static final NBTStructure meteor_dragon_chest = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/headloot/loot-chest.nbt")); + public static final NBTStructure meteor_dragon_tesla = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/headloot/loot-tesla.nbt")); + public static final NBTStructure meteor_dragon_trap = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/headloot/loot-trap.nbt")); + public static final NBTStructure meteor_dragon_crate_crab = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/headloot/loot-crate-crab.nbt")); + public static final NBTStructure meteor_dragon_fallback = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/headloot/loot-fallback.nbt")); + + + + + public static final NBTStructure vertibird = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/vertibird.nbt")); + public static final NBTStructure crashed_vertibird = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/crashed-vertibird.nbt")); + + // public static final NBTStructure test_rot = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/test-rot.nbt")); + // public static final NBTStructure test_jigsaw = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/test-jigsaw.nbt")); + // public static final NBTStructure test_jigsaw_core = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/test-jigsaw-core.nbt")); + // public static final NBTStructure test_jigsaw_hall = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/test-jigsaw-hall.nbt")); + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/module/ModuleBurnTime.java b/src/main/java/com/hbm/module/ModuleBurnTime.java index 7b8db8321..f4a5ec3db 100644 --- a/src/main/java/com/hbm/module/ModuleBurnTime.java +++ b/src/main/java/com/hbm/module/ModuleBurnTime.java @@ -30,9 +30,11 @@ public class ModuleBurnTime { private static final int modRocket = 6; private static final int modBalefire = 7; + private double[] modTime = new double[8]; + private double[] modHeat = new double[8]; - + public ModuleBurnTime() { for(int i = 0; i < modTime.length; i++) { modTime[i] = 1.0D; @@ -78,23 +80,23 @@ public class ModuleBurnTime { writer.name("D:heatRocket").value(modHeat[modRocket]); writer.name("D:heatBalefie").value(modHeat[modBalefire]); } - + public int getBurnTime(ItemStack stack) { //int fuel = TileEntityFurnace.getItemBurnTime(stack); int fuel = FuelHandler.getBurnTimeFromCache(stack); - + if(fuel == 0) return 0; - + return (int) (fuel * getMod(stack, modTime)); } - + public int getBurnHeat(int base, ItemStack stack) { return (int) (base * getMod(stack, modHeat)); } - + public double getMod(ItemStack stack, double[] mod) { - + if(stack == null) return 0; @@ -105,11 +107,11 @@ public class ModuleBurnTime { if(stack.getItem() == ModItems.solid_fuel_bf) return mod[modBalefire]; if(stack.getItem() == ModItems.solid_fuel_presto_bf) return mod[modBalefire]; if(stack.getItem() == ModItems.solid_fuel_presto_triplet_bf) return mod[modBalefire]; - + if(stack.getItem() == ModItems.rocket_fuel) return mod[modRocket]; - + List names = ItemStackUtil.getOreDictNames(stack); - + for(String name : names) { if(name.contains("Coke")) return mod[modCoke]; if(name.contains("Coal")) return mod[modCoal]; @@ -117,22 +119,22 @@ public class ModuleBurnTime { if(name.startsWith("log")) return mod[modLog]; if(name.contains("Wood")) return mod[modWood]; } - + return 1; } - + public List getDesc() { List desc = new ArrayList(); desc.addAll(getTimeDesc()); desc.addAll(getHeatDesc()); return desc; } - + public List getTimeDesc() { List list = new ArrayList(); list.add(EnumChatFormatting.GOLD + "Burn time bonuses:"); - + addIf(list, "Logs", modTime[modLog]); addIf(list, "Wood", modTime[modWood]); addIf(list, "Coal", modTime[modCoal]); @@ -141,18 +143,18 @@ public class ModuleBurnTime { addIf(list, "Solid Fuel", modTime[modSolid]); addIf(list, "Rocket Fuel", modTime[modRocket]); addIf(list, "Balefire", modTime[modBalefire]); - + if(list.size() == 1) list.clear(); - + return list; } - + public List getHeatDesc() { List list = new ArrayList(); list.add(EnumChatFormatting.RED + "Burn heat bonuses:"); - + addIf(list, "Logs", modHeat[modLog]); addIf(list, "Wood", modHeat[modWood]); addIf(list, "Coal", modHeat[modCoal]); @@ -161,31 +163,38 @@ public class ModuleBurnTime { addIf(list, "Solid Fuel", modHeat[modSolid]); addIf(list, "Rocket Fuel", modHeat[modRocket]); addIf(list, "Balefire", modHeat[modBalefire]); - + if(list.size() == 1) list.clear(); - + return list; } - + private void addIf(List list, String name, double mod) { - + if(mod != 1.0D) list.add(EnumChatFormatting.YELLOW + "- " + name + ": " + getPercent(mod)); } - + private String getPercent(double mod) { mod -= 1D; String num = ((int) (mod * 100)) + "%"; - + if(mod < 0) num = EnumChatFormatting.RED + num; else num = EnumChatFormatting.GREEN + "+" + num; - + return num; } - + public double[] getModHeat() { + return modHeat; + } + public double[] getModTime() { + return modTime; + } + + public ModuleBurnTime setLogTimeMod(double mod) { this.modTime[modLog] = mod; return this; } public ModuleBurnTime setWoodTimeMod(double mod) { this.modTime[modWood] = mod; return this; } public ModuleBurnTime setCoalTimeMod(double mod) { this.modTime[modCoal] = mod; return this; } @@ -194,7 +203,7 @@ public class ModuleBurnTime { public ModuleBurnTime setSolidTimeMod(double mod) { this.modTime[modSolid] = mod; return this; } public ModuleBurnTime setRocketTimeMod(double mod) { this.modTime[modRocket] = mod; return this; } public ModuleBurnTime setBalefireTimeMod(double mod) { this.modTime[modBalefire] = mod; return this; } - + public ModuleBurnTime setLogHeatMod(double mod) { this.modHeat[modLog] = mod; return this; } public ModuleBurnTime setWoodHeatMod(double mod) { this.modHeat[modWood] = mod; return this; } public ModuleBurnTime setCoalHeatMod(double mod) { this.modHeat[modCoal] = mod; return this; } diff --git a/src/main/java/com/hbm/module/ModulePatternMatcher.java b/src/main/java/com/hbm/module/ModulePatternMatcher.java index 279a2c1e9..ecde925fa 100644 --- a/src/main/java/com/hbm/module/ModulePatternMatcher.java +++ b/src/main/java/com/hbm/module/ModulePatternMatcher.java @@ -2,18 +2,21 @@ package com.hbm.module; import java.util.List; +import com.hbm.items.special.ItemBedrockOreNew; import com.hbm.util.BufferUtil; import com.hbm.util.ItemStackUtil; import io.netty.buffer.ByteBuf; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; public class ModulePatternMatcher { public static final String MODE_EXACT = "exact"; public static final String MODE_WILDCARD = "wildcard"; + public static final String MODE_BEDROCK = "bedrock"; public String[] modes; public ModulePatternMatcher() { @@ -41,7 +44,9 @@ public class ModulePatternMatcher { if(iterateAndCheck(names, i ,"nugget")) return; if(iterateAndCheck(names, i ,"plate")) return; - if(stack.getHasSubtypes()) { + if(stack.getItem() instanceof ItemBedrockOreNew) { + modes[i] = MODE_BEDROCK; + } else if(stack.getHasSubtypes()) { modes[i] = MODE_EXACT; } else { modes[i] = MODE_WILDCARD; @@ -68,8 +73,10 @@ public class ModulePatternMatcher { modes[i] = null; return; } - - if(stack.getHasSubtypes()) { + + if(stack.getItem() instanceof ItemBedrockOreNew) { + modes[i] = MODE_BEDROCK; + } else if(stack.getHasSubtypes()) { modes[i] = MODE_EXACT; } else { modes[i] = MODE_WILDCARD; @@ -88,6 +95,12 @@ public class ModulePatternMatcher { if(modes[i] == null) { modes[i] = MODE_EXACT; } else if(MODE_EXACT.equals(modes[i])) { + if(pattern.getItem() instanceof ItemBedrockOreNew) { + modes[i] = MODE_BEDROCK; + } else { + modes[i] = MODE_WILDCARD; + } + } else if(MODE_BEDROCK.equals(modes[i])) { modes[i] = MODE_WILDCARD; } else if(MODE_WILDCARD.equals(modes[i])) { @@ -128,6 +141,10 @@ public class ModulePatternMatcher { switch(mode) { case MODE_EXACT: return input.isItemEqual(filter) && ItemStack.areItemStackTagsEqual(input, filter); case MODE_WILDCARD: return input.getItem() == filter.getItem() && ItemStack.areItemStackTagsEqual(input, filter); + case MODE_BEDROCK: + if(input.getItem() != filter.getItem()) return false; + if(!(input.getItem() instanceof ItemBedrockOreNew)) return false; + return ((ItemBedrockOreNew)input.getItem()).getGrade(input.getItemDamage()) == ((ItemBedrockOreNew)filter.getItem()).getGrade(filter.getItemDamage()); default: List keys = ItemStackUtil.getOreDictNames(input); return keys.contains(mode); @@ -165,4 +182,14 @@ public class ModulePatternMatcher { modes[i] = BufferUtil.readString(buf); } } + + public static String getLabel(String mode) { + switch(mode) { + case MODE_EXACT: return EnumChatFormatting.YELLOW + "Item and meta match"; + case MODE_WILDCARD: return EnumChatFormatting.YELLOW + "Item matches"; + case MODE_BEDROCK: return EnumChatFormatting.YELLOW + "Item and bedrock grade match"; + default: return EnumChatFormatting.YELLOW + "Ore dict key matches: " + mode; + } + } + } diff --git a/src/main/java/com/hbm/packet/toserver/ItemBobmazonPacket.java b/src/main/java/com/hbm/packet/toserver/ItemBobmazonPacket.java index 9866b4596..712dc766e 100644 --- a/src/main/java/com/hbm/packet/toserver/ItemBobmazonPacket.java +++ b/src/main/java/com/hbm/packet/toserver/ItemBobmazonPacket.java @@ -24,21 +24,11 @@ public class ItemBobmazonPacket implements IMessage { int offer; - public ItemBobmazonPacket() - { - - } + public ItemBobmazonPacket() { } - public ItemBobmazonPacket(EntityPlayer player, Offer offer) - { - if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.bobmazon_materials) - this.offer = BobmazonOfferFactory.materials.indexOf(offer); - if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.bobmazon_machines) - this.offer = BobmazonOfferFactory.machines.indexOf(offer); - if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.bobmazon_weapons) - this.offer = BobmazonOfferFactory.weapons.indexOf(offer); - if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.bobmazon_tools) - this.offer = BobmazonOfferFactory.tools.indexOf(offer); + public ItemBobmazonPacket(EntityPlayer player, Offer offer) { + if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.bobmazon) + this.offer = BobmazonOfferFactory.standard.indexOf(offer); if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.bobmazon_hidden) this.offer = BobmazonOfferFactory.special.indexOf(offer); } @@ -62,16 +52,8 @@ public class ItemBobmazonPacket implements IMessage { World world = p.worldObj; Offer offer = null; - if(p.getHeldItem() != null && p.getHeldItem().getItem() == ModItems.bobmazon_materials) - offer = BobmazonOfferFactory.materials.get(m.offer); - if(p.getHeldItem() != null && p.getHeldItem().getItem() == ModItems.bobmazon_machines) - offer = BobmazonOfferFactory.machines.get(m.offer); - if(p.getHeldItem() != null && p.getHeldItem().getItem() == ModItems.bobmazon_weapons) - offer = BobmazonOfferFactory.weapons.get(m.offer); - if(p.getHeldItem() != null && p.getHeldItem().getItem() == ModItems.bobmazon_tools) - offer = BobmazonOfferFactory.tools.get(m.offer); - if(p.getHeldItem() != null && p.getHeldItem().getItem() == ModItems.bobmazon_hidden) - offer = BobmazonOfferFactory.special.get(m.offer); + if(p.getHeldItem() != null && p.getHeldItem().getItem() == ModItems.bobmazon) offer = BobmazonOfferFactory.standard.get(m.offer); + if(p.getHeldItem() != null && p.getHeldItem().getItem() == ModItems.bobmazon_hidden) offer = BobmazonOfferFactory.special.get(m.offer); if(offer == null) { p.addChatMessage(new ChatComponentText("[BOBMAZON] There appears to be a mismatch between the offer you have requested and the offers that exist.")); diff --git a/src/main/java/com/hbm/particle/ParticleHaze.java b/src/main/java/com/hbm/particle/ParticleHaze.java index bc513a68a..dd8263ab4 100644 --- a/src/main/java/com/hbm/particle/ParticleHaze.java +++ b/src/main/java/com/hbm/particle/ParticleHaze.java @@ -21,8 +21,8 @@ import net.minecraft.world.World; public class ParticleHaze extends EntityFX { private static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/particle/haze.png"); - private TextureManager theRenderEngine; - private int maxAge; + private final TextureManager theRenderEngine; + private final int maxAge; public ParticleHaze(TextureManager p_i1213_1_, World p_i1218_1_, double p_i1218_2_, double p_i1218_4_, double p_i1218_6_) { super(p_i1218_1_, p_i1218_2_, p_i1218_4_, p_i1218_6_); @@ -94,6 +94,7 @@ public class ParticleHaze extends EntityFX { Random rand = new Random(50); + GL11.glPushMatrix(); for(int i = 0; i < 25; i++) { double dX = rand.nextGaussian() * 2.5D; @@ -115,9 +116,8 @@ public class ParticleHaze extends EntityFX { tess.addVertexWithUV((double) (pX + p_70539_3_ * size + p_70539_6_ * size), (double) (pY + p_70539_4_ * size), (double) (pZ + p_70539_5_ * size + p_70539_7_ * size), 0, 0); tess.addVertexWithUV((double) (pX + p_70539_3_ * size - p_70539_6_ * size), (double) (pY - p_70539_4_ * size), (double) (pZ + p_70539_5_ * size - p_70539_7_ * size), 0, 1); tess.draw(); - - GL11.glTranslatef((float) -dX, (float) -dY, (float) -dZ); } + GL11.glPopMatrix(); GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); GL11.glDisable(GL12.GL_RESCALE_NORMAL); diff --git a/src/main/java/com/hbm/particle/ParticleRadiationFog.java b/src/main/java/com/hbm/particle/ParticleRadiationFog.java index d1eb3dcea..f80bc8780 100644 --- a/src/main/java/com/hbm/particle/ParticleRadiationFog.java +++ b/src/main/java/com/hbm/particle/ParticleRadiationFog.java @@ -21,14 +21,14 @@ import net.minecraft.world.World; public class ParticleRadiationFog extends EntityFX { private static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/particle/fog.png"); - private TextureManager theRenderEngine; + private final TextureManager theRenderEngine; private int maxAge; public ParticleRadiationFog(TextureManager p_i1213_1_, World p_i1218_1_, double p_i1218_2_, double p_i1218_4_, double p_i1218_6_) { super(p_i1218_1_, p_i1218_2_, p_i1218_4_, p_i1218_6_); theRenderEngine = p_i1213_1_; maxAge = 100 + rand.nextInt(40); - + this.particleRed = this.particleGreen = this.particleBlue = 0; this.particleScale = 7.5F; } @@ -41,7 +41,7 @@ public class ParticleRadiationFog extends EntityFX { this.particleRed = red; this.particleGreen = green; this.particleBlue = blue; - + this.particleScale = scale; } @@ -49,14 +49,14 @@ public class ParticleRadiationFog extends EntityFX { this.prevPosX = this.posX; this.prevPosY = this.posY; this.prevPosZ = this.posZ; - + if(maxAge < 400) { maxAge = 400; } this.particleAge++; - + if (this.particleAge >= maxAge) { this.setDead(); @@ -78,11 +78,11 @@ public class ParticleRadiationFog extends EntityFX { } public void renderParticle(Tessellator tess, float p_70539_2_, float p_70539_3_, float p_70539_4_, float p_70539_5_, float p_70539_6_, float p_70539_7_) { - + this.theRenderEngine.bindTexture(texture); - + float alpha = 0; - + alpha = (float) Math.sin(particleAge * Math.PI / (400F)) * 0.125F; GL11.glColor4f(0.85F, 0.9F, 0.5F, alpha); @@ -92,22 +92,23 @@ public class ParticleRadiationFog extends EntityFX { GL11.glDepthMask(false); OpenGlHelper.glBlendFunc(770, 771, 1, 0); RenderHelper.disableStandardItemLighting(); - + Random rand = new Random(50); - + + GL11.glPushMatrix(); for(int i = 0; i < 25; i++) { double dX = (rand.nextGaussian() - 1D) * 2.5D; double dY = (rand.nextGaussian() - 1D) * 0.15D; double dZ = (rand.nextGaussian() - 1D) * 2.5D; double size = rand.nextDouble() * particleScale; - + GL11.glTranslatef((float) dX, (float) dY, (float) dZ); - + float pX = (float) ((this.prevPosX + (this.posX - this.prevPosX) * (double)p_70539_2_ - interpPosX) + rand.nextGaussian() * 0.5); float pY = (float) ((this.prevPosY + (this.posY - this.prevPosY) * (double)p_70539_2_ - interpPosY) + rand.nextGaussian() * 0.5); float pZ = (float) ((this.prevPosZ + (this.posZ - this.prevPosZ) * (double)p_70539_2_ - interpPosZ) + rand.nextGaussian() * 0.5); - + tess.startDrawingQuads(); tess.setNormal(0.0F, 1.0F, 0.0F); tess.setBrightness(240); @@ -116,14 +117,13 @@ public class ParticleRadiationFog extends EntityFX { tess.addVertexWithUV((double)(pX + p_70539_3_ * size + p_70539_6_ * size), (double)(pY + p_70539_4_ * size), (double)(pZ + p_70539_5_ * size + p_70539_7_ * size), 0, 0); tess.addVertexWithUV((double)(pX + p_70539_3_ * size - p_70539_6_ * size), (double)(pY - p_70539_4_ * size), (double)(pZ + p_70539_5_ * size - p_70539_7_ * size), 0, 1); tess.draw(); - - GL11.glTranslatef((float) -dX, (float) -dY, (float) -dZ); } - + GL11.glPopMatrix(); + GL11.glDisable(GL12.GL_RESCALE_NORMAL); GL11.glEnable(GL11.GL_LIGHTING); GL11.glDepthMask(true); - + GL11.glPolygonOffset(0.0F, 0.0F); GL11.glEnable(GL11.GL_LIGHTING); } diff --git a/src/main/java/com/hbm/particle/ParticleSpentCasing.java b/src/main/java/com/hbm/particle/ParticleSpentCasing.java index a21aad162..87fadf28c 100644 --- a/src/main/java/com/hbm/particle/ParticleSpentCasing.java +++ b/src/main/java/com/hbm/particle/ParticleSpentCasing.java @@ -9,6 +9,7 @@ import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; import com.hbm.main.ResourceManager; +import com.hbm.util.BobMathUtil; import com.hbm.util.Tuple.Pair; import cpw.mods.fml.relauncher.Side; @@ -20,6 +21,7 @@ import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.World; @@ -49,8 +51,10 @@ public class ParticleSpentCasing extends EntityFX { this.momentumPitch = momentumPitch; this.momentumYaw = momentumYaw; this.config = config; - + this.particleMaxAge = config.getMaxAge(); + this.setSize(2 * dScale * Math.max(config.getScaleX(), config.getScaleZ()), dScale * config.getScaleY()); + this.yOffset = this.height / 2F; this.isSmoking = smoking; this.maxSmokeGen = smokeLife; @@ -85,26 +89,20 @@ public class ParticleSpentCasing extends EntityFX { } this.motionY -= 0.04D * (double) this.particleGravity; - double prevMotionY = this.motionY; this.moveEntity(this.motionX, this.motionY, this.motionZ); this.motionX *= 0.98D; this.motionY *= 0.98D; this.motionZ *= 0.98D; - + if(this.onGround) { this.motionX *= 0.7D; this.motionZ *= 0.7D; - } - - if(onGround) { - this.onGround = false; - motionY = prevMotionY * -0.5; - this.rotationPitch = 0; - //momentumPitch = (float) rand.nextGaussian() * config.getBouncePitch(); - //momentumYaw = (float) rand.nextGaussian() * config.getBounceYaw(); + this.rotationPitch = (float) (Math.floor(this.rotationPitch / 180F + 0.5F)) * 180F; + this.momentumYaw *= 0.7F; + this.onGround = false; } - + if(particleAge > maxSmokeGen && !smokeNodes.isEmpty()) smokeNodes.clear(); @@ -124,16 +122,100 @@ public class ParticleSpentCasing extends EntityFX { smokeNodes.add(new Pair(Vec3.createVectorHelper(0, 0, 0), smokeNodes.isEmpty() ? 0.0D : 1D)); } } - + prevRotationPitch = rotationPitch; prevRotationYaw = rotationYaw; - - if(onGround) { - rotationPitch = 0; - } else { - rotationPitch += momentumPitch; - rotationYaw += momentumYaw; + + rotationPitch += momentumPitch; + rotationYaw += momentumYaw; + } + + public void moveEntity(double motionX, double motionY, double motionZ) { + this.worldObj.theProfiler.startSection("move"); + this.ySize *= 0.4F; + + if (this.isInWeb) { + this.isInWeb = false; + motionX *= 0.25D; + motionY *= 0.05000000074505806D; + motionZ *= 0.25D; + this.motionX = 0.0D; + this.motionY = 0.0D; + this.motionZ = 0.0D; } + + //Handle block collision + double initMoX = motionX; + double initMoY = motionY; + double initMoZ = motionZ; + + List list = this.worldObj.getCollidingBoundingBoxes(this, this.boundingBox.addCoord(motionX, motionY, motionZ)); + + for (int i = 0; i < list.size(); ++i) { + motionY = ((AxisAlignedBB)list.get(i)).calculateYOffset(this.boundingBox, motionY); + } + + this.boundingBox.offset(0.0D, motionY, 0.0D); + + int j; + + for (j = 0; j < list.size(); ++j) { + motionX = ((AxisAlignedBB)list.get(j)).calculateXOffset(this.boundingBox, motionX); + } + + this.boundingBox.offset(motionX, 0.0D, 0.0D); + + for (j = 0; j < list.size(); ++j) { + motionZ = ((AxisAlignedBB)list.get(j)).calculateZOffset(this.boundingBox, motionZ); + } + + this.boundingBox.offset(0.0D, 0.0D, motionZ); + + this.worldObj.theProfiler.endSection(); + this.worldObj.theProfiler.startSection("rest"); + this.posX = (this.boundingBox.minX + this.boundingBox.maxX) / 2.0D; + this.posY = this.boundingBox.minY + (double)this.yOffset - (double)this.ySize; + this.posZ = (this.boundingBox.minZ + this.boundingBox.maxZ) / 2.0D; + this.isCollidedHorizontally = initMoX != motionX || initMoZ != motionZ; + this.isCollidedVertically = initMoY != motionY; + this.onGround = initMoY != motionY && initMoY < 0.0D; + this.isCollided = this.isCollidedHorizontally || this.isCollidedVertically; + this.updateFallState(motionY, this.onGround); + + //Handles bounces + if (initMoX != motionX) { + this.motionX *= -0.25D; + + if(Math.abs(momentumYaw) > 1e-7) + momentumYaw *= -0.75F; + else + momentumYaw = (float) rand.nextGaussian() * 10F * this.config.getBounceYaw(); + } + + if (initMoY != motionY) { + this.motionY *= -0.5D; + + boolean rotFromSpeed = Math.abs(this.motionY) > 0.04; + if(rotFromSpeed || Math.abs(momentumPitch) > 1e-7) { + momentumPitch *= -0.75F; + if(rotFromSpeed) { + float mult = (float) BobMathUtil.safeClamp(initMoY / 0.2F, -1F, 1F); + momentumPitch += rand.nextGaussian() * 10F * this.config.getBouncePitch() * mult; + momentumYaw += (float) rand.nextGaussian() * 10F * this.config.getBounceYaw() * mult; + } + } + } + + if (initMoZ != motionZ) { + this.motionZ *= -0.25D; + + if(Math.abs(momentumYaw) > 1e-7) + momentumYaw *= -0.75F; + else + momentumYaw = (float) rand.nextGaussian() * 10F * this.config.getBounceYaw(); + } + + this.worldObj.theProfiler.endSection(); } /** Used for frame-perfect translation of smoke */ diff --git a/src/main/java/com/hbm/particle/SpentCasing.java b/src/main/java/com/hbm/particle/SpentCasing.java index 13f79ef89..23cbfab93 100644 --- a/src/main/java/com/hbm/particle/SpentCasing.java +++ b/src/main/java/com/hbm/particle/SpentCasing.java @@ -40,8 +40,8 @@ public class SpentCasing implements Cloneable { private int[] colors; private CasingType type; private String bounceSound; - private float bounceYaw = 0F; - private float bouncePitch = 0F; + private float bounceYaw = 1F; + private float bouncePitch = 1F; private int maxAge = 240; public SpentCasing(CasingType type) { @@ -86,6 +86,7 @@ public class SpentCasing implements Cloneable { return casingMap.get(name); } + /** Multiplier for default standard deviation of 10deg per tick, per bounce w/ full y speed */ public SpentCasing setBounceMotion(float yaw, float pitch) { this.bounceYaw = yaw; this.bouncePitch = pitch; diff --git a/src/main/java/com/hbm/particle/helper/CasingCreator.java b/src/main/java/com/hbm/particle/helper/CasingCreator.java index 967f6a381..51b8f3520 100644 --- a/src/main/java/com/hbm/particle/helper/CasingCreator.java +++ b/src/main/java/com/hbm/particle/helper/CasingCreator.java @@ -17,12 +17,22 @@ import net.minecraft.world.World; public class CasingCreator implements IParticleCreator { - /** Casing without smoke */ + /** Default casing without smoke */ public static void composeEffect(World world, EntityLivingBase player, double frontOffset, double heightOffset, double sideOffset, double frontMotion, double heightMotion, double sideMotion, double motionVariance, String casing) { - composeEffect(world, player, frontOffset, heightOffset, sideOffset, frontMotion, heightMotion, sideMotion, motionVariance, casing, false, 0, 0, 0); + composeEffect(world, player, frontOffset, heightOffset, sideOffset, frontMotion, heightMotion, sideMotion, motionVariance, 5F, 10F, casing, false, 0, 0, 0); + } + + /** Casing without smoke */ + public static void composeEffect(World world, EntityLivingBase player, double frontOffset, double heightOffset, double sideOffset, double frontMotion, double heightMotion, double sideMotion, double motionVariance, float multPitch, float multYaw, String casing) { + composeEffect(world, player, frontOffset, heightOffset, sideOffset, frontMotion, heightMotion, sideMotion, motionVariance, multPitch, multYaw, casing, false, 0, 0, 0); + } + + /** Default casing, but with smoke*/ + public static void composeEffect(World world, EntityLivingBase player, double frontOffset, double heightOffset, double sideOffset, double frontMotion, double heightMotion, double sideMotion, double motionVariance, String casing, boolean smoking, int smokeLife, double smokeLift, int nodeLife) { + composeEffect(world, player, frontOffset, heightOffset, sideOffset, frontMotion, heightMotion, sideMotion, motionVariance, 5F, 10F, casing, false, 0, 0, 0); } - public static void composeEffect(World world, EntityLivingBase player, double frontOffset, double heightOffset, double sideOffset, double frontMotion, double heightMotion, double sideMotion, double motionVariance, String casing, boolean smoking, int smokeLife, double smokeLift, int nodeLife) { + public static void composeEffect(World world, EntityLivingBase player, double frontOffset, double heightOffset, double sideOffset, double frontMotion, double heightMotion, double sideMotion, double motionVariance, float mPitch, float mYaw, String casing, boolean smoking, int smokeLife, double smokeLift, int nodeLife) { if(player.isSneaking()) heightOffset -= 0.075F; @@ -51,6 +61,8 @@ public class CasingCreator implements IParticleCreator { data.setDouble("mZ", mZ); data.setFloat("yaw", player.rotationYaw); data.setFloat("pitch", player.rotationPitch); + data.setFloat("mPitch", mPitch); + data.setFloat("mYaw", mYaw); data.setString("name", casing); data.setBoolean("smoking", smoking); data.setInteger("smokeLife", smokeLife); @@ -71,11 +83,13 @@ public class CasingCreator implements IParticleCreator { double mZ = data.getDouble("mZ"); float yaw = data.getFloat("yaw"); float pitch = data.getFloat("pitch"); + float mPitch = data.getFloat("mPitch"); + float mYaw = data.getFloat("mYaw"); boolean smoking = data.getBoolean("smoking"); int smokeLife = data.getInteger("smokeLife"); double smokeLift = data.getDouble("smokeLift"); int nodeLife = data.getInteger("nodeLife"); - ParticleSpentCasing casing = new ParticleSpentCasing(texman, world, x, y, z, mX, mY, mZ, 0, 0, casingConfig, smoking, smokeLife, smokeLift, nodeLife); + ParticleSpentCasing casing = new ParticleSpentCasing(texman, world, x, y, z, mX, mY, mZ, mPitch, mYaw, casingConfig, smoking, smokeLife, smokeLift, nodeLife); casing.prevRotationYaw = casing.rotationYaw = yaw; casing.prevRotationPitch = casing.rotationPitch = pitch; Minecraft.getMinecraft().effectRenderer.addEffect(casing); diff --git a/src/main/java/com/hbm/potion/HbmPotion.java b/src/main/java/com/hbm/potion/HbmPotion.java index a7688f2da..c1189b8b6 100644 --- a/src/main/java/com/hbm/potion/HbmPotion.java +++ b/src/main/java/com/hbm/potion/HbmPotion.java @@ -3,9 +3,8 @@ package com.hbm.potion; import java.lang.reflect.Field; import com.hbm.blocks.ModBlocks; -import com.hbm.blocks.bomb.BlockTaint; -import com.hbm.config.GeneralConfig; import com.hbm.config.PotionConfig; +import com.hbm.config.ServerConfig; import com.hbm.entity.mob.EntityTaintCrab; import com.hbm.entity.mob.EntityCreeperTainted; import com.hbm.explosion.ExplosionLarge; @@ -19,6 +18,7 @@ import com.hbm.util.ContaminationUtil.HazardType; import cpw.mods.fml.relauncher.ReflectionHelper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.passive.EntityCow; @@ -107,17 +107,15 @@ public class HbmPotion extends Potion { if(!(entity instanceof EntityCreeperTainted) && !(entity instanceof EntityTaintCrab) && entity.worldObj.rand.nextInt(40) == 0) entity.attackEntityFrom(ModDamageSource.taint, (level + 1)); - if(GeneralConfig.enableHardcoreTaint && !entity.worldObj.isRemote) { + if(ServerConfig.TAINT_TRAILS.get() && !entity.worldObj.isRemote) { - int x = (int)(entity.posX - 1); - int y = (int)entity.posY; - int z = (int)(entity.posZ); + int x = (int) Math.floor(entity.posX); + int y = (int) Math.floor(entity.posY); + int z = (int) Math.floor(entity.posZ); - if(entity.worldObj.getBlock(x, y, z) - .isReplaceable(entity.worldObj, x, y, z) && - BlockTaint.hasPosNeightbour(entity.worldObj, x, y, z)) { - - entity.worldObj.setBlock(x, y, z, ModBlocks.taint, 14, 2); + Block b = entity.worldObj.getBlock(x, y - 1, z); + if(y > 1 && b.isNormalCube() && !b.isAir(entity.worldObj, x, y - 1, z)) { + entity.worldObj.setBlock(x, y - 1, z, ModBlocks.taint, 14, 2); } } } diff --git a/src/main/java/com/hbm/qmaw/IManualElement.java b/src/main/java/com/hbm/qmaw/IManualElement.java deleted file mode 100644 index e981ad87a..000000000 --- a/src/main/java/com/hbm/qmaw/IManualElement.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.hbm.qmaw; - -public interface IManualElement { - - public int getWidth(); - public int getHeight(); - public void render(boolean isMouseOver, int mouseX, int mouseY); - public void onClick(); -} diff --git a/src/main/java/com/hbm/qmaw/ManualElement.java b/src/main/java/com/hbm/qmaw/ManualElement.java new file mode 100644 index 000000000..f878bf8ae --- /dev/null +++ b/src/main/java/com/hbm/qmaw/ManualElement.java @@ -0,0 +1,12 @@ +package com.hbm.qmaw; + +public abstract class ManualElement { + + public int x; + public int y; + + public abstract int getWidth(); + public abstract int getHeight(); + public abstract void render(boolean isMouseOver, int mouseX, int mouseY); + public abstract void onClick(); +} diff --git a/src/main/java/com/hbm/qmaw/components/QComponentText.java b/src/main/java/com/hbm/qmaw/components/QComponentText.java new file mode 100644 index 000000000..fd06d1150 --- /dev/null +++ b/src/main/java/com/hbm/qmaw/components/QComponentText.java @@ -0,0 +1,44 @@ +package com.hbm.qmaw.components; + +import com.hbm.qmaw.ManualElement; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; + +public class QComponentText extends ManualElement { + + protected String text; + protected FontRenderer font; + protected int color = 0xFFFFFF; + + public QComponentText(String text) { + this(text, Minecraft.getMinecraft().fontRenderer); + } + + public QComponentText(String text, FontRenderer font) { + this.text = text; + this.font = font; + } + + public QComponentText setColor(int color) { + this.color = color; + return this; + } + + @Override + public int getWidth() { + return font.getStringWidth(text); + } + + @Override + public int getHeight() { + return font.FONT_HEIGHT; + } + + @Override + public void render(boolean isMouseOver, int mouseX, int mouseY) { + font.drawString(text, x, y, color); + } + + @Override public void onClick() { } +} diff --git a/src/main/java/com/hbm/render/anim/AnimationLoader.java b/src/main/java/com/hbm/render/anim/AnimationLoader.java index 686e13965..0f99d66b3 100644 --- a/src/main/java/com/hbm/render/anim/AnimationLoader.java +++ b/src/main/java/com/hbm/render/anim/AnimationLoader.java @@ -69,7 +69,7 @@ public class AnimationLoader { if(json.has("rotmode")) { for(Map.Entry root : json.getAsJsonObject("rotmode").entrySet()) { String mode = root.getValue().getAsString(); - + double[] rotMode = new double[3]; rotMode[0] = getRot(mode.charAt(2)); rotMode[1] = getRot(mode.charAt(0)); @@ -115,45 +115,27 @@ public class AnimationLoader { if(json.has("location")) { JsonObject location = json.getAsJsonObject("location"); - if(location.has("x")) { - addToSequence(sequence, Dimension.TX, location.getAsJsonArray("x")); - } - if(location.has("y")) { - addToSequence(sequence, Dimension.TY, location.getAsJsonArray("y")); - } - if(location.has("z")) { - addToSequence(sequence, Dimension.TZ, location.getAsJsonArray("z")); - } + if(location.has("x")) addToSequence(sequence, Dimension.TX, location.getAsJsonArray("x")); + if(location.has("y")) addToSequence(sequence, Dimension.TY, location.getAsJsonArray("y")); + if(location.has("z")) addToSequence(sequence, Dimension.TZ, location.getAsJsonArray("z")); } // Rotation fcurves, only euler at the moment if(json.has("rotation_euler")) { JsonObject rotation = json.getAsJsonObject("rotation_euler"); - if(rotation.has("x")) { - addToSequence(sequence, Dimension.RX, rotation.getAsJsonArray("x")); - } - if(rotation.has("y")) { - addToSequence(sequence, Dimension.RY, rotation.getAsJsonArray("y")); - } - if(rotation.has("z")) { - addToSequence(sequence, Dimension.RZ, rotation.getAsJsonArray("z")); - } + if(rotation.has("x")) addToSequence(sequence, Dimension.RX, rotation.getAsJsonArray("x")); + if(rotation.has("y")) addToSequence(sequence, Dimension.RY, rotation.getAsJsonArray("y")); + if(rotation.has("z")) addToSequence(sequence, Dimension.RZ, rotation.getAsJsonArray("z")); } // Scale fcurves if(json.has("scale")) { JsonObject scale = json.getAsJsonObject("scale"); - if(scale.has("x")) { - addToSequence(sequence, Dimension.SX, scale.getAsJsonArray("x")); - } - if(scale.has("y")) { - addToSequence(sequence, Dimension.SY, scale.getAsJsonArray("y")); - } - if(scale.has("z")) { - addToSequence(sequence, Dimension.SZ, scale.getAsJsonArray("z")); - } + if(scale.has("x")) addToSequence(sequence, Dimension.SX, scale.getAsJsonArray("x")); + if(scale.has("y")) addToSequence(sequence, Dimension.SY, scale.getAsJsonArray("y")); + if(scale.has("z")) addToSequence(sequence, Dimension.SZ, scale.getAsJsonArray("z")); } sequence.offset = offset; diff --git a/src/main/java/com/hbm/render/anim/BusAnimationKeyframe.java b/src/main/java/com/hbm/render/anim/BusAnimationKeyframe.java index ce55f00e5..e25f5f95e 100644 --- a/src/main/java/com/hbm/render/anim/BusAnimationKeyframe.java +++ b/src/main/java/com/hbm/render/anim/BusAnimationKeyframe.java @@ -236,12 +236,12 @@ public class BusAnimationKeyframe { // Blender bezier solvers, but rewritten (pain) private double solveCubic(double c0, double c1, double c2, double c3) { - if(c3 > 0.000001) { + if(c3 > 0.000001 || c3 < -0.000001) { double a = c2 / c3; double b = c1 / c3; double c = c0 / c3; a = a / 3; - + double p = b / 3 - a * a; double q = (2 * a * a * a - a * b + c) / 2; double d = q * q + p * p * p; diff --git a/src/main/java/com/hbm/render/anim/BusAnimationSequence.java b/src/main/java/com/hbm/render/anim/BusAnimationSequence.java index 1e0f7d061..bd1630630 100644 --- a/src/main/java/com/hbm/render/anim/BusAnimationSequence.java +++ b/src/main/java/com/hbm/render/anim/BusAnimationSequence.java @@ -29,20 +29,16 @@ public class BusAnimationSequence { // swizzle me timbers public double[] rotMode = new double[] { 0, 1, 2 }; - public BusAnimationSequence() { // Initialise our keyframe storage, since it's multidimensional for(int i = 0; i < 9; i++) { transformKeyframes.add(new ArrayList()); } } - - // Adds a keyframe to the given dimension public BusAnimationSequence addKeyframe(Dimension dimension, BusAnimationKeyframe keyframe) { transformKeyframes.get(dimension.ordinal()).add(keyframe); - return this; } @@ -50,11 +46,17 @@ public class BusAnimationSequence { return addKeyframe(dimension, new BusAnimationKeyframe(value, duration)); } + /** Adds a position with a duration of 0 */ + public BusAnimationSequence setPos(double x, double y, double z) { + return addPos(x, y, z, 0, IType.LINEAR); + } - // Two helper methods for the old hard-coded animations + /** Adds a position with the desired duration and lininterp */ public BusAnimationSequence addPos(double x, double y, double z, int duration) { return addPos(x, y, z, duration, IType.LINEAR); } + + /** Adds a position with the desired duration and interpolation type */ public BusAnimationSequence addPos(double x, double y, double z, int duration, IType type) { addKeyframe(Dimension.TX, new BusAnimationKeyframe(x, duration, type)); addKeyframe(Dimension.TY, new BusAnimationKeyframe(y, duration, type)); @@ -69,6 +71,28 @@ public class BusAnimationSequence { return this; } + /** Repeats the previous keyframe with the same values using lininterp. Effectively makes the animation frame pause for the desired amount of milliseconds. */ + public BusAnimationSequence hold(int duration) { + addKeyframe(Dimension.TX, new BusAnimationKeyframe(getLast(Dimension.TX), duration)); + addKeyframe(Dimension.TY, new BusAnimationKeyframe(getLast(Dimension.TY), duration)); + addKeyframe(Dimension.TZ, new BusAnimationKeyframe(getLast(Dimension.TZ), duration)); + return this; + } + + /** Repeats the previous keyframe for a duration depending on the previous keyframes. Useful for getting different buses to sync up. */ + public BusAnimationSequence holdUntil(int end) { + int duration = end - getTotalTime(); + //FIXME: holdUntil breaks as soon as the animation speed is not 1 + return hold(duration); + } + + /** Grabs the numerical value for the most recent keyframe on the given dimension */ + private double getLast(Dimension dim) { + List keyframes = transformKeyframes.get(dim.ordinal()); + if(keyframes.isEmpty()) return 0D; + return keyframes.get(keyframes.size() - 1).value; + } + //all transformation data is absolute, additive transformations have not yet been implemented public double[] getTransformation(int millis) { double[] transform = new double[15]; diff --git a/src/main/java/com/hbm/render/block/RenderBlockSideRotation.java b/src/main/java/com/hbm/render/block/RenderBlockSideRotation.java index 785cac0ea..036bbd914 100644 --- a/src/main/java/com/hbm/render/block/RenderBlockSideRotation.java +++ b/src/main/java/com/hbm/render/block/RenderBlockSideRotation.java @@ -14,13 +14,13 @@ public class RenderBlockSideRotation implements ISimpleBlockRenderingHandler { @Override public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { - + Tessellator tessellator = Tessellator.instance; block.setBlockBoundsForItemRender(); renderer.setRenderBoundsFromBlock(block); GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F); GL11.glTranslatef(-0.5F, -0.5F, -0.5F); - + tessellator.startDrawingQuads(); tessellator.setNormal(0.0F, -1.0F, 0.0F); renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 0, metadata)); @@ -45,7 +45,7 @@ public class RenderBlockSideRotation implements ISimpleBlockRenderingHandler { tessellator.setNormal(1.0F, 0.0F, 0.0F); renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 5, metadata)); tessellator.draw(); - + GL11.glTranslatef(0.5F, 0.5F, 0.5F); } @@ -55,20 +55,32 @@ public class RenderBlockSideRotation implements ISimpleBlockRenderingHandler { Tessellator tessellator = Tessellator.instance; tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); - + if(!(block instanceof IBlockSideRotation)) { renderer.renderStandardBlock(block, x, y, z); return true; } - + IBlockSideRotation rot = (IBlockSideRotation) block; - + + // I'm almost entirely convinced that MCP mistranslated these properties because north/south and west/east are fucking SWAPPED + // YEP, they fucking did, god fucking damn it. I manually figured out the correct side for each uv face property to resolve YAYY + renderer.uvRotateBottom = rot.getRotationFromSide(world, x, y, z, 0); renderer.uvRotateTop = rot.getRotationFromSide(world, x, y, z, 1); + renderer.uvRotateNorth = rot.getRotationFromSide(world, x, y, z, 5); + renderer.uvRotateSouth = rot.getRotationFromSide(world, x, y, z, 4); + renderer.uvRotateWest = rot.getRotationFromSide(world, x, y, z, 2); + renderer.uvRotateEast = rot.getRotationFromSide(world, x, y, z, 3); renderer.setRenderBounds(0.0, 0.0, 0.0, 1.0, 1.0, 1.0); renderer.renderStandardBlock(block, x, y, z); - + + renderer.uvRotateBottom = 0; renderer.uvRotateTop = 0; + renderer.uvRotateNorth = 0; + renderer.uvRotateSouth = 0; + renderer.uvRotateWest = 0; + renderer.uvRotateEast = 0; return true; } diff --git a/src/main/java/com/hbm/render/block/RenderBlockWand.java b/src/main/java/com/hbm/render/block/RenderBlockWand.java new file mode 100644 index 000000000..d6d22efe2 --- /dev/null +++ b/src/main/java/com/hbm/render/block/RenderBlockWand.java @@ -0,0 +1,37 @@ +package com.hbm.render.block; + +import com.hbm.blocks.generic.BlockWand; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.world.IBlockAccess; + +public class RenderBlockWand implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + renderer.renderFromInside = true; + renderer.renderStandardBlock(block, x, y, z); + renderer.renderFromInside = false; + renderer.renderStandardBlock(block, x, y, z); + + return true; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return false; + } + + @Override + public int getRenderId() { + return BlockWand.renderID; + } + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/render/block/RenderTaintBlock.java b/src/main/java/com/hbm/render/block/RenderTaintBlock.java deleted file mode 100644 index b7f6bc240..000000000 --- a/src/main/java/com/hbm/render/block/RenderTaintBlock.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.hbm.render.block; - -import com.hbm.blocks.bomb.BlockTaint; - -import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; -import net.minecraft.block.Block; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.util.IIcon; -import net.minecraft.world.IBlockAccess; - -public class RenderTaintBlock implements ISimpleBlockRenderingHandler { - - @Override - public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { } - - @Override - public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { - - Tessellator tessellator = Tessellator.instance; - IIcon iicon = block.getIcon(0, world.getBlockMetadata(x, y, z)); - - if (renderer.hasOverrideBlockTexture()) - { - iicon = renderer.overrideBlockTexture; - } - - boolean ceil = world.getBlock(x, y + 1, z).isNormalCube(); - boolean floor = world.getBlock(x, y - 1, z).isNormalCube(); - boolean side1 = world.getBlock(x, y, z + 1).isNormalCube(); - boolean side2 = world.getBlock(x - 1, y, z).isNormalCube(); - boolean side3 = world.getBlock(x, y, z - 1).isNormalCube(); - boolean side4 = world.getBlock(x + 1, y, z).isNormalCube(); - - tessellator.setBrightness(block.getMixedBrightnessForBlock(renderer.blockAccess, x, y, z)); - int l = block.colorMultiplier(renderer.blockAccess, x, y, z); - float f = (float)(l >> 16 & 255) / 255.0F; - float f1 = (float)(l >> 8 & 255) / 255.0F; - float f2 = (float)(l & 255) / 255.0F; - tessellator.setColorOpaque_F(f, f1, f2); - double d3 = (double)iicon.getMinU(); - double d4 = (double)iicon.getMinV(); - double d0 = (double)iicon.getMaxU(); - double d1 = (double)iicon.getMaxV(); - double d2 = 0.05D; - renderer.blockAccess.getBlockMetadata(x, y, z); - - if (side2) - { - tessellator.addVertexWithUV((double)x + d2, (double)(y + 1), (double)(z + 1), d3, d4); - tessellator.addVertexWithUV((double)x + d2, (double)(y + 0), (double)(z + 1), d3, d1); - tessellator.addVertexWithUV((double)x + d2, (double)(y + 0), (double)(z + 0), d0, d1); - tessellator.addVertexWithUV((double)x + d2, (double)(y + 1), (double)(z + 0), d0, d4); - tessellator.addVertexWithUV((double)x + d2, (double)(y + 1), (double)(z + 0), d0, d4); - tessellator.addVertexWithUV((double)x + d2, (double)(y + 0), (double)(z + 0), d0, d1); - tessellator.addVertexWithUV((double)x + d2, (double)(y + 0), (double)(z + 1), d3, d1); - tessellator.addVertexWithUV((double)x + d2, (double)(y + 1), (double)(z + 1), d3, d4); - } - - if (side4) - { - tessellator.addVertexWithUV((double)(x + 1) - d2, (double)(y + 0), (double)(z + 1), d0, d1); - tessellator.addVertexWithUV((double)(x + 1) - d2, (double)(y + 1), (double)(z + 1), d0, d4); - tessellator.addVertexWithUV((double)(x + 1) - d2, (double)(y + 1), (double)(z + 0), d3, d4); - tessellator.addVertexWithUV((double)(x + 1) - d2, (double)(y + 0), (double)(z + 0), d3, d1); - tessellator.addVertexWithUV((double)(x + 1) - d2, (double)(y + 0), (double)(z + 0), d3, d1); - tessellator.addVertexWithUV((double)(x + 1) - d2, (double)(y + 1), (double)(z + 0), d3, d4); - tessellator.addVertexWithUV((double)(x + 1) - d2, (double)(y + 1), (double)(z + 1), d0, d4); - tessellator.addVertexWithUV((double)(x + 1) - d2, (double)(y + 0), (double)(z + 1), d0, d1); - } - - if (side3) - { - tessellator.addVertexWithUV((double)(x + 1), (double)(y + 0), (double)z + d2, d0, d1); - tessellator.addVertexWithUV((double)(x + 1), (double)(y + 1), (double)z + d2, d0, d4); - tessellator.addVertexWithUV((double)(x + 0), (double)(y + 1), (double)z + d2, d3, d4); - tessellator.addVertexWithUV((double)(x + 0), (double)(y + 0), (double)z + d2, d3, d1); - tessellator.addVertexWithUV((double)(x + 0), (double)(y + 0), (double)z + d2, d3, d1); - tessellator.addVertexWithUV((double)(x + 0), (double)(y + 1), (double)z + d2, d3, d4); - tessellator.addVertexWithUV((double)(x + 1), (double)(y + 1), (double)z + d2, d0, d4); - tessellator.addVertexWithUV((double)(x + 1), (double)(y + 0), (double)z + d2, d0, d1); - } - - if (side1) - { - tessellator.addVertexWithUV((double)(x + 1), (double)(y + 1), (double)(z + 1) - d2, d3, d4); - tessellator.addVertexWithUV((double)(x + 1), (double)(y + 0), (double)(z + 1) - d2, d3, d1); - tessellator.addVertexWithUV((double)(x + 0), (double)(y + 0), (double)(z + 1) - d2, d0, d1); - tessellator.addVertexWithUV((double)(x + 0), (double)(y + 1), (double)(z + 1) - d2, d0, d4); - tessellator.addVertexWithUV((double)(x + 0), (double)(y + 1), (double)(z + 1) - d2, d0, d4); - tessellator.addVertexWithUV((double)(x + 0), (double)(y + 0), (double)(z + 1) - d2, d0, d1); - tessellator.addVertexWithUV((double)(x + 1), (double)(y + 0), (double)(z + 1) - d2, d3, d1); - tessellator.addVertexWithUV((double)(x + 1), (double)(y + 1), (double)(z + 1) - d2, d3, d4); - } - - if (ceil) - { - tessellator.addVertexWithUV((double)(x + 1), (double)(y + 1) - d2, (double)(z + 0), d3, d4); - tessellator.addVertexWithUV((double)(x + 1), (double)(y + 1) - d2, (double)(z + 1), d3, d1); - tessellator.addVertexWithUV((double)(x + 0), (double)(y + 1) - d2, (double)(z + 1), d0, d1); - tessellator.addVertexWithUV((double)(x + 0), (double)(y + 1) - d2, (double)(z + 0), d0, d4); - } - - if (floor) - { - tessellator.addVertexWithUV((double)(x + 0), (double)(y + 0) + d2, (double)(z + 0), d0, d4); - tessellator.addVertexWithUV((double)(x + 0), (double)(y + 0) + d2, (double)(z + 1), d0, d1); - tessellator.addVertexWithUV((double)(x + 1), (double)(y + 0) + d2, (double)(z + 1), d3, d1); - tessellator.addVertexWithUV((double)(x + 1), (double)(y + 0) + d2, (double)(z + 0), d3, d4); - } - return true; - } - - @Override - public boolean shouldRender3DInInventory(int modelId) { - return false; - } - - @Override - public int getRenderId() { - return BlockTaint.renderID; - } - -} diff --git a/src/main/java/com/hbm/render/item/ItemRenderMissileGeneric.java b/src/main/java/com/hbm/render/item/ItemRenderMissileGeneric.java index 9985a4c4c..4ee9e835d 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderMissileGeneric.java +++ b/src/main/java/com/hbm/render/item/ItemRenderMissileGeneric.java @@ -31,7 +31,6 @@ public class ItemRenderMissileGeneric implements IItemRenderer { TYPE_STEALTH, TYPE_ABM, TYPE_NUCLEAR, - TYPE_CARRIER, TYPE_ROBIN } @@ -75,7 +74,6 @@ public class ItemRenderMissileGeneric implements IItemRenderer { case TYPE_STEALTH: guiScale = 1.75D; guiOffset = 4.75D; break; case TYPE_ABM: guiScale = 2.25D; guiOffset = 7D; break; case TYPE_NUCLEAR: guiScale = 1.375D; guiOffset = 1.5D; break; - case TYPE_CARRIER: guiScale = 0.625D; guiOffset = -17D; break; case TYPE_ROBIN: guiScale = 1.25D; guiOffset = 2D; break; } diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAberrator.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAberrator.java index 307f6fe35..6ca37d74c 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAberrator.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAberrator.java @@ -219,6 +219,7 @@ public class ItemRenderAberrator extends ItemRenderWeaponBase { double lengthOffset = -1.125; Minecraft.getMinecraft().renderEngine.bindTexture(flash_plume); tess.startDrawingQuads(); + tess.setBrightness(240); tess.setNormal(0F, 1F, 0F); tess.setColorRGBA_F(1F, 1F, 1F, 1F); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderEOTT.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderEOTT.java index 66580d25c..efd3d67f7 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderEOTT.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderEOTT.java @@ -260,6 +260,7 @@ public class ItemRenderEOTT extends ItemRenderWeaponBase { double lengthOffset = -1.125; Minecraft.getMinecraft().renderEngine.bindTexture(flash_plume); tess.startDrawingQuads(); + tess.setBrightness(240); tess.setNormal(0F, 1F, 0F); tess.setColorRGBA_F(1F, 1F, 1F, 1F); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHangman.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHangman.java index f02c22562..16ee124cd 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHangman.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHangman.java @@ -120,6 +120,12 @@ public class ItemRenderHangman extends ItemRenderWeaponBase { GL11.glTranslated(-0.5, 2.5, 0); } + @Override + public void setupEntity(ItemStack stack) { + double scale = 0.0625D; + GL11.glScaled(scale, scale, scale); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMAS36.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMAS36.java new file mode 100644 index 000000000..d12175c1f --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMAS36.java @@ -0,0 +1,161 @@ +package com.hbm.render.item.weapon.sedna; + +import java.nio.DoubleBuffer; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GLAllocation; +import net.minecraft.item.ItemStack; + +public class ItemRenderMAS36 extends ItemRenderWeaponBase { + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.5F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.5F * offset, -1.25F * offset, 1.75F * offset, + 0, -4.6825 / 8D, 0.75); + /*standardAimingTransform(stack, + -1.5F * offset, -1.25F * offset, 1.75F * offset, + -0.2, -5.875 / 8D, 1.125);*/ + } + + private static DoubleBuffer buf = null; + + @Override + public void renderFirstPerson(ItemStack stack) { + if(buf == null) buf = GLAllocation.createDirectByteBuffer(8*4).asDoubleBuffer(); + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.mas36_tex); + double scale = 0.375D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + double[] lift = HbmAnimations.getRelevantTransformation("LIFT"); + double[] stock = HbmAnimations.getRelevantTransformation("STOCK"); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] boltTurn = HbmAnimations.getRelevantTransformation("BOLT_TURN"); + double[] boltPull = HbmAnimations.getRelevantTransformation("BOLT_PULL"); + double[] bullet = HbmAnimations.getRelevantTransformation("BULLET"); + double[] showClip = HbmAnimations.getRelevantTransformation("SHOW_CLIP"); + double[] clip = HbmAnimations.getRelevantTransformation("CLIP"); + double[] bullets = HbmAnimations.getRelevantTransformation("BULLETS"); + + GL11.glTranslated(0, -3, -3); + GL11.glRotated(equip[0], 1, 0, 0); + GL11.glRotated(lift[0], 1, 0, 0); + GL11.glTranslated(0, 3, 3); + + GL11.glTranslated(0, 0, recoil[2]); + + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.mas36.renderPart("Gun"); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.3125, -2.125); + GL11.glRotated(stock[0], 1, 0, 0); + GL11.glTranslated(0, -0.3125, 2.125); + ResourceManager.mas36.renderPart("Stock"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.125, 0); + GL11.glRotated(boltTurn[2], 0, 0, 1); + GL11.glTranslated(0, -1.125, 0); + GL11.glTranslated(0, 0, boltPull[2]); + ResourceManager.mas36.renderPart("Bolt"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(bullet[0], bullet[1], bullet[2]); + ResourceManager.mas36.renderPart("Bullet"); + GL11.glPopMatrix(); + + //ResourceManager.mas36.renderPart("Scope"); + + if(showClip[0] != 0) { + GL11.glPushMatrix(); + GL11.glTranslated(clip[0], clip[1], clip[2]); + ResourceManager.mas36.renderPart("Clip"); + GL11.glPopMatrix(); + GL11.glPushMatrix(); + if(bullets[0] == 0) GL11.glEnable(GL11.GL_CLIP_PLANE0); + buf.put(new double[] { 0, 1, 0, -0.5} ); + buf.rewind(); + GL11.glClipPlane(GL11.GL_CLIP_PLANE0, buf); + GL11.glTranslated(bullets[0], bullets[1], bullets[2]); + ResourceManager.mas36.renderPart("Bullets"); + GL11.glDisable(GL11.GL_CLIP_PLANE0); + GL11.glPopMatrix(); + } + + double smokeScale = 0.25; + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.125, 8); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(smokeScale, smokeScale, smokeScale); + this.renderSmokeNodes(gun.getConfig(stack, 0).smokeNodes, 1D); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1, 8); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(90 * gun.shotRand, 1, 0, 0); + GL11.glScaled(0.5, 0.5, 0.5); + this.renderMuzzleFlash(gun.lastShot[0], 75, 7.5); + GL11.glPopMatrix(); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + double scale = 1.5D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(0, 0.5, 3); + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 1.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(-0.5, 0.5, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.mas36_tex); + ResourceManager.mas36.renderPart("Gun"); + ResourceManager.mas36.renderPart("Stock"); + ResourceManager.mas36.renderPart("Bolt"); + //ResourceManager.mas36.renderPart("Scope"); + GL11.glTranslated(0, -1, -6); + //ResourceManager.mas36.renderPart("Bayonet"); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java index 61b78ba4e..7a5b32926 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java @@ -331,6 +331,7 @@ public abstract class ItemRenderWeaponBase implements IItemRenderer { double inset = 2; Minecraft.getMinecraft().renderEngine.bindTexture(flash_plume); tess.startDrawingQuads(); + tess.setBrightness(240); tess.setNormal(0F, 1F, 0F); tess.setColorRGBA_F(1F, 1F, 1F, 1F); @@ -379,6 +380,7 @@ public abstract class ItemRenderWeaponBase implements IItemRenderer { double lengthOffset = 0.125; Minecraft.getMinecraft().renderEngine.bindTexture(flash_plume); tess.startDrawingQuads(); + tess.setBrightness(240); tess.setNormal(0F, 1F, 0F); tess.setColorRGBA_F(1F, 1F, 1F, 1F); diff --git a/src/main/java/com/hbm/render/tileentity/RenderBobble.java b/src/main/java/com/hbm/render/tileentity/RenderBobble.java index d5039e39b..08dfa1283 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderBobble.java +++ b/src/main/java/com/hbm/render/tileentity/RenderBobble.java @@ -49,9 +49,14 @@ public class RenderBobble extends TileEntitySpecialRenderer { public static final ResourceLocation bobble_microwave = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/microwave.png"); public static final ResourceLocation bobble_peep = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/peep.png"); public static final ResourceLocation bobble_mellow = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/mellowrpg8.png"); + public static final ResourceLocation bobble_mellow_glow = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/mellowrpg8_glow.png"); + + private long time; @Override public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float intero) { + time = System.currentTimeMillis(); + GL11.glPushMatrix(); GL11.glTranslated(x + 0.5, y, z + 0.5); @@ -288,8 +293,8 @@ public class RenderBobble extends TileEntitySpecialRenderer { GL11.glPushMatrix(); GL11.glTranslated(0, 1.75, 0); - GL11.glRotated(Math.sin(System.currentTimeMillis() * speed) * amplitude, 1, 0, 0); - GL11.glRotated(Math.sin(System.currentTimeMillis() * speed + (Math.PI * 0.5)) * amplitude, 0, 0, 1); + GL11.glRotated(Math.sin(time * speed) * amplitude, 1, 0, 0); + GL11.glRotated(Math.sin(time * speed + (Math.PI * 0.5)) * amplitude, 0, 0, 1); GL11.glRotated(rotHead[0], 1, 0, 0); GL11.glRotated(rotHead[1], 0, 1, 0); @@ -342,7 +347,7 @@ public class RenderBobble extends TileEntitySpecialRenderer { GL11.glAlphaFunc(GL11.GL_GREATER, 0); OpenGlHelper.glBlendFunc(770, 771, 1, 0); - GL11.glColor4f(1.0F, 1.0F, 0.0F, 0.1F + (float) Math.sin(System.currentTimeMillis() * 0.001D) * 0.05F); + GL11.glColor4f(1.0F, 1.0F, 0.0F, 0.1F + (float) Math.sin(time * 0.001D) * 0.05F); bobble.renderPart("PelletShine"); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); @@ -365,8 +370,8 @@ public class RenderBobble extends TileEntitySpecialRenderer { GL11.glPushMatrix(); GL11.glTranslated(0, 0.75, 0); - GL11.glRotated(Math.sin(System.currentTimeMillis() * speed) * amplitude, 1, 0, 0); - GL11.glRotated(Math.sin(System.currentTimeMillis() * speed + (Math.PI * 0.5)) * amplitude, 0, 0, 1); + GL11.glRotated(Math.sin(time * speed) * amplitude, 1, 0, 0); + GL11.glRotated(Math.sin(time * speed + (Math.PI * 0.5)) * amplitude, 0, 0, 1); GL11.glTranslated(0, -0.75, 0); GL11.glDisable(GL11.GL_CULL_FACE); @@ -452,11 +457,13 @@ public class RenderBobble extends TileEntitySpecialRenderer { //shotgun.renderDud(0.0625F); break; case MELLOW: + GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); + bindTexture(bobble_mellow_glow); + renderGuy(type); GL11.glEnable(GL11.GL_BLEND); GL11.glAlphaFunc(GL11.GL_GREATER, 0); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); - GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); - OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); this.bindTexture(lamp); bobble.renderPart("Fluoro"); this.bindTexture(glow); diff --git a/src/main/java/com/hbm/render/tileentity/RenderRefueler.java b/src/main/java/com/hbm/render/tileentity/RenderRefueler.java new file mode 100644 index 000000000..b8c30a352 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderRefueler.java @@ -0,0 +1,103 @@ +package com.hbm.render.tileentity; + +import java.awt.Color; +import java.nio.DoubleBuffer; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; +import com.hbm.tileentity.machine.TileEntityRefueler; + +import net.minecraft.client.renderer.GLAllocation; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderRefueler extends TileEntitySpecialRenderer implements IItemRendererProvider { + + private static DoubleBuffer clip = null; + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + TileEntityRefueler refueler = (TileEntityRefueler) tile; + + GL11.glPushMatrix(); + { + + GL11.glTranslated(x + 0.5, y, z + 0.5); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glRotatef(90, 0F, 1F, 0F); + switch(tile.getBlockMetadata()) { + case 4: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 2: GL11.glRotatef(0, 0F, 1F, 0F); break; + } + + GL11.glShadeModel(GL11.GL_SMOOTH); + + bindTexture(ResourceManager.refueler_tex); + ResourceManager.refueler.renderPart("Fueler"); + + + if(clip == null) { + clip = GLAllocation.createDirectByteBuffer(8*4).asDoubleBuffer(); + clip.put(new double[] {0, 1, 0, -0.125 }); + clip.rewind(); + } + + GL11.glEnable(GL11.GL_CLIP_PLANE0); + GL11.glClipPlane(GL11.GL_CLIP_PLANE0, clip); + + GL11.glEnable(GL11.GL_BLEND); + GL11.glDisable(GL11.GL_TEXTURE_2D); + + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + + double fillLevel = refueler.prevFillLevel + (refueler.fillLevel - refueler.prevFillLevel) * interp; + GL11.glTranslated(0, (1 - fillLevel) * -0.625, 0); + + Color color = new Color(refueler.tank.getTankType().getColor()); + GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 0.75F); + ResourceManager.refueler.renderPart("Fluid"); + GL11.glColor4f(1, 1, 1, 1); + + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_BLEND); + + GL11.glDisable(GL11.GL_CLIP_PLANE0); + + GL11.glShadeModel(GL11.GL_FLAT); + + } + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.refueler); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -3, 0); + GL11.glScaled(6, 6, 6); + } + public void renderCommon() { + GL11.glScaled(2, 2, 2); + GL11.glTranslated(0.5, 0, 0); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.refueler_tex); + ResourceManager.refueler.renderPart("Fueler"); + GL11.glShadeModel(GL11.GL_FLAT); + } + }; + } + +} diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteMiner.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteMiner.java index 8481a54e9..daca3b22d 100644 --- a/src/main/java/com/hbm/saveddata/satellites/SatelliteMiner.java +++ b/src/main/java/com/hbm/saveddata/satellites/SatelliteMiner.java @@ -2,6 +2,7 @@ package com.hbm.saveddata.satellites; import com.hbm.itempool.ItemPoolsSatellite; import com.hbm.util.WeightedRandomObject; +import net.minecraft.item.Item; import net.minecraft.nbt.NBTTagCompound; import java.util.HashMap; @@ -13,15 +14,15 @@ public class SatelliteMiner extends Satellite { private static final HashMap, String> CARGO = new HashMap<>(); public long lastOp; - + public SatelliteMiner() { this.satIface = Interfaces.NONE; } - + public void writeToNBT(NBTTagCompound nbt) { nbt.setLong("lastOp", lastOp); } - + public void readFromNBT(NBTTagCompound nbt) { lastOp = nbt.getLong("lastOp"); } @@ -42,6 +43,16 @@ public class SatelliteMiner extends Satellite { return CARGO.get(getClass()); } + /** + * Gets the cargo key for the satellite item. If the item is not a miner satellite null is returned. + * @param satelliteItem - Satellite item + * @return - Returns {@link com.hbm.itempool.ItemPool} key or null if the item is not a mining satellite. + */ + public static String getCargoForItem(Item satelliteItem) { + Class satelliteClass = itemToClass.getOrDefault(satelliteItem, null); + return satelliteClass != null ? CARGO.getOrDefault(satelliteClass, null) : null; + } + static { registerCargo(SatelliteMiner.class, ItemPoolsSatellite.POOL_SAT_MINER); } diff --git a/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java b/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java index 1539d3eb0..3471a589a 100644 --- a/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java +++ b/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java @@ -26,6 +26,7 @@ public interface IUpgradeInfoProvider { public static final String KEY_COOLANT_CONSUMPTION = "upgrade.coolantConsumption"; public static final String KEY_DELAY = "upgrade.delay"; public static final String KEY_EFFICIENCY = "upgrade.efficiency"; + public static final String KEY_PRODUCTIVITY = "upgrade.productivity"; public static final String KEY_FORTUNE = "upgrade.fortune"; public static final String KEY_RANGE = "upgrade.range"; } diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index f2c4a50c0..d383cdd29 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -9,12 +9,15 @@ import com.hbm.blocks.generic.BlockBedrockOreTE.TileEntityBedrockOre; import com.hbm.blocks.generic.BlockBobble.TileEntityBobble; import com.hbm.blocks.generic.BlockDynamicSlag.TileEntitySlag; import com.hbm.blocks.generic.BlockEmitter.TileEntityEmitter; +import com.hbm.blocks.generic.BlockFissure.TileEntityFissure; import com.hbm.blocks.generic.BlockGlyphidSpawner.TileEntityGlpyhidSpawner; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.blocks.generic.BlockPedestal.TileEntityPedestal; import com.hbm.blocks.generic.BlockPlushie.TileEntityPlushie; import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; import com.hbm.blocks.generic.BlockSupplyCrate.TileEntitySupplyCrate; +import com.hbm.blocks.generic.BlockWandJigsaw.TileEntityWandJigsaw; +import com.hbm.blocks.generic.BlockWandLoot.TileEntityWandLoot; import com.hbm.blocks.generic.PartEmitter.TileEntityPartEmitter; import com.hbm.blocks.machine.BlockICF.TileEntityBlockICF; import com.hbm.blocks.machine.BlockPWR.TileEntityBlockPWR; @@ -48,7 +51,7 @@ public class TileMappings { public static HashMap, String[]> map = new HashMap, String[]>(); public static List> configurables = new ArrayList>(); - + public static void writeMappings() { put(TileEntityDiFurnace.class, "tilentity_diFurnace"); put(TileEntityObjTester.class, "tilentity_objtester"); @@ -206,7 +209,7 @@ public class TileMappings { put(TileEntityMachineOrbus.class, "tileentity_orbus"); put(TileEntityGlpyhidSpawner.class, "tileentity_glyphid_spawner"); put(TileEntityCustomMachine.class, "tileentity_custom_machine"); - + put(TileEntityLoot.class, "tileentity_ntm_loot"); put(TileEntityPedestal.class, "tileentity_ntm_pedestal"); put(TileEntityBobble.class, "tileentity_ntm_bobblehead"); @@ -217,21 +220,26 @@ public class TileMappings { put(TileEntityDoorGeneric.class, "tileentity_ntm_door"); put(TileEntityCharger.class, "tileentity_ntm_charger"); - + put(TileEntityRefueler.class, "tileentity_ntm_refueler"); + put(TileEntityFileCabinet.class, "tileentity_file_cabinet"); - + put(TileEntityProxyInventory.class, "tileentity_proxy_inventory"); put(TileEntityProxyEnergy.class, "tileentity_proxy_power"); put(TileEntityProxyCombo.class, "tileentity_proxy_combo"); put(TileEntityProxyConductor.class, "tileentity_proxy_conductor"); put(TileEntityBedrockOre.class, "tileentity_bedrock_ore"); + put(TileEntityFissure.class, "tileentity_fissure"); put(TileEntityBlockPWR.class, "tileentity_block_pwr"); put(TileEntityPWRController.class, "tileentity_pwr_controller"); put(TileEntityData.class, "tileentity_data"); - + + put(TileEntityWandLoot.class, "tileentity_wand_loot"); + put(TileEntityWandJigsaw.class, "tileentity_wand_jigsaw"); + putNetwork(); putBombs(); putTurrets(); @@ -242,7 +250,7 @@ public class TileMappings { TileEntityMachineRadarNT.registerEntityClasses(); TileEntityMachineRadarNT.registerConverters(); } - + private static void putBombs() { put(TileEntityBombMulti.class, "tileentity_bombmulti"); put(TileEntityNukeGadget.class, "tilentity_nukegadget"); @@ -257,7 +265,7 @@ public class TileMappings { put(TileEntityCharge.class, "tileentity_explosive_charge"); put(TileEntityVolcanoCore.class, "tileentity_volcano_core"); } - + private static void putTurrets() { put(TileEntityTurretChekhov.class, "tileentity_turret_chekhov"); put(TileEntityTurretJeremy.class, "tileentity_turret_jeremy"); @@ -274,7 +282,7 @@ public class TileMappings { put(TileEntityTurretSentry.class, "tileentity_turret_sentry"); put(TileEntityTurretSentryDamaged.class, "tileentity_turret_sentry_damaged"); } - + private static void putMachines() { put(TileEntityHeaterFirebox.class, "tileentity_firebox"); put(TileEntityHeaterOven.class, "tileentity_heating_oven"); @@ -294,7 +302,7 @@ public class TileMappings { put(TileEntityMachinePumpSteam.class, "tileentity_steam_pump"); put(TileEntityMachinePumpElectric.class, "tileentity_electric_pump"); - + put(TileEntityFoundryMold.class, "tileentity_foundry_mold"); put(TileEntityFoundryBasin.class, "tileentity_foundry_basin"); put(TileEntityFoundryChannel.class, "tileentity_foundry_channel"); @@ -309,7 +317,7 @@ public class TileMappings { put(TileEntityDiFurnaceRTG.class, "tileentity_rtg_difurnace"); put(TileEntityMachineRadiolysis.class, "tileentity_radiolysis"); put(TileEntityMachineAutosaw.class, "tileentity_autosaw"); - + put(TileEntityCondenser.class, "tileentity_condenser"); put(TileEntityTowerSmall.class, "tileentity_cooling_tower_small"); put(TileEntityTowerLarge.class, "tileentity_cooling_tower_large"); @@ -331,12 +339,12 @@ public class TileMappings { put(TileEntityChungus.class, "tileentity_chungus"); put(TileEntityMachineCombustionEngine.class, "tileentity_combustion_engine"); - + put(TileEntityMachineAssembler.class, "tileentity_assembly_machine"); put(TileEntityMachineAssemfac.class, "tileentity_assemfac"); put(TileEntityMachineChemplant.class, "tileentity_chemical_plant"); put(TileEntityMachineChemfac.class, "tileentity_chemfac"); - + put(TileEntityMachineOilWell.class, "tileentity_derrick"); put(TileEntityMachinePumpjack.class, "tileentity_machine_pumpjack"); put(TileEntityMachineFrackingTower.class, "tileentity_fracking_tower"); @@ -352,21 +360,21 @@ public class TileMappings { put(TileEntityMachinePyroOven.class, "tileentity_pyrooven"); put(TileEntityChimneyBrick.class, "tileentity_chimney_brick"); put(TileEntityChimneyIndustrial.class, "tileentity_chimney_industrial"); - + put(TileEntityReactorZirnox.class, "tileentity_zirnox"); put(TileEntityZirnoxDestroyed.class, "tileentity_zirnox_destroyed"); put(TileEntityWatz.class, "tileentity_watz"); put(TileEntityWatzPump.class, "tileentity_watz_pump"); } - + private static void putPile() { put(TileEntityPileFuel.class, "tileentity_pile_fuel"); put(TileEntityPileSource.class, "tileentity_pile_source"); put(TileEntityPileBreedingFuel.class, "tileentity_pile_breedingfuel"); put(TileEntityPileNeutronDetector.class, "tileentity_pile_neutrondetector"); } - + private static void putRBMK() { put(TileEntityRBMKRod.class, "tileentity_rbmk_rod"); put(TileEntityRBMKRodReaSim.class, "tileentity_rbmk_rod_reasim"); @@ -386,12 +394,12 @@ public class TileMappings { put(TileEntityRBMKInlet.class, "tileentity_rbmk_inlet"); put(TileEntityRBMKOutlet.class, "tileentity_rbmk_outlet"); } - + private static void putNetwork() { put(TileEntityCableBaseNT.class, "tileentity_cable", "tileentity_wirecoated"); put(TileEntityCableSwitch.class, "tileentity_cable_switch"); put(TileEntityDiode.class, "tileentity_cable_diode"); - + put(TileEntityConnector.class, "tileentity_connector_redwire"); put(TileEntityPylon.class, "tileentity_pylon_redwire"); put(TileEntityPylonMedium.class, "tileentity_pylon_medium"); @@ -414,24 +422,24 @@ public class TileMappings { put(TileEntityRadioTorchCounter.class, "tileentity_rtty_counter"); put(TileEntityRadioTorchLogic.class, "tileentity_rtty_logic"); put(TileEntityRadioTelex.class, "tileentity_rtty_telex"); - + put(TileEntityDroneWaypoint.class, "tileentity_drone_waypoint"); put(TileEntityDroneCrate.class, "tileentity_drone_crate"); put(TileEntityDroneWaypointRequest.class, "tileentity_drone_waypoint_request"); put(TileEntityDroneDock.class, "tileentity_drone_dock"); put(TileEntityDroneProvider.class, "tileentity_drone_provider"); put(TileEntityDroneRequester.class, "tileentity_drone_requester"); - + put(TileEntityRailSwitch.class, "tileentity_rail_switch"); } - + private static void put(Class clazz, String... names) { map.put(clazz, names); /*if((IFluidSource.class.isAssignableFrom(clazz) || IFluidAcceptor.class.isAssignableFrom(clazz)) && !IFluidConnector.class.isAssignableFrom(clazz)) { LoggingUtil.errorWithHighlight(clazz.getCanonicalName() + " implements the old interfaces but not IFluidConnector!"); }*/ - + if(IConfigurableMachine.class.isAssignableFrom(clazz)) { configurables.add((Class) clazz); } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLandmine.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLandmine.java index e9320c85d..8481849e4 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLandmine.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLandmine.java @@ -3,6 +3,7 @@ package com.hbm.tileentity.bomb; import java.util.List; import com.hbm.blocks.bomb.Landmine; +import com.hbm.main.MainRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -57,6 +58,7 @@ public class TileEntityLandmine extends TileEntity { if(isPrimed) { //the explosion is part of the mine block so that the IBomb interface works, i remember now landmine.explode(worldObj, xCoord, yCoord, zCoord); + if(o instanceof EntityPlayer) ((EntityPlayer) o).addStat(MainRegistry.statMines, 1); } return; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityBlastDoor.java b/src/main/java/com/hbm/tileentity/machine/TileEntityBlastDoor.java index d3d78294e..dbf1d785d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityBlastDoor.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityBlastDoor.java @@ -8,6 +8,7 @@ import com.hbm.packet.toclient.TEVaultPacket; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; @@ -289,7 +290,8 @@ public class TileEntityBlastDoor extends TileEntityLockableBase { public boolean placeDummy(int x, int y, int z) { - if(!worldObj.getBlock(x, y, z).isReplaceable(worldObj, x, y, z)) worldObj.func_147480_a(x, y, z, false); + Block present = worldObj.getBlock(x, y, z); + if(!present.isReplaceable(worldObj, x, y, z) && present != ModBlocks.dummy_block_blast) worldObj.func_147480_a(x, y, z, false); worldObj.setBlock(x, y, z, ModBlocks.dummy_block_blast); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java index 23771df85..8b4cbe76c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java @@ -185,7 +185,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme tank.setFill(tank.getFill() - getRequiredAcid(result.acidAmount)); - float freeChance = this.getFreeChance(); + float freeChance = this.getFreeChance(result); if(freeChance == 0 || freeChance < worldObj.rand.nextFloat()) this.decrStackSize(0, result.itemAmount); @@ -226,17 +226,13 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme } public int getRequiredAcid(int base) { - int efficiency = upgradeManager.getLevel(UpgradeType.EFFECT); - if(efficiency > 0) { - return base * (efficiency + 2); - } return base; } - public float getFreeChance() { + public float getFreeChance(CrystallizerRecipe recipe) { int efficiency = upgradeManager.getLevel(UpgradeType.EFFECT); if(efficiency > 0) { - return Math.min(efficiency * 0.05F, 0.15F); + return Math.min(efficiency * recipe.productivity, 0.99F); } return 0; } @@ -253,7 +249,8 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme public int getPowerRequired() { int speed = upgradeManager.getLevel(UpgradeType.SPEED); - return (int) (demand + Math.min(speed * 1000, 3000)); + int effect = upgradeManager.getLevel(UpgradeType.EFFECT); + return (int) (demand + speed * demand + effect * demand * 2); } public float getCycleCount() { @@ -379,8 +376,8 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%")); } if(type == UpgradeType.EFFECT) { - info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_EFFICIENCY, "+" + (level * 5) + "%")); - info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_ACID, "+" + (level * 100 + 100) + "%")); + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_EFFICIENCY, "x" + level)); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 200) + "%")); } if(type == UpgradeType.OVERDRIVE) { info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index b830abfe9..c1c490c34 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -332,7 +332,10 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I this.entries.clear(); if(this.yCoord < radarAltitude) return; - if(this.power < consumption) return; + if(this.power < consumption) { + this.power = 0; + return; + } this.power -= consumption; int scan = this.getRange(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRotaryFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRotaryFurnace.java index 7c1f669e4..a36d75b43 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRotaryFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRotaryFurnace.java @@ -1,7 +1,10 @@ package com.hbm.tileentity.machine; +import java.io.IOException; import java.util.Random; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.handler.pollution.PollutionHandler; import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.handler.threading.PacketThreading; @@ -13,15 +16,15 @@ import com.hbm.inventory.gui.GUIMachineRotaryFurnace; import com.hbm.inventory.material.MaterialShapes; import com.hbm.inventory.material.Mats; import com.hbm.inventory.material.Mats.MaterialStack; +import com.hbm.inventory.material.NTMMaterial; import com.hbm.inventory.recipes.RotaryFurnaceRecipes; import com.hbm.inventory.recipes.RotaryFurnaceRecipes.RotaryFurnaceRecipe; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; +import com.hbm.module.ModuleBurnTime; +import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.AuxParticlePacketNT; -import com.hbm.tileentity.IConditionalInvAccess; -import com.hbm.tileentity.IFluidCopiable; -import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityMachinePolluting; +import com.hbm.tileentity.*; import com.hbm.util.CrucibleUtil; import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.util.fauxpointtwelve.DirPos; @@ -41,7 +44,7 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting implements IFluidStandardTransceiver, IGUIProvider, IFluidCopiable, IConditionalInvAccess { +public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting implements IFluidStandardTransceiver, IGUIProvider, IFluidCopiable, IConditionalInvAccess, IConfigurableMachine { public FluidTank[] tanks; public boolean isProgressing; @@ -51,17 +54,29 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i public int steamUsed = 0; public boolean isVenting; public MaterialStack output; + public ItemStack lastFuel; public static final int maxOutput = MaterialShapes.BLOCK.q(16); public int anim; public int lastAnim; + /**Given this has no heat, the heat mod instead affects the progress per fuel **/ + public static ModuleBurnTime burnModule = new ModuleBurnTime() + .setCokeTimeMod(1.25) + .setRocketTimeMod(1.5) + .setSolidTimeMod(1.5) + .setBalefireTimeMod(1.5) + + .setSolidHeatMod(1.5) + .setRocketHeatMod(3) + .setBalefireHeatMod(10); + public TileEntityMachineRotaryFurnace() { super(5, 50); tanks = new FluidTank[3]; tanks[0] = new FluidTank(Fluids.NONE, 16_000); - tanks[1] = new FluidTank(Fluids.STEAM, 4_000); - tanks[2] = new FluidTank(Fluids.SPENTSTEAM, 40); + tanks[1] = new FluidTank(Fluids.STEAM, 12_000); + tanks[2] = new FluidTank(Fluids.SPENTSTEAM, 120); } @Override @@ -117,15 +132,19 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i if(recipe != null) { if(this.burnTime <= 0 && slots[4] != null && TileEntityFurnace.isItemFuel(slots[4])) { - this.maxBurnTime = this.burnTime = TileEntityFurnace.getItemBurnTime(slots[4]) / 2; + lastFuel = slots[4]; + this.maxBurnTime = this.burnTime = burnModule.getBurnTime(lastFuel) / 2; this.decrStackSize(4, 1); this.markChanged(); } if(this.canProcess(recipe)) { - this.progress += 1F / recipe.duration; - tanks[1].setFill(tanks[1].getFill() - recipe.steam); - steamUsed += recipe.steam; + float speed = Math.max((float) burnModule.getMod(lastFuel, burnModule.getModHeat()), 1); + this.progress += speed / recipe.duration; + + speed = (float)(13 * Math.log10(speed) + 1); + tanks[1].setFill((int) (tanks[1].getFill() - recipe.steam * speed)); + tanks[2].setFill((int) (tanks[2].getFill() + recipe.steam * speed / 100)); this.isProgressing = true; if(this.progress >= 1F) { @@ -187,7 +206,7 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i } this.lastAnim = this.anim; if(this.isProgressing) { - this.anim++; + this.anim += (int) Math.max(burnModule.getMod(slots[4], burnModule.getModHeat()), 1); } } } @@ -239,6 +258,13 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i this.progress = nbt.getFloat("prog"); this.burnTime = nbt.getInteger("burn"); this.maxBurnTime = nbt.getInteger("maxBurn"); + if (nbt.hasKey("outType")) { + NTMMaterial mat = Mats.matById.get(nbt.getInteger("outType")); + this.output = new MaterialStack(mat, nbt.getInteger("outAmount")); + } + ItemStack nbtFuel = ItemStack.loadItemStackFromNBT(nbt.getCompoundTag("lastFuel")); + if(nbtFuel != null) + this.lastFuel = nbtFuel; } @Override @@ -250,6 +276,11 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i nbt.setFloat("prog", progress); nbt.setInteger("burn", burnTime); nbt.setInteger("maxBurn", maxBurnTime); + nbt.setTag("lastFuel", lastFuel.writeToNBT(new NBTTagCompound())); + if (this.output != null) { + nbt.setInteger("outType", this.output.material.id); + nbt.setInteger("outAmount", this.output.amount); + } } public DirPos[] getSteamPos() { @@ -383,4 +414,23 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMachineRotaryFurnace(player.inventory, this); } @Override public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineRotaryFurnace(player.inventory, this); } + + @Override + public String getConfigName() { + return "rotaryfurnace"; + } + + @Override + public void readIfPresent(JsonObject obj) { + if(obj.has("burnModule")) { + burnModule.readIfPresent(obj.get("M:burnModule").getAsJsonObject()); + } + } + + @Override + public void writeConfig(JsonWriter writer) throws IOException { + writer.name("M:burnModule").beginObject(); + burnModule.writeConfig(writer); + writer.endObject(); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java index 00b4812ce..ae0493c98 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java @@ -60,14 +60,14 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase this.lastAmount = this.amount; } - if (this.amount >= this.getCapacity()) { - //In case of overfill problems, spit out the excess as scrap - if (amount > getCapacity()) { - ItemStack scrap = ItemScraps.create(new Mats.MaterialStack(type, Math.max(amount - getCapacity(), 0))); - EntityItem item = new EntityItem(worldObj, xCoord + 0.5, yCoord + 2, zCoord + 0.5, scrap); - worldObj.spawnEntityInWorld(item); - } - this.amount = this.getCapacity(); + if(this.amount >= this.getCapacity()) { + // In case of overfill problems, spit out the excess as scrap + if(amount > getCapacity()) { + ItemStack scrap = ItemScraps.create(new Mats.MaterialStack(type, Math.max(amount - getCapacity(), 0))); + EntityItem item = new EntityItem(worldObj, xCoord + 0.5, yCoord + 2, zCoord + 0.5, scrap); + worldObj.spawnEntityInWorld(item); + } + this.amount = this.getCapacity(); } if(this.amount == 0) { @@ -78,56 +78,58 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase ItemMold.Mold mold = this.getInstalledMold(); - if(canProcess()) { - int minAmount = mold.getCost() * 9; - - // Makes it flush the buffers after 10 seconds of inactivity - if(worldObj.getWorldTime() >= lastCastTick + 200) { - minAmount = mold.getCost(); - } - - if(this.amount >= minAmount) { - int itemsCasted = amount / mold.getCost(); - - for(int j = 0; j < itemsCasted; j++) { - this.amount -= mold.getCost(); - - ItemStack out = mold.getOutput(type); - - for(int i = 1; i < 7; i++) { - if(slots[i] == null) { - slots[i] = out.copy(); - break; - } - - if(slots[i].isItemEqual(out) && slots[i].stackSize + out.stackSize <= out.getMaxStackSize()) { - slots[i].stackSize += out.stackSize; - break; - } - - } + if(mold != null) { + + int itemsCasted = amount / mold.getCost(); + + if(canProcess(itemsCasted)) { + int minAmount = mold.getCost() * 9; + + // Makes it flush the buffers after 10 seconds of inactivity + if(worldObj.getWorldTime() >= lastCastTick + 200) { + minAmount = mold.getCost(); + } + + if(this.amount >= minAmount) { + + for(int j = 0; j < itemsCasted; j++) { + this.amount -= mold.getCost(); + + ItemStack out = mold.getOutput(type); + + for(int i = 1; i < 7; i++) { + if(slots[i] == null) { + slots[i] = out.copy(); + break; + } + + if(slots[i].isItemEqual(out) && slots[i].stackSize + out.stackSize <= out.getMaxStackSize()) { + slots[i].stackSize += out.stackSize; + break; + } + + } + } + markChanged(); + + water.setFill(water.getFill() - getWaterRequired() * itemsCasted); + steam.setFill(steam.getFill() + getWaterRequired() * itemsCasted); + + lastCastTick = worldObj.getWorldTime(); } - markChanged(); - - water.setFill(water.getFill() - getWaterRequired() * itemsCasted); - steam.setFill(steam.getFill() + getWaterRequired() * itemsCasted); - - lastCastTick = worldObj.getWorldTime(); } } networkPackNT(150); - + } } - } - - public boolean canProcess() { + public boolean canProcess(int itemsCasted) { ItemMold.Mold mold = this.getInstalledMold(); if(type != null && mold != null && mold.getOutput(type) != null) { for(int i = 1; i < 7; i++) { if(slots[i] == null || slots[i].isItemEqual(mold.getOutput(type)) && slots[i].stackSize + mold.getOutput(type).stackSize <= mold.getOutput(type).getMaxStackSize()) - return water.getFill() >= getWaterRequired() && steam.getFill() < steam.getMaxFill(); + return water.getFill() >= getWaterRequired() * itemsCasted && steam.getFill() < steam.getMaxFill(); } } @@ -140,12 +142,7 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - return new DirPos[] { - new DirPos(xCoord + rot.offsetX * 2 - dir.offsetX, yCoord, zCoord + rot.offsetZ * 2 - dir.offsetZ, rot), - new DirPos(xCoord - rot.offsetX - dir.offsetX, yCoord, zCoord - rot.offsetZ - dir.offsetZ, rot.getOpposite()), - new DirPos(xCoord + rot.offsetX * 2 - dir.offsetX * 5, yCoord, zCoord + rot.offsetZ * 2 - dir.offsetZ * 5, rot), - new DirPos(xCoord - rot.offsetX - dir.offsetX * 5, yCoord, zCoord - rot.offsetZ - dir.offsetZ * 5, rot.getOpposite()) - }; + return new DirPos[] { new DirPos(xCoord + rot.offsetX * 2 - dir.offsetX, yCoord, zCoord + rot.offsetZ * 2 - dir.offsetZ, rot), new DirPos(xCoord - rot.offsetX - dir.offsetX, yCoord, zCoord - rot.offsetZ - dir.offsetZ, rot.getOpposite()), new DirPos(xCoord + rot.offsetX * 2 - dir.offsetX * 5, yCoord, zCoord + rot.offsetZ * 2 - dir.offsetZ * 5, rot), new DirPos(xCoord - rot.offsetX - dir.offsetX * 5, yCoord, zCoord - rot.offsetZ - dir.offsetZ * 5, rot.getOpposite()) }; } public int[][] getMetalPourPos() { @@ -153,12 +150,7 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - return new int[][] { - new int[] { xCoord + rot.offsetX - dir.offsetX, yCoord + 2, zCoord + rot.offsetZ - dir.offsetZ }, - new int[] { xCoord - dir.offsetX, yCoord + 2, zCoord - dir.offsetZ }, - new int[] { xCoord + rot.offsetX, yCoord + 2, zCoord + rot.offsetZ }, - new int[] { xCoord, yCoord + 2, zCoord } - }; + return new int[][] { new int[] { xCoord + rot.offsetX - dir.offsetX, yCoord + 2, zCoord + rot.offsetZ - dir.offsetZ }, new int[] { xCoord - dir.offsetX, yCoord + 2, zCoord - dir.offsetZ }, new int[] { xCoord + rot.offsetX, yCoord + 2, zCoord + rot.offsetZ }, new int[] { xCoord, yCoord + 2, zCoord } }; } @Override @@ -190,11 +182,12 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase } return false; - } + } @Override public boolean standardCheck(World world, int x, int y, int z, ForgeDirection side, Mats.MaterialStack stack) { - if(this.type != null && this.type != stack.material) return false; + if(this.type != null && this.type != stack.material) + return false; int limit = this.getInstalledMold() != null ? this.getInstalledMold().getCost() * 9 : this.getCapacity(); return !(this.amount >= limit || getInstalledMold() == null); } @@ -215,10 +208,11 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase this.sendFluid(steam, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } - @Override + + @Override public Mats.MaterialStack standardAdd(World world, int x, int y, int z, ForgeDirection side, Mats.MaterialStack stack) { this.type = stack.material; - int limit = this.getInstalledMold() != null ? this.getInstalledMold().getCost() * 9 : this.getCapacity(); + int limit = this.getInstalledMold() != null ? this.getInstalledMold().getCost() * 9 : this.getCapacity(); if(stack.amount + this.amount <= limit) { this.amount += stack.amount; return null; @@ -231,6 +225,7 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase return stack; } + @Override public FluidTank[] getSendingTanks() { return new FluidTank[] { steam }; @@ -287,7 +282,8 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase @Override public boolean isItemValidForSlot(int i, ItemStack stack) { - if(i == 0) return stack.getItem() == ModItems.mold; + if(i == 0) + return stack.getItem() == ModItems.mold; return false; } @@ -331,13 +327,7 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase public AxisAlignedBB getRenderBoundingBox() { if(bb == null) { - bb = AxisAlignedBB.getBoundingBox( - xCoord - 7, - yCoord, - zCoord - 7, - xCoord + 7, - yCoord + 3, - zCoord + 7); + bb = AxisAlignedBB.getBoundingBox(xCoord - 7, yCoord, zCoord - 7, xCoord + 7, yCoord + 3, zCoord + 7); } return bb; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityRefueler.java b/src/main/java/com/hbm/tileentity/machine/TileEntityRefueler.java new file mode 100644 index 000000000..54b131657 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityRefueler.java @@ -0,0 +1,157 @@ +package com.hbm.tileentity.machine; + +import java.util.List; +import java.util.Random; + +import com.hbm.handler.ArmorModHandler; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.TileEntityLoadedBase; +import com.hbm.util.BobMathUtil; + +import api.hbm.fluid.IFillableItem; +import api.hbm.fluid.IFluidStandardReceiver; +import io.netty.buffer.ByteBuf; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemArmor; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityRefueler extends TileEntityLoadedBase implements IFluidStandardReceiver { + + public double fillLevel; + public double prevFillLevel; + + private boolean isOperating = false; + private int operatingTime; + + public FluidTank tank; + + public TileEntityRefueler() { + super(); + tank = new FluidTank(Fluids.KEROSENE, 100); + } + + @SuppressWarnings("unchecked") + @Override + public void updateEntity() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()).getOpposite(); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + if(!worldObj.isRemote) { + trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX, yCoord, zCoord + dir.offsetZ, dir); + + isOperating = false; + + List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(xCoord + 0.5, yCoord, zCoord + 0.5, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5).expand(0.5, 0.0, 0.5)); + + for(EntityPlayer player : players) { + for(int i = 0; i < 5; i++) { + + ItemStack stack = player.getEquipmentInSlot(i); + if(stack == null) continue; + + if(fillFillable(stack)) { + isOperating = true; + } + + if(stack.getItem() instanceof ItemArmor && ArmorModHandler.hasMods(stack)) { + for(ItemStack mod : ArmorModHandler.pryMods(stack)) { + if(mod == null) continue; + + if(fillFillable(mod)) { + ArmorModHandler.applyMod(stack, mod); + isOperating = true; + } + } + } + } + } + + if(isOperating) { + if(operatingTime % 20 == 0) + worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "random.fizz", 0.2F, 0.5F); + + operatingTime++; + } else { + operatingTime = 0; + } + + networkPackNT(150); + } else { + if(isOperating) { + Random rand = worldObj.rand; + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "fluidfill"); + data.setInteger("color", tank.getTankType().getColor()); + data.setDouble("posX", xCoord + 0.5 + rand.nextDouble() * 0.0625 + dir.offsetX * 0.5 + rot.offsetX * 0.25); + data.setDouble("posZ", zCoord + 0.5 + rand.nextDouble() * 0.0625 + dir.offsetZ * 0.5 + rot.offsetZ * 0.25); + data.setDouble("posY", yCoord + 0.375); + data.setDouble("mX", -dir.offsetX + rand.nextGaussian() * 0.1); + data.setDouble("mZ", -dir.offsetZ + rand.nextGaussian() * 0.1); + data.setDouble("mY", 0D); + + MainRegistry.proxy.effectNT(data); + } + + prevFillLevel = fillLevel; + + double targetFill = (double)tank.getFill() / (double)tank.getMaxFill(); + fillLevel = BobMathUtil.interp(fillLevel, targetFill, targetFill > fillLevel || !isOperating ? 0.1F : 0.01F); + } + + + } + + private boolean fillFillable(ItemStack stack) { + if(stack.getItem() instanceof IFillableItem) { + IFillableItem fillable = (IFillableItem) stack.getItem(); + if(fillable.acceptsFluid(tank.getTankType(), stack)) { + int prevFill = tank.getFill(); + tank.setFill(fillable.tryFill(tank.getTankType(), tank.getFill(), stack)); + return tank.getFill() < prevFill; + } + } + + return false; + } + + @Override + public void serialize(ByteBuf buf) { + buf.writeBoolean(isOperating); + tank.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + isOperating = buf.readBoolean(); + tank.deserialize(buf); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + tank.readFromNBT(nbt, "t"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + tank.writeToNBT(nbt, "t"); + } + + @Override + public FluidTank[] getAllTanks() { + return new FluidTank[] { tank }; + } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] { tank }; + } + +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityVaultDoor.java b/src/main/java/com/hbm/tileentity/machine/TileEntityVaultDoor.java index 90ce287aa..910f89b17 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityVaultDoor.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityVaultDoor.java @@ -8,6 +8,7 @@ import com.hbm.packet.toclient.TEVaultPacket; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; @@ -195,7 +196,8 @@ public class TileEntityVaultDoor extends TileEntityLockableBase { public boolean placeDummy(int x, int y, int z) { - if(!worldObj.getBlock(x, y, z).isReplaceable(worldObj, x, y, z)) worldObj.func_147480_a(x, y, z, false); + Block present = worldObj.getBlock(x, y, z); + if(!present.isReplaceable(worldObj, x, y, z) && present != ModBlocks.dummy_block_vault) worldObj.func_147480_a(x, y, z, false); worldObj.setBlock(x, y, z, ModBlocks.dummy_block_vault); diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBase.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBase.java index 0463be416..80bc476ab 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBase.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBase.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.machine.pile; import com.hbm.handler.neutron.NeutronNodeWorld; +import com.hbm.handler.neutron.NeutronNodeWorld.StreamWorld; import com.hbm.handler.neutron.PileNeutronHandler; import com.hbm.handler.neutron.PileNeutronHandler.PileNeutronStream; import com.hbm.handler.neutron.PileNeutronHandler.PileNeutronNode; @@ -17,25 +18,31 @@ public abstract class TileEntityPileBase extends TileEntity { @Override public void invalidate() { super.invalidate(); + NeutronNodeWorld.removeNode(worldObj, new BlockPos(this)); + } - NeutronNodeWorld.removeNode(new BlockPos(this)); + @Override + public void onChunkUnload() { + super.onChunkUnload(); + NeutronNodeWorld.removeNode(worldObj, new BlockPos(this)); } protected void castRay(int flux) { BlockPos pos = new BlockPos(this); - if (flux == 0) { + if(flux == 0) { // simple way to remove the node from the cache when no flux is going into it! - NeutronNodeWorld.removeNode(pos); + NeutronNodeWorld.removeNode(worldObj, pos); return; } - PileNeutronNode node = (PileNeutronNode) NeutronNodeWorld.getNode(pos); + StreamWorld streamWorld = NeutronNodeWorld.getOrAddWorld(worldObj); + PileNeutronNode node = (PileNeutronNode) streamWorld.getNode(pos); if(node == null) { - node = PileNeutronHandler.makeNode(this); - NeutronNodeWorld.addNode(node); + node = PileNeutronHandler.makeNode(streamWorld, this); + streamWorld.addNode(node); } Vec3 neutronVector = Vec3.createVectorHelper(1, 0, 0); diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/RBMKDials.java b/src/main/java/com/hbm/tileentity/machine/rbmk/RBMKDials.java index b8e24f1c8..85b3834e8 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/RBMKDials.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/RBMKDials.java @@ -38,8 +38,8 @@ public class RBMKDials { KEY_MODERATOR_EFFICIENCY("dialModeratorEfficiency", 1.0), KEY_ABSORBER_EFFICIENCY("dialAbsorberEfficiency", 1.0), KEY_REFLECTOR_EFFICIENCY("dialReflectorEfficiency", 1.0), - KEY_DISABLE_DEPLETION("dialDisableDepletion", true), - KEY_DISABLE_XENON("dialDisableXenon", true); + KEY_DISABLE_DEPLETION("dialDisableDepletion", false), + KEY_DISABLE_XENON("dialDisableXenon", false); public final String keyString; public final Object defValue; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java index 555d6f9ad..d63b64d0c 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java @@ -14,7 +14,6 @@ import com.hbm.handler.threading.PacketThreading; import com.hbm.main.MainRegistry; import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.saveddata.TomSaveData; -import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.IOverpressurable; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; @@ -54,7 +53,7 @@ import java.util.Iterator; * @author hbm * */ -public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements IBufPacketReceiver { +public abstract class TileEntityRBMKBase extends TileEntityLoadedBase { public double heat; @@ -133,12 +132,12 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements double heatConsumption = RBMKDials.getBoilerHeatConsumption(worldObj); double availableHeat = (this.heat - 100) / heatConsumption; double availableWater = this.water; - double availableSpace = this.maxSteam - this.steam; + double availableSpace = maxSteam - this.steam; int processedWater = (int) Math.floor(BobMathUtil.min(availableHeat, availableWater, availableSpace) * MathHelper.clamp_double(RBMKDials.getReaSimBoilerSpeed(worldObj), 0D, 1D)); if(processedWater <= 0) return; - + this.water -= processedWater; this.steam += processedWater; this.heat -= processedWater * heatConsumption; @@ -161,7 +160,7 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements if(heat == 20 && RBMKDials.getReasimBoilers(worldObj)) return; - List rec = new ArrayList(); + List rec = new ArrayList<>(); rec.add(this); double heatTot = this.heat; int waterTot = this.water; @@ -227,8 +226,13 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements @Override public void invalidate() { super.invalidate(); + NeutronNodeWorld.removeNode(worldObj, new BlockPos(this)); // woo-fucking-hoo!!! + } - NeutronNodeWorld.removeNode(new BlockPos(this)); // woo-fucking-hoo!!! + @Override + public void onChunkUnload() { + super.onChunkUnload(); + NeutronNodeWorld.removeNode(worldObj, new BlockPos(this)); // woo-fucking-hoo!!! } @Override @@ -304,6 +308,7 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements diag = false; } + @SuppressWarnings("unchecked") @SideOnly(Side.CLIENT) public static void diagnosticPrintHook(RenderGameOverlayEvent.Pre event, World world, int x, int y, int z) { @@ -326,7 +331,7 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements int pX = resolution.getScaledWidth() / 2 + 8; int pZ = resolution.getScaledHeight() / 2; - List exceptions = new ArrayList(); + List exceptions = new ArrayList<>(); exceptions.add("x"); exceptions.add("y"); exceptions.add("z"); @@ -416,10 +421,11 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements worldObj.spawnEntityInWorld(debris); } - public static HashSet columns = new HashSet(); - public static HashSet pipes = new HashSet(); + public static HashSet columns = new HashSet<>(); + public static HashSet pipes = new HashSet<>(); //assumes that !worldObj.isRemote + @SuppressWarnings("unchecked") public void meltdown() { RBMKBase.dropLids = false; @@ -483,8 +489,8 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements /* Hanlde overpressure event */ if(RBMKDials.getOverpressure(worldObj) && !pipes.isEmpty()) { - HashSet pipeBlocks = new HashSet(); - HashSet pipeReceivers = new HashSet(); + HashSet pipeBlocks = new HashSet<>(); + HashSet pipeReceivers = new HashSet<>(); //unify all parts into single sets to prevent redundancy pipes.forEach(x -> { diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java index f41643047..dfb753de3 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java @@ -557,7 +557,7 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon if(te instanceof TileEntityRBMKRod){ TileEntityRBMKRod fuelChannel = (TileEntityRBMKRod)te; data_table.put("fluxQuantity", fuelChannel.lastFluxQuantity); - data_table.put("fluxRatio", fuelChannel.fluxRatio); + data_table.put("fluxRatio", fuelChannel.fluxFastRatio); } if(te instanceof TileEntityRBMKBoiler){ diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java index 6a7acf1bf..14bff0eb1 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -6,6 +6,7 @@ import com.hbm.blocks.machine.rbmk.RBMKRod; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; import com.hbm.handler.CompatHandler; import com.hbm.handler.neutron.NeutronNodeWorld; +import com.hbm.handler.neutron.NeutronNodeWorld.StreamWorld; import com.hbm.handler.neutron.RBMKNeutronHandler; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.handler.neutron.RBMKNeutronHandler.RBMKNeutronNode; @@ -15,6 +16,7 @@ import com.hbm.inventory.gui.GUIRBMKRod; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemRBMKRod; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; +import com.hbm.util.BufferUtil; import com.hbm.util.CompatEnergyControl; import com.hbm.util.ParticleUtil; @@ -41,17 +43,22 @@ import java.util.ArrayList; import java.util.List; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBMKFluxReceiver, IRBMKLoadable, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent { +public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBMKFluxReceiver, IRBMKLoadable, IInfoProviderEC, SimpleComponent, CompatHandler.OCComponent { // New system!! // Used for receiving flux (calculating outbound flux/burning rods) - public double fluxRatio; + public double fluxFastRatio; public double fluxQuantity; public double lastFluxQuantity; public double lastFluxRatio; public boolean hasRod; + // Fuel rod item data client sync + private String fuelYield; + private String fuelXenon; + private String fuelHeat; + public TileEntityRBMKRod() { super(1); } @@ -73,11 +80,11 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM @Override public void receiveFlux(NeutronStream stream) { - double fastFlux = this.fluxQuantity * this.fluxRatio; + double fastFlux = this.fluxQuantity * this.fluxFastRatio; double fastFluxIn = stream.fluxQuantity * stream.fluxRatio; this.fluxQuantity += stream.fluxQuantity; - fluxRatio = (fastFlux + fastFluxIn) / fluxQuantity; + fluxFastRatio = (fastFlux + fastFluxIn) / fluxQuantity; } @Override @@ -94,18 +101,18 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM // Experimental flux ratio curve rods! // Again, nothing really uses this so its just idle code at the moment. - if (rod.specialFluxCurve) { + if(rod.specialFluxCurve) { - fluxRatioOut = rod.fluxRatioOut(this.fluxRatio, ItemRBMKRod.getEnrichment(slots[0])); + fluxRatioOut = rod.fluxRatioOut(this.fluxFastRatio, ItemRBMKRod.getEnrichment(slots[0])); double fluxIn; - fluxIn = rod.fluxFromRatio(this.fluxQuantity, this.fluxRatio); + fluxIn = rod.fluxFromRatio(this.fluxQuantity, this.fluxFastRatio); fluxQuantityOut = rod.burn(worldObj, slots[0], fluxIn); } else { NType rType = rod.rType; - if (rType == NType.SLOW) + if(rType == NType.SLOW) fluxRatioOut = 0; else fluxRatioOut = 1; @@ -141,10 +148,10 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM //for spreading, we want the buffered flux to be 0 because we want to know exactly how much gets reflected back this.lastFluxQuantity = this.fluxQuantity; - this.lastFluxRatio = this.fluxRatio; + this.lastFluxRatio = this.fluxFastRatio; this.fluxQuantity = 0; - this.fluxRatio = 0; + this.fluxFastRatio = 0; spreadFlux(fluxQuantityOut, fluxRatioOut); @@ -155,7 +162,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM this.lastFluxRatio = 0; this.lastFluxQuantity = 0; this.fluxQuantity = 0; - this.fluxRatio = 0; + this.fluxFastRatio = 0; hasRod = false; @@ -166,9 +173,12 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM private double fluxFromType(NType type) { + double fastFlux = this.fluxQuantity * this.fluxFastRatio; + double slowFlux = this.fluxQuantity * (1 - this.fluxFastRatio); + switch(type) { - case SLOW: return (this.fluxQuantity * (1 - this.fluxRatio) + Math.min(this.fluxRatio * 0.5, 1)); - case FAST: return (this.fluxQuantity * (1 - this.fluxRatio) + Math.min(this.fluxRatio * 0.3, 1)); + case SLOW: return slowFlux + fastFlux * 0.5; + case FAST: return fastFlux + slowFlux * 0.3; case ANY: return this.fluxQuantity; } @@ -189,17 +199,18 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM if(pos == null) pos = new BlockPos(this); - if (flux == 0) { + if(flux == 0) { // simple way to remove the node from the cache when no flux is going into it! - NeutronNodeWorld.removeNode(pos); + NeutronNodeWorld.removeNode(worldObj, pos); return; } - RBMKNeutronNode node = (RBMKNeutronNode) NeutronNodeWorld.getNode(pos); + StreamWorld streamWorld = NeutronNodeWorld.getOrAddWorld(worldObj); + RBMKNeutronNode node = (RBMKNeutronNode) streamWorld.getNode(pos); if(node == null) { - node = RBMKNeutronHandler.makeNode(this); - NeutronNodeWorld.addNode(node); + node = RBMKNeutronHandler.makeNode(streamWorld, this); + streamWorld.addNode(node); } for(ForgeDirection dir : fluxDirs) { @@ -215,16 +226,16 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - if (nbt.hasKey("fluxFast") || nbt.hasKey("fluxSlow")) { + if(nbt.hasKey("fluxFast") || nbt.hasKey("fluxSlow")) { // recalculate new values to keep stable operations this.fluxQuantity = nbt.getDouble("fluxFast") + nbt.getDouble("fluxSlow"); - if (this.fluxQuantity > 0) - this.fluxRatio = nbt.getDouble("fluxFast") / fluxQuantity; + if(this.fluxQuantity > 0) + this.fluxFastRatio = nbt.getDouble("fluxFast") / fluxQuantity; else - this.fluxRatio = 0; + this.fluxFastRatio = 0; } else { this.fluxQuantity = nbt.getDouble("fluxQuantity"); - this.fluxRatio = nbt.getDouble("fluxMod"); + this.fluxFastRatio = nbt.getDouble("fluxMod"); } this.hasRod = nbt.getBoolean("hasRod"); } @@ -233,12 +244,12 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - if (!diag) { + if(!diag) { nbt.setDouble("fluxQuantity", this.lastFluxQuantity); nbt.setDouble("fluxMod", this.lastFluxRatio); } else { - nbt.setDouble("fluxSlow", this.fluxQuantity * (1 - fluxRatio)); - nbt.setDouble("fluxFast", this.fluxQuantity * fluxRatio); + nbt.setDouble("fluxSlow", this.fluxQuantity * (1 - fluxFastRatio)); + nbt.setDouble("fluxFast", this.fluxQuantity * fluxFastRatio); } nbt.setBoolean("hasRod", this.hasRod); } @@ -249,14 +260,27 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM buf.writeDouble(this.lastFluxQuantity); buf.writeDouble(this.lastFluxRatio); buf.writeBoolean(this.hasRod); + if(this.hasRod) { + ItemRBMKRod rod = ((ItemRBMKRod)slots[0].getItem()); + BufferUtil.writeString(buf, ItemRBMKRod.getYield(slots[0]) + " / " + rod.yield + " (" + (ItemRBMKRod.getEnrichment(slots[0]) * 100) + "%)"); + BufferUtil.writeString(buf, ItemRBMKRod.getPoison(slots[0]) + "%"); + BufferUtil.writeString(buf, ItemRBMKRod.getCoreHeat(slots[0]) + " / " + ItemRBMKRod.getHullHeat(slots[0]) + " / " + rod.meltingPoint); + } } @Override public void deserialize(ByteBuf buf) { super.deserialize(buf); this.fluxQuantity = buf.readDouble(); - this.fluxRatio = buf.readDouble(); + this.fluxFastRatio = buf.readDouble(); this.hasRod = buf.readBoolean(); + if(this.hasRod) { + fuelYield = BufferUtil.readString(buf); + fuelXenon = BufferUtil.readString(buf); + fuelHeat = BufferUtil.readString(buf); + } else { + fuelYield = fuelXenon = fuelHeat = null; + } } public void getDiagData(NBTTagCompound nbt) { @@ -264,13 +288,10 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM this.writeToNBT(nbt); diag = false; - if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { - - ItemRBMKRod rod = ((ItemRBMKRod)slots[0].getItem()); - - nbt.setString("f_yield", rod.getYield(slots[0]) + " / " + rod.yield + " (" + (rod.getEnrichment(slots[0]) * 100) + "%)"); - nbt.setString("f_xenon", rod.getPoison(slots[0]) + "%"); - nbt.setString("f_heat", rod.getCoreHeat(slots[0]) + " / " + rod.getHullHeat(slots[0]) + " / " + rod.meltingPoint); + if(fuelYield != null && fuelXenon != null && fuelHeat != null) { + nbt.setString("f_yield", fuelYield); + nbt.setString("f_xenon", fuelXenon); + nbt.setString("f_heat", fuelHeat); } } @@ -339,10 +360,10 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { ItemRBMKRod rod = ((ItemRBMKRod)slots[0].getItem()); - data.setDouble("enrichment", rod.getEnrichment(slots[0])); - data.setDouble("xenon", rod.getPoison(slots[0])); - data.setDouble("c_heat", rod.getHullHeat(slots[0])); - data.setDouble("c_coreHeat", rod.getCoreHeat(slots[0])); + data.setDouble("enrichment", ItemRBMKRod.getEnrichment(slots[0])); + data.setDouble("xenon", ItemRBMKRod.getPoison(slots[0])); + data.setDouble("c_heat", ItemRBMKRod.getHullHeat(slots[0])); + data.setDouble("c_coreHeat", ItemRBMKRod.getCoreHeat(slots[0])); data.setDouble("c_maxHeat", rod.meltingPoint); } @@ -398,7 +419,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFluxRatio(Context context, Arguments args) { - return new Object[] {fluxRatio}; + return new Object[] {fluxFastRatio}; } @Callback(direct = true) @@ -456,14 +477,15 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM returnValues.add(ItemRBMKRod.getEnrichment(slots[0])); returnValues.add(ItemRBMKRod.getPoison(slots[0])); returnValues.add(slots[0].getItem().getUnlocalizedName()); - } else - for (int i = 0; i < 5; i++) - returnValues.add("N/A"); + } else { + for(int i = 0; i < 5; i++) returnValues.add("N/A"); + } return new Object[] { - heat, returnValues.get(0), returnValues.get(1), - fluxQuantity, fluxRatio, returnValues.get(2), returnValues.get(3), returnValues.get(4), - ((RBMKRod)this.getBlockType()).moderated, xCoord, yCoord, zCoord}; + heat, returnValues.get(0), returnValues.get(1), + fluxQuantity, fluxFastRatio, returnValues.get(2), returnValues.get(3), returnValues.get(4), + ((RBMKRod)this.getBlockType()).moderated, xCoord, yCoord, zCoord + }; } @Callback(direct = true) diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRodReaSim.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRodReaSim.java index a23c5f2e3..ef9c466b4 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRodReaSim.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRodReaSim.java @@ -2,6 +2,7 @@ package com.hbm.tileentity.machine.rbmk; import com.hbm.handler.neutron.NeutronNodeWorld; import com.hbm.handler.neutron.RBMKNeutronHandler; +import com.hbm.handler.neutron.NeutronNodeWorld.StreamWorld; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import com.hbm.util.fauxpointtwelve.BlockPos; @@ -28,27 +29,28 @@ public class TileEntityRBMKRodReaSim extends TileEntityRBMKRod { if(pos == null) pos = new BlockPos(this); - if (flux == 0) { + if(flux == 0) { // simple way to remove the node from the cache when no flux is going into it! - NeutronNodeWorld.removeNode(pos); + NeutronNodeWorld.removeNode(worldObj, pos); return; } - RBMKNeutronNode node = (RBMKNeutronNode) NeutronNodeWorld.getNode(pos); + StreamWorld streamWorld = NeutronNodeWorld.getOrAddWorld(worldObj); + RBMKNeutronNode node = (RBMKNeutronNode) streamWorld.getNode(pos); if(node == null) { - node = makeNode(this); - NeutronNodeWorld.addNode(node); + node = makeNode(streamWorld, this); + streamWorld.addNode(node); } int count = RBMKDials.getReaSimCount(worldObj); - for (int i = 0; i < count; i++) { + for(int i = 0; i < count; i++) { Vec3 neutronVector = Vec3.createVectorHelper(1, 0, 0); neutronVector.rotateAroundY((float)(Math.PI * 2D * worldObj.rand.nextDouble())); - new RBMKNeutronHandler.RBMKNeutronStream(makeNode(this), neutronVector, flux, ratio); + new RBMKNeutronHandler.RBMKNeutronStream(makeNode(streamWorld, this), neutronVector, flux, ratio); // Create new neutron streams } } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java index 41681df6e..543e7205f 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java @@ -25,6 +25,7 @@ import io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -34,7 +35,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 TileEntityMachineBattery extends TileEntityMachineBase implements IEnergyConductorMK2, IEnergyProviderMK2, IEnergyReceiverMK2, IPersistentNBT, IGUIProvider, IInfoProviderEC, CompatHandler.OCComponent { +public class TileEntityMachineBattery extends TileEntityMachineBase implements IEnergyConductorMK2, IEnergyProviderMK2, IEnergyReceiverMK2, IPersistentNBT, SimpleComponent, IGUIProvider, IInfoProviderEC, CompatHandler.OCComponent { public long[] log = new long[20]; public long delta = 0; diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchBase.java b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchBase.java index e63a5b6e3..921ddd245 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchBase.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchBase.java @@ -1,17 +1,24 @@ package com.hbm.tileentity.network; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IControlReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.BufferUtil; +import cpw.mods.fml.common.Optional; import io.netty.buffer.ByteBuf; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.NetworkManager; import net.minecraft.network.Packet; import net.minecraft.network.play.server.S35PacketUpdateTileEntity; -public class TileEntityRadioTorchBase extends TileEntityLoadedBase implements IControlReceiver { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityRadioTorchBase extends TileEntityLoadedBase implements IControlReceiver, SimpleComponent, CompatHandler.OCComponent { /** channel we're broadcasting on/listening to */ public String channel = ""; @@ -103,4 +110,31 @@ public class TileEntityRadioTorchBase extends TileEntityLoadedBase implements IC this.markDirty(); } + + @Override + @Optional.Method(modid = "OpenComputers") + public String getComponentName() { + return "radio_torch"; + } + + @Callback(direct = true, limit = 4, doc = "setChannle(channel: string) -- Set the channel the torch is listening/broadcasting to") + @Optional.Method(modid = "OpenComputers") + public Object[] setChannel(Context context, Arguments args) { + channel = args.checkString(0); + return new Object[] {}; + } + + @Callback(direct = true, limit = 4, doc = "setPolling(value: boolean) -- Switches state change mode to tick-based polling") + @Optional.Method(modid = "OpenComputers") + public Object[] setPolling(Context context, Arguments args) { + polling = args.checkBoolean(0); + return new Object[] {}; + } + + @Callback(direct = true, limit = 4, doc = "setCustomMap(value: boolean) -- Switches redstone passthrough to custom signal mapping") + @Optional.Method(modid = "OpenComputers") + public Object[] setCustomMap(Context context, Arguments args) { + customMap = args.checkBoolean(0); + return new Object[] {}; + } } diff --git a/src/main/java/com/hbm/uninos/GenNode.java b/src/main/java/com/hbm/uninos/GenNode.java index 8be4641b3..3e4b0925b 100644 --- a/src/main/java/com/hbm/uninos/GenNode.java +++ b/src/main/java/com/hbm/uninos/GenNode.java @@ -3,24 +3,27 @@ package com.hbm.uninos; import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.util.fauxpointtwelve.DirPos; -public class GenNode { +public class GenNode { public BlockPos[] positions; public DirPos[] connections; - public INodeNet net; + public N net; public boolean expired = false; public boolean recentlyChanged = true; + /** Used for distinguishing the node type when saving it to UNINOS' node map */ + public INetworkProvider networkProvider; - public GenNode(BlockPos... positions) { + public GenNode(INetworkProvider provider, BlockPos... positions) { + this.networkProvider = provider; this.positions = positions; } - public GenNode setConnections(DirPos... connections) { + public GenNode setConnections(DirPos... connections) { this.connections = connections; return this; } - public GenNode addConnection(DirPos connection) { + public GenNode addConnection(DirPos connection) { DirPos[] newCons = new DirPos[this.connections.length + 1]; for(int i = 0; i < this.connections.length; i++) newCons[i] = this.connections[i]; newCons[newCons.length - 1] = connection; @@ -32,7 +35,7 @@ public class GenNode { return this.net != null && this.net.isValid(); } - public void setNet(INodeNet net) { + public void setNet(N net) { this.net = net; this.recentlyChanged = true; } diff --git a/src/main/java/com/hbm/uninos/GenNodeWorld.java b/src/main/java/com/hbm/uninos/GenNodeWorld.java deleted file mode 100644 index 82c2fcb81..000000000 --- a/src/main/java/com/hbm/uninos/GenNodeWorld.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.hbm.uninos; - -import java.util.HashMap; - -import com.hbm.util.fauxpointtwelve.BlockPos; - -public class GenNodeWorld { - - public HashMap> nodes = new HashMap(); - - public void pushNode(GenNode node) { - for(BlockPos pos : node.positions) { - nodes.put(pos, node); - } - } - - public void popNode(GenNode node) { - if(node.net != null) node.net.destroy(); - for(BlockPos pos : node.positions) { - nodes.remove(pos); - node.expired = true; - } - } - - public void popNode(BlockPos pos) { - GenNode node = nodes.get(pos); - if(node != null) popNode(node); - } -} diff --git a/src/main/java/com/hbm/uninos/GenNodespace.java b/src/main/java/com/hbm/uninos/GenNodespace.java deleted file mode 100644 index 8785df0b1..000000000 --- a/src/main/java/com/hbm/uninos/GenNodespace.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.hbm.uninos; - -import java.util.HashMap; - -import com.hbm.util.fauxpointtwelve.BlockPos; - -import net.minecraft.world.World; - -public class GenNodespace { - - public HashMap> worlds = new HashMap<>(); - - public GenNode getNode(World world, int x, int y, int z) { - GenNodeWorld nodeWorld = worlds.get(world); - if(nodeWorld != null) return (GenNode) nodeWorld.nodes.get(new BlockPos(x, y, z)); - return null; - } - - public void createNode(World world, GenNode node) { - GenNodeWorld nodeWorld = worlds.get(world); - if(nodeWorld == null) { - nodeWorld = new GenNodeWorld(); - worlds.put(world, nodeWorld); - } - nodeWorld.pushNode(node); - } - - public void destroyNode(World world, int x, int y, int z) { - GenNode node = getNode(world, x, y, z); - if(node != null) { - worlds.get(world).popNode(node); - } - } -} diff --git a/src/main/java/com/hbm/uninos/IGenProvider.java b/src/main/java/com/hbm/uninos/IGenProvider.java new file mode 100644 index 000000000..efc43f763 --- /dev/null +++ b/src/main/java/com/hbm/uninos/IGenProvider.java @@ -0,0 +1,5 @@ +package com.hbm.uninos; + +public interface IGenProvider { + +} diff --git a/src/main/java/com/hbm/uninos/IGenReceiver.java b/src/main/java/com/hbm/uninos/IGenReceiver.java new file mode 100644 index 000000000..3f6ef53ca --- /dev/null +++ b/src/main/java/com/hbm/uninos/IGenReceiver.java @@ -0,0 +1,10 @@ +package com.hbm.uninos; + +import api.hbm.energymk2.IEnergyReceiverMK2.ConnectionPriority; + +public interface IGenReceiver { + + public default ConnectionPriority getPriority() { + return ConnectionPriority.NORMAL; + } +} diff --git a/src/main/java/com/hbm/uninos/INetworkProvider.java b/src/main/java/com/hbm/uninos/INetworkProvider.java index c3b7893be..a774028ab 100644 --- a/src/main/java/com/hbm/uninos/INetworkProvider.java +++ b/src/main/java/com/hbm/uninos/INetworkProvider.java @@ -1,5 +1,10 @@ package com.hbm.uninos; -public interface INetworkProvider { +/** + * Each instance of a network provider is a valid "type" of node in UNINOS + * @author hbm + */ +public interface INetworkProvider { + public T provideNetwork(); } diff --git a/src/main/java/com/hbm/uninos/INodeNet.java b/src/main/java/com/hbm/uninos/INodeNet.java deleted file mode 100644 index 79efab063..000000000 --- a/src/main/java/com/hbm/uninos/INodeNet.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.hbm.uninos; - -public interface INodeNet { - - public boolean isValid(); - public void destroy(); -} diff --git a/src/main/java/com/hbm/uninos/NodeNet.java b/src/main/java/com/hbm/uninos/NodeNet.java new file mode 100644 index 000000000..52fd122f1 --- /dev/null +++ b/src/main/java/com/hbm/uninos/NodeNet.java @@ -0,0 +1,82 @@ +package com.hbm.uninos; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Random; +import java.util.Set; + +public abstract class NodeNet { + + /** Global random for figuring things out like random leftover distribution */ + public static Random rand = new Random(); + + public boolean valid = true; + public Set links = new HashSet(); + + public HashMap receiverEntries = new HashMap(); + public HashMap providerEntries = new HashMap(); + + public NodeNet() { + UniNodespace.activeNodeNets.add(this); + } + + /// SUBSCRIBER HANDLING /// + public boolean isSubscribed(R receiver) { return this.receiverEntries.containsKey(receiver); } + public void addReceiver(R receiver) { this.receiverEntries.put(receiver, System.currentTimeMillis()); } + public void removeReceiver(R receiver) { this.receiverEntries.remove(receiver); } + + /// PROVIDER HANDLING /// + public boolean isProvider(P provider) { return this.providerEntries.containsKey(provider); } + public void addProvider(P provider) { this.providerEntries.put(provider, System.currentTimeMillis()); } + public void removeProvider(P provider) { this.providerEntries.remove(provider); } + + /** Combines two networks into one */ + public void joinNetworks(NodeNet network) { + if(network == this) return; + + List oldNodes = new ArrayList(network.links.size()); + oldNodes.addAll(network.links); + + for(L conductor : oldNodes) forceJoinLink(conductor); + network.links.clear(); + + for(Object /*this is bullshit*/ connector : network.receiverEntries.keySet()) this.addReceiver((R) connector); + for(Object /*this is bullshit*/ connector : network.providerEntries.keySet()) this.addProvider((P) connector); + network.destroy(); + } + + /** Adds the node as part of this network's links */ + public NodeNet joinLink(L node) { + if(node.net != null) node.net.leaveLink(node); + return forceJoinLink(node); + } + + /** Adds the node as part of this network's links, skips the part about removing it from existing networks */ + public NodeNet forceJoinLink(L node) { + this.links.add(node); + node.setNet(this); + return this; + } + + /** Removes the specified node */ + public void leaveLink(L node) { + node.setNet(null); + this.links.remove(node); + } + + /// GENERAL POWER NET CONTROL /// + public void invalidate() { this.valid = false; UniNodespace.activeNodeNets.remove(this); } + public boolean isValid() { return this.valid; } + public void resetTrackers() { } + public abstract void update(); + + public void destroy() { + this.invalidate(); + for(GenNode link : this.links) if(link.net == this) link.setNet(null); + this.links.clear(); + this.receiverEntries.clear(); + this.providerEntries.clear(); + } +} diff --git a/src/main/java/com/hbm/uninos/UniNodespace.java b/src/main/java/com/hbm/uninos/UniNodespace.java index e56468b3c..ce4867386 100644 --- a/src/main/java/com/hbm/uninos/UniNodespace.java +++ b/src/main/java/com/hbm/uninos/UniNodespace.java @@ -1,8 +1,130 @@ package com.hbm.uninos; import java.util.HashMap; +import java.util.HashSet; +import java.util.Set; +import java.util.Map.Entry; + +import com.hbm.util.Tuple.Pair; +import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.util.fauxpointtwelve.DirPos; + +import net.minecraft.server.MinecraftServer; +import net.minecraft.world.World; public class UniNodespace { + + public static HashMap worlds = new HashMap(); + public static Set activeNodeNets = new HashSet<>(); + + public static GenNode getNode(World world, int x, int y, int z, INetworkProvider type) { + UniNodeWorld nodeWorld = worlds.get(world); + if(nodeWorld != null) return nodeWorld.nodes.get(new Pair(new BlockPos(x, y, z), type)); + return null; + } + + public static void createNode(World world, GenNode node) { + UniNodeWorld nodeWorld = worlds.get(world); + if(nodeWorld == null) { + nodeWorld = new UniNodeWorld(); + worlds.put(world, nodeWorld); + } + nodeWorld.pushNode(node); + } + + public static void destroyNode(World world, int x, int y, int z, INetworkProvider type) { + GenNode node = getNode(world, x, y, z, type); + if(node != null) { + worlds.get(world).popNode(node); + } + } + + public static void updateNodespace() { + + for(World world : MinecraftServer.getServer().worldServers) { + UniNodeWorld nodeWorld = worlds.get(world); - public static HashMap nodespaces = new HashMap(); + if(nodeWorld == null) continue; + + for(Entry, GenNode> entry : nodeWorld.nodes.entrySet()) { + GenNode node = entry.getValue(); + INetworkProvider provider = entry.getKey().getValue(); + if(!node.hasValidNet() || node.recentlyChanged) { + checkNodeConnection(world, node, provider); + node.recentlyChanged = false; + } + } + } + + updateNetworks(); + } + + private static void updateNetworks() { + + for(NodeNet net : activeNodeNets) net.resetTrackers(); //reset has to be done before everything else + for(NodeNet net : activeNodeNets) net.update(); + } + + /** Goes over each connection point of the given node, tries to find neighbor nodes and to join networks with them */ + private static void checkNodeConnection(World world, GenNode node, INetworkProvider provider) { + + for(DirPos con : node.connections) { + GenNode conNode = getNode(world, con.getX(), con.getY(), con.getZ(), provider); // get whatever neighbor node intersects with that connection + if(conNode != null) { // if there is a node at that place + if(conNode.hasValidNet() && conNode.net == node.net) continue; // if the net is valid and both nodes have the same net, skip + if(checkConnection(conNode, con, false)) { + connectToNode(node, conNode); + } + } + } + + if(node.net == null || !node.net.isValid()) provider.provideNetwork().joinLink(node); + } + + /** Checks if the node can be connected to given the DirPos, skipSideCheck will ignore the DirPos' direction value */ + public static boolean checkConnection(GenNode connectsTo, DirPos connectFrom, boolean skipSideCheck) { + for(DirPos revCon : connectsTo.connections) { + if(revCon.getX() - revCon.getDir().offsetX == connectFrom.getX() && revCon.getY() - revCon.getDir().offsetY == connectFrom.getY() && revCon.getZ() - revCon.getDir().offsetZ == connectFrom.getZ() && (revCon.getDir() == connectFrom.getDir().getOpposite() || skipSideCheck)) { + return true; + } + } + return false; + } + + /** Links two nodes with different or potentially no networks */ + private static void connectToNode(GenNode origin, GenNode connection) { + + if(origin.hasValidNet() && connection.hasValidNet()) { // both nodes have nets, but the nets are different (previous assumption), join networks + if(origin.net.links.size() > connection.net.links.size()) { + origin.net.joinNetworks(connection.net); + } else { + connection.net.joinNetworks(origin.net); + } + } else if(!origin.hasValidNet() && connection.hasValidNet()) { // origin has no net, connection does, have origin join connection's net + connection.net.joinLink(origin); + } else if(origin.hasValidNet() && !connection.hasValidNet()) { // ...and vice versa + origin.net.joinLink(connection); + } + } + + public static class UniNodeWorld { + + public HashMap, GenNode> nodes = new HashMap(); + + /** Adds a node at all its positions to the nodespace */ + public void pushNode(GenNode node) { + for(BlockPos pos : node.positions) { + nodes.put(new Pair(pos, node.networkProvider), node); + } + } + + /** Removes the specified node from all positions from nodespace */ + public void popNode(GenNode node) { + if(node.net != null) node.net.destroy(); + for(BlockPos pos : node.positions) { + nodes.remove(new Pair(pos, node.networkProvider)); + } + node.expired = true; + } + } } diff --git a/src/main/java/com/hbm/uninos/networkproviders/FluidNetProvider.java b/src/main/java/com/hbm/uninos/networkproviders/FluidNetProvider.java new file mode 100644 index 000000000..95fa480a8 --- /dev/null +++ b/src/main/java/com/hbm/uninos/networkproviders/FluidNetProvider.java @@ -0,0 +1,13 @@ +package com.hbm.uninos.networkproviders; + +import com.hbm.uninos.INetworkProvider; + +import api.hbm.fluidmk2.FluidNetMK2; + +public class FluidNetProvider implements INetworkProvider { + + @Override + public FluidNetMK2 provideNetwork() { + return new FluidNetMK2(); + } +} diff --git a/src/main/java/com/hbm/uninos/networkproviders/PowerNetProvider.java b/src/main/java/com/hbm/uninos/networkproviders/PowerNetProvider.java new file mode 100644 index 000000000..da4502e24 --- /dev/null +++ b/src/main/java/com/hbm/uninos/networkproviders/PowerNetProvider.java @@ -0,0 +1,13 @@ +package com.hbm.uninos.networkproviders; + +import com.hbm.uninos.INetworkProvider; + +import api.hbm.energymk2.PowerNetMK2; + +public class PowerNetProvider implements INetworkProvider { + + @Override + public PowerNetMK2 provideNetwork() { + return new PowerNetMK2(); + } +} diff --git a/src/main/java/com/hbm/util/CompatExternal.java b/src/main/java/com/hbm/util/CompatExternal.java index 2a7f1177c..4105a1482 100644 --- a/src/main/java/com/hbm/util/CompatExternal.java +++ b/src/main/java/com/hbm/util/CompatExternal.java @@ -10,11 +10,14 @@ import java.util.function.Consumer; import api.hbm.energymk2.IEnergyHandlerMK2; import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidUser; +import api.hbm.recipe.IRecipeRegisterListener; + import com.hbm.blocks.BlockDummyable; import com.hbm.entity.missile.EntityMissileCustom; import com.hbm.explosion.ExplosionNukeSmall; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.weapon.ItemCustomMissilePart.WarheadType; import com.hbm.tileentity.machine.TileEntityDummy; import com.hbm.tileentity.turret.TileEntityTurretSentry; @@ -186,6 +189,15 @@ public class CompatExternal { public static void setWarheadLabel(WarheadType type, String label) { type.labelCustom = label; } public static void setWarheadImpact(WarheadType type, Consumer impact) { type.impactCustom = impact; } public static void setWarheadUpdate(WarheadType type, Consumer update) { type.updateCustom = update; } + + /** + * Registers an IRecipeRegisterListener to the recipe system. The listener is called every time a SerializableRecipe instance has its recipes loaded, before the + * config files are written, but after the defaults are initialized. + * @param listener + */ + public static void registerRecipeRegisterListener(IRecipeRegisterListener listener) { + SerializableRecipe.additionalListeners.add(listener); + } public static void compatExamples() { // Makes all cows be targeted by turrets if player mode is active in addition to the existing rules. Applies to all entities that inherit EntityCow. diff --git a/src/main/java/com/hbm/util/CompatRecipeRegistry.java b/src/main/java/com/hbm/util/CompatRecipeRegistry.java new file mode 100644 index 000000000..b4f27c3e4 --- /dev/null +++ b/src/main/java/com/hbm/util/CompatRecipeRegistry.java @@ -0,0 +1,264 @@ +package com.hbm.util; + +import java.util.Arrays; + +import com.hbm.interfaces.Untested; +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.RecipesCommon.*; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.material.Mats.MaterialStack; +import com.hbm.inventory.recipes.*; +import com.hbm.inventory.recipes.AmmoPressRecipes.AmmoPressRecipe; +import com.hbm.inventory.recipes.ArcFurnaceRecipes.ArcFurnaceRecipe; +import com.hbm.inventory.recipes.ArcWelderRecipes.ArcWelderRecipe; +import com.hbm.inventory.recipes.BreederRecipes.BreederRecipe; +import com.hbm.inventory.recipes.CrucibleRecipes.CrucibleRecipe; +import com.hbm.inventory.recipes.CrystallizerRecipes.CrystallizerRecipe; +import com.hbm.inventory.recipes.ElectrolyserFluidRecipes.ElectrolysisRecipe; +import com.hbm.inventory.recipes.ElectrolyserMetalRecipes.ElectrolysisMetalRecipe; +import com.hbm.inventory.recipes.ExposureChamberRecipes.ExposureChamberRecipe; +import com.hbm.inventory.recipes.ParticleAcceleratorRecipes.ParticleAcceleratorRecipe; +import com.hbm.inventory.recipes.PedestalRecipes.PedestalExtraCondition; +import com.hbm.inventory.recipes.PedestalRecipes.PedestalRecipe; +import com.hbm.inventory.recipes.PyroOvenRecipes.PyroOvenRecipe; +import com.hbm.inventory.recipes.RotaryFurnaceRecipes.RotaryFurnaceRecipe; +import com.hbm.inventory.recipes.ChemplantRecipes.ChemRecipe; +import com.hbm.inventory.recipes.CompressorRecipes.CompressorRecipe; +import com.hbm.inventory.recipes.SolderingRecipes.SolderingRecipe; +import com.hbm.inventory.recipes.anvil.AnvilRecipes; +import com.hbm.inventory.recipes.anvil.AnvilRecipes.AnvilConstructionRecipe; +import com.hbm.inventory.recipes.anvil.AnvilRecipes.AnvilOutput; +import com.hbm.inventory.recipes.anvil.AnvilRecipes.OverlayType; +import com.hbm.items.machine.ItemStamp.StampType; +import com.hbm.util.Tuple.Pair; +import com.hbm.util.Tuple.Triplet; + +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +/** + * Public methods for registering recipes. Method signature should never change, only the body to reflect any changes to recipes/machines themselves. + * Recipe creation is either 1:1 with the original SerializableRecipe or even simpler (in the case of the compressor, two FluidStacks instead of a ton of loose numbers). + * Call these with a registered IRecipeRegisterListener, otherwise the recipe loading/reloading will break the custom recipes. + * @author hbm + */ +@Untested +public class CompatRecipeRegistry { + + public static void registerPress(StampType stamp, AStack input, ItemStack output) { + PressRecipes.recipes.put(new Pair(input, stamp), output); + } + + /** Same loose rules as BlastFurnaceRecipes, valid inputs are Items, Blocks, ItemStacks, ComparableStacks, Strings (for oredict) and DictFrames */ + public static void registerBlastFurnace(Object[] inputs, ItemStack output) { + if(inputs.length != 2) return; + BlastFurnaceRecipes.addRecipe(inputs[0], inputs[1], output); + } + + public static void registerShredder(AStack input, ItemStack output) { + for(ItemStack allItems : input.extractForNEI()) { + ComparableStack comp = new ComparableStack(allItems); + ShredderRecipes.shredderRecipes.put(comp, output); + } + } + + /** Items should strictly be categorized as pcb, topping or solder. An item that is used as a topping in one recipe should not be a pcb in another. + * This is because the soldering station's item IO will automatically place items based on this category, and having items in more than one category would break it. */ + public static void registerSoldering(ItemStack output, int time, long power, FluidStack fluid, AStack[] toppings, AStack[] pcb, AStack[] solder) { + SolderingRecipes.recipes.add(new SolderingRecipe(output, time, power, fluid, copyFirst(toppings, 3), copyFirst(pcb, 2), copyFirst(solder, 1))); + } + + /** Chemplant recipes need unique IDs, game will crash when an ID collision is detected! */ + public static void registerChemplant(int id, String name, int duration, AStack[] inputItems, FluidStack[] inputFluids, ItemStack[] outputItems, FluidStack[] outputFluids) { + ChemRecipe recipe = new ChemRecipe(id, name, duration); + if(inputItems != null) recipe.inputItems(copyFirst(inputItems, 4)); + if(inputFluids != null) recipe.inputFluids(copyFirst(inputFluids, 2)); + if(outputItems != null) recipe.outputItems(copyFirst(outputItems, 4)); + if(outputFluids != null) recipe.outputFluids(copyFirst(outputFluids, 2)); + ChemplantRecipes.recipes.add(recipe); + } + + /** Either solid or liquid output can be null */ + public static void registerCombination(AStack input, ItemStack output, FluidStack fluid) { + if(output == null && fluid == null) return; + Object o = input instanceof OreDictStack ? ((OreDictStack) input).name : input; + CombinationRecipes.recipes.put(o, new Pair(output, fluid)); + } + + /** Crucible recipes need unique IDs, game will crash when an ID collision is detected! */ + public static void registerCrucible(int index, String name, int frequency, ItemStack icon, MaterialStack[] input, MaterialStack[] output) { + CrucibleRecipe recipe = new CrucibleRecipe(index, name, frequency, icon).inputs(input).outputs(output); + CrucibleRecipes.recipes.add(recipe); + } + + public static void registerCentrifuge(AStack input, ItemStack[] outputs) { + CentrifugeRecipes.recipes.put(input, copyFirst(outputs, 4)); + } + + public static void registerCrystallizer(AStack input, ItemStack output, int time, float productivity, FluidStack fluid) { + CrystallizerRecipe recipe = new CrystallizerRecipe(output, time).prod(productivity); + CrystallizerRecipes.registerRecipe(input instanceof OreDictStack ? ((OreDictStack) input).name : input, recipe, fluid); + } + + /** Fractions always use 100mB of input fluid per operation. None of the outputs can be null. */ + public static void registerFraction(FluidType input, FluidStack[] output) { + if(output.length != 2) return; + FractionRecipes.fractions.put(input, new Pair(output[0], output[1])); + } + + /** Cracking always uses 100mB of input fluid and 200mB of steam per operation. None of the outputs can be null. */ + public static void registerCracking(FluidType input, FluidStack[] output) { + if(output.length != 2) return; + CrackingRecipes.cracking.put(input, new Pair(output[0], output[1])); + } + + /** Reforming always uses 100mB of input fluid per operation. None of the outputs can be null. */ + public static void registerReforming(FluidType input, FluidStack[] output) { + output = copyFirst(output, 3); + if(output.length < 3) return; + ReformingRecipes.recipes.put(input, new Triplet(output[0], output[1], output[2])); + } + + /** Hydrotreating always uses 100mB of input fluid per operation. None of the outputs can be null. */ + public static void registerHydrotreating(FluidType input, FluidStack hydrogen, FluidStack[] output) { + output = copyFirst(output, 2); + if(output.length < 2) return; + HydrotreatingRecipes.recipes.put(input, new Triplet(hydrogen, output[0], output[1])); + } + + public static void registerLiquefaction(AStack input, FluidStack output) { + LiquefactionRecipes.recipes.put(input instanceof OreDictStack ? ((OreDictStack) input).name : input, output); + } + + public static void registerSolidifying(FluidStack input, ItemStack output) { + SolidificationRecipes.recipes.put(input.type, new Pair(input.fill, output)); + } + + public static void registerCoker(FluidStack input, ItemStack output, FluidStack fluid) { + CokerRecipes.recipes.put(input.type, new Triplet(input.fill, output, fluid)); + } + + /** Registers a coker recipe based on the standardized fluid to coke values */ + public static void registerCokerAuto(FluidType input, FluidType output) { + CokerRecipes.registerAuto(input, output); + } + + public static void registerPyro(FluidStack inputFluid, AStack inputItem, FluidStack outputFluid, ItemStack outputItem, int duration) { + PyroOvenRecipes.recipes.add(new PyroOvenRecipe(duration).in(inputFluid).in(inputItem).out(outputFluid).out(outputItem)); + } + + /** Registers a pyro oven recipe based on the standardized fluid to solid fuel values */ + public static void registerPyroAuto(FluidType input) { + PyroOvenRecipes.registerSFAuto(input); + } + + /** Breeding reactor does not handle OreDictStacks */ + public static void registerBreeder(ComparableStack input, ItemStack output, int flux) { + BreederRecipes.recipes.put(input, new BreederRecipe(output, flux)); + } + + public static void registerCyclotron(ComparableStack box, AStack target, ItemStack output, int antimatter) { + CyclotronRecipes.recipes.put(new Pair(box, target), new Pair(output, antimatter)); + } + + /** Fuel pools do not handle OreDictStacks */ + public static void registerFuelPool(ComparableStack input, ItemStack output) { + FuelPoolRecipes.recipes.put(input, output); + } + + //TBI mixer + + public static void registerOutgasser(AStack input, ItemStack output, FluidStack fluid) { + OutgasserRecipes.recipes.put(input, new Pair(output, fluid)); + } + + public static void registerCompressor(FluidStack input, FluidStack output, int time) { + CompressorRecipes.recipes.put(new Pair(input.type, input.pressure), new CompressorRecipe(input.fill, output, time)); + } + + /** Byproduct array can be null, fluid output length must be 2 */ + public static void registerElectrolyzerFluid(FluidStack input, FluidStack[] output, ItemStack[] byproduct, int time) { + output = copyFirst(output, 2); + if(output.length < 2) return; + if(byproduct != null) byproduct = copyFirst(byproduct, 3); + + ElectrolyserFluidRecipes.recipes.put(input.type, new ElectrolysisRecipe(input.fill, output[0], output[1], time, byproduct)); + } + + /** Output array length must be 2, outputs can be null. Byproduct array can be null. */ + public static void registerElectrolyzerMetal(AStack input, MaterialStack[] output, ItemStack[] byproduct, int time) { + output = copyFirst(output, 2); + if(byproduct != null) byproduct = copyFirst(byproduct, 6); + + ElectrolyserMetalRecipes.recipes.put(input, new ElectrolysisMetalRecipe(output[0], output[1], time, byproduct)); + } + + public static void registerArcWelder(ItemStack output, int time, long power, FluidStack fluid, AStack[] inputs) { + ArcWelderRecipes.recipes.add(new ArcWelderRecipe(output, time, power, fluid, copyFirst(inputs, 3))); + } + + public static void registerRotaryFurnace(MaterialStack output, int time, int steam, FluidStack fluid, AStack[] inputs) { + RotaryFurnaceRecipes.recipes.add(new RotaryFurnaceRecipe(output, time, steam, fluid, copyFirst(inputs, 3))); + } + + /** Particles will always perform 8 recipes */ + public static void registerExposureChamber(AStack particle, AStack input, ItemStack output) { + ExposureChamberRecipes.recipes.add(new ExposureChamberRecipe(particle, input, output)); + } + + /** Input needs two AStacks, output can take 1-2 ItemStacks. If the same recipe with different + * momentum should yield different results, register the lower momentum recipes first. */ + public static void registerParticleAccelerator(AStack[] input, int momentum, ItemStack[] output) { + input = copyFirst(input, 2); + if(input.length < 2) return; + output = copyFirst(output, 2); + if(output.length < 1) return; + ParticleAcceleratorRecipes.recipes.add(new ParticleAcceleratorRecipe(input[0], input[1], momentum, output[0], output.length > 1 ? output[1] : null)); + } + + public static void registerAmmoPress(ItemStack output, AStack[] input) { + if(input.length != 9) return; + AmmoPressRecipes.recipes.add(new AmmoPressRecipe(output, input)); + } + + public static void registerAssembler(ItemStack output, AStack[] input, int time) { + AssemblerRecipes.makeRecipe(new ComparableStack(output), copyFirst(input, 12), time); + } + + /** Registers an assembler recipe but with the template only being obtainable via the specified folders */ + public static void registerAssembler(ItemStack output, AStack[] input, int time, Item... folder) { + AssemblerRecipes.makeRecipe(new ComparableStack(output), copyFirst(input, 12), time, folder); + } + + public static void registerAnvilConstruction(AStack[] input, AnvilOutput[] output, int tier, int overlayIndex) { + AnvilRecipes.constructionRecipes.add(new AnvilConstructionRecipe(input, output).setTier(tier).setOverlay(EnumUtil.grabEnumSafely(OverlayType.class, overlayIndex))); + } + + public static void registerAnvilConstruction(AStack[] input, AnvilOutput[] output, int tierLower, int tierUpper, int overlayIndex) { + AnvilRecipes.constructionRecipes.add(new AnvilConstructionRecipe(input, output).setTierRange(tierLower, tierUpper).setOverlay(EnumUtil.grabEnumSafely(OverlayType.class, overlayIndex))); + } + + public static void registerPedestal(ItemStack output, AStack[] input) { + registerPedestal(output, input, 0); + } + + public static void registerPedestal(ItemStack output, AStack[] input, int condition) { + input = copyFirst(input, 9); + if(input.length < 9) return; + PedestalRecipes.recipes.add(new PedestalRecipe(output, input).extra(EnumUtil.grabEnumSafely(PedestalExtraCondition.class, condition))); + } + + /** Either output or fluid can be null */ + public static void registerArcFurnace(AStack input, ItemStack output, MaterialStack fluid) { + if(output == null && fluid == null) return; + ArcFurnaceRecipes.recipeList.add(new Pair(input, new ArcFurnaceRecipe().solid(output).fluid(fluid))); + } + + ///////////////////////////////////////////////////////////////////////////////////////// + + /** If the supplied array exceeds the specified length, creates a copy and trunkates the array. Otherwise, returns the original array */ + private static T[] copyFirst(T[] array, int amount) { + if(array.length <= amount) return array; + return Arrays.copyOf(array, amount); + } +} diff --git a/src/main/java/com/hbm/util/EntityDamageUtil.java b/src/main/java/com/hbm/util/EntityDamageUtil.java index 03c2363d2..6ba1791ce 100644 --- a/src/main/java/com/hbm/util/EntityDamageUtil.java +++ b/src/main/java/com/hbm/util/EntityDamageUtil.java @@ -3,6 +3,8 @@ package com.hbm.util; import java.lang.reflect.Method; import java.util.List; +import com.hbm.config.ServerConfig; + import cpw.mods.fml.relauncher.ReflectionHelper; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.Entity; @@ -21,7 +23,8 @@ import net.minecraftforge.common.ForgeHooks; public class EntityDamageUtil { - public static boolean attackEntityFromIgnoreIFrame(Entity victim, DamageSource src, float damage) { + /** Shitty hack, if the first attack fails, it retries with damage + previous damage, allowing damage to penetrate */ + @Deprecated public static boolean attackEntityFromIgnoreIFrame(Entity victim, DamageSource src, float damage) { if(!victim.attackEntityFrom(src, damage)) { @@ -38,6 +41,7 @@ public class EntityDamageUtil { } } + /** New and improved entity damage calc - only use this one */ public static boolean attackEntityFromNT(EntityLivingBase living, DamageSource source, float amount, boolean ignoreIFrame, boolean allowSpecialCancel, double knockbackMultiplier, float pierceDT, float pierce) { if(living instanceof EntityPlayerMP && source.getEntity() instanceof EntityPlayer) { EntityPlayerMP playerMP = (EntityPlayerMP) living; @@ -45,14 +49,55 @@ public class EntityDamageUtil { if(!playerMP.canAttackPlayer(attacker)) return false; //handles wack-ass no PVP rule as well as scoreboard friendly fire } DamageResistanceHandler.setup(pierceDT, pierce); - living.attackEntityFrom(source, 0F); boolean ret = attackEntityFromNTInternal(living, source, amount, ignoreIFrame, allowSpecialCancel, knockbackMultiplier); - //boolean ret = living.attackEntityFrom(source, amount); DamageResistanceHandler.reset(); return ret; } - + private static boolean attackEntityFromNTInternal(EntityLivingBase living, DamageSource source, float amount, boolean ignoreIFrame, boolean allowSpecialCancel, double knockbackMultiplier) { + boolean superCompatibility = ServerConfig.DAMAGE_COMPATIBILITY_MODE.get(); + return superCompatibility + ? attackEntitySuperCompatibility(living, source, amount, ignoreIFrame, allowSpecialCancel, knockbackMultiplier) + : attackEntitySEDNAPatch(living, source, amount, ignoreIFrame, allowSpecialCancel, knockbackMultiplier); + } + + /** + * MK2 SEDNA damage system, currently untested. An even hackier, yet more compatible solution using the vanilla damage calc directly but tweaking certain apsects. + * Limitation: Does not apply DR piercing to vanilla armor + */ + private static boolean attackEntitySuperCompatibility(EntityLivingBase living, DamageSource source, float amount, boolean ignoreIFrame, boolean allowSpecialCancel, double knockbackMultiplier) { + //disable iframes + if(ignoreIFrame) { living.lastDamage = 0F; living.hurtResistantTime = 0; } + //cache last velocity + double motionX = living.motionX; + double motionY = living.motionX; + double motionZ = living.motionX; + //bam! + boolean ret = living.attackEntityFrom(source, amount); + //restore last velocity + living.motionX = motionX; + living.motionY = motionY; + living.motionZ = motionZ; + //apply own knockback + Entity entity = source.getEntity(); + if(entity != null) { + double deltaX = entity.posX - living.posX; + double deltaZ; + + for(deltaZ = entity.posZ - living.posZ; deltaX * deltaX + deltaZ * deltaZ < 1.0E-4D; deltaZ = (Math.random() - Math.random()) * 0.01D) { + deltaX = (Math.random() - Math.random()) * 0.01D; + } + + living.attackedAtYaw = (float) (Math.atan2(deltaZ, deltaX) * 180.0D / Math.PI) - living.rotationYaw; + if(knockbackMultiplier > 0) knockBack(living, entity, amount, deltaX, deltaZ, knockbackMultiplier); + } + return ret; + } + + /** MK1 SEDNA damage system, basically re-implements the vanilla code (only from Entity, child class code is effectively ignored) with some adjustments */ + private static boolean attackEntitySEDNAPatch(EntityLivingBase living, DamageSource source, float amount, boolean ignoreIFrame, boolean allowSpecialCancel, double knockbackMultiplier) { + living.attackEntityFrom(source, 0F); + if(ignoreIFrame) living.lastDamage = 0F; if(ForgeHooks.onLivingAttack(living, source, amount) && allowSpecialCancel) return false; if(living.isEntityInvulnerable()) return false; if(living.worldObj.isRemote) return false; @@ -183,9 +228,7 @@ public class EntityDamageUtil { return amount; } - public static void damageArmorNT(EntityLivingBase living, float amount) { - - } + public static void damageArmorNT(EntityLivingBase living, float amount) { } /** Currently just a copy of the vanilla damage code */ @Deprecated public static boolean attackEntityFromNT(EntityLivingBase living, DamageSource source, float amount) { diff --git a/src/main/java/com/hbm/util/LootGenerator.java b/src/main/java/com/hbm/util/LootGenerator.java index b55cc92c8..b14306b9e 100644 --- a/src/main/java/com/hbm/util/LootGenerator.java +++ b/src/main/java/com/hbm/util/LootGenerator.java @@ -2,6 +2,7 @@ package com.hbm.util; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; +import com.hbm.crafting.handlers.MKUCraftingHandler; import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.itempool.ItemPool; import com.hbm.itempool.ItemPoolsPile; @@ -10,6 +11,7 @@ import com.hbm.items.special.ItemBookLore; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; import net.minecraft.init.Items; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.world.World; @@ -17,6 +19,45 @@ import java.util.Random; public class LootGenerator { + public static final String LOOT_BOOKLET = "LOOT_BOOKLET"; + public static final String LOOT_CAPNUKE = "LOOT_CAPNUKE"; + public static final String LOOT_MEDICINE = "LOOT_MEDICINE"; + public static final String LOOT_CAPSTASH = "LOOT_CAPSTASH"; + public static final String LOOT_MAKESHIFT_GUN = "LOOT_MAKESHIFT_GUN"; + public static final String LOOT_NUKE_STORAGE = "LOOT_NUKE_STORAGE"; + public static final String LOOT_BONES = "LOOT_BONES"; + public static final String LOOT_GLYPHID_HIVE = "LOOT_GLYPHID_HIVE"; + public static final String LOOT_METEOR = "LOOT_METEOR"; + + public static void applyLoot(World world, int x, int y, int z, String name) { + switch(name) { + case LOOT_BOOKLET: lootBooklet(world, x, y, z); + case LOOT_CAPNUKE: lootCapNuke(world, x, y, z); + case LOOT_MEDICINE: lootMedicine(world, x, y, z); + case LOOT_CAPSTASH: lootCapStash(world, x, y, z); + case LOOT_MAKESHIFT_GUN: lootMakeshiftGun(world, x, y, z); + case LOOT_NUKE_STORAGE: lootNukeStorage(world, x, y, z); + case LOOT_BONES: lootBones(world, x, y, z); + case LOOT_GLYPHID_HIVE: lootGlyphidHive(world, x, y, z); + case LOOT_METEOR: lootBookMeteor(world, x, y, z); + default: lootBones(world, x, y, z); break; + } + } + + public static String[] getLootNames() { + return new String[] { + LOOT_BOOKLET, + LOOT_CAPNUKE, + LOOT_MEDICINE, + LOOT_CAPSTASH, + LOOT_MAKESHIFT_GUN, + LOOT_NUKE_STORAGE, + LOOT_BONES, + LOOT_GLYPHID_HIVE, + LOOT_METEOR, + }; + } + public static void setBlock(World world, int x, int y, int z) { world.setBlock(x, y, z, ModBlocks.deco_loot); } @@ -142,6 +183,19 @@ public class LootGenerator { } } + public static void lootBookMeteor(World world, int x, int y, int z) { + + TileEntityLoot loot = (TileEntityLoot) world.getTileEntity(x, y, z); + + if(loot != null && loot.items.isEmpty()) { + Item mkuItem = MKUCraftingHandler.getMKUItem(world); + ItemStack mkuBook = MKUCraftingHandler.generateBook(world, mkuItem); + + addItemWithDeviation(loot, world.rand, new ItemStack(mkuItem), 0, 0, 0.25); + addItemWithDeviation(loot, world.rand, mkuBook, 0, 0, -0.25); + } + } + public static void lootBookLore(World world, int x, int y, int z, ItemStack book) { TileEntityLoot loot = (TileEntityLoot) world.getTileEntity(x, y, z); @@ -157,4 +211,4 @@ public class LootGenerator { } } -} +} \ No newline at end of file diff --git a/src/main/java/com/hbm/util/Tuple.java b/src/main/java/com/hbm/util/Tuple.java index cd69db973..f2276386e 100644 --- a/src/main/java/com/hbm/util/Tuple.java +++ b/src/main/java/com/hbm/util/Tuple.java @@ -30,7 +30,7 @@ public class Tuple { @Override public int hashCode() { - final int prime = 31; + final int prime = 27644437; int result = 1; result = prime * result + ((key == null) ? 0 : key.hashCode()); result = prime * result + ((value == null) ? 0 : value.hashCode()); @@ -86,7 +86,7 @@ public class Tuple { @Override public int hashCode() { - final int prime = 31; + final int prime = 27644437; int result = 1; result = prime * result + ((x == null) ? 0 : x.hashCode()); result = prime * result + ((y == null) ? 0 : y.hashCode()); @@ -126,7 +126,7 @@ public class Tuple { @Override public int hashCode() { - final int prime = 31; + final int prime = 27644437; int result = 1; result = prime * result + ((w == null) ? 0 : w.hashCode()); result = prime * result + ((x == null) ? 0 : x.hashCode()); @@ -200,7 +200,7 @@ public class Tuple { @Override public int hashCode() { - final int prime = 31; + final int prime = 27644437; int result = 1; result = prime * result + ((v == null) ? 0 : v.hashCode()); result = prime * result + ((w == null) ? 0 : w.hashCode()); diff --git a/src/main/java/com/hbm/world/dungeon/CrashedVertibird.java b/src/main/java/com/hbm/world/dungeon/CrashedVertibird.java deleted file mode 100644 index 68b8f2cbb..000000000 --- a/src/main/java/com/hbm/world/dungeon/CrashedVertibird.java +++ /dev/null @@ -1,426 +0,0 @@ -//Schematic to java Structure by jajo_11 | inspired by "MITHION'S .SCHEMATIC TO JAVA CONVERTINGTOOL" - -package com.hbm.world.dungeon; - -import java.util.Random; - -import com.hbm.blocks.ModBlocks; -import com.hbm.config.GeneralConfig; -import com.hbm.itempool.ItemPool; -import com.hbm.itempool.ItemPoolsLegacy; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.init.Blocks; -import net.minecraft.tileentity.TileEntityChest; -import net.minecraft.util.WeightedRandomChestContent; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class CrashedVertibird extends WorldGenerator -{ - Block Block1 = ModBlocks.deco_steel; - Block Block2 = ModBlocks.deco_tungsten; - Block Block3 = ModBlocks.reinforced_glass; - Block Block4 = ModBlocks.deco_titanium; - - protected Block[] GetValidSpawnBlocks() - { - return new Block[] - { - Blocks.sand, - Blocks.sandstone, - }; - } - - public boolean LocationIsValidSpawn(World world, int x, int y, int z) - { - - Block checkBlock = world.getBlock(x, y - 1, z); - Block blockAbove = world.getBlock(x, y , z); - Block blockBelow = world.getBlock(x, y - 2, z); - - for (Block i : GetValidSpawnBlocks()) - { - if (blockAbove != Blocks.air) - { - return false; - } - if (checkBlock == i) - { - return true; - } - else if (checkBlock == Blocks.snow_layer && blockBelow == i) - { - return true; - } - else if (checkBlock.getMaterial() == Material.plants && blockBelow == i) - { - return true; - } - } - return false; - } - - @Override - public boolean generate(World world, Random rand, int x, int y, int z) - { - int i = rand.nextInt(1); - - if(i == 0) - { - generate_r0(world, rand, x, y, z); - } - - return true; - - } - - public boolean generate_r0(World world, Random rand, int x, int y, int z) - { - int yOffset = 8 + rand.nextInt(4); - - if(!LocationIsValidSpawn(world, x + 9, y, z + 9)) - { - return false; - } - - world.setBlock(x + 4, y + 0 - yOffset, z + 1, Block1, 0, 3); - world.setBlock(x + 5, y + 0 - yOffset, z + 1, Block1, 0, 3); - world.setBlock(x + 6, y + 0 - yOffset, z + 1, Block1, 0, 3); - world.setBlock(x + 5, y + 0 - yOffset, z + 2, Block2, 0, 3); - world.setBlock(x + 4, y + 1 - yOffset, z + 0, Block1, 0, 3); - world.setBlock(x + 5, y + 1 - yOffset, z + 0, Block1, 0, 3); - world.setBlock(x + 6, y + 1 - yOffset, z + 0, Block1, 0, 3); - world.setBlock(x + 3, y + 1 - yOffset, z + 1, Block1, 0, 3); - world.setBlock(x + 7, y + 1 - yOffset, z + 1, Block1, 0, 3); - world.setBlock(x + 4, y + 1 - yOffset, z + 2, Block1, 0, 3); - world.setBlock(x + 5, y + 1 - yOffset, z + 2, Block1, 0, 3); - world.setBlock(x + 6, y + 1 - yOffset, z + 2, Block1, 0, 3); - world.setBlock(x + 3, y + 1 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 4, y + 1 - yOffset, z + 3, Block1, 0, 3); - world.setBlock(x + 5, y + 1 - yOffset, z + 3, Block1, 0, 3); - world.setBlock(x + 6, y + 1 - yOffset, z + 3, Block1, 0, 3); - world.setBlock(x + 7, y + 1 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 4, y + 2 - yOffset, z + 0, Block3, 0, 3); - world.setBlock(x + 5, y + 2 - yOffset, z + 0, Block3, 0, 3); - world.setBlock(x + 3, y + 2 - yOffset, z + 1, Block3, 0, 3); - world.setBlock(x + 7, y + 2 - yOffset, z + 1, Block3, 0, 3); - world.setBlock(x + 3, y + 2 - yOffset, z + 2, Block1, 0, 3); - world.setBlock(x + 4, y + 2 - yOffset, z + 2, Blocks.stone_stairs, 2, 3); - world.setBlock(x + 6, y + 2 - yOffset, z + 2, Blocks.stone_stairs, 2, 3); - world.setBlock(x + 7, y + 2 - yOffset, z + 2, Block1, 0, 3); - world.setBlock(x + 7, y + 2 - yOffset, z + 3, Block4, 0, 3); - world.setBlock(x + 3, y + 2 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 4, y + 2 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 5, y + 2 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 6, y + 2 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 7, y + 2 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 3, y + 2 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 4, y + 2 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 5, y + 2 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 6, y + 2 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 7, y + 2 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 4, y + 2 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 6, y + 2 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 4, y + 3 - yOffset, z + 0, Block1, 0, 3); - world.setBlock(x + 5, y + 3 - yOffset, z + 0, Block1, 0, 3); - world.setBlock(x + 6, y + 3 - yOffset, z + 0, Block1, 0, 3); - world.setBlock(x + 3, y + 3 - yOffset, z + 1, Block3, 0, 3); - world.setBlock(x + 4, y + 3 - yOffset, z + 1, Block1, 0, 3); - world.setBlock(x + 5, y + 3 - yOffset, z + 1, Block1, 0, 3); - world.setBlock(x + 6, y + 3 - yOffset, z + 1, Block1, 0, 3); - world.setBlock(x + 7, y + 3 - yOffset, z + 1, Block3, 0, 3); - world.setBlock(x + 3, y + 3 - yOffset, z + 2, Block1, 0, 3); - world.setBlock(x + 7, y + 3 - yOffset, z + 2, Block1, 0, 3); - world.setBlock(x + 3, y + 3 - yOffset, z + 3, Block1, 0, 3); - world.setBlock(x + 7, y + 3 - yOffset, z + 3, Block1, 0, 3); - world.setBlock(x + 7, y + 3 - yOffset, z + 4, Block4, 0, 3); - world.setBlock(x + 2, y + 3 - yOffset, z + 5, Block4, 0, 3); - world.setBlock(x + 7, y + 3 - yOffset, z + 5, Block4, 0, 3); - world.setBlock(x + 4, y + 3 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 5, y + 3 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 6, y + 3 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 4, y + 3 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 5, y + 3 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 6, y + 3 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 5, y + 3 - yOffset, z + 9, Block2, 0, 3); - world.setBlock(x + 4, y + 4 - yOffset, z + 1, Block1, 0, 3); - world.setBlock(x + 5, y + 4 - yOffset, z + 1, Block1, 0, 3); - world.setBlock(x + 6, y + 4 - yOffset, z + 1, Block1, 0, 3); - world.setBlock(x + 3, y + 4 - yOffset, z + 2, Block3, 0, 3); - world.setBlock(x + 3, y + 4 - yOffset, z + 3, Block1, 0, 3); - world.setBlock(x + 7, y + 4 - yOffset, z + 3, Block1, 0, 3); - world.setBlock(x + 7, y + 4 - yOffset, z + 5, Block4, 0, 3); - world.setBlock(x + 2, y + 4 - yOffset, z + 6, Block4, 0, 3); - world.setBlock(x + 3, y + 4 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 7, y + 4 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 2, y + 4 - yOffset, z + 7, Block4, 0, 3); - world.setBlock(x + 3, y + 4 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 6, y + 4 - yOffset, z + 7, Blocks.chest, 2, 3); - if(world.getBlock(x + 6, y + 4 - yOffset, z + 7) == Blocks.chest) - { - WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsLegacy.POOL_VERTIBIRD), (TileEntityChest)world.getTileEntity(x + 6, y + 4 - yOffset, z + 7), 8); - } - world.setBlock(x + 7, y + 4 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 4, y + 4 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 5, y + 4 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 6, y + 4 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 4, y + 4 - yOffset, z + 9, Block1, 0, 3); - world.setBlock(x + 5, y + 4 - yOffset, z + 9, Block1, 0, 3); - world.setBlock(x + 6, y + 4 - yOffset, z + 9, Block1, 0, 3); - world.setBlock(x + 6, y + 5 - yOffset, z + 1, Block2, 0, 3); - world.setBlock(x + 4, y + 5 - yOffset, z + 2, Block1, 0, 3); - world.setBlock(x + 5, y + 5 - yOffset, z + 2, Block1, 0, 3); - world.setBlock(x + 6, y + 5 - yOffset, z + 2, Block1, 0, 3); - world.setBlock(x + 4, y + 5 - yOffset, z + 3, Block1, 0, 3); - world.setBlock(x + 5, y + 5 - yOffset, z + 3, Block1, 0, 3); - world.setBlock(x + 6, y + 5 - yOffset, z + 3, Block1, 0, 3); - world.setBlock(x + 7, y + 5 - yOffset, z + 3, Block1, 0, 3); - world.setBlock(x + 3, y + 5 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 7, y + 5 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 3, y + 5 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 7, y + 5 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 2, y + 5 - yOffset, z + 6, Block4, 0, 3); - world.setBlock(x + 3, y + 5 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 7, y + 5 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 2, y + 5 - yOffset, z + 7, Block4, 0, 3); - world.setBlock(x + 3, y + 5 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 7, y + 5 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 4, y + 5 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 5, y + 5 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 6, y + 5 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 4, y + 5 - yOffset, z + 9, Block1, 0, 3); - world.setBlock(x + 5, y + 5 - yOffset, z + 9, Block4, 0, 3); - world.setBlock(x + 6, y + 5 - yOffset, z + 9, Block1, 0, 3); - world.setBlock(x + 5, y + 6 - yOffset, z + 3, Block1, 0, 3); - world.setBlock(x + 6, y + 6 - yOffset, z + 3, Block1, 0, 3); - world.setBlock(x + 4, y + 6 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 5, y + 6 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 6, y + 6 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 7, y + 6 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 14, y + 6 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 0, y + 6 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 1, y + 6 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 2, y + 6 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 3, y + 6 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 4, y + 6 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 5, y + 6 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 6, y + 6 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 7, y + 6 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 8, y + 6 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 9, y + 6 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 10, y + 6 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 13, y + 6 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 3, y + 6 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 4, y + 6 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 6, y + 6 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 7, y + 6 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 3, y + 6 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 4, y + 6 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 5, y + 6 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 6, y + 6 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 7, y + 6 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 4, y + 6 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 5, y + 6 - yOffset, z + 8, ModBlocks.machine_battery, 2, 3); - world.setBlock(x + 6, y + 6 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 4, y + 6 - yOffset, z + 9, Block1, 0, 3); - world.setBlock(x + 5, y + 6 - yOffset, z + 9, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 6, y + 6 - yOffset, z + 9, Block1, 0, 3); - world.setBlock(x + 4, y + 6 - yOffset, z + 10, Block1, 0, 3); - world.setBlock(x + 5, y + 6 - yOffset, z + 10, Block1, 0, 3); - world.setBlock(x + 6, y + 6 - yOffset, z + 10, Block1, 0, 3); - world.setBlock(x + 5, y + 6 - yOffset, z + 11, Block1, 0, 3); - world.setBlock(x + 6, y + 6 - yOffset, z + 11, Block1, 0, 3); - world.setBlock(x + 4, y + 7 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 5, y + 7 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 6, y + 7 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 7, y + 7 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 14, y + 7 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 1, y + 7 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 2, y + 7 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 3, y + 7 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 4, y + 7 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 5, y + 7 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 6, y + 7 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 7, y + 7 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 8, y + 7 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 9, y + 7 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 10, y + 7 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 11, y + 7 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 12, y + 7 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 13, y + 7 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 14, y + 7 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 3, y + 7 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 4, y + 7 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 5, y + 7 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 6, y + 7 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 7, y + 7 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 14, y + 7 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 3, y + 7 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 4, y + 7 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 5, y + 7 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 6, y + 7 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 7, y + 7 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 3, y + 7 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 4, y + 7 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 5, y + 7 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 6, y + 7 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 7, y + 7 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 3, y + 7 - yOffset, z + 9, Block1, 0, 3); - world.setBlock(x + 4, y + 7 - yOffset, z + 9, ModBlocks.block_electrical_scrap, 0, 3); - world.setBlock(x + 5, y + 7 - yOffset, z + 9, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 6, y + 7 - yOffset, z + 9, ModBlocks.block_electrical_scrap, 0, 3); - world.setBlock(x + 7, y + 7 - yOffset, z + 9, Block1, 0, 3); - world.setBlock(x + 5, y + 7 - yOffset, z + 10, Block4, 0, 3); - world.setBlock(x + 6, y + 7 - yOffset, z + 10, Block1, 0, 3); - world.setBlock(x + 5, y + 7 - yOffset, z + 11, Block4, 0, 3); - world.setBlock(x + 6, y + 7 - yOffset, z + 11, Block1, 0, 3); - world.setBlock(x + 5, y + 8 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 14, y + 8 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 4, y + 8 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 5, y + 8 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 6, y + 8 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 13, y + 8 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 14, y + 8 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 15, y + 8 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 3, y + 8 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 4, y + 8 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 5, y + 8 - yOffset, z + 6, Blocks.chest, 2, 3); - if(world.getBlock(x + 5, y + 8 - yOffset, z + 6) == Blocks.chest) - { - WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsLegacy.POOL_EXPENSIVE), (TileEntityChest)world.getTileEntity(x + 5, y + 8 - yOffset, z + 6), 8); - } - world.setBlock(x + 6, y + 8 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 7, y + 8 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 14, y + 8 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 3, y + 8 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 4, y + 8 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 5, y + 8 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 6, y + 8 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 7, y + 8 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 3, y + 8 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 4, y + 8 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 5, y + 8 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 6, y + 8 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 7, y + 8 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 3, y + 8 - yOffset, z + 9, Block1, 0, 3); - world.setBlock(x + 4, y + 8 - yOffset, z + 9, ModBlocks.block_electrical_scrap, 0, 3); - world.setBlock(x + 5, y + 8 - yOffset, z + 9, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 6, y + 8 - yOffset, z + 9, ModBlocks.block_electrical_scrap, 0, 3); - world.setBlock(x + 7, y + 8 - yOffset, z + 9, Block1, 0, 3); - world.setBlock(x + 4, y + 8 - yOffset, z + 10, ModBlocks.block_electrical_scrap, 0, 3); - world.setBlock(x + 5, y + 8 - yOffset, z + 10, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 6, y + 8 - yOffset, z + 10, ModBlocks.block_electrical_scrap, 0, 3); - world.setBlock(x + 7, y + 8 - yOffset, z + 10, Block1, 0, 3); - world.setBlock(x + 5, y + 8 - yOffset, z + 11, Block4, 0, 3); - world.setBlock(x + 6, y + 8 - yOffset, z + 11, Block1, 0, 3); - world.setBlock(x + 7, y + 8 - yOffset, z + 11, Block1, 0, 3); - world.setBlock(x + 6, y + 8 - yOffset, z + 12, Block1, 0, 3); - world.setBlock(x + 14, y + 9 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 13, y + 9 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 14, y + 9 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 15, y + 9 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 4, y + 9 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 5, y + 9 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 6, y + 9 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 14, y + 9 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 4, y + 9 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 5, y + 9 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 6, y + 9 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 3, y + 9 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 4, y + 9 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 5, y + 9 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 6, y + 9 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 7, y + 9 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 4, y + 9 - yOffset, z + 9, Block1, 0, 3); - world.setBlock(x + 5, y + 9 - yOffset, z + 9, Block4, 0, 3); - world.setBlock(x + 6, y + 9 - yOffset, z + 9, Block1, 0, 3); - world.setBlock(x + 4, y + 9 - yOffset, z + 10, ModBlocks.block_electrical_scrap, 0, 3); - world.setBlock(x + 5, y + 9 - yOffset, z + 10, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 6, y + 9 - yOffset, z + 10, ModBlocks.block_electrical_scrap, 0, 3); - world.setBlock(x + 7, y + 9 - yOffset, z + 10, Block1, 0, 3); - world.setBlock(x + 5, y + 9 - yOffset, z + 11, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 6, y + 9 - yOffset, z + 11, Block1, 0, 3); - world.setBlock(x + 5, y + 9 - yOffset, z + 12, Block4, 0, 3); - world.setBlock(x + 6, y + 9 - yOffset, z + 12, Block1, 0, 3); - world.setBlock(x + 7, y + 9 - yOffset, z + 12, Block1, 0, 3); - world.setBlock(x + 5, y + 9 - yOffset, z + 13, Block1, 0, 3); - world.setBlock(x + 6, y + 9 - yOffset, z + 13, Block1, 0, 3); - world.setBlock(x + 14, y + 10 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 4, y + 10 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 5, y + 10 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 6, y + 10 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 5, y + 10 - yOffset, z + 9, Block1, 0, 3); - world.setBlock(x + 4, y + 10 - yOffset, z + 10, Block1, 0, 3); - world.setBlock(x + 5, y + 10 - yOffset, z + 10, Block4, 0, 3); - world.setBlock(x + 6, y + 10 - yOffset, z + 10, Block1, 0, 3); - world.setBlock(x + 4, y + 10 - yOffset, z + 11, Block1, 0, 3); - world.setBlock(x + 5, y + 10 - yOffset, z + 11, Block1, 0, 3); - world.setBlock(x + 6, y + 10 - yOffset, z + 11, Block1, 0, 3); - world.setBlock(x + 4, y + 10 - yOffset, z + 12, Block1, 0, 3); - world.setBlock(x + 5, y + 10 - yOffset, z + 12, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 6, y + 10 - yOffset, z + 12, Block1, 0, 3); - world.setBlock(x + 4, y + 10 - yOffset, z + 13, Block1, 0, 3); - world.setBlock(x + 5, y + 10 - yOffset, z + 13, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 6, y + 10 - yOffset, z + 13, Block1, 0, 3); - world.setBlock(x + 5, y + 10 - yOffset, z + 14, Block1, 0, 3); - world.setBlock(x + 5, y + 10 - yOffset, z + 15, Block1, 0, 3); - world.setBlock(x + 5, y + 10 - yOffset, z + 17, Block1, 0, 3); - world.setBlock(x + 5, y + 10 - yOffset, z + 18, Block1, 0, 3); - world.setBlock(x + 14, y + 11 - yOffset, z + 4, Block4, 0, 3); - world.setBlock(x + 12, y + 11 - yOffset, z + 5, Block4, 0, 3); - world.setBlock(x + 13, y + 11 - yOffset, z + 5, Block4, 0, 3); - world.setBlock(x + 14, y + 11 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 15, y + 11 - yOffset, z + 5, Block4, 0, 3); - world.setBlock(x + 16, y + 11 - yOffset, z + 5, Block4, 0, 3); - world.setBlock(x + 17, y + 11 - yOffset, z + 5, Block4, 0, 3); - world.setBlock(x + 14, y + 11 - yOffset, z + 6, Block4, 0, 3); - world.setBlock(x + 14, y + 11 - yOffset, z + 7, Block4, 0, 3); - world.setBlock(x + 5, y + 11 - yOffset, z + 10, Block1, 0, 3); - world.setBlock(x + 5, y + 11 - yOffset, z + 11, Block1, 0, 3); - world.setBlock(x + 4, y + 11 - yOffset, z + 12, Block1, 0, 3); - world.setBlock(x + 5, y + 11 - yOffset, z + 12, Block1, 0, 3); - world.setBlock(x + 6, y + 11 - yOffset, z + 12, Block1, 0, 3); - world.setBlock(x + 5, y + 11 - yOffset, z + 13, Block1, 0, 3); - world.setBlock(x + 4, y + 11 - yOffset, z + 14, Block1, 0, 3); - world.setBlock(x + 5, y + 11 - yOffset, z + 14, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 6, y + 11 - yOffset, z + 14, Block1, 0, 3); - world.setBlock(x + 4, y + 11 - yOffset, z + 15, Block1, 0, 3); - world.setBlock(x + 5, y + 11 - yOffset, z + 15, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 6, y + 11 - yOffset, z + 15, Block1, 0, 3); - world.setBlock(x + 5, y + 11 - yOffset, z + 16, Block1, 0, 3); - world.setBlock(x + 5, y + 11 - yOffset, z + 17, Block1, 0, 3); - world.setBlock(x + 5, y + 11 - yOffset, z + 18, Block1, 0, 3); - world.setBlock(x + 5, y + 12 - yOffset, z + 14, Block1, 0, 3); - world.setBlock(x + 3, y + 12 - yOffset, z + 16, Block1, 0, 3); - world.setBlock(x + 4, y + 12 - yOffset, z + 16, Block1, 0, 3); - world.setBlock(x + 5, y + 12 - yOffset, z + 16, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 6, y + 12 - yOffset, z + 16, Block1, 0, 3); - world.setBlock(x + 7, y + 12 - yOffset, z + 16, Block1, 0, 3); - world.setBlock(x + 8, y + 12 - yOffset, z + 16, Block1, 0, 3); - world.setBlock(x + 9, y + 12 - yOffset, z + 16, Block1, 0, 3); - world.setBlock(x + 4, y + 12 - yOffset, z + 17, Block1, 0, 3); - world.setBlock(x + 5, y + 12 - yOffset, z + 17, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 6, y + 12 - yOffset, z + 17, Block1, 0, 3); - world.setBlock(x + 7, y + 12 - yOffset, z + 17, Block1, 0, 3); - world.setBlock(x + 8, y + 12 - yOffset, z + 17, Block1, 0, 3); - world.setBlock(x + 9, y + 12 - yOffset, z + 17, Block1, 0, 3); - world.setBlock(x + 10, y + 12 - yOffset, z + 17, Block1, 0, 3); - world.setBlock(x + 5, y + 13 - yOffset, z + 17, Block1, 0, 3); - - generate_r02_last(world, rand, x, y, z, yOffset); - return true; - - } - public boolean generate_r02_last(World world, Random rand, int x, int y, int z, int yOffset) - { - - world.setBlock(x + 4, y + 1 - yOffset, z + 1, Blocks.lever, 3, 3); - world.setBlock(x + 6, y + 1 - yOffset, z + 1, Blocks.lever, 3, 3); - if(GeneralConfig.enableDebugMode) - System.out.print("[Debug] Successfully spawned crashed Vertibird at " + x + " " + y +" " + z + "\n"); - return true; - - } - -} \ No newline at end of file diff --git a/src/main/java/com/hbm/world/dungeon/Vertibird.java b/src/main/java/com/hbm/world/dungeon/Vertibird.java deleted file mode 100644 index 67b34f015..000000000 --- a/src/main/java/com/hbm/world/dungeon/Vertibird.java +++ /dev/null @@ -1,514 +0,0 @@ -//Schematic to java Structure by jajo_11 | inspired by "MITHION'S .SCHEMATIC TO JAVA CONVERTINGTOOL" - -package com.hbm.world.dungeon; - -import java.util.Random; - -import com.hbm.blocks.ModBlocks; -import com.hbm.config.GeneralConfig; -import com.hbm.itempool.ItemPool; -import com.hbm.itempool.ItemPoolsLegacy; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.init.Blocks; -import net.minecraft.tileentity.TileEntityChest; -import net.minecraft.util.WeightedRandomChestContent; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class Vertibird extends WorldGenerator -{ - Block Block2 = ModBlocks.deco_steel; - Block Block1 = ModBlocks.deco_tungsten; - Block Block4 = ModBlocks.reinforced_glass; - Block Block3 = ModBlocks.deco_titanium; - - protected Block[] GetValidSpawnBlocks() - { - return new Block[] - { - Blocks.sand, - Blocks.sandstone, - }; - } - - public boolean LocationIsValidSpawn(World world, int x, int y, int z) - { - - Block checkBlock = world.getBlock(x, y - 1, z); - Block blockAbove = world.getBlock(x, y , z); - Block blockBelow = world.getBlock(x, y - 2, z); - - for (Block i : GetValidSpawnBlocks()) - { - if (blockAbove != Blocks.air) - { - return false; - } - if (checkBlock == i) - { - return true; - } - else if (checkBlock == Blocks.snow_layer && blockBelow == i) - { - return true; - } - else if (checkBlock.getMaterial() == Material.plants && blockBelow == i) - { - return true; - } - } - return false; - } - - @Override - public boolean generate(World world, Random rand, int x, int y, int z) - { - int i = rand.nextInt(1); - - if(i == 0) - { - generate_r0(world, rand, x, y, z); - } - - return true; - - } - - public boolean generate_r0(World world, Random rand, int x, int y, int z) - { - int yOffset = 3 + rand.nextInt(4); - - if(!LocationIsValidSpawn(world, x + 13, y, z + 10)) - { - return false; - } - - world.setBlock(x + 13, y + 0 - yOffset, z + 2, Block1, 0, 3); - world.setBlock(x + 12, y + 0 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 14, y + 0 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 13, y + 0 - yOffset, z + 9, Block1, 0, 3); - world.setBlock(x + 12, y + 1 - yOffset, z + 1, Block2, 0, 3); - world.setBlock(x + 13, y + 1 - yOffset, z + 1, Block2, 0, 3); - world.setBlock(x + 14, y + 1 - yOffset, z + 1, Block2, 0, 3); - world.setBlock(x + 12, y + 1 - yOffset, z + 2, Block2, 0, 3); - world.setBlock(x + 13, y + 1 - yOffset, z + 2, Block2, 0, 3); - world.setBlock(x + 14, y + 1 - yOffset, z + 2, Block2, 0, 3); - world.setBlock(x + 11, y + 1 - yOffset, z + 3, Block1, 0, 3); - world.setBlock(x + 12, y + 1 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 13, y + 1 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 14, y + 1 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 15, y + 1 - yOffset, z + 3, Block1, 0, 3); - world.setBlock(x + 11, y + 1 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 12, y + 1 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 13, y + 1 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 14, y + 1 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 15, y + 1 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 11, y + 1 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 12, y + 1 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 13, y + 1 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 14, y + 1 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 15, y + 1 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 12, y + 1 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 13, y + 1 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 14, y + 1 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 12, y + 1 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 13, y + 1 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 14, y + 1 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 12, y + 1 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 13, y + 1 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 14, y + 1 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 12, y + 1 - yOffset, z + 9, Block2, 0, 3); - world.setBlock(x + 13, y + 1 - yOffset, z + 9, Block2, 0, 3); - world.setBlock(x + 14, y + 1 - yOffset, z + 9, Block2, 0, 3); - world.setBlock(x + 12, y + 2 - yOffset, z + 0, Block2, 0, 3); - world.setBlock(x + 13, y + 2 - yOffset, z + 0, Block2, 0, 3); - world.setBlock(x + 14, y + 2 - yOffset, z + 0, Block2, 0, 3); - world.setBlock(x + 11, y + 2 - yOffset, z + 1, Block2, 0, 3); - world.setBlock(x + 15, y + 2 - yOffset, z + 1, Block2, 0, 3); - world.setBlock(x + 11, y + 2 - yOffset, z + 2, Block2, 0, 3); - world.setBlock(x + 12, y + 2 - yOffset, z + 2, Blocks.stone_stairs, 2, 3); - world.setBlock(x + 14, y + 2 - yOffset, z + 2, Blocks.stone_stairs, 2, 3); - world.setBlock(x + 15, y + 2 - yOffset, z + 2, Block2, 0, 3); - world.setBlock(x + 15, y + 2 - yOffset, z + 3, Block3, 0, 3); - world.setBlock(x + 15, y + 2 - yOffset, z + 4, Block3, 0, 3); - world.setBlock(x + 10, y + 2 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 15, y + 2 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 10, y + 2 - yOffset, z + 6, Block3, 0, 3); - world.setBlock(x + 11, y + 2 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 15, y + 2 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 10, y + 2 - yOffset, z + 7, Block3, 0, 3); - world.setBlock(x + 11, y + 2 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 14, y + 2 - yOffset, z + 7, Blocks.chest, 2, 3); - if(world.getBlock(x + 14, y + 2 - yOffset, z + 7) == Blocks.chest) - { - WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsLegacy.POOL_VERTIBIRD), (TileEntityChest)world.getTileEntity(x + 14, y + 2 - yOffset, z + 7), 8); - } - world.setBlock(x + 15, y + 2 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 12, y + 2 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 13, y + 2 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 14, y + 2 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 12, y + 2 - yOffset, z + 9, Block2, 0, 3); - world.setBlock(x + 13, y + 2 - yOffset, z + 9, Block3, 0, 3); - world.setBlock(x + 14, y + 2 - yOffset, z + 9, Block2, 0, 3); - world.setBlock(x + 12, y + 2 - yOffset, z + 10, Block2, 0, 3); - world.setBlock(x + 13, y + 2 - yOffset, z + 10, Block2, 0, 3); - world.setBlock(x + 14, y + 2 - yOffset, z + 10, Block2, 0, 3); - world.setBlock(x + 12, y + 2 - yOffset, z + 11, Block2, 0, 3); - world.setBlock(x + 13, y + 2 - yOffset, z + 11, Block2, 0, 3); - world.setBlock(x + 14, y + 2 - yOffset, z + 11, Block2, 0, 3); - world.setBlock(x + 13, y + 2 - yOffset, z + 18, Block2, 0, 3); - world.setBlock(x + 12, y + 3 - yOffset, z + 0, Block4, 0, 3); - world.setBlock(x + 13, y + 3 - yOffset, z + 0, Block4, 0, 3); - world.setBlock(x + 14, y + 3 - yOffset, z + 0, Block4, 0, 3); - world.setBlock(x + 11, y + 3 - yOffset, z + 1, Block4, 0, 3); - world.setBlock(x + 15, y + 3 - yOffset, z + 1, Block4, 0, 3); - world.setBlock(x + 11, y + 3 - yOffset, z + 2, Block2, 0, 3); - world.setBlock(x + 15, y + 3 - yOffset, z + 2, Block2, 0, 3); - world.setBlock(x + 11, y + 3 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 15, y + 3 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 15, y + 3 - yOffset, z + 4, Block3, 0, 3); - world.setBlock(x + 15, y + 3 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 10, y + 3 - yOffset, z + 6, Block3, 0, 3); - world.setBlock(x + 11, y + 3 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 15, y + 3 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 10, y + 3 - yOffset, z + 7, Block3, 0, 3); - world.setBlock(x + 11, y + 3 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 15, y + 3 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 12, y + 3 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 13, y + 3 - yOffset, z + 8, ModBlocks.machine_battery, 2, 3); - world.setBlock(x + 14, y + 3 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 12, y + 3 - yOffset, z + 9, Block2, 0, 3); - world.setBlock(x + 13, y + 3 - yOffset, z + 9, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 14, y + 3 - yOffset, z + 9, Block2, 0, 3); - world.setBlock(x + 12, y + 3 - yOffset, z + 10, Block2, 0, 3); - world.setBlock(x + 13, y + 3 - yOffset, z + 10, Block3, 0, 3); - world.setBlock(x + 14, y + 3 - yOffset, z + 10, Block2, 0, 3); - world.setBlock(x + 12, y + 3 - yOffset, z + 11, Block2, 0, 3); - world.setBlock(x + 13, y + 3 - yOffset, z + 11, Block3, 0, 3); - world.setBlock(x + 14, y + 3 - yOffset, z + 11, Block2, 0, 3); - world.setBlock(x + 12, y + 3 - yOffset, z + 12, Block2, 0, 3); - world.setBlock(x + 13, y + 3 - yOffset, z + 12, Block2, 0, 3); - world.setBlock(x + 14, y + 3 - yOffset, z + 12, Block2, 0, 3); - world.setBlock(x + 13, y + 3 - yOffset, z + 17, Block2, 0, 3); - world.setBlock(x + 13, y + 3 - yOffset, z + 18, Block2, 0, 3); - world.setBlock(x + 12, y + 4 - yOffset, z + 0, Block2, 0, 3); - world.setBlock(x + 13, y + 4 - yOffset, z + 0, Block2, 0, 3); - world.setBlock(x + 14, y + 4 - yOffset, z + 0, Block2, 0, 3); - world.setBlock(x + 11, y + 4 - yOffset, z + 1, Block4, 0, 3); - world.setBlock(x + 12, y + 4 - yOffset, z + 1, Block2, 0, 3); - world.setBlock(x + 13, y + 4 - yOffset, z + 1, Block2, 0, 3); - world.setBlock(x + 14, y + 4 - yOffset, z + 1, Block2, 0, 3); - world.setBlock(x + 15, y + 4 - yOffset, z + 1, Block4, 0, 3); - world.setBlock(x + 11, y + 4 - yOffset, z + 2, Block4, 0, 3); - world.setBlock(x + 15, y + 4 - yOffset, z + 2, Block4, 0, 3); - world.setBlock(x + 11, y + 4 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 15, y + 4 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 11, y + 4 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 15, y + 4 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 4, y + 4 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 11, y + 4 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 15, y + 4 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 22, y + 4 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 11, y + 4 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 12, y + 4 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 14, y + 4 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 15, y + 4 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 11, y + 4 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 12, y + 4 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 13, y + 4 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 14, y + 4 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 15, y + 4 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 11, y + 4 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 12, y + 4 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 13, y + 4 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 14, y + 4 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 15, y + 4 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 11, y + 4 - yOffset, z + 9, Block2, 0, 3); - world.setBlock(x + 12, y + 4 - yOffset, z + 9, ModBlocks.block_electrical_scrap, 0, 3); - world.setBlock(x + 13, y + 4 - yOffset, z + 9, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 14, y + 4 - yOffset, z + 9, ModBlocks.block_electrical_scrap, 0, 3); - world.setBlock(x + 15, y + 4 - yOffset, z + 9, Block2, 0, 3); - world.setBlock(x + 11, y + 4 - yOffset, z + 10, Block2, 0, 3); - world.setBlock(x + 12, y + 4 - yOffset, z + 10, ModBlocks.block_electrical_scrap, 0, 3); - world.setBlock(x + 13, y + 4 - yOffset, z + 10, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 14, y + 4 - yOffset, z + 10, ModBlocks.block_electrical_scrap, 0, 3); - world.setBlock(x + 15, y + 4 - yOffset, z + 10, Block2, 0, 3); - world.setBlock(x + 11, y + 4 - yOffset, z + 11, Block2, 0, 3); - world.setBlock(x + 12, y + 4 - yOffset, z + 11, Block2, 0, 3); - world.setBlock(x + 13, y + 4 - yOffset, z + 11, Block3, 0, 3); - world.setBlock(x + 14, y + 4 - yOffset, z + 11, Block2, 0, 3); - world.setBlock(x + 15, y + 4 - yOffset, z + 11, Block2, 0, 3); - world.setBlock(x + 11, y + 4 - yOffset, z + 12, Block2, 0, 3); - world.setBlock(x + 12, y + 4 - yOffset, z + 12, Block2, 0, 3); - world.setBlock(x + 13, y + 4 - yOffset, z + 12, Block3, 0, 3); - world.setBlock(x + 14, y + 4 - yOffset, z + 12, Block2, 0, 3); - world.setBlock(x + 15, y + 4 - yOffset, z + 12, Block2, 0, 3); - world.setBlock(x + 12, y + 4 - yOffset, z + 13, Block2, 0, 3); - world.setBlock(x + 13, y + 4 - yOffset, z + 13, Block2, 0, 3); - world.setBlock(x + 14, y + 4 - yOffset, z + 13, Block2, 0, 3); - world.setBlock(x + 13, y + 4 - yOffset, z + 14, Block2, 0, 3); - world.setBlock(x + 13, y + 4 - yOffset, z + 15, Block2, 0, 3); - world.setBlock(x + 13, y + 4 - yOffset, z + 16, Block2, 0, 3); - world.setBlock(x + 13, y + 4 - yOffset, z + 17, Block2, 0, 3); - world.setBlock(x + 13, y + 4 - yOffset, z + 18, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 1, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 1, Block2, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 1, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 2, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 2, Block2, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 2, Block2, 0, 3); - world.setBlock(x + 11, y + 5 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 15, y + 5 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 4, y + 5 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 11, y + 5 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 15, y + 5 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 22, y + 5 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 3, y + 5 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 4, y + 5 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 5, y + 5 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 8, y + 5 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 9, y + 5 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 10, y + 5 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 11, y + 5 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 15, y + 5 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 16, y + 5 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 17, y + 5 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 18, y + 5 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 21, y + 5 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 22, y + 5 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 23, y + 5 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 4, y + 5 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 11, y + 5 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 15, y + 5 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 22, y + 5 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 11, y + 5 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 15, y + 5 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 11, y + 5 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 15, y + 5 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 11, y + 5 - yOffset, z + 9, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 9, ModBlocks.block_electrical_scrap, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 9, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 9, ModBlocks.block_electrical_scrap, 0, 3); - world.setBlock(x + 15, y + 5 - yOffset, z + 9, Block2, 0, 3); - world.setBlock(x + 11, y + 5 - yOffset, z + 10, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 10, ModBlocks.block_electrical_scrap, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 10, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 10, ModBlocks.block_electrical_scrap, 0, 3); - world.setBlock(x + 15, y + 5 - yOffset, z + 10, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 11, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 11, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 11, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 12, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 12, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 12, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 13, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 13, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 13, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 14, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 14, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 14, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 15, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 15, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 15, Block2, 0, 3); - world.setBlock(x + 9, y + 5 - yOffset, z + 16, Block2, 0, 3); - world.setBlock(x + 10, y + 5 - yOffset, z + 16, Block2, 0, 3); - world.setBlock(x + 11, y + 5 - yOffset, z + 16, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 16, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 16, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 16, Block2, 0, 3); - world.setBlock(x + 15, y + 5 - yOffset, z + 16, Block2, 0, 3); - world.setBlock(x + 16, y + 5 - yOffset, z + 16, Block2, 0, 3); - world.setBlock(x + 17, y + 5 - yOffset, z + 16, Block2, 0, 3); - world.setBlock(x + 8, y + 5 - yOffset, z + 17, Block2, 0, 3); - world.setBlock(x + 9, y + 5 - yOffset, z + 17, Block2, 0, 3); - world.setBlock(x + 10, y + 5 - yOffset, z + 17, Block2, 0, 3); - world.setBlock(x + 11, y + 5 - yOffset, z + 17, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 17, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 17, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 17, Block2, 0, 3); - world.setBlock(x + 15, y + 5 - yOffset, z + 17, Block2, 0, 3); - world.setBlock(x + 16, y + 5 - yOffset, z + 17, Block2, 0, 3); - world.setBlock(x + 17, y + 5 - yOffset, z + 17, Block2, 0, 3); - world.setBlock(x + 18, y + 5 - yOffset, z + 17, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 18, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 18, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 18, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 19, Block1, 0, 3); - world.setBlock(x + 12, y + 6 - yOffset, z + 1, Block1, 0, 3); - world.setBlock(x + 14, y + 6 - yOffset, z + 1, Block1, 0, 3); - world.setBlock(x + 12, y + 6 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 13, y + 6 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 14, y + 6 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 4, y + 6 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 11, y + 6 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 12, y + 6 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 13, y + 6 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 14, y + 6 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 15, y + 6 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 22, y + 6 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 3, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 4, y + 6 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 5, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 6, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 7, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 8, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 9, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 10, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 11, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 12, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 13, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 14, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 15, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 16, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 17, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 18, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 19, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 20, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 21, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 22, y + 6 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 23, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 4, y + 6 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 11, y + 6 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 12, y + 6 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 13, y + 6 - yOffset, z + 6, Blocks.chest, 2, 3); - if(world.getBlock(x + 13, y + 6 - yOffset, z + 6) == Blocks.chest) - { - WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsLegacy.POOL_VERTIBIRD), (TileEntityChest)world.getTileEntity(x + 13, y + 6 - yOffset, z + 6), 8); - } - world.setBlock(x + 14, y + 6 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 15, y + 6 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 22, y + 6 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 11, y + 6 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 12, y + 6 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 13, y + 6 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 14, y + 6 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 15, y + 6 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 11, y + 6 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 12, y + 6 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 13, y + 6 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 14, y + 6 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 15, y + 6 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 12, y + 6 - yOffset, z + 9, Block2, 0, 3); - world.setBlock(x + 13, y + 6 - yOffset, z + 9, Block3, 0, 3); - world.setBlock(x + 14, y + 6 - yOffset, z + 9, Block2, 0, 3); - world.setBlock(x + 12, y + 6 - yOffset, z + 10, Block2, 0, 3); - world.setBlock(x + 13, y + 6 - yOffset, z + 10, Block3, 0, 3); - world.setBlock(x + 14, y + 6 - yOffset, z + 10, Block2, 0, 3); - world.setBlock(x + 12, y + 6 - yOffset, z + 11, Block2, 0, 3); - world.setBlock(x + 13, y + 6 - yOffset, z + 11, Block2, 0, 3); - world.setBlock(x + 14, y + 6 - yOffset, z + 11, Block2, 0, 3); - world.setBlock(x + 12, y + 6 - yOffset, z + 12, Block2, 0, 3); - world.setBlock(x + 13, y + 6 - yOffset, z + 12, Block2, 0, 3); - world.setBlock(x + 14, y + 6 - yOffset, z + 12, Block2, 0, 3); - world.setBlock(x + 13, y + 6 - yOffset, z + 13, Block2, 0, 3); - world.setBlock(x + 13, y + 6 - yOffset, z + 14, Block2, 0, 3); - world.setBlock(x + 13, y + 6 - yOffset, z + 17, Block2, 0, 3); - world.setBlock(x + 13, y + 6 - yOffset, z + 18, Block2, 0, 3); - world.setBlock(x + 4, y + 7 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 13, y + 7 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 22, y + 7 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 3, y + 7 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 4, y + 7 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 5, y + 7 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 12, y + 7 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 13, y + 7 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 14, y + 7 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 21, y + 7 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 22, y + 7 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 23, y + 7 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 4, y + 7 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 12, y + 7 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 13, y + 7 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 14, y + 7 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 22, y + 7 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 12, y + 7 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 13, y + 7 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 14, y + 7 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 12, y + 7 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 13, y + 7 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 14, y + 7 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 13, y + 7 - yOffset, z + 9, Block2, 0, 3); - world.setBlock(x + 13, y + 7 - yOffset, z + 10, Block2, 0, 3); - world.setBlock(x + 13, y + 7 - yOffset, z + 11, Block2, 0, 3); - world.setBlock(x + 4, y + 8 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 22, y + 8 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 3, y + 8 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 4, y + 8 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 5, y + 8 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 21, y + 8 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 22, y + 8 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 23, y + 8 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 4, y + 8 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 22, y + 8 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 4, y + 9 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 22, y + 9 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 4, y + 10 - yOffset, z + 1, Block3, 0, 3); - world.setBlock(x + 22, y + 10 - yOffset, z + 1, Block3, 0, 3); - world.setBlock(x + 4, y + 10 - yOffset, z + 2, Block3, 0, 3); - world.setBlock(x + 22, y + 10 - yOffset, z + 2, Block3, 0, 3); - world.setBlock(x + 4, y + 10 - yOffset, z + 3, Block3, 0, 3); - world.setBlock(x + 22, y + 10 - yOffset, z + 3, Block3, 0, 3); - world.setBlock(x + 4, y + 10 - yOffset, z + 4, Block3, 0, 3); - world.setBlock(x + 22, y + 10 - yOffset, z + 4, Block3, 0, 3); - world.setBlock(x + 0, y + 10 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 1, y + 10 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 2, y + 10 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 3, y + 10 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 4, y + 10 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 5, y + 10 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 6, y + 10 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 7, y + 10 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 8, y + 10 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 18, y + 10 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 19, y + 10 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 20, y + 10 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 21, y + 10 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 22, y + 10 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 23, y + 10 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 24, y + 10 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 25, y + 10 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 26, y + 10 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 4, y + 10 - yOffset, z + 6, Block3, 0, 3); - world.setBlock(x + 22, y + 10 - yOffset, z + 6, Block3, 0, 3); - world.setBlock(x + 4, y + 10 - yOffset, z + 7, Block3, 0, 3); - world.setBlock(x + 22, y + 10 - yOffset, z + 7, Block3, 0, 3); - world.setBlock(x + 4, y + 10 - yOffset, z + 8, Block3, 0, 3); - world.setBlock(x + 22, y + 10 - yOffset, z + 8, Block3, 0, 3); - world.setBlock(x + 4, y + 10 - yOffset, z + 9, Block3, 0, 3); - world.setBlock(x + 22, y + 10 - yOffset, z + 9, Block3, 0, 3); - - generate_r02_last(world, rand, x, y, z, yOffset); - return true; - - } - public boolean generate_r02_last(World world, Random rand, int x, int y, int z, int yOffset) - { - - world.setBlock(x + 12, y + 2 - yOffset, z + 1, Blocks.lever, 3, 3); - world.setBlock(x + 14, y + 2 - yOffset, z + 1, Blocks.lever, 3, 3); - if(GeneralConfig.enableDebugMode) - System.out.print("[Debug] Successfully spawned Vertibird at " + x + " " + y +" " + z + "\n"); - return true; - - } - -} \ No newline at end of file diff --git a/src/main/java/com/hbm/world/gen/INBTTileEntityTransformable.java b/src/main/java/com/hbm/world/gen/INBTTileEntityTransformable.java new file mode 100644 index 000000000..33dc141c8 --- /dev/null +++ b/src/main/java/com/hbm/world/gen/INBTTileEntityTransformable.java @@ -0,0 +1,14 @@ +package com.hbm.world.gen; + +import net.minecraft.world.World; + +public interface INBTTileEntityTransformable { + + /** + * Like INBTTransformable but for TileEntities, like for randomizing bobbleheads + */ + + // Allows for the TE to modify itself when spawned in an NBT structure + public void transformTE(World world, int coordBaseMode); + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/world/gen/INBTTransformable.java b/src/main/java/com/hbm/world/gen/INBTTransformable.java new file mode 100644 index 000000000..b42d6bd43 --- /dev/null +++ b/src/main/java/com/hbm/world/gen/INBTTransformable.java @@ -0,0 +1,161 @@ +package com.hbm.world.gen; + +import net.minecraft.block.Block; + +public interface INBTTransformable { + + /** + * Defines this block as something that has a rotation or some other blockstate + * which needs transformations applied when building from an .nbt structure file + */ + + // Takes the block current meta and translates it into a rotated meta + public int transformMeta(int meta, int coordBaseMode); + + // Takes the block and turns it into a different block entirely, to turn off lights, shit like that + public default Block transformBlock(Block block) { + return block; + } + + + /** + * A fair few blocks have generalized rotations so, since we have all this space, put em here + */ + + public static int transformMetaDeco(int meta, int coordBaseMode) { + switch(coordBaseMode) { + case 1: //West + switch(meta) { + case 2: return 5; + case 3: return 4; + case 4: return 2; + case 5: return 3; + } + case 2: //North + switch(meta) { + case 2: return 3; + case 3: return 2; + case 4: return 5; + case 5: return 4; + } + case 3: //East + switch(meta) { + case 2: return 4; + case 3: return 5; + case 4: return 3; + case 5: return 2; + } + } + return meta; + } + + public static int transformMetaDecoModel(int meta, int coordBaseMode) { + int rot = (meta + coordBaseMode) % 4; + int type = (meta / 4) * 4; + + return rot | type; + } + + public static int transformMetaStairs(int meta, int coordBaseMode) { + switch(coordBaseMode) { + case 1: //West + if((meta & 3) < 2) //Flip second bit for E/W + meta = meta ^ 2; + else + meta = meta ^ 3; //Flip both bits for N/S + break; + case 2: //North + meta = meta ^ 1; //Flip first bit + break; + case 3: //East + if((meta & 3) < 2) //Flip both bits for E/W + meta = meta ^ 3; + else //Flip second bit for N/S + meta = meta ^ 2; + break; + } + + return meta; + } + + public static int transformMetaPillar(int meta, int coordBaseMode) { + if(coordBaseMode == 2) return meta; + int type = meta & 3; + int rot = meta & 12; + + if(rot == 4) return type | 8; + if(rot == 8) return type | 4; + + return meta; + } + + public static int transformMetaDirectional(int meta, int coordBaseMode) { + int rot = meta & 3; + int other = meta & 12; + + switch(coordBaseMode) { + default: //S + break; + case 1: //W + rot = (rot + 1) % 4; break; + case 2: //N + rot ^= 2; break; + case 3: //E + rot = (rot + 3) % 4; break; + } + + return other | rot; + } + + public static int transformMetaTorch(int meta, int coordBaseMode) { + switch(coordBaseMode) { + case 1: //West + switch(meta) { + case 1: return 3; + case 2: return 4; + case 3: return 2; + case 4: return 1; + } + case 2: //North + switch(meta) { + case 1: return 2; + case 2: return 1; + case 3: return 4; + case 4: return 3; + } + case 3: //East + switch(meta) { + case 1: return 4; + case 2: return 3; + case 3: return 1; + case 4: return 2; + } + } + return meta; + } + + public static int transformMetaDoor(int meta, int coordBaseMode) { + if(meta == 8 || meta == 9) return meta; // ignore top parts + + return transformMetaDirectional(meta, coordBaseMode); + } + + public static int transformMetaLever(int meta, int coordBaseMode) { + if(meta <= 0 || meta >= 7) { //levers suck ass + switch(coordBaseMode) { + case 1: case 3: //west / east + meta ^= 0b111; + } + } else if(meta >= 5) { + switch(coordBaseMode) { + case 1: case 3: //west / east + meta = (meta + 1) % 2 + 5; + } + } else { + meta = transformMetaTorch(meta, coordBaseMode); + } + + return meta; + } + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/world/gen/NBTStructure.java b/src/main/java/com/hbm/world/gen/NBTStructure.java new file mode 100644 index 000000000..6ec619378 --- /dev/null +++ b/src/main/java/com/hbm/world/gen/NBTStructure.java @@ -0,0 +1,1167 @@ +package com.hbm.world.gen; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.*; +import java.util.function.Function; +import java.util.function.Predicate; + +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockWand; +import com.hbm.config.GeneralConfig; +import com.hbm.config.StructureConfig; +import com.hbm.handler.ThreeInts; +import com.hbm.main.MainRegistry; +import com.hbm.util.Tuple.Pair; +import com.hbm.util.Tuple.Quartet; + +import cpw.mods.fml.common.registry.GameRegistry; +import net.minecraft.block.*; +import net.minecraft.client.Minecraft; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.nbt.CompressedStreamTools; +import net.minecraft.nbt.NBTBase; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagInt; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.chunk.IChunkProvider; +import net.minecraft.world.gen.structure.MapGenStructure; +import net.minecraft.world.gen.structure.MapGenStructureIO; +import net.minecraft.world.gen.structure.StructureBoundingBox; +import net.minecraft.world.gen.structure.StructureComponent; +import net.minecraft.world.gen.structure.StructureComponent.BlockSelector; +import net.minecraft.world.gen.structure.StructureStart; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.common.util.Constants.NBT; + +public class NBTStructure { + + /** + * Now with structure support! + * + * the type of structure to generate is saved into the Component, + * meaning this can generate all sorts of different structures, + * without having to define and register each structure manually + */ + + protected static Map> weightedMap = new HashMap<>(); + + // serialization data + protected static Map jigsawMap = new HashMap<>(); + + private String name; + + private boolean isLoaded; + + private ThreeInts size; + private List> itemPalette; + private BlockState[][][] blockArray; + + private List> fromConnections; + private Map> toTopConnections; + private Map> toBottomConnections; + private Map> toHorizontalConnections; + + public NBTStructure(ResourceLocation resource) { + // Can't use regular resource loading, servers don't know how! + InputStream stream = NBTStructure.class.getResourceAsStream("/assets/" + resource.getResourceDomain() + "/" + resource.getResourcePath()); + if(stream != null) { + name = resource.getResourcePath(); + loadStructure(stream); + } else { + MainRegistry.logger.error("NBT Structure not found: " + resource.getResourcePath()); + } + } + + public static void register() { + MapGenStructureIO.registerStructure(Start.class, "NBTStructures"); + MapGenStructureIO.func_143031_a(Component.class, "NBTComponents"); + } + + // Register a new structure for a given dimension + public static void registerStructure(int dimensionId, SpawnCondition spawn) { + List weightedList = weightedMap.computeIfAbsent(dimensionId, integer -> new ArrayList()); + for(int i = 0; i < spawn.spawnWeight; i++) { + weightedList.add(spawn); + } + } + + public static void registerStructure(SpawnCondition spawn, int... dimensionIds) { + for(int dimensionId : dimensionIds) { + registerStructure(dimensionId, spawn); + } + } + + // Add a chance for nothing to spawn at a given valid spawn location + public static void registerNullWeight(int dimensionId, int weight) { + registerNullWeight(dimensionId, weight, null); + } + + public static void registerNullWeight(int dimensionId, int weight, Predicate predicate) { + SpawnCondition spawn = new SpawnCondition() {{ + spawnWeight = weight; + canSpawn = predicate; + }}; + + List weightedList = weightedMap.computeIfAbsent(dimensionId, integer -> new ArrayList()); + for(int i = 0; i < spawn.spawnWeight; i++) { + weightedList.add(spawn); + } + } + + // Saves a selected area into an NBT structure (+ some of our non-standard stuff to support 1.7.10) + public static void saveArea(String filename, World world, int x1, int y1, int z1, int x2, int y2, int z2, Set> exclude) { + NBTTagCompound structure = new NBTTagCompound(); + NBTTagList nbtBlocks = new NBTTagList(); + NBTTagList nbtPalette = new NBTTagList(); + NBTTagList nbtItemPalette = new NBTTagList(); + + // Quick access hash slinging slashers + Map, Integer> palette = new HashMap<>(); + Map itemPalette = new HashMap<>(); + + structure.setInteger("version", 1); + + int ox = Math.min(x1, x2); + int oy = Math.min(y1, y2); + int oz = Math.min(z1, z2); + + for(int x = ox; x <= Math.max(x1, x2); x++) { + for(int y = oy; y <= Math.max(y1, y2); y++) { + for(int z = oz; z <= Math.max(z1, z2); z++) { + Pair block = new Pair(world.getBlock(x, y, z), world.getBlockMetadata(x, y, z)); + + if(exclude.contains(block)) continue; + + if(block.key instanceof BlockWand) { + block.key = ((BlockWand) block.key).exportAs; + } + + int paletteId = palette.size(); + if(palette.containsKey(block)) { + paletteId = palette.get(block); + } else { + palette.put(block, paletteId); + + NBTTagCompound nbtBlock = new NBTTagCompound(); + nbtBlock.setString("Name", GameRegistry.findUniqueIdentifierFor(block.key).toString()); + + NBTTagCompound nbtProp = new NBTTagCompound(); + nbtProp.setString("meta", block.value.toString()); + + nbtBlock.setTag("Properties", nbtProp); + + nbtPalette.appendTag(nbtBlock); + } + + NBTTagCompound nbtBlock = new NBTTagCompound(); + nbtBlock.setInteger("state", paletteId); + + NBTTagList nbtPos = new NBTTagList(); + nbtPos.appendTag(new NBTTagInt(x - ox)); + nbtPos.appendTag(new NBTTagInt(y - oy)); + nbtPos.appendTag(new NBTTagInt(z - oz)); + + nbtBlock.setTag("pos", nbtPos); + + TileEntity te = world.getTileEntity(x, y, z); + if(te != null) { + NBTTagCompound nbt = new NBTTagCompound(); + te.writeToNBT(nbt); + + nbt.removeTag("x"); + nbt.removeTag("y"); + nbt.removeTag("z"); + + nbtBlock.setTag("nbt", nbt); + + String itemKey = null; + if(nbt.hasKey("items")) itemKey = "items"; + if(nbt.hasKey("Items")) itemKey = "Items"; + + if(nbt.hasKey(itemKey)) { + NBTTagList items = nbt.getTagList(itemKey, NBT.TAG_COMPOUND); + for(int i = 0; i < items.tagCount(); i++) { + NBTTagCompound item = items.getCompoundTagAt(i); + short id = item.getShort("id"); + String name = GameRegistry.findUniqueIdentifierFor(Item.getItemById(id)).toString(); + + if(!itemPalette.containsKey(id)) { + int itemPaletteId = itemPalette.size(); + itemPalette.put(id, itemPaletteId); + + NBTTagCompound nbtItem = new NBTTagCompound(); + nbtItem.setShort("ID", id); + nbtItem.setString("Name", name); + + nbtItemPalette.appendTag(nbtItem); + } + } + } + } + + nbtBlocks.appendTag(nbtBlock); + } + } + } + + structure.setTag("blocks", nbtBlocks); + structure.setTag("palette", nbtPalette); + structure.setTag("itemPalette", nbtItemPalette); + + NBTTagList nbtSize = new NBTTagList(); + nbtSize.appendTag(new NBTTagInt(Math.abs(x1 - x2) + 1)); + nbtSize.appendTag(new NBTTagInt(Math.abs(y1 - y2) + 1)); + nbtSize.appendTag(new NBTTagInt(Math.abs(z1 - z2) + 1)); + structure.setTag("size", nbtSize); + + structure.setTag("entities", new NBTTagList()); + + try { + File structureDirectory = new File(Minecraft.getMinecraft().mcDataDir, "structures"); + structureDirectory.mkdir(); + + File structureFile = new File(structureDirectory, filename); + + CompressedStreamTools.writeCompressed(structure, new FileOutputStream(structureFile)); + } catch (Exception ex) { + MainRegistry.logger.warn("Failed to save NBT structure", ex); + } + } + + private void loadStructure(InputStream inputStream) { + try { + NBTTagCompound data = CompressedStreamTools.readCompressed(inputStream); + + + // GET SIZE (for offsetting to center) + size = parsePos(data.getTagList("size", NBT.TAG_INT)); + + + // PARSE BLOCK PALETTE + NBTTagList paletteList = data.getTagList("palette", NBT.TAG_COMPOUND); + BlockDefinition[] palette = new BlockDefinition[paletteList.tagCount()]; + + for(int i = 0; i < paletteList.tagCount(); i++) { + NBTTagCompound p = paletteList.getCompoundTagAt(i); + + String blockName = p.getString("Name"); + NBTTagCompound prop = p.getCompoundTag("Properties"); + + int meta = 0; + try { + meta = Integer.parseInt(prop.getString("meta")); + } catch(NumberFormatException ex) { + MainRegistry.logger.info("Failed to parse: " + prop.getString("meta")); + meta = 0; + } + + palette[i] = new BlockDefinition(blockName, meta); + } + + + // PARSE ITEM PALETTE (custom shite) + if(data.hasKey("itemPalette")) { + NBTTagList itemPaletteList = data.getTagList("itemPalette", NBT.TAG_COMPOUND); + itemPalette = new ArrayList<>(itemPaletteList.tagCount()); + + for(int i = 0; i < itemPaletteList.tagCount(); i++) { + NBTTagCompound p = itemPaletteList.getCompoundTagAt(i); + + short id = p.getShort("ID"); + String name = p.getString("Name"); + + itemPalette.add(new Pair<>(id, name)); + } + } else { + itemPalette = null; + } + + + // LOAD IN BLOCKS + NBTTagList blockData = data.getTagList("blocks", NBT.TAG_COMPOUND); + blockArray = new BlockState[size.x][size.y][size.z]; + + List connections = new ArrayList<>(); + + for(int i = 0; i < blockData.tagCount(); i++) { + NBTTagCompound block = blockData.getCompoundTagAt(i); + int state = block.getInteger("state"); + ThreeInts pos = parsePos(block.getTagList("pos", NBT.TAG_INT)); + + BlockState blockState = new BlockState(palette[state]); + + if(block.hasKey("nbt")) { + NBTTagCompound nbt = block.getCompoundTag("nbt"); + blockState.nbt = nbt; + + // Load in connection points for jigsaws + if(blockState.definition.block == ModBlocks.wand_jigsaw) { + if(toTopConnections == null) toTopConnections = new HashMap<>(); + if(toBottomConnections == null) toBottomConnections = new HashMap<>(); + if(toHorizontalConnections == null) toHorizontalConnections = new HashMap<>(); + + int selectionPriority = nbt.getInteger("selection"); + int placementPriority = nbt.getInteger("placement"); + ForgeDirection direction = ForgeDirection.getOrientation(nbt.getInteger("direction")); + String poolName = nbt.getString("pool"); + String ourName = nbt.getString("name"); + String targetName = nbt.getString("target"); + String replaceBlock = nbt.getString("block"); + int replaceMeta = nbt.getInteger("meta"); + boolean isRollable = nbt.getBoolean("roll"); + + JigsawConnection connection = new JigsawConnection(pos, direction, poolName, targetName, isRollable, selectionPriority, placementPriority); + + connections.add(connection); + + Map> toConnections = null; + if(direction == ForgeDirection.UP) { + toConnections = toTopConnections; + } else if(direction == ForgeDirection.DOWN) { + toConnections = toBottomConnections; + } else { + toConnections = toHorizontalConnections; + } + + List namedConnections = toConnections.computeIfAbsent(ourName, name -> new ArrayList<>()); + namedConnections.add(connection); + + if(!StructureConfig.debugStructures) { + blockState = new BlockState(new BlockDefinition(replaceBlock, replaceMeta)); + } + } + } + + blockArray[pos.x][pos.y][pos.z] = blockState; + } + + + // MAP OUT CONNECTIONS + PRIORITIES + if(connections.size() > 0) { + fromConnections = new ArrayList<>(); + + connections.sort((a, b) -> a.selectionPriority - b.selectionPriority); // sort by descending priority, highest first + + // Sort out our from connections, splitting into individual lists for each priority level + List innerList = null; + int currentPriority = 0; + for(JigsawConnection connection : connections) { + if(innerList == null || currentPriority != connection.selectionPriority) { + innerList = new ArrayList<>(); + fromConnections.add(innerList); + currentPriority = connection.selectionPriority; + } + + innerList.add(connection); + } + } + + + + isLoaded = true; + + } catch(Exception e) { + MainRegistry.logger.error("Exception reading NBT Structure format", e); + } finally { + try { + inputStream.close(); + } catch(IOException e) { + // hush + } + } + } + + private HashMap getWorldItemPalette() { + if(itemPalette == null) return null; + + HashMap worldItemPalette = new HashMap<>(); + + for(Pair entry : itemPalette) { + Item item = (Item)Item.itemRegistry.getObject(entry.getValue()); + + worldItemPalette.put(entry.getKey(), (short)Item.getIdFromItem(item)); + } + + return worldItemPalette; + } + + private TileEntity buildTileEntity(World world, Block block, HashMap worldItemPalette, NBTTagCompound nbt, int coordBaseMode) { + nbt = (NBTTagCompound)nbt.copy(); + + if(worldItemPalette != null) relinkItems(worldItemPalette, nbt); + + TileEntity te = TileEntity.createAndLoadEntity(nbt); + + if(te instanceof INBTTileEntityTransformable) { + ((INBTTileEntityTransformable) te).transformTE(world, coordBaseMode); + } + + return te; + } + + public void build(World world, int x, int y, int z) { + build(world, x, y, z, 0); + } + + public void build(World world, int x, int y, int z, int coordBaseMode) { + if(!isLoaded) { + MainRegistry.logger.info("NBTStructure is invalid"); + return; + } + + HashMap worldItemPalette = getWorldItemPalette(); + + boolean swizzle = coordBaseMode == 1 || coordBaseMode == 3; + x -= (swizzle ? size.z : size.x) / 2; + z -= (swizzle ? size.x : size.z) / 2; + + int maxX = size.x; + int maxZ = size.z; + + for(int bx = 0; bx < maxX; bx++) { + for(int bz = 0; bz < maxZ; bz++) { + int rx = rotateX(bx, bz, coordBaseMode) + x; + int rz = rotateZ(bx, bz, coordBaseMode) + z; + + for(int by = 0; by < size.y; by++) { + BlockState state = blockArray[bx][by][bz]; + if(state == null) continue; + + int ry = by + y; + + Block block = transformBlock(state.definition, null, world.rand); + int meta = coordBaseMode != 0 ? transformMeta(state.definition, coordBaseMode) : state.definition.meta; + + world.setBlock(rx, ry, rz, block, meta, 2); + + if(state.nbt != null) { + TileEntity te = buildTileEntity(world, block, worldItemPalette, state.nbt, coordBaseMode); + world.setTileEntity(rx, ry, rz, te); + } + } + } + } + } + + protected boolean build(World world, JigsawPiece piece, StructureBoundingBox totalBounds, StructureBoundingBox generatingBounds, int coordBaseMode) { + if(!isLoaded) { + MainRegistry.logger.info("NBTStructure is invalid"); + return false; + } + + HashMap worldItemPalette = getWorldItemPalette(); + + int sizeX = totalBounds.maxX - totalBounds.minX; + int sizeZ = totalBounds.maxZ - totalBounds.minZ; + + // voxel grid transforms can fuck you up + // you have my respect, vaer + int absMinX = Math.max(generatingBounds.minX - totalBounds.minX, 0); + int absMaxX = Math.min(generatingBounds.maxX - totalBounds.minX, sizeX); + int absMinZ = Math.max(generatingBounds.minZ - totalBounds.minZ, 0); + int absMaxZ = Math.min(generatingBounds.maxZ - totalBounds.minZ, sizeZ); + + // A check to see that we're actually inside the generating area at all + if(absMinX > sizeX || absMaxX < 0 || absMinZ > sizeZ || absMaxZ < 0) return true; + + int rotMinX = unrotateX(absMinX, absMinZ, coordBaseMode); + int rotMaxX = unrotateX(absMaxX, absMaxZ, coordBaseMode); + int rotMinZ = unrotateZ(absMinX, absMinZ, coordBaseMode); + int rotMaxZ = unrotateZ(absMaxX, absMaxZ, coordBaseMode); + + int minX = Math.min(rotMinX, rotMaxX); + int maxX = Math.max(rotMinX, rotMaxX); + int minZ = Math.min(rotMinZ, rotMaxZ); + int maxZ = Math.max(rotMinZ, rotMaxZ); + + for(int bx = minX; bx <= maxX; bx++) { + for(int bz = minZ; bz <= maxZ; bz++) { + int rx = rotateX(bx, bz, coordBaseMode) + totalBounds.minX; + int rz = rotateZ(bx, bz, coordBaseMode) + totalBounds.minZ; + int oy = piece.conformToTerrain ? world.getTopSolidOrLiquidBlock(rx, rz) + piece.heightOffset : totalBounds.minY; + + for(int by = 0; by < size.y; by++) { + BlockState state = blockArray[bx][by][bz]; + if(state == null) continue; + + int ry = by + oy; + + Block block = transformBlock(state.definition, piece.blockTable, world.rand); + int meta = coordBaseMode != 0 ? transformMeta(state.definition, coordBaseMode) : state.definition.meta; + + world.setBlock(rx, ry, rz, block, meta, 2); + + if(state.nbt != null) { + TileEntity te = buildTileEntity(world, block, worldItemPalette, state.nbt, coordBaseMode); + world.setTileEntity(rx, ry, rz, te); + } + } + } + } + + return true; + } + + // What a fucken mess, why even implement the IntArray NBT if ye aint gonna use it Moe Yang? + private ThreeInts parsePos(NBTTagList pos) { + NBTBase xb = (NBTBase)pos.tagList.get(0); + int x = ((NBTTagInt)xb).func_150287_d(); + NBTBase yb = (NBTBase)pos.tagList.get(1); + int y = ((NBTTagInt)yb).func_150287_d(); + NBTBase zb = (NBTBase)pos.tagList.get(2); + int z = ((NBTTagInt)zb).func_150287_d(); + + return new ThreeInts(x, y, z); + } + + // NON-STANDARD, items are serialized with IDs, which will differ from world to world! + // So our fixed exporter adds an itemPalette, please don't hunt me down for fucking with the spec + private void relinkItems(HashMap palette, NBTTagCompound nbt) { + NBTTagList items = null; + if(nbt.hasKey("items")) + items = nbt.getTagList("items", NBT.TAG_COMPOUND); + if(nbt.hasKey("Items")) + items = nbt.getTagList("Items", NBT.TAG_COMPOUND); + + if(items == null) return; + + for(int i = 0; i < items.tagCount(); i++) { + NBTTagCompound item = items.getCompoundTagAt(i); + item.setShort("id", palette.get(item.getShort("id"))); + } + } + + private Block transformBlock(BlockDefinition definition, Map blockTable, Random rand) { + if(blockTable != null && blockTable.containsKey(definition.block)) { + final BlockSelector selector = blockTable.get(definition.block); + selector.selectBlocks(rand, 0, 0, 0, false); // fuck the vanilla shit idc + return selector.func_151561_a(); + } + + if(definition.block instanceof INBTTransformable) return ((INBTTransformable) definition.block).transformBlock(definition.block); + + return definition.block; + } + + private int transformMeta(BlockDefinition definition, int coordBaseMode) { + // Our shit + if(definition.block instanceof INBTTransformable) return ((INBTTransformable) definition.block).transformMeta(definition.meta, coordBaseMode); + + // Vanilla shit + if(definition.block instanceof BlockStairs) return INBTTransformable.transformMetaStairs(definition.meta, coordBaseMode); + if(definition.block instanceof BlockRotatedPillar) return INBTTransformable.transformMetaPillar(definition.meta, coordBaseMode); + if(definition.block instanceof BlockDirectional) return INBTTransformable.transformMetaDirectional(definition.meta, coordBaseMode); + if(definition.block instanceof BlockTorch) return INBTTransformable.transformMetaTorch(definition.meta, coordBaseMode); + if(definition.block instanceof BlockButton) return INBTTransformable.transformMetaTorch(definition.meta, coordBaseMode); + if(definition.block instanceof BlockDoor) return INBTTransformable.transformMetaDoor(definition.meta, coordBaseMode); + if(definition.block instanceof BlockLever) return INBTTransformable.transformMetaLever(definition.meta, coordBaseMode); + if(definition.block instanceof BlockSign) return INBTTransformable.transformMetaDeco(definition.meta, coordBaseMode); + if(definition.block instanceof BlockLadder) return INBTTransformable.transformMetaDeco(definition.meta, coordBaseMode); + + return definition.meta; + } + + private int rotateX(int x, int z, int coordBaseMode) { + switch(coordBaseMode) { + case 1: return size.z - 1 - z; + case 2: return size.x - 1 - x; + case 3: return z; + default: return x; + } + } + + private int rotateZ(int x, int z, int coordBaseMode) { + switch(coordBaseMode) { + case 1: return x; + case 2: return size.z - 1 - z; + case 3: return size.x - 1 - x; + default: return z; + } + } + + private int unrotateX(int x, int z, int coordBaseMode) { + switch(coordBaseMode) { + case 3: return size.x - 1 - z; + case 2: return size.x - 1 - x; + case 1: return z; + default: return x; + } + } + + private int unrotateZ(int x, int z, int coordBaseMode) { + switch(coordBaseMode) { + case 3: return x; + case 2: return size.z - 1 - z; + case 1: return size.z - 1 - x; + default: return z; + } + } + + private static class BlockState { + + final BlockDefinition definition; + NBTTagCompound nbt; + + BlockState(BlockDefinition definition) { + this.definition = definition; + } + + } + + private static class BlockDefinition { + + final Block block; + final int meta; + + BlockDefinition(String name, int meta) { + Block block = Block.getBlockFromName(name); + if(block == null) block = Blocks.air; + + this.block = block; + this.meta = meta; + } + + } + + public static class SpawnCondition { + + // If defined, will spawn a single jigsaw piece, for single nbt structures + public JigsawPiece structure; + + // If defined, will spawn in a non-nbt structure component + public Function, StructureStart> start; + + public Predicate canSpawn; + public int spawnWeight = 1; + + // Named jigsaw pools that are referenced within the structure + public Map pools; + public String startPool; + + // Maximum amount of components in this structure + public int sizeLimit = 8; + + // How far the structure can extend horizontally from the center, maximum of 128 + // This could be increased by changing GenStructure:range from 8, but this is already quite reasonably large + public int rangeLimit = 128; + + // Height modifiers, will clamp height that the start generates at, allowing for: + // * Submarines that must spawn under the ocean surface + // * Bunkers that sit underneath the ground + public int minHeight = 1; + public int maxHeight = 128; + + // Can this spawn in the current biome + protected boolean isValid(BiomeGenBase biome) { + if(canSpawn == null) return true; + return canSpawn.test(biome); + } + + protected JigsawPool getPool(String name) { + return pools.get(name).clone(); + } + + } + + // A set of pieces with weights + public static class JigsawPool { + + // Weighted list of pieces to pick from + private List> pieces = new ArrayList<>(); + private int totalWeight = 0; + + public String fallback; + + private boolean isClone; + + public void add(JigsawPiece piece, int weight) { + if(weight <= 0) throw new IllegalStateException("JigsawPool spawn weight must be positive!"); + pieces.add(new Pair<>(piece, weight)); + totalWeight += weight; + } + + protected JigsawPool clone() { + JigsawPool clone = new JigsawPool(); + clone.pieces = new ArrayList<>(this.pieces); + clone.fallback = this.fallback; + clone.totalWeight = this.totalWeight; + clone.isClone = true; + + return clone; + } + + // If from a clone, will remove from the pool + public JigsawPiece get(Random rand) { + if(totalWeight <= 0) return null; + int weight = rand.nextInt(totalWeight); + + for(int i = 0; i < pieces.size(); i++) { + Pair pair = pieces.get(i); + weight -= pair.getValue(); + + if(weight < 0) { + if(isClone) { + pieces.remove(i); + totalWeight -= pair.getValue(); + } + + return pair.getKey(); + } + } + + return null; + } + + } + + // Assigned to a Component to build + public static class JigsawPiece { + + public final String name; + public final NBTStructure structure; + + // Block modifiers, for randomization and terrain matching + public Map blockTable; + public boolean conformToTerrain = false; // moves every single column to the terrain (digging out trenches, natural formations) + public boolean alignToTerrain = false; // aligns this component y-level individually, without moving individual columns (village houses) + public int heightOffset = 0; // individual offset for the structure + + public JigsawPiece(String name, NBTStructure structure) { + this(name, structure, 0); + } + + public JigsawPiece(String name, NBTStructure structure, int heightOffset) { + if(name == null) throw new IllegalStateException("A severe error has occurred in NBTStructure! A jigsaw piece has been registered without a valid name!"); + if(jigsawMap.containsKey(name)) throw new IllegalStateException("A severe error has occurred in NBTStructure! A jigsaw piece has been registered with the same name as another: " + name); + + this.name = name; + this.structure = structure; + jigsawMap.put(name, this); + + this.heightOffset = heightOffset; + } + + } + + // Each jigsaw block in a structure will instance one of these + private static class JigsawConnection { + + private final ThreeInts pos; + private final ForgeDirection dir; + + // what pool should we look through to find a connection + private final String poolName; + + // when we successfully find a pool, what connections in that jigsaw piece can we target + private final String targetName; + + private final boolean isRollable; + + private final int selectionPriority; + private final int placementPriority; + + private JigsawConnection(ThreeInts pos, ForgeDirection dir, String poolName, String targetName, boolean isRollable, int selectionPriority, int placementPriority) { + this.pos = pos; + this.dir = dir; + this.poolName = poolName; + this.targetName = targetName; + this.isRollable = isRollable; + this.selectionPriority = selectionPriority; + this.placementPriority = placementPriority; + } + + } + + public static class Component extends StructureComponent { + + JigsawPiece piece; + + int minHeight = 1; + int maxHeight = 128; + + boolean heightUpdated = false; + + int priority; // placement priority not yet implemented because selection priority is far more useful whatever + + // this is fucking hacky but we need a way to update ALL component bounds once a Y-level is determined + private Start parent; + + private JigsawConnection connectedFrom; + + public Component() {} + + public Component(SpawnCondition spawn, JigsawPiece piece, Random rand, int x, int z) { + this(spawn, piece, rand, x, 0, z, rand.nextInt(4)); + } + + public Component(SpawnCondition spawn, JigsawPiece piece, Random rand, int x, int y, int z, int coordBaseMode) { + super(0); + this.coordBaseMode = coordBaseMode; + this.piece = piece; + this.minHeight = spawn.minHeight; + this.maxHeight = spawn.maxHeight; + + switch(this.coordBaseMode) { + case 1: + case 3: + this.boundingBox = new StructureBoundingBox(x, y, z, x + piece.structure.size.z - 1, y + piece.structure.size.y - 1, z + piece.structure.size.x - 1); + break; + default: + this.boundingBox = new StructureBoundingBox(x, y, z, x + piece.structure.size.x - 1, y + piece.structure.size.y - 1, z + piece.structure.size.z - 1); + break; + } + } + + public Component connectedFrom(JigsawConnection connection) { + this.connectedFrom = connection; + return this; + } + + // Save to NBT + @Override + protected void func_143012_a(NBTTagCompound nbt) { + nbt.setString("piece", piece.name); + nbt.setInteger("min", minHeight); + nbt.setInteger("max", maxHeight); + nbt.setBoolean("hasHeight", heightUpdated); + } + + // Load from NBT + @Override + protected void func_143011_b(NBTTagCompound nbt) { + piece = jigsawMap.get(nbt.getString("piece")); + minHeight = nbt.getInteger("min"); + maxHeight = nbt.getInteger("max"); + heightUpdated = nbt.getBoolean("hasHeight"); + } + + @Override + public boolean addComponentParts(World world, Random rand, StructureBoundingBox box) { + if(piece == null) return false; + + // now we're in the world, update minY/maxY + if(!piece.conformToTerrain && !heightUpdated) { + int y = MathHelper.clamp_int(getAverageHeight(world, box) + piece.heightOffset, minHeight, maxHeight); + + if(!piece.alignToTerrain && parent != null) { + parent.offsetYHeight(y); + } else { + offsetYHeight(y); + } + } + + return piece.structure.build(world, piece, boundingBox, box, coordBaseMode); + } + + public void offsetYHeight(int y) { + boundingBox.minY += y; + boundingBox.maxY += y; + + heightUpdated = true; + } + + // Overrides to fix Mojang's fucked rotations which FLIP instead of rotating in two instances + // vaer being in the mines doing this the hard way for years was absolutely not for naught + @Override + protected int getXWithOffset(int x, int z) { + return boundingBox.minX + piece.structure.rotateX(x, z, coordBaseMode); + } + + @Override + protected int getYWithOffset(int y) { + return boundingBox.minY + y; + } + + @Override + protected int getZWithOffset(int x, int z) { + return boundingBox.minZ + piece.structure.rotateZ(x, z, coordBaseMode); + } + + private ForgeDirection rotateDir(ForgeDirection dir) { + if(dir == ForgeDirection.UP || dir == ForgeDirection.DOWN) return dir; + switch(coordBaseMode) { + default: return dir; + case 1: return dir.getRotation(ForgeDirection.UP); + case 2: return dir.getOpposite(); + case 3: return dir.getRotation(ForgeDirection.DOWN); + } + } + + private int getAverageHeight(World world, StructureBoundingBox box) { + int total = 0; + int iterations = 0; + + for(int z = box.minZ; z <= box.maxZ; z++) { + for(int x = box.minX; x <= box.maxX; x++) { + total += world.getTopSolidOrLiquidBlock(x, z); + iterations++; + } + } + + if(iterations == 0) + return 64; + + return total / iterations; + } + + private int getNextCoordBase(JigsawConnection fromConnection, JigsawConnection toConnection, Random rand) { + if(fromConnection.dir == ForgeDirection.DOWN || fromConnection.dir == ForgeDirection.UP) { + if(fromConnection.isRollable) return rand.nextInt(4); + return coordBaseMode; + } + + return directionOffsetToCoordBase(fromConnection.dir.getOpposite(), toConnection.dir); + } + + private int directionOffsetToCoordBase(ForgeDirection from, ForgeDirection to) { + for(int i = 0; i < 4; i++) { + if(from == to) return (i + coordBaseMode) % 4; + from = from.getRotation(ForgeDirection.DOWN); + } + return coordBaseMode; + } + + protected boolean hasIntersectionIgnoringSelf(LinkedList components, StructureBoundingBox box) { + for(StructureComponent component : components) { + if(component == this) continue; + if(component.getBoundingBox() == null) continue; + + if(component.getBoundingBox().intersectsWith(box)) return true; + } + + return false; + } + + } + + public static class Start extends StructureStart { + + public Start() {} + + @SuppressWarnings("unchecked") + public Start(World world, Random rand, SpawnCondition spawn, int chunkX, int chunkZ) { + super(chunkX, chunkZ); + + int x = chunkX << 4; + int z = chunkZ << 4; + + JigsawPiece startPiece = spawn.structure != null ? spawn.structure : spawn.pools.get(spawn.startPool).get(rand); + + Component startComponent = new Component(spawn, startPiece, rand, x, z); + startComponent.parent = this; + + components.add(startComponent); + + List queuedComponents = new ArrayList<>(); + if(spawn.structure == null) queuedComponents.add(startComponent); + + // Iterate through and build out all the components we intend to spawn + while(!queuedComponents.isEmpty()) { + final int i = rand.nextInt(queuedComponents.size()); + Component fromComponent = queuedComponents.remove(i); + + if(fromComponent.piece.structure.fromConnections == null) continue; + + int distance = getDistanceTo(fromComponent.getBoundingBox()); + boolean fallbacksOnly = this.components.size() >= spawn.sizeLimit || distance >= spawn.rangeLimit; + + for(List unshuffledList : fromComponent.piece.structure.fromConnections) { + List connectionList = new ArrayList<>(unshuffledList); + Collections.shuffle(connectionList, rand); + + for(JigsawConnection fromConnection : connectionList) { + if(fromComponent.connectedFrom == fromConnection) continue; // if we already connected to this piece, don't process + + if(fallbacksOnly) { + String fallback = spawn.pools.get(fromConnection.poolName).fallback; + + if(fallback != null) { + Component fallbackComponent = buildNextComponent(rand, spawn, spawn.pools.get(fallback), fromComponent, fromConnection); + addComponent(fallbackComponent, fromConnection.placementPriority); + } + + continue; + } + + JigsawPool nextPool = spawn.getPool(fromConnection.poolName); + + Component nextComponent = null; + + // Iterate randomly through the pool, attempting each piece until one fits + while(nextPool.totalWeight > 0) { + nextComponent = buildNextComponent(rand, spawn, nextPool, fromComponent, fromConnection); + if(nextComponent != null && !fromComponent.hasIntersectionIgnoringSelf(components, nextComponent.getBoundingBox())) break; + nextComponent = null; + } + + if(nextComponent != null) { + addComponent(nextComponent, fromConnection.placementPriority); + queuedComponents.add(nextComponent); + } else { + // If we failed to fit anything in, grab something from the fallback pool, ignoring bounds check + if(nextPool.fallback != null) { + nextComponent = buildNextComponent(rand, spawn, spawn.pools.get(nextPool.fallback), fromComponent, fromConnection); + addComponent(nextComponent, fromConnection.placementPriority); // don't add to queued list, we don't want to try continue from fallback + } + } + } + } + } + + if(GeneralConfig.enableDebugMode) { + MainRegistry.logger.info("[Debug] Spawning NBT structure with " + components.size() + " piece(s) at: " + chunkX * 16 + ", " + chunkZ * 16); + String componentList = "[Debug] Components: "; + for(Object component : this.components) { + componentList += ((Component) component).piece.structure.name + " "; + } + MainRegistry.logger.info(componentList); + } + + updateBoundingBox(); + } + + @SuppressWarnings("unchecked") + private void addComponent(Component component, int placementPriority) { + components.add(component); + + component.parent = this; + component.priority = placementPriority; + } + + private Component buildNextComponent(Random rand, SpawnCondition spawn, JigsawPool pool, Component fromComponent, JigsawConnection fromConnection) { + JigsawPiece nextPiece = pool.get(rand); + if(nextPiece == null) return null; + + List connectionPool = getConnectionPool(nextPiece, fromConnection); + if(connectionPool == null) return null; + + JigsawConnection toConnection = connectionPool.get(rand.nextInt(connectionPool.size())); + + // The direction this component is extending towards in ABSOLUTE direction + ForgeDirection extendDir = fromComponent.rotateDir(fromConnection.dir); + + // Rotate our incoming piece to plug it in + int nextCoordBase = fromComponent.getNextCoordBase(fromConnection, toConnection, rand); + + // Set the starting point for the next structure to the location of the connector block + int nextX = fromComponent.getXWithOffset(fromConnection.pos.x, fromConnection.pos.z) + extendDir.offsetX; + int nextY = fromComponent.getYWithOffset(fromConnection.pos.y) + extendDir.offsetY; + int nextZ = fromComponent.getZWithOffset(fromConnection.pos.x, fromConnection.pos.z) + extendDir.offsetZ; + + // offset the starting point to the connecting point + nextX -= nextPiece.structure.rotateX(toConnection.pos.x, toConnection.pos.z, nextCoordBase); + nextY -= toConnection.pos.y; + nextZ -= nextPiece.structure.rotateZ(toConnection.pos.x, toConnection.pos.z, nextCoordBase); + + return new Component(spawn, nextPiece, rand, nextX, nextY, nextZ, nextCoordBase).connectedFrom(toConnection); + } + + private List getConnectionPool(JigsawPiece nextPiece, JigsawConnection fromConnection) { + if(fromConnection.dir == ForgeDirection.DOWN) { + return nextPiece.structure.toTopConnections.get(fromConnection.targetName); + } else if(fromConnection.dir == ForgeDirection.UP) { + return nextPiece.structure.toBottomConnections.get(fromConnection.targetName); + } + + return nextPiece.structure.toHorizontalConnections.get(fromConnection.targetName); + } + + private int getDistanceTo(StructureBoundingBox box) { + int x = box.getCenterX(); + int z = box.getCenterZ(); + + return Math.max(Math.abs(x - (func_143019_e() << 4)), Math.abs(z - (func_143018_f() << 4))); + } + + // post loading, update parent reference for loaded components + @Override + public void func_143017_b(NBTTagCompound nbt) { + for(Object o : components) { + ((Component) o).parent = this; + } + } + + public void offsetYHeight(int y) { + for(Object o : components) { + Component component = (Component) o; + if(component.heightUpdated || component.piece.conformToTerrain || component.piece.alignToTerrain) continue; + component.offsetYHeight(y); + } + } + + } + + public static class GenStructure extends MapGenStructure { + + private SpawnCondition nextSpawn; + + public void generateStructures(World world, Random rand, IChunkProvider chunkProvider, int chunkX, int chunkZ) { + Block[] ablock = new Block[65536]; + + func_151539_a(chunkProvider, world, chunkX, chunkZ, ablock); + generateStructuresInChunk(world, rand, chunkX, chunkZ); + } + + @Override + public String func_143025_a() { + return "NBTStructures"; + } + + @Override + protected boolean canSpawnStructureAtCoords(int chunkX, int chunkZ) { + if(!weightedMap.containsKey(worldObj.provider.dimensionId)) return false; + + int x = chunkX; + int z = chunkZ; + + if(x < 0) x -= StructureConfig.structureMaxChunks - 1; + if(z < 0) z -= StructureConfig.structureMaxChunks - 1; + + x /= StructureConfig.structureMaxChunks; + z /= StructureConfig.structureMaxChunks; + rand.setSeed((long)x * 341873128712L + (long)z * 132897987541L + this.worldObj.getWorldInfo().getSeed() + (long)996996996 - worldObj.provider.dimensionId); + x *= StructureConfig.structureMaxChunks; + z *= StructureConfig.structureMaxChunks; + x += rand.nextInt(StructureConfig.structureMaxChunks - StructureConfig.structureMinChunks); + z += rand.nextInt(StructureConfig.structureMaxChunks - StructureConfig.structureMinChunks); + + if(chunkX == x && chunkZ == z) { + BiomeGenBase biome = this.worldObj.getWorldChunkManager().getBiomeGenAt(chunkX * 16 + 8, chunkZ * 16 + 8); + + nextSpawn = findSpawn(biome); + + return nextSpawn != null && (nextSpawn.pools != null || nextSpawn.start != null || nextSpawn.structure != null); + } + + return false; + } + + @Override + protected StructureStart getStructureStart(int chunkX, int chunkZ) { + if(nextSpawn.start != null) return nextSpawn.start.apply(new Quartet(this.worldObj, this.rand, chunkX, chunkZ)); + return new Start(this.worldObj, this.rand, nextSpawn, chunkX, chunkZ); + } + + private SpawnCondition findSpawn(BiomeGenBase biome) { + List spawnList = weightedMap.get(worldObj.provider.dimensionId); + + for(int i = 0; i < 64; i++) { + SpawnCondition spawn = spawnList.get(rand.nextInt(spawnList.size())); + if(spawn.isValid(biome)) return spawn; + } + + return null; + } + + } + +} diff --git a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java index 6fb9e7fd1..42ad900e4 100644 --- a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java +++ b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java @@ -1,8 +1,22 @@ package com.hbm.world.gen; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.Random; +import com.hbm.blocks.ModBlocks; import com.hbm.config.StructureConfig; +import com.hbm.main.StructureManager; +import com.hbm.world.gen.NBTStructure.JigsawPiece; +import com.hbm.world.gen.NBTStructure.JigsawPool; +import com.hbm.world.gen.NBTStructure.SpawnCondition; +import com.hbm.world.gen.component.BunkerComponents.BunkerStart; +import com.hbm.world.gen.component.Component.CrabSpawners; +import com.hbm.world.gen.component.Component.GreenOoze; +import com.hbm.world.gen.component.Component.MeteorBricks; +import com.hbm.world.gen.component.Component.SupplyCrates; import cpw.mods.fml.common.IWorldGenerator; import cpw.mods.fml.common.eventhandler.SubscribeEvent; @@ -10,125 +24,181 @@ import net.minecraft.block.Block; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.chunk.IChunkProvider; -import static net.minecraftforge.common.BiomeDictionary.*; +import net.minecraft.world.gen.structure.StructureComponent.BlockSelector; import net.minecraftforge.event.terraingen.InitMapGenEvent.EventType; import net.minecraftforge.event.terraingen.PopulateChunkEvent; -import static net.minecraftforge.event.terraingen.TerrainGen.*; +import net.minecraftforge.event.terraingen.TerrainGen; import net.minecraftforge.event.world.WorldEvent; public class NTMWorldGenerator implements IWorldGenerator { - private MapGenNTMFeatures scatteredFeatureGen = new MapGenNTMFeatures(); - + + boolean regTest = false; + + public NTMWorldGenerator() { + final List invalidBiomes = Arrays.asList(new BiomeGenBase[] {BiomeGenBase.ocean, BiomeGenBase.river, BiomeGenBase.frozenOcean, BiomeGenBase.frozenRiver, BiomeGenBase.deepOcean}); + + NBTStructure.registerStructure(0, new SpawnCondition() {{ + canSpawn = biome -> !invalidBiomes.contains(biome); + start = d -> new MapGenNTMFeatures.Start(d.getW(), d.getX(), d.getY(), d.getZ()); + spawnWeight = 14 * 4; + }}); + + NBTStructure.registerStructure(0, new SpawnCondition() {{ + canSpawn = biome -> !invalidBiomes.contains(biome); + start = d -> new BunkerStart(d.getW(), d.getX(), d.getY(), d.getZ()); + spawnWeight = 1 * 4; + }}); + + NBTStructure.registerStructure(0, new SpawnCondition() {{ + canSpawn = biome -> !biome.canSpawnLightningBolt() && biome.temperature >= 2F; + structure = new JigsawPiece("vertibird", StructureManager.vertibird, -3); + spawnWeight = 3 * 4; + }}); + + NBTStructure.registerStructure(0, new SpawnCondition() {{ + canSpawn = biome -> !biome.canSpawnLightningBolt() && biome.temperature >= 2F; + structure = new JigsawPiece("crashed_vertibird", StructureManager.crashed_vertibird, -10); + spawnWeight = 3 * 4; + }}); + + Map bricks = new HashMap() {{ + put(ModBlocks.meteor_brick, new MeteorBricks()); + }}; + Map crates = new HashMap() {{ + put(ModBlocks.meteor_brick, new MeteorBricks()); + put(ModBlocks.crate, new SupplyCrates()); + put(ModBlocks.meteor_spawner, new CrabSpawners()); + }}; + Map ooze = new HashMap() {{ + put(ModBlocks.meteor_brick, new MeteorBricks()); + put(ModBlocks.concrete_colored, new GreenOoze()); + }}; + + NBTStructure.registerStructure(0, new SpawnCondition() {{ + minHeight = 32; + maxHeight = 32; + sizeLimit = 128; + canSpawn = biome -> biome.rootHeight >= 0; + startPool = "start"; + pools = new HashMap() {{ + put("start", new JigsawPool() {{ + add(new JigsawPiece("meteor_core", StructureManager.meteor_core) {{ blockTable = bricks; }}, 1); + }}); + put("spike", new JigsawPool() {{ + add(new JigsawPiece("meteor_spike", StructureManager.meteor_spike) {{ heightOffset = -3; conformToTerrain = true; }}, 1); + }}); + put("default", new JigsawPool() {{ + add(new JigsawPiece("meteor_corner", StructureManager.meteor_corner) {{ blockTable = bricks; }}, 2); + add(new JigsawPiece("meteor_t", StructureManager.meteor_t) {{ blockTable = bricks; }}, 3); + add(new JigsawPiece("meteor_stairs", StructureManager.meteor_stairs) {{ blockTable = bricks; }}, 1); + add(new JigsawPiece("meteor_room_base_thru", StructureManager.meteor_room_base_thru) {{ blockTable = bricks; }}, 3); + add(new JigsawPiece("meteor_room_base_end", StructureManager.meteor_room_base_end) {{ blockTable = bricks; }}, 4); + fallback = "fallback"; + }}); + put("10room", new JigsawPool() {{ + add(new JigsawPiece("meteor_room_basic", StructureManager.meteor_room_basic) {{ blockTable = bricks; }}, 1); + add(new JigsawPiece("meteor_room_balcony", StructureManager.meteor_room_balcony) {{ blockTable = bricks; }}, 1); + add(new JigsawPiece("meteor_room_dragon", StructureManager.meteor_room_dragon) {{ blockTable = bricks; }}, 1); + add(new JigsawPiece("meteor_room_ladder", StructureManager.meteor_room_ladder) {{ blockTable = bricks; }}, 1); + add(new JigsawPiece("meteor_room_ooze", StructureManager.meteor_room_ooze) {{ blockTable = ooze; }}, 1); + add(new JigsawPiece("meteor_room_split", StructureManager.meteor_room_split) {{ blockTable = bricks; }}, 1); + add(new JigsawPiece("meteor_room_stairs", StructureManager.meteor_room_stairs) {{ blockTable = bricks; }}, 1); + add(new JigsawPiece("meteor_room_triple", StructureManager.meteor_room_triple) {{ blockTable = bricks; }}, 1); + fallback = "roomback"; + }}); + put("3x3loot", new JigsawPool() {{ + add(new JigsawPiece("meteor_3_bale", StructureManager.meteor_3_bale), 1); + add(new JigsawPiece("meteor_3_blank", StructureManager.meteor_3_blank), 1); + add(new JigsawPiece("meteor_3_block", StructureManager.meteor_3_block), 1); + add(new JigsawPiece("meteor_3_crab", StructureManager.meteor_3_crab), 1); + add(new JigsawPiece("meteor_3_crab_tesla", StructureManager.meteor_3_crab_tesla), 1); + add(new JigsawPiece("meteor_3_crate", StructureManager.meteor_3_crate), 1); + add(new JigsawPiece("meteor_3_dirt", StructureManager.meteor_3_dirt), 1); + add(new JigsawPiece("meteor_3_lead", StructureManager.meteor_3_lead), 1); + add(new JigsawPiece("meteor_3_ooze", StructureManager.meteor_3_ooze), 1); + add(new JigsawPiece("meteor_3_pillar", StructureManager.meteor_3_pillar), 1); + add(new JigsawPiece("meteor_3_star", StructureManager.meteor_3_star), 1); + add(new JigsawPiece("meteor_3_tesla", StructureManager.meteor_3_tesla), 1); + add(new JigsawPiece("meteor_3_book", StructureManager.meteor_3_book), 1); + add(new JigsawPiece("meteor_3_mku", StructureManager.meteor_3_mku), 1); + add(new JigsawPiece("meteor_3_statue", StructureManager.meteor_3_statue), 1); + add(new JigsawPiece("meteor_3_glow", StructureManager.meteor_3_glow), 1); + fallback = "3x3loot"; // generate loot even if we're at the size limit + }}); + put("headloot", new JigsawPool() {{ + add(new JigsawPiece("meteor_dragon_chest", StructureManager.meteor_dragon_chest) {{ blockTable = crates; }}, 1); + add(new JigsawPiece("meteor_dragon_tesla", StructureManager.meteor_dragon_tesla) {{ blockTable = crates; }}, 1); + add(new JigsawPiece("meteor_dragon_trap", StructureManager.meteor_dragon_trap) {{ blockTable = crates; }}, 1); + add(new JigsawPiece("meteor_dragon_crate_crab", StructureManager.meteor_dragon_crate_crab) {{ blockTable = crates; }}, 1); + fallback = "headback"; + }}); + put("fallback", new JigsawPool() {{ + add(new JigsawPiece("meteor_fallback", StructureManager.meteor_fallback) {{ blockTable = bricks; }}, 1); + }}); + put("roomback", new JigsawPool() {{ + add(new JigsawPiece("meteor_room_fallback", StructureManager.meteor_room_fallback) {{ blockTable = bricks; }}, 1); + }}); + put("headback", new JigsawPool() {{ + add(new JigsawPiece("meteor_loot_fallback", StructureManager.meteor_dragon_fallback) {{ blockTable = crates; }}, 1); + }}); + }}; + }}); + } + + private NBTStructure.GenStructure nbtGen = new NBTStructure.GenStructure(); + private final Random rand = new Random(); //A central random, used to cleanly generate our stuff without affecting vanilla or modded seeds. - + /** Inits all MapGen upon the loading of a new world. Hopefully clears out structureMaps and structureData when a different world is loaded. */ @SubscribeEvent public void onLoad(WorldEvent.Load event) { - scatteredFeatureGen = (MapGenNTMFeatures) getModdedMapGen(new MapGenNTMFeatures(), EventType.CUSTOM); - + nbtGen = (NBTStructure.GenStructure) TerrainGen.getModdedMapGen(new NBTStructure.GenStructure(), EventType.CUSTOM); + hasPopulationEvent = false; } - + /** Called upon the initial population of a chunk. Called in the pre-population event first; called again if pre-population didn't occur (flatland) */ private void setRandomSeed(World world, int chunkX, int chunkZ) { - rand.setSeed(world.getSeed()); + rand.setSeed(world.getSeed() + world.provider.dimensionId); final long i = rand.nextLong() / 2L * 2L + 1L; final long j = rand.nextLong() / 2L * 2L + 1L; rand.setSeed((long)chunkX * i + (long)chunkZ * j ^ world.getSeed()); } - + /* * Pre-population Events / Structure Generation * Used to generate structures without unnecessary intrusion by biome decoration, like trees. */ - + private boolean hasPopulationEvent = false; // Does the given chunkGenerator have a population event? If not (flatlands), default to using generate. - + @SubscribeEvent public void generateStructures(PopulateChunkEvent.Pre event) { - setRandomSeed(event.world, event.chunkX, event.chunkZ); //Set random for population down the line. hasPopulationEvent = true; - + if(StructureConfig.enableStructures == 0) return; if(StructureConfig.enableStructures == 2 && !event.world.getWorldInfo().isMapFeaturesEnabled()) return; - - switch (event.world.provider.dimensionId) { - case -1: - break; - case 0: - generateOverworldStructures(event.world, event.chunkProvider, event.chunkX, event.chunkZ); - break; - case 1: - break; - } + + setRandomSeed(event.world, event.chunkX, event.chunkZ); //Set random for population down the line. + + nbtGen.generateStructures(event.world, rand, event.chunkProvider, event.chunkX, event.chunkZ); } - - protected void generateOverworldStructures(World world, IChunkProvider chunkProvider, int chunkX, int chunkZ) { - Block[] ablock = new Block[65536]; //ablock isn't actually used for anything in MapGenStructure - - this.scatteredFeatureGen.func_151539_a(chunkProvider, world, chunkX, chunkZ, ablock); - this.scatteredFeatureGen.generateStructuresInChunk(world, rand, chunkX, chunkZ); - } - + /* * Post-Vanilla / Modded Generation * Used to generate features that don't care about intrusions (ores, craters, caves, etc.) */ - + @Override - public void generate(Random rand, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) { - - switch (world.provider.dimensionId) { - case -1: - generateNether(world, rand, chunkGenerator, chunkX, chunkZ); break; - case 0: - generateSurface(world, rand, chunkGenerator, chunkProvider, chunkX, chunkZ); break; - case 1: - generateEnd(world, rand, chunkGenerator, chunkX, chunkZ); break; - } - } - - private void generateNether(World world, Random rand, IChunkProvider chunkGenerator, int chunkX, int chunkZ) { } - - /* Overworld Generation */ - - private void generateSurface(World world, Random rand, IChunkProvider chunkGenerator, IChunkProvider chunkProvider, int chunkX, int chunkZ) { - if(!hasPopulationEvent) { //If we've failed to generate any structures (flatlands) - setRandomSeed(world, chunkX, chunkZ); //Reset the random seed to compensate - - boolean enableStructures = world.getWorldInfo().isMapFeaturesEnabled(); - if(StructureConfig.enableStructures == 1) enableStructures = true; - if(StructureConfig.enableStructures == 0) enableStructures = false; + public void generate(Random unusedRandom, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) { + if(hasPopulationEvent) return; //If we've failed to generate any structures (flatlands) - if(enableStructures) generateOverworldStructures(world, chunkGenerator, chunkX, chunkZ); //Do it through the post-population generation directly - } - - /* biome dictionary my beloved <3 - * no check for tom here because the event handler already checks for decoration events, + this way they won't become permanently extinct. - */ - - /* Biome check, followed by chance, followed by event (for compat, both intra- and inter- (in the case of Tom). */ - - + if(StructureConfig.enableStructures == 0) return; + if(StructureConfig.enableStructures == 2 && !world.getWorldInfo().isMapFeaturesEnabled()) return; + + setRandomSeed(world, chunkX, chunkZ); //Reset the random seed to compensate + + nbtGen.generateStructures(world, rand, chunkProvider, chunkX, chunkZ); } - private void generateEnd(World world, Random rand, IChunkProvider chunkGenerator, int chunkX, int chunkZ) { } - - /** Utility method for biome checking multiple types exclusively. Not sure why it wasn't already present. */ - public static boolean isBiomeOfTypes(BiomeGenBase biome, Type... types) { //If new biomes are implemented, move this to any biome-related utility class. - for(Type type : types) { - if(!isBiomeOfType(biome, type)) return false; - } - - return true; - } - - /** utility method, same as above but inclusive. useful for catch-alls, like the dirty glass structures have */ - public static boolean doesBiomeHaveTypes(BiomeGenBase biome, Type... types) { - for(Type type : types) { - if(isBiomeOfType(biome, type)) return true; - } - - return false; - } } \ No newline at end of file diff --git a/src/main/java/com/hbm/world/gen/component/Component.java b/src/main/java/com/hbm/world/gen/component/Component.java index 0a652a6eb..80d85bcfd 100644 --- a/src/main/java/com/hbm/world/gen/component/Component.java +++ b/src/main/java/com/hbm/world/gen/component/Component.java @@ -12,6 +12,7 @@ import com.hbm.tileentity.machine.TileEntityLockableBase; import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; @@ -27,19 +28,19 @@ abstract public class Component extends StructureComponent { /** Average height (Presumably stands for height position) */ protected int hpos = -1; - + protected Component() { super(0); } - + protected Component(int componentType) { super(componentType); } - + protected Component(Random rand, int minX, int minY, int minZ, int maxX, int maxY, int maxZ ) { super(0); this.coordBaseMode = rand.nextInt(4); - + switch(this.coordBaseMode) { case 0: this.boundingBox = new StructureBoundingBox(minX, minY, minZ, minX + maxX, minY + maxY, minZ + maxZ); @@ -55,25 +56,25 @@ abstract public class Component extends StructureComponent { break; default: this.boundingBox = new StructureBoundingBox(minX, minY, minZ, minX + maxX, minY + maxY, minZ + maxZ); - + } } - + /** Set to NBT */ protected void func_143012_a(NBTTagCompound nbt) { nbt.setInteger("HPos", this.hpos); } - + /** Get from NBT */ protected void func_143011_b(NBTTagCompound nbt) { this.hpos = nbt.getInteger("HPos"); } - + protected boolean setAverageHeight(World world, StructureBoundingBox box, int y) { - + int total = 0; int iterations = 0; - + for(int z = this.boundingBox.minZ; z <= this.boundingBox.maxZ; z++) { for(int x = this.boundingBox.minX; x <= this.boundingBox.maxX; x++) { if(box.isVecInside(x, y, z)) { @@ -82,20 +83,20 @@ abstract public class Component extends StructureComponent { } } } - + if(iterations == 0) return false; - + this.hpos = total / iterations; //finds mean of every block in bounding box this.boundingBox.offset(0, this.hpos - this.boundingBox.minY, 0); return true; } - + protected static int getAverageHeight(World world, StructureBoundingBox area, StructureBoundingBox box, int y) { - + int total = 0; int iterations = 0; - + for(int z = area.minZ; z <= area.maxZ; z++) { for(int x = area.minX; x <= area.maxX; x++) { if(box.isVecInside(x, y, z)) { @@ -104,19 +105,19 @@ abstract public class Component extends StructureComponent { } } } - + if(iterations == 0) return -1; - + return total / iterations; } - + public int getCoordMode() { return this.coordBaseMode; } - + /** Metadata for Decoration Methods **/ - + /** * Gets metadata for rotatable pillars. * @param metadata (First two digits are equal to block metadata, other two are equal to orientation @@ -125,10 +126,10 @@ abstract public class Component extends StructureComponent { protected int getPillarMeta(int metadata) { if(this.coordBaseMode % 2 != 0 && this.coordBaseMode != -1) metadata = metadata ^ 12; - + return metadata; } - + /** * Gets metadata for rotatable DecoBlock * honestly i don't remember how i did this and i'm scared to optimize it because i fail to see any reasonable patterns like the pillar @@ -168,14 +169,14 @@ abstract public class Component extends StructureComponent { } return 0; } - + /** * Get orientation-offset metadata for BlockDecoModel; also suitable for trapdoors * @param metadata (0 for facing North, 1 for facing South, 2 for facing West, 3 for facing East) */ protected int getDecoModelMeta(int metadata) { //N: 0b00, S: 0b01, W: 0b10, E: 0b11 - + switch(this.coordBaseMode) { default: //South break; @@ -198,12 +199,12 @@ abstract public class Component extends StructureComponent { //genuinely like. why did i do that return metadata << 2; //To accommodate for BlockDecoModel's shift in the rotation bits; otherwise, simply bit-shift right and or any non-rotation meta after } - + //works for crts, toasters, and anything that follows mc's cardinal dirs. S: 0, W: 1, N: 2, E: 3 protected int getCRTMeta(int meta) { return (meta + this.coordBaseMode) % 4; } - + /** * Gets orientation-adjusted meta for stairs. * 0 = West, 1 = East, 2 = North, 3 = South @@ -228,11 +229,11 @@ abstract public class Component extends StructureComponent { metadata = metadata ^ 2; break; } - + return metadata; } - - /* + + /* * Assuming door is on opposite side of block from direction: East: 0, South: 1, West: 2, North: 3
* Doors cleverly take advantage of the use of two blocks to get around the 16 value limit on metadata, with the top and bottom blocks essentially relying on eachother for everything.
*
  • The 4th bit (0b1000 or 8) indicates whether it is the top block: on for yes, off for no. @@ -245,9 +246,9 @@ abstract public class Component extends StructureComponent { int posX = this.getXWithOffset(featureX, featureZ); int posY = this.getYWithOffset(featureY); int posZ = this.getZWithOffset(featureX, featureZ); - + if(!box.isVecInside(posX, posY, posZ)) return; - + switch(this.coordBaseMode) { default: //South break; @@ -258,11 +259,11 @@ abstract public class Component extends StructureComponent { case 3: //East dirMeta = (dirMeta + 3) % 4; break; //fuck you modulo } - + //hee hoo int metaTop = opensRight ? 0b1001 : 0b1000; int metaBottom = dirMeta | (isOpen ? 0b100 : 0); - + if(world.doesBlockHaveSolidTopSurface(world, posX, posY - 1, posZ)) { world.setBlock(posX, posY, posZ, door, metaBottom, 2); world.setBlock(posX, posY + 1, posZ, door, metaTop, 2); @@ -273,9 +274,9 @@ abstract public class Component extends StructureComponent { int posX = this.getXWithOffset(featureX, featureZ); int posY = this.getYWithOffset(featureY); int posZ = this.getZWithOffset(featureX, featureZ); - + if(!box.isVecInside(posX, posY, posZ)) return; - + if(dirMeta <= 0 || dirMeta >= 7) { //levers suck ass switch(this.coordBaseMode) { case 1: case 3: //west / east @@ -289,10 +290,10 @@ abstract public class Component extends StructureComponent { } else { dirMeta = getButtonMeta(dirMeta); } - + world.setBlock(posX, posY, posZ, Blocks.lever, on ? dirMeta | 8 : dirMeta, 2); } - + /** pain. works for side-facing levers as well */ protected int getButtonMeta(int dirMeta) { switch(this.coordBaseMode) { //are you ready for the pain? @@ -310,12 +311,12 @@ abstract public class Component extends StructureComponent { return dirMeta; } } - + /**N:0 W:1 S:2 E:3 */ protected void placeBed(World world, StructureBoundingBox box, int meta, int featureX, int featureY, int featureZ) { int xOffset = 0; int zOffset = 0; - + switch(meta & 3) { default: zOffset = 1; break; @@ -326,7 +327,7 @@ abstract public class Component extends StructureComponent { case 3: xOffset = 1; break; } - + switch(this.coordBaseMode) { default: //S break; @@ -337,11 +338,11 @@ abstract public class Component extends StructureComponent { case 3: //E meta = (meta - 1) % 4; break; } - + placeBlockAtCurrentPosition(world, Blocks.bed, meta, featureX, featureY, featureZ, box); placeBlockAtCurrentPosition(world, Blocks.bed, meta + 8, featureX + xOffset, featureY, featureZ + zOffset, box); } - + /**Tripwire Hook: S:0 W:1 N:2 E:3 */ protected int getTripwireMeta(int metadata) { switch(this.coordBaseMode) { @@ -355,10 +356,10 @@ abstract public class Component extends StructureComponent { return (metadata - 1) % 4; } } - - + + /** Loot Methods **/ - + /** * it feels disgusting to make a method with this many parameters but fuck it, it's easier * @return TE implementing IInventory with randomized contents @@ -366,29 +367,29 @@ abstract public class Component extends StructureComponent { protected boolean generateInvContents(World world, StructureBoundingBox box, Random rand, Block block, int featureX, int featureY, int featureZ, WeightedRandomChestContent[] content, int amount) { return generateInvContents(world, box, rand, block, 0, featureX, featureY, featureZ, content, amount); } - + //TODO: explore min / max item generations: e.g., between 3 and 5 separate items are generated protected boolean generateInvContents(World world, StructureBoundingBox box, Random rand, Block block, int meta, int featureX, int featureY, int featureZ, WeightedRandomChestContent[] content, int amount) { int posX = this.getXWithOffset(featureX, featureZ); int posY = this.getYWithOffset(featureY); int posZ = this.getZWithOffset(featureX, featureZ); - + if(!box.isVecInside(posX, posY, posZ) || world.getBlock(posX, posY, posZ) == block) //replacement for hasPlacedLoot checks return true; - + this.placeBlockAtCurrentPosition(world, block, meta, featureX, featureY, featureZ, box); IInventory inventory = (IInventory)world.getTileEntity(posX, posY, posZ); - + if(inventory != null) { amount = (int)Math.floor(amount * StructureConfig.lootAmountFactor); WeightedRandomChestContent.generateChestContents(rand, content, inventory, amount < 1 ? 1 : amount); return true; } - + return false; } - - + + /** * Block TE MUST extend TileEntityLockableBase, otherwise this will not work and crash! * @return TE implementing IInventory and extending TileEntityLockableBase with randomized contents + lock @@ -397,48 +398,48 @@ abstract public class Component extends StructureComponent { WeightedRandomChestContent[] content, int amount, double mod) { return generateLockableContents(world, box, rand, block, 0, featureX, featureY, featureZ, content, amount, mod); } - + protected boolean generateLockableContents(World world, StructureBoundingBox box, Random rand, Block block, int meta, int featureX, int featureY, int featureZ, WeightedRandomChestContent[] content, int amount, double mod) { int posX = this.getXWithOffset(featureX, featureZ); int posY = this.getYWithOffset(featureY); int posZ = this.getZWithOffset(featureX, featureZ); - + if(!box.isVecInside(posX, posY, posZ) || world.getBlock(posX, posY, posZ) == block) //replacement for hasPlacedLoot checks return false; - + this.placeBlockAtCurrentPosition(world, block, meta, featureX, featureY, featureZ, box); TileEntity tile = world.getTileEntity(posX, posY, posZ); TileEntityLockableBase lock = (TileEntityLockableBase) tile; IInventory inventory = (IInventory) tile; - + if(inventory != null && lock != null) { amount = (int)Math.floor(amount * StructureConfig.lootAmountFactor); WeightedRandomChestContent.generateChestContents(rand, content, inventory, amount < 1 ? 1 : amount); - + lock.setPins(rand.nextInt(999) + 1); lock.setMod(mod); lock.lock(); return true; } - + return false; } - + protected void generateLoreBook(World world, StructureBoundingBox box, int featureX, int featureY, int featureZ, int slot, ItemStack stack) { //kept for compat int posX = this.getXWithOffset(featureX, featureZ); int posY = this.getYWithOffset(featureY); int posZ = this.getZWithOffset(featureX, featureZ); - + if(!box.isVecInside(posX, posY, posZ)) return; - + IInventory inventory = (IInventory) world.getTileEntity(posX, posY, posZ); - + if(inventory != null) { inventory.setInventorySlotContents(slot, stack); } } - + /** * Places random bobblehead with a randomized orientation at specified location */ @@ -446,71 +447,71 @@ abstract public class Component extends StructureComponent { int posX = this.getXWithOffset(featureX, featureZ); int posY = this.getYWithOffset(featureY); int posZ = this.getZWithOffset(featureX, featureZ); - + placeBlockAtCurrentPosition(world, ModBlocks.bobblehead, rand.nextInt(16), featureX, featureY, featureZ, box); TileEntityBobble bobble = (TileEntityBobble) world.getTileEntity(posX, posY, posZ); - + if(bobble != null) { bobble.type = BobbleType.values()[rand.nextInt(BobbleType.values().length - 1) + 1]; bobble.markDirty(); } } - + /** Block Placement Utility Methods **/ - + /** * Places blocks underneath location until reaching a solid block; good for foundations */ protected void placeFoundationUnderneath(World world, Block placeBlock, int meta, int minX, int minZ, int maxX, int maxZ, int featureY, StructureBoundingBox box) { - + for(int featureX = minX; featureX <= maxX; featureX++) { for(int featureZ = minZ; featureZ <= maxZ; featureZ++) { int posX = this.getXWithOffset(featureX, featureZ); int posY = this.getYWithOffset(featureY); int posZ = this.getZWithOffset(featureX, featureZ); - + if(box.isVecInside(posX, posY, posZ)) { Block block = world.getBlock(posX, posY, posZ); int brake = 0; - - while ((world.isAirBlock(posX, posY, posZ) || - !block.getMaterial().isSolid() || - (block.isFoliage(world, posX, posY, posZ) || block.getMaterial() == Material.leaves)) && + + while ((world.isAirBlock(posX, posY, posZ) || + !block.getMaterial().isSolid() || + (block.isFoliage(world, posX, posY, posZ) || block.getMaterial() == Material.leaves)) && posY > 1 && brake <= 15) { world.setBlock(posX, posY, posZ, placeBlock, meta, 2); block = world.getBlock(posX, --posY, posZ); - + brake++; } } } } } - + /** * Places specified blocks on top of pre-existing blocks in a given area, up to a certain height. Does NOT place blocks on top of liquids. * Useful for stuff like fences and walls most likely. */ protected void placeBlocksOnTop(World world, StructureBoundingBox box, Block block, int minX, int minZ, int maxX, int maxZ, int height) { - + for(int x = minX; x <= maxX; x++) { for(int z = minZ; z <= maxZ; z++) { int posX = this.getXWithOffset(x, z); int posZ = this.getZWithOffset(x, z); int topHeight = world.getTopSolidOrLiquidBlock(posX, posZ); - + if(!world.getBlock(posX, topHeight, posZ).getMaterial().isLiquid()) { - + for(int i = 0; i < height; i++) { int posY = topHeight + i; - + world.setBlock(posX, posY, posZ, block, 0, 2); } } } } } - + /** getXWithOffset & getZWithOffset Methods that are actually fixed **/ //Turns out, this entire time every single minecraft structure is mirrored instead of rotated when facing East and North //Also turns out, it's a scarily easy fix that they somehow didn't see *entirely* @@ -529,7 +530,7 @@ abstract public class Component extends StructureComponent { return x; } } - + @Override public int getZWithOffset(int x, int z) { switch(this.coordBaseMode) { @@ -545,46 +546,46 @@ abstract public class Component extends StructureComponent { return z; } } - + /** Methods that are actually optimized, including ones that cut out replaceBlock and onlyReplace functionality when it's redundant. */ protected void fillWithAir(World world, StructureBoundingBox box, int minX, int minY, int minZ, int maxX, int maxY, int maxZ) { - + if(getYWithOffset(minY) < box.minY || getYWithOffset(maxY) > box.maxY) return; - + for(int x = minX; x <= maxX; x++) { //TODO these could technically be optimized a bit more. probably won't do anything but worth - + for(int z = minZ; z <= maxZ; z++) { int posX = getXWithOffset(x, z); int posZ = getZWithOffset(x, z); - + if(posX >= box.minX && posX <= box.maxX && posZ >= box.minZ && posZ <= box.maxZ) { for(int y = minY; y <= maxY; y++) { int posY = getYWithOffset(y); - + world.setBlock(posX, posY, posZ, Blocks.air, 0, 2); } } } } } - + @Override protected void fillWithBlocks(World world, StructureBoundingBox box, int minX, int minY, int minZ, int maxX, int maxY, int maxZ, Block block, Block replaceBlock, boolean onlyReplace) { - + if(getYWithOffset(minY) < box.minY || getYWithOffset(maxY) > box.maxY) return; - + for(int x = minX; x <= maxX; x++) { - + for(int z = minZ; z <= maxZ; z++) { int posX = getXWithOffset(x, z); int posZ = getZWithOffset(x, z); - + if(posX >= box.minX && posX <= box.maxX && posZ >= box.minZ && posZ <= box.maxZ) { for(int y = minY; y <= maxY; y++) { int posY = getYWithOffset(y); - + if(!onlyReplace || world.getBlock(posX, posY, posZ).getMaterial() != Material.air) { if(x != minX && x != maxX && y != minY && y != maxY && z != minZ && z != maxZ) world.setBlock(posX, posY, posZ, replaceBlock, 0, 2); @@ -596,49 +597,49 @@ abstract public class Component extends StructureComponent { } } } - + protected void fillWithBlocks(World world, StructureBoundingBox box, int minX, int minY, int minZ, int maxX, int maxY, int maxZ, Block block) { - + if(getYWithOffset(minY) < box.minY || getYWithOffset(maxY) > box.maxY) return; - + for(int x = minX; x <= maxX; x++) { - + for(int z = minZ; z <= maxZ; z++) { int posX = getXWithOffset(x, z); int posZ = getZWithOffset(x, z); - + if(posX >= box.minX && posX <= box.maxX && posZ >= box.minZ && posZ <= box.maxZ) { for(int y = minY; y <= maxY; y++) { int posY = getYWithOffset(y); - + world.setBlock(posX, posY, posZ, block, 0, 2); } } } } } - + @Override protected void fillWithMetadataBlocks(World world, StructureBoundingBox box, int minX, int minY, int minZ, int maxX, int maxY, int maxZ, Block block, int meta, Block replaceBlock, int replaceMeta, boolean onlyReplace) { - + if(getYWithOffset(minY) < box.minY || getYWithOffset(maxY) > box.maxY) return; - + for(int x = minX; x <= maxX; x++) { - + for(int z = minZ; z <= maxZ; z++) { int posX = getXWithOffset(x, z); int posZ = getZWithOffset(x, z); - + if(posX >= box.minX && posX <= box.maxX && posZ >= box.minZ && posZ <= box.maxZ) { for(int y = minY; y <= maxY; y++) { int posY = getYWithOffset(y); - + if(!onlyReplace || world.getBlock(posX, posY, posZ).getMaterial() != Material.air) { if(x != minX && x != maxX && y != minY && y != maxY && z != minZ && z != maxZ) world.setBlock(posX, posY, posZ, replaceBlock, replaceMeta, 2); - else + else world.setBlock(posX, posY, posZ, block, meta, 2); } } @@ -646,45 +647,45 @@ abstract public class Component extends StructureComponent { } } } - + protected void fillWithMetadataBlocks(World world, StructureBoundingBox box, int minX, int minY, int minZ, int maxX, int maxY, int maxZ, Block block, int meta) { - + if(getYWithOffset(minY) < box.minY || getYWithOffset(maxY) > box.maxY) return; - + for(int x = minX; x <= maxX; x++) { - + for(int z = minZ; z <= maxZ; z++) { int posX = getXWithOffset(x, z); int posZ = getZWithOffset(x, z); - + if(posX >= box.minX && posX <= box.maxX && posZ >= box.minZ && posZ <= box.maxZ) { for(int y = minY; y <= maxY; y++) { int posY = getYWithOffset(y); - + world.setBlock(posX, posY, posZ, block, meta, 2); } } } } } - + @Override protected void fillWithRandomizedBlocks(World world, StructureBoundingBox box, int minX, int minY, int minZ, int maxX, int maxY, int maxZ, boolean onlyReplace, Random rand, BlockSelector selector) { - + if(getYWithOffset(minY) < box.minY || getYWithOffset(maxY) > box.maxY) return; - + for(int x = minX; x <= maxX; x++) { - + for(int z = minZ; z <= maxZ; z++) { int posX = getXWithOffset(x, z); int posZ = getZWithOffset(x, z); - + if(posX >= box.minX && posX <= box.maxX && posZ >= box.minZ && posZ <= box.maxZ) { for(int y = minY; y <= maxY; y++) { int posY = getYWithOffset(y); - + if(!onlyReplace || world.getBlock(posX, posY, posZ).getMaterial() != Material.air) { selector.selectBlocks(rand, posX, posY, posZ, x == minX || x == maxX || y == minY || y == maxY || z == minZ || z == maxZ); world.setBlock(posX, posY, posZ, selector.func_151561_a(), selector.getSelectedBlockMetaData(), 2); @@ -696,16 +697,16 @@ abstract public class Component extends StructureComponent { } //TODO replace the shitty block selector with something else. probably a lambda that returns a metablock for convenience protected void fillWithRandomizedBlocks(World world, StructureBoundingBox box, int minX, int minY, int minZ, int maxX, int maxY, int maxZ, Random rand, BlockSelector selector) { //so i don't have to replace shit - + if(getYWithOffset(minY) < box.minY || getYWithOffset(maxY) > box.maxY) return; - + for(int x = minX; x <= maxX; x++) { - + for(int z = minZ; z <= maxZ; z++) { int posX = getXWithOffset(x, z); int posZ = getZWithOffset(x, z); - + if(posX >= box.minX && posX <= box.maxX && posZ >= box.minZ && posZ <= box.maxZ) { for(int y = minY; y <= maxY; y++) { int posY = getYWithOffset(y); @@ -717,19 +718,19 @@ abstract public class Component extends StructureComponent { } } } - + //stairs and shit protected void fillWithRandomizedBlocksMeta(World world, StructureBoundingBox box, int minX, int minY, int minZ, int maxX, int maxY, int maxZ, Random rand, BlockSelector selector, int meta) { - + if(getYWithOffset(minY) < box.minY || getYWithOffset(maxY) > box.maxY) return; - + for(int x = minX; x <= maxX; x++) { - + for(int z = minZ; z <= maxZ; z++) { int posX = getXWithOffset(x, z); int posZ = getZWithOffset(x, z); - + if(posX >= box.minX && posX <= box.maxX && posZ >= box.minZ && posZ <= box.maxZ) { for(int y = minY; y <= maxY; y++) { int posY = getYWithOffset(y); @@ -741,23 +742,23 @@ abstract public class Component extends StructureComponent { } } } - + @Override protected void randomlyFillWithBlocks(World world, StructureBoundingBox box, Random rand, float randLimit, int minX, int minY, int minZ, int maxX, int maxY, int maxZ, Block block, Block replaceBlock, boolean onlyReplace) { - + if(getYWithOffset(minY) < box.minY || getYWithOffset(maxY) > box.maxY) return; - + for(int x = minX; x <= maxX; x++) { - + for(int z = minZ; z <= maxZ; z++) { int posX = getXWithOffset(x, z); int posZ = getZWithOffset(x, z); - + if(posX >= box.minX && posX <= box.maxX && posZ >= box.minZ && posZ <= box.maxZ) { for(int y = minY; y <= maxY; y++) { int posY = getYWithOffset(y); - + if(rand.nextFloat() <= randLimit && (!onlyReplace || world.getBlock(posX, posY, posZ).getMaterial() != Material.air)) { if(x != minX && x != maxX && y != minY && y != maxY && z != minZ && z != maxZ) world.setBlock(posX, posY, posZ, replaceBlock, 0, 2); @@ -769,22 +770,22 @@ abstract public class Component extends StructureComponent { } } } - + protected void randomlyFillWithBlocks(World world, StructureBoundingBox box, Random rand, float randLimit, int minX, int minY, int minZ, int maxX, int maxY, int maxZ, Block block) { - + if(getYWithOffset(minY) < box.minY || getYWithOffset(maxY) > box.maxY) return; - + for(int x = minX; x <= maxX; x++) { - + for(int z = minZ; z <= maxZ; z++) { int posX = getXWithOffset(x, z); int posZ = getZWithOffset(x, z); - + if(posX >= box.minX && posX <= box.maxX && posZ >= box.minZ && posZ <= box.maxZ) { for(int y = minY; y <= maxY; y++) { int posY = getYWithOffset(y); - + if(rand.nextFloat() <= randLimit) world.setBlock(posX, posY, posZ, block, 0, 2); } @@ -792,22 +793,22 @@ abstract public class Component extends StructureComponent { } } } - + protected void randomlyFillWithBlocks(World world, StructureBoundingBox box, Random rand, float randLimit, int minX, int minY, int minZ, int maxX, int maxY, int maxZ, Block block, int meta) { - + if(getYWithOffset(minY) < box.minY || getYWithOffset(maxY) > box.maxY) return; - + for(int x = minX; x <= maxX; x++) { - + for(int z = minZ; z <= maxZ; z++) { int posX = getXWithOffset(x, z); int posZ = getZWithOffset(x, z); - + if(posX >= box.minX && posX <= box.maxX && posZ >= box.minZ && posZ <= box.maxZ) { for(int y = minY; y <= maxY; y++) { int posY = getYWithOffset(y); - + if(rand.nextFloat() <= randLimit) world.setBlock(posX, posY, posZ, block, meta, 2); } @@ -815,7 +816,7 @@ abstract public class Component extends StructureComponent { } } } - + protected ForgeDirection getDirection(ForgeDirection dir) { switch(coordBaseMode) { default: //South @@ -828,7 +829,7 @@ abstract public class Component extends StructureComponent { return dir.getRotation(ForgeDirection.DOWN); } } - + /** Sets the core block for a BlockDummyable multiblock. WARNING: Does not take {@link com.hbm.blocks.BlockDummyable#getDirModified(ForgeDirection)} or {@link com.hbm.blocks.BlockDummyable#getMetaForCore(World, int, int, int, EntityPlayer, int)} * into account yet! This will be changed as it comes up!
    * For BlockDummyables, 'dir' always faces the player, being the opposite of the player's direction. This is already taken into account. */ @@ -836,47 +837,47 @@ abstract public class Component extends StructureComponent { int posX = getXWithOffset(x, z); int posZ = getZWithOffset(x, z); int posY = getYWithOffset(y); - + if(!box.isVecInside(posX, posY, posZ)) return; - + if(dir == null) dir = ForgeDirection.NORTH; - + dir = getDirection(dir.getOpposite()); world.setBlock(posX, posY, posZ, block, dir.ordinal() + BlockDummyable.offset, 2); } - + //always set the core block first /** StructureComponent-friendly method for {@link com.hbm.handler.MultiblockHandlerXR#fillSpace(World, int, int, int, int[], Block, ForgeDirection)}. Prevents runoff outside of the provided bounding box.
    * For BlockDummyables, 'dir' always faces the player, being the opposite of the player's direction. This is already taken into account. */ protected void fillSpace(World world, StructureBoundingBox box, int x, int y, int z, int[] dim, Block block, ForgeDirection dir) { - + if(getYWithOffset(y - dim[1]) < box.minY || getYWithOffset(y + dim[0]) > box.maxY) //the BlockDummyable will be fucked regardless if it goes beyond either limit return; - + if(dir == null) dir = ForgeDirection.NORTH; - + dir = getDirection(dir.getOpposite()); - + int count = 0; - + int[] rot = MultiblockHandlerXR.rotate(dim, dir); - + int posX = getXWithOffset(x, z); int posZ = getZWithOffset(x, z); //MY SILLY ASS OPERATING WITH ALREADY FUCKING MODIFIED VARIABLES CLOWNKOEN int posY = getYWithOffset(y); - + BlockDummyable.safeRem = true; - + for(int a = posX - rot[4]; a <= posX + rot[5]; a++) { for(int c = posZ - rot[2]; c <= posZ + rot[3]; c++) { - + if(a >= box.minX && a <= box.maxX && c >= box.minZ && c <= box.maxZ) { for(int b = posY - rot[1]; b <= posY + rot[0]; b++) { - + int meta = 0; - + if(b < posY) { meta = ForgeDirection.DOWN.ordinal(); } else if(b > posY) { @@ -892,14 +893,14 @@ abstract public class Component extends StructureComponent { } else { continue; } - + world.setBlock(a, b, c, block, meta, 2); - + count++; - + if(count > 2000) { System.out.println("component's fillspace: ded " + a + " " + b + " " + c + " " + x + " " + y + " " + z); - + BlockDummyable.safeRem = false; return; } @@ -907,19 +908,19 @@ abstract public class Component extends StructureComponent { } } } - + BlockDummyable.safeRem = false; } - + /** StructureComponent-friendly method for {@link com.hbm.blocks.BlockDummyable#makeExtra(World, int, int, int)}. Prevents runoff outside of the provided bounding box. */ public void makeExtra(World world, StructureBoundingBox box, Block block, int x, int y, int z) { int posX = getXWithOffset(x, z); int posZ = getZWithOffset(x, z); int posY = getYWithOffset(y); - + if(!box.isVecInside(posX, posY, posZ)) return; - + if(world.getBlock(posX, posY, posZ) != block) return; @@ -927,23 +928,23 @@ abstract public class Component extends StructureComponent { if(meta > 5) return; - + BlockDummyable.safeRem = true; world.setBlock(posX, posY, posZ, block, meta + BlockDummyable.extra, 3); BlockDummyable.safeRem = false; } - + /** Block Selectors **/ - + static class Sandstone extends StructureComponent.BlockSelector { - + Sandstone() { } - + /** Selects blocks */ @Override public void selectBlocks(Random rand, int posX, int posY, int posZ, boolean notInterior) { float chance = rand.nextFloat(); - + if(chance > 0.6F) { this.field_151562_a = Blocks.sandstone; } else if (chance < 0.5F ) { @@ -953,16 +954,16 @@ abstract public class Component extends StructureComponent { } } } - + static class ConcreteBricks extends StructureComponent.BlockSelector { - + ConcreteBricks() { } - + /** Selects blocks */ @Override public void selectBlocks(Random rand, int posX, int posY, int posZ, boolean notInterior) { float chance = rand.nextFloat(); - + if(chance < 0.4F) { this.field_151562_a = ModBlocks.brick_concrete; } else if (chance < 0.7F) { @@ -974,18 +975,18 @@ abstract public class Component extends StructureComponent { } } } - + static class ConcreteBricksStairs extends StructureComponent.BlockSelector { - + ConcreteBricksStairs() { this.selectedBlockMetaData = 0; } - + /** Selects blocks */ @Override public void selectBlocks(Random rand, int posX, int posY, int posZ, boolean notInterior) { float chance = rand.nextFloat(); - + if(chance < 0.4F) { this.field_151562_a = ModBlocks.brick_concrete_stairs; } else if (chance < 0.7F) { @@ -997,19 +998,19 @@ abstract public class Component extends StructureComponent { } } } - + static class ConcreteBricksSlabs extends StructureComponent.BlockSelector { - + ConcreteBricksSlabs() { this.field_151562_a = ModBlocks.concrete_brick_slab; this.selectedBlockMetaData = 0; } - + /** Selects blocks */ @Override public void selectBlocks(Random rand, int posX, int posY, int posZ, boolean notInterior) { float chance = rand.nextFloat(); - + if (chance >= 0.4F && chance < 0.7F) { this.selectedBlockMetaData |= 1; } else if (chance < 0.9F) { @@ -1019,17 +1020,17 @@ abstract public class Component extends StructureComponent { } } } - + //ag static class LabTiles extends StructureComponent.BlockSelector { - + LabTiles() { } - + /** Selects blocks */ @Override public void selectBlocks(Random rand, int posX, int posY, int posZ, boolean notInterior) { float chance = rand.nextFloat(); - + if(chance < 0.5F) { this.field_151562_a = ModBlocks.tile_lab; } else if (chance < 0.9F) { @@ -1039,18 +1040,84 @@ abstract public class Component extends StructureComponent { } } } - + static class SuperConcrete extends StructureComponent.BlockSelector { - + SuperConcrete() { this.field_151562_a = ModBlocks.concrete_super; } - + /** Selects blocks */ @Override public void selectBlocks(Random rand, int posX, int posY, int posZ, boolean notInterior) { this.selectedBlockMetaData = rand.nextInt(6) + 10; } } - + + public static class MeteorBricks extends BlockSelector { + + @Override + public void selectBlocks(Random rand, int posX, int posY, int posZ, boolean notInterior) { + float chance = rand.nextFloat(); + + if(chance < 0.4F) { + this.field_151562_a = ModBlocks.meteor_brick; + } else if (chance < 0.7F) { + this.field_151562_a = ModBlocks.meteor_brick_mossy; + } else { + this.field_151562_a = ModBlocks.meteor_brick_cracked; + } + } + + } + + public static class SupplyCrates extends BlockSelector { + + @Override + public void selectBlocks(Random rand, int posX, int posY, int posZ, boolean notInterior) { + float chance = rand.nextFloat(); + + if(chance < 0.6F) { + this.field_151562_a = Blocks.air; + } else if(chance < 0.8F) { + this.field_151562_a = ModBlocks.crate_ammo; + } else if(chance < 0.9F) { + this.field_151562_a = ModBlocks.crate_can; + } else { + this.field_151562_a = ModBlocks.crate; + } + } + + } + + public static class CrabSpawners extends BlockSelector { + + @Override + public void selectBlocks(Random rand, int posX, int posY, int posZ, boolean notInterior) { + float chance = rand.nextFloat(); + + if(chance < 0.8F) { + this.field_151562_a = ModBlocks.meteor_brick; + } else { + this.field_151562_a = ModBlocks.meteor_spawner; + } + } + + } + + public static class GreenOoze extends BlockSelector { + + @Override + public void selectBlocks(Random rand, int posX, int posY, int posZ, boolean notInterior) { + float chance = rand.nextFloat(); + + if(chance < 0.8F) { + this.field_151562_a = ModBlocks.toxic_block; + } else { + this.field_151562_a = ModBlocks.meteor_polished; + } + } + + } + } diff --git a/src/main/java/com/hbm/world/generator/CellularDungeonFactory.java b/src/main/java/com/hbm/world/generator/CellularDungeonFactory.java index e58e88ae3..f6cd5f152 100644 --- a/src/main/java/com/hbm/world/generator/CellularDungeonFactory.java +++ b/src/main/java/com/hbm/world/generator/CellularDungeonFactory.java @@ -2,24 +2,12 @@ package com.hbm.world.generator; import com.hbm.world.generator.room.*; -import net.minecraftforge.common.util.ForgeDirection; - public class CellularDungeonFactory { - public static CellularDungeon meteor; public static CellularDungeon jungle; - + public static void init() { - - meteor = new TestDungeon(11, 7, 11, 11, 150, 3); - meteor.rooms.add(new TestDungeonRoom1(meteor)); - meteor.rooms.add(new TestDungeonRoom2(meteor)); - meteor.rooms.add(new TestDungeonRoom3(meteor)); - meteor.rooms.add(new TestDungeonRoom4(meteor, new TestDungeonRoom5(meteor), ForgeDirection.NORTH)); - meteor.rooms.add(new TestDungeonRoom6(meteor)); - meteor.rooms.add(new TestDungeonRoom7(meteor)); - meteor.rooms.add(new TestDungeonRoom8(meteor)); - + jungle = new JungleDungeon(5, 5, 25, 25, 700, 6); for(int i = 0; i < 10; i++) jungle.rooms.add(new JungleDungeonRoom(jungle)); jungle.rooms.add(new JungleDungeonRoomArrow(jungle)); diff --git a/src/main/java/com/hbm/world/generator/TestDungeon.java b/src/main/java/com/hbm/world/generator/TestDungeon.java deleted file mode 100644 index 14ae78cf7..000000000 --- a/src/main/java/com/hbm/world/generator/TestDungeon.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.hbm.world.generator; - -import com.hbm.blocks.ModBlocks; -import com.hbm.inventory.RecipesCommon.MetaBlock; - -public class TestDungeon extends CellularDungeon { - - public TestDungeon(int width, int height, int dimX, int dimZ, int tries, int branches) { - super(width, height, dimX, dimZ, tries, branches); - - this.floor.add(new MetaBlock(ModBlocks.meteor_polished)); - this.wall.add(new MetaBlock(ModBlocks.meteor_brick)); - this.wall.add(new MetaBlock(ModBlocks.meteor_brick)); - this.wall.add(new MetaBlock(ModBlocks.meteor_brick_mossy)); - this.wall.add(new MetaBlock(ModBlocks.meteor_brick_cracked)); - this.ceiling.add(new MetaBlock(ModBlocks.block_meteor_broken)); - } - -} diff --git a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom1.java b/src/main/java/com/hbm/world/generator/room/TestDungeonRoom1.java deleted file mode 100644 index 77f2f257b..000000000 --- a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom1.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.hbm.world.generator.room; - -import com.hbm.blocks.ModBlocks; -import com.hbm.world.generator.CellularDungeon; -import com.hbm.world.generator.CellularDungeonRoom; -import com.hbm.world.generator.DungeonToolbox; - -import net.minecraft.init.Blocks; -import net.minecraft.world.World; - -public class TestDungeonRoom1 extends CellularDungeonRoom { - - public TestDungeonRoom1(CellularDungeon parent) { - super(parent); - } - - public void generateMain(World world, int x, int y, int z) { - - super.generateMain(world, x, y, z); - DungeonToolbox.generateBox(world, x + parent.width / 2 - 3, y + 1, z + parent.width / 2 - 3, 1, parent.height - 2, 1, ModBlocks.meteor_pillar); - DungeonToolbox.generateBox(world, x + parent.width / 2 + 3, y + 1, z + parent.width / 2 - 3, 1, parent.height - 2, 1, ModBlocks.meteor_pillar); - DungeonToolbox.generateBox(world, x + parent.width / 2 + 3, y + 1, z + parent.width / 2 + 3, 1, parent.height - 2, 1, ModBlocks.meteor_pillar); - DungeonToolbox.generateBox(world, x + parent.width / 2 - 3, y + 1, z + parent.width / 2 + 3, 1, parent.height - 2, 1, ModBlocks.meteor_pillar); - world.setBlock(x + parent.width / 2 - 3, y + 3, z + parent.width / 2 - 3, ModBlocks.meteor_brick_chiseled, 0, 2); - world.setBlock(x + parent.width / 2 + 3, y + 3, z + parent.width / 2 - 3, ModBlocks.meteor_brick_chiseled, 0, 2); - world.setBlock(x + parent.width / 2 + 3, y + 3, z + parent.width / 2 + 3, ModBlocks.meteor_brick_chiseled, 0, 2); - world.setBlock(x + parent.width / 2 - 3, y + 3, z + parent.width / 2 + 3, ModBlocks.meteor_brick_chiseled, 0, 2); - world.setBlock(x + parent.width / 2, y + 1, z + parent.width / 2, ModBlocks.meteor_pillar, 0, 2); - world.setBlock(x + parent.width / 2, y + 2, z + parent.width / 2, Blocks.glowstone, 0, 3); - - /*world.setBlock(x + parent.width / 2, y, z + parent.width / 2, Blocks.mob_spawner, 0, 2); - TileEntityMobSpawner tileentitymobspawner2 = (TileEntityMobSpawner)world.getTileEntity(x + parent.width / 2, y, z + parent.width / 2); - - if (tileentitymobspawner2 != null) - { - tileentitymobspawner2.func_145881_a().setEntityName("entity_cyber_crab"); - }*/ - } -} diff --git a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom2.java b/src/main/java/com/hbm/world/generator/room/TestDungeonRoom2.java deleted file mode 100644 index 60c15b6e3..000000000 --- a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom2.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.hbm.world.generator.room; - -import com.hbm.blocks.ModBlocks; -import com.hbm.world.generator.CellularDungeon; -import com.hbm.world.generator.CellularDungeonRoom; - -import net.minecraft.world.World; - -public class TestDungeonRoom2 extends CellularDungeonRoom { - - public TestDungeonRoom2(CellularDungeon parent) { - super(parent); - } - - public void generateMain(World world, int x, int y, int z) { - - super.generateMain(world, x, y, z); - - int j = world.rand.nextInt(2) + 2; - int k = world.rand.nextInt(3) + 2; - - for(int i = 0; i < j; i++) { - int dx = world.rand.nextInt(parent.width - 6) + 3; - int dz = world.rand.nextInt(parent.width - 6) + 3; - world.setBlock(x + dx, y + 1, z + dz, ModBlocks.crate_ammo, 0, 2); - } - - for(int i = 0; i < k; i++) { - int dx = world.rand.nextInt(parent.width - 6) + 3; - int dz = world.rand.nextInt(parent.width - 6) + 3; - world.setBlock(x + dx, y + 1, z + dz, ModBlocks.crate_can, 0, 2); - } - } -} diff --git a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom3.java b/src/main/java/com/hbm/world/generator/room/TestDungeonRoom3.java deleted file mode 100644 index dbb6f7366..000000000 --- a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom3.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.hbm.world.generator.room; - -import com.hbm.blocks.ModBlocks; -import com.hbm.world.generator.CellularDungeon; -import com.hbm.world.generator.CellularDungeonRoom; -import com.hbm.world.generator.DungeonToolbox; - -import net.minecraft.init.Blocks; -import net.minecraft.tileentity.TileEntityMobSpawner; -import net.minecraft.world.World; - -public class TestDungeonRoom3 extends CellularDungeonRoom { - - public TestDungeonRoom3(CellularDungeon parent) { - super(parent); - } - - public void generateMain(World world, int x, int y, int z) { - - super.generateMain(world, x, y, z); - DungeonToolbox.generateBox(world, x + parent.width / 2 - 2, y + 1, z + parent.width / 2 - 2, 5, 4, 5, ModBlocks.deco_lead); - DungeonToolbox.generateBox(world, x + parent.width / 2 - 1, y + 1, z + parent.width / 2 - 1, 3, 3, 3, ModBlocks.toxic_block); - DungeonToolbox.generateBox(world, x + parent.width / 2 - 1, y + 4, z + parent.width / 2 - 1, 3, 1, 3, Blocks.air); - - world.setBlock(x + parent.width / 2, y + 1, z + parent.width / 2, Blocks.mob_spawner, 0, 2); - TileEntityMobSpawner tileentitymobspawner2 = (TileEntityMobSpawner)world.getTileEntity(x + parent.width / 2, y + 1, z + parent.width / 2); - - if (tileentitymobspawner2 != null) - { - tileentitymobspawner2.func_145881_a().setEntityName("entity_cyber_crab"); - } - } -} diff --git a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom4.java b/src/main/java/com/hbm/world/generator/room/TestDungeonRoom4.java deleted file mode 100644 index 815f26330..000000000 --- a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom4.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.hbm.world.generator.room; - -import java.util.ArrayList; - -import com.hbm.blocks.ModBlocks; -import com.hbm.inventory.RecipesCommon.MetaBlock; -import com.hbm.world.generator.CellularDungeon; -import com.hbm.world.generator.CellularDungeonRoom; -import com.hbm.world.generator.DungeonToolbox; - -import net.minecraft.init.Blocks; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -public class TestDungeonRoom4 extends CellularDungeonRoom { - - public TestDungeonRoom4(CellularDungeon parent, CellularDungeonRoom daisyChain, ForgeDirection dir) { - super(parent); - this.daisyChain = daisyChain; - this.daisyDirection = dir; - } - - public void generateMain(World world, int x, int y, int z) { - - super.generateMain(world, x, y, z); - DungeonToolbox.generateBox(world, x, y + parent.height - 2, z, parent.width, 1, parent.width, new ArrayList() {{ add(new MetaBlock(Blocks.air)); add(new MetaBlock(Blocks.web)); }}); - - DungeonToolbox.generateBox(world, x + 1, y, z + 1, parent.width - 2, 1, parent.width - 2, new ArrayList() {{ - add(new MetaBlock(ModBlocks.meteor_polished)); - add(new MetaBlock(ModBlocks.meteor_polished)); - add(new MetaBlock(ModBlocks.meteor_polished)); - add(new MetaBlock(ModBlocks.meteor_polished)); - add(new MetaBlock(ModBlocks.meteor_polished)); - add(new MetaBlock(ModBlocks.meteor_spawner)); - }}); - } - - public void generateWall(World world, int x, int y, int z, ForgeDirection wall, boolean door) { - - if(wall != ForgeDirection.NORTH) - super.generateWall(world, x, y, z, wall, door); - } -} \ No newline at end of file diff --git a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom5.java b/src/main/java/com/hbm/world/generator/room/TestDungeonRoom5.java deleted file mode 100644 index e02be0c7d..000000000 --- a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom5.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.hbm.world.generator.room; - -import java.util.ArrayList; - -import com.hbm.blocks.ModBlocks; -import com.hbm.inventory.RecipesCommon.MetaBlock; -import com.hbm.world.generator.CellularDungeon; -import com.hbm.world.generator.CellularDungeonRoom; -import com.hbm.world.generator.DungeonToolbox; - -import net.minecraft.init.Blocks; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -public class TestDungeonRoom5 extends CellularDungeonRoom { - - public TestDungeonRoom5(CellularDungeon parent) { - super(parent); - } - - public void generateMain(World world, int x, int y, int z) { - - super.generateMain(world, x, y, z); - DungeonToolbox.generateBox(world, x, y + parent.height - 2, z, parent.width, 1, parent.width, new ArrayList() {{ add(new MetaBlock(Blocks.air)); add(new MetaBlock(Blocks.web)); }}); - - DungeonToolbox.generateBox(world, x + 1, y, z + 1, parent.width - 2, 1, parent.width - 2, new ArrayList() {{ - add(new MetaBlock(ModBlocks.meteor_polished)); - add(new MetaBlock(ModBlocks.meteor_polished)); - add(new MetaBlock(ModBlocks.meteor_polished)); - add(new MetaBlock(ModBlocks.meteor_polished)); - add(new MetaBlock(ModBlocks.meteor_polished)); - add(new MetaBlock(ModBlocks.meteor_spawner)); }}); - } - - public void generateWall(World world, int x, int y, int z, ForgeDirection wall, boolean door) { - - if(wall != ForgeDirection.SOUTH) - super.generateWall(world, x, y, z, wall, door); - } -} \ No newline at end of file diff --git a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom6.java b/src/main/java/com/hbm/world/generator/room/TestDungeonRoom6.java deleted file mode 100644 index e04f552cc..000000000 --- a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom6.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.hbm.world.generator.room; - -import com.hbm.blocks.ModBlocks; -import com.hbm.world.generator.CellularDungeon; -import com.hbm.world.generator.CellularDungeonRoom; -import com.hbm.world.generator.DungeonToolbox; - -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -public class TestDungeonRoom6 extends CellularDungeonRoom { - - public TestDungeonRoom6(CellularDungeon parent) { - super(parent); - } - - public void generateMain(World world, int x, int y, int z) { - - super.generateMain(world, x, y, z); - DungeonToolbox.generateBox(world, x + 1, y, z + 1, parent.width - 2, 1, parent.width - 2, ModBlocks.toxic_block); - DungeonToolbox.generateBox(world, x + parent.width / 2 - 1, y, z + parent.width / 2 - 1, 3, 1, 3, ModBlocks.meteor_brick_chiseled); - world.setBlock(x + parent.width / 2, y, z + parent.width / 2, ModBlocks.meteor_polished); - - world.setBlock(x + 1, y, z + parent.width / 2, ModBlocks.meteor_polished); - world.setBlock(x + parent.width / 2, y, z + 1, ModBlocks.meteor_polished); - - world.setBlock(x + parent.width - 2, y, z + parent.width / 2, ModBlocks.meteor_polished); - world.setBlock(x + parent.width / 2, y, z + parent.width - 2, ModBlocks.meteor_polished); - } - - public void generateWall(World world, int x, int y, int z, ForgeDirection wall, boolean door) { - - super.generateWall(world, x, y, z, wall, door); - - if(!door) - return; - - if(wall == ForgeDirection.NORTH) { - DungeonToolbox.generateBox(world, x + parent.width / 2, y, z + 1, 1, 1, parent.width / 2 - 2, ModBlocks.meteor_polished); - } - - if(wall == ForgeDirection.SOUTH) { - DungeonToolbox.generateBox(world, x + parent.width / 2, y, z + parent.width / 2 + 2, 1, 1, parent.width / 2 - 2, ModBlocks.meteor_polished); - } - - if(wall == ForgeDirection.WEST) { - DungeonToolbox.generateBox(world, x + 1, y, z + parent.width / 2, parent.width / 2 - 2, 1, 1, ModBlocks.meteor_polished); - } - - if(wall == ForgeDirection.EAST) { - DungeonToolbox.generateBox(world, x + parent.width / 2 + 2, y, z + parent.width / 2, parent.width / 2 - 2, 1, 1, ModBlocks.meteor_polished); - } - } -} diff --git a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom7.java b/src/main/java/com/hbm/world/generator/room/TestDungeonRoom7.java deleted file mode 100644 index 57909caa2..000000000 --- a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom7.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.hbm.world.generator.room; - -import com.hbm.blocks.ModBlocks; -import com.hbm.world.generator.CellularDungeon; -import com.hbm.world.generator.CellularDungeonRoom; -import com.hbm.world.generator.DungeonToolbox; - -import net.minecraft.world.World; - -public class TestDungeonRoom7 extends CellularDungeonRoom { - - public TestDungeonRoom7(CellularDungeon parent) { - super(parent); - } - - public void generateMain(World world, int x, int y, int z) { - - super.generateMain(world, x, y, z); - - DungeonToolbox.generateBox(world, x, y, z, parent.width, 1, parent.width, ModBlocks.meteor_polished); - DungeonToolbox.generateBox(world, x + 2, y, z + 2, parent.width - 4, 1, parent.width - 4, ModBlocks.deco_red_copper); - DungeonToolbox.generateBox(world, x + 3, y, z + 3, parent.width - 6, 1, parent.width - 6, ModBlocks.meteor_polished); - DungeonToolbox.generateBox(world, x + 4, y, z + 4, parent.width - 8, 1, parent.width - 8, ModBlocks.deco_red_copper); - - world.setBlock(x + parent.width / 2, y, z + parent.width / 2, ModBlocks.meteor_battery); - world.setBlock(x + parent.width / 2, y + 1, z + parent.width / 2, ModBlocks.tesla); - } -} diff --git a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom8.java b/src/main/java/com/hbm/world/generator/room/TestDungeonRoom8.java deleted file mode 100644 index e69db5214..000000000 --- a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom8.java +++ /dev/null @@ -1,225 +0,0 @@ -package com.hbm.world.generator.room; - -import com.hbm.blocks.ModBlocks; -import com.hbm.crafting.handlers.MKUCraftingHandler; -import com.hbm.items.ModItems; -import com.hbm.items.special.ItemBookLore; -import com.hbm.tileentity.machine.storage.TileEntitySafe; -import com.hbm.world.generator.CellularDungeon; -import com.hbm.world.generator.CellularDungeonRoom; -import com.hbm.world.generator.DungeonToolbox; - -import net.minecraft.init.Items; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class TestDungeonRoom8 extends CellularDungeonRoom { - - public TestDungeonRoom8(CellularDungeon parent) { - super(parent); - } - - public void generateMain(World world, int x, int y, int z) { - - super.generateMain(world, x, y, z); - DungeonToolbox.generateBox(world, x + parent.width / 2 - 3, y + 1, z + parent.width / 2 - 3, 1, parent.height - 2, 1, ModBlocks.meteor_pillar); - DungeonToolbox.generateBox(world, x + parent.width / 2 + 3, y + 1, z + parent.width / 2 - 3, 1, parent.height - 2, 1, ModBlocks.meteor_pillar); - DungeonToolbox.generateBox(world, x + parent.width / 2 + 3, y + 1, z + parent.width / 2 + 3, 1, parent.height - 2, 1, ModBlocks.meteor_pillar); - DungeonToolbox.generateBox(world, x + parent.width / 2 - 3, y + 1, z + parent.width / 2 + 3, 1, parent.height - 2, 1, ModBlocks.meteor_pillar); - world.setBlock(x + parent.width / 2 - 3, y + 3, z + parent.width / 2 - 3, ModBlocks.meteor_brick_chiseled, 0, 2); - world.setBlock(x + parent.width / 2 + 3, y + 3, z + parent.width / 2 - 3, ModBlocks.meteor_brick_chiseled, 0, 2); - world.setBlock(x + parent.width / 2 + 3, y + 3, z + parent.width / 2 + 3, ModBlocks.meteor_brick_chiseled, 0, 2); - world.setBlock(x + parent.width / 2 - 3, y + 3, z + parent.width / 2 + 3, ModBlocks.meteor_brick_chiseled, 0, 2); - - DungeonToolbox.generateBox(world, x + 4, y + 1, z + 4, parent.width - 8, 1, parent.width - 8, ModBlocks.meteor_polished); - - int i = world.rand.nextInt(8); - - switch(i) { - case 0: world.setBlock(x + parent.width / 2, y + 2, z + parent.width / 2, ModBlocks.meteor_brick_chiseled, 0, 3); break; - case 1: world.setBlock(x + parent.width / 2, y + 2, z + parent.width / 2, ModBlocks.ntm_dirt, 0, 3); break; - case 2: world.setBlock(x + parent.width / 2, y + 2, z + parent.width / 2, ModBlocks.block_starmetal, 0, 3); break; - case 3: world.setBlock(x + parent.width / 2, y + 2, z + parent.width / 2, ModBlocks.statue_elb_f, 0, 3); break; - case 4: world.setBlock(x + parent.width / 2, y + 2, z + parent.width / 2, ModBlocks.crate_red, 0, 3); break; - case 5: world.setBlock(x + parent.width / 2, y + 2, z + parent.width / 2, ModBlocks.balefire, 0, 3); break; - case 6: world.setBlock(x + parent.width / 2, y + 2, z + parent.width / 2, ModBlocks.block_meteor, 0, 3); break; - case 7: - world.setBlock(x + parent.width / 2, y + 2, z + parent.width / 2, ModBlocks.safe, 0, 3); - if(world.getTileEntity(x + parent.width / 2, y + 2, z + parent.width / 2) instanceof TileEntitySafe) { - - int r = world.rand.nextInt(10); - - if(r == 0) { - ((TileEntitySafe)world.getTileEntity(x + parent.width / 2, y + 2, z + parent.width / 2)).setInventorySlotContents(7, new ItemStack(ModItems.book_of_)); - } else if(r < 4) { - TileEntitySafe safe = (TileEntitySafe) world.getTileEntity(x + parent.width / 2, y + 2, z + parent.width / 2); - safe.setInventorySlotContents(5, generateBook(world)); - safe.setInventorySlotContents(7, new ItemStack(ModItems.stamp_book, 1, world.rand.nextInt(8))); - safe.setInventorySlotContents(9, new ItemStack(ModItems.stamp_book, 1, world.rand.nextInt(8))); - } else { - TileEntitySafe safe = (TileEntitySafe) world.getTileEntity(x + parent.width / 2, y + 2, z + parent.width / 2); - safe.setInventorySlotContents(5, new ItemStack(Items.book)); - safe.setInventorySlotContents(7, new ItemStack(ModItems.stamp_book, 1, world.rand.nextInt(8))); - safe.setInventorySlotContents(9, new ItemStack(ModItems.stamp_book, 1, world.rand.nextInt(8))); - } - } - break; - } - } - - public static ItemStack generateBook(World world) { - MKUCraftingHandler.generateRecipe(world); - ItemStack[] recipe = MKUCraftingHandler.MKURecipe; - - if(recipe == null) return new ItemStack(ModItems.flame_pony); - - String key; - int pages; - Item item; - switch(world.rand.nextInt(6)) { - case 0: - key = "book_iodine"; pages = 3; - item = ModItems.powder_iodine; break; - case 1: - key = "book_phosphorous"; pages = 2; - item = ModItems.powder_fire; break; - case 2: - key = "book_dust"; pages = 3; - item = ModItems.dust; break; - case 3: - key = "book_mercury"; pages = 2; - item = ModItems.ingot_mercury; break; - case 4: - key = "book_flower"; pages = 2; - item = ModItems.morning_glory; break; - case 5: - key = "book_syringe"; pages = 2; - item = ModItems.syringe_metal_empty; break; - default: - return new ItemStack(ModItems.flame_pony); - } - - int s = 1; - for(int i = 0; i < 9; i++) { - if(recipe[i] != null && recipe[i].getItem() == item) { - s = i + 1; break; - } - } - - ItemStack book = ItemBookLore.createBook(key, pages, 0x271E44, 0xFBFFF4); - ItemBookLore.addArgs(book, pages - 1, String.valueOf(s)); - - return book; - } - - /*public static ItemStack genetateMKU(World world) { - - ItemStack book = new ItemStack(Items.written_book); - book.stackTagCompound = new NBTTagCompound(); - book.stackTagCompound.setString("author", "Dave"); - book.stackTagCompound.setString("title", "Note"); - NBTTagList nbt = new NBTTagList(); - - String[] pages = generatePages(world); - - for(String s : pages) { - nbt.appendTag(new NBTTagString(s)); - } - - book.stackTagCompound.setTag("pages", nbt); - - return book; - } - - private static String[] bookIodine = new String[] { - "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:", - "apparently the morons form 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 excete it through the skin, creating an aerosol that is highly contageous.", - "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 #" - }; - private static String[] bookPhosphorous = new String[] { - "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", - "ingredient is red phosphorous, whihc has to be mixed into slot #" - }; - private static String[] bookDust = new String[] { - "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", - "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", - "dangerous inventions of theirs and it contains dust. strangely they also mentioned that it goes into slot #" - }; - private static String[] bookMercury = new String[] { - "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", - "replicated by the body? whatever, the mercury goes into slot #" - }; - private static String[] bookFlower = new String[] { - "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,", - "it does not work with other flowers. the morning glory goes into slot #" - }; - private static String[] bookSyringe = new String[] { - "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", - "syringe goes into slot #" - }; - - public static String[] generatePages(World world) { - - String[] orig; - Item ingred; - int r = world.rand.nextInt(6); - - if(r == 0) { - orig = bookIodine; - ingred = ModItems.powder_iodine; - } else if(r == 1) { - orig = bookPhosphorous; - ingred = ModItems.powder_fire; - } else if(r == 2) { - orig = bookDust; - ingred = ModItems.dust; - } else if(r == 3) { - orig = bookMercury; - ingred = ModItems.ingot_mercury; - } else if(r == 4) { - orig = bookFlower; - ingred = ModItems.morning_glory; - } else { - orig = bookSyringe; - ingred = ModItems.syringe_metal_empty; - } - - String[] copy = new String[orig.length]; - - for(int i = 0; i < orig.length; i++) { - copy[i] = orig[i] + ""; //Strings are reference types and i'm really not counting on my luck here - } - - copy[copy.length - 1] += getSlot(world, ingred); - - return copy; - } - - public static int getSlot(World world, Item item) { - - MKUCraftingHandler.generateRecipe(world); - ItemStack[] recipe = MKUCraftingHandler.MKURecipe; - - if(recipe == null) //take no chances - return -2; - - for(int i = 0; i < 9; i++) { - - if(recipe[i] != null && recipe[i].getItem() == item) { - return i + 1; - } - } - - return -1; - }*/ -} diff --git a/src/main/resources/META-INF/HBM_at.cfg b/src/main/resources/META-INF/HBM_at.cfg index 65926b7ac..60e1b0364 100644 --- a/src/main/resources/META-INF/HBM_at.cfg +++ b/src/main/resources/META-INF/HBM_at.cfg @@ -35,6 +35,9 @@ public net.minecraft.world.gen.ChunkProviderFlat field_82702_h # ha # ChunkProviderServer public net.minecraft.world.gen.ChunkProviderServer field_73248_b # chunksToUnload +# NBTTagList +public net.minecraft.nbt.NBTTagList * # Mojang makes a format use LISTS of INTs, what the fuck + # ItemRenderer public net.minecraft.client.renderer.ItemRenderer field_78453_b # itemToRender @@ -42,4 +45,7 @@ public net.minecraft.client.renderer.ItemRenderer field_78453_b # it public net.minecraft.client.resources.AbstractResourcePack field_110597_b # resourcePackFile # Container -public net.minecraft.inventory.Container * # fucking everything i hate this class \ No newline at end of file +public net.minecraft.inventory.Container * # fucking everything i hate this class + +# GuiIngame +public net.minecraft.client.gui.GuiIngame field_92016_l # highlightingItemStack \ No newline at end of file diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 5e257b2f0..223210fde 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1534,6 +1534,7 @@ item.blades_titanium.name=TitansÀgeblatt item.blowtorch.name=Lötlampe item.board_copper.name=Kupfertafel item.boat_rubber.name=Schlauchboot +item.bobmazon.name=Bobmazon item.bobmazon_hidden.name=Versteckter Katalog item.bobmazon_machines.name=Bobmazon: Blöcke und Maschinen item.bobmazon_materials.name=Bobmazon: Ressourcen @@ -2285,6 +2286,7 @@ item.gun_m2.name=ÃŒsMG item.gun_maresleg.name=Repetierflinte item.gun_maresleg_akimbo.name=Repetierflinten item.gun_maresleg_broken.name=Broken +item.gun_mas36.name=SÃŒdstern item.gun_minigun.name=Minigun item.gun_minigun_lacunae.name=Lacunae item.gun_mirv.name=M42 Nukleares Katapult "Experimentelles MIRV" @@ -3886,6 +3888,10 @@ shape.wiresDense=Dichte DrÀhte soundCategory.ntmMachines=NTM Maschinen +stat.ntmBullets=SchÃŒsse gefeuert +stat.ntmLegendary=LegendÀre GegenstÀnde hergestellt +stat.ntmMines=Auf Minen getreten + tile.absorber.name=Strahlungs-Absorber tile.absorber_green.name=Fortgeschrittener Strahlungs-Absorber tile.absorber_pink.name=Elite Strahlungs-Absorber @@ -5109,6 +5115,7 @@ turret.on=AN turret.players=Spieler anzielen: %s upgrade.consumption=Verbrauch %s +upgrade.productivity=ProduktivitÀt %s upgrade.speed=Verarbeitungszeit %s wavelengths.name.ir=Infrarot diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 845db5b7c..565cb2863 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -2276,6 +2276,7 @@ item.blades_titanium.name=Titanium Shredder Blades item.blowtorch.name=Blowtorch item.board_copper.name=Copper Panel item.boat_rubber.name=Rubber Boat +item.bobmazon.name=Bobmazon item.bobmazon_hidden.name=Hidden Catalog item.bobmazon_machines.name=Bobmazon: Blocks and Machines item.bobmazon_materials.name=Bobmazon: Materials @@ -3095,6 +3096,7 @@ item.gun_m2.name=Ma Deuce item.gun_maresleg.name=Lever Action Shotgun item.gun_maresleg_akimbo.name=Lever Action Shotguns item.gun_maresleg_broken.name=Broken +item.gun_mas36.name=South Star item.gun_minigun.name=Minigun item.gun_minigun_lacunae.name=Lacunae item.gun_mirv.name=M42 Nuclear Catapult "Experimental MIRV" @@ -4861,7 +4863,7 @@ pa.crash_derail.desc=The particle has left the accelerator.$Ensure no parts are pa.crash_cannot_enter=Denied! pa.crash_cannot_enter.desc=The particle tried to enter$part of the accelerator, but couldn't.$Ensure all parts are oriented correctly. pa.crash_nocool=No cooling! -pa.crash_nocool.desc=The particle has entered an uncooled$part of the accelerator. Ensure all cooled$parts are connected and filled$with cold perfluoroethyl. +pa.crash_nocool.desc=The particle has entered an uncooled$part of the accelerator. Ensure all cooled$parts are connected and filled$with cold perfluoromethyl. pa.crash_nopower=No power! pa.crash_nopower.desc=The particle has entered an unpowered$part of the accelerator. Ensure all parts$receive power, and that the$power supply is sufficient. pa.crash_nocoil=No coils! @@ -4969,6 +4971,10 @@ shape.wiresDense=Dense Wires soundCategory.ntmMachines=NTM Machines +stat.ntmBullets=Rounds Fired +stat.ntmLegendary=Legendary Items Created +stat.ntmMines=Mines Stepped on + tile.absorber.name=Radiation Absorber tile.absorber_green.name=Advanced Radiation Absorber tile.absorber_pink.name=Elite Radiation Absorber @@ -5336,6 +5342,7 @@ tile.deco_computer.ibm_300pl.name=IBM Personal Computer 300PL tile.deco_crt.name=Old CRT Screen tile.deco_emitter.name=Deco Light Emitter tile.deco_lead.name=Lead Deco Block +tile.deco_loot.name=Loot Pile tile.deco_rbmk.name=RBMK Deco Block tile.deco_rbmk_smooth.name=Smooth RBMK Deco Block tile.deco_red_copper.name=Red Copper Deco Block @@ -5880,7 +5887,7 @@ tile.pa_beamline.desc=Optional part, connects different accelerator parts.$Also tile.pa_detector.name=Particle Detector tile.pa_detector.desc=Requires cooling!$Accepts particles and performs the recipe.$Recipes may require containers (particle capsules).$Particle needs a defocus of 0 to be accepted. tile.pa_dipole.name=Dipole Magnets -tile.pa_dipole.desc=Requires cooling!$Redirects particles based on momentum.$Has outputs for below threshold,$above threshold and above threshold$with restone applied.$Requires large coils to work. +tile.pa_dipole.desc=Requires cooling!$Redirects particles based on momentum.$Has outputs for below threshold,$above threshold and above threshold$with redstone applied.$Requires large coils to work. tile.pa_quadrupole.name=Quadrupole Magnets tile.pa_quadrupole.desc=Requires cooling!$Reduces particle defocus by 100 points.$Requires large coils to work. tile.pa_rfc.name=RF Cavity @@ -6015,6 +6022,7 @@ tile.red_pylon_medium_steel_transformer.name=Medium Steel Electricity Pylon with tile.red_pylon_medium_wood.name=Medium Wooden Electricity Pylon tile.red_pylon_medium_wood_transformer.name=Medium Wooden Electricity Pylon with Transformer tile.red_wire_coated.name=Coated Red Copper Cable +tile.refueler.name=Refueling Station tile.reinforced_brick.name=Reinforced Stone tile.reinforced_brick_stairs.name=Reinforced Stone Stairs tile.reinforced_ducrete.name=Reinforced Ducrete @@ -6157,6 +6165,9 @@ tile.vitrified_barrel.name=Vitrified Nuclear Waste Drum tile.volcanic_lava_block.name=Volcanic Lava tile.volcano_core.name=Volcano Core tile.volcano_rad_core.name=Rad Volcano Core +tile.wand_air.name=Structure Wand Block (Air) +tile.wand_loot.name=Structure Wand Block (Lootable) +tile.wand_jigsaw.name=Structure Wand Block (Jigsaw) tile.waste_earth.name=Dead Grass tile.waste_leaves.name=Dead Leaves tile.waste_log.name=Charred Log @@ -6270,6 +6281,7 @@ upgrade.delay=Process time %s upgrade.efficiency=Efficiency %s upgrade.fortune=Fortune %s upgrade.overheatChance=Overheat chance %s +upgrade.productivity=Productivity %s upgrade.range=Range %s upgrade.gui.title=§lAcceptable Upgrades:§r diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index 93e77b657..6d79db6c7 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -1,63 +1,15 @@ -itemGroup.tabTest=ТестПвая вклаЎка NTM -itemGroup.tabParts=Ресурсы О ЎеталО NTM -itemGroup.tabControl=ТПплОвП О элеЌеМты ЌехаМОзЌПв NTM -itemGroup.tabTemplate=КаблПМы NTM -itemGroup.tabBlocks=РуЎы О блПкО NTM -itemGroup.tabMachine=МехаМОзЌы NTM -itemGroup.tabNuke=БПЌбы NTM -itemGroup.tabMissile=Ракеты О спутМОкО NTM -itemGroup.tabWeapon=ОружОе О турелО NTM -itemGroup.tabConsumable=РасхПЎМые ЌатерОалы О сМаряжеМОе NTM -soundCategory.ntmMachines=МехаМОзЌы NTM - -achievement.acidizer.desc=уфф ай ЌПя кПжа +achievement.acidizer.desc=уфф ай ЌПя кПжа achievement.acidizer=КОслюка achievement.assembly.desc=ППЎПжЎО-ка, уже час утра? achievement.assembly=ЗавПЎ расшОряется -achievement.sacrifice=Жертва -achievement.sacrifice.desc=Встреться лОцПЌ к лОцу с ПгМёЌ О выжОвО. -achievement.impossible=БуквальМП МевПзЌПжМП -achievement.impossible.desc=Ты Ме ЌПжешь пПлучОть этП ЎПстОжеМОе. -achievement.tasteofblood=Вкус крПвО -achievement.tasteofblood.desc=ЭтП Ме былП частью прПтПкПла тестОрПваМОя. -achievement.freytag=Ѐрейтаг -achievement.freytag.desc=СтражО жОзМО ГерПльЎа. -achievement.selenium=XVIII ЛуМа. -achievement.selenium.desc=О,Ўа! -achievement.potato=ВПсстаМОе ЌашОМ -achievement.potato.desc=МПжешь убОть Ўля ЌеМя эту птОцу? -achievement.c44=Глава 44 -achievement.c44.desc=ГальваМОзОрПваМ! ТОпа, цОМк! -achievement.c20_5=Глава [ДВАДЊАТЬ_С_ПОЛОВИНОЙ] -achievement.c20_5.desc=??? -achievement.space=ППслеЎМОй Рубеж... ХПтя лаЎМП, забей. -achievement.space.desc=ПрПвалОсь как тПлькП ЌПжМП О пПтрать 90 ЌОллОПМПв ЎПлларПв впустую. -achievement.FOEQ=БуМкеры с пегасаЌО О ракетаЌО achievement.FOEQ.desc=Отправь переЎатчОк Ма ПрбОту Марса... в сЌысле ДюМы. -achievement.fiend=НарушОтель -achievement.fiend.desc=БуЎь жестПкОЌ. -achievement.fiend2=НарушОтель-2: переМарушеМОе. -achievement.fiend2.desc=БуЎь жёстче. -achievement.soyuz=ПечёМая КартПшка -achievement.soyuz.desc=СтаМьте хрустящОЌ. -achievement.radPoison=Ура, РаЎОацОя! -achievement.radPoison.desc=Испытайте пПслеЎствОя раЎОацОПММПгП ПтравлеМОя. -achievement.radDeath=Ой, РаЎОацОя! -achievement.radDeath.desc=МарОя КюрО ОзПбрела теПрОю раЎОПактОвМПстО, лечеМОе раЎОПактОвМПстО О уЌОраМОе Пт раЎОПактОвМПстО. -achievement.hidden=Скрытый КаталПг -achievement.hidden.desc=Убейте заражеММПгП крОпера паЎающОЌ тПварМыЌ вагПМПЌ -achievement.horizonsStart=АпПгей -achievement.horizonsStart.desc=Отправьте ГеральЎа Ма луМу. -achievement.horizonsEnd=ГПрОзПМты -achievement.horizonsEnd.desc=Отправьте ТПЌа ЎПЌПй. -achievement.horizonsBonus=СлэЌ-ЎаМк ЎОарея -achievement.horizonsBonus.desc=ЧестМПе слПвП, чтП, черт вПзьЌО, с тПбПй Ме так -achievement.stratum.desc=ЖЌО Ма тПрЌПза, МОттс. -achievement.stratum=Пласт -achievement.meltdown.desc=Ты зашел так ЎалекП, как ты ЌПг все ОспПртОть? -achievement.meltdown=Быстрая вМеплаМПвая разбПрка -achievement.omega12.desc=РешОте прПблеЌу прПЎПлжеМОя жОзМО Ма этПй МесчастМПй плаМете. -achievement.omega12=УскПрОтель частОц ОЌега-12 +achievement.FOEQ=БуМкеры с пегасаЌО О ракетаЌО +achievement.breeding.desc=БлагПЎарю вас, Ўа благПслПвОт вас БПг, О Ўа благПслПвОт бПг СПеЎОМеММые Ктаты АЌерОкО. +achievement.breeding=ИрПМОчМП +achievement.bismuth.desc=ППЌМОте, как люЎО спПрОлО Пб этПЌ Ќесяц? Я пПЌМю. +achievement.bismuth=ВОсЌут +achievement.blastFurnace.desc=ОМО разПбралО затПМувшОй ЎреЎМПут Ўля "ЭксплПрера-1". +achievement.blastFurnace=ЖелезП О угПль achievement.bossCreeper.desc='ВПт этП яЎерМые крОперы? Эта штукПвОМа?!' achievement.bossCreeper=БПЌба Ма четырёх МПгах achievement.bossMaskman.desc=Врезать бПльшПЌу ЌальчОку. @@ -66,44 +18,14 @@ achievement.bossMeltdown.desc=СкПрее ужасМП, чеЌ ПтлОчМП, achievement.bossMeltdown=3.6 реМтгеМ achievement.bossWorm.desc=Ѐабстафф. МПя заЎМОца. А ты счОтай. achievement.bossWorm=РазбПрка Баллс-О-ТрПМ -achievement.digammaFeel.desc=пустПта вМутрО. -achievement.digammaFeel=Страх чувства -achievement.digammaKnow.desc=чтП такПе этПт ЌОр. -achievement.digammaKnow=Страх пПзМаМОя -achievement.digammaSee.desc=в безЎМу. -achievement.digammaSee=Страх вОЎеМОя -achievement.digammaKauaiMoho.desc=Все ужасМП, вПт тебе гПрячОй шПкПлаЎ. -achievement.digammaKauaiMoho=ППй, пПй ЌМе песМю КауаО МПхП. -achievement.digammaUpOnTop.desc=ДреЎМПут, ПблОцПваММый железПЌ. -achievement.digammaUpOnTop=На вершОМе achievement.bossUFO.desc=Эй, чтП у Мас тут? ОгрПЌМый кПсЌОческОй кПрабль, прОблОжающОйся к блПк-кПраблю? achievement.bossUFO=Ayy Lmao -achievement.radium.desc=ТЫ УВОЛЕН ЗА ТО, ЧТО ПОДСЫПАЛ РАДИЙ В МОЙ КОЀЕ! -achievement.radium=МИСТЕР НЕВЕРОЯТНЫЙ -achievement.someWounds.desc=ПрОгПтПвься -achievement.someWounds=НекПтПрые раМы МОкПгЎа Ме зажОвают -achievement.psycheAbyss.desc=§c"НужМП сМачала упасть, прежЎе чеЌ пПЎМяться!"§r -achievement.psycheAbyss=§cБезЎМа§r -achievement.psycheEgo.desc="Требуется храбрПсть, Ме слеЎует бПяться саЌых глубПкОх пуль. ЀПсфПра, МапалЌа, бПяться МечегП..." -achievement.psycheEgo=ЭгП -achievement.psycheHeartOfDarkness.desc="Я увОЎел МепПстОжОЌую тайМу ЎушО, кПтПрая Ме зМала МО сЎержаММПстО, МО веры, МО страха, МП все же слепП бПрПлась с сПбПй" -achievement.psycheHeartOfDarkness=СерЎце тьЌы -achievement.psycheId.desc="...О сказать: 'Да, я прОМОЌаю тебя, я Ўаже люблю тебя, пПтПЌу чтП ты - часть ЌеМя, ты - прПЎПлжеМОе ЌеМя'" -achievement.psycheId=ИЎеМтОфОкатПр -achievement.psycheShadow.desc="КуЎа ЎелОсь серЎца всех?" -achievement.psycheShadow=ТеМь -achievement.psycheSuperego.desc="...НП загляМуть вМутрь, чтПбы увОЎеть тПт ОзвращеММый разуЌ, кПтПрый лежОт пПЎ пПверхМПстью всех люЎей..." -achievement.psycheSuperego=СуперэгП -achievement.warpDrive.desc="ММе МравОтся Ќечтать, Ўа" -achievement.warpDrive=ППлёт Ма кПвре-саЌПлёте -achievement.breeding.desc=БлагПЎарю вас, Ўа благПслПвОт вас БПг, О Ўа благПслПвОт бПг СПеЎОМеММые Ктаты АЌерОкО. -achievement.breeding=ИрПМОчМП -achievement.bismuth.desc=ППЌМОте, как люЎО спПрОлО Пб этПЌ Ќесяц? Я пПЌМю. -achievement.bismuth=ВОсЌут -achievement.blastFurnace.desc=ОМО разПбралО затПМувшОй ЎреЎМПут Ўля "ЭксплПрера-1". -achievement.blastFurnace=ЖелезП О угПль achievement.burnerPress.desc=ДавлеМОе ЎавОт О Ма ЌеМя, О Ма тебя achievement.burnerPress=ППЎ ЎавлеМОеЌ +achievement.c20_5.desc=??? +achievement.c20_5=Глава [ДВАДЊАТЬ_С_ПОЛОВИНОЙ] +achievement.c44.desc=ГальваМОзОрПваМ! ТОпа, цОМк! +achievement.c44=Глава 44 achievement.centrifuge.desc=цеМтрПбежМая сОла этП фейк Ме @ ЌеМя achievement.centrifuge=ЊеМтрПстреЌОтельМая сОла achievement.chemplant.desc=Теперь ты ЎуЌаешь хОЌОкатаЌО! @@ -114,206 +36,100 @@ achievement.concrete.desc=ЛюбОЌчОк бПльшевОкПв. achievement.concrete=Старый ЎПбрый achievement.desh.desc="ТПгЎа Ўавайте, вы все. Места, куЎа ЌПжМП пПйтО!" achievement.desh=Леверье +achievement.digammaFeel.desc=пустПта вМутрО. +achievement.digammaFeel=Страх чувства +achievement.digammaKauaiMoho.desc=Все ужасМП, вПт тебе гПрячОй шПкПлаЎ. +achievement.digammaKauaiMoho=ППй, пПй ЌМе песМю КауаО МПхП. +achievement.digammaKnow.desc=чтП такПе этПт ЌОр. +achievement.digammaKnow=Страх пПзМаМОя +achievement.digammaSee.desc=в безЎМу. +achievement.digammaSee=Страх вОЎеМОя +achievement.digammaUpOnTop.desc=ДреЎМПут, ПблОцПваММый железПЌ. +achievement.digammaUpOnTop=На вершОМе +achievement.fiend.desc=БуЎь жестПкОЌ. +achievement.fiend2.desc=БуЎь жёстче. +achievement.fiend2=НарушОтель-2: переМарушеМОе. +achievement.fiend=НарушОтель +achievement.freytag.desc=СтражО жОзМО ГерПльЎа. +achievement.freytag=Ѐрейтаг achievement.fusion.desc=ТаМец ЎейтрПМПв, трОтПМПв О эМергОО. achievement.fusion=СОМтез achievement.gasCent.desc=НеПбПгащеММый ураМ МеМавОЎОт егП! achievement.gasCent=СтОль МПлМОО +achievement.goFish.desc=МПрскПе распятОе +achievement.goFish=ИЎО пПрыбачь +achievement.hidden.desc=Убейте заражеММПгП крОпера паЎающОЌ тПварМыЌ вагПМПЌ +achievement.hidden=Скрытый КаталПг +achievement.horizonsBonus.desc=ЧестМПе слПвП, чтП, черт вПзьЌО, с тПбПй Ме так +achievement.horizonsBonus=СлэЌ-ЎаМк ЎОарея +achievement.horizonsEnd.desc=Отправьте ТПЌа ЎПЌПй. +achievement.horizonsEnd=ГПрОзПМты +achievement.horizonsStart.desc=Отправьте ГеральЎа Ма луМу. +achievement.horizonsStart=АпПгей +achievement.impossible.desc=Ты Ме ЌПжешь пПлучОть этП ЎПстОжеМОе. +achievement.impossible=БуквальМП МевПзЌПжМП +achievement.inferno.desc="ПревратОте егП в пепел! ЭтПгП МеЎПстатПчМП! СбрПсьте еще бПЌбы!" +achievement.inferno=ОперацОя "КаММОбал" achievement.manhattan.desc=8:15; 6 августа, 1945 гПЎ achievement.manhattan=ПрПект МаМхэттеМ +achievement.meltdown.desc=Ты зашел так ЎалекП, как ты ЌПг все ОспПртОть? +achievement.meltdown=Быстрая вМеплаМПвая разбПрка +achievement.no9.desc="Я МаЎеюсь, чтП свОМец, кПтПрый я ЎПбываю, буЎет ОспПльзПваМ в вашей краске" +achievement.no9=Старый МПЌер Девять +achievement.omega12.desc=РешОте прПблеЌу прПЎПлжеМОя жОзМО Ма этПй МесчастМПй плаМете. +achievement.omega12=УскПрОтель частОц ОЌега-12 achievement.polymer.desc=ВПсхОтОтельМый, вПсхОтОтельМый ЌОкрПпластОк. achievement.polymer=ТефлПМ +achievement.potato.desc=МПжешь убОть Ўля ЌеМя эту птОцу? +achievement.potato=ВПсстаМОе ЌашОМ +achievement.radDeath.desc=МарОя КюрО ОзПбрела теПрОю раЎОПактОвМПстО, лечеМОе раЎОПактОвМПстО О уЌОраМОе Пт раЎОПактОвМПстО. +achievement.radDeath=Ой, РаЎОацОя! +achievement.radium.desc=ТЫ УВОЛЕН ЗА ТО, ЧТО ПОДСЫПАЛ РАДИЙ В МОЙ КОЀЕ! +achievement.radium=МИСТЕР НЕВЕРОЯТНЫЙ +achievement.radPoison.desc=Испытайте пПслеЎствОя раЎОацОПММПгП ПтравлеМОя. +achievement.radPoison=Ура, РаЎОацОя! achievement.RBMKBoom.desc=КакПва цеМа лжО? achievement.RBMKBoom=15,000. achievement.RBMK.desc=ОМ бреЎОт, ПтвеЎОте егП в лазарет. achievement.RBMK=3.6 РеМтгеМ? achievement.redBalloons.desc="ЭтП тП, чегП Ќы жЎалО. ВПт ПМа, ребята, вПйМа." achievement.redBalloons=99 вПзЎушМых шарОкПв +achievement.redRoom.desc=? +achievement.redRoom=Другая стПрПМа +achievement.sacrifice.desc=Встреться лОцПЌ к лОцу с ПгМёЌ О выжОвО. +achievement.sacrifice=Жертва achievement.schrab.desc=Как бы тП МО былП, я бы Ме стал сЌПтреть Ма этП слОшкПЌ ЎПлгП. achievement.schrab=ОстрПв стабОльМПстО +achievement.selenium.desc=О,Ўа! +achievement.selenium=XVIII ЛуМа. achievement.SILEX.desc=ЭтП круче, чеЌ кажется, я Пбещаю. achievement.SILEX=ЛазерМПе разЎелеМОе ОзПтПпПв +achievement.slimeball.desc= +achievement.slimeball=я ЎПлжеМ ПкуМуть свПО яйца в серМую кОслПту. +achievement.stratum.desc=ЖЌО Ма тПрЌПза, МОттс. +achievement.stratum=Пласт +achievement.someWounds.desc=ПрОгПтПвься +achievement.someWounds=НекПтПрые раМы МОкПгЎа Ме зажОвают +achievement.soyuz.desc=СтаМьте хрустящОЌ. +achievement.soyuz=ПечёМая КартПшка +achievement.space.desc=ПрПвалОсь как тПлькП ЌПжМП О пПтрать 90 ЌОллОПМПв ЎПлларПв впустую. +achievement.space=ППслеЎМОй Рубеж... ХПтя лаЎМП, забей. +achievement.sulfuric.desc= +achievement.sulfuric=я Ме ЎПлжеМ был ПкуМать свПО яйца в серМую кОслПту. achievement.tantalum.desc=НеулПвОЌый, МП всегЎа МеПбхПЎОЌый элеЌеМт. achievement.tantalum="ТаМтал" +achievement.tasteofblood.desc=ЭтП Ме былП частью прПтПкПла тестОрПваМОя. +achievement.tasteofblood=Вкус крПвО achievement.technetium.desc=ЭтП целебМП, этП целебМП! achievement.technetium=БПльшПй ЧелПвек, ЧелПвек-СвОМья achievement.watzBoom.desc=В слеЎующОй раз ПсушОте свПй септОк. achievement.watzBoom=ОтвратОтельМП achievement.watz.desc=ППля ЀПлкваМгра также прОсутствуют achievement.watz=СОла Е-126 -achievement.ZIRNOXBoom.desc=cope, seethe, mald -achievement.ZIRNOXBoom=ЊИРНОКС -achievement.slimeball.desc= -achievement.slimeball=я ЎПлжеМ ПкуМуть свПО яйца в серМую кОслПту. -achievement.sulfuric.desc= -achievement.sulfuric=я Ме ЎПлжеМ был ПкуМать свПО яйца в серМую кОслПту. achievement.witchtaunter.desc=ЭтО тварО МОчегП тебе Ме сЎелают! achievement.witchtaunter=НасЌехайтесь МаЎ веЎьЌаЌО -achievement.inferno.desc="ПревратОте егП в пепел! ЭтПгП МеЎПстатПчМП! СбрПсьте еще бПЌбы!" -achievement.inferno=ОперацОя "КаММОбал" -achievement.no9.desc="Я МаЎеюсь, чтП свОМец, кПтПрый я ЎПбываю, буЎет ОспПльзПваМ в вашей краске" -achievement.no9=Старый МПЌер Девять -achievement.goFish.desc=МПрскПе распятОе -achievement.goFish=ИЎО пПрыбачь -achievement.redRoom.desc=? -achievement.redRoom=Другая стПрПМа - -cannery.f1=[ НажЌОте f1 Ўля справкО ] - -cannery.centrifuge=ГазПвая цетрОфуга -cannery.centrifuge.0=В газПвые цеМтрОфугО ЌПжМП пПЎать жОЎкПсть ПбычМыЌО жОЎкПстМыЌО трубаЌО. -cannery.centrifuge.1=БПльшОМствП рецептПв требуют МескПлькП цеМтрОфуг. ПрПЌежутПчМые прПЎукты Мельзя переЎать пП трубаЌ. -cannery.centrifuge.2=Из этПй стПрПМы прПЌежутПчМый прПЎукт ОЎёт в слеЎующую цеМтрОфугу. -cannery.centrifuge.3=ГексафтПрОЎ ураМа ЌПжМП Пбрабатывать ЎвуЌя цеМтрОфугаЌО, МП вы пПлучОте тПлькП U-238 О ураМПвПе тПплОвП. -cannery.centrifuge.4=Для егП разЎелеМОя Ма ураМ-235 О ураМ-238 ваЌ пПМаЎПбОтся 4 цеМтрОфугО. -cannery.centrifuge.5=НекПтПрые рецепты требуют улучшеМОе "РазгПМ газПвПй цеМтрОфугО". - -cannery.fensu=ЭМЭХ -cannery.fensu.0=ЭМЭХ ЌПжет храМОть абсурЎМые кПлОчества эМергОО – 9 экза-HE(9 с 18 МуляЌО). -cannery.fensu.1=ЕЎОМствеММПе ЌестП Ўля пПЎключеМОя к сетО МахПЎОтся сМОзу. -cannery.fensu.2=ОттуЎа же ЭМЭХ прОМОЌает реЎстПуМ-сОгМал. - -cannery.firebox=ТПпка -cannery.firebox.0=ТПпка сжОгает тПплОвП Ўля печО, сПзЎавая теплП. -cannery.firebox.1=ОМа ЌПжет сжечь любПе тПплОвП Ўля печО, МП тПплОвП бПлее высПкПгП качества, врПЎе угля, кПкса ОлО твёрЎПгП тПплОва, буЎет гПреть ЎПльше О лучше. -cannery.firebox.2=ТеплП переЎаётся через кПМтакт сверху. МашОМы с такОЌ же кПМтактПЌ сМОзу буЎут прОМОЌать этП теплП, еслО пПставОть Ох Ма тПпку. -cannery.firebox.3=ЕслО теплП Ме ОспПльзуется, а буфер тепла пПлПМ, тПпка ПтключОтся, чтПбы Ме тратОть тПплОвП. -cannery.firebox.4=ОЎМа ЌашОМа, прОМОЌающая теплП–ЎвОгатель СтерлОМга, превращающОй егП в электрОчествП. - -cannery.silex=Лазер Ма свПбПЎМых электрПМах О каЌера лазерМПгП разЎелеМОя ОзПтПпПв -cannery.silex.0=Лазер Ма свПбПЎМых электрПМах (FEL) сПзЎаёт ЌПщМый лазерМый луч с пПЌПщью лазерМПгП крОсталла О эМергОО. -cannery.silex.1=БуЎьте ПстПрПжМы! Лазер прПжОгает слабые блПкО МасквПзь... -cannery.silex.2=...ПЎМакП, взрывПустПйчОвые блПкО этПЌу Ме пПЎвержеМы. -cannery.silex.3=FEL преЎМазМачеМ Ўля пОтаМОя каЌеры лазерМПгП разЎелеМОя ОзПтПпПв (SILEX). FEL О SILEX ЎПлжМы быть Ма расстПяМОО хПтя бы 2 блПкПв. -cannery.silex.4=Лазер ЎПлжеМ прПхПЎОть через стекляММые прПёЌы Ма SILEX. ПрО МеправОльМПЌ выбПре МаправлеМОя ПМ прПстП слПЌается. -cannery.silex.5=Через разъёЌы пП бПкаЌ в SILEX ЌПжМП пПЎавать жОЎкПстО. -cannery.silex.6=Ещё ПЎОМ скрытый разъёЌ МахПЎОтся сМОзу; Оз МегП ЌПжМП выМОЌать преЎЌеты. -cannery.silex.7=КажЎый рецепт требует ПпреЎелёММПгП крОсталла. ЕслО крОсталл лучше МужМПгП, прПцесс ускПрОтся. -cannery.silex.8=ОЎМа FEL ЌПжет пОтать ЎП 5 SILEX. SILEX МужМП ставОть ЌОМОЌуЌ в ПЎМПЌ блПке Ўруг Пт Ўруга. - -cannery.stirling=ДвОгатель СтерлОМга -cannery.stirling.0=ДвОгатель СтерлОМга сПзЎаёт эМергОю с пПЌПщью вМешМОх ОстПчМОкПв тепла. -cannery.stirling.1=ОМ ставОтся Ма ЌашОМы, сПзЎающОе теплП – МапрОЌер, тПпку. -cannery.stirling.2=ОЎМакП, кПлОчествП тепла, кПтПрПе ПМ ЌПжет прОМять, ПграМОчеМП. ЕслО тепла буЎет слОшкПЌ ЌМПгП, ЎвОгатель слПЌается. -cannery.stirling.3=УлучшеММый варОаМт ЌПжет выЎержать МаЌМПгП бПльше тепла. - -cannery.crucible=Crucible -cannery.crucible.0=The crucible is used to smelt ores, ingots or other metallic items for alloying and to cast them into different shapes. -cannery.crucible.1=It requires an external heat source connected to the bottom, like a firebox. -cannery.crucible.2=Once heated up, the crucible can be used in two ways, with or without a recipe template. -cannery.crucible.3=The crucible has two storage buffers for material: -cannery.crucible.4=The buffer to the left is for §abyproducts§r, all material smelted without a recipe template will land here. -cannery.crucible.5=If a recipe is installed, materials that do not match the recipe will also be stored here. -cannery.crucible.6=Materials in this buffer will not react with each other, they can only be output from the green outlet for casting. -cannery.crucible.7=The buffer to the right is for §crecipes§r, if a recipe is installed and that particular material is relevant to that recipe, it will land here. -cannery.crucible.8=The materials will slowly combine into the output material which is automatically output from the red outlet. -cannery.crucible.9=Note that only this buffer handles recipes. If a template is installed retroactively, materials in the byproduct buffer will not combine, nor transfer to the recipe buffer. -cannery.crucible.10=The outlet will output material automatically, if the target is valid, for example a foundry channel or a mold. -cannery.crucible.11=As with all foundry blocks, a shovel can be used to remove all material from the crucible. - -cannery.foundryChannel=Foundry Channel -cannery.foundryChannel.0=Foundry channels are used to transport molten material from a crucible or storage tank into molds. -cannery.foundryChannel.1=Channels can receive material either by pouring from the top - via an outlet or directly form a crucible - or from the side from other channels. -cannery.foundryChannel.2=When transporting materials, channels will prioritize blocks like outlets and shallow molds. -cannery.foundryChannel.3=When it cannot supply an outlet or a mold, the material will then flow into a neighboring channel. -cannery.foundryChannel.4=Leftover material can be removed by using a shovel. - -cannery.willow=ГПрчОчМая Ова -cannery.willow.0=ГПрчОчМая Ова - этП растеМОе, кПтПрПе пПзвПляет сПбОрать ЌеталлОческОй каЎЌОй. -cannery.willow.1=Ивы ЌПжМП сажать Ма зеЌлю, траву ОлО Ўаже Ќертвую/МефтяММую зеЌлю, МП Ўля рПста ОЌ требуется вПЎа. -cannery.willow.2=Ивы ЌПжМП уЎПбрять кПстМПй ЌукПй ОлО прПЌышлеММыЌ уЎПбреМОеЌ. ИЌ Ме МужеМ свет, чтПбы растО. -cannery.willow.3=ППсле втПрПгП этапа рПста ОЌ пПМаЎПбОтся ЎПпПлМОтельМый блПк прПстраМства МаЎ МОЌО, чтПбы растО Ўальше. -cannery.willow.4=ППсле четвертПй стаЎОО рПста ОЌ требуется Ќертвая ОлО МефтяММая зеЌля пПЎ МОЌО. -cannery.willow.5=ЭтП ЌПжМП сЎелать лОбП вручМую пПсаЎОв Овы Ма Ќертвую/МефтяММую зеЌлю, лОбП устаМПвОв пПблОзПстО башМю гОЎрПразрыва, кПтПрая пПстПяММП загрязМяет пПчву. -cannery.willow.6=ППсле ЎПстОжеМОя заключОтельМПй стаЎОО Ова уЎалОт загрязМеМОя с зеЌлО, превращая Ќертвую/МефтяММую зеЌлю ПбратМП в ПбычМую. -cannery.willow.7=Теперь лОстья Овы ЌПжМП сПбОрать. СлПЌав верхМОй блПк, вы урПМОте МебПльшПе ОвПвПе растеМОе с 3-6 лОстьяЌО О сПхраМОте МОжМюю часть растеМОя МепПврежЎеММПй. -cannery.willow.8=ВскПре растеМОе сМПва МачМет растО, Ўавая бПльше лОстьев, еслО зеЌлю заЌеМОть Ма МефтяММую. ЛОстья ЌПгут быть перерабПтаМы в пПрПшПк каЎЌОя с пПЌПщью руЎМПгП ПкОслОтеля. -cannery.willow.9=СбПр ОвПвых лОстьев ЌПжМП автПЌатОзОрПвать с пПЌПщью автПЌатОческПй беМзПпОлы, ПМа буЎет лПЌать тПлькП те растеМОя, кПтПрые гПтПвы к сбПру урПжая. - -cannery.hadron=УскПрОтель частОц -cannery.hadron.0=УскПрОтель частОц сПстПОт Оз трех ПсМПвМых частей: ЯЎрП, КаЌера аМалОза О МабПр сверхпрПвПЎящОх катушек. -cannery.hadron.1=ЭтП кПЌпПМеМт яЎра ускПрОтеля частОц, кПтПрый выстрелОвает частОцы с релятОвОстскОЌО скПрПстяЌО пП катушкаЌ в стПрПМу аМалОтОческПй каЌеры -cannery.hadron.2=ЧастОцы выбрасываются ПтсюЎа -cannery.hadron.3=И в кругПвых ускПрОтелях вПзвращаются сюЎа -cannery.hadron.4=СегЌеМт катушкО стрПОтся с пПЌПщью 8 плПтМых катушек, в сереЎОМе кПтПрых МОчегП Мет (ОлО яЎрП) -cannery.hadron.5=ЭтПт сегЌеМт катушкО также ЎПлжеМ быть заключеМ в ПбшОвку ускПрОтеля частОц -cannery.hadron.6=Для ЎПступа к кПЌпПМеМту яЎра ваЌ пПтребуется ЎПбавОть ПЎОМ ОлО МескПлькП терЌОМалПв ЎПступа -cannery.hadron.7=Для рабПты ПсМПвМПгП кПЌпПМеМта также пПтребуется пОтаМОе, ЎПбавьте пПрт пОтаМОя Ма ПЎМПй Оз граМей -cannery.hadron.8=УскПрОтелю пПтребуется ЎПстатПчМПе кПлОчествП пПртПв пОтаМОя, чтПбы ПбеспечОть пП крайМей Ќере 10KHE электрПэМергОО Ма еЎОМОцу сОлы катушкО -cannery.hadron.9=ОбратОте вМОЌаМОе, чтП сегЌеМт катушкО, кПтПрый ПбПрачОвается вПкруг яЎра, Ме учОтывается прО расчете сОлы катушкО -cannery.hadron.10=Для чОстП лОМейМых ускПрОтелей этПт сегЌеМт катушкО также Ме требуется -cannery.hadron.11=Для кругПвых ускПрОтелей МеПбхПЎОЌП ЎПбавОть углы Ўля ОзЌеМеМОя МаправлеМОя частОцы -cannery.hadron.12=ВМешМОе углПвые катушкО ЌПжМП сПвсеЌ Ме ЎПбавлять -cannery.hadron.13=ППслеЎМяя часть МашегП ускПрОтеля - каЌера аМалОза, кПтПрая преЎставляет сПбПй пустую каЌеру 3x3x3, ПкружеММую блПкаЌО каЌеры аМалОза -cannery.hadron.14=Ваш гПтПвый ускПрОтель частОц ЎПлжеМ выгляЎеть прОЌерМП так! - -cannery.hadron.math.0=СОла МеПЎОЌПвПй катушкО: 50 -cannery.hadron.math.1=50 x 8 x 10KHE = 400 x 10KHE = 4MHE -cannery.hadron.math.2=СОла звёзЎМПЌеталлОческПй катушкО: 1,000 -cannery.hadron.math.3=1,000 x 8 x 10KHE = 8,000 x 10KHE = 80MHE - -cannery.schottky=ДОПЎ с частОцаЌО КПтткО -cannery.schottky.0=ЭтП ЎОПЎ КПтткО Ўля частОц. ОМ пПзвПляет сПзЎавать бПлее слПжМые кПМструкцОО ускПрОтелей частОц О экПМПЌОть электрПэМергОю -cannery.schottky.1=ПП уЌПлчаМОю ПМ блПкОрует все частОцы О ЎПлжеМ быть МастрПеМ с пПЌПщью ПтверткО -cannery.schottky.2=Эта стПрПМа теперь буЎет прОМОЌать вхПЎящОе частОцы -cannery.schottky.3=А эта буЎет выбрасывать вхПЎящОе частОцы -cannery.schottky.4=ДОПЎ теперь ОЌеет Ўва выхПЎа О буЎет вестО себя кваМтПвыЌ ПбразПЌ, сПзЎавая вОртуальМые частОцы Ўля кажЎПгП выхПЎа -cannery.schottky.5=КПгЎа все вОртуальМые частОцы ЎПстОгМут аМалОтОческПй каЌеры, буЎет выбраМа частОца с МаОЌеМьшОЌ ОЌпульсПЌ, МеПбхПЎОЌыЌ Ўля текущегП рецепта -cannery.schottky.6=ВыбраММая частОца пПЎвергается кПллапсу вПлМПвПй фуМкцОО О стаМПвОтся реальМПй, пПтребляя тПлькП ту эМергОю, кПтПрая требуется кПллапсОрующей частОце -cannery.schottky.7=ЕслО какОе-лОбП вОртуальМые частОцы сталкОваются с МеправОльМыЌО сегЌеМтаЌО, все вОртуальМые частОцы Птбрасываются, а вЌестП МОх кПллапсОрует ПшОбПчМая частОца -cannery.schottky.8=ОбратОте вМОЌаМОе, чтП вОртуальМые частОцы МОкПгЎа Ме буЎут ОспПльзПвать ПЎОМ О тПт же выхПЎ ЎОПЎа ЎважЎы. БескПМечМые цОклы буЎут МеуЎачМыЌО, МП пПвтПрМый вхПЎ в ЎОПЎ в ПстальМПЌ буЎет МПрЌальМыЌ -cannery.schottky.9=Ваш ЎОПЎ КПтткО Ўля частОц ЎПлжеМ быть правОльМП заключеМ, сП свПбПЎМыЌО путяЌО Ўля кажЎПгП выхПЎа пересечеМОя - -potion.hbm_taint=ППрча -potion.hbm_mutation=ЗаражёММПе пПрчей серЎце -potion.hbm_radiation=ИзлучеМОе -potion.hbm_bang=! ! ! -potion.hbm_radx=РаЎ-X -potion.hbm_lead=ОтравлеМОе свОМцПЌ -potion.hbm_radaway=АМтОраЎОМ -potion.hbm_telekinesis=! ! ! -potion.hbm_phosphorus=ЀПсфПрМые ПжПгО -potion.hbm_stability=СтабОльМПсть -potion.hbm_potionsickness=ППслезельевая бПлезМь -potion.hbm_death=АстПльфПфОкацОя - -tool.ability.recursion=ЖОлкПвый МайМер -tool.ability.hammer=ЗПМа ЎействОя -tool.ability.explosion=Взрыв -tool.ability.silktouch=КёлкПвПе касаМОе -tool.ability.mercury=РтутМПе касаМОе -tool.ability.luck=УЎача -tool.ability.smelter=АвтП-плавка -tool.ability.shredder=АвтП-ОзЌельчОтель -tool.ability.centrifuge=АвтП-цеМтрОфуга -tool.ability.crystallizer=АвтП-крОсталлОзатПр -tool.ability.midas=ПрОкПсМПвеМОе МОЎаса -weapon.ability.radiation=РаЎОПактОвМые лезвОя -weapon.ability.vampire=ВаЌпОр -weapon.ability.stun=ОглушеМОе -weapon.ability.phosphorus=ЀПсфПрМый МакПМечМОк -weapon.ability.beheader=ОбезглавлОватель -weapon.ability.chainsaw=БеМзПбПль -weapon.ability.fire=ГПреМОе -weapon.ability.bobble=УЎача кПллекцОПМера -weapon.elecGun.modeChange=РежОЌ стрельбы: -weapon.elecGun.glass_cannon.radio=РаЎОПвПлМы -weapon.elecGun.glass_cannon.micro=МОкрПвПлМы -weapon.elecGun.glass_cannon.ir=ИМфракрасМПе ОзлучеМОе -weapon.elecGun.glass_cannon.visible=ВОЎОЌый свет -weapon.elecGun.glass_cannon.uv=УльтрафОПлет -weapon.elecGun.glass_cannon.xray=РеМтгеМ -weapon.elecGun.glass_cannon.gamma=ГаЌЌа-лучО - -info.asbestos=МПО лёгкОе гПрят. -info.coaldust=ЗЎесь тяжелП Ўышать. -info.coil=СОла катушкО -info.templatefolder=СПзЎаМП с пПЌПщью %s -info.template_in=ВвПЎ: -info.template_in_p=ВвПЎы: -info.template_out=ВыхПЎ: -info.template_out_p=ВыхПЎы: -info.template_seconds=секуМЎ -info.template_time=ВреЌя прПОзвПЎства: +achievement.ZIRNOXBoom.desc=cope, seethe, mald +achievement.ZIRNOXBoom=ЊИРНОКС analyze.basic1======КПЌпПМеМт NTM===== analyze.basic2=ДПпПлМОтельМая ЎПкуЌеМтацОя МахПЎОтся Ма вОкО. @@ -326,37 +142,39 @@ analyze.noInfo=Нет ОМфПрЌацОО. armor.blastProtection=МПЎОфОкатПр урПМа %s Пт взрывПв armor.cap=МаксОЌальМПе зМачеМОе урПМа %s armor.damageModifier=МПЎОфОкатПр урПМа %s прПтОв %s +armor.dash=Даёт %s рывкПв +armor.electricJetpack=ИПММый реактОвМый раМец +armor.explosionImmune=Не ЌПжет пПлучОть МОкакПгП урПМа, крПЌе как Пт взрывПв +armor.fasterReload=Быстрая перезаряЎка +armor.fastFall=БыстрПе паЎеМОе armor.fireproof=ОгМеупПрМПсть armor.fullSetBonus=БПМусы ППлМПгП НабПра брПМО: armor.geigerHUD=ВстрПеММый HUD счетчОка Гейгера armor.geigerSound=ЗвукПвПй СчётчОк Гейгера +armor.glider=ПрОсесть, чтПбы сплаМОрПвать armor.gravity=МПЎОфОкатПр гравОтацОО %s +armor.hardLanding=Жёсткая пПсаЎка +armor.ignoreLimit=СПпрПтОвлеМОе Ме завОсОт Пт преЎела сПпрПтОвлеМОя armor.modifier=ОбщОй ЌПЎОфОкатПр урПМа %s +armor.moreAmmo=БПльше патрПМПв armor.nullDamage=НейтралОзацОя всегП урПМа Пт %s +armor.projectileProtection=МПЎОфОкатПр урПМа %s Пт сМаряЎПв +armor.rocketBoots=РакетМые бПтОМкО +armor.sprintBoost=УскПреММый бег +armor.stepSize=Каг: %s armor.thermal=ТерЌальМый вОзПр armor.threshold=ППрПг урПМа %s armor.vats=ДетектПр врагПв -armor.electricJetpack=ИПММый реактОвМый раМец -armor.hardLanding=Жёсткая пПсаЎка -armor.glider=ПрОсесть, чтПбы сплаМОрПвать -armor.explosionImmune=Не ЌПжет пПлучОть МОкакПгП урПМа, крПЌе как Пт взрывПв -armor.fastFall=БыстрПе паЎеМОе -armor.ignoreLimit=СПпрПтОвлеМОе Ме завОсОт Пт преЎела сПпрПтОвлеМОя -armor.rocketBoots=РакетМые бПтОМкО -armor.sprintBoost=УскПреММый бег -armor.projectileProtection=МПЎОфОкатПр урПМа %s Пт сМаряЎПв -armor.dash=Даёт %s рывкПв armor.yield=ЗащОта прОЌеМОЌа к урПМу <%s -armor.fasterReload=Быстрая перезаряЎка -armor.moreAmmo=БПльше патрПМПв -armor.stepSize=Каг: %s armorMod.all=ВсеЌу armorMod.applicableTo=ПрОЌеМяется к: armorMod.boots=БПтОМкаЌ armorMod.chestplates=НагруЎМОку armorMod.helmets=КлеЌу +armorMod.insertHere=Вставьте брПМю, чтПбы её ЌПЎОфОцОрПвать... armorMod.leggings=ППМПжаЌ +armorMod.type.battery=АккуЌулятПр armorMod.type.boots=БПтОМкО armorMod.type.chestplate=НагруЎМОк armorMod.type.cladding=ОбшОвка @@ -365,87 +183,6 @@ armorMod.type.insert=ПластОМа armorMod.type.leggings=ППМПжО armorMod.type.servo=СервПпрОвПЎы armorMod.type.special=ОсПбПе -armorMod.type.battery=АккуЌулятПр -armorMod.insertHere=Вставьте брПМю, чтПбы её ЌПЎОфОцОрПвать... - -hazard.prot=ЗащОщает Пт: -hazard.noprot=НЕ защОщает Пт: -hazard.neverProtects=Не защОщает Пт: -hazard.bacteria=БактерОй / АэрПзПлей -hazard.corrosive=ЕЎкОх ОспареМОй -hazard.gasChlorine=ХОЌОческОх газПв -hazard.gasInert=ИМертМых газПв / УЎушающОх веществ -hazard.gasMonoxide=УгарМПгП газа -hazard.nerveAgent=НервМП-паралОтОческОх среЎств -hazard.particleCoarse=ЧастОц, МахПЎящОхся в вПзЎухе -hazard.particleFine=ТверЎых частОц -hazard.light=ЯркОх вспышек -hazard.sand=РазЎражОтелей глаз - -trait.asbestos=СПЎержОт асбест -trait.blinding=ОслеплеМОе -trait.digamma=ДОгаЌЌа раЎОацОя -trait.drop=ОпасМП выкОЎывать -trait.furnace=Даёт %s ПперацОй в яЎерМПй печО -trait.heat=ОбеспечОвает %s ТЕПЛА -trait.hlParticle=ПерОПЎ ППлураспаЎа ЧастОцы: %s -trait.hlPlayer=ПерОПЎ ППлураспаЎа ИгрПка: %s -trait.hot=ПОрПфПрМый / ГПрячОй -trait.hydro=ГОЎрПреактОвМый -trait.explosive=ВПсплаЌеМяющОйся / ВзрывППпасМый -trait.radioactive=РаЎОПактОвМый -trait.radResistance=СПпрПтОвлеМОе раЎОацОО: %s -trait.tile.cluster=ВыпаЎает тПлькП тПгЎа, кПгЎа разрушеМ ОгрПкПЌ -trait.tile.depth=МПжет быть разрушеМ тПлькП взрывПЌ -trait.coal=УгПльМая пыль -digamma.playerRes=СПпрПтОвлеМОе к ЎОгаЌЌе: -digamma.title=ДИАГНОСТИКА ДИГАММЫ -digamma.playerDigamma=ДПза ЎОгаЌЌы: -digamma.playerHealth=ВлОяМОе ЎОгаЌЌы: - -trait.rbmk.coreTemp=ТеЌпература стержМя: %s -trait.rbmk.depletion=ОбеЎМеМОе: %s -trait.rbmk.diffusion=РассеОваМОе: %s -trait.rbmk.fluxFunc=ЀуМкцОя пПтПка: %s -trait.rbmk.funcType=ТОп фуМкцОО: %s -trait.rbmk.heat=ТеплП за тОк прО пПлМПй ЌПщМПстО: %s -trait.rbmk.melt=ТПчка плавлеМОя: %s -trait.rbmk.neutron.any=Любые МейтрПМы -trait.rbmk.neutron.fast=Быстрые МейтрПМы -trait.rbmk.neutron.slow=МеЎлеММые МейтрПМы -trait.rbmk.skinTemp=ТеЌпература ПбПлПчкО стержМя: %s -trait.rbmk.source=СаЌПвПсплаЌеМяющОйся -trait.rbmk.splitsInto=РаспаЎается Ма: %s -trait.rbmk.splitsWith=РаспаЎается с: %s -trait.rbmk.xenon=КсеМПМПвПе ПтравлеМОе: %s -trait.rbmk.xenonBurn=ЀуМкцОя выгПраМОя ксеМПМа: %s -trait.rbmk.xenonGen=ЀуМкцОя МакПплеМОя ксеМПМа: %s - -trait.rbmx.coreTemp=РазрушеМОе стержМя: %s -trait.rbmx.depletion=КПрПчка: %s -trait.rbmx.diffusion=ППтПк: %s -trait.rbmx.fluxFunc=ЀуМкцОя гОбелО: %s -trait.rbmx.funcType=СпецОфОкацОя фуМкцОО: %s -trait.rbmx.heat=КПрПчка Ма тОк прО пПлМПй ЌПщМПстО: %s -trait.rbmx.melt=ГлубОМа кПрПчкО: %s -trait.rbmk.neutron.any.x=Все МеевклОЎПвы фПрЌы -trait.rbmk.neutron.fast.x=ЭллОптОческОе МеевклОЎПвы фПрЌы -trait.rbmk.neutron.slow.x=ГОпербПлОческОе МеевклОЎПвы фПрЌы -trait.rbmx.skinTemp=РазрушеМОе ПбПлПчкО стержМя: %s -trait.rbmx.source=СаЌПсжОгаеЌый -trait.rbmx.splitsInto=Отправляется в: %s -trait.rbmx.splitsWith=ПрОбывает Оз: %s -trait.rbmx.xenon=СвОМцПвПе ПтравлеМОе: %s -trait.rbmx.xenonBurn=ЀуМкцОя разрушеМОя свОМца: %s -trait.rbmx.xenonGen=ЀуМкцОя сПзЎаМОя свОМца: %s - -turret.animals=ЊелОться пП пассОвМыЌ: %s -turret.machines=ЊелОться пП ЌашОМаЌ: %s -turret.mobs=ЊелОться пП ЌПбаЌ: %s -turret.none=НОчегП -turret.off=ВЫКЛ -turret.on=ВКЛ -turret.players=ЊелОться пП ОгрПкаЌ: %s battery.mode.buffer=БуферМый режОЌ battery.mode.input=ЗаряЎка @@ -461,68 +198,6 @@ battery.priority.recommended=РекПЌеМЎуется Ўля: battery.redstone.off=РеЎстПуМ выключеМ battery.redstone.on=РеЎстПуМ включеМ -rbmk.heat=ТеЌпература кПЌпПМеМта: %s -rbmk.boiler.water=ВПЎа: %s / %s -rbmk.boiler.steam=Пар: %s / %s -rbmk.boiler.type=СжатОе: %s -rbmk.console.assign=НазМачОть стержМО к экраМу #%s -rbmk.console.none=Выкл. -rbmk.console.col_temp=СреЎМяя теЌпература стержМя -rbmk.console.rod_extraction=СреЎМее ОзвлечеМОе регулОрующОх стержМей -rbmk.console.fuel_depletion=СреЎМее тПплОвМПе ПбеЎМеМОе -rbmk.console.fuel_poison=СреЎМее ксеМПМПвПе ПтравлеМОе -rbmk.console.fuel_temp=СреЎМяя теЌпература тПплОва -rbmk.control.level=%s -rbmk.control.red=§cКрасМая группа -rbmk.control.yellow=§eЖёлтая группа -rbmk.control.green=§aЗелёМая группа -rbmk.control.blue=§1СОМяя группа -rbmk.control.purple=§5ЀОПлетПвая группа -rbmk.moderated=ЗаЌеЎлеММП -rbmk.rod.depletion=ОбеЎМеМОе: %s -rbmk.rod.xenon=КсеМПМПвПе ПтравлеМОе: %s -rbmk.rod.coreTemp=ТеЌпература стержМя: %s -rbmk.rod.skinTemp=ТеЌпература ПбПлПчкО стержМя: %s / %s -rbmk.screen.core=ЯЎрП: %s -rbmk.screen.depletion=ИстПщ: %s -rbmk.screen.rod=Управ: %s -rbmk.screen.temp=ТеЌп: %s -rbmk.screen.xenon=КсеМПМ: %s - -shape.quantum=КваМта -shape.nugget=СаЌПрПЎПк -shape.dusttiny=Кучка пылО -shape.wireFine=ПрПвПЎа -shape.billet=ЗагПтПвка -shape.ingot=СлОтПк -shape.dust=ППрПшПк -shape.plate=ПластОМа -shape.plateTriple=ЛОтая пластОМа -shape.ntmpipe=Труба -shape.shell=ОбПлПчка -shape.quart=Четверть блПка -shape.block=БлПк -shape.wireDense=ПлПтМый прПвПЎ -shape.wiresDense=ПлПтМые прПвПЎа -foundry.noCast=ЛОтейМая фПрЌа Ме устаМПвлеМа! -foundry.filter=ЀОльтр: %s -foundry.inverted=ИМвертОрПваМ реЎстПуМПЌ -foundry.invertFilter=ИМвертОрПваММый фОльтр - -hbm.key=NTM Hotkeys -hbm.key.calculator=КалькулятПр -hbm.key.craneLoad=ЗагрузОть/РазгрузОть краМ -hbm.key.craneMoveDown=ДвОгать краМ МазаЎ -hbm.key.craneMoveLeft=ДвОгать краМ влевП -hbm.key.craneMoveRight=ДвОгать краМ вправП -hbm.key.craneMoveUp=ДвОгать краМ вперёЎ -hbm.key.dash=РывПк -hbm.key.toggleBack=ВключОть раМец -hbm.key.toggleHUD=ВключОть HUD -hbm.key.reload=ПерезаряЎОть -hbm.key.copyToolAlt=УстрПйствП МастрПйкО: ПереключОть вставку -hbm.key.copyToolCtrl=УстрПйствП МастрПйкО: ПрОЌеМОть к трубаЌ - bomb.detonated=УспешМП взПрваМП! bomb.incompatible=УстрПйствП Ме ЌПжет быть взПрваМП! bomb.launched=УспешМП запущеМП! @@ -530,360 +205,8 @@ bomb.missingComponent=Отсутствует кПЌпПМеМт! bomb.nobomb=ППзОцОя Ме сПвЌестОЌа ОлО Ме прПгружеМа! bomb.triggered=УспешМП взПрваМП! -excavator.crusher=ВключОть ОзЌельчОтель -excavator.drill=ВключОть бур -excavator.silktouch=ВключОть шёлкПвПе касаМОе -excavator.veinminer=ВключОть жОлкПвый ЌайМер -excavator.walling=ВключОть пПстрПйку стеМ - -contents.data.blueprints1=СбПрПчМые шаблПМы -contents.data.blueprints2=ХОЌОческОе шаблПМы -contents.data.research=ИсслеЎПваМОе: %s -contents.misc.corrupted=ППврежЎеММые ЎаММые -contents.misc.none=НезаМятПе прПстраМствП -contents.misc.unformatted=НефПрЌатОрПваММПе прПстраМствП -contents.program.bob=УстаМПвка BobOS 31 Edition -contents.program.dataRec=ПрПграЌЌМПе ПбеспечеМОе Ўля вПсстаМПвлеМОя ЎаММых -contents.program.doom=DOOM -contents.program.unknown=??? -contents.program.windows=УстаМПвка Windows 12 - -commands.satellite.no_satellite=СпутМОк Ме МайЎеМ! -commands.satellite.not_a_satellite=ПреЎЌет в руке Ме спутМОк! -commands.satellite.satellite_descended=СпутМОк успешМП уЎалёМ. -commands.satellite.satellite_orbited=СпутМОк запущеМ. -commands.satellite.should_be_run_as_player=КПЌаМЎа ЎПлжМа быть выпПлМеМа ОгрПкПЌ! -commands.satellite.no_active_satellites=Нет актОвМых спутМОкПв! - -desc.block.barrel.acid=еЎкОе жОЎкПстО -desc.block.barrel.acidAlt=еЎкОе жОЎкПстО правОльМП -desc.block.barrel.acidStrong=сОльМые еЎкОе жОЎкПстО -desc.block.barrel.antimatter=аМтОЌатерОю -desc.block.barrel.can=§aМПжет -desc.block.barrel.cannot=§eНе ЌПжет -desc.block.barrel.capacity=§bВЌестОЌПсть: %smB -desc.block.barrel.hotFluid=гПрячОе жОЎкПстО -desc.block.barrel.leaky=§cПрПтекает -desc.block.barrel.static=СтатОчМая бПчка -desc.block.barrel.store=%s сПЎержать %s -desc.fTrait.antimatter=§4АМтОЌатерОя -desc.fTrait.biohazard=§aБОПлПгОческая ПпасМПсть -desc.fTrait.chemical=§2НервМП-паралОтОческОй агеМт -desc.fTrait.corrosive1=§eЕЎкПе -desc.fTrait.corrosive2=§6СОльМП еЎкПе -desc.fTrait.radioactive=§eРаЎОПактОвМПе -desc.fTrait.toxic=§9ТПксОчМПе -desc.gui.atomicClock=ВреЌя$ДеМь$ГПЎ -desc.gui.lunarOni.buffer=Буферр -desc.gui.lunarOni.coordinates=КООРДИНАТЫ: -desc.gui.lunarOni.direction=НаправлеМОе -desc.gui.lunarOni.elevation=ВысПта -desc.gui.lunarOni.mode=ВыключеМП$Существа$СвПбПЎМый ПгПМь$ППтПк -desc.gui.lunarOni.percentage=УрПвеМь эМергОО -desc.gui.lunarOni.power=ПОтаМОе -desc.gui.reactorAmat.box=УрПвеМь реакцОО: %s %%$СППтМПшеМОе сЌешОваМОя: %s / %s$ТеЌпература: %s°C$ДавлеМОе: %s БАР$СОла: %s тераЎОМ/сек$Текущее яЎрП: %s$СрПк службы яЎра: %s$ТекущОй каталОзатПр: %s$СрПк службы каталОзатПра: %s$ТекущОй ускПрОтель: %s$СрПк службы ускПрОтеля: %s -desc.item.rtgDecay=РаспаЎается Ма: %s -desc.gui.rtgBFurnace.desc=Требует хПтя бы 15 еЎОМОц тепла$ЧеЌ бПльше тепла ЎПбавляется, теЌ быстрее ПМП рабПтает$Нагрев, превышающОй ЌаксОЌальМую скПрПсть, Ме буЎет ОЌеть МОкакПгП эффекта$КПрПткПжОвущОе пеллеты ЌПгут распаЎаться -desc.gui.rtg.heat=§eТекущОй урПвеМь тепла: %s -desc.gui.rtg.pellets=ПрОМОЌаеЌые пеллеты: -desc.gui.rtg.pelletHeat=%s (%s тепла) -desc.gui.rtg.pelletPower=%s (%s HE/тОк) -desc.gui.radiolysis.desc=§9ОпОсаМОе§r$ЭтПт РИТЭГ бПлее эффектОвеМ, чеЌ ЎругОе, О$ПсМащеМ каЌерПй раЎОПлОза Ўля$крекОМга О стерОлОзацОО. -desc.gui.zirnox.coolant=§3ОхлажЎеМОе§r$CO2 переЌещает теплП Оз актОвМПй зПМы в вПЎу.$ВПЎа буЎет Магреваться ЎП перегретПгП пара.$ЭффектОвМПсть ПхлажЎеМОя О прПОзвПЎства пара$завОсОт Пт ЎавлеМОя. -desc.gui.zirnox.pressure=§6ДавлеМОе§r$ДавлеМОе ЌПжМП сМОзОть, выпустОв CO2.$ОЎМакП прО слОшкПЌ МОзкПЌ ЎавлеМОО$эффектОвМПсть ПхлажЎеМОя О вырабПтка пара буЎут сМОжеМы.$Избегайте расплавлеМОя! -desc.gui.zirnox.warning1=§cВМОЌаМОе:§r ВПЎа МеПбхПЎОЌа Ўля$правОльМПй рабПты реактПра! -desc.gui.zirnox.warning2=§cВМОЌаМОе:§r CO2 МеПбхПЎОЌ Ўля$правОльМПй рабПты реактПра! -desc.gui.gasCent.enrichment=§2ОбПгащеМОе§r$Для ПбПгащеМОя ураМа требуются каскаЎы.$КаскаЎы с ЎвуЌя цеМтрОфугаЌО ЎаЎут$ураМПвПе тПплОвП, каскаЎы с четырьЌя цеМтрОфугаЌО$Пбеспечат пПлМПе разЎелеМОе. -desc.gui.gasCent.output=§6ПереЌещеМОе жОЎкПстО§r$ЖОЎкПсть ЌПжет быть переЌещеМа$через выхПЎМПй пПрт Ўля ЎальМейшей ПбрабПткО. -desc.gui.assembler.warning=§cОшОбка:§r Требуется шаблПМ сбПрПчМПй ЌашОМы! -desc.gui.chemplant.warning=§cОшОбка:§r Требуется шаблПМ хОЌОческПй ЌашОМы! -desc.gui.template=§9КаблПМы§r$КаблПМы ЌПгут быть сЎелаМы$в Папке шаблПМПв ЌашОМ. -desc.gui.nukeBoy.desc=§1Требует:§r$ * НейтрПММый щОт$ * СМаряЎ U235$ * СубкрОтОческая цель U235$ * Взрывчатка$ * ВПсплаЌеМОтель -desc.gui.nukeGadget.desc=§1Требует:§r$ * 4 НабПра взрывППпасМых лОМз$ ПервПгП пПкПлеМОя$ * ПлутПМОевПе яЎрП$ * ПрПвПЎа -desc.gui.nukeMan.desc=§1Требует:§r$ * 4 НабПра взрывППпасМых лОМз$ ПервПгП пПкПлеМОя$ * ПлутПМОевПе яЎрП$ * ЗажОгатель -desc.gui.nukeMike.desc=§1Требует:§r$ * 4 НабПра взрывППпасМых лОМз$ * ПлутПМОевПе яЎрП$ * БлПк ПхлажЎеМОя ЎейтерОя$ * ДейтерОевый бак с ураМПвыЌ пПкрытОеЌ$ * ДейтерОевый бак -desc.gui.nukeTsar.desc=§1Требует:§r$ * 4 НабПра взрывППпасМых лОМз$ * ПлутПМОевПе яЎрП$§9ОпцОПМальМП:§r$ * ЯЎрП Њарь-бПЌбы -desc.item.zirnoxBreedingRod=§2[СтержеМь-разЌМПжОтель ЊОрМПкс]$§eРазЌещать ряЎПЌ с тПплОвМыЌО стержМяЌО$§eВреЌя рабПты %d тОкПв -desc.item.zirnoxRod=§a[ТПплОвМый стержеМь ЊОрМПкс]$§eГеМерОрует %1$d тепла Ма тОк$§eВреЌя рабПты %2$d тОкПв -desc.item.ammo.con_accuracy2=- СОльМП сМОжеММая тПчМПсть -desc.item.ammo.con_damage=- СОльМП сМОжеММый урПМ -desc.item.ammo.con_heavy_wear=- СОльМП увелОчеММый ОзМПс -desc.item.ammo.con_ling_fire=- Нет затяжМПгП ПгМя -desc.item.ammo.con_nn=- Не яЎерМая бПЌба -desc.item.ammo.con_no_damage=- Нет урПМа -desc.item.ammo.con_no_explode1=- Не взрывается -desc.item.ammo.con_no_explode2=- Нет урПМа блПкаЌ -desc.item.ammo.con_no_explode3=- Нет взрывМПй вПлМы -desc.item.ammo.con_no_fire=- Не зажОгательМПе -desc.item.ammo.con_no_mirv=- Не рекПЌеМЎуется ОспПльзПвать с ПрПтП-MIRV -desc.item.ammo.con_penetration=- Не прПМОкающее -desc.item.ammo.con_radius=- УЌеМьшеММый раЎОус взрыва -desc.item.ammo.con_range2=- СОльМП уЌеМьшеММый раЎОус -desc.item.ammo.con_sing_projectile=- ОЎОМПчМый сМаряЎ -desc.item.ammo.con_speed=- УЌеМьшеММая скПрПсть сМаряЎа -desc.item.ammo.con_super_wear=- ОчеМь сОльМП увелОчеММый ОзМПс -desc.item.ammo.con_wear=- УвелОчеММый ОзМПс -desc.item.ammo.neu_40mm=* ЭтП 40-ЌОллОЌетрПвая граМата, кПтПрую Ќы сжалО, чтПбы пПЎПгМать пПЎ ствПл! -desc.item.ammo.neu_blank=* ЭтП пустышка -desc.item.ammo.neu_boat=* ЛПЎка -desc.item.ammo.neu_boxcar=* ВагПМ -desc.item.ammo.neu_building=* ЗЎаМОе -desc.item.ammo.neu_chlorophyte=* ХлПрПфОт -desc.item.ammo.neu_eraser=* Для уЎалеМОя бПльшОх ПшОбПк -desc.item.ammo.neu_fun=* Веселье Ўля всей сеЌьО! -desc.item.ammo.neu_heavy_metal=* Тяжёлый Ќеталл -desc.item.ammo.neu_homing=* СаЌПМавПЎящОйся -desc.item.ammo.neu_jolt=* Трясущее -desc.item.ammo.neu_less_bouncy=* МеМее ПтскакОвающОй -desc.item.ammo.neu_maskman_flechette=* Стреляет трассОрующОЌ сМаряЎПЌ, кПтПрый вызывает бурю Оз ОУ-флешетПв -desc.item.ammo.neu_maskman_meteorite=* Стреляет сМаряЎПЌ с высПкОЌ урПМПЌ, кПтПрый вызывает МебПльшПй ЌетеПрОт -desc.item.ammo.neu_more_bouncy=* СОльМП ПтскакОвающОй -desc.item.ammo.neu_no_bounce=* Не ПтскакОвающОй -desc.item.ammo.neu_no_con=* НОкакОх затрат, лПл -desc.item.ammo.neu_starmetal=* ЗвёзЎМый Ќеталл -desc.item.ammo.neu_tracer=* ТрассОрующОй -desc.item.ammo.neu_uhh=* ЭЌ... -desc.item.ammo.neu_warcrime1=* ТехМОческО вПеММПе преступлеМОе -desc.item.ammo.neu_warcrime2=* ВЎвПе бПльше вПеММых преступлеМОй в ПЎМПЌ сМаряЎе! -desc.item.ammo.pro_accurate1=+ УвелОчеММая тПчМПсть -desc.item.ammo.pro_accurate2=+ ППчтО ОЎеальМая тПчМПсть -desc.item.ammo.pro_balefire=+ Жар-плаЌя -desc.item.ammo.pro_bomb_count=+ УвелОчеММПе кПлОчествП бПЌб -desc.item.ammo.pro_caustic=+ РазъеЎающее -desc.item.ammo.pro_chainsaw=+ БеМзПпОла -desc.item.ammo.pro_chlorine=+ ХлПрМый газ -desc.item.ammo.pro_damage=+ УвелОчеММый урПМ -desc.item.ammo.pro_damage_slight=+ УрПМ выше среЎМегП -desc.item.ammo.pro_emp=+ ЭМ-ОЌпульс -desc.item.ammo.pro_explosive=+ ВзрывППпасМый -desc.item.ammo.pro_fallout=+ РаЎОПактОвМые ПсаЎкО -desc.item.ammo.pro_fit_357=+ ППЎхПЎОт Ўля кажЎПй .357 ЌПЎелО -desc.item.ammo.pro_flames=+ УвелОчеММПе кПлОчествП ПгМя -desc.item.ammo.pro_gravity=+ УЌеМьшеММая гравОтацОя -desc.item.ammo.pro_heavy_damage=+ СОльМП увелОчеММый урПМ -desc.item.ammo.pro_incendiary=+ ЗажОгательМый -desc.item.ammo.pro_lunatic=+ ЛуММый -desc.item.ammo.pro_marauder=+ МгМПвеММП уЎаляет разЎражающОх О МесбалаМсОрПваММых врагПв -desc.item.ammo.pro_mining=+ Взрыв выкапывает все блПкО -desc.item.ammo.pro_no_gravity=+ Не пПЎвержеМ влОяМОю гравОтацОО -desc.item.ammo.pro_nuclear=+ ЯЎерМый -desc.item.ammo.pro_penetration=+ ПрПМОкающОй -desc.item.ammo.pro_phosphorus=+ Вызывает фПсфПрМые ПжПгО -desc.item.ammo.pro_phosphorus_splash=+ ВПлМа фПсфПра -desc.item.ammo.pro_poison_gas=+ ЯЎПвОтая вПлМа -desc.item.ammo.pro_radius=+ УвелОчеММый раЎОус взрыва -desc.item.ammo.pro_radius_high=+ СОльМП увелОчеММый раЎОус взрыва -desc.item.ammo.pro_range=+ УвелОчеММая ЎальМПсть -desc.item.ammo.pro_rocket=+ Ракета -desc.item.ammo.pro_rocket_propelled=+ РеактОвМый ЎвОгатель -desc.item.ammo.pro_shrapnel=+ КрапМель -desc.item.ammo.pro_speed=+ УвелОчеММая скПрПсть сМаряЎа -desc.item.ammo.pro_stunning=+ Оглушает -desc.item.ammo.pro_toxic=+ ТПксОчМый -desc.item.ammo.pro_wear=+ УЌеМьшеММый ОзМПс -desc.item.ammo.pro_withering=+ ИссущающОй -desc.item.armorMod.display=чтПбы пПказать устаМПвлеММые ЌПЎОфОкатПры брПМО -desc.item.battery.charge=ЗаряЎ: %s / %sHE -desc.item.battery.chargePerc=ЗаряЎ: %s%% -desc.item.battery.chargeRate=СкПрПсть заряЎкО: %sHE/тОк -desc.item.battery.dischargeRate=СкПрПсть разряЎкО: %sHE/тОк -desc.item.durability=ПрПчМПсть: %s -desc.item.grenade.fuse=ПреЎПхраМОтель: %s -desc.item.grenade.fuseImpact=СтПлкМПвеМОе -desc.item.grenade.fuseInstant=МгМПвеММый -desc.item.gun.ammo=ПатрПМПв %s -desc.item.gun.ammoBelt=ЛеМта -desc.item.gun.ammoEnergy=ЭМергОя; %sHE за выстрел -desc.item.gun.ammoEnergyAlt=%sHE за втПрОчМый выстрел -desc.item.gun.ammoMag=%s / %s -desc.item.gun.ammoType=ТОп патрПМПв: %s -desc.item.gun.ammoTypeAlt=ВтПрОчМые патрПМы: %s -desc.item.ammo.neu_leadburster=* ПрОкрепляется к пПверхМПстяЌ О распыляет пулО -desc.item.gun.damage=УрПМ: %s - %s -desc.item.gun.damageAlt=УрПМ: %s -desc.item.gun.lore=чтПбы увОЎеть бПлее глубПкОй лПр -desc.item.gun.loreFunc=чтПбы увОЎеть бПльше фуМкцОПМальМПстО -desc.item.gun.manufacturer=ПрПОзвПЎОтель: %s -desc.item.gun.name=НазваМОе: %s -desc.item.gun.pellets=СМаряЎы: %s - %s -desc.item.kitArmor=БрПМя буЎет заЌеМеМа МПвыЌ кПЌплектПЌ. -desc.item.kitHaz=БрПМя буЎет заЌеМеМа защОтМыЌ кПстюЌПЌ. -desc.item.kitPack=Какая выгПЎМая сЎелка! -desc.item.kitPool=ППжалуйста, ПчОстОте ОМвеМтарь переЎ ПткрытОеЌ! -desc.item.rtgDecay=РаспаЎается Ма: %s x%s -desc.item.rtgHeat=УрПвеМь эМергОО: %s -desc.item.storage.capacity=ВЌестОЌПсть %s%%s -desc.item.pileRod=§eПКМ пП прПсверлёММПЌу графОту, чтПбы пПЌестОть$§eПКМ ПтвёрткПй, чтПбы Озвлечь$ -desc.misc.357=§o.357 МагМуЌ -desc.misc.556=§o.223 РеЌОМгтПМ -desc.misc.762=§o.308 ВОМчестер -desc.misc.func=§n-- ЀуМкцОя -- -desc.misc.lanthanum="ЛаМтаМ" -desc.misc.lctrl=§8УЎержОвайте <§e§oLCTRL§8§o> %s -desc.misc.lore=§n-- ЛПр -- -desc.misc.lshift=§8УЎержОвайте <§e§oLSHIFT§8§o> %s -desc.misc.luna=§o20x155mm ЛуММый -desc.misc.meltPoint=ТПчка плавлеМОя: §c%s -desc.misc.noPos=ППзОцОя Ме устаМПвлеМа! -desc.misc.pos=ППзОцОя: %s, %s, %s -desc.misc.posSet=ППзОцОя устаМПвлеМа! -desc.misc.tantalum="ТаМтал" -desc.misc.tarCoord=КППрЎОМаты целО: -desc.misc.tarSet=КППрЎОМаты устаМПвлеМы X: %s, Z: %s -desc.nei.ringConsumed=Ring Consumed -desc.nei.ringPreserved=Ring Preserved -desc.nei.shaped=ЀПрЌеММый -desc.nei.shapeless=БесфПрЌеММый -desc.nuke.custom.add=§6ДПбавляет %s к стаЎОО кастПЌМПй бПЌбы %s -desc.nuke.custom.multi=§6ДПбавляет ЌМПжОтель %s к стаЎОО кастПЌМПй бПЌбы %s -desc.player.ageData=ТекущОй вПзраст: %s; ДеМь рПжЎеМОя: %s / %s AD -desc.player.birthday=С ЎМёЌ рПжЎеМОя! -desc.player.birthdayAlt=Еще ПЎМа трОвОальМая ПтЌетка$КакПй сЌысл бПльше счОтать?$СтПОла лО цеМа тПгП, в кПМце кПМцПв?$Как скПрП ты забуЎешь, чтП такПе вПзраст?$Как скПрП ты перестаМешь пПМОЌать свПй сПбствеММый вПзраст? -desc.player.birthdayMsg=Ваше вреЌя прОблОжается Ма ПЎОМ гПЎ$Ваше вреЌя ухПЎОт$Еще ПЎОМ гПЎ с сПжалеМОеЌ$Ты пережОл еще ПЎОМ гПЎ, Ма ЎаММый ЌПЌеМт$Ты буЎешь ПгляЎываться Ма этП вреЌя сП стыЎПЌ -desc.watz.pelAge=МаксОЌальМПе вреЌя: %s тОкПв -desc.watz.pelDecay=РаспаЎается Ма: %s -desc.watz.pelDecayMulti=ММПжОтель распаЎа: %s%% -desc.watz.pelHeat=ВыЎеляет тепла: %s тепла -desc.watz.pelHeatMulti=ММПжОтель тепла: %s%% -desc.watz.pelPower=ЭМергОО за тОк: %sHE -desc.watz.pelPowerMulti=ММПжОтель эМергОО: %s%% -desc.item.wasteCooling=ОхлаЎОте в бПчке с ПтрабПтаММыЌ тПплОвПЌ -desc.misc.lctrl=§УЎержОвайте <§e§oLCTRL§8§o> %s -desc.misc.lshift=§8УЎержОвайте <§e§oLSHIFT§8§o> %s -desc.gui.turbinegas.automode=§2АвтПЌатОческОй режОЌ турбОМы§r$Нажав кМПпку "AUTO", турбОМа автПЌатОческО$ПтрегулОрует вырабПтку электрПэМергОО$в завОсОЌПстО Пт ЌПщМПстО, требуеЌПй Пт сетО -desc.gui.turbinegas.fuels=§6ПрОМОЌаеЌПе тПплОвП: -desc.gui.turbinegas.warning=§cНОзкОй урПвеМь тПплОва ОлО сЌазкО!§r -desc.gui.rttyLogic.cond0=СОгМал §6МЕНЬКЕ§r КПМстаМты -desc.gui.rttyLogic.cond1=СОгМал §6МЕНЬКЕ ИЛИ РАВЕН§r КПМстаМте -desc.gui.rttyLogic.cond2=СОгМал §6БОЛЬКЕ ИЛИ РАВЕН§r КПМстаМте -desc.gui.rttyLogic.cond3=СОгМал §6БОЛЬКЕ§r КПМстаМты -desc.gui.rttyLogic.cond4=СОгМал §6РАВЕН§r КПМстаМте -desc.gui.rttyLogic.cond5=СОгМал §6НЕ РАВЕН§r КПМстаМте -desc.gui.rttyLogic.cond6=СОгМал §6СООТВЕТСТВУЕТ§r СтрПке -desc.gui.rttyLogic.cond7=СОгМал §6НЕ СООТВЕТСТВУЕТ§r СтрПке -desc.gui.rttyLogic.cond8=СОгМал §6СОДЕРЖИТ§r СтрПку -desc.gui.rttyLogic.cond9=СОгМал §6НЕ СОДЕРЖИТ§r СтрПку - -wavelengths.name.ir=ИМфракрасМый -wavelengths.name.visible=ВОЎОЌый свет -wavelengths.name.uv=УльтрафОПлет -wavelengths.name.gamma=ГаЌЌа -wavelengths.name.drx=ДОгаЌЌа -wavelengths.waveRange.ir=780МЌ-1ЌЌ -wavelengths.waveRange.visible=400МЌ-780МЌ -wavelengths.waveRange.uv=100МЌ-400МЌ -wavelengths.waveRange.gamma=<100пЌ -wavelengths.waveRange.drx=1916169 плаМкПвскОх ЎлОМ - -gun.make.ARMALITE=Armalite -gun.make.AUTO_ORDINANCE=КПрпПрацОя АвтП-ОрЎеМс -gun.make.BAE=БАЕ СОстеЌс -gun.make.BENELLI=БеМеллО АрЌО СПА -gun.make.BLACK_MESA=ИсслеЎПвательскОй кПЌплекс ЧёрМая Меза -gun.make.CERIX=ЊерОкс МагМус -gun.make.COMBINE=ВселеМскОй СПюз -gun.make.CUBE=Куб 2: Sauerbraten -gun.make.ENZINGER=ЭМзОМгер ЮМОПМ -gun.make.FLIMFLAM=ЀлОЌЀлэЌ ИМЎастрОс -gun.make.F_STRONG=ЀПрт СтрПМг -gun.make.GLORIA=Gloria GmbH -gun.make.HASBRO=ХасбрП -gun.make.H_AND_K=Heckler & Koch -gun.make.H_AND_R=Harrington & Richardson -gun.make.IF=ОгМеММые ППЎкПвы -gun.make.IMI=ВПеММая ПрПЌышлеММПсть ИзраОля -gun.make.IMI_BIGMT=IMI / БПльшая ГПра -gun.make.LUNA=КПрпус ЛуММПй ОбПрПМы -gun.make.MAGNUM_R_IMI=Magnum Research / Israel Military Industries -gun.make.MANN=МаММ КП. -gun.make.MAXIM=ХайраЌ МаксОЌ -gun.make.METRO=ОружейМОкО МетрП -gun.make.MWT=ЛабПратПрОО прПтПтОпПв МВТ -gun.make.ERFURT=Erfurter Maschinenfabrik Geipel -gun.make.NONE=- -gun.make.ROCKWELL=КПрпПрацОя "РПкуэлл" -gun.make.ROCKWELL_U=КПрпПрацОя "РПкуэлл"? -gun.make.SAAB=Saab Bofors Dynamics -gun.make.SACO=Saco Defense / US Ordnance -gun.make.TULSKY=ТульскОй ОружейМый ЗавПЎ -gun.make.UAC=ОбъеЎОМёММая АэрПкПсЌОческая КПрпПрацОя -gun.make.UNKNOWN=??? -gun.make.WINCHESTER=Winchester Repeating Arms Company -gun.make.WINCHESTER_BIGMT=Winchester Repeating Arms Company / БПльшая ГПра -gun.make.REMINGTON=Remington Arms -gun.make.DRG=Deep Rock Galactic -gun.make.NAWS=Kayarm Industries - -gun.name.ar15_50=МПЎОфОкацОя AR-15 пПЎ .50 BMG -gun.name.baeAR=СтаМЎартМая вОМтПвка брОтаММскПй арЌОО -gun.name.bel=Катапульта Ўля жар-яОц -gun.name.benelli=Benelli M4 Super 90 -gun.name.benelliDrum=Benelli M4 Super 90 (БарабаММый ЌагазОМ) -gun.name.bolter=БПлтер ЌПЎелО "МаМтОкПра" -gun.name.cz53=ПерсПМальМый ЌОМОгаМ CZ53 -gun.name.cz57=МОМОгаМ "МстОтель" CZ57 -gun.name.dart=ИглПЌёт -gun.name.deagle=IMI Desert Eagle -gun.name.emp=ПрПектПр ЭМИ-сфер -gun.name.extinguisher=6кг ПгМетушОтель PROTEX -gun.name.ffiV=FFI Viper -gun.name.ffiVInox=FFI Viper Inox -gun.name.ffiVLead=FFI Viper Lead -gun.name.ffiVN1=FFI Viper N1 -gun.name.ffiVN2=FFI Viper N2 -gun.name.ffiVUltra=FFI Viper Ultra -gun.name.ffivBling=FFI Viper Bling -gun.name.ffivSatur=FFI Viper D-25A -gun.name.gPistol=Granatpistole HK69 -gun.name.gustav=БезПткатМая вОМтПвка "Карл-Густав" M1 -gun.name.ifHorseshoe=IF-18 "ППЎкПва" -gun.name.ifPit=IF-18 "ППЎкПва" - БезЎПММая яЌа -gun.name.ifScope=IF-18 "ППЎкПва" с прОцелПЌ -gun.name.ifStorm=IF-18 "ППЎкПва" - СОльвер КтПрЌ -gun.name.ifVanity=IF-18 "ППЎкПва" - ВаМОтО -gun.name.karl=M1 Karl-GerÀt -gun.name.ks23=KS-23 -gun.name.lacunae=Тётушка ЛакуМэ -gun.name.lunaAR=1936 Bishamonten type Assault Rifle -gun.name.lunaGun=1958 Lunatic Gun (Revised) -gun.name.lunaHLR=1944 Chang'e type LMG -gun.name.lunaSMG=1936 Ānanda type SMG -gun.name.lunaSniper=1909 Rāhula type Anti-Material Rifle -gun.name.lunaTWR=Time Warp Rifle -gun.name.m42=ТактОческая яЎерМая катапульта M-42 -gun.name.m42MIRV=ЭксперОЌеМтальМая РГН M-42 -gun.name.m60=ПулеЌёт калОбра 7.62ЌЌ M60 -gun.name.maxim=ПулеЌёт "МаксОЌ" -gun.name.maximDouble=СЎвПеММый пулеЌёт "МаксОЌ" -gun.name.mp40=Maschinenpistole 40 -gun.name.nerf=НеОзвестМый бластер NERF -gun.name.osipr=СтаМЎартМая пульсПвая вОМтПвка Патруля -gun.name.panz=RaketenpanzerbÃŒchse 54 -gun.name.quadro=СчетверёММый переМПсМПй ракетМый граМатПЌёт -gun.name.revolverCursed=СтаМЎартМый пОстПлет брОтаММскПй арЌОО -gun.name.sauer=ДрПбПвОк Sauer -gun.name.spiw=H&R SPIW -gun.name.supershotty=ДвуствПльМый ЎрПбПвОк -gun.name.tau=Тау-пушка XVL1456 -gun.name.tommy9=МПЎОфОкацОя пОстПлета-пулеЌёта M1A1 пПЎ 9ЌЌ -gun.name.tommy=ПОстПлет-пулеЌёт M1A1 -gun.name.topaz=Тяжёлый ПгМеЌёт -gun.name.uacCarbine=UAC-41 Carbine -gun.name.uacDMR=UAC-30 Designated Marksman Rifle -gun.name.uacLMG=UAC-49 Light Machine Gun -gun.name.uacPistol=UAC .45 Standard Issue Handgun -gun.name.uacSMG=UAC Compact Sub-Machine Gun -gun.name.uboinik=РевПльверМый ЎрПбПвОк "УбПйМОк" -gun.name.uzi=IMI Uzi -gun.name.uziSatur=IMI Uzi D-25A -gun.name.win1887=Winchester Model 1887 -gun.name.win1887Inox=Winchester Model 1887 Inox -gun.name.win20Inox=Winchester Model 20 Inox -gun.name.win20Poly=Winchester Model 20 Polymer -gun.name.win20Satur=Winchester Model 20 D-25A -gun.name.zomg=Пушка ПтрОцательМПй эМергОО EMC101 -gun.name.remington870=Remington 870 -gun.name.congoLake=ППЌпПвый граМатПЌет Congo Lake +book.test.cover=HOW 2 SEX +book.test.page1=Test Page 1 book.error.cover=АЎрПММый КПллайЎер:$ДОагМПстОрПваМОе прПблеЌ book.error.title1=ОшОбка 0x01 [NC] @@ -905,8 +228,6 @@ book.error.page8=§lНазваМОе:§r "ERROR_DIODE_COLLISION" §lОпОсаМ book.error.title9=ОшОбка 0x09 [BT] book.error.page9=§lНазваМОе:§r "ERROR_BRANCHING_TURN" §lОпОсаМОе:§r ЧастОца ЎПстОгла пПвПрПта с МескПлькОЌО выхПЎаЌО. §lППтеМцОальМПе решеМОе:§r ЕслО ваш пПвПрПт МПрЌальМый, прПверьте есть лО таЌ все катушкО (тП есть Мет Ўыр в слПях). ЕслО пПвПрПт преЎМазМачеМ Ўля разветвлеМОя, Ўля этПгП требуется правОльМП скПМфОгурОрПваММый ЎОПЎ частОц КПтткО. -book.test.cover=HOW 2 SEX -book.test.page1=Test Page 1 book.rbmk.cover=МПй первый РБМК:$ОсМПвы$стрПОтельства реактПра$ book.rbmk.title1=ВступлеМОе book.rbmk.page1=§lРБМК§r - этП пПлМПстью ЌПЎульМый яЎерМый реактПр. В ПтлОчОе Пт бПльшОМства ЎругОх реактПрПв, зЎесь Мет "актОвМПй зПМы" О Мет ПграМОчеМОй пП разЌеру, скПрее, пПвеЎеМОе О эффектОвМПсть реактПра завОсят Пт тПгП, как ПМ пПстрПеМ О как разлОчМые частО взаОЌПЎействуют Ўруг с ЎругПЌ. @@ -920,7 +241,6 @@ book.rbmk.title5=РегулОрующОе стержМО - ИспПльзПва book.rbmk.title5.scale=0.75 book.rbmk.page5=В цеМтре графОческПгП ОМтерфейса буЎет ПтПбражаться текущая вставка стержМя. ЊветМые кМПпкО слева ЎПбавят стержеМь управлеМОя в цветПвую группу, чтП пПлезМП Ўля быстрПгП выбПра сгруппОрПваММых стержМей Ма кПМсПлО §lРБМК§r. КМПпкО справа пПзвПляют вставлять вручМую с шагПЌ 25%%. book.rbmk.title6=АвтПЌатОческОе регулОрующОе стержМО -book.rbmk.title6.scale=0.75 book.rbmk.page6=§lАвтПЌатОческОе регулОрующОе стержМО§r пПчтО ОЎеМтОчМы ПбычМыЌ регулОрующОЌ стержМяЌ, МП Ох Мельзя МастрПОть вручМую, вЌестП этПгП ПМО буЎут регулОрПвать пПлПжеМОе стержМя в завОсОЌПстО Пт текущей теЌпературы. Какую фуМкцОю ОспПльзПвать О как глубПкП вставлять О прО какПй теЌпературе, МеПбхПЎОЌП ПпреЎелОть в первую ПчереЎь. book.rbmk.title7=ПарПвПй каМал book.rbmk.page7=§lПарПвПй каМал§r - еЎОМствеММая часть, кПтПрая буЎет актОвМП сМОжать урПвеМь тепла реактПра. ЕслО теЌпература кПЌпПМеМта превышает теЌпературу кОпеМОя заЎаММПгП тОпа пара, ПМ буЎет пытаться пПтреблять стПлькП вПЎы О прПОзвПЎОть стПлькП пара, скПлькП МеПбхПЎОЌП Ўля ПхлажЎеМОя МОже теЌпературы кОпеМОя. @@ -942,50 +262,9 @@ book.rbmk.page15=РеакцОя §lтПплОва§r завОсОт Пт ЌМП book.rbmk.title16=РасплавлеМОе book.rbmk.page16=§4§lИЗБЕГАЙТЕ. -book.custCores.page1.title=ПрПектОрПваМОе яЎра яЎерМПй бПегПлПвкО (СПкращеММПе ОзЎаМОе) -book.custCores.page10=ОМ также ОЌеет плПтМПсть ~19,05 г/сЌ3, МП с крОтОческПй ЌассПй ~52 кг. НесЌПтря Ма этП, ПМ ОЌеет среЎМюю выхПЎМую эМергОю ЎелеМОя ~202,5 МэВ Ма ЎелеМОе. -book.custCores.page11=КрПЌе тПгП, ПМ ЌПжет ОспПльзПваться в бПЌбах пушечМПгП тОпа, кПтПрые в МастПящее вреЌя устарелО с ОЌплПзОПММыЌ тОпПЌ, все еще ОспПльзуются в МекПтПрых кПЌпактМых яЎерМых устрПйствах. -book.custCores.page12.title=НептуМОй-237 -book.custCores.page12=НептуМОй-237, хПтя О рассЌатрОвался, МОкПгЎа Ме Оспытывался в яЎерМых устрПйствах О МОкПгЎа Ме плаМОрПвался к ОспытаМОю. ОМ Пбразуется в результате захвата МейтрПМПв U-235, кПтПрый -book.custCores.page13=уже расщепляется. ОМ также ОЌеет бПлее высПкую крОтОческую Ќассу О плПтМПсть прО ~60 кг О ~20,45 г/сЌ3 сППтветствеММП. ЭМергОя ЎелеМОя Ме была ПпреЎелеМа, МП была ПцеМеМа в ~200 МэВ. -book.custCores.page14.title=ПлутПМОй-239 -book.custCores.page14=НаОбПлее распрПстраМеММый ЎелящОйся ЌатерОал в Маше вреЌя, пПлучеММый Оз U-238 в реактПрах. ОМ МеЌМПгП плПтМее ураМа прО ~19,86 г/сЌ3, ОЌеет ПчеМь МОзкую крОтОческую Ќассу -book.custCores.page15=~10 кг О ОЌеет высПкую выхПЎМую эМергОю ЎелеМОя прО ~207,1 МэВ Ма ЎелеМОе. НесЌПтря Ма тП, чтП Ох слПжМее прПОзвПЎОть, результат в кПМечМПЌ счете ПправЎывает затраты. -book.custCores.page16.title=ПлутПМОй-241 -book.custCores.page16=ОчеМь реЎкОй ОзПтПп плутПМОя, ПбразующОйся прО захвате МейтрПМПв Pu-240, кПтПрый, в свПю ПчереЎь, Пбразуется прО захвате МейтрПМПв Pu-239. -book.custCores.page17=ОМ ОЌеет МОзкую крОтОческую Ќассу ~12 кг, чтП лОшь МеЌМПгП выше, чеЌ Pu-239, МП ПМ также ОЌеет бПлее высПкую выхПЎМую эМергОю ЎелеМОя прО ~210 МэВ. -book.custCores.page18=НесЌПтря Ма преОЌуществП в прПОзвПЎстве эМергОО, затраты Ма прПОзвПЎствП Ме Ўают ПсПбых преОЌуществ Pu-239, также учОтывая егП ПчеМь МОзкОй перОПЎ пПлураспаЎа, сПставляющОй ПкПлП ЎесятО лет. -book.custCores.page19.title=МетастабОльМый аЌерОцОй-242m -book.custCores.page19=АЌерОцОй-242m, верПятМП, является саЌыЌ ЎПрПгОЌ ЎелящОЌся актОМОЎПЌ, кПтПрый в МастПящее вреЌя рассЌатрОвается Ўля яЎер яЎерМПгП ПружОя. Образуется тПлькП за счет пПслеЎПвательМПгП МейтрПММПгП -book.custCores.page1=ПП: А█████ Б██████ -book.custCores.page20=захвата МескПлькОх высПкПраЎОПактОвОруеЌых раЎОПОзПтПпПв, Am-242m с еще ЌеМьшей верПятМПстью буЎет ОспПльзПваться, чеЌ Pu-241. НесЌПтря Ма этП, ПМ ОЌеет ЎПстатПчМый перОПЎ пПлураспаЎа О крОтОческую Ќассу -book.custCores.page21=~11 кг, выхПЎ эМергОО ЎелеМОя ~212 МэВ О ПтМПсОтельМП МОзкую плПтМПсть ~13,67 г/сЌ3. -book.custCores.page22.title=КрабОЎОй-326 -book.custCores.page22=ВПзЌПжМП, саЌый перспектОвМый ЎелящОйся траМсураМПвый раЎОПОзПтПп, этП еЎОМствеММый ОзвестМый сверхтяжелый элеЌеМт, вхПЎящОй в сПстав ПстрПва стабОльМПстО. ПрО атПЌМПЌ -book.custCores.page23=МПЌере 126, ПМ ОЌеет сЌехПтвПрМП МОзкую крОтОческую Ќассу ~1-2 кг, ПгрПЌМую, пП ПцеМкаЌ, эМергОю ЎелеМОя ~250 МэВ О МеверПятМую плПтМПсть 39,7 г/сЌ3, пПчтО вЎвПе -book.custCores.page24=бПльше ураМа. ЕгП перОПЎ пПлураспаЎа, пП ПцеМкаЌ, сПставляет Пт сПтеМ тысяч ЎП ЌОллОарЎПв лет, О, как этП МО параЎПксальМП, егП также легче прПОзвПЎОть, чеЌ тяжелые актОМОЎы. -book.custCores.page25=НесЌПтря Ма преОЌущества ОспПльзПваМОя Sa-236 в качестве ПсМПвМПгП ЌатерОала, ПМ ОЌеет преЎПстережеМОе П тПЌ, чтП вызывает эффект, ОзвестМый как "пПле фПлкваМгра (ОлО фПлькваМгра)". ППка -book.custCores.page26=тПт эффект, безуслПвМП, стПОт ПбсуЎОть в ЎругПй раз, Ўля стаМЎартМых МужЎ яЎерМПгП ПружОя ПМ МежелателеМ, так как уЌеМьшает эМергОю О ЌПжет прОвестО к сбПю. -book.custCores.page27=ДП тех пПр, пПка Ме буЎет разрабПтаМ МаЎлежащОй ЌетПЎ сЌягчеМОя, Sa-326 ОЎеальМП пПЎхПЎОт Ўля пПвышеМОя прПОзвПЎОтельМПстО яЎер стаМЎартМых яЎер U-235 ОлО Pu-239 О зМачОтельМПгП увелОчеМОя прПОзвПЎОтельМПстО -book.custCores.page28=О эффектОвМПстО без ЎПбавлеМОя бПльшПй Ќассы, пПЎПбМП пПвышеМОю ЎейтерОя/трОтОя. Как тверЎый ЌеталлОческОй шрабОЎОй, так О жОЎкОй кПЌпПМеМт трОсульфОЎ шрабОЎОя (SaS6) -book.custCores.page29=былО рассЌПтреМы Ўля пПвышеМОя ЎелеМОя. Для пПлучеМОя ЎПпПлМОтельМПй ОМфПрЌацОО П вышеупПЌяМутПЌ "пПле фПлькваМгр" ПбратОтесь к кМОге: "ЀРЕЯ О пПле ЀПлькваМгр". -book.custCores.page2=РазрабПтка яЎерМПгП ПружОя МачОМается с егП саЌПгП важМПгП кПЌпПМеМта: яЎра. ИбП этП тП, чтП ПбеспечОвает разрушеМОе в яЎерМПЌ устрПйстве. -book.custCores.page30.title=ТерЌПяЎерМые ЌатерОалы -book.custCores.page30=ППвышеМОе терЌПяЎерМПгП сОМтеза былП кПМцепцОей с первых ЎМей яЎерМых ОспытаМОй. ОМО спПсПбМы зМачОтельМП пПвысОть эффектОвМПсть ЎелеМОя О, слеЎПвательМП, кПМечМый выхПЎ. -book.custCores.page3=ЯЎрП ЌПжет быть ОзгПтПвлеМП Оз МескПлькОх разлОчМых ЌатерОалПв О сЌесей ЌежЎу МОЌО, О все этП Ўля пПвышеМОя эффектОвМПстО, выхПЎа О уЌеМьшеМОя крОтОческПй Ќассы. -book.custCores.page4=ТакПвы трО ПсМПвМых фактПра в яЎерМПЌ устрПйстве: бПлее высПкОй выхПЎ увелОчОвает МаМПсОЌый ОЌ урПМ, ЌеМьшая крОтОческая Ќасса уЌеМьшает разЌер -book.custCores.page5=бПЌбы, а эффектОвМПсть увелОчОвает выхПЎ без увелОчеМОя Ќассы. -book.custCores.page6.title=РасщепляющОеся ЌатерОалы -book.custCores.page6=Мы ПбсуЎОЌ первОчМые ЌатерОалы, ОспПльзуеЌые в яЎрах яЎерМых устрПйств, Пт ПбычМП ОспПльзуеЌых ЎП бПлее эксперОЌеМтальМых, в пПряЎке атПЌМПй Ќассы. -book.custCores.page7.title=УраМ-233 -book.custCores.page7=ВывеЎеММый Оз тПрОя-232, ураМ-233 в течеМОе ЌМПгОх лет был пПтеМцОальМыЌ ПсМПвМыЌ ЌатерОалПЌ, сЎержОваеЌыЌ слПжМПстью прПОзвПЎства О ПтЎелеМОя Пт тПрОя. -book.custCores.page8=ОМ ОЌеет плПтМПсть ~19,05 г/сЌ3 О крОтОческую Ќассу ~15 кг, чтП пПчтО вчетверП ЌеМьше, чеЌ у U-235. ОЎМакП ПМ также ОЌеет МОзкую выхПЎМую эМергОю ЎелеМОя ~197,5 МэВ. -book.custCores.page9.title=УраМ-235 -book.custCores.page9=НаОбПлее шОрПкП ОзвестМый расщепляющОйся ЌатерОал, пПлучеММый путеЌ ПбПгащеМОя прОрПЎМПгП ураМа, этП еЎОМствеММый прОрПЎМый расщепляющОйся ЌатерОал. - book.starter.cover=РукПвПЎствП прПЌышлеММОка$пП вПсстаМПвлеМОю$Пбщества book.starter.title1=ВступлеМОе -book.starter.page1=ЕслО вы чОтаете этП, тП весьЌа верПятМП, чтП ПбществП, так ОлО ОМаче, пПлМПстью рухМулП. ПравОтельства, страМы О власть - этП кПМцепцОя прПшлПгП, вЌесте сП всеЌО уЎПбстваЌО цОвОлОзПваММПй жОзМО. ТакОЌ ПбразПЌ, этП рукПвПЎствП расскажет ваЌ, как ОзЌеМОть этП, вПссПзЎав ОМЎустрОю О техМПлПгОО прПшлПгП Ўля улучшеМОя вашей сПбствеММПй жОзМО. +book.starter.page1=ЕслО вы чОтаете этП, тП весьЌа верПятМП, чтП ПбществП, так ОлО ОМаче, пПлМПстью рухМулП. ПравОтельства, страМы О власть - этП кПМцепцОя прПшлПгП, вЌесте сП всеЌО уЎПбстваЌО цОвОлОзПваММПй жОзМО. ТакОЌ ПбразПЌ, этП рукПвПЎствП расскажет ваЌ,как ОзЌеМОть этП, вПссПзЎав ОМЎустрОю О техМПлПгОО прПшлПгП Ўля улучшеМОя вашей сПбствеММПй жОзМО. book.starter.title2=УгПль О гПрчОчМый газ book.starter.page2=ХПтя МевПзЌПжМП преЎсказать фактОческПе сПстПяМОе ЌОра в пПстапПкалОптОческПе вреЌя, впПлМе верПятМП, чтП вПйМа О прПЌышлеММПсть в ее МыМешМеЌ вОЎе, вПзЌПжМП, еще Ме закПМчОлОсь. ЧтПбы защОтОть свПО сПбствеММые легкОе, эффектОвМый О Ўешевый спПсПб - пПЌПчОться Ма какую-МОбуЎь тряпку, чтПбы сЎелать §lтраМшейМую Ќаску§r, чтПбы защОтОть вас Пт угПльМПй пылО ОлО гПрчОчМПгП газа, еслО вы кПгЎа-МОбуЎь стПлкМетесь с МОЌО. book.starter.title3=НакПвальМО О прессы @@ -1022,18 +301,48 @@ book.starter.page16=ЕслО вы зашлО так ЎалекП, зМачОт, book.starter.title18=Об автПре book.starter.page18=vÊr - прПстП пареМь, кПтПрый слОшкПЌ ЎПлгП был пПйЌаМ в лПвушку серПй пустПты, пПказаММПй в клОпе Talking Heads §o"Once In A Lifetime"§r. ОЎМажЎы ПМ Машел Ўверь стуЎОО, МП, к свПеЌу ужасу, ПбМаружОл, чтП ПМа была вырезаМа Оз картПМа. -book.lore.office0.title=ЗаявлеМОе Пб увПльМеМОО -book.lore.office0.author=Kosma -book.lore.office0.page0=Вчера рукПвПЎствП сМПва сПкратОлП Маш ПтЎел. ЭтО ОЎОПты ЎПлжМы вОМОть тПлькП саЌОх себя, я Ме зМаю, чегП ПМО ПжОЎалО пПсле фОаскП с ПаМаеЌ. КтП, черт вПзьЌО, слОвает такую ОМфПрЌацОю? Мы теряеЌ ЌОллОПМы, О -book.lore.office0.page1=этП Я сейчас без рабПты. ЭтП ЌеМя прПсят уйтО в Птставку. Я МаЎеюсь, чтП вы, прОЎуркО, МакПМец-тП ОзвлеклО урПк Оз свПегП переОзбытка ПшОбПк О вытащОлО эту палку Оз свПей заЎМОцы. -book.lore.office0.page2=Я Ме верМусь в пятМОцу. ПрПстП прОшлОте чек Ма зарплату. - -book.lore.office1.title=ЗаЌетка -book.lore.office1.author=Jonas Quinn -book.lore.office1.page0= -book.lore.office2.page1= +#book.rbmk.cover=HOW 2 RBMK:$The Basics$of Reactor$Construction +#book.rbmk.title1=Introduction +#book.rbmk.page1=The §lRBMK§r is a fully modular nuclear reactor. Unlike most other reactors, there is no "core", and no size limitations, rather, the behavior and efficiency of the reactor comes from how it is built and how the different pieces interact with each other. +#book.rbmk.title2=Heat +#book.rbmk.page2=As the reactor operates, it will generate §lheat§r. Heat will spread between parts, slowly decreasing in the process. The goal is to produce as much heat as possible without melting the reactor, and to move that heat to a §lsteam channel§r which cools the reactor and produces steam. +#book.rbmk.title3=Fuel Rod +#book.rbmk.page3=The §lfuel rod§r will capture neutron flux, causing the fuel inside the fuel rod to react, giving off neutrons in the process. Neutrons are released in all four cardinal directions with a maximum range of 5 blocks. The amount of neutrons released depends on the §lfuel§r used. +#book.rbmk.title4=Control Rod +#book.rbmk.page4=The §lcontrol rod§r will decrease the amount of neutrons passing though it. Fully inserted, it will block all neutrons, at half insertion, it will only block half. Control rods are used to regulate the reactor's activity and to turn it off. +#book.rbmk.title5=Control Rod - Usage +#book.rbmk.page5=The center of the GUI will display the current rod insertion. The colored buttons on the left will add a control rod to a color group, which is useful to quickly select grouped rods from the §lRBMK console§r. The buttons on the right allow for manual insertion in increments of 25%%. +#book.rbmk.title6=Automatic Control Rod +#book.rbmk.page6=§lAutomatic control rods§r function nearly identical to regular control rods, but they cannot be configured manually, instead they will adjust the rod position based on the current temperature. What function to use and how deep to insert at what temperature has to be defined first. +#book.rbmk.title7=Steam Channel +#book.rbmk.page7=The §lsteam channel§r is the only part that will actively reduce the reactor's heat level. If the component's temperature exceeds the boiling point of the set steam type, it will try to consume as much water and produce as much steam as needed to cool back below the boiling point. +#book.rbmk.title8=Neutron Reflector +#book.rbmk.page8=The §lneutron reflector§r will block neutrons from passing it, instead the neutrons will be reflected back at the fuel rod they came from. This is useful for utilizing neutrons that would otherwise be wasted by simply exiting the reactor. +#book.rbmk.title9=Neutron Absorber +#book.rbmk.page9=The §lneutron absorber§r will simply block neutrons. Neutrons absorbed will not generate heat and be effectively voided. This is useful to prevent fuel rods from reacting that would otherwise be in range. +#book.rbmk.title10=Graphite Moderator +#book.rbmk.page10=The §lgraphite moderator§r will convert fast neutrons passing through it into slow neutrons. Most fuels fission into fast neutrons while needing slow neutrons to split, so using moderators is strongly recommended. +#book.rbmk.title11=Structural Column +#book.rbmk.page11=The §lstructural column§r will not interfere with neutrons, nor does it have special uses. It is recommended to fill the reactor with structural columns where no other parts will be, because structural columns are capable of transporting heat. +#book.rbmk.title12=Console +#book.rbmk.page12=The §lRBMK console§r lets you control the reactor from afar. Using the §lRBMK§r §lconsole linking device§r on an RBMK part and then the console will link the reactor to the console. The console can only manage 15x15 parts, for larger reactors you might want to use multiple consoles. +#book.rbmk.title13=Console Usage +#book.rbmk.page13=Clicking on the parts will select and deselect them. Using the colored buttons, you can quickly select all control rods of that color group. Button 'A' will select all control rods, 'X' will deselect all. +#book.rbmk.page14=Entering a number 0-100 in the green box and then hitting the button next to it will set all selected control rods to this position. Button 'AZ-5' will cause all control rods to fully insert. +#book.rbmk.title15=Fuel +#book.rbmk.page15=The §lfuel§r's reactivity is based on multiple factors. The main ones are the §lenrichment§r, §lxenon poison§r and the amount of incoming §lneutrons§r. Xenon builds up when the fuel receives few neutrons and burns away during normal operation. The effectivity of neutrons depends on the type, most fuels §lsplit best with slow neutrons§r. +#book.rbmk.title16=Meltdown +#book.rbmk.page16=§4§lAvoid. book_lore.author=By %s +book_lore.test.name=this book doesn't work... +book_lore.test.author=me i trolled you hehe :3c +book_lore.test.page.0=>hello anons before i begin let me clarify that i'm not gay. >Be me >This night >18 > At hanging out with my best friend with my parents gone for a few days >We've been best friends for a year now >Been drinking a bit and playing lots of video games and ordered a pizza >We were having a blast >At a certain point in the night like around 9:00 he makes a really funny joke that I don't remember but I know that it made us both laugh really hard > With out thinking I brush my right hand through his semi-curly black hair and call him a funny boy >He blushes >I realize I'm feeling flustered >We're kinda close >All of the sudden he kisses me and for some reason I kiss him back >We make love >Cuddle together and fall asleep >Wake up in the middle of the night with his head snuggled up on my chest and neck area >It feels nice but I'm not a homosexual +book_lore.test.page.1=I'm typing this as he's asleep in my arms. How do I let my best friend down nicely? I don't want to be a [redacted] /b/ +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: @@ -1091,47 +400,50 @@ book_lore.memo_schrab_nuke.page.0=Our most recent investigation led us to the ef 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.insanity_1.name=Torn Page -book_lore.insanity_1.author=D Ferguson -book_lore.insanity_1.page.0=August 6th $ $ Months, no, years worth of dicking about wrestling with investors and operating the greatest energy hog in the northern hemisphere has finally paid off. -book_lore.insanity_1.page.1=While we aren't entirely sure what exactly we found - given we ran gigavolt collisions on particles that were still poorly documented - the results couldn't have been more exciting. -book_lore.insanity_1.page.2=We haven't found a name for whatever it is we've found, nor are we sure if we're looking at a new type of particle, a wormhole leading into another dimension, or satan's anus, but I'm sure our PR people can come up with something. +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.insanity_2.name=Torn Page -book_lore.insanity_2.author=D Ferguson -book_lore.insanity_2.page.0=August 8th $ $ We've kept "The Thing" (yes that's what we call it for now) in magnetic isolation for the past days. Spectroscopy tests ended up breaking our spectrometer, but we managed to gain some useful data. -book_lore.insanity_2.page.1=For starters, this thing glows like a christmas tree, radiation photons of about every wavelength you could think of enveloped by a powerful infrared corona. The logical conclusion is that looking at it with your naked -book_lore.insanity_2.page.2=eye would most likely kill you. Now that begs the question: How can a particle this tiny radiate such immense energy? What are you hiding, little man? +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.insanity_3.name=Torn Page -book_lore.insanity_3.author=D Ferguson -book_lore.insanity_3.page.0=August 22nd $ $ I haven't slept right in days. Doc said he couldn't find anything. Been on all sorts of medication now, but the headaches only get worse. Lab boys suspect it might be contamination from the incident two weeks ago. -book_lore.insanity_3.page.1=Doc said it's not that likely, ARS is different. I might need to take some time off if this continues. The Thing is still in containment, the lab boys speculate if the field goes down, the entire complex turns into a mushroom cloud. -book_lore.insanity_3.page.2=I'm not sure how administration can keep this calm, but i don't get paid enough to waste thoughts on that. +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.insanity_4.name=Torn Page -book_lore.insanity_4.author=D Ferguson -book_lore.insanity_4.page.0=August 28th $ $ They denied my request for leave and I've been pushing through the past few days. Headaches are getting worse. I'm not the only one who's feeling it, either. Some of the lab boys are in a similar situation. -book_lore.insanity_4.page.1=All the while The Thing has left the complex - GOOD. Some suits came in yesterday and had it shipped off, god knows where. One of the lab boys, Zachary, said they're probably burying the containment vessel in the desert, slowly -book_lore.insanity_4.page.2=trying to "fizzle out" The Thing far off from civilization. I say let's shoot it into space. Needless to say, our investors cut all funding for the time being. I should start looking for another job. +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.insanity_5.name=Torn Page -book_lore.insanity_5.author=D Ferguson -book_lore.insanity_5.page.0=September 11th $ $ I'm having this re-occurring nightmare. I'm walking around in an open space and there's these people everywhere, people in rubber suits and freakishly deformed faces. It's always the same nightmare, -book_lore.insanity_5.page.1=and one of the guys from the lab I've spoken with lately has had the same dream. Meanwhile my post has been rather boring, the accelerator has been shut down, all ongoing projects are on halt and our budget is slowly melting away. -book_lore.insanity_5.page.2=Something is telling me that The Thing is still out there somewhere. I can feel it. - -book_lore.insanity_6.name=Torn Page -book_lore.insanity_6.author=D Ferguson -book_lore.insanity_6.page.0=October 3rd $ $ Half the staff is dead, most of the rest is in the ICU. My condition hasn't changed in the past weeks, for better or worse. -book_lore.insanity_6.page.1=Reality is starting to feel less and less real however. Sometimes I look up into the sky at night and hallucinate that thing we discovered all those weeks ago. -book_lore.insanity_6.page.2=That same brilliant sheen of crimson that our spectrometer spat out. My doc says it's delirium and stress caused by the incident, and perhaps hes right, but the meds aren't working at all. - -book_lore.insanity_7.name=Torn Page -book_lore.insanity_7.author=D Ferguson -book_lore.insanity_7.page.0=December 12th $ $ I've been out of a job, but to be honest I'm somewhat thankful about it. My old workplace has gone up in flames - or so they say. -book_lore.insanity_7.page.1=The seismological observatory a couple miles south recorded constant earthquakes for days on end, not that anyone else would have noticed this deep in the desert. -book_lore.insanity_7.page.2=I have concluded that this place was cursed, making everyone sick and then descending into hell like some sort of Edgar Allan Poe story. Good riddance. +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.beacon.name=Signal Beacon Instruction Booklet book_lore.beacon.author=Flim Flam Industries @@ -1148,159 +460,1114 @@ book_lore.beacon.page.9=Once the desired peer has responded, give the "ACCEPT CO 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 ] -hbmfluid.none=НОчегП -hbmfluid.water=ВПЎа -hbmfluid.steam=Пар -hbmfluid.hotsteam=ГПрячОй пар -hbmfluid.superhotsteam=Перегретый пар -hbmfluid.ultrahotsteam=РаскалёММый пар -hbmfluid.lava=Лава -hbmfluid.uf6=ГексафтПрОЎ ураМа -hbmfluid.puf6=ГексафтПрОЎ плутПМОя -hbmfluid.deuterium=ДейтерОй -hbmfluid.tritium=ТрОтОй -hbmfluid.oil=НеПчОщеММая Мефть -hbmfluid.hotoil=ГПрячая МеПчОщеММая Мефть -hbmfluid.smear=ПрПЌышлеММПе ЌаслП -hbmfluid.reclaimed=ОчОщеММПе прПЌышлеММПе ЌаслП -hbmfluid.petroil=БеМзОМ -hbmfluid.lubricant=МашОММая сЌазка -hbmfluid.diesel=ДОзель -hbmfluid.kerosene=КерПсОМ -hbmfluid.gas=ПрОрПЎМый газ -hbmfluid.coolant=ХлаЎагеМт -hbmfluid.coolant_hot=ГПрячОй хлаЎагеМт -hbmfluid.mug=ПОвП "Mug Root" -hbmfluid.mug_hot=ГПрячее пОвП "Mug Root" +cannery.f1=[ НажЌОте f1 Ўля справкО ] + +cannery.centrifuge=ГазПвая цетрОфуга +cannery.centrifuge.0=В газПвые цеМтрОфугО ЌПжМП пПЎать жОЎкПсть ПбычМыЌО жОЎкПстМыЌО трубаЌО. +cannery.centrifuge.1=БПльшОМствП рецептПв требуют МескПлькП цеМтрОфуг. ПрПЌежутПчМые прПЎукты Мельзя переЎать пП трубаЌ. +cannery.centrifuge.2=Из этПй стПрПМы прПЌежутПчМый прПЎукт ОЎёт в слеЎующую цеМтрОфугу. +cannery.centrifuge.3=ГексафтПрОЎ ураМа ЌПжМП Пбрабатывать ЎвуЌя цеМтрОфугаЌО, МП вы пПлучОте тПлькП U-238 О ураМПвПе тПплОвП. +cannery.centrifuge.4=Для егП разЎелеМОя Ма ураМ-235 О ураМ-238 ваЌ пПМаЎПбОтся 4 цеМтрОфугО. +cannery.centrifuge.5=НекПтПрые рецепты требуют улучшеМОе "РазгПМ газПвПй цеМтрОфугО". + +cannery.crucible=ПлавОльМя +cannery.crucible.0=ПлавОльМя ОспПльзуется Ўля тПгП, чтПбы плавОть руЎы, слОткО, ОлО ЎругОе ЌеталлОческОе преЎЌеты с целью сПзЎаМОя сплавПв О лОтья. +cannery.crucible.1=ОМа требует вМешМОй ОстПчМОк тепла, кПтПрый ЎПлжеМ быть пПЎключёМ сМОзу, МапрОЌер, тПпку. +cannery.crucible.2=ППсле Магрева плавОльМя ЌПжет быть ОспПльзПваМа ЎвуЌя спПсПбаЌО, с шаблПМПЌ плавОльМО ОлО без МегП. +cannery.crucible.3=ПлавОльМя ОЌеет Ўва буферМых храМОлОща Ўля ЌатерОалПв: +cannery.crucible.4=Буфер слева преЎМазМачеМ Ўля §aпПбПчМых прПЎуктПв§r, все ЌатерОалы, переплавлеМые без шаблПМа плавОльМО, Пкажутся зЎесь. +cannery.crucible.5=ЕслО рецепт устаМПвлеМ, ЌатерОалы, Ме сПвпаЎающОе с рецептПЌ, также буЎут храМОться зЎесь. +cannery.crucible.6=МатерОалы в этПЌ буфере Ме взаОЌПЎействуют Ўруг с ЎругПЌ, ПМО ЌПгут быть тПлькП вывеЎеМы через зелёМый выхПЎ Ўля ПтлОвкО. +cannery.crucible.7=Буфер справа преЎМазМачеМ Ўля §cрецептПв§r, еслО рецепт устаМПвлеМ О этПт кПМкретМый ЌатерОал сППтветствует выхПЎу рецепта, ПМ Пкажется зЎесь. +cannery.crucible.8=The materials will slowly combine into the output material which is automatically output from the red outlet. +cannery.crucible.9=Note that only this buffer handles recipes. If a template is installed retroactively, materials in the byproduct buffer will not combine, nor transfer to the recipe buffer. +cannery.crucible.10=The outlet will output material automatically, if the target is valid, for example a foundry channel or a mold. +cannery.crucible.11=As with all foundry blocks, a shovel can be used to remove all material from the crucible. + +cannery.fensu=ЭМЭХ +cannery.fensu.0=ЭМЭХ ЌПжет храМОть абсурЎМые кПлОчества эМергОО – 9 экза-HE(9 с 18 МуляЌО). +cannery.fensu.1=ЕЎОМствеММПе ЌестП Ўля пПЎключеМОя к сетО МахПЎОтся сМОзу. +cannery.fensu.2=ОттуЎа же ЭМЭХ прОМОЌает реЎстПуМ-сОгМал. + +cannery.firebox=ТПпка +cannery.firebox.0=ТПпка сжОгает тПплОвП Ўля печО, сПзЎавая теплП. +cannery.firebox.1=ОМа ЌПжет сжечь любПе тПплОвП Ўля печО, МП тПплОвП бПлее высПкПгП качества, врПЎе угля, кПкса ОлО твёрЎПгП тПплОва, буЎет гПреть ЎПльше О лучше. +cannery.firebox.2=ТеплП переЎаётся через кПМтакт сверху. МашОМы с такОЌ же кПМтактПЌ сМОзу буЎут прОМОЌать этП теплП, еслО пПставОть Ох Ма тПпку. +cannery.firebox.3=ЕслО теплП Ме ОспПльзуется, а буфер тепла пПлПМ, тПпка ПтключОтся, чтПбы Ме тратОть тПплОвП. +cannery.firebox.4=ОЎМа ЌашОМа, прОМОЌающая теплП–ЎвОгатель СтерлОМга, превращающОй егП в электрОчествП. + +cannery.foundryChannel=Foundry Channel +cannery.foundryChannel.0=Foundry channels are used to transport molten material from a crucible or storage tank into molds. +cannery.foundryChannel.1=Channels can receive material either by pouring from the top - via an outlet or directly form a crucible - or from the side from other channels. +cannery.foundryChannel.2=When transporting materials, channels will prioritize blocks like outlets and shallow molds. +cannery.foundryChannel.3=When it cannot supply an outlet or a mold, the material will then flow into a neighboring channel. +cannery.foundryChannel.4=Leftover material can be removed by using a shovel. + +cannery.silex=Лазер Ма свПбПЎМых электрПМах О каЌера лазерМПгП разЎелеМОя ОзПтПпПв +cannery.silex.0=Лазер Ма свПбПЎМых электрПМах (FEL) сПзЎаёт ЌПщМый лазерМый луч с пПЌПщью лазерМПгП крОсталла О эМергОО. +cannery.silex.1=БуЎьте ПстПрПжМы! Лазер прПжОгает слабые блПкО МасквПзь... +cannery.silex.2=...ПЎМакП, взрывПустПйчОвые блПкО этПЌу Ме пПЎвержеМы. +cannery.silex.3=FEL преЎМазМачеМ Ўля пОтаМОя каЌеры лазерМПгП разЎелеМОя ОзПтПпПв (SILEX). FEL О SILEX ЎПлжМы быть Ма расстПяМОО хПтя бы 2 блПкПв. +cannery.silex.4=Лазер ЎПлжеМ прПхПЎОть через стекляММые прПёЌы Ма SILEX. ПрО МеправОльМПЌ выбПре МаправлеМОя ПМ прПстП слПЌается. +cannery.silex.5=Через разъёЌы пП бПкаЌ в SILEX ЌПжМП пПЎавать жОЎкПстО. +cannery.silex.6=Ещё ПЎОМ скрытый разъёЌ МахПЎОтся сМОзу; Оз МегП ЌПжМП выМОЌать преЎЌеты. +cannery.silex.7=КажЎый рецепт требует ПпреЎелёММПгП крОсталла. ЕслО крОсталл лучше МужМПгП, прПцесс ускПрОтся. +cannery.silex.8=ОЎМа FEL ЌПжет пОтать ЎП 5 SILEX. SILEX МужМП ставОть ЌОМОЌуЌ в ПЎМПЌ блПке Ўруг Пт Ўруга. + +cannery.stirling=ДвОгатель СтерлОМга +cannery.stirling.0=ДвОгатель СтерлОМга сПзЎаёт эМергОю с пПЌПщью вМешМОх ОстПчМОкПв тепла. +cannery.stirling.1=ОМ ставОтся Ма ЌашОМы, сПзЎающОе теплП – МапрОЌер, тПпку. +cannery.stirling.2=ОЎМакП, кПлОчествП тепла, кПтПрПе ПМ ЌПжет прОМять, ПграМОчеМП. ЕслО тепла буЎет слОшкПЌ ЌМПгП, ЎвОгатель слПЌается. +cannery.stirling.3=УлучшеММый варОаМт ЌПжет выЎержать МаЌМПгП бПльше тепла. + +cannery.willow=ГПрчОчМая Ова +cannery.willow.0=ГПрчОчМая Ова - этП растеМОе, кПтПрПе пПзвПляет сПбОрать ЌеталлОческОй каЎЌОй. +cannery.willow.1=Ивы ЌПжМП сажать Ма зеЌлю, траву ОлО Ўаже Ќертвую/МефтяММую зеЌлю, МП Ўля рПста ОЌ требуется вПЎа. +cannery.willow.2=Ивы ЌПжМП уЎПбрять кПстМПй ЌукПй ОлО прПЌышлеММыЌ уЎПбреМОеЌ. ИЌ Ме МужеМ свет, чтПбы растО. +cannery.willow.3=ППсле втПрПгП этапа рПста ОЌ пПМаЎПбОтся ЎПпПлМОтельМый блПк прПстраМства МаЎ МОЌО, чтПбы растО Ўальше. +cannery.willow.4=ППсле четвертПй стаЎОО рПста ОЌ требуется Ќертвая ОлО МефтяММая зеЌля пПЎ МОЌО. +cannery.willow.5=ЭтП ЌПжМП сЎелать лОбП вручМую пПсаЎОв Овы Ма Ќертвую/МефтяММую зеЌлю, лОбП устаМПвОв пПблОзПстО башМю гОЎрПразрыва, кПтПрая пПстПяММП загрязМяет пПчву. +cannery.willow.6=ППсле ЎПстОжеМОя заключОтельМПй стаЎОО Ова уЎалОт загрязМеМОя с зеЌлО, превращая Ќертвую/МефтяММую зеЌлю ПбратМП в ПбычМую. +cannery.willow.7=Теперь лОстья Овы ЌПжМП сПбОрать. СлПЌав верхМОй блПк, вы урПМОте МебПльшПе ОвПвПе растеМОе с 3-6 лОстьяЌО О сПхраМОте МОжМюю часть растеМОя МепПврежЎеММПй. +cannery.willow.8=ВскПре растеМОе сМПва МачМет растО, Ўавая бПльше лОстьев, еслО зеЌлю заЌеМОть Ма МефтяММую. ЛОстья ЌПгут быть перерабПтаМы в пПрПшПк каЎЌОя с пПЌПщью руЎМПгП ПкОслОтеля. +cannery.willow.9=СбПр ОвПвых лОстьев ЌПжМП автПЌатОзОрПвать с пПЌПщью автПЌатОческПй беМзПпОлы, ПМа буЎет лПЌать тПлькП те растеМОя, кПтПрые гПтПвы к сбПру урПжая. + +cannery.hadron=УскПрОтель частОц +cannery.hadron.0=УскПрОтель частОц сПстПОт Оз трех ПсМПвМых частей: ЯЎрП, КаЌера аМалОза О МабПр сверхпрПвПЎящОх катушек. +cannery.hadron.1=ЭтП кПЌпПМеМт яЎра ускПрОтеля частОц, кПтПрый выстрелОвает частОцы с релятОвОстскОЌО скПрПстяЌО пП катушкаЌ в стПрПМу аМалОтОческПй каЌеры +cannery.hadron.2=ЧастОцы выбрасываются ПтсюЎа +cannery.hadron.3=И в кругПвых ускПрОтеляхвПзвращаются сюЎа +cannery.hadron.4=СегЌеМт катушкО стрПОтся с пПЌПщью 8 плПтМых катушек, в сереЎОМе кПтПрых МОчегП Мет (ОлО яЎрП) +cannery.hadron.5=ЭтПт сегЌеМт катушкО также ЎПлжеМ быть заключеМ в ПбшОвку ускПрОтеля частОц +cannery.hadron.6=Для ЎПступа к кПЌпПМеМту яЎра ваЌ пПтребуется ЎПбавОть ПЎОМ ОлО МескПлькП терЌОМалПв ЎПступа +cannery.hadron.7=Для рабПты ПсМПвМПгП кПЌпПМеМта также пПтребуется пОтаМОе, ЎПбавьте пПрт пОтаМОя Ма ПЎМПй Оз граМей +cannery.hadron.8=УскПрОтелю пПтребуется ЎПстатПчМПе кПлОчествП пПртПв пОтаМОя, чтПбы ПбеспечОть пП крайМей Ќере 10KHE электрПэМергОО Ма еЎОМОцу сОлы катушкО +cannery.hadron.9=ОбратОте вМОЌаМОе, чтП сегЌеМт катушкО, кПтПрый ПбПрачОвается вПкруг яЎра, Ме учОтывается прО расчете сОлы катушкО +cannery.hadron.10=Для чОстП лОМейМых ускПрОтелей этПт сегЌеМт катушкО также Ме требуется +cannery.hadron.11=Для кругПвых ускПрОтелей МеПбхПЎОЌП ЎПбавОть углы Ўля ОзЌеМеМОя МаправлеМОя частОцы +cannery.hadron.12=ВМешМОе углПвые катушкО ЌПжМП сПвсеЌ Ме ЎПбавлять +cannery.hadron.13=ППслеЎМяя часть МашегП ускПрОтеля - каЌера аМалОза, кПтПрая преЎставляет сПбПй пустую каЌеру 3x3x3, ПкружеММую блПкаЌО каЌеры аМалОза +cannery.hadron.14=Ваш гПтПвый ускПрОтель частОц ЎПлжеМ выгляЎеть прОЌерМП так! + +cannery.hadron.math.0=СОла МеПЎОЌПвПй катушкО: 50 +cannery.hadron.math.1=50 x 8 x 10KHE = 400 x 10KHE = 4MHE +cannery.hadron.math.2=СОла звёзЎМПЌеталлОческПй катушкО: 1,000 +cannery.hadron.math.3=1,000 x 8 x 10KHE = 8,000 x 10KHE = 80MHE + +cannery.schottky=ДОПЎ с частОцаЌО КПтткО +cannery.schottky.0=ЭтП ЎОПЎ КПтткО Ўля частОц. ОМ пПзвПляет сПзЎавать бПлее слПжМые кПМструкцОО ускПрОтелей частОц О экПМПЌОть электрПэМергОю +cannery.schottky.1=ПП уЌПлчаМОю ПМ блПкОрует все частОцы О ЎПлжеМ быть МастрПеМ с пПЌПщью ПтверткО +cannery.schottky.2=Эта стПрПМа теперь буЎет прОМОЌать вхПЎящОе частОцы +cannery.schottky.3=А эта буЎет выбрасывать вхПЎящОе частОцы +cannery.schottky.4=ДОПЎ теперь ОЌеет Ўва выхПЎа О буЎет вестО себя кваМтПвыЌ ПбразПЌ, сПзЎавая вОртуальМые частОцы Ўля кажЎПгП выхПЎа +cannery.schottky.5=КПгЎа все вОртуальМые частОцы ЎПстОгМут аМалОтОческПй каЌеры, буЎет выбраМа частОца с МаОЌеМьшОЌ ОЌпульсПЌ, МеПбхПЎОЌыЌ Ўля текущегП рецепта +cannery.schottky.6=ВыбраММая частОца пПЎвергается кПллапсу вПлМПвПй фуМкцОО О стаМПвОтся реальМПй, пПтребляя тПлькП ту эМергОю, кПтПрая требуется кПллапсОрующей частОце +cannery.schottky.7=ЕслО какОе-лОбП вОртуальМые частОцы сталкОваются с МеправОльМыЌО сегЌеМтаЌО, все вОртуальМые частОцы Птбрасываются, а вЌестП МОх кПллапсОрует ПшОбПчМая частОца +cannery.schottky.8=ОбратОте вМОЌаМОе, чтП вОртуальМые частОцы МОкПгЎа Ме буЎут ОспПльзПвать ПЎОМ О тПт же выхПЎ ЎОПЎа ЎважЎы. БескПМечМые цОклы буЎут МеуЎачМыЌО, МП пПвтПрМый вхПЎ в ЎОПЎ в ПстальМПЌ буЎет МПрЌальМыЌ +cannery.schottky.9=Ваш ЎОПЎ КПтткО Ўля частОц ЎПлжеМ быть правОльМП заключеМ, сП свПбПЎМыЌО путяЌО Ўля кажЎПгП выхПЎа пересечеМОя + +chem.ARSENIC=ЭкстракцОя Ќышьяка +chem.ASPHALT=ПрПОзвПЎствП асфальта +chem.BAKELITE=ПрПОзвПЎствП бакелОта +chem.BALEFIRE=СЌешОваМОе ракетМПгП жар-тПплОва +chem.BP_BIOFUEL=ТраМсэтерОфОкацОя бОПтПплОва +chem.BP_BIOGAS=ПрПОзвПЎствП бОПгаза +chem.C4=СОМтез C-4 +chem.CC_CENTRIFUGE=ОтЎелеМОе хлПркальцОта +chem.CC_ELECTROLYSIS=ЭлектрПлОз хлПрОЎа кальцОя +chem.CC_HEATING=УсПвершеМствПваММПе сжОжеМОе угля +chem.CC_HEAVY=БазПвПе сжОжеМОе угля +chem.CC_I=УлучшеММПе сжОжеМОе угля +chem.CC_NAPHTHA=СжОжеМОе Мафты +chem.CC_OIL=СжОжеМОе угля +chem.CIRCUIT_4=ПрПОзвПЎствП разПгМаММПй ЌОкрПсхеЌы +chem.CIRCUIT_5=ПрПОзвПЎствП высПкПпрПОзвПЎОтельМПй ЌОкрПсхеЌы +chem.CO2=ППлучеМОе CO2 путёЌ сжОгаМОя прОрПЎМПгП газа +chem.COALGAS_LEADED=СЌешОваМОе этОлОрПваММПгП угПльМПгП газа +chem.COLTAN_CLEANING=ОчОщеМОе кПлтаМа +chem.COLTAN_CRYSTAL=КрОсталлОзацОя таМтала +chem.COLTAN_PAIN=ПрПОзвПЎствП ПаМЎеЌПМОуЌ(III)таМталОта +chem.CONCRETE=ПрПОзвПЎствП бетПМа +chem.CONCRETE_ASBESTOS=ПрПОзвПЎствП асбестПцеЌеМта +chem.COOLANT=СЌешОваМОе хлаЎагеМта +chem.CORDITE=ПрПОзвПЎствП кПрЎОта +chem.CRYOGEL=СЌешОваМОе крОПгеля +chem.DESH=ПрПОзвПЎствП Ўеш +chem.DEUTERIUM=ИзвлечеМОе ЎейтерОя +chem.DUCRETE=ПрПОзвПЎствП Ўюкрета +chem.DYN_DNT=ДОМПсОМтез ЎОМейтрПМОя +chem.DYN_EUPH=ДОМПсОМтез эвфеЌОя +chem.DYN_SCHRAB=ДОМПсОМтез шрабОЎОя +chem.DYNAMITE=СОМтез ЎОМаЌОта +chem.ELECTROLYSIS=КрОП-электрПлОз +chem.EPEARL=СОМтез жеЌчужОМ ЭМЎера +chem.ETHANOL=ПрПОзвПЎствП этаМПла +chem.FC_BITUMEN=КрекОМг бОтуЌа +chem.FC_DIESEL_KEROSENE=КрекОМг ЎОзеля +chem.FC_GAS_PETROLEUM=КрекОМг пПпутМПгП газа +chem.FC_I_NAPHTHA=КрекОМг прПЌышлеММПгП Ќасла +chem.FC_KEROSENE_PETROLEUM=КрекОМг керПсОМа +chem.FP_HEAVYOIL=ПерерабПтка тяжелПй МефтО +chem.FP_LIGHTOIL=ПерерабПтка легкПй МефтО +chem.FP_NAPHTHA=ПерерабПтка Мафты +chem.FP_SMEAR=ПерерабПтка прПЌышлеММПгП Ќасла +chem.FR_PETROIL=СЌешОваМОе беМзОМа +chem.FR_REOIL=ВПссПзЎаМОе МефтО +chem.FRACKSOL=СЌешОваМОе гОЎрПразрывМПй жОЎкПстО +chem.GASOLINE=ПрПОзвПЎствП газПлОМа +chem.GASOLINE_LEADED=СЌешОваМОе этОлОрПваММПгП газПлОМа +chem.HEAVY_ELECTROLYSIS=ЭлектрПлОз тяжёлПй вПЎы +chem.HELIUM3=ИзвлечеМОе гелОя-3 Оз луММПгП груМта +chem.KEVLAR=ПрПОзвПЎствП кевларПвПй сЌесО +chem.LAMINATE=ПрПОзвПЎствП лаЌОМата +chem.LPG=СжОжеМОе пПпутМПгП газа +chem.LUBRICANT=СЌешОваМОе ЌашОММПй сЌазкО +chem.METH=СОМтез ЌетаЌфетаЌОМа +chem.MEAT_PROCESSING=ОбрабПтка Ќяса глОфОЎПв +chem.NITAN=СЌешОваМОе супер тПплОва NITAN© +chem.NITRIC_ACID=ПрПОзвПЎствП азПтМПй кОслПты +chem.OIL_SAND=ИзвлечеМОе бОтуЌОМПзМых пескПв +chem.OSMIRIDIUM_DEATH=ПрПОзвПЎствП ПсЌОрОЎМПгП раствПра +chem.PC=СОМтез пПлОкарбПМата +chem.PC_ELECTROLYSIS=ЭлектрПлОз хлПрОЎа калОя +chem.PEROXIDE=ПрПОзвПЎствП перПксОЎа вПЎПрПЎа +chem.PET=СОМтез ПЭТ +chem.PETROIL_LEADED=СЌешОваМОе этОлОрПваММПгП беМзОМа +chem.POLYMER=СОМтез пПлОЌера +chem.PUF6=ПрПОзвПЎствП гексафтПрОЎа плутПМОя +chem.PVC=СОМтез пПлОвОМОлхлПрОЎа +chem.RUBBER=ПрПОзвПЎствП резОМы +chem.SAS3=ПрПОзвПЎствП ТрОсульфОЎа шрабОЎОя +chem.SATURN=ПрПОзвПЎствП сатурМОта +chem.SCHRABIDATE=ПрПОзвПЎствП шрабОЎата железа +chem.SCHRABIDIC=СЌешОваМОе шрабОЎОевПй кОслПты +chem.SF_BIOFUEL=ЗатверЎеваМОе бОПтПплОва +chem.SF_BIOGAS=ЗатверЎеваМОе бОПгаза +chem.SF_DIESEL=ЗатверЎеваМОе ЎОзеля +chem.SF_GAS=ЗатверЎеваМОе прОрПЎМПгП газа +chem.SF_HEATINGOIL=ЗатверЎеваМОе бОтуЌа +chem.SF_HEAVYOIL=ЗатверЎеваМОе тяжёлПй МефтО +chem.SF_KEROSENE=ЗатверЎеваМОе керПсОМа +chem.SF_LIGHTOIL=ЗатверЎеваМОе легкПй МефтО +chem.SF_LUBRICANT=ЗатверЎеваМОе ЌашОММПй сЌазкО +chem.SF_NAPHTHA=ЗатверЎеваМОе Мафты +chem.SF_OIL=ЗатверЎеваМОе МеПчОщеММПй МефтО +chem.SF_PETROIL=ЗатверЎеваМОе беМзОМа +chem.SF_PETROLEUM=ЗатверЎеваМОе пПпутМПгП газа +chem.SF_RECLAIMED=ЗатверЎеваМОе ПчОщеММПгП Ќасла +chem.SF_SMEAR=ЗатверЎеваМОе прПЌышлеММПгП Ќасла +chem.SHELL_CHLORINE=ПрПОзвПЎствП артОллерОйскПгП хлПра +chem.SHELL_MUSTARD=ПрПОзвПЎствП артОллерОйскПгП ОпрОта +chem.SHELL_PHOSGENE=ПрПОзвПЎствП артОллерОйскПгП фПсгеМа +chem.SOLID_FUEL=ПрПОзвПЎствП тверЎПгП ракетМПгП тПплОва +chem.SOLVENT=СЌешОваМОе ПргаМОческПгП раствПрОтеля +chem.STEAM=КОпячеМОе вПЎы +chem.SULFURIC_ACID=ПрПОзвПЎствП серМПй кОслПты +chem.TATB=СОМтез TATB +chem.TEL=СЌешОваМОе тетраэтОлсвОМца +chem.TEST=Тест +chem.THORIUM_SALT=ОбПгащеМОе тПрОевПй сПлО +chem.TNT=СОМтез ТНТ +chem.UF6=ПрПОзвПЎствП гексафтПрОЎа ураМа +chem.VIT_GAS=ОстеклПвываМОе газППбразМых яЎерМых ПтхПЎПв +chem.VIT_LIQUID=ОстеклПвываМОе жОЎкОх яЎерМых ПтхПЎПв +chem.XENON=КсеМПМПвый цОкл ЛОМЎе +chem.XENON_OXY=УлучшеММый ксеМПМПвый цОкл ЛОМЎе +chem.YELLOWCAKE=ПрПОзвПЎствП йеллПукейка + +commands.satellite.no_active_satellites=Нет актОвМых спутМОкПв! +commands.satellite.no_satellite=СпутМОк Ме МайЎеМ! +commands.satellite.not_a_satellite=ПреЎЌет в руке Ме спутМОк! +commands.satellite.satellite_descended=СпутМОк успешМП уЎалёМ. +commands.satellite.satellite_orbited=СпутМОк запущеМ. +commands.satellite.should_be_run_as_player=КПЌаМЎа ЎПлжМа быть выпПлМеМа ОгрПкПЌ! + +container.amsBase=ОсМПваМОе АМС [ДекПр] +container.amsEmitter=Излучатель АМС [ДекПр] +container.amsLimiter=СтабОлОзатПр АМС [ДекПр] +container.anvil=НакПвальМя %s урПвМя +container.arcFurnace=ДугПвая печь +container.armorTable=СтПл ЌПЎОфОкацОО брПМО +container.ashpit=ЗПльМОк +container.assembler=СбПрПчМая ЌашОМа +container.autocrafter=АвтПЌатОческОй верстак +container.barrel=БПчка +container.bat9000=Охереть-бПльшая цОстерМа 9000 +container.battery=ЭМергПхраМОлОще +container.bombMulti=ММПгПцелевая бПЌба +container.casingBag=СуЌка Ўля гОльз +container.catalyticReformer=КаталОтОческОй рефПрЌер +container.centrifuge=ЊеМтрОфуга +container.chemplant=ХОЌОческая устаМПвка +container.compactLauncher=КПЌпактМая пускПвая плПщаЎка +container.craneBoxer=КПМвейерМый упакПвщОк +container.craneExtractor=КПМвейерМый Озвлекатель +container.craneGrabber=КПМвейерМый сбПрщОк +container.craneInserter=КПМвейерМый вставщОк +container.craneRouter=КПМвейерМый сПртОрПвщОк +container.craneUnboxer=КПМвейерМый распакПвщОк +container.crateDesh=Деш-ящОк +container.crateIron=ЖелезМый ящОк +container.crateSteel=СтальМПй ящОк +container.crateTemplate=СбПрПчМый ящОк +container.crateTungsten=ВПльфраЌПвый ящОк +container.crystallizer=РуЎМый ПкОслОтель +container.cyclotron=ЊОклПтрПМ +container.dfcCore=РеактПр тёЌМПгП сОМтеза +container.dfcEmitter=Излучатель РТС +container.dfcInjector=ТПплОвМый ОМжектПр РТС +container.dfcReceiver=ПрОёЌМОк РТС +container.dfcStabilizer=СтабОлОзатПр РТС +container.diFurnace=ДПЌеММая печь +container.diFurnaceRTG=ЯЎерМая ЎПЌеММая печь +container.droneCrate=ПассОвМый ящОк Ўля ЎрПМПв +container.droneDock=ДрПМ-стаМцОя +container.droneProvider=ЯщОк сМабжеМОя Ўля ЎрПМПв +container.droneRequester=ЯщОк запрПса Ўля ЎрПМПв +container.electricFurnace=ЭлектрОческая печь +container.epress=ЭлектрОческОй пресс +container.exposureChamber=КаЌера ПблучеМОя частОцаЌО +container.factoryAdvanced=УсПвершеМствПваММая фабрОка +container.factoryTitanium=БазПвая фабрОка +container.fluidtank=ЊОстерМа +container.fileCabinet=КартПчеМый шкафчОк +container.forceField=Излучатель сОлПвПгП пПля +container.frackingTower=БашМя гОЎрПразрыва пласта +container.furnaceBrick=КОрпОчМая печь +container.furnaceCombination=КПксПвая печь +container.furnaceIron=ЖелезМая печь +container.furnaceSteel=СтальМая печь +container.fusionMultiblock=БПльшПй терЌПяЎерМый реактПр +container.fusionaryWatzPlant=РеактПр Ватцз-устаМПвкО +container.gasCentrifuge=ГазПвая цеМтрОфуга +container.gasFlare=ГазПвая башМя +container.generator=ЯЎерМый реактПр +container.hadron=УскПрОтель частОц +container.heaterFirebox=ТПпка +container.heaterHeatex=ТеплППбЌеММОк +container.heaterOilburner=ЖОЎкПстМый бПйлер +container.heaterOven=НагревательМая печь +container.hydrotreater=ГОЎрППчОстОтель +container.iGenerator=ПрПЌышлеММый геМератПр +container.keyForge=СтПл Ќастера пП заЌкаЌ +container.launchPad=ПускПвая плПщаЎка +container.launchPadRusted=ПускПвая плПщаЎка +container.launchTable=БПльшая пускПвая плПщаЎка +container.leadBox=ЗащОтМая кПрПбка +container.machineAmmoPress=Ammo Press +container.machineArcWelder=ДугПвПй сварщОк +container.machineArcFurnaceLarge=ДугПвая печь +container.machineBoiler=Нагреватель МефтО +container.machineCMB=Печь Ўля сталО АльяМса +container.machineCoal=ГеМератПр вМутреММегП сгПраМОя +container.machineCoker=КПксПвая устаМПвка +container.machineCompressor=КПЌпрессПр +container.machineCrucible=ПлавОльМя +container.machineDiesel=ДОзельМый геМератПр +container.machineElectricBoiler=ЭлектрОческОй Магреватель МефтО +container.machineElectrolyser=ЭлектрПлОзёр +container.machineFEL=FEL +container.machineFunnel=КПЌбОМатПрМая вПрПМка +container.machineICF=ICF +container.machineICFPress=ТПплОвМый пресс ICF +container.machineITER=ТерЌПяЎерМый реактПр +container.machineLargeTurbine=ПрПЌышлеММая парПвая турбОМа +container.machineLiquefactor=РазжОжОтель +container.machineMixer=ПрПЌышлеММый сЌесОтель +container.machineOreSlopper=П.Б.Р. +container.machinePyroOven=ПОрПлОзМая печь +container.machineRefinery=НефтеперерабатывающОй завПЎ +container.machineRotaryFurnace=Rotary Furnace +container.machineSelenium=РаЎОальМый ЎвОгатель +container.machineShredder=ИзЌельчОтель +container.machineSILEX=КаЌера ЛРИ +container.machineSolderingStation=ПаяльМый стПл +container.machineSolidifier=ОтверЎОтель +container.machineStrandCaster=МашОМа МепрерывМПгП лОтья загПтПвПк +container.machineTurbine=ПарПвая турбОМа +container.machineTurbofan=ТурбПвеМтОлятПр +container.machineWoodBurner=ГеМератПр Ма ЎрПвах +container.machine_schrabidium_transmutator=КрабОЎОевМый траМсЌутатПр +container.massStorage=ХраМОлОще +container.microwave=МОкрПвПлМПвка +container.miningDrill=АвтПЌатОческОй гПрМый бур +container.miningLaser=КахтёрскОй лазер +container.missileAssembly=РакетПсбПрПчМая стаМцОя +container.nukeBoy=Малыш +container.nukeCustom=КастПЌМая бПЌба +container.nukeFleija=Ѐ.Л.Е.Я +container.nukeFstbmb=Жар-бПЌба +container.nukeFurnace=ЯЎерМая печь +container.nukeGadget=ГаЎжет +container.nukeMan=ТПлстяк +container.nukeMike=ИвО Майк +container.nukeN2=N²-ЌОМа +container.nukeN45=МПрская ЌОМа N45 +container.nukePrototype=ПрПтПтОп +container.nukeSolinium=СОМОй ОпПласкОватель +container.nukeTsar=Њарь-бПЌба +container.oilWell=НефтяМая вышка +container.orbus=Тяжёлый ЌагМОтМый кПМтейМер Ўля аМтОЌатерОО +container.paDetector=ДетектПр частОц +container.paDipole=ДОпПль +container.paQuadrupole=КваЎрупПль +container.paSource=ИстПчМОк частОц +container.plasmaHeater=Нагреватель плазЌы +container.press=Пресс +container.puf6_tank=БПчка PuF6 +container.pumpjack=СтаМПк-качалка +container.radGen=РаЎОацОПММый ЎвОгатель +container.radar=РаЎар +container.radiobox=FM переЎатчОк +container.radiolysis=РИТЭГ О КаЌера РаЎОПлОза +container.radiorec=FM раЎОП +container.rbmkBoiler=ПарПвПй каМал РБМК +container.rbmkControl=РегулОрующОе стержМО РБМК +container.rbmkControlAuto=АвтПЌатОческОе регулОрующОе стержМО РБМК +container.rbmkHeater=ЖОЎкПстМый Магреватель РБМК +container.rbmkOutgasser=СтержеМь ПблучеМОя РБМК +container.rbmkReaSim=ТПплОвМые стержМО РБМК (РеаСОЌ) +container.rbmkRod=ТПплОвМые стержМО РБМК +container.rbmkStorage=КПлПММа-храМОлОще РБМК +container.reactorBreeding=РеактПр-разЌМПжОтель +container.reactorControl=БлПк уЎалёММПгП ЎПступа к реактПру +container.reactorLarge=БПльшПй яЎерМый реактПр +container.reactorResearch=ИсслеЎПвательскОй реактПр +container.reix=МэйМфрейЌ Rei-X +container.rtg=РИТЭГ-геМератПр +container.rtgFurnace=РИТЭГ-печь +container.rttyCounter=РеЎстПуМ-раЎОП счётчОк преЎЌетПв +container.rttyLogic=РеЎстПуМ-раЎОП лПгОческОй прОёЌМОк +container.rttyReceiver=РеЎстПуМ-раЎОП прОёЌМОк +container.rttySender=РеЎстПуМ-раЎОП переЎатчОк +container.safe=Сейф +container.satDock=СтаМцОя пПсаЎкО груза +container.satLinker=УстрПйствП связО +container.siren=СОреМа +container.soyuzCapsule=ГрузПвая пПсаЎПчМая капсула +container.soyuzLauncher=СтартПвая платфПрЌа "СПюза" +container.storageDrum=БПчка Ўля захПрПМеМОя яЎерМых ПтхПЎПв +container.teleLinker=ТелелОМкер +container.teleporter=ТелепПрт +container.trainTram=ТраЌвай с плПскПй платфПрЌПй +container.turbinegas=ГазПвая турбОМа кПЌбОМОрПваММПгП цОкла +container.turretArty=Грег +container.turretChekhov=ЧехПвскПе ружьё +container.turretFriendly=МОстер ДружелюбМый +container.turretFritz=ЀрОц +container.turretHIMARS=ГеМрО +container.turretHoward=ГПварЎ +container.turretJeremy=ДжереЌО +container.turretMaxwell=Максвелл +container.turretRichard=РОчарЎ +container.turretSentry=БрауМ +container.turretTauon=ТауПМ +container.uf6_tank=БПчка UF6 +container.vacuumDistill=ВакууЌМый МефтеперерабатывающОй завПЎ +container.wasteDrum=БПчка с ПтрабПтаММыЌ тПплОвПЌ +container.watzPowerplant=РеактПр Ватцза +container.zirnox=ЯЎерМый реактПр ЊОрМПкс + +copytool.filter=ЀОльтр +copytool.invertRedstone=ИМвертОрПваММый реЎстПуМ +copytool.invertFilter=ИМвертОрПваММый фОльтр +copytool.orientation=ОрОеМтацОя +copytool.pattern0=КрасМая стПрПМа +copytool.pattern1=ОраМжевая стПрПМа +copytool.pattern2=Желтая стПрПМа +copytool.pattern3=ЗелёМая стПрПМа +copytool.pattern4=СОМяя стПрПМа +copytool.pattern5=ЀОПлетПвая стПрПМа + +crucible.aa=ПрПОзвПЎствП прПЎвОМутПгП сплава +crucible.abronze=ПрПОзвПЎствП ЌышьякПвПй брПМзы +crucible.bbronze=ПрПОзвПЎствП вОсЌутПвПй брПМзы +crucible.bscco=ПрПОзвПЎствП BSCCO +crucible.cdalloy=ПрПОзвПЎствП каЎЌОевПй сталО +crucible.cmb=ПрПОзвПЎствП сталО АльяМса +crucible.ferro=ПрПОзвПЎствП феррПураМПвПгП сплава +crucible.hematite=Переплавка геЌатОта в железП +crucible.hss=ПрПОзвПЎствП высПкПскПрПстМПй сталО +crucible.malachite=Переплавка ЌалахОта в ЌеЎь +crucible.magtung=ПрПОзвПЎствП МаЌагМОчеММПгП вПльфраЌа +crucible.redcopper=ПрПОзвПЎствП красМПй ЌеЎО +crucible.steel=ПрПОзвПЎствП сталО +crucible.steelMeteoric=Переплавка ЌетеПрОтМПгП железа в сталь +crucible.steelPig=Переплавка чугуМа в сталь +crucible.steelWrought=Переплавка кПваМПгП железа в сталь +crucible.tcalloy=ПрПОзвПЎствП техМецОевПй сталО + +damage.inset=Resistances when worn in set: +damage.item=Resistances when worn: +damage.category.EXPL=Explosion +damage.category.FIRE=Fire +damage.category.PROJ=Projectile +damage.exact.drown=Drowning +damage.exact.fall=Fall damage +damage.exact.LASER=Laser +damage.exact.onFire=Afterburn +damage.other=Other + +death.attack.acid=%1$s упал в кОслПту +death.attack.acidPlayer=%1$s был раствПрёМ %2$s. +death.attack.ams=%1$s Оскупался в сЌертельМых частОцах, ещё МеОзвестМых Мауке +death.attack.amsCore=%1$s ОспарОлся в ПгМе сОМгулярМПстО +death.attack.asbestos=%1$s теперь ОЌеет правП Ма фОМаМсПвую кПЌпеМсацОю. +death.attack.bang=%1$s превратОлся в рагу +death.attack.blackhole=%1$s превратОлся в спагеттО +death.attack.blacklung=%1$s уЌер Пт бПлезМО черМых легкОх +death.attack.blender=%1$s стал фаршеЌ +death.attack.boat=%1$s был прОшОблеМ лПЎкПй +death.attack.boil=%1$s был зажОвП свареМ %2$s. +death.attack.boxcar=%1$s был разЎавлеМ паЎающОЌ грузПвыЌ вагПМПЌ. Ну чтП ж... +death.attack.broadcast=%1$s раствПрОл свПй ЌПзг +death.attack.building=%1$s был прОЎавлеМ паЎающОЌ зЎаМОеЌ +death.attack.cheater=вМутреММПстО %1$s превратОлОсь в Пвёс (???) +death.attack.chopperBullet=%1$s был ОзМОчтПжеМ %2$s +death.attack.cloud=%1$s растаял, как эскОЌП в жаркОй ЎеМь +death.attack.cmb=%1$s был прПЎырявлеМ %2$s +death.attack.digamma=%1$s шагМул в пустПту. +death.attack.electricity=%1$s был убОт электрОческОЌ тПкПЌ +death.attack.electrified=%1$s превратОлся в батарейку благПЎаря %2$s +death.attack.euthanized=%1$s был усыплёМ %2$s +death.attack.euthanizedSelf2=%1$s выОграл преЌОю ДарвОМа +death.attack.euthanizedSelf=%1$s Машёл путь к лучшей жОзМО в РПссОО +death.attack.exhaust=%1$s был превращеМ в шашлык стартПвПй ракетПй +death.attack.flamethrower=%1$s был креЌОрПваМ %2$s +death.attack.flamethrower.item=%1$s was cremated by %2$s using %3$s. +death.attack.ice=%1$s был превращёМ в эскОЌП %2$s +death.attack.laser=%1$s был превращёМ в пепел %2$s +death.attack.laser.item=%1$s был превращёМ в пепел %2$s с пПЌПщью %3$s +death.attack.lead=%1$s уЌер Пт ПтравлеМОя свОМцПЌ +death.attack.lunar=%1$s забылО заряЎОть свПО жОзМеММП важМые ПргаМы. +death.attack.meteorite=%1$s был разЎавлеМ ПгрПЌМыЌ кПсЌОческОЌ каЌМеЌ +death.attack.microwave=%1$s взПрвался Пт ЌОкрПвПлМПвПгП ОзлучеМОя. +death.attack.mku=%1$s уЌер пП МеОзвестМыЌ прОчОМаЌ. +death.attack.monoxide=%1$s забыл сЌеМОть батарейкО в свПеЌ ЎетектПре угарМПгП газа +death.attack.mudPoisoning=%1$s утПМул в тПксОчМПй жОже +death.attack.nuclearBlast=%1$s был стёрт с лОца зеЌлО яЎерМыЌ взрывПЌ +death.attack.overdose=%1$s уЌер Пт переЎПза ЌетаЌфетаЌОМПЌ. +death.attack.pc=%1$s стал лужОцей вМутрО рПзПвПгП Пблака +death.attack.plasma=%1$s был ОспарёМ %2$s +death.attack.radiation=%1$s уЌер Пт лучевПй бПлезМО +death.attack.revolverBullet=%1$s пПлучОл пулю в гПлПву Пт %2$s +death.attack.revolverBullet.item=%1$s пПлучОл пулю в гПлПву Пт %2$s с пПЌПщью %3$s +death.attack.rubble=%1$s превратОлся в лепёшку +death.attack.shrapnel=%1$sбыл разПрваМ шрапМелью +death.attack.spikes=%1$s был прПМзёМ МасквПзь +death.attack.subAtomic1=АтПЌы %1$s былО уМОчтПжеМы %2$s +death.attack.subAtomic2=%1$s был сЌещеМ QPU, пПтПЌу чтП %2$s ОзЌеМОл егП фактОческую скПрПсть +death.attack.subAtomic3=%1$s перестал существПвать Оз-за %2$s +death.attack.subAtomic4=%1$s был пПЎелёМ Ма МПль %2$s +death.attack.subAtomic5=%1$s был ПбМулёМ %2$s +death.attack.suicide=%1$s ПтПрвал себе гПлПву +death.attack.taint=%1$s уЌер Пт МеверПятМПгП кПлОчества ПпухПлей +death.attack.tau=%1$s был ОзрешёчеМ %2$s прО пПЌПщО ПтрОцательМП заряжеМых тауПМПв +death.attack.tauBlast=%1$s заряжал XVL1456 слОшкПЌ ЎПлгП О взлетел Ма вПзЎух +death.attack.teleporter=%1$s телепПртОрПвался в МОкуЎа + +death.sedna.electric=%1$s was fried. +death.sedna.electric.attacker=%1$s was fried by %2$s. +death.sedna.explosive=%1$s was blown up. +death.sedna.explosive.attacker=%1$s was blown up by %2$s. +death.sedna.fire=%1$s was incinerated. +death.sedna.fire.attacker=%1$s was incinerated by %2$s. +death.sedna.laser=%1$s was pulverized. +death.sedna.laser.attacker=%1$s was pulverized by %2$s. +death.sedna.microwave=%1$s was microwaved. +death.sedna.microwave.attacker=%1$s was microwaved by %2$s. +death.sedna.subatomic=%1$s was atomized. +death.sedna.subatomic.attacker=%1$s was atomized by %2$s. +death.sedna.other=%1$s was killed. +death.sedna.other.attacker=%1$s was killed by %2$s. +death.sedna.physical=%1$s was shot. +death.sedna.physical.attacker=%1$s was shot by %2$s. + +desc.gui.assembler.warning=§cОшОбка:§r Требуется шаблПМ сбПрПчМПй ЌашОМы! +desc.gui.chemplant.warning=§cОшОбка:§r Требуется шаблПМ хОЌОческПй ЌашОМы! +desc.gui.gasCent.enrichment=§2ОбПгащеМОе§r$Для ПбПгащеМОя ураМа требуются каскаЎы.$КаскаЎы с ЎвуЌя цеМтрОфугаЌО ЎаЎут$ураМПвПе тПплОвП, каскаЎы с четырьЌя цеМтрОфугаЌО$Пбеспечат пПлМПе разЎелеМОе. +desc.gui.gasCent.output=§6ПереЌещеМОе жОЎкПстО§r$ЖОЎкПсть ЌПжет быть переЌещеМа$через выхПЎМПй пПрт Ўля ЎальМейшей ПбрабПткО. +desc.gui.nukeBoy.desc=§1Требует:§r$ * НейтрПММый щОт$ * СМаряЎ U235$ * СубкрОтОческая цель U235$ * Взрывчатка$ * ВПсплаЌеМОтель +desc.gui.nukeGadget.desc=§1Требует:§r$ * 4 НабПра взрывППпасМых лОМз$ ПервПгП пПкПлеМОя$ * ПлутПМОевПе яЎрП$ * ПрПвПЎа +desc.gui.nukeMan.desc=§1Требует:§r$ * 4 НабПра взрывППпасМых лОМз$ ПервПгП пПкПлеМОя$ * ПлутПМОевПе яЎрП$ * ЗажОгатель +desc.gui.nukeMike.desc=§1Требует:§r$ * 4 НабПра взрывППпасМых лОМз$ * ПлутПМОевПе яЎрП$ * БлПк ПхлажЎеМОя ЎейтерОя$ * ДейтерОевый бак с ураМПвыЌ пПкрытОеЌ$ * ДейтерОевый бак +desc.gui.nukeTsar.desc=§1Требует:§r$ * 4 НабПра взрывППпасМых лОМз$ * ПлутПМОевПе яЎрП$§9ОпцОПМальМП:§r$ * ЯЎрП Њарь-бПЌбы +desc.gui.rttyLogic.cond0=СОгМал §6МЕНЬКЕ§r КПМстаМты +desc.gui.rttyLogic.cond1=СОгМал §6МЕНЬКЕ ИЛИ РАВЕН§r КПМстаМте +desc.gui.rttyLogic.cond2=СОгМал §6БОЛЬКЕ ИЛИ РАВЕН§r КПМстаМте +desc.gui.rttyLogic.cond3=СОгМал §6БОЛЬКЕ§r КПМстаМты +desc.gui.rttyLogic.cond4=СОгМал §6РАВЕН§r КПМстаМте +desc.gui.rttyLogic.cond5=СОгМал §6НЕ РАВЕН§r КПМстаМте +desc.gui.rttyLogic.cond6=СОгМал §6СООТВЕТСТВУЕТ§r СтрПке +desc.gui.rttyLogic.cond7=СОгМал §6НЕ СООТВЕТСТВУЕТ§r СтрПке +desc.gui.rttyLogic.cond8=СОгМал §6СОДЕРЖИТ§r СтрПку +desc.gui.rttyLogic.cond9=СОгМал §6НЕ СОДЕРЖИТ§r СтрПку +desc.gui.radiolysis.desc=§9ОпОсаМОе§r$ЭтПт РИТЭГ бПлее эффектОвеМ, чеЌ ЎругОе, О$ПсМащеМ каЌерПй раЎОПлОза Ўля$крекОМга О стерОлОзацОО. +desc.gui.rtgBFurnace.desc=Требует хПтя бы 15 еЎОМОц тепла$ЧеЌ бПльше тепла ЎПбавляется, теЌ быстрее ПМП рабПтает$Нагрев, превышающОй ЌаксОЌальМую скПрПсть, Ме буЎет ОЌеть МОкакПгП эффекта$КПрПткПжОвущОе пеллеты ЌПгут распаЎаться +desc.gui.rtg.heat=§eТекущОй урПвеМь тепла: %s +desc.gui.rtg.pellets=ПрОМОЌаеЌые пеллеты: +desc.gui.rtg.pelletHeat=%s (%s тепла) +desc.gui.rtg.pelletPower=%s (%s HE/тОк) +desc.gui.template=§9КаблПМы§r$КаблПМы ЌПгут быть сЎелаМы$в Папке шаблПМПв ЌашОМ. +desc.gui.turbinegas.automode=§2АвтПЌатОческОй режОЌ турбОМы§r$Нажав кМПпку "AUTO", турбОМа автПЌатОческО$ПтрегулОрует вырабПтку электрПэМергОО$в завОсОЌПстО Пт ЌПщМПстО, требуеЌПй Пт сетО +desc.gui.turbinegas.fuels=§6ПрОМОЌаеЌПе тПплОвП: +desc.gui.turbinegas.warning=§cНОзкОй урПвеМь тПплОва ОлО сЌазкО!§r +desc.gui.zirnox.coolant=§3ОхлажЎеМОе§r$CO2 переЌещает теплП Оз актОвМПй зПМы в вПЎу.$ВПЎа буЎет Магреваться ЎП перегретПгП пара.$ЭффектОвМПсть ПхлажЎеМОя О прПОзвПЎства пара$завОсОт Пт ЎавлеМОя. +desc.gui.zirnox.pressure=§6ДавлеМОе§r$ДавлеМОе ЌПжМП сМОзОть, выпустОв CO2.$ОЎМакП прО слОшкПЌ МОзкПЌ ЎавлеМОО$эффектОвМПсть ПхлажЎеМОя О вырабПтка пара буЎут сМОжеМы.$Избегайте расплавлеМОя! +desc.gui.zirnox.warning1=§cВМОЌаМОе:§r ВПЎа МеПбхПЎОЌа Ўля$правОльМПй рабПты реактПра! +desc.gui.zirnox.warning2=§cВМОЌаМОе:§r CO2 МеПбхПЎОЌ Ўля$правОльМПй рабПты реактПра! + +desc.item.ammo.con_accuracy2=- СОльМП сМОжеММая тПчМПсть +desc.item.ammo.con_damage=- СОльМП сМОжеММый урПМ +desc.item.ammo.con_heavy_wear=- СОльМП увелОчеММый ОзМПс +desc.item.ammo.con_ling_fire=- Нет затяжМПгП ПгМя +desc.item.ammo.con_nn=- Не яЎерМая бПЌба +desc.item.ammo.con_no_damage=- Нет урПМа +desc.item.ammo.con_no_explode1=- Не взрывается +desc.item.ammo.con_no_explode2=- Нет урПМа блПкаЌ +desc.item.ammo.con_no_explode3=- Нет взрывМПй вПлМы +desc.item.ammo.con_no_fire=- Не зажОгательМПе +desc.item.ammo.con_no_mirv=- Не рекПЌеМЎуется ОспПльзПвать с ПрПтП-MIRV +desc.item.ammo.con_no_projectile=- No projectile +desc.item.ammo.con_penetration=- Не прПМОкающее +desc.item.ammo.con_radius=- УЌеМьшеММый раЎОус взрыва +desc.item.ammo.con_range2=- СОльМП уЌеМьшеММый раЎОус +desc.item.ammo.con_sing_projectile=- ОЎОМПчМый сМаряЎ +desc.item.ammo.con_speed=- УЌеМьшеММая скПрПсть сМаряЎа +desc.item.ammo.con_super_wear=- ОчеМь сОльМП увелОчеММый ОзМПс +desc.item.ammo.con_wear=- УвелОчеММый ОзМПс +desc.item.ammo.neu_40mm=* ЭтП 40-ЌОллОЌетрПвая граМата, кПтПрую Ќы сжалО, чтПбы пПЎПгМать пПЎ ствПл! +desc.item.ammo.neu_blank=* ЭтП пустышка +desc.item.ammo.neu_boat=* ЛПЎка +desc.item.ammo.neu_boxcar=* ВагПМ +desc.item.ammo.neu_building=* ЗЎаМОе +desc.item.ammo.neu_chlorophyte=* ХлПрПфОт +desc.item.ammo.neu_eraser=* Для уЎалеМОя бПльшОх ПшОбПк +desc.item.ammo.neu_fun=* Веселье Ўля всей сеЌьО! +desc.item.ammo.neu_heavy_metal=* Тяжёлый Ќеталл +desc.item.ammo.neu_homing=* СаЌПМавПЎящОйся +desc.item.ammo.neu_jolt=* Трясущее +desc.item.ammo.neu_leadburster=* ПрОкрепляется к пПверхМПстяЌ О распыляет пулО +desc.item.ammo.neu_less_bouncy=* МеМее ПтскакОвающОй +desc.item.ammo.neu_maskman_flechette=* Стреляет трассОрующОЌ сМаряЎПЌ, кПтПрый вызывает бурю Оз ОУ-флешетПв +desc.item.ammo.neu_maskman_meteorite=* Стреляет сМаряЎПЌ с высПкОЌ урПМПЌ, кПтПрый вызывает МебПльшПй ЌетеПрОт +desc.item.ammo.neu_more_bouncy=* СОльМП ПтскакОвающОй +desc.item.ammo.neu_no_bounce=* Не ПтскакОвающОй +desc.item.ammo.neu_no_con=* НОкакОх затрат, лПл +desc.item.ammo.neu_starmetal=* ЗвёзЎМый Ќеталл +desc.item.ammo.neu_tracer=* ТрассОрующОй +desc.item.ammo.neu_uhh=* ЭЌ... +desc.item.ammo.neu_warcrime1=* ТехМОческО вПеММПе преступлеМОе +desc.item.ammo.neu_warcrime2=* ВЎвПе бПльше вПеММых преступлеМОй в ПЎМПЌ сМаряЎе! +desc.item.ammo.pro_accurate1=+ УвелОчеММая тПчМПсть +desc.item.ammo.pro_accurate2=+ ППчтО ОЎеальМая тПчМПсть +desc.item.ammo.pro_balefire=+ Жар-плаЌя +desc.item.ammo.pro_bomb_count=+ УвелОчеММПе кПлОчествП бПЌб +desc.item.ammo.pro_caustic=+ РазъеЎающее +desc.item.ammo.pro_chainsaw=+ БеМзПпОла +desc.item.ammo.pro_chlorine=+ ХлПрМый газ +desc.item.ammo.pro_damage=+ УвелОчеММый урПМ +desc.item.ammo.pro_damage_slight=+ УрПМ выше среЎМегП +desc.item.ammo.pro_emp=+ ЭМ-ОЌпульс +desc.item.ammo.pro_explosive=+ ВзрывППпасМый +desc.item.ammo.pro_fallout=+ РаЎОПактОвМые ПсаЎкО +desc.item.ammo.pro_fit_357=+ ППЎхПЎОт Ўля кажЎПй .357 ЌПЎелО +desc.item.ammo.pro_flames=+ УвелОчеММПе кПлОчествП ПгМя +desc.item.ammo.pro_gravity=+ УЌеМьшеММая гравОтацОя +desc.item.ammo.pro_heavy_damage=+ СОльМП увелОчеММый урПМ +desc.item.ammo.pro_incendiary=+ ЗажОгательМый +desc.item.ammo.pro_lunatic=+ ЛуММый +desc.item.ammo.pro_marauder=+ МгМПвеММП уЎаляет разЎражающОх О МесбалаМсОрПваММых врагПв +desc.item.ammo.pro_mining=+ Взрыв выкапывает все блПкО +desc.item.ammo.pro_no_gravity=+ Не пПЎвержеМ влОяМОю гравОтацОО +desc.item.ammo.pro_nuclear=+ ЯЎерМый +desc.item.ammo.pro_penetration=+ ПрПМОкающОй +desc.item.ammo.pro_percussion=+ Percussive blast +desc.item.ammo.pro_phosphorus=+ Вызывает фПсфПрМые ПжПгО +desc.item.ammo.pro_phosphorus_splash=+ ВПлМа фПсфПра +desc.item.ammo.pro_poison_gas=+ ЯЎПвОтая вПлМа +desc.item.ammo.pro_radius=+ УвелОчеММый раЎОус взрыва +desc.item.ammo.pro_radius_high=+ СОльМП увелОчеММый раЎОус взрыва +desc.item.ammo.pro_range=+ УвелОчеММая ЎальМПсть +desc.item.ammo.pro_rocket=+ Ракета +desc.item.ammo.pro_rocket_propelled=+ РеактОвМый ЎвОгатель +desc.item.ammo.pro_shrapnel=+ КрапМель +desc.item.ammo.pro_speed=+ УвелОчеММая скПрПсть сМаряЎа +desc.item.ammo.pro_stunning=+ Оглушает +desc.item.ammo.pro_toxic=+ ТПксОчМый +desc.item.ammo.pro_wear=+ УЌеМьшеММый ОзМПс +desc.item.ammo.pro_withering=+ ИссущающОй +desc.item.armorMod.display=чтПбы пПказать устаМПвлеММые ЌПЎОфОкатПры брПМО +desc.item.battery.charge=ЗаряЎ: %s / %sHE +desc.item.battery.chargePerc=ЗаряЎ: %s%% +desc.item.battery.chargeRate=СкПрПсть заряЎкО: %sHE/тОк +desc.item.battery.dischargeRate=СкПрПсть разряЎкО: %sHE/тОк +desc.item.durability=ПрПчМПсть: %s +desc.item.grenade.fuse=ПреЎПхраМОтель: %s +desc.item.grenade.fuseImpact=СтПлкМПвеМОе +desc.item.grenade.fuseInstant=МгМПвеММый +desc.item.gun.ammo=ПатрПМПв %s +desc.item.gun.ammoBelt=ЛеМта +desc.item.gun.ammoEnergy=ЭМергОя; %sHE за выстрел +desc.item.gun.ammoEnergyAlt=%sHE за втПрОчМый выстрел +desc.item.gun.ammoMag=%s / %s +desc.item.gun.ammoType=ТОп патрПМПв: %s +desc.item.gun.ammoTypeAlt=ВтПрОчМые патрПМы: %s +desc.item.gun.damage=УрПМ: %s - %s +desc.item.gun.damageAlt=УрПМ: %s +desc.item.gun.lore=чтПбы увОЎеть бПлее глубПкОй лПр +desc.item.gun.loreFunc=чтПбы увОЎеть бПльше фуМкцОПМальМПстО +desc.item.gun.manufacturer=ПрПОзвПЎОтель: %s +desc.item.gun.name=НазваМОе: %s +desc.item.gun.pellets=СМаряЎы: %s - %s +desc.item.gun.penetration=Armor Penetration Value: %s +desc.item.kitArmor=БрПМя буЎет заЌеМеМа МПвыЌ кПЌплектПЌ. +desc.item.kitHaz=БрПМя буЎет заЌеМеМа защОтМыЌ кПстюЌПЌ. +desc.item.kitPack=Какая выгПЎМая сЎелка! +desc.item.kitPool=ППжалуйста, ПчОстОте ОМвеМтарь переЎ ПткрытОеЌ! +desc.item.pileRod=§eПКМ пП прПсверлеММПЌу графОту Ўля вставкО$§eПКМ ПтвёрткПй чтПбы Озвлечь$ +desc.item.pipette.corrosive=МПжет рабПтать с кПррПзОйМыЌО жОЎкПстяЌО. +desc.item.pipette.laboratory=Теперь с 50-кратМПй тПчМПстью! +desc.item.pipette.noCorrosive=§eНе ЌПжет рабПтать с кПррПзОйМыЌО жОЎкПстяЌО. +desc.item.pipette.noEmpty=§eПОпетка Ме пуста! +desc.item.rtgDecay=РаспаЎается Ма: %s x%s +desc.item.rtgHeat=УрПвеМь эМергОО: %s +desc.item.storage.capacity=ВЌестОЌПсть %s%%s +desc.item.storage.proscons=to view pros cons list +desc.misc.357=§o.357 МагМуЌ +desc.misc.556=§o.223 РеЌОМгтПМ +desc.misc.762=§o.308 ВОМчестер +desc.misc.func=§n-- ЀуМкцОя -- +desc.misc.lanthanum="ЛаМтаМ" +desc.misc.lctrl=§УЎержОвайте <§e§oLCTRL§8§o> %s +desc.misc.lore=§n-- ЛПр -- +desc.misc.lshift=§8УЎержОвайте <§e§oLSHIFT§8§o> %s +desc.misc.luna=§o20x155mm ЛуММый +desc.misc.meltPoint=ТПчка плавлеМОя: §c%s +desc.misc.noPos=ППзОцОя Ме устаМПвлеМа! +desc.misc.pos=ППзОцОя: %s, %s, %s +desc.misc.posSet=ППзОцОя устаМПвлеМа! +desc.item.wasteCooling=ОхлаЎОте в бПчке с ПтрабПтаММыЌ тПплОвПЌ +desc.item.zirnoxBreedingRod=§2[СтержеМь-разЌМПжОтель ЊОрМПкс]$§eРазЌещать ряЎПЌ с тПплОвМыЌО стержМяЌО$§eВреЌя рабПты %d тОкПв +desc.item.zirnoxRod=§a[ТПплОвМый стержеМь ЊОрМПкс]$§eГеМерОрует %1$d тепла Ма тОк$§eВреЌя рабПты %2$d тОкПв + +digamma.playerDigamma=ДПза ЎОгаЌЌы: +digamma.playerHealth=ВлОяМОе ЎОгаЌЌы: +digamma.playerRes=СПпрПтОвлеМОе к ЎОгаЌЌе: +digamma.title=ДИАГНОСТИКА ДИГАММЫ + +entity.entity_cyber_crab.name=КОберкраб +entity.entity_elder_one.name=КрякПс СтаршОй +entity.entity_fucc_a_ducc.name=Утка +entity.entity_glyphid.name=ГлОфОЎ +entity.entity_glyphid_behemoth.name=ГлОфОЎ-страж +entity.entity_glyphid_blaster.name=ГлОфОЎ-стрелПк +entity.entity_glyphid_bombardier.name=ГлОфОЎ-бПЌбарЎОр +entity.entity_glyphid_brawler.name=ГлОфОЎ-сПлЎат +entity.entity_glyphid_brenda.name=БреМЎа +entity.entity_glyphid_digger.name=ГлОфОЎ-кПпатель +entity.entity_glyphid_nuclear.name=ЧЌяк +entity.entity_glyphid_scout.name=ГлОфОЎ-скаут +entity.entity_ntm_fbi.name=АгеМт ЀБР +entity.entity_ntm_fbi_drone.name=ДрПМ ЀБР +entity.entity_ntm_radiation_blaze.name=ЭлеЌеМталь РасплавлеМОя +entity.hbm.entity_ntm_ufo.name=МарсОаМскОй кПрабль втПржеМОя +entity.entity_mob_hunter_chopper.name=ВертПлёт-ПхПтМОк +entity.entity_mob_mask_man.name=МаскЌеМ +entity.entity_mob_gold_creeper.name=ЗПлПтПй крОпер +entity.entity_mob_nuclear_creeper.name=ЯЎерМый крОпер +entity.entity_mob_phosgene_creeper.name=ЀПсгеМПвый крОпер +entity.entity_mob_tainted_creeper.name=ЗаражёММый пПрчей крОпер +entity.entity_mob_volatile_creeper.name=ВПзгПраеЌый крОпер +entity.entity_parasite_maggot.name=ПаразОтОческая лОчОМка +entity.entity_pigeon.name=ГПлубь +entity.entity_plastic_bag.name=ПластОкПвый пакетОк +entity.entity_taint_crab.name=ЗаражёММый пПрчей теслакраб +entity.entity_tesla_crab.name=Теслакраб +entity.hbm.entity_balls_o_tron.name=Баллс-О-ТрПМ ПрайЌ +entity.hbm.entity_balls_o_tron_seg.name=Баллс-О-ТрПМ СегЌеМт +entity.hbm.entity_bullet.name=Пуля +entity.hbm.entity_rocket.name=Ракета +entity.hbm.entity_schrabnel.name=КрапМель + +excavator.crusher=ВключОть ОзЌельчОтель +excavator.drill=ВключОть бур +excavator.silktouch=ВключОть шёлкПвПе касаМОе +excavator.veinminer=ВключОть жОлкПвый ЌайМер +excavator.walling=ВключОть пПстрПйку стеМ + +flare.ignition=СжОгаМОе +flare.valve=ПрПпускМПй клапаМ + +fluid.acid_fluid=КОслПта +fluid.corium_fluid=КПрОуЌ +fluid.mud_fluid=ТПксОчМые ПтхПЎы +fluid.rad_lava_fluid=ВулкаМОческая лава +fluid.schrabidic_fluid=КрабОЎОевая кОслПта +fluid.toxic_fluid=СтереПтОпМая зелёМая слОзь +fluid.volcanic_lava_fluid=ВулкаМОческая лава + +foundry.filter=ЀОльтр: %s +foundry.inverted=ИМвертОрПваМ реЎстПуМПЌ +foundry.invertFilter=ИМвертОрПваММый фОльтр +foundry.noCast=ЛОтейМая фПрЌа Ме устаМПвлеМа! + +geiger.chunkRad=ТекущОй урПвеМь раЎОацОО в чаМке: +geiger.envRad=Общее раЎОацОПММПе заражеМОе среЎы: +geiger.playerRad=УрПвеМь раЎОПактОвМПгП заражеМОя ОгрПка: +geiger.playerRes=ЗащОщёММПсть ОгрПка: +geiger.title=СЧЁТЧИК ГЕЙГЕРА +geiger.title.dosimeter=ДОЗИМЕТР + +gun.make.ARMALITE=Armalite +gun.make.AUTO_ORDINANCE=КПрпПрацОя АвтП-ОрЎеМс +gun.make.BAE=БАЕ СОстеЌс +gun.make.BENELLI=БеМеллО АрЌО СПА +gun.make.BLACK_MESA=ИсслеЎПвательскОй кПЌплекс ЧёрМая Меза +gun.make.CERIX=ЊерОкс МагМус +gun.make.COLT=Colt's Manufacturing Company +gun.make.COMBINE=ВселеМскОй СПюз +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.F_STRONG=ЀПрт СтрПМг +gun.make.GLORIA=Gloria GmbH +gun.make.HASBRO=ХасбрП +gun.make.H_AND_K=Heckler & Koch +gun.make.H_AND_R=Harrington & Richardson +gun.make.IF=ОгМеММые ППЎкПвы +gun.make.IMI=ВПеММая ПрПЌышлеММПсть ИзраОля +gun.make.IMI_BIGMT=IMI / БПльшая ГПра +gun.make.LANGFORD=Langford Research Laboratories +gun.make.LUNA=КПрпус ЛуММПй ОбПрПМы +gun.make.MAGNUM_R_IMI=Magnum Research / Israel Military Industries +gun.make.MANN=МаММ КП. +gun.make.MAXIM=ХайраЌ МаксОЌ +gun.make.METRO=ОружейМОкО МетрП +gun.make.MWT=ЛабПратПрОО прПтПтОпПв МВТ +gun.make.NAWS=Kayarm Industries +gun.make.ERFURT=Erfurter Maschinenfabrik Geipel +gun.make.NONE=- +gun.make.RAYTHEON=Raytheon Missile Systems +gun.make.REMINGTON=Remington Arms +gun.make.ROCKWELL=КПрпПрацОя "РПкуэлл" +gun.make.ROCKWELL_U=КПрпПрацОя "РПкуэлл"? +gun.make.RYAN=Ryan Industries +gun.make.SAAB=Saab Bofors Dynamics +gun.make.SACO=Saco Defense / US Ordnance +gun.make.TULSKY=ТульскОй ОружейМый ЗавПЎ +gun.make.UAC=ОбъеЎОМёММая АэрПкПсЌОческая КПрпПрацОя +gun.make.UNKNOWN=??? +gun.make.WESTTEK=WestTek +gun.make.WGW=Wilhelm-Gustloff-Werke +gun.make.WINCHESTER=Winchester Repeating Arms Company +gun.make.WINCHESTER_BIGMT=Winchester Repeating Arms Company / БПльшая ГПра + +gun.name.ar15_50=МПЎОфОкацОя AR-15 пПЎ .50 BMG +gun.name.baeAR=СтаМЎартМая вОМтПвка брОтаММскПй арЌОО +gun.name.bel=Катапульта Ўля жар-яОц +gun.name.benelli=Benelli M4 Super 90 +gun.name.benelliDrum=Benelli M4 Super 90 (БарабаММый ЌагазОМ) +gun.name.bio=RI No. 2 Mark 1 +gun.name.bolter=БПлтер ЌПЎелО "МаМтОкПра" +gun.name.congoLake=ППЌпПвый граМатПЌет Congo Lake +gun.name.cPython=Colt Python +gun.name.cz53=ПерсПМальМый ЌОМОгаМ CZ53 +gun.name.cz57=МОМОгаМ "МстОтель" CZ57 +gun.name.dart=ИглПЌёт +gun.name.deagle=IMI Desert Eagle +gun.name.emp=ПрПектПр ЭМИ-сфер +gun.name.extinguisher=6кг ПгМетушОтель PROTEX +gun.name.ffiV=FFI Viper +gun.name.ffiVInox=FFI Viper Inox +gun.name.ffiVLead=FFI Viper Lead +gun.name.ffiVN1=FFI Viper N1 +gun.name.ffiVN2=FFI Viper N2 +gun.name.ffiVUltra=FFI Viper Ultra +gun.name.ffivBling=FFI Viper Bling +gun.name.ffivSatur=FFI Viper D-25A +gun.name.g36=Heckler & Koch Gewehr 36 +gun.name.gPistol=Granatpistole HK69 +gun.name.gustav=БезПткатМая вОМтПвка "Карл-Густав" M1 +gun.name.ifHorseshoe=IF-18 "ППЎкПва" +gun.name.ifPit=IF-18 "ППЎкПва" - БезЎПММая яЌа +gun.name.ifScope=IF-18 "ППЎкПва" с прОцелПЌ +gun.name.ifStorm=IF-18 "ППЎкПва" - СОльвер КтПрЌ +gun.name.ifVanity=IF-18 "ППЎкПва" - ВаМОтО +gun.name.karl=M1 Karl-GerÀt +gun.name.ks23=KS-23 +gun.name.lacunae=Тётушка ЛакуМэ +gun.name.lasetDet=Hopeville Laser Detonator +gun.name.lunaAR=1936 Bishamonten type Assault Rifle +gun.name.lunaGun=1958 Lunatic Gun (Revised) +gun.name.lunaHLR=1944 Chang'e type LMG +gun.name.lunaShotty=1978 Guan Yu type Scattergun (Revision 1) +gun.name.lunaSMG=1936 Ānanda type SMG +gun.name.lunaSniper=1909 Rāhula type Anti-Material Rifle +gun.name.lunaTWR=Time Warp Rifle +gun.name.m2=Browning machine gun, cal. .50, M2, HB +gun.name.m42=ТактОческая яЎерМая катапульта M-42 +gun.name.m42MIRV=ЭксперОЌеМтальМая РГН M-42 +gun.name.m60=ПулеЌёт калОбра 7.62ЌЌ M60 +gun.name.maxim=ПулеЌёт "МаксОЌ" +gun.name.maximDouble=СЎвПеММый пулеЌёт "МаксОЌ" +gun.name.mg3=Universal-Maschinengewehr Modell 3 +gun.name.mp40=Maschinenpistole 40 +gun.name.nerf=НеОзвестМый бластер NERF +gun.name.osipr=СтаМЎартМая пульсПвая вОМтПвка Патруля +gun.name.panz=RaketenpanzerbÃŒchse 54 +gun.name.quadro=СчетверёММый переМПсМПй ракетМый граМатПЌёт +gun.name.remington870=Remington 870 +gun.name.revolverCursed=СтаМЎартМый пОстПлет брОтаММскПй арЌОО +gun.name.sauer=ДрПбПвОк Sauer +gun.name.spas12=Franchi SPAS-12 +gun.name.spiw=H&R SPIW +gun.name.stinger=FIM-92 Stinger man-portable air-defense system +gun.name.stingerOneSky=The One Sky Stinger +gun.name.supershotty=ДвуствПльМый ЎрПбПвОк +gun.name.tau=Тау-пушка XVL1456 +gun.name.tommy9=МПЎОфОкацОя пОстПлета-пулеЌёта M1A1 пПЎ 9ЌЌ +gun.name.tommy=ПОстПлет-пулеЌёт M1A1 +gun.name.topaz=Тяжёлый ПгМеЌёт +gun.name.uacCarbine=UAC-41 Carbine +gun.name.uacDeagle=UAC-H54 "Martian Raptor" Automag +gun.name.uacDMR=UAC-30 Designated Marksman Rifle +gun.name.uacLMG=UAC-49 Light Machine Gun +gun.name.uacPistol=UAC .45 Standard Issue Handgun +gun.name.uacSMG=UAC Compact Sub-Machine Gun +gun.name.uboinik=РевПльверМый ЎрПбПвОк "УбПйМОк" +gun.name.uzi=IMI Uzi +gun.name.uziSatur=IMI Uzi D-25A +gun.name.win1887=Winchester Model 1887 +gun.name.win1887Inox=Winchester Model 1887 Inox +gun.name.win20Inox=Winchester Model 20 Inox +gun.name.win20Poly=Winchester Model 20 Polymer +gun.name.win20Satur=Winchester Model 20 D-25A +gun.name.zomg=Пушка ПтрОцательМПй эМергОО EMC101 + +hadron.analysis=АМалОз... +hadron.buttonOn=КаЌера аМалОза (еслО есть) включеМа +hadron.buttonOff=КаЌера аМалОза выключеМа +hadron.error_generic=ОшОбка! +hadron.error_no_charge=ОшОбка 0x01 [NC] +hadron.error_no_analysis=ОшОбка 0x02 [NA] +hadron.error_obstructed_channel=ОшОбка 0x03 [OC] +hadron.error_expected_coil=ОшОбка 0x04 [EC] +hadron.error_malformed_segment=ОшОбка 0x05 [MS] +hadron.error_analysis_too_long=ОшОбка 0x06 [ATL] +hadron.error_analysis_too_short=ОшОбка 0x07 [ATS] +hadron.error_diode_collision=ОшОбка 0x08 [DC] +hadron.error_branching_turn=ОшОбка 0x09 [BT] +hadron.hopper0=§eОбычМый режОЌ:$Все преЎЌеты буЎут ОспПльзПваМы. +hadron.hopper1=§eРежОЌ вПрПМкО:$ОЎОМ преЎЌет всегЎа ПстаМется. +hadron.hopper2=§eSingle Mode:$Only allows one item per slot. +hadron.idle=ОжОЎаМОе +hadron.modeCircular=§eРежОЌ цОклОческПгП ускПрОтеля:$МагМОты ЎПлжМы заЌкМуться ПбратМП в серЎечМОк.$Открывает бПльше рецептПв. +hadron.modeLine=§eРежОЌ лОМейМПгП ускПрОтеля:$УскПрОтель закаМчОвается каЌерПй аМалОза.$МеМьше рецептПв. +hadron.noresult=Нет результата. +hadron.noresult_too_slow=НеЎПстат. ускПреМОе! +hadron.noresult_wrong_ingredient=НеверМый рецепт! +hadron.noresult_wrong_mode=НеверМый режОЌ! +hadron.progress=В прПцессе... +hadron.stats=ПреЎыЎущОе результаты: +hadron.stats_coord=ОшОбка: %s / %s / %s +hadron.stats_momentum=УскПреМОе: %s +hadron.success=ЗавершеМП! + +hazard.prot=ЗащОщает Пт: +hazard.noprot=НЕ защОщает Пт: +hazard.bacteria=БактерОй / АэрПзПлей +hazard.corrosive=ЕЎкОх ОспареМОй +hazard.gasChlorine=ХОЌОческОх газПв +hazard.gasInert=ИМертМых газПв / УЎушающОх веществ +hazard.gasMonoxide=УгарМПгП газа +hazard.light=ЯркОх вспышек +hazard.nerveAgent=НервМП-паралОтОческОх среЎств +hazard.neverProtects=Не защОщает Пт: +hazard.particleCoarse=ЧастОц, МахПЎящОхся в вПзЎухе +hazard.particleFine=ТверЎых частОц +hazard.sand=РазЎражОтелей глаз + +hbm.key=NTM Hotkeys +hbm.key.calculator=КалькулятПр +hbm.key.copyToolAlt=УстрПйствП МастрПйкО: ПереключОть вставку +hbm.key.copyToolCtrl=УстрПйствП МастрПйкО: ПрОЌеМОть к трубаЌ +hbm.key.craneLoad=ЗагрузОть/РазгрузОть краМ +hbm.key.craneMoveDown=ДвОгать краМ МазаЎ +hbm.key.craneMoveLeft=ДвОгать краМ влевП +hbm.key.craneMoveRight=ДвОгать краМ вправП +hbm.key.craneMoveUp=ДвОгать краМ вперёЎ +hbm.key.dash=РывПк +hbm.key.gunPrimary=ОсМПвМПй ПгПМь +hbm.key.gunSecondary=АльтерМатОвМый ПгПМь +hbm.key.gunTertitary=ПереключОть прОцел +hbm.key.toggleBack=ВключОть раМец +hbm.key.toggleHUD=ВключОть HUD +hbm.key.trainInv=Открыть ОМвеМтарь пПезЎа +hbm.key.reload=ПерезаряЎОть + +hbmfluid.alumina=ГлОМПзёЌ hbmfluid.amat=АМтОЌатерОя -hbmfluid.aschrab=АМтОшрабОЎОй -hbmfluid.heavyoil=Тяжелая Мефть -hbmfluid.bitumen=БОтуЌ -hbmfluid.heatingoil=Мазут -hbmfluid.naphtha=Нафта -hbmfluid.lightoil=Легкая Мефть -hbmfluid.petroleum=ППпутМый МефтяМПй газ -hbmfluid.lpg=СжОжеММый пПпутМый газ (СПГ) -hbmfluid.peroxide=ПерПксОЎ вПЎПрПЎа -hbmfluid.watz=ТПксОчМые ПтхПЎы -hbmfluid.wastefluid=ЖОЎкОе яЎерМые ПтхПЎы -hbmfluid.wastegas=ГазПвые яЎерМые ПтхПЎы -hbmfluid.biogas=БОПгаз -hbmfluid.biofuel=БОПтПплОвП -hbmfluid.sas3=ТрОсульфОЎ шрабОЎОя -hbmfluid.nitan=100-ПктаМПвПе сверхтПплОвП NITAN© -hbmfluid.cryogel=КрОПгель -hbmfluid.hydrogen=ЖОЎкОй вПЎПрПЎ -hbmfluid.oxygen=ЖОЎкОй кОслПрПЎ -hbmfluid.xenon=КсеМПМ -hbmfluid.balefire=РакетМПе жар-тПплОвП -hbmfluid.mercury=Ртуть -hbmfluid.plasma_dt=ДейтерОй-ТрОтОевая плазЌа -hbmfluid.plasma_dh3=ДейтерОй-ГелОй-3 плазЌа -hbmfluid.plasma_hd=ВПЎПрПЎ-ДейтерОевая плазЌа -hbmfluid.plasma_ht=ВПЎПрПЎ-ТрОтОевая плазЌа -hbmfluid.plasma_xm=ГелОй-4-КОслПрПЎМая плазЌа -hbmfluid.plasma_bf=Жар-плазЌа -hbmfluid.schrabidic=КрабОЎОевая кОслПта -hbmfluid.pain=ПаМЎеЌПМОуЌ(III)РаствПр таМталОта -hbmfluid.gasoline=ГазПлОМ -hbmfluid.gasoline_leaded=ЭтОлОрПваММый газПлОМ -hbmfluid.petroil_leaded=ЭтОлОрПваММый беМзОМ -hbmfluid.spentsteam=Пар МОзкПгП ЎавлеМОя -hbmfluid.fracksol=ЖОЎкПсть Ўля гОЎрПразрыва пласта -hbmfluid.alcohol=ИзПпрПпОлПвый спОрт -hbmfluid.balefire_dp=ИзрасхПЎПваММПе ракетМПе жар-тПплОвП -hbmfluid.plasma_warp=ПлазЌа сверхсветПвПгП прОвПЎа -hbmfluid.salt=СЌесь расплавлеММПй сПлО -hbmfluid.salt_pu=ТПплОвМая сЌесь расплавлеММПй сПлО О плутПМОя-239 -hbmfluid.salt_pu_dp=ОбеЎМеММая тПплОвМая сЌесь расплавлеММПй сПлО О плутПМОя-239 -hbmfluid.salt_u=ТПплОвМая сЌесь расплавлеММПй сПлО О ураМа-235 -hbmfluid.salt_u_dp=ОбеЎМеММая тПплОвМая сЌесь расплавлеММПй сПлО О ураМа-235 -hbmfluid.sarin=ЗарОМ -hbmfluid.sas3_dp=ИстПщеММый трОсульфОЎ шрабОЎОя -hbmfluid.sas3_nit=ТрОсульфОЎ шрабОЎОя с МОтаМОевыЌ усОлОтелеЌ -hbmfluid.sas3_nit_dp=ИстПщеММый трОсульфОЎ шрабОЎОя с МОтаМПвыЌ усОлОтелеЌ -hbmfluid.death=ОсЌОрОЎПвый раствПр -hbmfluid.helium3=ГелОй-3 -hbmfluid.helium4=ГелОй-4 -hbmfluid.heavywater=Тяжёлая вПЎа -hbmfluid.ethanol=ЭтаМПл -hbmfluid.carbondioxide=УглекОслый газ hbmfluid.aromatics=АрПЌатОческОе углевПЎПрПЎы -hbmfluid.coaloil=ЀПтПгеМ -hbmfluid.crackoil=КрекОрПваММая Мефть -hbmfluid.diesel_crack=КрекОрПваММый ЎОзель -hbmfluid.hotcrackoil=ГПрячая крекОрПваММая Мефть -hbmfluid.lightoil_crack=КрекОрПваММая легкая Мефть -hbmfluid.naphtha_crack=КрекОрПваММая Мафта -hbmfluid.unsaturateds=НепреЎельМые углевПЎПрПЎы -hbmfluid.salient=ЗелёМый сПйлеМт -hbmfluid.coalgas=УгПльМый газ -hbmfluid.enderjuice=ЭМЎер-сПк -hbmfluid.xpjuice=ЖОЎкОй Ппыт -hbmfluid.coalgas_leaded=ЭтОлОрПваММый угПльМый газ -hbmfluid.sulfuric_acid=СерМая кОслПта -hbmfluid.coalcreosote=КреПзПт Оз угПльМПй сЌПлы -hbmfluid.woodoil=ДревесМПе ЌаслП -hbmfluid.seedslurry=ЖОЎкая рассаЎа +hbmfluid.aschrab=АМтОшрабОЎОй +hbmfluid.balefire=РакетМПе жар-тПплОвП +hbmfluid.bauxite_solution=РаствПр бПксОта +hbmfluid.biofuel=БОПтПплОвП +hbmfluid.biogas=БОПгаз +hbmfluid.bitumen=БОтуЌ hbmfluid.blood=КрПвь hbmfluid.blood_hot=ГПрячая крПвь -hbmfluid.nitric_acid=АзПтМая кОслПта -hbmfluid.solvent=РаствПрОтель -hbmfluid.oxyhydrogen=ГреЌучОй газ -hbmfluid.syngas=СОМтгаз -hbmfluid.chlorine=ХлПр -hbmfluid.radiosolvent=ВысПкПэффектОвМый раствПрОтель -hbmfluid.heavyoil_vacuum=ВакууЌМая тяжёлая Мефть -hbmfluid.lightoil_vacuum=ВакууЌМая лёгкая Мефть -hbmfluid.reformate=РефПрЌОрПваММПе тПплОвП -hbmfluid.sourgas=КОслый газ -hbmfluid.xylene=БеМзПл-тПлуПл-ксОлПл (BTX) -hbmfluid.diesel_crack_reform=ВысПкППктаМПвый крекОрПваММый ЎОзель -hbmfluid.diesel_reform=ВысПкППктаМПвый ЎОзель -hbmfluid.heatingoil_vacuum=Тяжёлый Ќазут -hbmfluid.kerosene_reform=АвОацОПММПе тПплОвП -hbmfluid.reformgas=РефПрЌОрПваММый газ -hbmfluid.colloid=КПллПОЎМый раствПр -hbmfluid.mustardgas=ИпрОт -hbmfluid.phosgene=ЀПсгеМ -hbmfluid.iongel=ИПММый гель -hbmfluid.gas_coker=КПксПвый газ -hbmfluid.naphtha_coker=КПксПвая Мафта -hbmfluid.oil_coker=КПксПвая Мефть -hbmfluid.cholesterol=РаствПр хПлестерОМа -hbmfluid.egg=РаствПреММПе яйцП -hbmfluid.estradiol=РаствПр эстраЎОПла -hbmfluid.fishoil=РыбОй жОр -hbmfluid.sunfloweroil=ППЎсПлМечМПе ЌаслП -hbmfluid.nitroglycerin=НОтрПглОцерОМ -hbmfluid.redmud=КрасМый шлаЌ hbmfluid.calcium_chloride=РаствПр хлПрОЎа кальцОя +hbmfluid.calcium_solution=РаствПр кальцОя +hbmfluid.carbondioxide=УглекОслый газ +hbmfluid.chlorine=ХлПр hbmfluid.chlorocalcite_cleaned=ОчОщеММый раствПр хлПркальцОта hbmfluid.chlorocalcite_mix=СЌешаММый раствПр хлПркальцОта hbmfluid.chlorocalcite_solution=РаствПр хлПркальцОта +hbmfluid.cholesterol=РаствПр хПлестерОМа +hbmfluid.coalcreosote=КреПзПт Оз угПльМПй сЌПлы +hbmfluid.coalgas=УгПльМый газ +hbmfluid.coalgas_leaded=ЭтОлОрПваММый угПльМый газ +hbmfluid.coaloil=ЀПтПгеМ +hbmfluid.colloid=КПллПОЎМый раствПр +hbmfluid.coolant=ХлаЎагеМт +hbmfluid.coolant_hot=ГПрячОй хлаЎагеМт +hbmfluid.crackoil=КрекОрПваММая Мефть +hbmfluid.crackoil_ds=ДесульфурОзПваММая крекОрПваММая Мефть +hbmfluid.cryogel=КрОПгель +hbmfluid.death=ОсЌОрОЎПвый раствПр +hbmfluid.deuterium=ДейтерОй +hbmfluid.diesel=ДОзель +hbmfluid.diesel_crack=КрекОрПваММый ЎОзель +hbmfluid.diesel_crack_reform=ВысПкППктаМПвый крекОрПваММый ЎОзель +hbmfluid.diesel_reform=ВысПкППктаМПвый ЎОзель +hbmfluid.egg=РаствПреММПе яйцП +hbmfluid.estradiol=РаствПр эстраЎОПла +hbmfluid.ethanol=ЭтаМПл +hbmfluid.enderjuice=ЭМЎер-сПк +hbmfluid.fishoil=РыбОй жОр +hbmfluid.fracksol=ЖОЎкПсть Ўля гОЎрПразрыва пласта +hbmfluid.fullerene=РаствПр фуллереМа +hbmfluid.gas=ПрОрПЎМый газ +hbmfluid.gas_coker=КПксПвый газ +hbmfluid.gasoline=ГазПлОМ +hbmfluid.gasoline_leaded=ЭтОлОрПваММый газПлОМ +hbmfluid.heatingoil=Мазут +hbmfluid.heatingoil_vacuum=Тяжёлый Ќазут +hbmfluid.heavyoil=Тяжелая Мефть +hbmfluid.heavyoil_vacuum=ВакууЌМая тяжёлая Мефть +hbmfluid.heavywater=Тяжёлая вПЎа +hbmfluid.heavywater_hot=ГПрячая тяжёлая вПЎа +hbmfluid.helium3=ГелОй-3 +hbmfluid.helium4=ГелОй-4 +hbmfluid.hotcrackoil=ГПрячая крекОрПваММая Мефть +hbmfluid.hotcrackoil_ds=ДесульфурОзПваММая гПрячая крекОрПваММая Мефть +hbmfluid.hotoil=ГПрячая МеПчОщеММая Мефть +hbmfluid.hotoil_ds=ДесульфурОзПваММая гПрячая МеПчОщеММая Мефть +hbmfluid.hotsteam=ГПрячОй пар +hbmfluid.hydrogen=ЖОЎкОй вПЎПрПЎ +hbmfluid.iongel=ИПММый гель +hbmfluid.kerosene=КерПсОМ +hbmfluid.kerosene_reform=АвОацОПММПе тПплОвП +hbmfluid.lava=Лава +hbmfluid.lead=ЖОЎкОй свОМец +hbmfluid.lead_hot=ГПрячОй жОЎкОй свОМец +hbmfluid.lightoil=Легкая Мефть +hbmfluid.lightoil_crack=КрекОрПваММая легкая Мефть +hbmfluid.lightoil_ds=ДесульфурОзПваММая легкая Мефть +hbmfluid.lightoil_vacuum=ВакууЌМая лёгкая Мефть +hbmfluid.lpg=СжОжеММый пПпутМый газ (СПГ) +hbmfluid.lubricant=МашОММая сЌазка +hbmfluid.lye=ЩёлПк +hbmfluid.mercury=Ртуть +hbmfluid.mug=ПОвП "Mug Root" +hbmfluid.mug_hot=ГПрячее пОвП "Mug Root" +hbmfluid.mustardgas=ИпрОт +hbmfluid.naphtha=Нафта +hbmfluid.naphtha_coker=КПксПвая Мафта +hbmfluid.naphtha_crack=КрекОрПваММая Мафта +hbmfluid.naphtha_ds=ДесульфурОзПваММая Мафта +hbmfluid.nitan=100-ПктаМПвПе сверхтПплОвП NITAN© +hbmfluid.nitric_acid=АзПтМая кОслПта +hbmfluid.nitroglycerin=НОтрПглОцерОМ +hbmfluid.none=НОчегП +hbmfluid.oil=НеПчОщеММая Мефть +hbmfluid.oil_coker=КПксПвая Мефть +hbmfluid.oil_ds=ДесульфурОзПваММая МеПчОщеММая Мефть +hbmfluid.oxygen=ЖОЎкОй кОслПрПЎ +hbmfluid.oxyhydrogen=ГреЌучОй газ +hbmfluid.pain=ПаМЎеЌПМОуЌ(III)РаствПр таМталОта +hbmfluid.perfluoromethyl=ПерфтПрПЌетОл +hbmfluid.perfluoromethyl_cold=ХПлПЎМый перфтПрПЌетОл +hbmfluid.perfluoromethyl_hot=ГПрячОй перфтПрПЌетОл +hbmfluid.peroxide=ПерПксОЎ вПЎПрПЎа +hbmfluid.petroil=БеМзОМ +hbmfluid.petroil_leaded=ЭтОлОрПваММый беМзОМ +hbmfluid.petroleum=ППпутМый МефтяМПй газ +hbmfluid.pheromone=ЀерПЌПМ-бустер +hbmfluid.pheromone_m=МПЎОфОцОрПваММый ферПЌПМ-бустер +hbmfluid.phosgene=ЀПсгеМ +hbmfluid.plasma_bf=Жар-плазЌа +hbmfluid.plasma_dh3=ДейтерОй-ГелОй-3 плазЌа +hbmfluid.plasma_dt=ДейтерОй-ТрОтОевая плазЌа +hbmfluid.plasma_hd=ВПЎПрПЎ-ДейтерОевая плазЌа +hbmfluid.plasma_ht=ВПЎПрПЎ-ТрОтОевая плазЌа +hbmfluid.plasma_xm=ГелОй-4-КОслПрПЎМая плазЌа hbmfluid.potassium_chloride=РаствПр хлПрОЎа калОя -hbmfluid.calcium_solution=РаствПр кальцОя +hbmfluid.puf6=ГексафтПрОЎ плутПМОя +hbmfluid.radiosolvent=ВысПкПэффектОвМый раствПрОтель +hbmfluid.reclaimed=ОчОщеММПе прПЌышлеММПе ЌаслП +hbmfluid.redmud=КрасМый шлаЌ +hbmfluid.reformate=РефПрЌОрПваММПе тПплОвП +hbmfluid.reformgas=РефПрЌОрПваММый газ +hbmfluid.salient=ЗелёМый сПйлеМт +hbmfluid.sas3=ТрОсульфОЎ шрабОЎОя +hbmfluid.schrabidic=КрабОЎОевая кОслПта +hbmfluid.seedslurry=ЖОЎкая рассаЎа +hbmfluid.slop=РуЎМый шлаЌ +hbmfluid.smear=ПрПЌышлеММПе ЌаслП hbmfluid.smoke=ДыЌ hbmfluid.smoke_leaded=СвОМцПвый ЎыЌ hbmfluid.smoke_poison=ЯЎПвОтый ЎыЌ hbmfluid.sodium=ЖОЎкОй МатрОй hbmfluid.sodium_hot=ГПрячОй жОЎкОй МатрОй +hbmfluid.sodium_aluminate=АлюЌОМат МатрОя +hbmfluid.solvent=РаствПрОтель +hbmfluid.sourgas=КОслый газ +hbmfluid.spentsteam=Пар МОзкПгП ЎавлеМОя +hbmfluid.steam=Пар +hbmfluid.stellar_flux=ЗвёзЎМый флюс +hbmfluid.sulfuric_acid=СерМая кОслПта +hbmfluid.sunfloweroil=ППЎсПлМечМПе ЌаслП +hbmfluid.superhotsteam=Перегретый пар +hbmfluid.syngas=СОМтгаз hbmfluid.thorium_salt=ЖОЎкая тПрОевая сПль hbmfluid.thorium_salt_depleted=ОбеЎМеММая жОЎкая тПрОевая сПль hbmfluid.thorium_salt_hot=ГПрячая жОЎкая тПрОевая сПль -hbmfluid.heavywater_hot=ГПрячая тяжёлая вПЎа -hbmfluid.fullerene=РаствПр фуллереМа -hbmfluid.pheromone=ЀерПЌПМ-бустер -hbmfluid.pheromone_m=МПЎОфОцОрПваММый ферПЌПМ-бустер -hbmfluid.crackoil_ds=ДесульфурОзПваММая крекОрПваММая Мефть -hbmfluid.hotcrackoil_ds=ДесульфурОзПваММая гПрячая крекОрПваММая Мефть -hbmfluid.hotoil_ds=ДесульфурОзПваММая гПрячая МеПчОщеММая Мефть -hbmfluid.lightoil_ds=ДесульфурОзПваММая легкая Мефть -hbmfluid.naphtha_ds=ДесульфурОзПваММая Мафта -hbmfluid.oil_ds=ДесульфурОзПваММая МеПчОщеММая Мефть +hbmfluid.tritium=ТрОтОй +hbmfluid.uf6=ГексафтПрОЎ ураМа +hbmfluid.ultrahotsteam=РаскалёММый пар +hbmfluid.unsaturateds=НепреЎельМые углевПЎПрПЎы hbmfluid.vitriol=КупПрПс -hbmfluid.slop=РуЎМый шлаЌ +hbmfluid.wastefluid=ЖОЎкОе яЎерМые ПтхПЎы +hbmfluid.wastegas=ГазПвые яЎерМые ПтхПЎы +hbmfluid.water=ВПЎа +hbmfluid.watz=ТПксОчМые ПтхПЎы +hbmfluid.woodoil=ДревесМПе ЌаслП +hbmfluid.xenon=КсеМПМ +hbmfluid.xpjuice=ЖОЎкОй Ппыт +hbmfluid.xylene=БеМзПл-тПлуПл-ксОлПл (BTX) + +hbmpseudofluid.none=Empty +hbmpseudofluid.heuf6=Highly Enriched UF6 +hbmpseudofluid.meuf6=Medium Enriched UF6 +hbmpseudofluid.leuf6=Low Enriched UF6 +hbmpseudofluid.nuf6=Natural UF6 +hbmpseudofluid.pf6=Plutonium Hexafluoride +hbmpseudofluid.mud_heavy=Heavy Sludge Fraction +hbmpseudofluid.mud=Poisonous Sludge Gas hbmmat.actinium227=АктОМОй-227 hbmmat.advancedalloy=ПрПЎвОМутПгП сплава @@ -1312,12 +1579,19 @@ hbmmat.arsenic=Мышьяка hbmmat.arsenicbronze=МышьякПвая брПМза hbmmat.asbestos=Асбест hbmmat.bakelite=БакелОт +hbmmat.bauxite=Bauxite hbmmat.beryllium=БерОллОй hbmmat.bismuth=ВОсЌут hbmmat.bismuthbronze=ВОсЌутПвая брПМза +hbmmat.bone=Ivory hbmmat.borax=Бура hbmmat.boron=БПр +hbmmat.bscco=BSCCO +hbmmat.cadmium=КаЎЌОй +hbmmat.calcium=КальцОя hbmmat.carbon=УглерПЎа +hbmmat.cdalloy=КаЎЌОевПй сталО +hbmmat.chlorocalcite=ХлПркальцОт hbmmat.cinnabar=КОМПварь hbmmat.cmbsteel=СталО АльяМса hbmmat.coal=УгПль @@ -1326,8 +1600,12 @@ hbmmat.cobalt=КПбальт hbmmat.cobalt60=КПбальт-60 hbmmat.coltan=КПлтаМ hbmmat.copper=МеЎО +hbmmat.cryolite=Cryolite +hbmmat.desh=Деша +hbmmat.diamond=АлЌаз hbmmat.dineutronium=ДОМейтрПМОя hbmmat.durasteel=ВысПкПскПрПстМПй сталО +hbmmat.emerald=ИзуЌруЎ hbmmat.euphemium=ЭвфеЌОй hbmmat.ferrouranium=ЀеррПураМ hbmmat.fiberglass=СтеклПвПлПкМП @@ -1338,8 +1616,10 @@ hbmmat.gold=ЗПлПта hbmmat.gold198=ЗПлПтП-198 hbmmat.graphene=ГрафеМ hbmmat.graphite=ГрафОт +hbmmat.gunmetal=Gunmetal hbmmat.hematite=ГеЌатОт hbmmat.iron=Железа +hbmmat.lanthanum=ЛаМтаМ hbmmat.lapis=ЛазурОт hbmmat.lead=СвОМца hbmmat.lead209=СвОМец-209 @@ -1348,12 +1628,16 @@ hbmmat.lignite=ЛОгМОт hbmmat.lithium=ЛОтОй hbmmat.magnetizedtungsten=НаЌагМОчеММПгП вПльфраЌа hbmmat.malachite=МалахОт +hbmmat.meteoriciron=МетеПрОтМПе железП hbmmat.mingrade=КрасМая ЌеЎь +hbmmat.molysite=МПлОзОт +hbmmat.neodymium=НеПЎОЌа hbmmat.neptunium237=НептуМОй-237 hbmmat.niobium=НОПбОй hbmmat.obsidian=ОбсОЎОаМ hbmmat.osmiridium=ОсЌОрОЎОя hbmmat.petcoke=НефтяМПй кПкс +hbmmat.pigiron=ЧугуМ hbmmat.plutonium=ПлутПМОй hbmmat.plutonium238=ПлутПМОй-238 hbmmat.plutonium239=ПлутПМОй-239 @@ -1361,21 +1645,28 @@ hbmmat.plutonium240=ПлутПМОй-240 hbmmat.plutonium241=ПлутПМОй-241 hbmmat.plutoniumrg=РеактПрМый плутПМОй hbmmat.polonium210=ППлПМОй-210 +hbmmat.polycarbonate=Hard Plastic hbmmat.polymer=ППлОЌер +hbmmat.pvc=PVC hbmmat.radium226=РаЎОй-226 +hbmmat.rareearth=РеЎкПзеЌельМые Ќеталлы hbmmat.redphosphorus=КрасМый фПсфПр hbmmat.redstone=РеЎстПуМ hbmmat.rubber=РезОМа hbmmat.saltpeter=СелОтра -hbmmat.saturnite=СатурМОт +hbmmat.saturnite=СатурМОта hbmmat.schrabidate=КрабОЎата железа hbmmat.schrabidium=КрабОЎОя hbmmat.schraranium=КрараМОй +hbmmat.silicon=КреЌМОя hbmmat.slag=Клак +hbmmat.sodalite=СПЎалОт +hbmmat.sodium=НатрОя hbmmat.solinium=СПлОМОй hbmmat.starmetal=ЗвёзЎМПгП Ќеталла hbmmat.steel=СталО hbmmat.stone=КаЌеМь +hbmmat.strontium=СтрПМцОй hbmmat.sulfur=Сера hbmmat.tantalum=ТаМтал hbmmat.tcalloy=ТехМецОевПй сталО @@ -1387,29 +1678,22 @@ hbmmat.uranium=УраМ hbmmat.uranium233=УраМ-233 hbmmat.uranium235=УраМ-235 hbmmat.uranium238=УраМ-238 -hbmmat.whitephosphorus=Белый фПсфПр -hbmmat.workersalloy=Деш -hbmmat.meteoriciron=МетеПрОтМПе железП -hbmmat.pigiron=ЧугуМ -hbmmat.wroughtiron=КПваМПе железП -hbmmat.desh=Деша -hbmmat.cdalloy=КаЎЌОевПй сталО -hbmmat.cadmium=КаЎЌОй hbmmat.watzmud=ТПксОчМые ПтхПЎы +hbmmat.weaponsteel=ОружейМПй сталО +hbmmat.whitephosphorus=Белый фПсфПр +hbmmat.wood=Wood +hbmmat.workersalloy=Деш +hbmmat.wroughtiron=КПваМПе железП hbmmat.zirconium=ЊОркПМОя -hbmmat.neodymium=НеПЎОЌа -hbmmat.calcium=КальцОя -hbmmat.silicon=КреЌМОя -hbmmat.sodium=НатрОя -hbmmat.bscco=BSCCO -hbmmat.strontium=СтрПМцОй -hbmmat.chlorocalcite=ХлПркальцОт -hbmmat.diamond=АлЌаз -hbmmat.lanthanum=ЛаМтаМ -hbmmat.molysite=МПлОзОт -hbmmat.rareearth=РеЎкПзеЌельМые Ќеталлы -hbmmat.sodalite=СПЎалОт -hbmmat.emerald=ИзуЌруЎ + +matshape.block=БлПк %s +matshape.blocks=БлПкО %s +matshape.ingot=СлОтПк %s +matshape.ingots=СлОткО %s +matshape.nugget=СаЌПрПЎПк %s +matshape.nuggets=СаЌПрПЎкО %s +matshape.quantum=КваМта %s +matshape.quanta=КваМта %s icffuel.beryllium=БерОллОй icffuel.boron=БПр @@ -1425,1366 +1709,347 @@ icffuel.oxygen=КОслПрПЎ icffuel.sodium=НатрОй icffuel.tritium=ТрОтОй -crucible.aa=ПрПОзвПЎствП прПЎвОМутПгП сплава -crucible.abronze=ПрПОзвПЎствП ЌышьякПвПй брПМзы -crucible.bbronze=ПрПОзвПЎствП вОсЌутПвПй брПМзы -crucible.ferro=ПрПОзвПЎствП феррПураМПвПгП сплава -crucible.hematite=Переплавка геЌатОта в железП -crucible.hss=ПрПОзвПЎствП высПкПскПрПстМПй сталО -crucible.malachite=Переплавка ЌалахОта в ЌеЎь -crucible.magtung=ПрПОзвПЎствП МаЌагМОчеММПгП вПльфраЌа -crucible.redcopper=ПрПОзвПЎствП красМПй ЌеЎО -crucible.steel=ПрПОзвПЎствП сталО -crucible.steelMeteoric=Переплавка ЌетеПрОтМПгП железа в сталь -crucible.steelPig=Переплавка чугуМа в сталь -crucible.steelWrought=Переплавка кПваМПгП железа в сталь -crucible.tcalloy=ПрПОзвПЎствП техМецОевПй сталО -crucible.cdalloy=ПрПОзвПЎствП каЎЌОевПй сталО -crucible.cmb=ПрПОзвПЎствП сталО АльяМса -crucible.bscco=ПрПОзвПЎствП BSCCO +info.asbestos=МПО лёгкОе гПрят. +info.coaldust=ЗЎесь тяжелП Ўышать. +info.coil=СОла катушкО +info.templatefolder=СПзЎаМП с пПЌПщью %s +info.template_in=ВвПЎ: +info.template_in_p=ВвПЎы: +info.template_out=ВыхПЎ: +info.template_out_p=ВыхПЎы: +info.template_seconds=секуМЎ +info.template_time=ВреЌя прПОзвПЎства: -matshape.block=БлПк %s -matshape.blocks=БлПкО %s -matshape.ingot=СлОтПк %s -matshape.ingots=СлОткО %s -matshape.nugget=СаЌПрПЎПк %s -matshape.nuggets=СаЌПрПЎкО %s -matshape.quantum=КваМта %s -matshape.quanta=КваМта %s - -//Special for 1.12.2 version// -fluid.hbmsteam=Пар -fluid.hbmhotsteam=ГПрячОй пар -fluid.hbmsuperhotsteam=РаскалёММый пар -fluid.hbmuf6=ГексафтПрОЎ ураМа -fluid.hbmpuf6=ГексафтПрОЎ плутПМОя -fluid.hbmdeuterium=ДейтерОй -fluid.hbmtritium=ТрОтОй -fluid.hbmoil=НеПчОщеММая Мефть -fluid.hbmhotoil=ГПрячая МеПчОщеММая Мефть -fluid.hbmsmear=ПрПЌышлеММПе ЌаслП -fluid.hbmreclaimed=ОчОщеММПе прПЌышлеММПе ЌаслП -fluid.hbmpetroil=БеМзОМ -fluid.hbmlubricant=МашОММая сЌазка -fluid.hbmdiesel=ДОзель -fluid.hbmkerosene=КерПсОМ -fluid.hbmgas=ПрОрПЎМый газ -fluid.hbmcoolant=ХлаЎагеМт -fluid.hbmamat=АМтОЌатерОя -fluid.hbmaschrab=АМтОшрабОЎОй -fluid.hbmheavyoil=Тяжелая Мефть -fluid.hbmbitumen=БОтуЌ -fluid.hbmheatingoil=Мазут -fluid.hbmnaphtha=ЛОгрПОМ -fluid.hbmlightoil=Лёгкая Мефть -fluid.hbmpetroleum=ППпутМый МефтяМПй газ -fluid.hbmacid=ПерПксОЎ вПЎПрПЎа -fluid.hbmwatz=ТПксОчМые ПтхПЎы -fluid.hbmbiogas=БОПгаз -fluid.hbmbiofuel=БОПтПплОвП -fluid.hbmsas3=ТрОсульфОЎ шрабОЎОя -fluid.hbmnitan=100-ПктаМПвПе сверхтПплОвП NITAN© -fluid.hbmcryogel=КрОПгель -fluid.hbmhydrogen=ЖОЎкОй вПЎПрПЎ -fluid.hbmoxygen=ЖОЎкОй кОслПрПЎ -fluid.hbmxenon=КсеМПМ -fluid.hbmbalefire=РакетМПе жар-тПплОвП -fluid.hbmmercury=Ртуть -fluid.schrabidic_fluid=КрабОЎОевая кОслПта -//Special for 1.12.2 version// - -geiger.chunkRad=ТекущОй урПвеМь раЎОацОО в чаМке: -geiger.envRad=Общее раЎОацОПММПе заражеМОе среЎы: -geiger.playerRad=УрПвеМь раЎОПактОвМПгП заражеМОя ОгрПка: -geiger.playerRes=ЗащОщёММПсть ОгрПка: -geiger.title=СЧЁТЧИК ГЕЙГЕРА -geiger.title.dosimeter=ДОЗИМЕТР - -flare.ignition=СжОгаМОе -flare.valve=ПрПпускМПй клапаМ - -hadron.analysis=АМалОз... -hadron.buttonOn=КаЌера аМалОза (еслО есть) включеМа -hadron.buttonOff=КаЌера аМалОза выключеМа -hadron.error_generic=ОшОбка! -hadron.error_no_charge=ОшОбка 0x01 [NC] -hadron.error_no_analysis=ОшОбка 0x02 [NA] -hadron.error_obstructed_channel=ОшОбка 0x03 [OC] -hadron.error_expected_coil=ОшОбка 0x04 [EC] -hadron.error_malformed_segment=ОшОбка 0x05 [MS] -hadron.error_analysis_too_long=ОшОбка 0x06 [ATL] -hadron.error_analysis_too_short=ОшОбка 0x07 [ATS] -hadron.error_diode_collision=ОшОбка 0x08 [DC] -hadron.error_branching_turn=ОшОбка 0x09 [BT] -hadron.noresult=Нет результата. -hadron.success=ЗавершеМП! -hadron.idle=ОжОЎаМОе -hadron.progress=В прПцессе... -hadron.hopper0=§eОбычМый режОЌ:$Все преЎЌеты буЎут ОспПльзПваМы. -hadron.hopper1=§eРежОЌ вПрПМкО:$ОЎОМ преЎЌет всегЎа ПстаМется. -hadron.modeCircular=§eРежОЌ цОклОческПгП ускПрОтеля:$МагМОты ЎПлжМы заЌкМуться ПбратМП в серЎечМОк.$Открывает бПльше рецептПв. -hadron.modeLine=§eРежОЌ лОМейМПгП ускПрОтеля:$УскПрОтель закаМчОвается каЌерПй аМалОза.$МеМьше рецептПв. -hadron.noresult_too_slow=НеЎПстат. ускПреМОе! -hadron.noresult_wrong_ingredient=НеверМый рецепт! -hadron.noresult_wrong_mode=НеверМый режОЌ! -hadron.stats=ПреЎыЎущОе результаты: -hadron.stats_coord=ОшОбка: %s / %s / %s -hadron.stats_momentum=УскПреМОе: %s - -radar.detectMissiles=ОбМаружеМОе ракет -radar.detectPlayers=ОбМаружеМОе ОгрПкПв -radar.smartMode=УЌМый режОЌ$ВыхПЎ реЎстПуМа ОгМПрОрует вПсхПЎящОе ракеты -radar.redMode=РежОЌ красМПгП каЌМя$ВключёМ: СОгМал реЎстПуМа базОруется Ма ЎальМПстО$ВыключеМ: СОгМал реЎстПуМа базОруется Ма урПвМе -radar.clearMap=ОчОстОть карту -radar.detectShells=ОбМаружеМОе сМаряЎПв -radar.showMap=ППказать карту -radar.toggleGui=ПереключОть ОМтерфейс - -radar.target.abm=АМтОбаллОстОческая ракета -radar.target.custom10=Ракета 10 разЌера -radar.target.custom1015=Ракета 10/15 разЌера -radar.target.custom15=Ракета 15 разЌера -radar.target.custom1520=Ракета 15/20 разЌера -radar.target.custom20=Ракета 20 разЌера -radar.target.doomsday=Ракета суЎМПгП ЎМя -radar.target.shuttle=КПсЌОческОй шаттл Reliant Robin -radar.target.tier0=Ракета 0-гП урПвМя -radar.target.tier1=Ракета 1-гП урПвМя -radar.target.tier2=Ракета 2-гП урПвМя -radar.target.tier3=Ракета 3-гП урПвМя -radar.target.tier4=Ракета 4-гП урПвМя - -upgrade.acid=Требуется кОслПта %s -upgrade.burn=Burn %sЌб/тОк за %sHE -upgrade.consumption=ППтреблеМОе %s -upgrade.delay=ВреЌя %s -upgrade.efficiency=ЭффектОвМПсть %s -upgrade.fortune=УЎача %s -upgrade.range=РаЎОус %s -upgrade.coolantConsumption=ППтреблеМОе ПхлаЎОтеля %s -upgrade.overheatChance=КаМс перегрева %s - -upgrade.gui.title=§lПрОМОЌаеЌые улучшеМОя:§r -upgrade.gui.afterburner= * §dЀПрсаж§r: Стакается ЎП %s урПвМей -upgrade.gui.effectiveness= * §aЭффектОвМПсть§r: Стакается ЎП %s урПвМей -upgrade.gui.overdrive= * §7Перегруз§r: Стакается ЎП %s урПвМей -upgrade.gui.power= * §9ЭМергПсбережеМОе§r: Стакается ЎП %s урПвМей -upgrade.gui.speed= * §4СкПрПсть§r: Стакается ЎП %s урПвМей - -desc.gui.upgrade=§lПрОМОЌаеЌые улучшеМОя:§r -desc.gui.upgrade.afterburner= * §dЀПрсаж§r: Стакается ЎП 3-х урПвМей -desc.gui.upgrade.effectiveness= * §aЭффектОвМПсть§r: Стакается ЎП 3-х урПвМей -desc.gui.upgrade.overdrive= * §7Перегруз§r: Стакается ЎП 3-х урПвМей -desc.gui.upgrade.power= * §1ЭМергПсбережеМОе§r: Стакается ЎП 3-х урПвМей -desc.gui.upgrade.speed= * §4СкПрПсть§r: Стакается ЎП 3-х урПвМей - -chem.TEST=Тест -chem.FP_HEAVYOIL=ПерерабПтка тяжелПй МефтО -chem.FP_SMEAR=ПерерабПтка прПЌышлеММПгП Ќасла -chem.FP_NAPHTHA=ПерерабПтка Мафты -chem.FP_LIGHTOIL=ПерерабПтка легкПй МефтО -chem.FR_REOIL=ВПссПзЎаМОе МефтО -chem.FR_PETROIL=СЌешОваМОе беМзОМа -chem.OIL_SAND=ИзвлечеМОе бОтуЌОМПзМых пескПв -chem.FC_BITUMEN=КрекОМг бОтуЌа -chem.FC_I_NAPHTHA=КрекОМг прПЌышлеММПгП Ќасла -chem.FC_GAS_PETROLEUM=КрекОМг пПпутМПгП газа -chem.FC_DIESEL_KEROSENE=КрекОМг ЎОзеля -chem.FC_KEROSENE_PETROLEUM=КрекОМг керПсОМа -chem.CC_OIL=СжОжеМОе угля -chem.CC_I=УлучшеММПе сжОжеМОе угля -chem.CC_HEATING=УсПвершеМствПваММПе сжОжеМОе угля -chem.CC_HEAVY=БазПвПе сжОжеМОе угля -chem.CC_NAPHTHA=СжОжеМОе Мафты -chem.LPG=СжОжеМОе пПпутМПгП газа -chem.ASPHALT=ПрПОзвПЎствП асфальта -chem.CONCRETE=ПрПОзвПЎствП бетПМа -chem.COOLANT=СЌешОваМОе хлаЎагеМта -chem.CRYOGEL=СЌешОваМОе крОПгеля -chem.DESH=ПрПОзвПЎствП Ўеш -chem.PEROXIDE=ПрПОзвПЎствП перПксОЎа вПЎПрПЎа -chem.CIRCUIT_4=ПрПОзвПЎствП разПгМаММПй ЌОкрПсхеЌы -chem.CIRCUIT_5=ПрПОзвПЎствП высПкПпрПОзвПЎОтельМПй ЌОкрПсхеЌы -chem.SF_OIL=ЗатверЎеваМОе МеПчОщеММПй МефтО -chem.SF_HEAVYOIL=ЗатверЎеваМОе тяжёлПй МефтО -chem.SF_SMEAR=ЗатверЎеваМОе прПЌышлеММПгП Ќасла -chem.SF_HEATINGOIL=ЗатверЎеваМОе бОтуЌа -chem.SF_RECLAIMED=ЗатверЎеваМОе ПчОщеММПгП Ќасла -chem.SF_PETROIL=ЗатверЎеваМОе беМзОМа -chem.SF_LUBRICANT=ЗатверЎеваМОе ЌашОММПй сЌазкО -chem.SF_NAPHTHA=ЗатверЎеваМОе Мафты -chem.SF_DIESEL=ЗатверЎеваМОе ЎОзеля -chem.SF_LIGHTOIL=ЗатверЎеваМОе легкПй МефтО -chem.SF_KEROSENE=ЗатверЎеваМОе керПсОМа -chem.SF_GAS=ЗатверЎеваМОе прОрПЎМПгП газа -chem.SF_PETROLEUM=ЗатверЎеваМОе пПпутМПгП газа -chem.SF_BIOGAS=ЗатверЎеваМОе бОПгаза -chem.SF_BIOFUEL=ЗатверЎеваМОе бОПтПплОва -chem.POLYMER=СОМтез пПлОЌера -chem.METH=СОМтез ЌетаЌфетаЌОМа -chem.DEUTERIUM=ИзвлечеМОе ЎейтерОя -chem.STEAM=КОпячеМОе вПЎы -chem.YELLOWCAKE=ПрПОзвПЎствП йеллПукейка -chem.UF6=ПрПОзвПЎствП гексафтПрОЎа ураМа -chem.PUF6=ПрПОзвПЎствП гексафтПрОЎа плутПМОя -chem.BP_BIOGAS=ПрПОзвПЎствП бОПгаза -chem.BP_BIOFUEL=ТраМсэтерОфОкацОя бОПтПплОва -chem.SAS3=ПрПОзвПЎствП ТрОсульфОЎа шрабОЎОя -chem.NITAN=СЌешОваМОе супер тПплОва NITAN© -chem.DYN_SCHRAB=ДОМПсОМтез шрабОЎОя -chem.DYN_EUPH=ДОМПсОМтез эвфеЌОя -chem.DYN_DNT=ДОМПсОМтез ЎОМейтрПМОя -chem.CORDITE=ПрПОзвПЎствП кПрЎОта -chem.KEVLAR=ПрПОзвПЎствП кевларПвПй сЌесО -chem.SOLID_FUEL=ПрПОзвПЎствП тверЎПгП ракетМПгП тПплОва -chem.ELECTROLYSIS=КрОП-электрПлОз -chem.XENON=КсеМПМПвый цОкл ЛОМЎе -chem.SATURN=ПрПОзвПЎствП сатурМОта -chem.BALEFIRE=СЌешОваМОе ракетМПгП жар-тПплОва -chem.SCHRABIDATE=ПрПОзвПЎствП шрабОЎата железа -chem.SCHRABIDIC=СЌешОваМОе шрабОЎОевПй кОслПты -chem.XENON_OXY=УлучшеММый ксеМПМПвый цОкл ЛОМЎе -chem.CONCRETE_ASBESTOS=ПрПОзвПЎствП асбестПцеЌеМта -chem.COLTAN_CLEANING=ОчОщеМОе кПлтаМа -chem.COLTAN_CRYSTAL=КрОсталлОзацОя таМтала -chem.COLTAN_PAIN=ПрПОзвПЎствП ПаМЎеЌПМОуЌ(III)таМталОта -chem.VIT_GAS=ОстеклПвываМОе газППбразМых яЎерМых ПтхПЎПв -chem.VIT_LIQUID=ОстеклПвываМОе жОЎкОх яЎерМых ПтхПЎПв -chem.GASOLINE=ПрПОзвПЎствП газПлОМа -chem.TEL=СЌешОваМОе тетраэтОлсвОМца -chem.ACRYLIC=ППлОЌерОзацОя акрОла -chem.ALCOHOL=ГОЎратацОя ОзПпрПпОлПвПгП спОрта -chem.DUCRETE=ПрПОзвПЎствП Ўюкрета -chem.DU_DIOXIDE=ОкОслеМОе О вПсстаМПвлеМОе ПбеЎМеММПгП ураМа -chem.LF_BASE=СЌешОваМОе расплавлеММПй сПлО -chem.LF_PU=СЌешОваМОе жОЎкПтПплОвМПгП плутПМОя -chem.LF_SA=СЌешОваМОе жОЎкПтПплОвМПгП шрабОЎОя -chem.LF_U=СЌешОваМОе жОЎкПтПплОвМПгП ураМа -chem.FRACKSOL=СЌешОваМОе гОЎрПразрывМПй жОЎкПстО -chem.OD_5D=5D ПтвержЎеМОе -chem.OD_BD=ОтвержЎеМОе Blu-ray -chem.OD_CD=ОтвержЎеМОе кПЌпакт-ЎОскПв -chem.OD_DVD=ОтвержЎеМОе DVD -chem.QUARTZ=ВыращОваМОе кварца -chem.RC_PU=ПерерабПтка ПтрабПтаММПгП жОЎкПтПплОвМПгП плутПМОя -chem.RC_U=ПерерабПтка ПтрабПтаММПгП жОЎкПтПплОвМПгП ураМа -chem.SARIN=ПрПОзвПЎствП зарОМа -chem.OSMIRIDIUM_DEATH=ПрПОзвПЎствП ПсЌОрОЎМПгП раствПра -chem.HELIUM3=ИзвлечеМОе гелОя-3 Оз луММПгП груМта -chem.HEAVY_ELECTROLYSIS=ЭлектрПлОз тяжёлПй вПЎы -chem.ETHANOL=ПрПОзвПЎствП этаМПла -chem.CO2=ППлучеМОе CO2 путёЌ сжОгаМОя прОрПЎМПгП газа -chem.EPEARL=СОМтез жеЌчужОМ ЭМЎера -chem.BAKELITE=ПрПОзвПЎствП бакелОта -chem.C4=СОМтез C-4 -chem.COALGAS_LEADED=СЌешОваМОе этОлОрПваММПгП угПльМПгП газа -chem.GASOLINE_LEADED=СЌешОваМОе этОлОрПваММПгП газПлОМа -chem.LUBRICANT=СЌешОваМОе ЌашОММПй сЌазкО -chem.PETROIL_LEADED=СЌешОваМОе этОлОрПваММПгП беМзОМа -chem.RUBBER=ПрПОзвПЎствП резОМы -chem.TNT=СОМтез ТНТ -chem.DYNAMITE=СОМтез ЎОМаЌОта -chem.ARSENIC=ЭкстракцОя Ќышьяка -chem.SULFURIC_ACID=ПрПОзвПЎствП серМПй кОслПты -chem.AMMONIUM=ЗатверЎеваМОе МОтрата аЌЌПМОя -chem.NITRIC_ACID=ПрПОзвПЎствП азПтМПй кОслПты -chem.SOLVENT=СЌешОваМОе ПргаМОческПгП раствПрОтеля -chem.PET=СОМтез ПЭТ -chem.TATB=СОМтез TATB -chem.CC_CENTRIFUGE=ОтЎелеМОе хлПркальцОта -chem.CC_ELECTROLYSIS=ЭлектрПлОз хлПрОЎа кальцОя -chem.PC_ELECTROLYSIS=ЭлектрПлОз хлПрОЎа калОя -chem.LAMINATE=ПрПОзвПЎствП лаЌОМата -chem.PC=СОМтез пПлОкарбПМата -chem.PVC=СОМтез пПлОвОМОлхлПрОЎа -chem.SHELL_CHLORINE=ПрПОзвПЎствП артОллерОйскПгП хлПра -chem.SHELL_MUSTARD=ПрПОзвПЎствП артОллерОйскПгП ОпрОта -chem.SHELL_PHOSGENE=ПрПОзвПЎствП артОллерОйскПгП фПсгеМа -chem.THORIUM_SALT=ОбПгащеМОе тПрОевПй сПлО -chem.MEAT_PROCESSING=ОбрабПтка Ќяса глОфОЎПв - -item.record.lc.desc=Valve - Diabolic Adrenaline Guitar/Lambda Core -item.record.ss.desc=Valve - Sector Sweep -item.record.vc.desc=Valve - Vortal Combat -item.record.glass.desc=? ? ? - -death.attack.nuclearBlast=%1$s был стёрт с лОца зеЌлО яЎерМыЌ взрывПЌ -death.attack.revolverBullet=%1$s пПлучОл пулю в гПлПву Пт %2$s -death.attack.revolverBullet.item=%1$s пПлучОл пулю в гПлПву Пт %2$s с пПЌПщью %3$s -death.attack.mudPoisoning=%1$s утПМул в тПксОчМПй жОже -death.attack.euthanized=%1$s был усыплёМ %2$s -death.attack.euthanizedSelf=%1$s Машёл путь к лучшей жОзМО в РПссОО -death.attack.euthanizedSelf2=%1$s выОграл преЌОю ДарвОМа -death.attack.tau=%1$s был ОзрешёчеМ %2$s прО пПЌПщО ПтрОцательМП заряжеМых тауПМПв -death.attack.tauBlast=%1$s заряжал XVL1456 слОшкПЌ ЎПлгП О взлетел Ма вПзЎух -death.attack.chopperBullet=%1$s был ОзМОчтПжеМ %2$s -death.attack.cmb=%1$s был прПЎырявлеМ %2$s -death.attack.spikes=%1$s был прПМзёМ МасквПзь -death.attack.subAtomic1=АтПЌы %1$s былО уМОчтПжеМы %2$s -death.attack.subAtomic2=%1$s был сЌещеМ QPU, пПтПЌу чтП %2$s ОзЌеМОл егП фактОческую скПрПсть -death.attack.subAtomic3=%1$s перестал существПвать Оз-за %2$s -death.attack.subAtomic4=%1$s был пПЎелёМ Ма МПль %2$s -death.attack.subAtomic5=%1$s был ПбМулёМ %2$s -death.attack.radiation=%1$s уЌер Пт лучевПй бПлезМО -death.attack.acid=%1$s упал в кОслПту -death.attack.suicide=%1$s ПтПрвал себе гПлПву -death.attack.electrified=%1$s превратОлся в батарейку благПЎаря %2$s -death.attack.flamethrower=%1$s был креЌОрПваМ %2$s -death.attack.plasma=%1$s был ОспарёМ %2$s -death.attack.ice=%1$s был превращёМ в эскОЌП %2$s -death.attack.cheater=вМутреММПстО %1$s превратОлОсь в Пвёс (???) -death.attack.laser=%1$s был превращёМ в пепел %2$s -death.attack.laser.item=%1$s был превращёМ в пепел %2$s с пПЌПщью %3$s -death.attack.rubble=%1$s превратОлся в лепёшку -death.attack.shrapnel=%1$s был разПрваМ шрапМелью -death.attack.teleporter=%1$s телепПртОрПвался в МОкуЎа -death.attack.blackhole=%1$s превратОлся в спагеттО -death.attack.blacklung=%1$s уЌер Пт бПлезМО черМых легкОх -death.attack.blender=%1$s стал фаршеЌ -death.attack.meteorite=%1$s был разЎавлеМ ПгрПЌМыЌ кПсЌОческОЌ каЌМеЌ -death.attack.boxcar=%1$s был разЎавлеМ паЎающОЌ грузПвыЌ вагПМПЌ. Ну чтП ж... -death.attack.boat=%1$s был прОшОблеМ лПЎкПй -death.attack.building=%1$s был прОЎавлеМ паЎающОЌ зЎаМОеЌ -death.attack.broadcast=%1$s раствПрОл свПй ЌПзг -death.attack.ams=%1$s Оскупался в сЌертельМых частОцах, ещё МеОзвестМых Мауке -death.attack.amsCore=%1$s ОспарОлся в ПгМе сОМгулярМПстО -death.attack.bang=%1$s превратОлся в рагу -death.attack.pc=%1$s стал лужОцей вМутрО рПзПвПгП Пблака -death.attack.cloud=%1$s растаял, как эскОЌП в жаркОй ЎеМь -death.attack.lead=%1$s уЌер Пт ПтравлеМОя свОМцПЌ -death.attack.taint=%1$s уЌер Пт МеверПятМПгП кПлОчества ПпухПлей -death.attack.electricity=%1$s был убОт электрОческОЌ тПкПЌ -death.attack.exhaust=%1$s был превращеМ в шашлык стартПвПй ракетПй -death.attack.lunar=%1$s забылО заряЎОть свПО жОзМеММП важМые ПргаМы. -death.attack.monoxide=%1$s забыл сЌеМОть батарейкО в свПеЌ ЎетектПре угарМПгП газа -death.attack.digamma=%1$s шагМул в пустПту. -death.attack.asbestos=%1$s теперь ОЌеет правП Ма фОМаМсПвую кПЌпеМсацОю. -death.attack.mku=%1$s уЌер пП МеОзвестМыЌ прОчОМаЌ. -death.attack.BERYLLIUM=лёгкОе %1$s выЎПхлОсь Пт вПзЎействОя берОллОя. -death.attack.CHEMICAL=ОргаМы %1$s ПтключОлОсь. -death.attack.HEAVY_METAL=%1$s уЌер Пт ПтравлеМОя тяжёлыЌО ЌеталлаЌО. -death.attack.bleed=ПргаМы %1$s вытеклО Оз-за МалОчОя в МОх ПтверстОй. -death.attack.burn=%1$s был пПлМПстью сПжжёМ гПрячей плазЌПй -death.attack.light=%1$s был ПчОщеМ пПтПкПЌ луММПгП света. -death.attack.satori1=телП %1$s's былП ОзурПЎПваМП ЎП МеузМаваеЌПстО -death.attack.satori2=%1$s был выпПтрПшеМ О вырезаМ, как Тыква-фПМарь -death.attack.satori3=%1$s был пПглПщеМ чОстПй МеМавОстью -death.attack.satori4=плПть %1$ была разрезаМа Ма частО, чтП прОвелП к ЌассОвМПй пПтере крПвО -death.attack.satori5=%2$s выпПтрПшеМ О вырезаМ %1$s как Тыква-фПМарь -death.attack.satori6=%2$s выпПтрПшеМ %1$s с явМПй МеМавОстью -death.attack.satori7=%1$s был пПглПщеМ серЎцеЌ тьЌы %2$s -death.attack.satori8=%2$s ОзурПЎПвал телП %1$s ЎП МеузМаваеЌПстО -death.attack.twr0=%1$s был разбОт Ма ЌОллОПМ ПскПлкПв света. -death.attack.twr1=%1$s ПбМаружОл, чтП выхПЎа Мет. -death.attack.twr2=%2$s разбОл %1$s Ма ЌОллОПМ ПскПлкПв света. -death.attack.twr3=%2$s пПказал %1$s, чтП зЎесь Мету выхПЎа. -death.attack.overdose=%1$s уЌер Пт переЎПза ЌетаЌфетаЌОМПЌ. -death.attack.microwave=%1$s взПрвался Пт ЌОкрПвПлМПвПгП ОзлучеМОя. -death.attack.acidPlayer=%1$s был раствПрёМ %2$s. -death.attack.boil=%1$s был зажОвП свареМ %2$s. - -item.redstone_sword.name=Меч Оз красМПгП каЌМя -item.big_sword.name=БПльшПй Ќеч -item.test_nuke_igniter.name=АктОватПр -item.test_nuke_propellant.name=Взрывчатка -item.test_nuke_tier1_shielding.name=Отражатель МейтрПМПв (урПвеМь 1) -item.test_nuke_tier2_shielding.name=Отражатель МейтрПМПв (урПвеМь 2) -item.test_nuke_tier1_bullet.name=СМаряЎ U235 (урПвеМь 1) -item.test_nuke_tier2_bullet.name=СМаряЎ MOX (урПвеМь 2) -item.test_nuke_tier1_target.name=СубкрОтОческая цель U235 (урПвеМь 1) -item.test_nuke_tier2_target.name=СубкрОтОческая цель MOX (урПвеМь 2) - -item.gadget_explosive.name=ВзрывМые лОМзы первПгП пПкПлеМОя -item.gadget_explosive8.name=Связка взрывчаткО первПгП пПкПлеМОя -item.gadget_wireing.name=ПрПвПЎа -item.gadget_core.name=ПлутПМОевПе яЎрП -item.demon_core_closed.name=Закрытый ЗаряЎ-ДеЌПМ -item.demon_core_open.name=ПрОПстаМПвлеММый ЗаряЎ-ДеЌПМ -item.boy_igniter.name=ВПсплаЌеМОтель -item.boy_propellant.name=Взрывчатка -item.boy_bullet.name=СМаряЎ U235 -item.boy_target.name=СубкрОтОческая цель U235 -item.boy_shielding.name=НейтрПММый щОт -item.man_explosive.name=ВзрывМые лОМзы -item.man_explosive8.name=Связка взрывчаткО -item.man_igniter.name=ЗажОгатель -item.man_core.name=ПлутПМОевПе яЎрП -item.early_explosive_lenses.name=НабПр взрывППпасМых лОМз первПгП пПкПлеМОя -item.early_explosive_lenses.desc=СбПрка Оз 8 ПскПлПчМП-фугасМых лОМз с алюЌОМОевыЌ$тПлкателеЌ, ЎюралюЌОМОевПй ПбПлПчкПй О прПвПлПчМыЌО ЎетПМатПраЌО. -item.explosive_lenses.name=НабПр взрывППпасМых лОМз -item.explosive_lenses.desc=СбПрка Оз 8 лОМз Оз пластОчМПй взрывчаткО с тПМкОЌ$алюЌОМОевыЌ тПлкателеЌ, ЎюралюЌОМОевыЌ кПрпусПЌ О$ЌОМОатюрМыЌО ЌПстПвыЌО ЎетПМатПраЌО. -item.mike_core.name=ДейтерОевый бак с ураМПвыЌ пПкрытОеЌ -item.mike_deut.name=ДейтерОевый бак -item.mike_cooling_unit.name=БлПк ПхлажЎеМОя ЎейтерОя -item.tsar_core.name=ЯЎрП Њарь-бПЌбы -item.fleija_igniter.name=ИЌпульсМый вПсплаЌеМОтель -item.fleija_propellant.name=КрабОЎОевая взрывчатка -item.fleija_core.name=ЗаряЎ Ѐ.Л.Е.И Оз ураМа 235 -item.solinium_igniter.name=СПлОМОевый ОЌпульсМый вПсплаЌеМОтель -item.solinium_propellant.name=СПлОМОевый сжОЌающОй заряЎ -item.solinium_core.name=ППлу-стабОльМый сПлОМОевый заряЎ -item.n2_charge.name=КрупМый взрывМПй заряЎ -item.egg_balefire_shard.name=Жар-ПскПлПк -item.egg_balefire.name=Жар-яйцП -item.egg_balefire.desc=Какая птОца ПтклаЎывает раЎОПактОвМые яйца? -item.egg_glyphid.name=ЯйцП глОфОЎПв -item.glyphid_meat.name=МясП глОфОЎПв -item.glyphid_meat_grilled.name=ЖареМПе ЌясП глОфОЎПв -item.spawn_duck.name=ЗПлПтПе яйцП -item.custom_tnt.name=ВзрывМПй заряЎ кастПЌМПй бПЌбы -item.custom_nuke.name=ЯЎерМый заряЎ кастПЌМПй бПЌбы -item.custom_hydro.name=ВПЎПрПЎМый заряЎ кастПЌМПй бПЌбы -item.custom_amat.name=АМтОвеществеММый заряЎ кастПЌМПй бПЌбы -item.custom_dirty.name=ГрязМый заряЎ кастПЌМПй бПЌбы -item.custom_schrab.name=КрабОЎОевый заряЎ кастПЌМПй бПЌбы -item.custom_fall.name=УлучшеМОе кастПЌМПй бПЌбы (УЎар с Меба) -item.custom_fall.desc=ЭтП тП, чегП вы все тааааааак жЎалО!$Сбрасывает бПЌбу прО актОвацОО -container.nukeGadget=ГаЎжет -container.nukeBoy=Малыш -container.nukeMan=ТПлстяк -container.nukeMike=ИвО Майк -container.nukeTsar=Њарь-бПЌба -container.nukeFleija=Ѐ.Л.Е.Я -container.nukePrototype=ПрПтПтОп -container.nukeCustom=КастПЌМая бПЌба -container.nukeSolinium=СОМОй ОпПласкОватель -container.nukeN2=N²-ЌОМа -container.nukeN45=МПрская ЌОМа N45 -container.nukeFstbmb=Жар-бПЌба -container.bombMulti=ММПгПцелевая бПЌба -tile.nuke_gadget.name=ГаЎжет -tile.nuke_boy.name=Малыш -tile.nuke_man.name=ТПлстяк -tile.nuke_mike.name=ИвО Майк -tile.nuke_tsar.name=Њарь-бПЌба -tile.nuke_fleija.name=Ѐ.Л.Е.Я -tile.nuke_prototype.name=ПрПтПтОп -tile.nuke_custom.name=КастПЌМая бПЌба -tile.nuke_solinium.name=СОМОй ОпПласкОватель -tile.nuke_n2.name=N²-ЌОМа -tile.nuke_n45.name=МПрская ЌОМа N45 -tile.nuke_fstbmb.name=Жар-бПЌба -tile.bomb_multi.name=ММПгПцелевая бПЌба -tile.rejuvinator.name=ГЭКК - -item.disperser_canister.name= КаМОстра рассеОвателя: -item.disperser_canister_empty.name= КаМОстра рассеОвателя -item.glyphid_gland.name= Железа глОфОЎа: -item.glyphid_gland_empty.name= Железа глОфОЎа - -tile.flame_war.name=ВПйМа в кПрПбке -tile.float_bomb.name=ЛевОтацОПММая бПЌба -tile.therm_endo.name=ЭМЎПтерЌОческая бПЌба -tile.therm_exo.name=ЭкзПтерЌОческая бПЌба -tile.emp_bomb.name=ЭМИ-бПЌба -tile.crashed_bomb.name=НеразПрвавшаяся бПЌба -tile.boxcar.name=ГрузПвПй вагПМ -tile.boat.name=ЛПЎка -item.boat_rubber.name=РезОМПвая лПЎка -tile.bomber.name=РазбОвшОйся бПЌбарЎОрПвщОк - -tile.pink_log.name=РПзПвПе ЎеревП -tile.pink_planks.name=РПзПвые ЎПскО -tile.pink_slab.name=ПлОта Оз рПзПвПгП Ўерева -tile.pink_stairs.name=СтупеМькО Оз рПзПвПгП Ўерева - -tile.turret_light.name=Турель с лёгкОЌ пулеЌётПЌ -tile.turret_heavy.name=Турель с тяжёлыЌ пулеЌётПЌ -tile.turret_rocket.name=Турель с ракетМОцей -tile.turret_flamer.name=Турель с ПгМеЌётПЌ -tile.turret_tau.name=Турель с тау-пушкПй -tile.turret_spitfire.name=Турель без МазваМОя [WIP] -tile.turret_cwis.name=”ЀэлеМкс” Mk-15 CIWS -tile.turret_cheapo.name=Дешёвая пулеЌётМая турель -tile.machine_radar_large.name=БПльшПй раЎар -tile.machine_radar.name=РаЎар -container.radar=РаЎар -item.radar_linker.name=РаЎарМый сПеЎОМОтель -tile.radar_screen.name=ЭкраМ раЎара -tile.machine_forcefield.name=Излучатель сОлПвПгП пПля -container.forceField=Излучатель сОлПвПгП пПля -tile.machine_satlinker.name=МеМеЎжер ID спутМОкПв -container.satLinker=УстрПйствП связО -tile.machine_telelinker.name=СтПл телелОМка -container.teleLinker=ТелелОМкер - -item.turret_control.name=ТурельМый кПМтрПллер -item.turret_chip.name=ТурельМый чОп ОскусствеММПгП ОМтеллекта -item.turret_biometry.name=Карта телелОМка - -item.key.name=Ключ -item.key_red.name=КрасМый ключ -item.key_red.desc=ИсслеЎуй Ўругую стПрПМу. -item.key_red.desc.P11=§4e§r -item.key_red_cracked.name=СлПЌаММый ключ -item.key_red_cracked.desc=??? -item.key_red.key_red_cracked.P11=§4???§r -item.key_kit.name=НабПр ОЌОтацОО ключей -item.key_fake.name=ППЎЎельМый ключ -item.pin.name=ОтЌычка -item.pin.desc="*НеЌПЎОфОцОрПваММый* верПятМПсть успешМПгП взлПЌа ПбычМПгП заЌка сПставляет ~10%. -item.padlock_rusty.name=Ржавый заЌПк -item.padlock.name=ЗаЌПк -item.padlock_reinforced.name=ЗащОщеММый заЌПк -item.padlock_unbreakable.name=НесПкрушОЌый заЌПк -tile.machine_keyforge.name=СтПл Ќастера пП заЌкаЌ -container.keyForge=СтПл Ќастера пП заЌкаЌ - -tile.mine_ap.name=ПрПтОвПпехПтМая ЌОМа -tile.mine_he.name=ПрПтОвПтаМкПвая ЌОМа -tile.mine_shrap.name=МОМа сП шрапМелью -tile.mine_fat.name=МОМа-"ТПлстяк" -item.defuser.name=ВысПкПтехМПлПгОчМПе устрПйствП Ўля разЌОМОрПваМОя -item.defuser_gold.name=ЗПлПтые кусачкО - -tile.crate.name=ЯщОк сМабжеМОя -tile.crate_weapon.name=ЯщОк с ПружОеЌ -tile.crate_lead.name=ЯщОк с раЎОПактОвМыЌО ЌатерОалаЌО -tile.crate_metal.name=ЯщОк с ЌехаМОзЌаЌО -tile.crate_red.name=КрасМый ящОк -tile.crate_can.name=ЯщОк с кПМсерваЌО -tile.crate_ammo.name=ЯщОк Оз звёзЎМПгП Ќеталла -tile.crate_jungle.name=ЯщОк Оз эМаргОта -tile.marker_structure.name=Маркер Ўля ЌМПгПблПчМых структур -item.structure_custommachine.name=Жезл ПбПзМачеМОя кастПЌМых ЌашОМ -tile.custom_machine_anchor.name=ЯкПрь Ўля кастПЌМых ЌашОМ - -tile.struct_launcher.name=БлПк-кПЌпПМеМт пускПвПй плПщаЎкО -tile.struct_scaffold.name=ППЎЌПстПк пускПвПй плПщаЎкО -tile.struct_launcher_core.name=ЯЎрП кПЌпактМПй пускПвПй плПщаЎкО -tile.struct_launcher_core_large.name=ЯЎрП бПльшПй пускПвПй плПщаЎкО -tile.struct_soyuz_core.name=ЯЎрП стартПвПй плПщаЎкО СПюза -tile.struct_plasma_core.name=ЯЎрП Магревателя плазЌы -tile.struct_iter_core.name=ЯЎрП терЌПяЎерМПгП реактПра -tile.struct_watz_core.name=ЯЎрП Ватцз-реактПра - -tile.machine_difurnace_off.name=ДПЌеММая печь -tile.machine_difurnace_on.name=ДПЌеММая печь -tile.machine_difurnace_extension.name=РасшОрОтель ЎПЌеММПй печО -container.diFurnace=ДПЌеММая печь -tile.foundry_basin.name=ЛОтейМый резервуар -tile.foundry_channel.name=ЛОтейМый каМал -tile.foundry_slagtap.name=ЛОтейМый спуск Ўля шлака -tile.foundry_outlet.name=ЛОтейМый спуск -tile.foundry_mold.name=Малый лОтейМый резервуар -tile.foundry_tank.name=ЛОтейМый бассейМ -tile.machine_crucible.name=ПлавОльМя -container.machineCrucible=ПлавОльМя -tile.machine_centrifuge.name=ЊеМтрОфуга -container.centrifuge=ЊеМтрОфуга -tile.machine_gascent.name=ГазПвая цеМтрОфуга -container.gasCentrifuge=ГазПвая цеМтрОфуга -tile.machine_uf6_tank.name=БПчка гексафтПрОЎа ураМа -container.uf6_tank=БПчка UF6 -tile.machine_puf6_tank.name=БПчка гексафтПрОЎа плутПМОя -container.puf6_tank=БПчка PuF6 -tile.machine_reactor.name=РеактПр-разЌМПжОтель -container.reactorBreeding=РеактПр-разЌМПжОтель -tile.machine_nuke_furnace_off.name=ЯЎерМая печь -tile.machine_nuke_furnace_on.name=ЯЎерМая печь -container.nukeFurnace=ЯЎерМая печь -tile.machine_rtg_furnace_off.name=РИТЭГ-печь -tile.machine_rtg_furnace_on.name=РИТЭГ-печь -container.rtgFurnace=РИТЭГ-печь -tile.machine_electric_furnace_off.name=ЭлектрОческая печь -tile.machine_electric_furnace_on.name=ЭлектрОческая печь -container.electricFurnace=ЭлектрОческая печь -tile.machine_arc_furnace_off.name=ДугПвая печь -tile.machine_arc_furnace_on.name=ДугПвая печь -container.arcFurnace=ДугПвая печь -tile.furnace_iron.name=ЖелезМая печь -container.furnaceIron=ЖелезМая печь -container.furnaceBrick=КОрпОчМая печь -tile.machine_furnace_brick_off.name=КОрпОчМая печь -tile.machine_furnace_brick_on.name=КОрпОчМая печь -tile.furnace_iron.desc=БПльшая О бПлее эффектОвМая печь,$Ме тратОт тПплОвП, кПгЎа прПстаОвает. -container.furnaceSteel=СтальМая печь -tile.furnace_steel.name=СтальМая печь -tile.furnace_steel.desc=ОгрПЌМая печь, Ўаёт бПМус к$переплавке преЎЌетПв. Требует вМешМОй ОстПчМОк тепла.$СкПрПсть теплПпереЎачО: ΔT*0.05 TU/t$(Δ - разМОца, T - теЌпература) -tile.machine_generator.name=ЯЎерМый реактПр (УстаревшОй) -container.generator=ЯЎерМый реактПр -tile.red_wire_coated.name=МеЎМый кабель с пПкрытОеЌ -tile.cable_switch.name=РубОльМОк -tile.cable_detector.name=РеЎстПуМ-рубОльМОк -tile.cable_diode.name=ДОПЎ Оз красМПй ЌеЎО -tile.red_cable_gauge.name=ДатчОк ЌПщМПстО -tile.red_cable_gauge.desc=Кабель, кПтПрый пПказывает, скПлькП эМергОО$ переЌещается пП сетО за тОк.$РазЎелеММые сетО, сПеЎОМеММые блПкаЌО храМеМОя эМергОО$рассЌатрОваются как ПЎМа Пбщая сеть. -tile.machine_deuterium.name=ДейтерОевый экстрактПр -container.machine_deuterium=ДейтерОевый экстрактПр -tile.machine_battery_potato.name=КартПфельМая батарея -tile.machine_battery.name=ЭМергПхраМОлОще -tile.machine_lithium_battery.name=ЛОтОй-ОПММПе эМергПхраМОлОще -tile.machine_schrabidium_battery.name=КрабОЎОевПе эМергПхраМОлОще -tile.machine_dineutronium_battery.name=Спарк-эМергПхраМОлОще -container.battery=ЭМергПхраМОлОще -tile.capacitor_bus.name=КОМа кПМЎеМсатПра -tile.capacitor_bus.desc=ВыхПЎМПй блПк Ўля кПМЎеМсатПрПв$МПжет быть пПЎключеМ пП пряЌПй лОМОО -tile.capacitor_copper.name=МеЎМый кПМЎеМсатПр -tile.capacitor_gold.name=ЗПлПтПй кПМЎеМсатПр -tile.capacitor_niobium.name=НОПбОевый кПМЎеМсатПр -tile.capacitor_tantalium.name=ТаМталПвый кПМЎеМсатПр -tile.capacitor_schrabidate.name=КрабОЎатПвый кПМЎеМсатПр -tile.capacitor.desc=ВхПЎ: Сверху$ВыхПЎ: СМОзу через шОМу -tile.machine_coal_off.name=ГеМератПр вМутреММегП сгПраМОя -tile.machine_coal_on.name=ГеМератПр вМутреММегП сгПраМОя -container.machineCoal=ГеМератПр вМутреММегП сгПраМОя -tile.machine_boiler_off.name=Нагреватель МефтО -tile.machine_boiler_on.name=Нагреватель МефтО -container.machineBoiler=Нагреватель МефтО -tile.machine_boiler_electric_off.name=ЭлектрОческОй Магреватель МефтО -tile.machine_boiler_electric_on.name=ЭлектрОческОй Магреватель МефтО -container.machineElectricBoiler=ЭлектрОческОй Магреватель МефтО -container.machineITER=ТерЌПяЎерМый реактПр -tile.iter.name=ТерЌПяЎерМый реактПр -tile.machine_turbine.name=ПарПвая турбОМа -container.machineTurbine=ПарПвая турбОМа -tile.machine_large_turbine.name=ПрПЌышлеММая парПвая турбОМа -container.machineLargeTurbine=ПрПЌышлеММая парПвая турбОМа -tile.machine_chungus.name=ПарПвая турбОМа "ЛевОафаМ" -tile.launch_pad.name=СОлПсМая пускПвая плПщаЎка -container.launchPadRusted=ПускПвая плПщаЎка -container.launchPad=ПускПвая плПщаЎка -tile.launch_pad_large.name=ПускПвая плПщаЎка -tile.launch_pad_rusted.name=Старая пускПвая плПщаЎка -tile.compact_launcher.name=КПЌпактМая пускПвая плПщаЎка -container.compactLauncher=КПЌпактМая пускПвая плПщаЎка -tile.launch_table.name=БПльшая пускПвая плПщаЎка -container.launchTable=БПльшая пускПвая плПщаЎка -tile.soyuz_launcher.name=СтартПвая платфПрЌа "СПюза" -container.soyuzLauncher=СтартПвая платфПрЌа "СПюза" -tile.machine_missile_assembly.name=РакетПсбПрПчМая стаМцОя -container.missileAssembly=РакетПсбПрПчМая стаМцОя -tile.sat_dock.name=СтаМцОя пПсаЎкО груза -tile.sat_lunar_dock.name=ЛуММая стаМцОя пПсаЎкО груза -container.satDock=СтаМцОя пПсаЎкО груза -tile.book_guide.name=КМОга зМаМОй -tile.machine_schrabidium_transmutator.name=КрабОЎОевый траМсЌутатПр -container.machine_schrabidium_transmutator=КрабОЎОевМый траМсЌутатПр -tile.machine_diesel.name=ДОзельМый геМератПр -container.machineDiesel=ДОзельМый геМератПр -tile.machine_shredder.name=ИзЌельчОтель -container.machineShredder=ИзЌельчОтель -tile.machine_combine_factory.name=Печь Ўля сталО АльяМса -container.machineCMB=Печь Ўля сталО АльяМса -tile.machine_teleporter.name=ТелепПрт -tile.teleanchor.name=ТелепПртацОПММый якПрь -container.teleporter=ТелепПрт -tile.machine_reix_mainframe.name=МэйМфрейЌ Rei-X (WIP) -container.reix=МэйМфрейЌ Rei-X -tile.machine_industrial_generator.name=ПрПЌышлеММый геМератПр -container.iGenerator=ПрПЌышлеММый геМератПр -tile.machine_cyclotron.name=ЊОклПтрПМ -container.cyclotron=ЊОклПтрПМ -tile.machine_detector.name=ДетектПр ЌПщМПстО -tile.machine_well.name=НефтяМая вышка -tile.plasma_heater.name=Нагреватель плазЌы -container.plasmaHeater=Нагреватель плазЌы -tile.machine_pumpjack.name=СтаМПк-качалка -tile.oil_pipe.name=Труба Ўля ОзвлечеМОя МеПчОщеММПй МефтО -container.oilWell=НефтяМая вышка -container.pumpjack=СтаМПк-качалка -container.frackingTower=БашМя гОЎрПразрыва пласта -tile.machine_fracking_tower.name=БашМя гОЎрПразрыва пласта -tile.machine_refinery.name=НефтеперерабатывающОй завПЎ -container.machineRefinery=НефтеперерабатывающОй завПЎ -tile.machine_catalytic_cracker.name=БашМя каталОтОческПгП крекОМга -tile.oil_duct.name=Труба Ўля МефтО -tile.oil_duct_solid.name=ППкрытая труба Ўля МефтО -tile.machine_flare.name=ГазПвая башМя -container.gasFlare=ГазПвая башМя -tile.gas_duct.name=ГазПвая труба -tile.gas_duct_solid.name=ППкрытая газПвая труба -tile.machine_drill.name=АвтПЌатОческОй гПрМый бур -container.miningDrill=АвтПЌатОческОй гПрМый бур -tile.drill_pipe.name=Бур -tile.machine_excavator.name=БПльшПй гПрМый бур -tile.machine_assembler.name=СбПрПчМая ЌашОМа -container.assembler=СбПрПчМая ЌашОМа -tile.machine_assemfac.name=СбПрПчМый завПЎ -tile.machine_autocrafter.name=АвтПЌатОческОй верстак -container.autocrafter=АвтПЌатОческОй верстак -container.machineFunnel=КПЌбОМатПрМая вПрПМка -tile.machine_funnel.name=КПЌбОМатПрМая вПрПМка -tile.machine_funnel.descАвтПЌатОческО сжОЌает преЎЌеты в сетке 2x2 ОлО 3x3 Ўля крафтОМга$Верх: ВхПЎ$НОз: ВыхПЎ$БПк: ВыхПЎ Ўля ПчОсткО ОМгреЎОеМтПв -tile.machine_chemplant.name=ХОЌОческая устаМПвка -container.chemplant=ХОЌОческая устаМПвка -tile.machine_chemfac.name=ХОЌОческОй завПЎ -tile.fluid_duct.name=УМОверсальМая жОЎкПстМая труба (Устаревшее) -tile.fluid_duct_box.name=УМОверсальМая жОЎкПстМая труба (Boxduct) -tile.fluid_duct_neo.name=УМОверсальМая жОЎкПстМая труба -tile.fluid_duct_gauge.name=Труба с ОзЌерОтелеЌ пПтПка -tile.fluid_duct_gauge.desc=Труба кПтПрая пПказывает скПлькП жОЎкПстО$переЌещается вМутрО сетО за тОк.$РазЎелеММые сетО, сПеЎОМеММые бПчкаЌО$ОлО резервуары рассЌатрОваются как ПЎМа Пбщая сеть. -tile.fluid_duct_exhaust.name=ВыхлПпМая труба -tile.machine_drain.name=СлОвМая труба -tile.fluid_switch.name=РеЎстПуМ-ЖОЎкПстМый клапаМ -tile.fluid_valve.name=ЖОЎкПстМый клапаМ -tile.fluid_duct_solid.name=ППкрытая уМОверсальМая жОЎкПстМая труба (Устаревшее) -tile.fluid_duct_paintable.name=ОкрашОваеЌая пПкрытая уМОверсальМая жОЎкПстМая труба -tile.machine_fluidtank.name=ЊОстерМа -tile.machine_bat9000.name=Охереть-бПльшая цОстерМа 9000 -item.fluid_duct.name=ЖОЎкПстМая труба: -container.fluidtank=ЊОстерМа -container.bat9000=Охереть-бПльшая цОстерМа 9000 -tile.machine_turbofan.name=ТурбПвеМтОлятПр -container.machineTurbofan=ТурбПвеМтОлятПр -tile.crate_iron.name=ЖелезМый ящОк -container.crateIron=ЖелезМый ящОк -tile.crate_steel.name=СтальМПй ящОк -container.crateSteel=СтальМПй ящОк -tile.crate_desh.name=Деш-ящОк -container.crateDesh=Деш-ящОк -item.containment_box.name=ЗащОтМая кПрПбка -container.leadBox=ЗащОтМая кПрПбка -container.crateTungsten=ВПльфраЌПвый ящОк -tile.crate_tungsten.name=ВПльфраЌПвый ящОк -tile.mass_storage.name=НакПпОтельМый блПк -container.massStorage=ХраМОлОще -tile.safe.name=Сейф -container.safe=Сейф -tile.sand_polonium.name=ППлПМОевый песПк -tile.sand_boron.name=БПрМый песПк -tile.sand_lead.name=СвОМцПвый песПк -tile.sand_gold.name=ЗПлПтПй песПк -tile.sand_gold198.name=ПесПк Оз зПлПта-198 -tile.sand_quartz.name=Кварцевый песПк -tile.sand_boron_layer.name=СлПй бПрМПгП песка -tile.machine_press.name=Пресс -tile.press_preheater.name=ВМешМОй Магреватель пресса -container.press=Пресс -tile.machine_epress.name=ЭлектрОческОй пресс -container.epress=ЭлектрОческОй пресс -tile.machine_fensu.name=ЭМЭХ -tile.machine_siren.name=СОреМа -container.siren=СОреМа -tile.machine_radgen.name=РаЎОацОПММый ЎвОгатель -container.radGen=РаЎОацОПММый ЎвОгатель -tile.machine_selenium.name=РаЎОальМый ЎвОгатель -container.machineSelenium=РаЎОальМый ЎвОгатель -container.reactorResearch=ИсслеЎПвательскОй реактПр -container.reactorZirnox=ЯЎерМый реактПр ЊОрМПкс -container.zirnox=ЯЎерМый реактПр ЊОрМПкс -tile.machine_reactor_small.name=ИсслеЎПвательскОй реактПр -tile.machine_zirnox.name=ЯЎерМый реактПр ЊОрМПкс -tile.zirnox_destroyed.name=РазрушеММый ЊОрМПкс -tile.machine_controller.name=БлПк уЎалёММПгП ЎПступа к реактПру -container.reactorControl=БлПк уЎалёММПгП ЎПступа к реактПру -tile.soyuz_capsule.name=ГрузПвая пПсаЎПчМая капсула -container.soyuzCapsule=ГрузПвая пПсаЎПчМая капсула -tile.machine_crystallizer.name=РуЎМый ПкОслОтель -container.crystallizer=РуЎМый ПкОслОтель -tile.machine_mining_laser.name=КахтёрскОй лазер -container.miningLaser=КахтёрскОй лазер -tile.barricade.name=МешкО с пескПЌ -container.microwave=МОкрПвПлМПвка -tile.machine_microwave.name=МОкрПвПлМПвка -tile.machine_solar_boiler.name=БПйлер сПлМечМПй башМО -tile.solar_mirror.name=ЗеркалП-гелОПстат -tile.dungeon_chain.name=МеталлОческая цепь -tile.fireworks.name=Батарея фейерверкПв -tile.fireworks.charges=ЗаряЎПв: %s -tile.fireworks.message=ППслаМОе: %s -tile.fireworks.color=Њвет: %s -tile.machine_armor_table.name=СтПл ЌПЎОфОкацОО брПМО -container.armorTable=СтПл ЌПЎОфОкацОО брПМО -container.turretChekhov=ЧехПвскПе ружьё -container.turretFriendly=МОстер ДружелюбМый -container.turretJeremy=ДжереЌО -container.turretTauon=ТауПМ -container.turretRichard=РОчарЎ -container.turretSentry=БрауМ -tile.turret_chekhov.name=КрупМПкалОберМая пулеЌетМая турель "ЧехПвскПе ружьё" -tile.turret_friendly.name=Турель ГатлОМга "МОстер ДружелюбМый" -tile.turret_jeremy.name=АвтПпушка "ДжереЌО" -tile.turret_tauon.name=ПрПтПтОп турелО XVL1456 "ТауПМ" -tile.turret_richard.name=РакетМая турель "РОчарЎ" -tile.turret_sentry.name=СтПрПжевая турель "БрауМ" -tile.turret_sentry_damaged.name=СтПрПжевая турель "ЭЎвОМ" -container.turretHoward=ГПварЎ -tile.turret_howard.name=ДвПйМая турель ГатлОМга CIWS "ГПварЎ" -container.turretMaxwell=Максвелл -container.turretFritz=ЀрОц -tile.turret_fritz.name=Тяжелая ПгМеЌетМая турель "ЀрОц" -tile.turret_maxwell.name=ВысПкПэМергетОческая МазерМая турель "Максвелл" -tile.turret_howard_damaged.name=ДвПйМая турель ГатлОМга CIWS "МафусаОл" -container.machineSILEX=КаЌера ЛРИ -tile.machine_silex.name=КаЌера лазерМПгП разЎелеМОя ОзПтПпПв (SILEX) -container.anvil=НакПвальМя %s урПвМя -tile.anvil_dnt.name=ДОМейтрПМОевая МакПвальМя -tile.anvil_ferrouranium.name=ЀеррПураМОевая МакПвальМя -tile.anvil_iron.name=ЖелезМая МакПвальМя -tile.anvil_lead.name=СвОМцПвая МакПвальМя -tile.anvil_meteorite.name=МетеПрОтПвая МакПвальМя -tile.anvil_murky.name=МрачМая МакПвальМя -tile.anvil_schrabidate.name=НакПвальМя Оз шрабОЎата железа -tile.anvil_starmetal.name=НакПвальМя Оз звёзЎМПгП Ќеталла -tile.anvil_steel.name=СтальМая МакПвальМя -tile.anvil_bismuth.name=ВОсЌутПвая МакПвальМя -tile.anvil_osmiridium.name=ОсЌОрОЎОевая МакПвальМя -tile.anvil_arsenic_bronze.name=НакПвальМя Оз ЌышьякПвПй брПМзы -tile.anvil_bismuth_bronze.name=НакПвальМя Оз вОсЌутПвПй брПМзы -tile.anvil_desh.name=Деш-МакПвальМя -tile.anvil_saturnite.name=СатурМОтПвая МакПвальМя -tile.fraction_spacer.name=РазЎелОтель ректОфОкацОПММПй кПлПММы -tile.machine_fraction_tower.name=РектОфОкацОПММая кПлПММа -tile.machine_orbus.name=Тяжёлый ЌагМОтМый кПМтейМер Ўля аМтОЌатерОО -container.orbus=Тяжёлый ЌагМОтМый кПМтейМер Ўля аМтОЌатерОО -tile.machine_condenser.name=КПМЎеМсатПр пара -tile.machine_condenser_powered.name=МПщМый кПМЎеМсатПр пара -container.atomicClock=АтПЌМые часы -container.betavoltaic=БетавПльтПвый геМератПр -container.bigRTG=БПльшПй РИТЭГ-геМератПр -container.diFurnaceRTG=ЯЎерМая ЎПЌеММая печь -container.machineSingGen=Супер-кПЌпрессПр Ватцза -container.reactorAmat=FTL РеактПр (ALPHA) -container.turretLunarOni=БПжествеММый Свет -container.turretTWR=ЛПрЎ ЊукуеЌО -tile.machine_fel.name=Лазер Ма свПбПЎМых электрПМах (FEL) -container.machineFEL=FEL -tile.substation.name=ППЎстаМцОя -tile.red_pylon_large.name=ЛЭП -tile.charge_dynamite.name=БПЌба с тайЌерПЌ -tile.charge_miner.name=КахтёрскОй заряЎ с тайЌерПЌ -tile.charge_c4.name=ППЎрывМПй заряЎ -tile.charge_semtex.name=КахтёрскОй заряЎ с сеЌтексПЌ -container.machineLiquefactor=РазжОжОтель -tile.machine_liquefactor.name=ПрПЌышлеММый разжОжОтель -tile.machine_liquefactor.desc=МПщМая ЌашОМа Ўля превращеМОя преЎЌетПв в жОЎкПстО.$ППставляется с уМОверсальМыЌО каталОтОческОЌО кПЌпПМеМтаЌО, МагревательМыЌО элеЌеМтаЌО$О встрПеММыЌ гОЎратПрПЌ Ўля МефтехОЌОческПгП сжОжеМОя. -container.machineSolidifier=ОтверЎОтель -tile.machine_solidifier.name=ПрПЌышлеММый ПтверЎОтель -tile.machine_solidifier.desc=УМОверсальМая ЌашОМа, ПсМащеММая сОстеЌаЌО ПхлажЎеМОя О ЎругОЌО$уМОверсальМыЌО ОМструЌеМтаЌО Ўля превращеМОя жОЎкПстей в тверЎые вещества с ОспПльзПваМОеЌ разлОчМых$прПцессПв, такОх как заЌПражОваМОе О МефтехОЌОческая пПлОЌерОзацОя. -container.machineStrandCaster=МашОМа МепрерывМПгП лОтья загПтПвПк -tile.machine_strand_caster.name=МашОМа МепрерывМПгП лОтья загПтПвПк -container.hydrotreater=ГОЎрППчОстОтель -tile.machine_hydrotreater.name=ГОЎрППчОстОтель -container.machineArcFurnaceLarge=ДугПвая печь -tile.machine_arc_furnace.name=ЭлектрОческая ЎугПвая печь -container.machineSolderingStation=ПаяльМый стПл -tile.machine_soldering_station.name=ПаяльМый стПл -container.machinePyroOven=ПОрПлОзМая печь -tile.machine_pyrooven.name=ПОрПлОзМая печь - -tile.conveyor.name=КПМвейер -tile.conveyor.desc=ПереЌещает преЎЌеты, упавшОе Ма МегП$МПжет вращаться пП часПвПй стрелке с пПЌПщью ПтверткО$НажЌОте Ма Птвертку Ўля сгОбаМОя -tile.conveyor_express.name=Быстрый кПМвейер -tile.conveyor_express.desc=ПереЌещает преЎЌеты, упавшОе Ма МегП, ПчеМь быстрП$МПжет вращаться пП часПвПй стрелке с пПЌПщью ПтверткО$НажЌОте Ма Птвертку, чтПбы сПгМуть -container.craneExtractor=КПМвейерМый Озвлекатель -container.craneInserter=КПМвейерМый вставщОк -tile.crane_extractor.name=КПМвейерМый Озвлекатель -tile.crane_extractor.desc=ЗабОрает преЎЌеты Оз ОМвеМтаря О пПЌещает Ох Ма кПМвейерМые леМты$ИЌеет ЎП 9 слПтПв фОльтрацОО с черМыЌ О белыЌ спОскПЌ$Правый клОк ПтверткПй Ўля устаМПвкО выхПЎМПй стПрПМы$Shift-клОк ПтверткПй Ўля устаМПвкО вхПЎМПй стПрПМы$КлОкМОте ЎважЎы Ўля устаМПвкО прПтОвПпПлПжМПй стПрПМы -tile.crane_inserter.name=КПМвейерМый вставщОк -tile.crane_inserter.desc=ПрОМОЌает преЎЌеты с кПМвейерПв О пПЌещает Ох в кПМтейМеры$Правый щелчПк ПтверткПй Ўля устаМПвкО вхПЎМПй стПрПМы$Shift-щелчПк ПтверткПй Ўля устаМПвкО выхПЎМПй стПрПМы$КлОкМОте ЎважЎы Ўля устаМПвкО прПтОвПпПлПжМПй стПрПМы -container.craneBoxer=КПМвейерМый упакПвщОк -container.craneRouter=КПМвейерМый сПртОрПвщОк -container.craneUnboxer=КПМвейерМый распакПвщОк -tile.crane_boxer.name=КПМвейерМый упакПвщОк -tile.crane_boxer.desc=Загружает МастраОваеЌПе кПлОчествП стПпПк в ящОкО, кПтПрые переЌещаются пП кПМвейерМыЌ леМтаЌ$Правый клОк ПтверткПй Ўля устаМПвкО вхПЎМПй стПрПМы$КОфтПвый клОк ПтверткПй Ўля устаМПвкО выхПЎМПй стПрПМы$КлОкМОте ЎважЎы Ўля устаМПвкО прПтОвПпПлПжМПй стПрПМы -tile.crane_router.name=КПМвейерМый сПртОрПвщОк -tile.crane_router.desc=СПртОрует элеЌеМт Ма ПсМПве заЎаММых крОтерОев$СтПрПМы ЌПгут быть ПпреЎелеМы как черМый спОсПк, белый спОсПк ОлО пПЎстаМПвПчМый зМак$СтПрПМы пПЎстаМПвПчМПгП зМака выбОраются тПлькП в тПЌ случае, еслО МО ПЎОМ ЎругПй фОльтр Ме пПЎхПЎОт -tile.crane_unboxer.name=КПМвейерМый распакПвщОк -tile.crane_unboxer.desc=ПрОеЌ кПрПбПк О ОзвлечеМОе Ох сПЎержОЌПгП$Правый щелчПк ПтверткПй Ўля устаМПвкО выхПЎМПй стПрПМы$Shift-щелчПк ПтверткПй Ўля устаМПвкО вхПЎМПй стПрПМы$ДважЎы щелкМОте Ўля устаМПвкО прПтОвПпПлПжМПй стПрПМы -tile.conveyor_chute.name=КПМвейерМый желПб -tile.conveyor_chute.desc=ПереЌещает преЎЌеты вМОз$СаЌый МОжМОй желПб буЎет ЎействПвать как ПбычМый кПМвейер -tile.conveyor_double.name=ДвухпПлПсМый кПМвейер -tile.conveyor_double.desc=ПереЌещает преЎЌеты, ПпущеММые Ма МегП$МПжет пПвПрачОваться пП часПвПй стрелке с пПЌПщью ПтверткО$НажЌОте Ма Птвертку Ўля сгОбаМОя -tile.conveyor_lift.name=КПМвейерМый цепМПй лОфт -tile.conveyor_lift.desc=ПереЌещает преЎЌеты вверх$Для правОльМПй рабПты требуется Ме ЌеМее Ўвух блПкПв Ўруг Ма Ўруге -tile.conveyor_triple.name=ТрёхпПлПсМый кПМвейер -tile.conveyor_triple.desc=ПереЌещает преЎЌеты, упавшОе Ма МегП$МПжет вращаться пП часПвПй стрелке с пПЌПщью ПтверткО$НажЌОте Ма Птвертку Ўля сгОбаМОя -container.craneGrabber=КПМвейерМый сбПрщОк -tile.crane_grabber.name=КПМвейерМый сбПрщОк -tile.crane_grabber.desc=ПрОМОЌает преЎЌеты с прПхПЎящОх кПМвейерПв О пПЌещает Ох в кПМтейМеры$ПрОМОЌает преЎЌеты тПлькП с блОжайшей ЎПрПжкО$ИЌеет ЎП 9 слПтПв фОльтрацОО с черМыЌ О белыЌ спОскПЌ$Правый клОк ПтверткПй Ўля устаМПвкО стПрПМы вхПЎа$СЌеММый клОк ПтверткПй Ўля устаМПвкО стПрПМы выхПЎа$КлОкМОте ЎважЎы Ўля устаМПвкО прПтОвПпПлПжМПй стПрПМы -tile.crane_splitter.name=КПМвейерМый разЎелОтель -tile.crane_splitter.desc=РазЎеляет преЎЌеты О равМПЌерМП уклаЎывает Ох Ма Ўве кПМвейерМые леМты$СаЌа является кПМвейерМПй леМтПй, пПэтПЌу ЌПжет МапряЌую вхПЎОть в ОМсертер ОлО сПртОрПвщОк -tile.crane_partitioner.name=ВставщОк ПкОслОтеля -tile.crane_partitioner.desc=ПрОМОЌает О сПхраМяет ЎП ЎевятО вхПЎПв руЎМПгП ПкОслОтеля$О ПсвПбПжЎает Ох, еслО ПМО сППтветствуют требуеЌПЌу разЌеру вхПЎа.$НеправОльМые преЎЌеты также сПхраМяются О ЎПлжМы быть ОзвлечеМы Оз стПрПМы. - -container.droneCrate=ПассОвМый ящОк Ўля ЎрПМПв -container.droneDock=ДрПМ-стаМцОя -container.droneProvider=ЯщОк сМабжеМОя Ўля ЎрПМПв -container.droneRequester=ЯщОк запрПса Ўля ЎрПМПв -tile.drone_crate.name=ПассОвМый ящОк Ўля ЎрПМПв -tile.drone_crate.desc=ППгрузПчМП-разгрузПчМая тПчка Ўля траМспПртМых ЎрПМПв.$Действует как путевая тПчка, ЎПлжМа быть связаМа с лОМкерПЌ ЎрПМПв.$ДрПМы ЎПлжМы прОблОжаться пПЎ бПльшОЌ углПЌ, ОМаче ПМО застряМут. -tile.drone_crate_provider.name=ЯщОк сМабжеМОя Ўля ЎрПМПв -tile.drone_crate_provider.desc=ПреЎлагает преЎЌеты лПгОстОческПй сетО.$ЛПгОстОческОе ЎрПМы буЎут пытаться переЌестОть преЎЌеты Пт пПставщОкПв в ящОкО пПкупателей. -tile.drone_crate_requester.name=ЯщОк запрПса Ўля ЎрПМПв -tile.drone_crate_requester.desc=ЗапрашОвает преЎЌеты Оз лПгОстОческПй сетО.$ПреЎЌеты, ЎПбавлеММые в фОльтр, буЎут запрПшеМы, еслО Птсутствуют в егП ОМвеМтаре. -tile.drone_dock.name=ДрПМ-стаМцОя -tile.drone_dock.desc=ТПчка спауМа Ўля лПгОстОческОх ЎрПМПв.$МПжет ПбМаружОвать пПставщОкПв О заказчОкПв тПлькП в раЎОусе 5 чаМкПв.$ДрПМы буЎут слеЎПвать тПлькП ЎП 10 путевых тПчек за сПеЎОМеМОе. -tile.drone_waypoint.name=Путевая тПчка Ўля ЎрПМПв -tile.drone_waypoint.desc=Путевая тПчка Ўля ЎрПМПв$ИспПльзуйте лОМкер траМспПртМПгП ЎрПМа, чтПбы заЎать путь$НажОЌайте Ма кажЎую путевую тПчку О крейт пПслеЎПвательМП, чтПбы сПзЎать путь,$ затеЌ МажЌОте shift, чтПбы ПчОстОть сПхраМеММую пПзОцОю$ ЩелкМОте правПй кМПпкПй ЌышО ОлО shift, чтПбы ОзЌеМОть сЌещеМОе путевПй тПчкО -tile.drone_waypoint_request.name=ЛПгОстОческая путевая тПчка Ўля ЎрПМПв -item.drone.patrol.name=ТраМспПртМый ЎрПМ -item.drone.patrol.desc=Путешествует пП Ќаршруту с путевыЌО тПчкаЌО$Пытается загрузОться/разгрузОться кажЎый раз, кПгЎа ЎПстОгает ящОка с ЎрПМаЌО$Правый клОк Ма ящОке с ЎрПМаЌО Ўля разЌещеМОя. -item.drone.patrol_chunkloading.name=ТраМспПртМый ЎрПМ (ЧаМклПаЎер) -item.drone.patrol_chunkloading.desc=Путешествует пП Ќаршруту с путевыЌО тПчкаЌО$Пытается загрузОться/разгрузОться кажЎый раз, кПгЎа ЎПстОгает ящОка с ЎрПМаЌО$Правый клОк Ма ящОке с ЎрПМаЌО Ўля разЌещеМОя.$Загружает кускО! -item.drone.patrol_express.name=Быстрый траМспПртМый ЎрПМ -item.drone.patrol_express.desc=Путешествует пП Ќаршруту с путевыЌО тПчкаЌО$Пытается загрузОться/разгрузОться кажЎый раз, кПгЎа ЎПстОгает ящОка с ЎрПМаЌО$Правый клОк Ма ящОке с ЎрПМаЌО Ўля разЌещеМОя. -item.drone.patrol_express_chunkloading.name=Быстрый траМспПртМый ЎрПМ (ЧаМклПаЎер) -item.drone.patrol_express_chunkloading.desc=Путешествует пП Ќаршруту с путевыЌО тПчкаЌО$Пытается загрузОться/разгрузОться кажЎый раз, кПгЎа ЎПстОгает ящОка с ЎрПМаЌО$Правый клОк пПверх ящОка с ЎрПМаЌО Ўля разЌещеМОя.$Загружает кускО! -item.drone.request.name=ЛПгОстОческОй ЎрПМ -item.drone.request.desc=ИспПльзуется ЎПкаЌО лПгОстОческОх ЎрПМПв Ўля пПрПжЎеМОя лПгОстОческОх ЎрПМПв$ДрПМы слеЎуют пП путевыЌ тПчкаЌ лПгОстОческОх ЎрПМПв$ППсле выпПлМеМОя запрПса ЎрПМ вПзвращается в ЎПк. -item.drone_linker.name=СПеЎОМОтель пассОвМых ящОкПв Ўля ЎрПМПв - -container.turretArty=Грег -tile.turret_arty.name=АртОллерОйская турель "Грег" -container.heaterFirebox=ТПпка -tile.heater_firebox.name=ТПпка -tile.heater_firebox.desc=ПрПОзвПЎОт теплП, сжОгая твёрЎПе тПплОвП. -container.heaterOilburner=ЖОЎкПстМый бПйлер -tile.heater_oilburner.name=ЖОЎкПстМый бПйлер -tile.heater_oilburner.desc=ПрПОзвПЎОт теплП, сжОгая жОЎкПе тПплОвП.$МПжет быть МастрПеМП с пПЌПщью ПтверткО. -tile.machine_stirling.name=ГеМератПр СтОрлОМга -tile.machine_stirling.desc=Превращает теплП в эМергОю. Требует вМешМОй ОстПчМОк тепла.$СкПрПсть теплПпереЎачО: T*0.1 TU/t$МаксОЌальМПе пПтреблеМОе: 300 TU/t$ЭффектОвМПсть: 50%% -tile.machine_stirling_steel.name=УкреплёММый геМератПр СтОрлОМга -tile.machine_stirling_steel.desc=Превращает теплП в эМергОю. Требует вМешМОй ОстПчМОк тепла.$ИспПльзует бПлее тяжёлую шестерМю, чтПбы выЎержОвать высПкОе теЌпературы.$СкПрПсть теплПпереЎачО: T*0.1 TU/t$МаксОЌальМПе пПтреблеМОе: 1500 TU/t$ЭффектОвМПсть: 50%% -tile.machine_sawmill.name=ЛесПпОлка Ма геМератПре СтОрлОМга -tile.machine_sawmill.desc=Требует вМешМОй ОстПчМОк тепла.$СкПрПсть теплПпереЎачО: T*0.1 TU/t$МОМ. пПтреблеМОе: 100 TU/t, Макс. пПтреблеМОе intake: 300 TU/t -tile.heater_electric.name=ЭлектрОческОй Магреватель -tile.heater_electric.desc=ПрПОзвПЎОт теплП, ОспПльзуя эМергОю.$ПрОМОЌает теплП сМОзу, эффектОвМПсть 85%%.$МПжМП МастрПОть ПтверткПй -container.heaterOven=НагревательМая печь -tile.heater_oven.name=НагревательМая печь -tile.heater_oven.desc=ПрПОзвПЎОт теплП, сжОгая твёрЎПе тПплОвП.$ПрОМОЌает теплП сМОзу с 50%% эффектОвМПстью. -tile.heater_heatex.name=ТеплППбЌеММый Магреватель -tile.heater_heatex.desc=ВыЎеляет теплП Оз гПрячОх жОЎкПстей. -container.heaterHeatex=ТеплППбЌеММОк -tile.machine_steam_engine.name=ПарПвПй ЎвОгатель -tile.machine_steam_engine.desc=ЭффектОвМПсть: 85%% -container.turretHIMARS=ГеМрО +item.acetylene_torch.name=АцетОлеМПвая сварПчМая гПрелка +item.ajr_boots.name=БПтОМкО СтальМых РейМЎжерПв +item.ajr_helmet.name=КлеЌ СтальМых РейМЎжерПв +item.ajr_legs.name=ППМПжО СтальМых РейМЎжерПв +item.ajr_plate.name=НагруЎМОк СтальМых РейМЎжерПв +item.ajro_boots.name=БПтОМкО сОлПвПй брПМО AJR +item.ajro_helmet.name=КлеЌ сОлПвПй брПМО AJR +item.ajro_legs.name=ППМПжО сОлПвПй брПМО AJR +item.ajro_plate.name=НагруЎМОк сОлПвПй брПМО AJR +item.alloy_axe.name=ТПпПр Оз прПЎвОМутПгП сплава +item.alloy_boots.name=БПтОМкО Оз прПЎвОМутПгП сплава +item.alloy_helmet.name=КлеЌ Оз прПЎвОМутПгП сплава +item.alloy_hoe.name=МПтыга Оз прПЎвОМутПгП сплава +item.alloy_legs.name=ППМПжО Оз прПЎвОМутПгП сплава +item.alloy_pickaxe.name=КОрка Оз прПЎвОМутПгП сплава +item.alloy_plate.name=НагруЎМОк Оз прПЎвОМутПгП сплава +item.alloy_shovel.name=ЛПпата Оз прПЎвОМутПгП сплава +item.alloy_sword.name=Меч Оз прПЎвОМутПгП сплава +item.ammo_12gauge.name=Картечь 12 калОбра +item.ammo_12gauge_du.name=Картечь 12 калОбра (С ураМПвыЌ пПкрытОеЌ) +item.ammo_12gauge_incendiary.name=Картечь 12 калОбра (ЗажОгательМая) +item.ammo_12gauge_marauder.name=ТактОческОй прПтОвПЌарПЎёрМый сМаряЎ 12 калОбра +item.ammo_12gauge_percussion.name=Капсюль 12 калОбра +item.ammo_12gauge_shrapnel.name=Картечь 12 калОбра (КрапМельМая) +item.ammo_12gauge_sleek.name=Картечь 12 калОбра (IF-R&D) +item.ammo_20gauge.name=Картечь 20 калОбра +item.ammo_20gauge_caustic.name=Картечь 20 калОбра (ТПксОчМая) +item.ammo_20gauge_explosive.name=Картечь 20 калОбра (ВзрывМая) +item.ammo_20gauge_flechette.name=ИгПльчатые сМаряЎы 20 калОбра +item.ammo_20gauge_incendiary.name=Картечь 20 калОбра (ЗажОгательМая) +item.ammo_20gauge_shock.name=Картечь 20 калОбра (КПкПвая) +item.ammo_20gauge_shrapnel.name=Картечь 20 калОбра (КрапМельМая) +item.ammo_20gauge_sleek.name=Картечь 20 калОбра (IF-R&D) +item.ammo_20gauge_slug.name=Пуля БреММеке 20 калОбра +item.ammo_20gauge_wither.name=Картечь 20 калОбра (Иссушающая) +item.ammo_22lr.name=МалПкалОберМый патрПМ .22 LR +item.ammo_22lr_ap.name=МалПкалОберМый патрПМ .22 LR (БрПМебПйМый) +item.ammo_22lr_chlorophyte.name=МалПкалОберМый патрПМ .22 LR (ХлПрПфОт) +item.ammo_357_desh.name=Деш-Пуля калОбра .357 МагМуЌ +item.ammo_44.name=Пуля калОбра .44 МагМуЌ +item.ammo_44_ap.name=Пуля калОбра .44 МагМуЌ (БрПМебПйМый) +item.ammo_44_bj.name=Пуля калОбра .44 МагМуЌ (ЛПЎка) +item.ammo_44_chlorophyte.name=Пуля калОбра .44 МагМуЌ (ХлПрПфОт) +item.ammo_44_du.name=Пуля калОбра .44 МагМуЌ (ДУ) +item.ammo_44_phosphorus.name=Пуля калОбра .44 МагМуЌ (БЀ) +item.ammo_44_pip.name=Пуля калОбра .44 МагМуЌ (ГрузПвПй вагПМ) +item.ammo_44_rocket.name=Ракета-Пуля .44 МагМуЌ +item.ammo_44_silver.name=Пуля калОбра .44 МагМуЌ (ЗЎаМОе) +item.ammo_44_star.name=Пуля калОбра .44 МагМуЌ (ЗвёзЎМый Ќеталл) +item.ammo_45.name=.45 ACP Round +item.ammo_45_ap.name=Пуля 45-гП калОбра ACP (БрПМебПйМая) +item.ammo_45_du.name=Пуля 45-гП калОбра ACP (С ураМПвыЌ МакПМечМОкПЌ) +item.ammo_4gauge.name=Картечь 4 калОбра +item.ammo_4gauge_balefire.name=23ЌЌ Жар-граМата +item.ammo_4gauge_canister.name=23ЌЌ Ракета (Картечь) +item.ammo_4gauge_claw.name=Картечь 4 калОбра (КлешМО) +item.ammo_4gauge_explosive.name=23ЌЌ граМата +item.ammo_4gauge_flechette.name=ИгПльчатая картечь 4 калОбра +item.ammo_4gauge_flechette_phosphorus.name=ИгПльчатая картечь 4 калОбра (БЀ) +item.ammo_4gauge_kampf.name=23ЌЌ Ракета +item.ammo_4gauge_semtex.name=23ЌЌ КахтёрскОй заряЎ +item.ammo_4gauge_sleek.name=Картечь 4 калОбра (IF-R&D) +item.ammo_4gauge_slug.name=ТвёрЎая СтальМая пуля 4 калОбра +item.ammo_4gauge_titan.name=Картечь 4 калОбра (кряк) +item.ammo_4gauge_vampire.name=Картечь 4 калОбра (ОсОМПвый кПл) +item.ammo_4gauge_void.name=Картечь 4 калОбра (ПустПтМая ПбПлПчка) +item.ammo_50ae.name=ПатрПМ калОбра .50 AE +item.ammo_50ae_ap.name=ПатрПМ калОбра .50 AE (БрПМебПйМый) +item.ammo_50ae_chlorophyte.name=ПатрПМ калОбра .50 AE (ХлПрПфОт) +item.ammo_50ae_du.name=ПатрПМ калОбра .50 AE (ДУ) +item.ammo_50ae_star.name=ПатрПМ калОбра .50 AE (ЗвёзЎМый Ќеталл) +item.ammo_50bmg.name=КрупМПкалОберМый патрПМ .50 BMG +item.ammo_50bmg_ap.name=КрупМПкалОберМый патрПМ .50 BMG (БрПМебПйМый) +item.ammo_50bmg_chlorophyte.name=КрупМПкалОберМый патрПМ .50 BMG (ХлПрПфОт) +item.ammo_50bmg_du.name=КрупМПкалОберМый патрПМ .50 BMG (ДУ) +item.ammo_50bmg_explosive.name=КрупМПкалОберМый патрПМ .50 BMG (ВзрывМПй) +item.ammo_50bmg_flechette.name=ИгПльчатый .50 BMG патрПМ +item.ammo_50bmg_flechette_am.name=ИгПльчатый .50 BMG патрПМ (АЌерОцОй) +item.ammo_50bmg_flechette_po.name=ИгПльчатый .50 BMG патрПМ (ППлПМОй) +item.ammo_50bmg_incendiary.name=КрупМПкалОберМый патрПМ .50 BMG (ЗажОгательМый) +item.ammo_50bmg_phosphorus.name=КрупМПкалОберМый патрПМ .50 BMG (БЀ) +item.ammo_50bmg_sleek.name=КрупМПкалОберМый патрПМ .50 BMG (IF-R&D) +item.ammo_50bmg_star.name=КрупМПкалОберМый патрПМ .50 BMG (ЗвёзЎМый Ќеталл) +item.ammo_556.name=5.56ЌЌ патрПМ +item.ammo_556_ap.name=5.56ЌЌ патрПМ (БрПМебПйМый) +item.ammo_556_chlorophyte.name=5.56ЌЌ патрПМ (ХлПрПфОт) +item.ammo_556_du.name=5.56ЌЌ патрПМ (ДУ) +item.ammo_556_flechette.name=ИгПльчатый 5.56-патрПМ +item.ammo_556_flechette_chlorophyte.name=ИгПльчатый 5.56-патрПМ (ХлПрПфОт) +item.ammo_556_flechette_du.name=ИгПльчатый 5.56-патрПМ (УраМПвый брПМебПйМый) +item.ammo_556_flechette_incendiary.name=ИгПльчатый 5.56-патрПМ (ЗажОгательМый) +item.ammo_556_flechette_phosphorus.name=ИгПльчатый 5.56-патрПМ (ЀПсфПрМый МакПМечМОк) +item.ammo_556_flechette_sleek.name=ИгПльчатый 5.56-патрПМ (IF-R&D) +item.ammo_556_k.name=5.56ЌЌ К-ПатрПМ +item.ammo_556_phosphorus.name=5.56ЌЌ патрПМ (БЀ) +item.ammo_556_sleek.name=5.56ЌЌ патрПМ (IF-R&D) +item.ammo_556_star.name=5.56ЌЌ патрПМ (ЗвёзЎМый Ќеталл) +item.ammo_556_tracer.name=5.56ЌЌ патрПМ (ТрассОрующОй сМаряЎ) +item.ammo_5mm.name=5-ЌЌ патрПМ +item.ammo_5mm_chlorophyte.name=5-ЌЌ патрПМ (ХлПрПфОт) +item.ammo_5mm_du.name=5-ЌЌ патрПМ (ДУ) +item.ammo_5mm_explosive.name=5-ЌЌ патрПМ (ВзрывМПй) +item.ammo_5mm_star.name=5-ЌЌ патрПМ (ЗвёзЎМый Ќеталл) +item.ammo_75bolt.name=МагазОМ бПлтПв .75 (30rnd) +item.ammo_75bolt_incendiary.name=МагазОМ зажОгательМых бПлтПв .75 (30rnd) +item.ammo_75bolt_he.name=МагазОМ фугасМых бПлтПв .75 (30rnd) +item.ammo_762.name=7.62ЌЌ патрПМ +item.ammo_762_ap.name=7.62ЌЌ патрПМ (БрПМебПйМый) +item.ammo_762_du.name=7.62ЌЌ патрПМ (С ураМПвыЌ МакПМечМОкПЌ) +item.ammo_762_k.name=7.62 ЌЌ K-ПбразМый патрПМ +item.ammo_762_phosphorus.name=7.62ЌЌ патрПМ (БЀ) +item.ammo_762_tracer.name=7.62ЌЌ патрПМ (ТрассОрующОй) +item.ammo_9mm.name=9-ЌЌ патрПМ +item.ammo_9mm_ap.name=9-ЌЌ патрПМ (БрПМебПйМый) +item.ammo_9mm_chlorophyte.name=9-ЌЌ патрПМ (ХлПрПфОт) +item.ammo_9mm_du.name=9-ЌЌ патрПМ (ДУ) +item.ammo_9mm_rocket.name=9-ЌЌ ракета +item.ammo_arty.name=16-ЎюйЌПвый артОллерОйскОй сМаряЎ item.ammo_arty_cargo.name=16-ЎюйЌПвый артОллерОйскОй сМаряЎ Ўля экспресс-ЎПставкО +item.ammo_arty_chlorine.name=ХлПрМый 16-ЎюйЌПвый артОллерОйскОй сМаряЎ +item.ammo_arty_classic.name=16-ЎюйЌПвый артОллерОйскОй сМаряЎ (ПряЌП Оз ЀактПрОП) +item.ammo_arty_he.name=ЀугасМый 16-ЎюйЌПвый артОллерОйскОй сМаряЎ +item.ammo_arty_mini_nuke.name=МОМО-яЎерМый 16-ЎюйЌПвый артОллерОйскОй сМаряЎ +item.ammo_arty_mini_nuke_multi.name=МОМО-яЎерМый 16-ЎюйЌПвый ЌультО-сМаряЎ +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_arty_phosphorus_multi.name=ЀПсфПрМый 16-ЎюйЌПвый ЌультО-сМаряЎ +item.ammo_cell.name=ЭМергП-патрПМы +item.ammo_coilgun.name=ВПльфраЌПвый шар Ўля гаусс-пушкО +item.ammo_coilgun_du.name=ЀеррПураМОевый шар Ўля гаусс-пушкО +item.ammo_coilgun_rubber.name=РезОМПвый шар Ўля гаусс-пушкО +item.ammo_container.name=КПМтейМер с бПепрОпасаЌО +item.ammo_dart.name=ПластОкПвый ЎрПтОк (ИссущающОй) +item.ammo_dart_nerf.name=ДрПтОк NERF +item.ammo_dart_nuclear.name=ПластОкПвый ЎрПтОк (С взрывчаткПй) +item.ammo_dgk.name=ЛеМта Ма 200 патрПМПв Ўля CIWS "ГПварЎ" +item.ammo_fireext.name=Бак с вПЎПй Ўля ПгМетушОтеля +item.ammo_fireext_foam.name=Бак с пеМПй Ўля ПгМетушОтеля +item.ammo_fireext_sand.name=Бак с пескПЌ Ўля ПгМетушОтеля +item.ammo_folly.name=СеребряМая пуля +item.ammo_folly_du.name=СеребряМая пуля (ДУ, Не взрывающаяся) +item.ammo_folly_nuclear.name=СеребряМая пуля (АтПЌМая) +item.ammo_fuel.name=Бак с ЎОзелеЌ +item.ammo_fuel_gas.name=Бак с газПЌ +item.ammo_fuel_napalm.name=Бак с МапалЌПЌ +item.ammo_fuel_phosphorus.name=Бак с белыЌ фПсфПрПЌ +item.ammo_fuel_vaporizer.name=Бак ОспарОтеля +item.ammo_grenade.name=40ЌЌ граМата +item.ammo_grenade_concussion.name=40ЌЌ граМата (Concussion) +item.ammo_grenade_finned.name=40ЌЌ граМата (Finned) +item.ammo_grenade_he.name=40ЌЌ граМата (ЀугасМая) +item.ammo_grenade_incendiary.name=40ЌЌ граМата (ЗажОгательМая) +item.ammo_grenade_kampf.name=40ЌЌ-Ракета +item.ammo_grenade_leadburster.name=40ЌЌ ЛОЎбастер +item.ammo_grenade_nuclear.name=40ЌЌ граМата (ПрОвет) +item.ammo_grenade_phosphorus.name=40ЌЌ граМата (БЀ) +item.ammo_grenade_sleek.name=40ЌЌ граМата (IF-R&D) +item.ammo_grenade_toxic.name=40ЌЌ граМата (ХОЌОческая) +item.ammo_grenade_tracer.name=40ЌЌ УчебМая граМата item.ammo_himars_standard.name=227-ЌЌ управляеЌый артОллерОйскОй ракетМый сМаряЎ item.ammo_himars_standard_he.name=227-ЌЌ управляеЌый артОллерОйскОй ракетМый сМаряЎ (ЀугасМый) +item.ammo_himars_standard_lava.name=227-ЌЌ управляеЌый артОллерОйскОй ракетМый сМаряЎ (Лава) item.ammo_himars_standard_mini_nuke.name=227-ЌЌ управляеЌый артОллерОйскОй ракетМый сМаряЎ (МОМО-яЎерМый) item.ammo_himars_standard_tb.name=227-ЌЌ управляеЌый артОллерОйскОй ракетМый сМаряЎ (ТерЌПбарОческОй) item.ammo_himars_standard_wp.name=227-ЌЌ управляеЌый артОллерОйскОй ракетМый сМаряЎ (БЀ) -item.ammo_himars_standard_lava.name=227-ЌЌ управляеЌый артОллерОйскОй ракетМый сМаряЎ (Лава) item.ammo_himars_single.name=610-ЌЌ управляеЌый артОллерОйскОй ракетМый сМаряЎ item.ammo_himars_single_tb.name=610-ЌЌ управляеЌый артОллерОйскОй ракетМый сМаряЎ (ТерЌПбарОческОй) -tile.brick_asbestos_stairs.name=СтупеМО Оз асбестПвых кОрпОчей -tile.brick_compound.name=КПЌпПзОтМая сетка -tile.brick_compound_stairs.name=СтупеМО Оз кПЌпПзОтМПй сеткО -tile.brick_concrete_stairs.name=СтупеМО Оз бетПММых кОрпОчей -tile.brick_concrete_broken.name=РазрушеММые бетПММые кОрпОчО -tile.brick_concrete_marked.name=ППЌечеММые бетПММые кОрпОчО -tile.brick_concrete_cracked_stairs.name=СтупеМО Оз разрушеММых бетПМПвых кОрпОчей -tile.brick_concrete_mossy_stairs.name=CтупеМО Оз заЌшелых бетПММых кОрпОчей -tile.brick_ducrete_stairs.name=СтупеМО Оз ЎюкретПвых кОрпОчей -tile.brick_fire_stairs.name=СтупеМО Оз шаЌПтМых кОрпОчей -tile.brick_light.name=Cветлые кОрпОчО -tile.brick_light_stairs.name=СтупеМО Оз светлых кОрпОчей -tile.brick_obsidian_stairs.name=СтупеМО Оз ПбсОЎОаМПвых кОрпОчей -tile.brick_slab.brick_asbestos.name=ПлОта Оз асбестПвых кОрпОчей -tile.brick_slab.brick_compound.name=ПлОта Оз кПЌпПзОтМПй сеткО -tile.brick_slab.brick_fire.name=ПлОта Оз шаЌПтМых кОрпОчей -tile.brick_slab.brick_light.name=ПлОта Оз светлых кОрпОчей -tile.brick_slab.brick_obsidian.name=ПлОта Оз ПбсОЎОаМПвых кОрпОчей -tile.brick_slab.reinforced_brick.name=ПлОта Оз укреплёММПгП каЌМя -tile.brick_slab.reinforced_stone.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=ПлОта Оз пПтрескаММых бетПММых кОрпОчей -tile.concrete_brick_slab.brick_concrete_mossy.name=ПлОта Оз заЌшелых бетПММых кОрпОчей -tile.concrete_brick_slab.brick_ducrete.name=ПлОта Оз ЎюкретПвых кОрпОчей -tile.concrete_colored_ext.hazard.name=БетПМ "ВыбПр стрПОтеля" - ППлПса ПпасМПстО -tile.concrete_colored_ext.indigo.name=БетПМ "ВыбПр стрПОтеля" - ГлубПкОй ОМЎОгП -tile.concrete_colored_ext.machine.name=БетПМ "ВыбПр стрПОтеля" - ПрПЌышлеММый ПттеМПк -tile.concrete_colored_ext.machine_stripe.name=БетПМ "ВыбПр стрПОтеля" - ПрПЌышлеММая пПлПса -tile.concrete_colored_ext.pink.name=БетПМ "ВыбПр стрПОтеля" - МужествеММый рПзПвый -tile.concrete_colored_ext.purple.name=БетПМ "ВыбПр стрПОтеля" - ТаОМствеММый фОПлетПвый -tile.concrete_colored_ext.bronze.name=БетПМ "ВыбПр стрПОтеля" - БрПМза -tile.concrete_colored_ext.sand.name=БетПМ "ВыбПр стрПОтеля" - ПустыМя -tile.concrete_slab.concrete.name=ПлОта Оз бетПММПй плОткО -tile.concrete_slab.concrete_asbestos.name=ПлОта Оз асбестПбетПМа -tile.concrete_slab.concrete_smooth.name=ПлОта Оз бетПМа -tile.concrete_slab.ducrete.name=ПлОта Оз ЎюкретПвПй плОткО -tile.concrete_slab.ducrete_smooth.name=ПлОта Оз Ўюкрета -tile.concrete_smooth_stairs.name=СтупеМО Оз бетПМа -tile.concrete_stairs.name=СтупеМО Оз бетПММПй плОткО -tile.ducrete_stairs.name=СтупеМО Оз ЎюкретПвПй плОткО -tile.ducrete_smooth_stairs.name=СтупеМО Оз Ўюкрета -tile.machine_boiler.name=БПйлер -tile.machine_boiler.desc=БПльшПй бПйлер Ўля кОпячеМОя вПЎы ОлО Магрева МефтО.$Требует вМешМОй ОстПчМОк тепла.$СкПрПсть переЎачО тепла: ΔT*0.01 TU/t -container.furnaceCombination=КПксПвая печь -tile.furnace_combination.name=КПксПвая печь -tile.furnace_combination.desc=БПльшая печь кПтПрая прПОзвПЎОт ЎревесМый угПль О угПльМый кПкс.$ВыЎеляет жОЎкПстМые пПбПчМые прПЎукты.$СкПрПсть переЎачО тепла: ΔT*0.25 TU/t -tile.reinforced_brick_stairs.name=СтупеМО Оз укреплёММПгП каЌМя -tile.reinforced_stone_stairs.name=СтупеМО Оз уплПтМёММПгП каЌМя -tile.turret_himars.name=РакетМая артОллерОйская турель "ГеМрО" -tile.radio_torch_receiver.name=РеЎстПуМ-раЎОП прОёЌМОк -tile.radio_torch_receiver.desc=СтавОтся Ма плПскОе пПверхМПстО ОлО сПвЌестОЌые кПЌпаратПрМые блПкО -tile.radio_torch_sender.name=РеЎстПуМ-раЎОП переЎатчОк -tile.radio_torch_sender.desc=СтавОтся Ма плПскОе пПверхМПстО ОлО сПвЌестОЌые кПЌпаратПрМые блПкО$СчОтывает реЎстПуМ сОгМал ОлО вхПЎ кПЌпаратПра -container.rttyReceiver=РеЎстПуМ-раЎОП прОёЌМОк -container.rttySender=РеЎстПуМ-раЎОП переЎатчОк -tile.radio_telex.name=Телекс -tile.machine_combustion_engine.name=ПрПЌышлеММый ЎвОгатель вМутреММегП сгПраМОя -tile.machine_mixer.name=ПрПЌышлеММый сЌесОтель -container.machineMixer=ПрПЌышлеММый сЌесОтель -tile.machine_turbinegas.name=ГазПвая турбОМа кПЌбОМОрПваММПгП цОкла -container.turbinegas=ГазПвая турбОМа кПЌбОМОрПваММПгП цОкла -tile.machine_autosaw.name=АвтПЌатОческая пОла -tile.machine_autosaw.desc=Срубает блОжайшОе растеМОя, пересажОвает Ўеревья$ПрОМОЌает:$-ДревесМПе ЌаслП$-ЭтаМПл$-РыбМПе ЌаслП$-Тяжелую Мефть -tile.machine_hephaestus.name=ГеПтерЌальМый теплППбЌеМОк -tile.ore_volcano.name=ГеПтерЌальМый ОстПчМОк -container.vacuumDistill=ВакууЌМый МефтеперерабатывающОй завПЎ -tile.machine_vacuum_distill.name=ВакууЌМый МефтеперерабатывающОй завПЎ -tile.machine_catalytic_reformer.name=КаталОтОческОй рефПрЌер -container.catalyticReformer=КаталОтОческОй рефПрЌер -tile.fan.name=ВеМтОлятПр -tile.fan.desc=АктОвОруется реЎстПуМПЌ$ТПлкает существ ЎП 10 блПкПв$ПКМ ПтвёрткПй чтПбы пПверМуть -tile.watz.name=РеактПр Ватцз -tile.watz_pump.name=НагМетающая пПЌпа Ватцза -tile.machine_coker.name=КПксПвая устаМПвка -tile.machine_coker.desc=КПксует жОЎкПсть, сПзЎавая жОЎкую пПбПчку.$Требует вМешМОй ОстПчМОк тепла.$СкПрПсть переЎачО тепла: ΔT*0.025 TU/t -container.machineCoker=КПксПвая устаМПвка -container.machineCompressor=КПЌпрессПр -tile.machine_compressor.name=КПЌпрессПр -tile.chimney_brick.name=ДыЌПвая труба -tile.chimney_brick.desc=ППЎсПеЎОМяется с пПЌПщью выхлПпМых труб к ЌашОМаЌ$СПкращает выбрПсы загрязМяющОх веществ Ма 75%% -tile.chimney_industrial.name=ПрПЌышлеММая ЎыЌПвая труба -tile.chimney_industrial.desc=ППЎсПеЎОМяется с пПЌПщью выхлПпМых труб к ЌашОМаЌ$СПкращает выбрПсы загрязМяющОх веществ Ма 90%% -tile.radio_torch_counter.name=РеЎстПуМ-раЎОП счётчОк преЎЌетПв -tile.radio_torch_counter.desc=СтавОтся Ма плПскОе пПверхМПстО ОлО сПвЌестОЌые кПЌпаратПрМые блПкО$СОгМал завОсОт Пт кПлОчества МужМых преЎЌетПв -container.rttyCounter=РеЎстПуМ-раЎОП счётчОк преЎЌетПв -container.rttyLogic=РеЎстПуМ-раЎОП лПгОческОй прОёЌМОк -tile.radio_torch_logic.name=РеЎстПуМ-раЎОП лПгОческОй прОёЌМОк -tile.radio_torch_logic.desc=РазЌещается Ма плПскОх пПверхМПстях ОлО сПвЌестОЌых с кПЌпаратПрПЌ блПках$СПпПставляет сОгМалы красМПгП каЌМя с услПвОяЌО, ПцеМОваеЌыЌО в заЎаММПЌ пПряЎке$ЧОслПвые ОлО стрПкПвые вхПЎы сравМОваются с кПМстаМтПй -tile.machine_industrial_boiler.name=ПрПЌышлеММый бПйлер -tile.machine_industrial_boiler.desc=БПльшПй бПйлер, в кПтПрПЌ ЌПжМП вскОпятОть вПЎу ОлО разПгреть Мефть.$Требует вМешМОй ОстПчМОк тепла.$СкПрПсть переЎачО тепла: ΔT*0.01 TU/t$Не ЌПжет взПрваться -container.crateTemplate=СбПрПчМый ящОк -tile.crate_template.name=СбПрПчМый ящОк -container.machineElectrolyser=ЭлектрПлОзёр -tile.machine_electrolyser.name=ЭлектрПлОзёр -tile.lantern.name=СветОльМОк -tile.lantern_behemoth.name=Старый светОльМОк -container.ashpit=ЗПльМОк -tile.machine_ashpit.name=ЗПльМОк -tile.machine_ashpit.desc=СПбОрает зПлу Оз тПпПк О МагревательМых печей -tile.machine_stirling_creative.name=ТвПрческОй геМератПр СтОрлОМга -tile.machine_stirling_creative.desc=Превращает теплП в эМергОю. Требует вМешМОй ОстПчМОк тепла.$СкПрПсть теплПпереЎачО: T*0.1 TU/t$БескПМечМПе пПтреблеМОе/t$ЭффектОвМПсть: 100%% -tile.machine_conveyor_press.name=КПМвейерМый пресс -tile.machine_conveyor_press.desc=ЛеМта ЎвОгается слевП-МаправП$ПКМ чтПбы устаМПвОть штаЌп$ПКМ ПтвёрткПй чтПбы сМять штаЌп -tile.pump_electric.name=ЭлектрОческОй МасПс Ўля груМтПвых вПЎ -tile.pump_electric.desc=ИспПльзует электрОчествП Ўля выкачОваМОя груМтПвых вПЎ$Выкачывает ЎП 10,000ЌБ/тОк$ДПлжМП быть разЌещеМП МОже Y:70 -tile.pump_steam.name=ПарПвПй МасПс Ўля груМтПвых вПЎ -tile.pump_steam.desc=ИспПльзует пар Ўля выкачОваМОя груМтПвых вПЎ$Выкачывает ЎП 1000ЌБ/тОк$ДПлжМП быть разЌещеМП МОже Y:70 -container.machineArcWelder=ДугПвПй сварщОк -tile.machine_arc_welder.name=ДугПвПй сварщОк -container.machineWoodBurner=ГеМератПр Ма ЎрПвах -tile.machine_wood_burner.name=ГеМератПр Ма ЎрПвах -tile.machine_wood_burner.desc=ГеМерОрует 100HE/тОк$СПбОрает зПлу$МПжет сжОгать жОЎкПстО с 25%% эффектОвМПстью за 1ЌБ/с -tile.machine_ore_slopper.name=ПерерабПтчОк беЎрПкПвПй руЎы -container.machineOreSlopper=П.Б.Р. - -container.machineICF=ICF -tile.icf.name=РеактПр ОМерцОальМПгП терЌПяЎерМПгП сОМтеза (ICF) -tile.icf_block.name=Лазер ICF -tile.icf_controller.name=КПМтрПллер лазера ICF -tile.icf_laser_component.capacitor.name=ЛазерМый кПМЎеМсатПр ICF -tile.icf_laser_component.casing.name=ОбшОвка лазера ICF -tile.icf_laser_component.cell.name=ЛазерМая ячейка ICF -tile.icf_laser_component.emitter.name=ЛазерМый Озлучатель ICF -tile.icf_laser_component.port.name=ППрт лазера ICF -tile.icf_laser_component.turbo.name=ТурбПусОлОтель лазера ICF -container.machineICFPress=ТПплОвМый пресс ICF -tile.machine_icf_press.name=ТПплОвМый пресс ICF -tile.machine_icf_press.desc=НапПлМяет тПплОвМые пеллеты ICF$Левый тПплОвМый слПт прОМОЌается сверху/сМОзу, правый - пП бПкаЌ$МюПМы О пеллеты ЌПгут пПЎаваться с любПй стПрПМы -tile.icf_component.name=СтабОлОзатПр ICF -tile.icf_component.structure.name=ОбшОвка ICF -tile.icf_component.structure_bolted.name=ОбшОвка ICF (ЗаклепаММый) -tile.icf_component.vessel.name=СтеМка актОвМПй зПМы ICF -tile.icf_component.vessel_welded.name=СтеМка актОвМПй зПМы ICF (СвареММая) -tile.struct_icf_core.name=ЯЎрП ОМерцОальМПгП терЌПяЎерМПгП реактПра (ICF) - -tile.cm_block.alloy.name=КПрпус ЌашОМы Оз прПЎвОМутПгП сплава -tile.cm_block.desh.name=КПрпус ЌашОМы Оз Ўеша -tile.cm_block.steel.name=КПрпус ЌашОМы Оз сталО -tile.cm_block.tcalloy.name=КПрпус ЌашОМы Оз техМецОевПй сталО -tile.cm_engine.bismuth.name=МПтПрМый блПк Оз вОсЌута -tile.cm_engine.desh.name=МПтПрМый блПк Оз Ўеша -tile.cm_engine.standard.name=МПтПрМый блПк -tile.cm_flux.name=ПрОеЌМОк МейтрПММПгП пПтПка -tile.cm_heat.name=ТеплПпрОеЌМОк -tile.cm_port.alloy.name=Люк Оз прПЎвОМутПгП сплава -tile.cm_port.desh.name=Люк Оз Ўеша -tile.cm_port.steel.name=Люк Оз сталО -tile.cm_port.tcalloy.name=Люк Оз техМецОевПй сталО -tile.cm_sheet.alloy.name=ЛОст Оз прПЎвОМутПгП сплава -tile.cm_sheet.desh.name=ЛОст Оз Ўеша -tile.cm_sheet.steel.name=ЛОст Оз сталО -tile.cm_sheet.tcalloy.name=ЛОст Оз техМецОевПй сталО -tile.cm_tank.alloy.name=Бак Оз прПЎвОМутПгП сплава -tile.cm_tank.desh.name=Бак Оз Ўеша -tile.cm_tank.steel.name=Бак Оз сталО -tile.cm_tank.tcalloy.name=Бак Оз техМецОевПй сталО -tile.cm_circuit.aluminium.name=БлПк ЌОкрПсхеЌ 1-гП урПвМя -tile.cm_circuit.copper.name=БлПк ЌОкрПсхеЌ 2-гП урПвМя -tile.cm_circuit.gold.name=БлПк ЌОкрПсхеЌ 4-гП урПвМя -tile.cm_circuit.red_copper.name=БлПк ЌОкрПсхеЌ 3-гП урПвМя -tile.cm_circuit.schrabidium.name=БлПк ЌОкрПсхеЌ 5-гП урПвМя - -tile.pwr_block.name=ВПЎП-вПЎяМПй эМергетОческОй реактПр (ВВЭР) -tile.pwr_casing.name=ВМешМяя ПбшОвка ВВЭР -tile.pwr_casing.desc=Для фПрЌОрПваМОя реактПра МеПбхПЎОЌП пПкрыть все вМутреММОе частО$РазЌещеМОе: ОбшОвка -tile.pwr_channel.name=КаМалы с ПхлаЎОтелеЌ ВВЭР -tile.pwr_channel.desc=ИспПльзует теплП кПрпуса Ўля Магрева ПхлажЎающей жОЎкПстО$РазЌещеМОе: ЛюбПе -tile.pwr_control.name=РегулОрующОе стержМО ВВЭР -tile.pwr_control.desc=ППзвПляет управлять разЌещёММыЌО тПплОвМыЌО стержМяЌО$РазЌещеМОе: ВМутрО, ЌежЎу тПплОвМыЌО стержМяЌО -tile.pwr_controller.name=КПМтрПллер ВВЭР -tile.pwr_controller.desc=ПаМель управлеМОя ВВЭР$РазЌещеМОе: ОбшОвка, тПлькП ПЎОМ Ма весь реактПр$ПКМ чтПбы сПбрать реактПр -tile.pwr_fuel.name=ТПплОвМый стержеМь ВВЭР -tile.pwr_fuel.desc=УвелОчОвает вЌестОЌПсть тПплОва$РазЌещеМОе: ВМутрО, пПвышает реактОвМПсть -tile.pwr_heatex.name=ТеплППбЌеММОк ВВЭР -tile.pwr_heatex.desc=ПереЌещает теплП Оз актОвМПй зПМы Ма кПрпус$РазЌещеМОе: ЛюбПе -tile.pwr_neutron_source.name=ИстПчМОк МейтрПМПв ВВЭР -tile.pwr_neutron_source.desc=ДПбавляет 20 еЎОМОц пПтПка в актОвМую зПМу$РазЌещеМОе: ЛюбПе$ППтПк ЎПстОгает тПплОвМых стержМей еслО ЌежЎу МОЌО МОчегП Мет -tile.pwr_port.name=Люк ЎПступа ВВЭР -tile.pwr_port.desc=ВвПЎ/вывПЎ жОЎкПстей О преЎЌетПв$РазЌещеМОе: ОбшОвка -tile.pwr_reflector.name=НейтрПММый Птражатель ВВЭР -tile.pwr_reflector.desc=Отражает МейтрПМы ПбратМП к тПплОвМыЌ стержМяЌ$РазЌещеМОе: ВМутрО, пПвышает реактОвМПсть$ППЎхПЎОт Ўля ПбшОвкО -tile.pwr_heatsink.name=РаЎОатПр ВВЭР -tile.pwr_heatsink.desc=УвелОчОвает теплПеЌкПсть актОвМПй зПМы Ма 5%%$Делает каМалы ПхлажЎающей жОЎкПстО О теплППбЌеММОкО чуть ЌеМее эффектОвМыЌО$РазЌещеМОе: ЛюбПе - -container.hadron=УскПрОтель частОц -tile.hadron_access.name=ТерЌОМал ЎПступа ускПрОтеля частОц -tile.hadron_core.name=ЯЎрП ускПрОтеля частОц -tile.hadron_power.name=ППрт пОтаМОя ускПрОтеля частОц (1MHE) -tile.hadron_power_10m.name=ППрт пОтаМОя ускПрОтеля частОц (10MHE) -tile.hadron_power_100m.name=ППрт пОтаМОя ускПрОтеля частОц (100MHE) -tile.hadron_power_1g.name=ППрт пОтаМОя ускПрОтеля частОц (1GHE) -tile.hadron_power_10g.name=ППрт пОтаМОя ускПрОтеля частОц (10GHE) -tile.hadron_analysis.name=СтеМка каЌеры ускПрОтеля частОц -tile.hadron_analysis_glass.name=ОкМП каЌеры ускПрОтеля частОц -tile.hadron_coil_alloy.name=ПлПтМая сверхпрПвПЎящая катушка -tile.hadron_coil_mese.name=ПлПтМая Ќесе катушка -tile.hadron_coil_schrabidium.name=ПлПтМая шрабОЎОевая катушка -tile.hadron_coil_starmetal.name=ПлПтМая звёзЎМПЌеталлОческая катушка -tile.hadron_coil_chlorophyte.name=ПлПтМая хлПрПфОтПвая катушка -tile.hadron_coil_gold.name=ПлПтМая зПлПтая катушка -tile.hadron_coil_magtung.name=ПлПтМая сверхпрПвПЎящая 4000K катушка -tile.hadron_coil_neodymium.name=ПлПтМая МеПЎОЌПвая катушка -tile.hadron_coil_schrabidate.name=ПлПтМая шрабОЎатавая катушка -tile.hadron_cooler.name=Кулер ускПрОтеля частОц -tile.hadron_cooler.desc=МПщМПсть ПхлажЎеМОя: 10$ППрПг переПхлажЎеМОя: 10$БПМус: +10%%$Ктраф переПхлажЎеМОя: -25%% -tile.hadron_cooler_mk2.name=Кулер ускПрОтеля частОц - The Palindrome Special -tile.hadron_cooler_mk2.desc=МПщМПсть ПхлажЎеМОя: 5$ЀуМкцОя эффектОвМПстО: 2-(ПхлаЎ-15)²/225$Макс. штраф: -90%% -tile.hadron_diode.name=ДОПЎ частОц КПтткО -tile.hadron_plating.name=ОбшОвка ускПрОтеля частОц -tile.hadron_plating_black.name=ОбшОвка ускПрОтеля частОц (ЧёрМый) -tile.hadron_plating_blue.name=ОбшОвка ускПрОтеля частОц (СОМОй) -tile.hadron_plating_glass.name=ОбшОвка ускПрОтеля частОц (ОкПшкП) -tile.hadron_plating_striped.name=ОбшОвка ускПрОтеля частОц (Крутые пПлПсы ПпасМПстО) -tile.hadron_plating_voltz.name=ОбшОвка ускПрОтеля частОц (ВОЛЬТЗ) -tile.hadron_plating_yellow.name=ОбшОвка ускПрОтеля частОц (Жёлтый) -tile.field_disturber.name=ППЎавОтель высПкПэМергОтОческОх пПлей -container.exposureChamber=КаЌера ПблучеМОя частОцаЌО -tile.machine_exposure_chamber.name=КаЌера ПблучеМОя частОцаЌО - -tile.barrel_plastic.name=БезПпасМый бПчПМПк™ -tile.barrel_corroded.name=ПрПржавевшая бПчка -tile.barrel_iron.name=ЖелезМая бПчка -tile.barrel_steel.name=СтальМая бПчка -tile.barrel_antimatter.name=МагМОтМый кПМтейМер Ўля аМтОЌатерОО -container.barrel=БПчка - -tile.broadcaster_pc.name=ППврежЎёММый переЎатчОк -tile.tesla.name=Катушка Теслы -tile.charger.name=СтаМцОя заряЎкО -tile.radiobox.name=КПрПбка управлеМОя вреЎОтеляЌО РПзеМберга -tile.radiorec.name=FM раЎОП -container.radiobox=FM переЎатчОк -container.radiorec=FM раЎОП -tile.muffler.name=ГлушОтель -tile.red_pylon.name=Малый электрОческОй стПлб -tile.red_pylon_medium_steel.name=СреЎМОй стальМПй электрОческОй стПлб -tile.red_pylon_medium_steel_transformer.name=СреЎМОй стальМПй электрОческОй стПлб с траМсфПрЌатПрПЌ -tile.red_pylon_medium_wood.name=СреЎМОй ЎеревяММый электрОческОй стПлб -tile.red_pylon_medium_wood_transformer.name=СреЎМОй ЎеревяММый электрОческОй стПлб с траМсфПрЌатПрПЌ -item.wiring_red_copper.name=МПтПк прПвПЎа - -tile.rail_highspeed.name=ВысПкПскПрПстМые рельсы -tile.rail_booster.name=УскПряющОе высПкПскПрПстМые рельсы -item.cart.crate.name=ВагПМетка с ящОкПЌ -item.cart.destroyer.name=ВагПМетка с уМОчтПжОтелеЌ ЌусПра -item.cart.empty.name=СтальМая вагПМетка -tile.rail_narrow.name=УзкПкПлейМые вагПМетПчМые рельсы -tile.rail_wood.name=ДеревяММые рельсы -container.trainTram=ТраЌвай с плПскПй платфПрЌПй -item.train.cargo_tram.name=ТраЌвай с плПскПй платфПрЌПй - -tile.rail_large_buffer.name=СтаМЎартМый буферМый упПрМый рельс (5ÐŒ) -tile.rail_large_curve.name=СтаМЎартМая крОвая кПлея (5ÐŒ) -tile.rail_large_curve_7.name=СтаМЎартМая крОвая кПлея (7ÐŒ) -tile.rail_large_curve_9.name=СтаМЎартМая крОвая рельса (9ÐŒ) -tile.rail_large_ramp.name=СтаМЎартМая раЌпа (5ÐŒ) -tile.rail_large_straight.name=СтаМЎартМая кПлея (5ÐŒ) -tile.rail_large_straight_short.name=СтаМЎартМая кПлея (1ÐŒ) -tile.rail_large_switch.name=Переключатель стаМЎартМПй кПлеО (15ÐŒ, левый) -tile.rail_large_switch_flipped.name=Переключатель стаМЎартМПй кПлеО (15ÐŒ, правый) - -tile.factory_titanium_hull.name=КПрпус базПвПй фабрОкО -tile.factory_titanium_furnace.name=Люк ЎПступа базПвПй фабрОкО -tile.factory_titanium_conductor.name=ППрт электрОчества базПвПй фабрОкО -tile.factory_titanium_core.name=ЯЎрП базПвПй фабрОкО -item.factory_core_titanium.name=ЭМергетОческОй кластер базПвПй фабрОкО -container.factoryTitanium=БазПвая фабрОка -tile.factory_advanced_hull.name=КПрпус усПвершеМствПваММПй фабрОкО -tile.factory_advanced_furnace.name=Люк ЎПступа усПвершеМствПваММПй фабрОкО -tile.factory_advanced_conductor.name=ППрт электрОчества усПвершеМствПваММПй фабрОкО -tile.factory_advanced_core.name=ЯЎрП усПвершеМствПваММПй фабрОкО -item.factory_core_advanced.name=ЭМергетОческОй кластер усПвершеМствПваММПй фабрОкО -container.factoryAdvanced=УсПвершеМствПваММая фабрОка - -tile.reactor_element.name=РеактПрМая каЌера -tile.reactor_control.name=РегулОрующОе стержМО -tile.reactor_hatch.name=Люк ЎПступа реактПра -tile.reactor_ejector.name=ВыталкОватель ПтхПЎПв реактПра -tile.reactor_inserter.name=АвтПЌатОческОй заправщОк реактПра -tile.reactor_conductor.name=БПйлер реактПра -tile.reactor_computer.name=КПМтрПллер реактПра -container.reactorLarge=БПльшПй яЎерМый реактПр -tile.rbmk_absorber.name=БПрМый пПглПтОтель МейтрПМПв РБМК -tile.rbmk_blank.name=СтруктурМая кПлПММа РБМК -tile.rbmk_boiler.name=ПарПвПй каМал РБМК -tile.rbmk_loader.name=ПарПвПй прПвПЎМОк РБМК -tile.rbmk_loader.desc=ППзвПляет РБМК ОЌеть вМОзу сПеЎОМеМОя Ўля вПЎы О пара$ППЌестОте ПЎМу вПЎМую трубу пПЎ кПлПММПй РБМК, затеЌ прПвПЎМОк,$пПтПЌ пПЎключОте парПпрПвПЎ к прПвПЎМОку. -tile.rbmk_control.name=РегулОрующОе стержМО РБМК -tile.rbmk_control_auto.name=АвтПЌатОческОе регулОрующОе стержМО РБМК -tile.rbmk_moderator.name=ГрафОтПвый заЌеЎлОтель РБМК -tile.rbmk_reflector.name=КарбОЎ-вПльфраЌПвый Птражатель МейтрПМПв РБМК -tile.rbmk_outgasser.name=СтержеМь ПблучеМОя РБМК -tile.rbmk_rod.name=ТПплОвМые стержМО РБМК -tile.rbmk_rod_reasim.name=ТПплОвМые стержМО РБМК (РеаСОЌ) -tile.rbmk_console.name=КПМсПль РБМК -tile.rbmk_crane_console.name=КПМсПль краМа РБМК -tile.rbmk_control_mod.name=ЗаЌеЎляющОе регулОрующОе стержМО РБМК -tile.rbmk_rod_mod.name=ЗаЌеЎляющОе тПплОвМые стержМО РБМК -tile.rbmk_rod_reasim_mod.name=ЗаЌеЎляющОе тПплОвМые стержМО РБМК (РеаСОЌ) -tile.rbmk_steam_inlet.name=ППрт ввПЎа вПЎы РБМК РеаСОЌ -tile.rbmk_steam_inlet.desc=ППЎает вПЎу в кПлПММы RBMK, еслО включеМы ReaSim бПйлеры$ППЎключается к кПлПММаЌ RBMK сбПку -tile.rbmk_steam_outlet.name=ППрт вывПЎа пара РБМК РеаСОЌ -tile.rbmk_steam_outlet.desc=Извлекает перегретый пар Оз кПлПММ РБМК, еслО включеМы ReaSim бПйлеры$ППЎключается к кПлПММаЌ RBMK сбПку -tile.deco_rbmk.name=ДекП-блПкО РБМК -tile.deco_rbmk_smooth.name=ГлаЎкОе ЎекП-блПкО РБМК -container.rbmkBoiler=ПарПвПй каМал РБМК -container.rbmkControl=РегулОрующОе стержМО РБМК -container.rbmkControlAuto=АвтПЌатОческОе регулОрующОе стержМО РБМК -container.rbmkOutgasser=СтержеМь ПблучеМОя РБМК -container.rbmkRod=ТПплОвМые стержМО РБМК -container.rbmkReaSim=ТПплОвМые стержМО РБМК (РеаСОЌ) -container.rbmkStorage=КПлПММа-храМОлОще РБМК -container.rbmkHeater=ЖОЎкПстМый Магреватель РБМК -tile.rbmk_storage.name=КПлПММа-храМОлОще РБМК -tile.rbmk_cooler.name=ОхлаЎОтель РБМК -tile.rbmk_heater.name=ЖОЎкПстМый Магреватель РБМК -tile.rbmk_heatex.name=ТеплППбЌеММОк РБМК -tile.block_graphite_drilled.name=ПрПсверлеММый графОт -tile.block_graphite_fuel.name=ТПплОвП пПлеММОцы -tile.block_graphite_plutonium.name=Куча тПплОва (ПерерабПтаММПе) -tile.block_graphite_rod.name=КПМтрПльМый стержеМь пПлеММОцы -tile.block_graphite_source.name=ИстПчМОк МейтрПМПв пПлеММОцы -tile.block_graphite_detector.name=ДетектПр МейтрПМПв пПлеММОцы -tile.block_graphite_lithium.name=ЛОтОевПе тПплОвП пПлеММОцы -tile.block_graphite_tritium.name=ЛОтОевПе тПплОвП пПлеММОцы (ПерерабПтаММПе) -tile.machine_tower_large.name=ГраЎОрМя -tile.machine_tower_small.name=ВспПЌПгательМая граЎОрМя - -tile.fusion_conductor.name=СверхпрПвПЎящОй ЌагМОт -tile.fusion_conductor_welded.name=СверхпрПвПЎящОй ЌагМОт (СвареММый) -tile.fusion_center.name=ЊеМтральМый элеЌеМт ЌагМОта -tile.fusion_motor.name=ЭлеЌеМт ЌагМОтМПгП ЌПтПра -tile.fusion_heater.name=КПЌпПМеМт Магревателя плазЌы -tile.fusion_hatch.name=Люк ЎПступа терЌПяЎерМПгП реактПра -tile.fusion_core.name=КПМтрПллер терЌПяЎерМПгП реактПра -tile.plasma.name=ПлазЌа -container.fusionMultiblock=БПльшПй терЌПяЎерМый реактПр - -tile.watz_element.name=КаЌера реакцОО Ватцза -tile.watz_control.name=УпрПчМёММые регулОрующОе стержМО -tile.watz_cooler.name=СуперПхлаЎОтель реактПра Ватцза -tile.watz_end.name=СтабОлОзатПр реактПра Ватцза -tile.watz_end_bolted.name=СтабОлОзатПр реактПра Ватцза (ЗаклепаММый) -tile.watz_hatch.name=Люк ЎПступа к реактПру Ватцза -tile.watz_conductor.name=ППрт электрОчества Ватцза -tile.watz_core.name=КПМтрПллер реактПра Ватцза -container.watzPowerplant=РеактПр Ватцза - -tile.fwatz_conductor.name=4000K суперпрПвПЎящОй ЌагМОт -tile.fwatz_cooler.name=СтеМка регеМератОвМПй цОстерМы хлаЎагеМта -tile.fwatz_tank.name=ЭлеЌеМт регеМератОвМПй цОстерМы хлаЎагеМта -tile.fwatz_scaffold.name=СтруктурМая пПЎЎержка реактПра Ватцз-устаМПвкО -tile.fwatz_hatch.name=Люк ЎПступа к реактПру Ватцз-устаМПвкО -tile.fwatz_computer.name=МатрОца вычОслеМОя реактПра Ватцз-устаМПвкО -tile.fwatz_core.name=КПМтрПллер реактПра Ватцз-устаМПвкО -tile.fwatz_plasma.name=ДестабОлОзОрПваММая аМтОшрабОЎОуЌМая плазЌа -container.fusionaryWatzPlant=РеактПр Ватцз-устаМПвкО - -tile.machine_rtg_grey.name=РИТЭГ-геМератПр -container.rtg=РИТЭГ-геМератПр -tile.machine_radiolysis.name=РаЎОПОзПтПпМый терЌПэлектрОческОй геМератПр О каЌера раЎОПлОза -container.radiolysis=РИТЭГ О КаЌера РаЎОПлОза -tile.machine_powerrtg.name=ПТ-ОзПтПпМая ячейка -tile.machine_rtg_red.name=ЀульЌОМацОПММый геМератПр -tile.machine_rtg_orange.name=СОльМый RT геМератПр -tile.machine_rtg_yellow.name=АвстралОевый супертПплОвМый геМератПр -tile.machine_rtg_green.name=ВертОцОевый геМератПр бПгатства -tile.machine_rtg_cyan.name=ГеМератПр КрабОЎОевПгП распаЎа (WIP) -tile.machine_rtg_blue.name=КПМвекцОПММый геМератПр -tile.machine_rtg_purple.name=ГеМератПр аММОгОляцОО аМтОЌатерОО - -tile.machine_waste_drum.name=БПчка с ПтрабПтаММыЌ тПплОвПЌ -container.wasteDrum=БПчка с ПтрабПтаММыЌ тПплОвПЌ -container.storageDrum=БПчка Ўля захПрПМеМОя яЎерМых ПтхПЎПв -tile.machine_storage_drum.name=БПчка Ўля захПрПМеМОя яЎерМых ПтхПЎПв - -tile.machine_spp_bottom.name=ГеМератПр пПтеМцОала ZPE (МОз) -tile.machine_spp_top.name=ГеМератПр пПтеМцОала ZPE (верх) - -tile.ams_limiter.name=СтабОлОзатПр АМС [ДекПр] -container.amsLimiter=СтабОлОзатПр АМС [ДекПр] -tile.ams_emitter.name=Излучатель АМС [ДекПр] -container.amsEmitter=Излучатель АМС [ДекПр] -tile.ams_base.name=ОсМПваМОе АМС [ДекПр] -container.amsBase=ОсМПваМОе АМС [ДекПр] - -tile.dfc_emitter.name=Излучатель РТС -container.dfcEmitter=Излучатель РТС -tile.dfc_receiver.name=ПрОёЌМОк РТС -container.dfcReceiver=ПрОёЌМОк РТС -tile.dfc_injector.name=ТПплОвМый ОМжектПр РТС -container.dfcInjector=ТПплОвМый ОМжектПр РТС -tile.dfc_stabilizer.name=СтабОлОзатПр РТС -container.dfcStabilizer=СтабОлОзатПр РТС -tile.dfc_core.name=ЯЎрП реактПра тёЌМПгП сОМтеза -container.dfcCore=РеактПр тёЌМПгП сОМтеза - -item.template_folder.name=Папка шаблПМПв ЌашОМ -item.template_folder.desc=КаблПМы ЌашОМ: БуЌага + КрасОтель$ИМЎетОфОкатПр: ЖелезМая пластОМа + КрасОтель$КтаЌп Ўля пресса: ПлПскОй штаЌп$Трек сОреМы: ИзПлятПр + СтальМая пластОМа -item.journal_bj.name=ПрПпОтаММый вОскО блПкМПт -item.journal_pip.name=ДМевМОк выжОвальщОка -item.journal_silver.name=ЗапОскО кПМтрактМОка -item.fluid_identifier.name=ИЎеМтОфОкатПр жОЎкПстО -item.fluid_identifier.info=УМОверсальМый ОЎеМтОфОкатПр жОЎкПстО: -item.fluid_identifier.usage0=Правая кМПпка ЌышО пП трубаЌ, чтПбы ПбПзМачОть Ох Ўля этПй жОЎкПстО. -item.fluid_identifier.usage1=SHIFT+ПКМ пП трубаЌ чтПбы ПбПзМачОть блОжайшОе трубы -item.fluid_identifier.usage2=в раЎОусе 64 блПкПв. -item.fluid_identifier_multi.name=МультО-жОЎкПстМый ОЎеМтОфОкатПр -item.fluid_identifier_multi.info=ЖОЎкПстМый ОЎеМтОфОкатПр Ўля: -item.fluid_identifier_multi.info2=ВтПрПй тОп: -item.assembly_template.name=КаблПМ сбПрПчМПй ЌашОМы: -item.chemistry_template.name=КаблПМ хОЌОческПй ЌашОМы: -item.crucible_template.name=КаблПМ плавОльМО: -item.siren_track.name=Трек сОреМы -item.mold_base.name=Пустая лОтейМая фПрЌа -item.mold.name=ЛОтейМая фПрЌа - -item.bobmazon_materials.name=БПбЌазПМ: МатерОалы -item.bobmazon_machines.name=БПбЌазПМ: БлПкО О ЌашОМы -item.bobmazon_weapons.name=БПбЌазПМ: ОружОе О взрывчатка -item.bobmazon_tools.name=БПбЌазПМ: ПреЎЌеты -item.bobmazon_hidden.name=Скрытый каталПг - -item.fuse.name=ПреЎПхраМОтель +item.ammo_luna.name=ЛуММый сМайперскОй сабПтажМый сМаряЎ +item.ammo_luna_explosive.name=ЛуММый сМайперскОй взрывМПй сМаряЎ +item.ammo_luna_incendiary.name=ЛуММый сМайперскОй зажОгательМый сМаряЎ +item.ammo_mirv.name=МИРВ-ЌОМОзаряЎ +item.ammo_mirv_high.name=МИРВ-ЌОМОзаряЎ (ВысПкПЌПщМый) +item.ammo_mirv_low.name=МИРВ-ЌОМОзаряЎ (МалПЌПщМый) +item.ammo_mirv_safe.name=МИРВ-ЌОМОзаряЎ (БезПпасМый) +item.ammo_mirv_special.name=МИЛВ-ЌОМОзаряЎ +item.ammo_nuke.name=ЯЎерМый ЌОМОзаряЎ +item.ammo_nuke_barrel.name=МОМО-бПчка с яЎерМыЌО ПтхПЎаЌО +item.ammo_nuke_high.name=ЯЎерМый ЌОМОзаряЎ (ВысПкПЌПщМый) +item.ammo_nuke_low.name=ЯЎерМый ЌОМОзаряЎ (МалПЌПщМый) +item.ammo_nuke_pumpkin.name=ТыквеММая бПЌба +item.ammo_nuke_safe.name=ЯЎерМый ЌОМОзаряЎ (БезПпасМый) +item.ammo_nuke_tots.name=ЯЎерМый ЌОМОзаряЎ ("Карапуз") +item.ammo_rocket.name=84-ЌЌ ракета +item.ammo_rocket_canister.name=84-ЌЌ ракета (Картечь) +item.ammo_rocket_digamma.name=null +item.ammo_rocket_emp.name=84-ЌЌ ракета (ИЌпульсМая) +item.ammo_rocket_glare.name=84-ЌЌ ракета (КрасМПе ЗаревП) +item.ammo_rocket_he.name=84-ЌЌ ракета (ЀугасМая) +item.ammo_rocket_incendiary.name=84-ЌЌ ракета (ЗажОгательМая) +item.ammo_rocket_nuclear.name=84-ЌЌ ракета (ПрОвет) +item.ammo_rocket_phosphorus.name=84-ЌЌ ракета (БЀ) +item.ammo_rocket_rpc.name=84-ЌЌ Ракета-БеМзПпОла +item.ammo_rocket_shrapnel.name=84-ЌЌ ракета (ОскПлПчМая) +item.ammo_rocket_sleek.name=84-ЌЌ ракета (IF-R&D) +item.ammo_rocket_toxic.name=84-ЌЌ ракета (ХОЌОческая) +item.ammo_shell.name=240ЌЌ СМаряЎ +item.ammo_shell_apfsds_du.name=240ЌЌ APFSTS-DU +item.ammo_shell_apfsds_t.name=240ЌЌ APFSTS-T +item.ammo_shell_explosive.name=240ЌЌ ЀугасМый сМаряЎ +item.ammo_shell_w9.name=240ЌЌ ЯЎерМый сМаряЎ W9 +item.ammo_secret.bmg50_equestrian.name=.50 BMG Demolisher +item.ammo_secret.folly_nuke.name=Silver Bullet, Nuclear +item.ammo_secret.folly_sm.name=Silver Bullet +item.ammo_secret.g12_equestrian.name=12 Gauge Railway Spike Shot +item.ammo_secret.m44_equestrian.name=.44 Magnum Head-Exploder +item.ammo_secret.p35_800.name=.35-800 V9 +item.ammo_standard.b75.name=.75 Bolt +item.ammo_standard.b75_exp.name=.75 Bolt (Explosive) +item.ammo_standard.b75_inc.name=.75 Bolt (Incendiary) +item.ammo_standard.bmg50_ap.name=.50 BMG Round (Armor Piercing) +item.ammo_standard.bmg50_du.name=.50 BMG Round (Depleted Uranium) +item.ammo_standard.bmg50_fmj.name=.50 BMG Round (Full Metal Jacket) +item.ammo_standard.bmg50_jhp.name=.50 BMG Round (Jacketed Hollow Point) +item.ammo_standard.bmg50_sp.name=.50 BMG Round (Soft Point) +item.ammo_standard.capacitor.name=Capacitor +item.ammo_standard.capacitor_ir.name=Capacitor (Low Wavelength) +item.ammo_standard.capacitor_overcharge.name=Capacitor (Overcharge) +item.ammo_standard.coil_ferrouranium.name=Coilgun Ferrouranium Ball +item.ammo_standard.coil_tungsten.name=Coilgun Tungsten Ball +item.ammo_standard.flame_balefire.name=Flamer Fuel, Balefire +item.ammo_standard.flame_diesel.name=Flamer Fuel, Diesel +item.ammo_standard.flame_gas.name=Flamer Fuel, Gas +item.ammo_standard.flame_napalm.name=Flamer Fuel, Napalm +item.ammo_standard.g10.name=10 Gauge Buckshot +item.ammo_standard.g10_du.name=10 Gauge Uranium Buckshot +item.ammo_standard.g10_shrapnel.name=10 Gauge Shrapnel Buckshot +item.ammo_standard.g10_slug.name=10 Gauge Slug +item.ammo_standard.g12.name=12 Gauge Buckshot +item.ammo_standard.g12_anthrax.name=12 Gauge Anthrax Shell +item.ammo_standard.g12_bp.name=12 Gauge Black Powder Buckshot +item.ammo_standard.g12_bp_magnum.name=12 Gauge Black Powder Magnum Shell +item.ammo_standard.g12_bp_slug.name=12 Gauge Black Powder Slug +item.ammo_standard.g12_explosive.name=12 Gauge Explosive Shell +item.ammo_standard.g12_flechette.name=12 Gauge Flechette Shell +item.ammo_standard.g12_magnum.name=12 Gauge Magnum Shell +item.ammo_standard.g12_phosphorus.name=12 Gauge Phosphorus Shell +item.ammo_standard.g12_slug.name=12 Gauge Slug +item.ammo_standard.g26_flare.name=26mm Signal Flare +item.ammo_standard.g26_flare_supply.name=26mm Signal Flare (Supply Airdrop) +item.ammo_standard.g26_flare_weapon.name=26mm Signal Flare (Weapon Airdrop) +item.ammo_standard.g40_demo.name=40mm Grenade, Demolition +item.ammo_standard.g40_he.name=40mm Grenade, High-Explosive +item.ammo_standard.g40_heat.name=40mm Grenade, Shaped Charge +item.ammo_standard.g40_inc.name=40mm Grenade, Incendiary +item.ammo_standard.g40_phosphorus.name=40mm Grenade, White Phosphorus +item.ammo_standard.m357_ap.name=.357 Magnum Round (Armor Piercing) +item.ammo_standard.m357_bp.name=.357 Magnum Round (Black Powder) +item.ammo_standard.m357_express.name=.357 Magnum Round (FMJ Express) +item.ammo_standard.m357_fmj.name=.357 Magnum Round (Full Metal Jacket) +item.ammo_standard.m357_jhp.name=.357 Magnum Round (Jacketed Hollow Point) +item.ammo_standard.m357_sp.name=.357 Magnum Round (Soft Point) +item.ammo_standard.m44_ap.name=.44 Magnum Round (Armor Piercing) +item.ammo_standard.m44_bp.name=.44 Magnum Round (Black Powder) +item.ammo_standard.m44_express.name=.44 Magnum Round (FMJ Express) +item.ammo_standard.m44_fmj.name=.44 Magnum Round (Full Metal Jacket) +item.ammo_standard.m44_jhp.name=.44 Magnum Round (Jacketed Hollow Point) +item.ammo_standard.m44_sp.name=.44 Magnum Round (Soft Point) +item.ammo_standard.nuke_demo.name=Mini Nuke, Demolition +item.ammo_standard.nuke_high.name=Mini Nuke, High Yield +item.ammo_standard.nuke_hive.name=Rocket Hive +item.ammo_standard.nuke_standard.name=Mini Nuke +item.ammo_standard.nuke_tots.name=Mini Nuke, Tiny Tots +item.ammo_standard.p22_ap.name=.22 LR Round (Armor Piercing) +item.ammo_standard.p22_fmj.name=.22 LR Round (Full Metal Jacket) +item.ammo_standard.p22_jhp.name=.22 LR Round (Jacketed Hollow Point) +item.ammo_standard.p22_sp.name=.22 LR Round (Soft Point) +item.ammo_standard.p9_ap.name=9mm Round (Armor Piercing) +item.ammo_standard.p9_fmj.name=9mm Round (Full Metal Jacket) +item.ammo_standard.p9_jhp.name=9mm Round (Jacketed Hollow Point) +item.ammo_standard.p9_sp.name=9mm Round (Soft Point) +item.ammo_standard.r556_ap.name=5.56mm Round (Armor Piercing) +item.ammo_standard.r556_fmj.name=5.56mm Round (Full Metal Jacket) +item.ammo_standard.r556_jhp.name=5.56mm Round (Jacketed Hollow Point) +item.ammo_standard.r556_sp.name=5.56mm Round (Soft Point) +item.ammo_standard.r762_ap.name=7.62mm Round (Armor Piercing) +item.ammo_standard.r762_du.name=7.62mm Round (Depleted Uranium) +item.ammo_standard.r762_fmj.name=7.62mm Round (Full Metal Jacket) +item.ammo_standard.r762_jhp.name=7.62mm Round (Jacketed Hollow Point) +item.ammo_standard.r762_sp.name=7.62mm Round (Soft Point) +item.ammo_standard.rocket_demo.name=Rocket, Demolition +item.ammo_standard.rocket_he.name=Rocket, High-Explosive +item.ammo_standard.rocket_heat.name=Rocket, Shaped Charge +item.ammo_standard.rocket_inc.name=Rocket, Incendiary +item.ammo_standard.rocket_phosphorus.name=Rocket, White Phosphorus +item.ammo_standard.stone.name=Ball and Powder +item.ammo_standard.stone_ap.name=Flint and Powder +item.ammo_standard.stone_iron.name=Iron Ball and Powder +item.ammo_standard.stone_shot.name=Shot and Powder +item.ammo_standard.tau_uranium.name=Depleted Uranium-235 Box +item.ammo_stinger_rocket.name=Ракета-СтОМгер +item.ammo_stinger_rocket_he.name=Ракета-СтОМгер (ЀугасМая) +item.ammo_stinger_rocket_incendiary.name=Ракета-СтОМгер (ЗажОгательМая) +item.ammo_stinger_rocket_nuclear.name=Ракета-СтОМгер (ПрОвет) +item.ammo_stinger_rocket_bones.name=Ракета-СтОМгер (ППОск ЌПбПв) +item.ams_catalyst_aluminium.name=АлюЌОМОевый реакцОПММый каталОзатПр +item.ams_catalyst_beryllium.name=БерОллОевый реакцОПММый каталОзатПр +item.ams_catalyst_blank.name=ПустПй реакцОПММый каталОзатПр +item.ams_catalyst_caesium.name=ЊезОевый реакцОПММый каталОзатПр +item.ams_catalyst_cerium.name=ЊерОевый реакцОПММый каталОзатПр +item.ams_catalyst_cobalt.name=КПбальтПвый реакцОПММый каталОзатПр +item.ams_catalyst_copper.name=МеЎМый реакцОПММый каталОзатПр +item.ams_catalyst_dineutronium.name=ДОМейтрПМОевый реакцОПММый каталОзатПр +item.ams_catalyst_euphemium.name=ЭвфеЌОевый реакцОПММый каталОзатПр +item.ams_catalyst_iron.name=ЖелезМый реакцОПММый каталОзатПр +item.ams_catalyst_lithium.name=ЛОтОевый реакцОПММый каталОзатПр +item.ams_catalyst_niobium.name=НОПбОевый реакцОПММый каталОзатПр +item.ams_catalyst_schrabidium.name=КрабОЎОевый реакцОПММый каталОзатПр +item.ams_catalyst_strontium.name=СтрПМцОевый реакцОПММый каталОзатПр +item.ams_catalyst_thorium.name=ТПрОевый реакцОПММый каталОзатПр +item.ams_catalyst_tungsten.name=ВПльфраЌПвый реакцОПММый каталОзатПр +item.ams_core_eyeofharmony.name=ОкП ГарЌПМОО (АМС/РТС ЯЎрП) +item.ams_core_sing.name=РезПМОрующая сОМгулярМПсть (АМС/РТС ЯЎрП) +item.ams_core_thingy.name=КтукПвОМа (АМС/РТС ЯЎрП) +item.ams_core_wormhole.name=КрПшечМая червПтПчОМа (АМС/РТС ЯЎрП) +item.ams_focus_blank.name=ПустПй стабОлОзОрующОй фПкус +item.ams_focus_booster.name=УсОлОвающОй стабОлОзОрующОй фПкус +item.ams_focus_booster.desc=БПлее слабПе сЎержОвающее пПле О закачка эМергОО в яЎрП:$БПльше вырабПткО тепла, ЎПпПлМОтельМая эМергОя. +item.ams_focus_limiter.name=ОграМОчОтельМый стабОлОзОрующОй фПкус +item.ams_focus_limiter.desc=МаксОЌальМая прПОзвПЎОтельМПсть Ўля сЎержОвающегП пПля:$СтаМЎартМПе ПхлажЎеМОе, без бПМуса за эМергОю. +item.ams_lens.name=ЛОМза СтабОлОзатПра +item.ams_muzzle.name=ЛучеОспускательМПе ЎулП +item.ams_muzzle.desc=...ПМ Оспускает штукПвОМу с эМергетОческОЌ лучПЌ. +item.analysis_tool.name=АМалОзатПр +item.analyzer.name=АМалОзатПр +item.anchor_remote.name=УстрПйствП вызПва +item.apple_euphemium.name=ЭвфеЌОевПе ЯблПкП +item.apple_lead.name=СвОМцПвПе яблПкП +item.apple_schrabidium.name=КрабОЎОевПе ЯблПкП item.arc_electrode.name=ГрафОтПвый электрПЎ item.arc_electrode.desh.name=Деш-электрПЎ item.arc_electrode.graphite.name=ГрафОтПвый электрПЎ @@ -2796,656 +2061,95 @@ item.arc_electrode_burnt.graphite.name=РасплавлеММый графОтП item.arc_electrode_burnt.lanthanium.name=РасплавлеММый лаМтаМПвый электрПЎ item.arc_electrode_burnt.saturnite.name=РасплавлеММый сатурМОтПвый электрПЎ item.arc_electrode_desh.name=ЭлектрПЎ Оз Ўеш -item.crt_display.name=ЭлектрПММП-лучевая трубка - -tile.test_nuke.name=ТестПвая бПЌба - -item.ingot_th232.name=СлОтПк тПрОя-232 -item.ingot_uranium.name=УраМПвый слОтПк -item.ingot_u233.name=СлОтПк ураМа-233 -item.ingot_u235.name=СлОтПк ураМа-235 -item.ingot_u238.name=СлОтПк ураМа-238 -item.ingot_ra226.name=СлОтПк раЎОя-226 -item.ingot_u238m2.name=ППлустабОльМый слОтПк ураМа-238-2 -item.ingot_plutonium.name=ПлутПМОевый слОтПк -item.ingot_pu_mix.name=СлОтПк плутПМОя реактПрМПгП качества -item.ingot_pu238.name=СлОтПк плутПМОя-238 -item.ingot_pu239.name=СлОтПк плутПМОя-239 -item.ingot_pu240.name=СлОтПк плутПМОя-240 -item.ingot_pu241.name=СлОтПк плутПМОя-241 -item.ingot_au198.name=СлОтПк зПлПта-198 -item.ingot_co60.name=СлОтПк кПбальта-60 -item.ingot_technetium.name=СлОтПк техМецОя-99 -item.ingot_neptunium_fuel.name=СлОтПк МептуМОевПгП тПплОва -item.ingot_am_mix.name=СлОтПк аЌерОцОя реактПрМПгП качества -item.ingot_am241.name=СлОтПк аЌерОцОя-241 -item.ingot_am242.name=СлОтПк аЌерОцОя-242 -item.ingot_americium_fuel.name=СлОтПк аЌерОцОевПгП тПплОва -item.ingot_titanium.name=ТОтаМПвый слОтПк -item.ingot_cobalt.name=КПбальтПвый слОтПк -item.ingot_tantalium.name=ТаМталПвый слОтПк -item.ingot_tantalium.desc='ТаМталуЌ' -item.ingot_tantalium.desc.P11=АКА ТаМталОй. -item.ingot_meteorite.name=МетеПрОтПвый слОтПк -item.ingot_osmiridium.name=ОсЌОрОЎОевый слОтПк -item.ingot_meteorite_forged.name=ВыкПваММый ЌетеПрОтПвый слОтПк -item.ingot_bakelite.name=БакелОт -item.sulfur.name=Сера -item.ingot_sr90.name=СлОтПк стрПМцОя-90 -item.ingot_pb209.name=СлОтПк свОМца-209 -item.ingot_gh336.name=СлОтПк гОПрсОя-336 -item.ingot_gh336.desc=КПллега СОбПргОуЌа. - -item.niter.name=СелОтра -item.nitra.name=НОтра -item.nitra_small.name=Кучка МОтры -item.ingot_copper.name=СлОтПк прПЌышлеММПй ЌеЎО -item.ingot_red_copper.name=СлОтПк красМПй ЌеЎО -item.ingot_tungsten.name=ВПльфраЌПвый слОтПк -item.ingot_aluminium.name=АлюЌОМОевый слОтПк -item.fluorite.name=ЀлюПрОт -item.ingot_steel.name=СтальМПй слОтПк -item.ingot_steel_dusted.name=ЗапылёММПй стальМПй слОтПк -item.ingot_chainsteel.name=Тяжёлая цепМая сталь -item.ingot_tcalloy.name=СлОтПк техМецОевПй сталО -item.plate_steel.name=СтальМая пластОМа -item.plate_dura_steel.name=ПластОМа высПкПскПрПстМПй сталО -item.ingot_beryllium.name=БерОллевый слОтПк -item.plate_schrabidium.name=КрабОЎОевая пластОМа -item.ingot_schraranium.name=КрараМОевый слОтПк -item.ingot_schraranium.desc=Делается Оз ураМа в шрабОЎОевПЌ траМсЌутатПре -item.ingot_semtex.name=СеЌтекс -item.ingot_c4.name=БрусПк C-4 -item.ingot_schrabidate.name=СлОтПк шрабОЎата железа -item.powder_schrabidate.name=ППрПшПк шрабОЎата железа -item.ingot_schrabidium.name=КрабОЎОевый слОтПк -item.nugget_schrabidium.name=КрабОЎОевый саЌПрПЎПк -item.plate_copper.name=МеЎМая пластОМа -item.board_copper.name=МеЎМая паМель -item.ingot_bscco.name=СлОтПк BSCCO -item.ingot_advanced_alloy.name=СлОтПк прПЎвОМутПгП сплава -item.plate_advanced_alloy.name=ПластОМа прПЎвОМутПгП сплава -item.wire_advanced_alloy.name=СверхпрПвПЎМОк -item.coil_advanced_alloy.name=СверхпрПвПЎящая катушка -item.coil_advanced_torus.name=СверхпрПвПЎящая кПльцевая катушка -item.coil_gold.name=ЗПлПтая катушка -item.coil_gold_torus.name=ЗПлПтая кПльцевая катушка -item.lithium.name=Куб лОтОя -item.ingot_phosphorus.name=БрусПк белПгП фПсфПра -item.ingot_magnetized_tungsten.name=НаЌагМОчеММый слОтПк вПльфраЌа -item.ingot_mud.name=КОрпОч Оз твёрЎых ПтхПЎПв -item.ingot_combine_steel.name=СлОтПк сталО АльяМса -item.ingot_combine_steel.desc=*вставьте рефереМс Ма ГражЎаМскую ОбПрПМу* -item.ingot_combine_steel.desc.11="Я ОЌею в вОЎу, этП глагПл Ўля грПЌкПгП крОка.$ИМПплаМетяМе - этП Ме глагПлы. ЭтП существОтельМые!"$"На саЌПЌ Ўеле, я ЎуЌаю, чтП этП также МазваМОе $какПгП-тП сельскПхПзяйствеММПгП ПбПруЎПваМОя, такПгП как $ЌПлПтОлка за ЎПллар ОлО чтП-тП в этПЌ рПЎе."$"ЭтП еще хуже. Теперь у Мас есть слПвП,$кПтПрПе ЌПжет ПзМачать "сЌешОвать вещО вЌесте",$часть сельскПхПзяйствеММПгП ПбПруЎПваМОя, О Ўавайте пПсЌПтрОЌ...$а Ўа, этП также ЌПжет ПзМачать "саЌая прПЎвОМутая $фПрЌа жОзМО в ОзвестМПй вселеММПй".."$"И?"$"'И?' Да лаЎМП, чувак, ПМО же ИНОПЛАНЕТЯНЕ!" -item.plate_combine_steel.name=ПластОМа сталО АльяМса -item.ingot_zirconium.name=ЊОркПМОевый куб -item.ingot_boron.name=БПрМый слОтПк -item.ingot_graphite.name=ГрафОтПвый слОтПк -item.ingot_bismuth.name=СлОтПк вОсЌута -item.ingot_bismuth_bronze.name=СлОтПк вОсЌутПвПй брПМзы -item.cube_power.name=Куб электрПМОя -item.ingot_smore.name=СлОтПк с'ЌПра -item.ingot_niobium.name=НОПбОевый слОтПк -item.ingot_firebrick.name=КаЌПтМый кОрпОч -item.ingot_calcium.name=КальцОевый слОтПк -item.plate_cast.name=ЛОтая пластОМа Оз %s -item.heavy_component.name=Тяжёлый кПЌпПМеМт Оз %s -item.plate_welded.name=СвареММая пластОМа Оз %s -item.ingot_pvc.name=ПВХ -item.ingot_pet.name=МеталлОзОрПваММый алюЌОМОеЌ брусПк ПЭТ -item.ingot_pc.name=ТверЎый пластОкПвый брусПк -item.ingot_cadmium.name=КаЎЌОевый слОтПк -item.ingot_cdalloy.name=СлОтПк каЎЌОевПй сталО -item.powder_cadmium.name=ППрПшПк каЎЌОя - -item.plate_armor_lunar.name=ЛуММая ПбшОвка -item.plate_armor_titanium.name=ТОтаМПвая ПбшОвка брПМО -item.plate_armor_hev.name=РеактОвМая ПбшОвка брПМО -item.plate_armor_ajr.name=КПваМая железМая ПбшОвка брПМО -item.plate_armor_fau.name=ОбшОвка брПМО Ѐау -item.plate_armor_dnt.name=ОбшОвка ДНТ-брПМО -item.armor_polish.name=ППлОрПль Ўля брПМО КайМОМгАрЌПр™ item.armor_battery.name=АккуЌулятПрМый блПк Ўля сОлПвПй брПМО item.armor_battery_mk2.name=АккуЌулятПрМый блПк Ўля сОлПвПй брПМО Mk2 item.armor_battery_mk3.name=АккуЌулятПрМый блПк Ўля сОлПвПй брПМО Mk3 -item.insert_esapi.name=ESAPI пластОМы -item.insert_kevlar.name=КевларПвые пластОМы -item.insert_sapi.name=SAPI пластОМы -item.insert_steel.name=ТяжёлПстальМые пластОМы -item.insert_xsapi.name=XSAPI пластОМы -item.pads_rubber.name=РезОМПвые прПклаЎкО -item.pads_slime.name=СлайЌПвые прПклаЎкО -item.pads_static.name=СтатОкПвые прПклаЎкО -item.servo_set.name=НабПр сервПпрОвПЎПв -item.servo_set_desh.name=НабПр Ўеш-сервПпрОвПЎПв +item.armor_polish.name=ППлОрПль Ўля брПМО КайМОМгАрЌПр™ +item.asbestos_boots.name=ОгМезащОтМые бПтОМкО +item.asbestos_cloth.name=ОгМеупПрМая ткаМь +item.asbestos_helmet.name=ОгМезащОтМый шлеЌ +item.asbestos_legs.name=ОгМезащОтМые пПМПжО +item.asbestos_plate.name=ОгМезащОтМый МагруЎМОк +item.ashglasses.name=ПепельМые ПчкО +item.assembly_45.name=.45 ACP Assembly +item.assembly_556.name=СбПрка 5.56ЌЌ пулО +item.assembly_762.name=СбПрка 7.62ЌЌ патрПМа +item.assembly_actionexpress.name=СбПрка .50 AE пулО +item.assembly_calamity.name=СбПрка .50 BMG пулО +item.assembly_desh.name=СбПрка Ўеш-пулО +item.assembly_gold.name=СбПрка зПлПтПй пулО +item.assembly_iron.name=СбПрка железМПй пулО +item.assembly_lacunae.name=СбПрка 5ЌЌ пулО +item.assembly_lead.name=СбПрка стекляММПй пулО +item.assembly_luna.name=СбПрка луММПгП сМайперскПгП патрПМа +item.assembly_nightmare.name=СбПрка кПшЌарМПй пулО +item.assembly_nopip.name=СбПрка пулО МагМуЌа .44 +item.assembly_nuke.name=ОбПлПчка яЎерМПгП ЌОМОзаряЎа +item.assembly_pip.name=СбПрка заражеММПй пулО +item.assembly_schrabidium.name=СбПрка шрабОЎОевПй пулО +item.assembly_smg.name=СбПрка 9-ЌЌ пулО +item.assembly_steel.name=СбПрка свОМцПвПй пулО +item.assembly_template.name=КаблПМ сбПрПчМПй ЌашОМы: +item.assembly_uzi.name=СбПрка .22 LR пулО +item.attachment_mask.name=ПрОкрепляеЌый прПтОвПгаз +item.attachment_mask_mono.name=ПрОкрепляеЌая пПлуЌаска +item.australium_iii.name=УвелОчОтель жОзМО Марк III +item.australium_iv.name=УвелОчОтель жОзМО Марк IV +item.australium_v.name=УвелОчОтель жОзМО Марк V +item.back_tesla.name=РаМцевая катушка теслы +item.balefire_and_ham.name=ВетчОМа О жар-яйца +item.balefire_and_steel.name=Жар-ПгМОвП +item.balefire_scrambled.name=Жар-яОчМОца +item.ball_dynamite.name=ДОМаЌОт +item.ball_fireclay.name=КаЌПтМая глОМа +item.ball_resin.name=Латекс +item.ball_tatb.name=TATB +item.ball_tnt.name=ТНТ +item.ballistic_gauntlet.name=БаллОстОческая перчатка +item.ballistite.name=БаллОстОт item.bandaid.name=Пластырь Вельвет item.bathwater.name=ТПксОчМая ЌыльМая вПЎа item.bathwater_mk2.name=ТПксОчМая ЌыльМая вПЎа (ЛПшаЎОМый арПЌат) -item.horseshoe_magnet.name=МагМОт-пПЎкПва -item.industrial_magnet.name=ПрПЌышлеММый ЌагМОт -item.lodestone.name=МагМетОт -item.morning_glory.name=МПМОМ ГлПрО -item.quartz_plutonium.name=ПлутПМОческОй кварц -item.serum.name=СывПрПтка -item.spider_milk.name=Бутылка паучьегП ЌПлПка -item.scrumpy.name=Бутылка "СкраЌпО" -item.cladding_obsidian.name=ПрПклаЎка Оз ПбсОЎОаМа -item.cladding_ghiorsium.name=ПрПклаЎка Оз гОПрсОя -item.heart_booster.name=УсОлОтель серЎца -item.heart_container.name=КПМтейМер Ўля серЎца -item.heart_piece.name=ЧастОчка серЎца -item.heart_fab.name=Ѐаб-серЎце -item.back_tesla.name=РаМцевая катушка теслы -item.insert_du.name=УраМПвая пластОМа -item.insert_era.name=ВзрывППпасМая реактОвМая брПМепластОМа -item.insert_polonium.name=ППлПМОевая пластОМа -item.insert_ghiorsium.name=ГОПрсОевая пластОМа -item.insert_yharonite.name=ЯрПМОтПвая пластОМа -item.insert_doxium.name=АстПльфОй-легОрПваММая ДПксОевая пластОМа -item.wd40.name=VT-40 -item.injector_5htp.name=АвтПОМъектПр 5-гОЎрПксОтрОптПфаМа -item.injector_knife.name=АвтПОМъектПр 8 ЎюйЌПвПгП лезвОя -item.holotape_image.name=ГПлПЎОск -item.holotape_damaged.name=ППврежЎёММый гПлПЎОск - -item.wire_magnetized_tungsten.name=4000K ВысПкПтеЌпературМый прПвПЎМОк -item.coil_magnetized_tungsten.name=4000K ВысПкПтеЌпературМая сверхпрПвПЎящая катушка -item.plate_mixed.name=СЌешаММая пластОМа -item.plate_paa.name=ПластОМа сплава PaA -item.ingot_dura_steel.name=ВысПкПскПрПстМая сталь -item.ingot_polymer.name=ППлОЌер -item.ingot_rubber.name=РезОМа -item.ingot_biorubber.name=БрусПк латекса -item.ingot_polonium.name=СлОтПк пПлПМОя-210 -item.pipentm.name=Труба Оз %s -item.pipes_steel.name=СтальМые трубы -item.pipes_steel.desc=Раскрафт был ОсключеМ Оз-за уклПМеМОя Пт уплаты МалПгПв -item.drill_titanium.name=ТОтаМПвый бур -item.boltntm.name=СтержеМь Оз %s -item.bolt_spike.name=ЖелезМПЎПрПжМый гвПзЎь -item.bolt_spike.desc=Излучает угрПжающую ауру, как-тП -item.bolt_compound.name=УкреплеММый вал турбОМы -item.plate_polymer.name=ИзПлятПр -item.ingot_solinium.name=СПлОМОевый слОтПк -item.nugget_solinium.name=СПлОМОевый саЌПрПЎПк -item.photo_panel.name=ЀПтПэлектрОческая паМель -item.sat_base.name=ОсМПва спутМОка -item.thruster_nuclear.name=ЯЎерМый ракетМый ЎвОгатель LV-N -item.sat_head_mapper.name=ОптОческая каЌера с высПкОЌ кПэффОцОеМтПЌ усОлеМОя -item.sat_head_scanner.name=СкаМер M700 -item.sat_head_radar.name=РаЎар -item.sat_head_laser.name=Луч сЌертО -item.sat_head_resonator.name=ЗеМ-резПМатПр - -item.ingot_australium.name=АвстралОевый слОтПк -item.ingot_weidanium.name=ВейЎаМОевый слОтПк -item.ingot_reiium.name=РеОевый слОтПк -item.ingot_unobtainium.name=НеЎПстатОевый слОтПк -item.ingot_daffergon.name=ДаффергПМПвый слОтПк -item.ingot_verticium.name=ВертОцОевый слОтПк -item.nugget_australium.name=АвстралОевый саЌПрПЎПк -item.nugget_australium_greater.name=СаЌПрПЎПк высшегП австралОя -item.nugget_australium_lesser.name=СаЌПрПЎПк МОзшегП австралОя -item.nugget_weidanium.name=ВейЎаМОевый саЌПрПЎПк -item.nugget_reiium.name=РеОевый саЌПрПЎПк -item.nugget_unobtainium.name=НеЎПстатОевый саЌПрПЎПк -item.nugget_daffergon.name=ДаффергПМПвый саЌПрПЎПк -item.nugget_verticium.name=ВертОцОевый саЌПрПЎПк -item.nugget_zirconium.name=ОскПлПк цОркПМОя -item.nugget_niobium.name=СаЌПрПЎПк МОПбОя - -item.ingot_desh.name=СлОтПк Ўеш -item.nugget_desh.name=СаЌПрПЎПк Ўеш -item.powder_desh.name=ППрПшПк Ўеш -item.powder_desh_mix.name=СЌесь Ўеш -item.powder_desh_ready.name=ГПтПваяДеш™ сЌесь -item.powder_nitan_mix.name=НОтаМПвая сЌесь -item.powder_spark_mix.name=Спарк-сЌесь -item.powder_bismuth.name=ВОсЌутПвый пПрПшПк -item.powder_calcium.name=КальцОевый пПрПшПк -item.ingot_dineutronium.name=ДОМейтрПМОевый слОтПк -item.powder_dineutronium.name=ДОМейтрПМОевый пПрПшПк -item.nugget_dineutronium.name=ДОМетрПМОевый саЌПрПЎПк -item.ingot_starmetal.name=§9ЗвёзЎМый Ќеталл§r -item.ingot_saturnite.name=СатурМОтПвый слОтПк -item.plate_saturnite.name=СатурМОтПвая пластОМа -item.ingot_electronium.name=ЭлектрПМОевый слОтПк -item.ingot_fiberglass.name=СтеклПвПлПкМП -item.ingot_fiberglass.desc=С высПкОЌ сПЎержаМОеЌ вПлПкМа, с высПкОЌ сПЎержаМОеЌ стекла. Все, чтП МужМП ПргаМОзЌу. -item.ingot_asbestos.name=АсбестПвый лОст -item.ingot_asbestos.desc=§o"НапПлМеММый жОзМью, МеувереММПстью в себе О асбестПЌ. ЭтП прОхПЎОт вЌесте с вПзЎухПЌ."§r -item.ingot_arsenic.name=СлОтПк Ќышьяка -item.nugget_arsenic.name=СаЌПрПЎПк Ќышьяка -item.ingot_arsenic_bronze.name=СлОтПк ЌышьякПвПй брПМзы - -item.solid_fuel.name=ТверЎПе тПплОвП -item.solid_fuel_bf.name=ТверЎПе тПплОвП (Жар-плаЌя) -item.solid_fuel_presto.name=ТПплОвМПе пПлеМП -item.solid_fuel_presto_bf.name=ТПплОвМПе пПлеМП (Жар-плаЌя) -item.solid_fuel_presto_triplet.name=Сжатые тПплОвМые пПлеМа -item.solid_fuel_presto_triplet_bf.name=Сжатые тПплОвМые пПлеМа (Жар-плаЌя) -item.stick_dynamite.name=ДОМаЌОтМая шашка -item.stick_dynamite_fishing.name=ДОМаЌОтМая шашка Ўля рыбалкО -item.stick_tnt.name=Кашка ТНТ -item.stick_c4.name=Кашка C-4 -item.stick_semtex.name=Кашка сеЌтекса -item.rocket_fuel.name=ТверЎПе тПплОвП (РакетМПе) -item.coke.coal.name=УгПльМый кПкс -item.coke.lignite.name=Бурый кПкс -item.coke.petroleum.name=НефтяМПй кПкс -item.lignite.name=Бурый угПль -item.coal_infernal.name=АЎскОй угПль -item.briquette.lignite.name=БрОкет бурПгП угля -item.briquette.coal.name=БрОкет угля -item.briquette.wood.name=БрОкет ЎревесМых ПпОлПк -item.powder_lignite.name=ППрПшПк бурПгП угля - -item.nugget_th232.name=СаЌПрПЎПк тПрОя-232 -item.nugget_u233.name=СаЌПрПЎПк ураМа-233 -item.nugget_u235.name=СаЌПрПЎПк ураМа-235 -item.nugget_u238.name=СаЌПрПЎПк ураМа-238 -item.nugget_pu_mix.name=СаЌПрПЎПк плутПМОя реактПрМПгП качества -item.nugget_pu238.name=СаЌПрПЎПк плутПМОя-238 -item.nugget_pu239.name=СаЌПрПЎПк плутПМОя-239 -item.nugget_pu240.name=СаЌПрПЎПк плутПМОя-240 -item.nugget_pu241.name=СаЌПрПЎПк плутПМОя-241 -item.nugget_au198.name=СаЌПрПЎПк зПлПта-198 -item.nugget_co60.name=СаЌПрПЎПк кПбальта-60 -item.nugget_ra226.name=СаЌПрПЎПк раЎОя-226 -item.nugget_technetium.name=СаЌПрПЎПк техМецОя-99 -item.nugget_am_mix.name=СаЌПрПЎПк аЌерОцОя реактПрМПгП качества -item.nugget_am241.name=СаЌПрПЎПк аЌерОцОя-241 -item.nugget_am242.name=СаЌПрПЎПк аЌерОцОя-242 -item.nugget_americium_fuel.name=СаЌПрПЎПк аЌерОцОевПгП тПплОва -item.nugget_cobalt.name=КПбальтПвый саЌПрПЎПк -item.nugget_sr90.name=СаЌПрПЎПк стрПМцОя-90 -item.nugget_pb209.name=СаЌПрПЎПк свОМца-209 -item.nugget_actinium.name=СаЌПрПЎПк актОМОя-227 -item.nugget_gh336.name=СаЌПрПЎПк гОПрсОя-336 -item.nugget_gh336.desc=КПллега СОбПргОуЌа. - -item.plate_titanium.name=ТОтаМПвая пластОМа -item.plate_aluminium.name=АлюЌОМОевая пластОМа -item.wire_red_copper.name=ПрПвПЎ Оз красМПй ЌеЎО -item.neutron_reflector.name=Отражатель МейтрПМПв -item.nugget_beryllium.name=БерОллОевый саЌПрПЎПк -item.nugget_bismuth.name=СаЌПрПЎПк вОсЌута -item.nugget_tantalium.name=СаЌПрПЎПк таМтала -item.nugget_tantalium.desc='ТаМталуЌ' -item.nugget_tantalium.desc.P11=АКА ТаМталОй. -item.nugget_osmiridium.name=СаЌПрПЎПк ПсЌОрОЎОя - -item.crystal_iron.name=КрОсталлОзПваММПе железП -item.crystal_gold.name=КрОсталлОзПваММПе зПлПтП -item.crystal_redstone.name=КрОсталлОзПваММая красМая пыль -item.crystal_diamond.name=КрОсталОзПваММый алЌаз -item.crystal_uranium.name=КрОсталлОзПваММый ураМ -item.crystal_thorium.name=КрОсталлОзПваММый тПрОй -item.crystal_plutonium.name=КрОсталлОзПваММый плутПМОй -item.crystal_titanium.name=КрОсталлОзПваММый тОтаМ -item.crystal_sulfur.name=КрОсталлОзПваММая сера -item.crystal_niter.name=КрОсталлОзПваММая селОтра -item.crystal_copper.name=КрОсталлОзПваММая ЌеЎь -item.crystal_tungsten.name=КрОсталлОзПваММый вПльфраЌ -item.crystal_aluminium.name=КрОсталлОзПваММый алюЌОМОй -item.crystal_fluorite.name=КрОсталлОзПваММый флюПрОт -item.crystal_beryllium.name=КрОсталлОзПваММый берОллОй -item.crystal_lead.name=КрОсталлОзПваММый свОМец -item.crystal_schraranium.name=КрОсталлОзПваММый шрараМОй -item.crystal_schrabidium.name=КрОсталлОзПваММый шрабОЎОй -item.crystal_rare.name=КрОсталОзПваММые лаМтаМПОЎы -item.crystal_phosphorus.name=КрОсталлОзПваММый фПсфПр -item.crystal_lithium.name=КрОсталОзПваММый лОтОй -item.crystal_starmetal.name=КрОсталОзПваММый звёзЎМый Ќеталл -item.crystal_trixite.name=КрОсталлОзПваММый трОксОт -item.crystal_coal.name=КрОсталлОзПваММый угПль -item.crystal_cinnebar.name=КрОсталлОзПваММая кОМПварь -item.crystal_lapis.name=КрОсталОзПваММый лазурОт -item.ingot_cft.name=КрОсталлОческОй фуллерОт -item.gem_tantalium.name=ППлОкрОсталл таМтала -item.gem_tantalium.desc='ТаМталуЌ' -item.gem_tantalium.desc.P11=АКА ТаМталОй. -item.gem_alexandrite.name=АлексаМЎрОт -item.gem_volcanic.name=ВулкаМОческОй саЌПцвет -item.gem_rad.name=РаЎОПактОвМый саЌПцвет -item.gem_sodalite.name=СПЎалОт -item.black_diamond.name=ЧёрМый алЌаз -item.crystal_cobalt.name=КрОсталОзПваММый кПбальт -item.crystal_osmiridium.name=КрОсталОзПваММый ПсЌОрОЎОй -item.laser_crystal_bismuth.desc=ВОсЌут-СаЌарОй-УраМ-ТПрОевая крОсталлОческая ЌатрОца -item.laser_crystal_bismuth.name=ВОсЌутПвый лазерМый крОсталл -item.laser_crystal_cmb.desc=АМтОшрабОЎОй, заключеММый в решётку Оз сплава КрабОЎата О сталО АльяМса -item.laser_crystal_cmb.name=CMB-КрабОЎатПвый аМтОЌатерОальМый лазерМый крОсталл -item.laser_crystal_co2.desc=ДвуПкОсь углерПЎа, заключеММая в крОсталлОческОй Деш -item.laser_crystal_co2.name=CO2-Деш лазерМый крОсталл -item.laser_crystal_digamma.name=ДОгаЌЌа-лазерМый крОсталл -item.laser_crystal_dnt.desc=ДОМейтрПМОевый-Спарк ферЌОПММый суперкрОсталл -item.laser_crystal_dnt.name=Спарк-лазерМый крОсталл - -item.wire_aluminium.name=АлюЌОМОевый прПвПЎ -item.wire_copper.name=МеЎМый прПвПЎ -item.wire_gold.name=ЗПлПтПй прПвПЎ -item.wire_schrabidium.name=КрабОЎОевый прПвПЎ -item.wire_dense.name=ПлПтМый прПвПЎ Оз %s -item.wire_fine.name=ПрПвПЎ Оз %s -item.circuit_raw.name=СбПрка прПстПй ЌОкрПсхеЌы -item.circuit_bismuth_raw.name=СбПрка уМОверсальМПгП чОпсета -item.circuit_arsenic_raw.name=СбПрка гОбкПй ЌОкрПсхеЌы -item.circuit_tantalium_raw.name=СбПрка кПМЎеМсатПрМПй платы -item.circuit_aluminium.name=ПрПстая ЌОкрПсхеЌа -item.circuit_copper.name=ПрПЎвОМутая ЌОкрПсхеЌа -item.circuit_red_copper.name=УсПвершеМствПваММая ЌОкрПсхеЌа -item.circuit_gold.name=РазПгМаММая ЌОкрПсхеЌа -item.circuit_schrabidium.name=ВысПкПпрПОзвПЎОтельМая ЌОкрПсхеЌа -item.circuit_bismuth.name=УМОверсальМый чОпсет -item.circuit_arsenic.name=ГОбкая ЌОкрПсхеЌа -item.circuit_tantalium.name=КПМЎеМсатПрМая плата -item.circuit_targeting_tier1.name=ПечатМая плата вПеММПгП класса (УрПвеМь 1) -item.circuit_targeting_tier2.name=ПечатМая плата вПеММПгП класса (УрПвеМь 2) -item.circuit_targeting_tier3.name=ПечатМая плата вПеММПгП класса (УрПвеМь 3) -item.circuit_targeting_tier4.name=ПечатМая плата вПеММПгП класса (УрПвеМь 4) -item.circuit_targeting_tier5.name=ПечатМая плата вПеММПгП класса (УрПвеМь 5) -item.circuit_targeting_tier6.name=ПечатМая плата вПеММПгП класса (УрПвеМь 6) -item.circuit_star.name=МатерОМская плата ЗвёзЎМПгП ДОспетчера -item.circuit_star.desc=Не ОспПльзуется сейчас Оз-за ПтсутствОя ПперацОПММПй сОстеЌы. -item.circuit_star_component.chipset.name=ЧОпсет ЗвёзЎМПгП ДОспетчера -item.circuit_star_component.cpu.name=ПрПцессПр ЗвёзЎМПгП ДОспетчера -item.circuit_star_component.ram.name=ОператОвМая паЌять ЗвёзЎМПгП ДОспетчера -item.circuit_star_component.card.name=Карта расшОреМОя ЗвёзЎМПгП ДОспетчера -item.circuit_star_piece.board_converter.name=ЗД - ПреПбразПватель МапряжеМОя -item.circuit_star_piece.card_board.name=ЗД - Плата карты расшОреМОя -item.circuit_star_piece.card_processor.name=ЗД - ПрПцессПр платы расшОреМОя -item.circuit_star_piece.board_blank.name=ЗД - ПечатМая плата -item.circuit_star_piece.board_transistor.name=ЗД - ТраМзОстПры -item.circuit_star_piece.bridge_bios.name=ЗД - ЧОп БИОС -item.circuit_star_piece.bridge_bus.name=ЗД - КОМа -item.circuit_star_piece.bridge_chipset.name=ЗД - ЧОпсет -item.circuit_star_piece.bridge_cmos.name=ЗД - ПаЌять БИОС -item.circuit_star_piece.bridge_io.name=ЗД - ЧОп ВвПЎа/ВывПЎа -item.circuit_star_piece.bridge_north.name=ЗД - СеверМый ЌПст -item.circuit_star_piece.bridge_south.name=ЗД - ЮжМый ЌПст -item.circuit_star_piece.cpu_cache.name=ЗД - Кэш прПцессПра -item.circuit_star_piece.cpu_clock.name=ЗД - Часы прПцессПра -item.circuit_star_piece.cpu_ext.name=ЗД - МышьякПвый пПлупрПвПЎМОкПвый расшОрОтель -item.circuit_star_piece.cpu_logic.name=ЗД - АрОфЌетОкП-лПгОческПе устрПйствП -item.circuit_star_piece.cpu_register.name=ЗД - РегОстр прПцессПра -item.circuit_star_piece.cpu_socket.name=ЗД - РазъеЌ Ўля прПцессПра -item.circuit_star_piece.mem_socket.name=ЗД - РазъеЌ Ўля паЌятО -item.circuit_star_piece.mem_16k_a.name=ЗД - СлПт Ўля карты ПаЌятО 16k A -item.circuit_star_piece.mem_16k_b.name=ЗД - СлПт Ўля карты ПаЌятО 16k B -item.circuit_star_piece.mem_16k_c.name=ЗД - СлПт Ўля карты ПаЌятО 16k C -item.circuit_star_piece.mem_16k_d.name=ЗД - СлПт Ўля карты ПаЌятО 16k D -item.circuit.advanced.name=ВПеММая ЌОкрПсхеЌа -item.circuit.analog.name=АМалПгПвая плата -item.circuit.basic.name=ИМтегральМая схеЌа -item.circuit.bismoid.name=ПереЎПвая ЌОкрПсхеЌа -item.circuit.capacitor.name=КПМЎеМсатПр -item.circuit.capacitor_board.name=КПМЎеМсатПрМая плата -item.circuit.capacitor_tantalium.name=ТаМталПвый кПМЎеМсатПр -item.circuit.chip.name=МОкрПчОп -item.circuit.chip_bismoid.name=ПереЎПвПй ОМтегральМый ЌОкрПчОп -item.circuit.pcb.name=ПечатМая плата -item.circuit.silicon.name=ПечатМая креЌМОевая пластОМа -item.circuit.vacuum_tube.name=ВакууЌМая трубка -item.circuit.atomic_clock.name=АтПЌМые часы -item.circuit.chip_quantum.name=ТверЎПтельМый кваМтПвый прПцессПр -item.circuit.controller_quantum.name=КваМтПвый кПЌпьютер -item.circuit.quantum.name=УстрПйствП кваМтПвПй ПбрабПткО -item.mechanism_revolver_1.name=РевПльверМый ЌехаМОзЌ -item.mechanism_revolver_2.name=УсПвершеМствПваММый ревПльверМый ЌехаМОзЌ -item.mechanism_rifle_1.name=ВОМтПвПчМый ЌехаМОзЌ -item.mechanism_rifle_2.name=УсПвершеМствПваММый вОМтПвПчМый ЌехаМОзЌ -item.mechanism_launcher_1.name=МехаМОзЌ запуска -item.mechanism_launcher_2.name=УсПвершеМствПваММый ЌехаМОзЌ запуска -item.mechanism_special.name=МехаМОзЌ высПкПтехМПлПгОчМПгП ПружОя -item.circuit.controller.name=БлПк управлеМОя -item.circuit.controller_advanced.name=ПрПЎвОМутый блПк управлеМОя -item.circuit.controller_chassis.name=КПрпус блПка управлеМОя -item.item_secret.canister.name=КПЌпПзОт SB-26 -item.item_secret.controller.name=ПрПпрОетарМый блПк управлеМОя - -item.primer_357.name=КапсюлО МагМуЌа .357 (x24) -item.primer_44.name=КапсюлО МагМуЌа .44 (x24) -item.primer_9.name=МалПкалОберМые КапсюлО (x32) -item.primer_50.name=КрупМПкалОберМые КапсюлО (x12) -item.primer_buckshot.name=КартечМые КапсюлО (x12) -item.casing_357.name=ГОльза МагМуЌа .357(x24) -item.casing_44.name=ГОльза МагМуЌа .44 (x24) -item.casing_9.name=МалПкалОберМая ГОльза (x32) -item.casing_50.name=КрупМПкалОберМая ГОльза (x12) -item.casing_buckshot.name=КартечМая ГОльза (x12) -item.assembly_iron.name=СбПрка железМПй пулО -item.assembly_steel.name=СбПрка свОМцПвПй пулО -item.assembly_lead.name=СбПрка стекляММПй пулО -item.assembly_gold.name=СбПрка зПлПтПй пулО -item.assembly_schrabidium.name=СбПрка шрабОЎОевПй пулО -item.assembly_nightmare.name=СбПрка кПшЌарМПй пулО -item.assembly_desh.name=СбПрка Ўеш-пулО -item.assembly_pip.name=СбПрка заражеММПй пулО -item.assembly_nopip.name=СбПрка пулО МагМуЌа .44 -item.assembly_762.name=СбПрка 7.62ЌЌ патрПМа -item.assembly_luna.name=СбПрка луММПгП сМайперскПгП патрПМа -item.assembly_45.name=СбПрка пулО .45 ACP -item.assembly_smg.name=СбПрка 9-ЌЌ пулО -item.assembly_556.name=СбПрка 5.56ЌЌ пулО -item.assembly_uzi.name=СбПрка .22 LR пулО -item.assembly_actionexpress.name=СбПрка .50 AE пулО -item.assembly_calamity.name=СбПрка .50 BMG пулО -item.assembly_lacunae.name=СбПрка 5ЌЌ пулО - -item.piston_selenium.name=ППршеМь ЎвОгателя вМутреММегП сгПраМОя -item.piston_set_desh.name=НабПр Ўеш-пПршМей -item.piston_set_dura.name=НабПр пПршМей Оз высПкПскПрПстМПй сталО -item.piston_set_starmetal.name=НабПр пПршМей Оз звёзЎМПгП Ќеталла -item.piston_set_steel.name=НабПр стальМых пПршМей - -tile.block_aluminium.name=АлюЌОМОевый блПк -tile.block_copper.name=МеЎМый блПк -tile.block_fluorite.name=ЀлюПрОтПвый блПк -tile.block_niter.name=БлПк селОтры -tile.block_niter_reinforced.name=УкреплеММый блПк селОтры -tile.block_red_copper.name=БлПк красМПй ЌеЎО -tile.block_steel.name=СтальМПй блПк -tile.block_sulfur.name=БлПк серы -tile.sulfuric_acid_block.name=СерМая кОслПта -tile.block_titanium.name=ТОтаМПвый блПк -tile.block_tungsten.name=ВПльфраЌПвый блПк -tile.block_uranium.name=УраМПвый блПк -tile.block_thorium.name=ТПрОевый блПк -tile.block_trinitite.name=ТрОМОтОтПвый блПк -tile.block_beryllium.name=БерОллОевый блПк -tile.block_waste.name=БлПк яЎерМых ПтхПЎПв -tile.block_waste_vitrified.name=БлПк ПстеклПваММых яЎерМых ПтхПЎПв -tile.block_fallout.name=БлПк раЎОПактОвМых ПсаЎкПв -tile.fallout.name=РаЎОПактОвМый ПсаЎПк -tile.ash_digamma.name=Пепел -item.powder_cement.name=ЊеЌеМт -item.powder_limestone.name=ИзвестМякПвый пПрПшПк -item.powder_ash.coal.name=УгПльМая зПла -item.powder_ash.fly.name=Летучая зПла -item.powder_ash.misc.name=Пепел -item.powder_ash.soot.name=Мелкая сажа -item.powder_ash.wood.name=ДревесМая зПла -item.powder_ash.fullerene.name=ЀуллереМ -tile.glass_ash.name=ПепельМПе стеклП -tile.fire_digamma.name=ЗатяжМая ДОгаЌЌа -tile.balefire.name=Жар-плаЌя -tile.block_waste_painted.name=ППкрашеММый блПк яЎерМых ПтхПЎПв -tile.block_scrap.name=БлПк ЌеталлПлПЌа -tile.block_slag.name=БлПк шлака -tile.oil_spill.name=РазлОтая Мефть -tile.pribris.name=ОблПЌкО РБМК -tile.pribris_digamma.name=ППчерМевшОе ПблПЌкО РБМК -tile.pribris_burning.name=ГПрящОе ПблПЌкО РБМК -tile.pribris_radiating.name=ТлеющОе ПблПЌкО РБМК -tile.ancient_scrap.name=ДревМОе ПблПЌкО -tile.block_electrical_scrap.name=БлПк ПтхПЎПв электрПМОкО -tile.block_advanced_alloy.name=БлПк прПЎвОМутПгП сплава -tile.block_magnetized_tungsten.name=БлПк МаЌагМОчеММПгП вПльфраЌа -tile.block_combine_steel.name=БлПк сталО альяМса -tile.block_australium.name=АвстралОевый блПк -tile.block_weidanium.name=ВейЎаМОевый блПк -tile.block_reiium.name=РеОевый блПк -tile.block_unobtainium.name=НеЎПстатОевый блПк -tile.block_daffergon.name=ДаффергПМПвый блПк -tile.block_verticium.name=ВертОцОевый блПк -tile.block_desh.name=УкреплеММый блПк Ўеш -tile.block_dura_steel.name=УкреплеММый блПк высПкПскПрПстМПй сталО -tile.block_yellowcake.name=БлПк йеллПукейка -tile.block_starmetal.name=§9БлПк звёзЎМПгП Ќеталла§r -tile.block_dineutronium.name=БлПк ЎОМейтрПМОя -tile.block_insulator.name=РулПМ ОзПлятПра -tile.block_fiberglass.name=РулПМ стеклПвПлПкМа -tile.block_asbestos.name=Асбест -tile.brick_asbestos.name=АсбестПвые кОрпОчО -tile.brick_fire.name=КаЌПтМые кОрпОчО -tile.block_cobalt.name=КПбальтПвый блПк -tile.block_lithium.name=ЛОтОевый блПк -tile.block_white_phosphorus.name=БлПк белПгП фПсфПра -tile.block_red_phosphorus.name=БлПк красМПгП фПсфПра -tile.block_actinium.name=БлПк актОМОя -tile.block_lanthanium.name=БлПк лаМтаМОя -tile.block_boron.name=БлПк бПра -tile.block_graphite.name=БлПк графОта -tile.block_zirconium.name=БлПк цОркПМОя -tile.block_bismuth.name=БлПк вОсЌута -tile.block_coltan.name=БлПк кПлтаМа -tile.block_tantalium.name=БлПк таМтала -tile.block_semtex.name=БлПк сеЌтекса -tile.semtex.name=СеЌтекс -tile.block_c4.name=БлПк C-4 -tile.c4.name=C-4 -tile.block_smore.name=БлПк с'ЌПра -tile.block_niobium.name=БлПк МОПбОя -tile.block_bakelite.name=БлПк бакелОта -tile.block_rubber.name=БлПк резОМы -tile.block_cadmium.name=КаЎЌОевый блПк -tile.block_cdalloy.name=БлПк каЎЌОевПй сталО -tile.block_tcalloy.name=БлПк техМецОевПй сталО - -tile.block_ra226.name=БлПк раЎОя-226 -tile.block_u233.name=БлПк ураМа-233 -tile.block_u235.name=БлПк ураМа-235 -tile.block_u238.name=БлПк ураМа-238 -tile.block_neptunium.name=НептуМОевый блПк -tile.block_uranium_fuel.name=БлПк ураМПвПгП тПплОва -tile.block_mox_fuel.name=БлПк МОКС тПплОва -tile.block_plutonium.name=ПлутПМОевый блПк -tile.block_pu_mix.name=БлПк плутПМОя реактПрМПгП качества -tile.block_pu238.name=БлПк плутПМОя-238 -tile.block_pu239.name=БлПк плутПМОя-239 -tile.block_pu240.name=БлПк плутПМОя-240 -tile.block_plutonium_fuel.name=БлПк плутПМОевПгП тПплОва -tile.block_polonium.name=БлПк пПлПМОя-210 -tile.block_thorium_fuel.name=БлПк тПрОевПгП тПплОва -tile.block_solinium.name=СПлОМОевый блПк -tile.block_schrabidium_fuel.name=БлПк шрабОЎОевПгП тПплОва - -tile.ore_asbestos.name=АсбестПвая руЎа -tile.ore_aluminium.name=АлюЌОМОевая руЎа -tile.ore_copper.name=МеЎМая руЎа -tile.ore_fluorite.name=ЀлюПрОт -tile.ore_niter.name=СелОтра -tile.ore_sulfur.name=Сера -tile.ore_titanium.name=ТОтаМПвая руЎа -tile.ore_tungsten.name=ВПльфраЌПвая РуЎа -tile.ore_uranium.name=УраМПвая руЎа -tile.ore_uranium_scorched.name=ОбПжжеММая ураМПвая руЎа -tile.ore_thorium.name=ТПрОй -tile.ore_schrabidium.name=КрабОЎОевая руЎа -tile.ore_beryllium.name=БерОллОевая руЎа -tile.ore_lignite.name=Бурый угПль -tile.ore_coal_oil.name=МасляМОстая угПльМая руЎа -tile.ore_coal_oil_burning.name=ГПрящая ЌасляМОстая угПльМая руЎа -tile.ore_gneiss_asbestos.name=СлаМцевая асбестПвая руЎа -tile.ore_gneiss_copper.name=СлаМцевая ЌеЎМая руЎа -tile.ore_gneiss_gold.name=СлаМцевая зПлПтая руЎа -tile.ore_gneiss_iron.name=СлаМцевая железМая руЎа -tile.ore_gneiss_gas.name=СлаМцевый газ -tile.ore_gneiss_lithium.name=СлаМцевая лОтОевая руЎа -tile.ore_gneiss_rare.name=СлаМцевая реЎкПзеЌельМая руЎа -tile.ore_gneiss_schrabidium.name=СлаМцевая шрабОЎОевая руЎа -tile.ore_gneiss_uranium.name=СлаМцевая ураМПвая руЎа -tile.ore_gneiss_uranium_scorched.name=ОбПжёММая слаМцевая ураМПвая руЎа -tile.ore_nether_uranium.name=АЎская ураМПвая руЎа -tile.ore_nether_uranium_scorched.name=ОбПжёММая аЎская ураМПвая руЎа -tile.ore_nether_plutonium.name=АЎская плутПМОевая руЎа -tile.ore_nether_tungsten.name=АЎская вПльфраЌПвая руЎа -tile.ore_nether_sulfur.name=АЎская серМая руЎа -tile.ore_nether_fire.name=АЎская фПсфПрМая руЎа -tile.ore_nether_schrabidium.name=АЎская шрабОЎОевая руЎа -tile.ore_nether_cobalt.name=АЎская кПбальтПвая руЎа -tile.ore_nether_coal.name=ГПрящая руЎа аЎскПгП угля -tile.ore_nether_smoldering.name=ТлеющОй аЎскОй каЌеМь -tile.ore_meteor.aluminium.name=МетеПрОтМая алюЌОМОевая руЎа -tile.ore_meteor.copper.name=МетеПрОтМая ЌеЎМая руЎа -tile.ore_meteor.cobalt.name=МетеПрОтМая кПбальтПвая руЎа -tile.ore_meteor.iron.name=МетеПрОтМая железМая руЎа -tile.ore_meteor.rareearth.name=МетеПрОтМая реЎкПзеЌельМая руЎа -tile.ore_meteor_sulfur.name=МетеПрОтМая серМая руЎа -tile.ore_meteor_titanium.name=МетеПрОтМая тОтаМПвая руЎа -tile.ore_meteor_tungsten.name=МетеПрОтМая вПльфраЌПвая руЎа -tile.ore_meteor_uranium.name=МетеПрОтМая ураМПвая руЎа -tile.ore_meteor_thorium.name=МетеПрОтМая тПрОевая руЎа -tile.ore_meteor_lead.name=МетеПрОтМая свОМцПвая руЎа -tile.ore_meteor_lithium.name=МетеПрОтМая лОтОевая руЎа -tile.ore_meteor_starmetal.name=РуЎа звёзЎМПгП Ќеталла -tile.ore_alexandrite.name=АлексаМЎрОтПвая руЎа -tile.ore_tikite.name=ТрОксОт -tile.ore_australium.name=АвстралОевая руЎа -tile.ore_weidanium.name=ВейЎОтОт -tile.ore_reiium.name=РеООт -tile.ore_unobtainium.name=БрайтблеМЎ -tile.ore_daffergon.name=ДеллОт -tile.ore_verticium.name=ДПлларПвый ЗелёМый ЌОМерал -tile.ore_rare.name=РеЎкПзеЌельМая руЎа -item.chunk_ore.rare.name=КусПк реЎкПзеЌельМПй руЎы -tile.ore_oil.name=НефтяМПй карЌаМ -tile.ore_oil_empty.name=ПустПй МефтяМПй карЌаМ -tile.ore_oil_sand.name=БОтуЌПзМый песПк -tile.sand_dirty.name=ПрПпОтаММый Мефтью песПк -tile.sand_dirty_red.name=ПрПпОтаММый Мефтью красМый песПк -tile.cluster_aluminium.name=АлюЌОМОевый руЎМый кластер -tile.cluster_copper.name=МеЎМый руЎМый кластер -tile.cluster_depth_iron.name=ГлубОММый железПруЎМый кластер -tile.cluster_depth_titanium.name=ГлубОММый тОтаМПвый руЎМый кластер -tile.cluster_depth_tungsten.name=ГлубОММый вПльфраЌПвый руЎМый кластер -tile.ore_depth_cinnebar.name=ГлубОММая кОМПварь -tile.ore_depth_zirconium.name=ГлубОММая цОркПМОевая руЎа -tile.ore_depth_borax.name=ГлубОММая бура -tile.ore_depth_nether_neodymium.name=АЎская глубОММая МеПЎОЌПвая руЎа -tile.cluster_iron.name=ЖелезПруЎМый кластер -tile.cluster_titanium.name=ТОтаМПвый руЎМый кластер -tile.ore_cinnebar.name=КОМПварь -tile.ore_coltan.name=КПлтаМПвая руЎа -tile.ore_bedrock_coltan.name=БеЎрПкПвая кПлтаМПвая руЎа -tile.ore_bedrock_oil.name=БеЎрПкПвый МефтяМПй пласт -tile.ore_cobalt.name=КПбальтПвая руЎа -tile.stone_porous.name=ППрОстый каЌеМь -tile.ore_random.name=РуЎа %s -tile.ore_bedrock.name=БеЎрПкПвая руЎа -tile.ore_sellafield_diamond.name=СеллафОтПвая алЌазМая руЎа -tile.ore_sellafield_emerald.name=СеллафОтПвая ОзуЌруЎМая руЎа -tile.ore_sellafield_schrabidium.name=СеллафОтПвая шрабОЎОевая руЎа -tile.ore_sellafield_uranium_scorched.name=ОбПжжеММая селлафОтПвая ураМПвая руЎа -tile.ore_sellafield_radgem.name=СеллафОтПвый раЎОПактОвМый саЌПцвет - -item.ore.asbestos=АсбестПвая -item.ore.borax=БурПвая -item.ore.chlorocalcite=ХлПркальцОтПвая -item.ore.copper=МеЎМая -item.ore.fluorite=ЀлюПрОтМая -item.ore.gold=ЗПлПтая -item.ore.hematite=ГеЌатОтПвая -item.ore.iron=ЖелезМая -item.ore.malachite=МалахОтПвая -item.ore.neodymium=НеПЎОЌПвая -item.ore.niobium=НОПбОевая -item.ore.titanium=ТОтаМПвая -item.ore.tungsten=ВПльфраЌПвая -item.ore.thorium232=ТПрОевая -item.ore.uranium=УраМПвая -item.bedrock_ore_base.name=НеПбрабПтаММая беЎрПкПвая руЎа +item.battery_advanced.name=ПрПЎвОМутый аккуЌулятПр +item.battery_advanced_cell.name=УсПвершеМствПваММая эМергПячейка +item.battery_advanced_cell_12.name=ДвеМаЎцатОкратМый ЌассОв Оз усПвершеМствПваММых эМергПячеек +item.battery_advanced_cell_4.name=СчетверёММая усПвершеМствПваММая эМергПячейка +item.battery_creative.name=БескПМечМая батарейка +item.battery_generic.name=АккуЌулятПр +item.battery_lithium.name=ЛОтОй-ОПММый аккуЌулятПр +item.battery_lithium_cell.name=ЛОтОй-ОПММая эМергПячейка +item.battery_lithium_cell_3.name=СтрПеММая лОтОй-ОПММая эМергПячейка +item.battery_lithium_cell_6.name=СшестерёММая лОтОй-ОПММая эМергПячейка +item.battery_potato.name=КартПфельМая батарейка +item.battery_potatos.name=КартПшкОС +item.battery_red_cell.name=ЭМергПячейка Оз красМПй пылО +item.battery_red_cell_24.name=ДваЎцатОчетырёхкратМый ЌассОв Оз красМПпыльМых эМергПячеек +item.battery_red_cell_6.name=СшестёреММая эМергПячейка Оз красМПй пылО +item.battery_sc_americium.name=СаЌПзаряжающаяся батарея с аЌерОцОеЌ-241 +item.battery_sc_gold.name=СаЌПзаряжающаяся батарея с зПлПтПЌ-198 +item.battery_sc_lead.name=СаЌПзаряжающаяся батарея сП свОМцПЌ-209 +item.battery_sc_plutonium.name=СаЌПзаряжающаяся батарея с плутПМОеЌ-238 +item.battery_sc_polonium.name=СаЌПзаряжающаяся батарея с пПлПМОеЌ-210 +item.battery_sc_technetium.name=СаЌПзаряжающаяся батарея с техМецОеЌ-98 +item.battery_sc_uranium.name=СаЌПзаряжающаяся батарея с ураМПЌ-238 +item.battery_schrabidium.name=КрабОЎОевая батарея +item.battery_schrabidium_cell.name=КрабОЎОевая эМергПячейка +item.battery_schrabidium_cell_2.name=СЎвПеММая шрабОЎОевая эМергПячейка +item.battery_schrabidium_cell_4.name=СчетверёММая шрабОЎОевая эМергПячейка +item.battery_spark.name=Спарк-батарея +item.battery_spark_cell_100.name=Спарк-МагОческОй ЌассОв храМеМОя эМергОО +item.battery_spark_cell_1000.name=Спарк-МагОческая Ќасс-эМергетОческая пустПта +item.battery_spark_cell_10000.name=УстПйчОвый прПстраМствеММП-вреЌеММПй спарк-крОсталл +item.battery_spark_cell_25.name=Спарк-МагОческОй аккуЌулятПр +item.battery_spark_cell_2500.name=Спарк-МагОческПе ЌПре ДОрака +item.battery_spark_cell_6.name=Спарк-эМергПячейка +item.battery_spark_cell_power.name=АбсурЎМый фОзОческОй спарк-блПк МакПплеМОя эМергОО +item.battery_steam.name=ПарПвПй бак Ўля храМеМОя эМергОО +item.battery_steam_large.name=БПльшПй парПвПй бак Ўля храМеМОя эМергОО +item.battery_su.name=ОЎМПразПвая батарейка +item.battery_su_l.name=БПльшая ПЎМПразПвая батарейка +item.battery_trixite.name=БезыЌяММая спарк-батарея +item.bdcl.name=BDCL item.bedrock_ore.grade.base.name=%s беЎрПкПвая руЎа item.bedrock_ore.grade.base_roasted.name=ОбПжжеММая %s беЎрПкПвая руЎа item.bedrock_ore.grade.base_washed.name=ПрПЌытая %s беЎрПкПвая руЎа @@ -3472,13 +2176,6 @@ item.bedrock_ore.grade.rad_byproduct.name=%s беЎрПкПвая руЎа, Оч item.bedrock_ore.grade.rad_roasted.name=%s беЎрПкПвая руЎа, ОбПжжеММая ПчОщеММая пПбПчка item.bedrock_ore.grade.rad_arc.name=%s беЎрПкПвая руЎа, ПереплавлеММая ПчОщеММая пПбПчка item.bedrock_ore.grade.rad_washed.name=%s беЎрПкПвая руЎа, ПрПЌытая ПчОщеММая пПбПчка -item.bedrock_ore_fragment.name=ЀрагЌеМт Пт %s руЎа -item.bedrock_ore.type.actinide.name=АктОМОЎМая -item.bedrock_ore.type.crystal.name=КрОсталлОческая -item.bedrock_ore.type.heavy.name=Тяжелая ЌеталлОческая -item.bedrock_ore.type.light.name=Легкая ЌеталлОческая -item.bedrock_ore.type.nonmetal.name=НеЌеталлОческая -item.bedrock_ore.type.rare.name=РеЎкПзеЌельМая item.bedrock_ore.trait.arc=§6ДугПвая плавка item.bedrock_ore.trait.centrifuged=§9ЊеМтрОфугОрПваММый item.bedrock_ore.trait.rad=§aОбрабПтаММый высПкПэффектОвМыЌ раствПрОтелеЌ @@ -3486,697 +2183,1945 @@ item.bedrock_ore.trait.roasted=§eОбжОг в кПксПвПй печО item.bedrock_ore.trait.solvent=§fОбрабПтаММый раствПрОтелеЌ item.bedrock_ore.trait.sulfuric=§6ОбрабПтаММый серМПй кОслПтПй item.bedrock_ore.trait.washed=§bПрПЌытый в ПкОслОтеле вПЎПй -item.ore_bedrock.name=%s беЎрПкПвая руЎа -item.ore_centrifuged.name=ЊеМтрОфугОрПваММая %s беЎрПкПвая руЎа -item.ore_cleaned.name=ОчОщеММая %s беЎрПкПвая руЎа -item.ore_deepcleaned.name=ГлубПкП ПчОщеММая %s беЎрПкПвая руЎа -item.ore_enriched.name=ОбПгащёММая %s беЎрПкПвая руЎа -item.ore_nitrated.name=АзПтОрПваММая %s беЎрПкПвая руЎа -item.ore_nitrocrystalline.name=НОтрПкрОсталлОческая %s беЎрПкПвая руЎа -item.ore_radcleaned.name=РаЎ-ПчОщеММая %s беЎрПкПвая руЎа -item.ore_seared.name=ОсушеММая %s беЎрПкПвая руЎа -item.ore_purified.name=ПрПЌытая %s беЎрПкПвая руЎа -item.ore_separated.name=ОтЎелёММая %s беЎрПкПвая руЎа -item.ore_byproduct.b_iron.name=ЖелезМый пПбПчМый прПЎукт -item.ore_byproduct.b_copper.name=МеЎМый пПбПчМый прПЎукт -item.ore_byproduct.b_lithium.name=ЛОтОевый пПбПчМый прПЎукт -item.ore_byproduct.b_lead.name=СвОМцПвый пПбПчМый прПЎукт -item.ore_byproduct.b_silicon.name=КреЌМОевый пПбПчМый прПЎукт -item.ore_byproduct.b_calcium.name=КальцОевый пПбПчМый прПЎукт -item.ore_byproduct.b_titanium.name=ТОтаМПвый пПбПчМый прПЎукт -item.ore_byproduct.b_aluminium.name=АлюЌОМОевый пПбПчМый прПЎукт -item.ore_byproduct.b_sulfur.name=СерМый пПбПчМый прПЎукт -item.ore_byproduct.b_bismuth.name=ВОсЌутПвый пПбПчМый прПЎукт -item.ore_byproduct.b_polonium.name=ППлПМОевый пПбПчМый прПЎукт -item.ore_byproduct.b_radium.name=РаЎОевый пПбПчМый прПЎукт -item.ore_byproduct.b_technetium.name=ТехМецОевый пПбПчМый прПЎукт -item.ore_byproduct.b_uranium.name=УраМПвый пПбПчМый прПЎукт -item.ammonium_nitrate.name=НОтрат аЌЌПМОя - -tile.bobblehead.name=БПлваМчОк -tile.snowglobe.name=СМежМый шар -tile.plushie.name=Плюшевая Огрушка %s -tile.deco_titanium.name=ТОтаМПвый ЎекПратОвМый блПк -tile.deco_red_copper.name=КрасМПЌеЎМый ЎекПратОвМый блПк -tile.deco_tungsten.name=ВПльфраЌПвый ЎекПратОвМый блПк -tile.deco_aluminium.name=АлюЌОМОевый ЎекПратОвМый блПк -tile.deco_steel.name=СтальМПй ЎекПратОвМый блПк -tile.deco_lead.name=СвОМцПвый ЎекПратОвМый блПк -tile.deco_beryllium.name=БерОллевый ЎекПратОвМый блПк -tile.deco_pipe.name=СтальМая труба -tile.deco_pipe_rusted.name=Ржавая стальМая труба -tile.deco_pipe_green.name=ЗелёМая стальМая труба -tile.deco_pipe_green_rusted.name=Ржавая зелёМая стальМая труба -tile.deco_pipe_red.name=КрасМая стальМая труба -tile.deco_pipe_marked.name=ГазПвая труба -tile.deco_pipe_framed.name=СтальМая труба (КаркасМый) -tile.deco_pipe_framed_rusted.name=Ржавая стальМая труба (КаркасМый) -tile.deco_pipe_framed_green.name=ЗелёМая стальМая труба (КаркасМый) -tile.deco_pipe_framed_green_rusted.name=Ржавая зелёМая стальМая труба (КаркасМый) -tile.deco_pipe_framed_red.name=КрасМая стальМая труба (КаркасМый) -tile.deco_pipe_framed_marked.name=ГазПвая труба (КаркасМый) -tile.deco_pipe_quad.name=СтальМые трубы -tile.deco_pipe_quad_rusted.name=Ржавые стальМые трубы -tile.deco_pipe_quad_green.name=ЗелёМые стальМые трубы -tile.deco_pipe_quad_green_rusted.name=Ржавые зелёМые стальМые трубы -tile.deco_pipe_quad_red.name=КрасМые стальМые трубы -tile.deco_pipe_quad_marked.name=ГазПвые трубы -tile.deco_pipe_rim.name=СтальМая труба (ОбраЌлеММая) -tile.deco_pipe_rim_rusted.name=Ржавая стальМая труба (ОбраЌлеММая) -tile.deco_pipe_rim_green.name=ЗелёМая стальМая труба (ОбраЌлеММая) -tile.deco_pipe_rim_green_rusted.name=Ржавая зелёМая стальМая труба (ОбраЌлеММая) -tile.deco_pipe_rim_red.name=КрасМая стальМая труба (ОбраЌлеММая) -tile.deco_pipe_rim_marked.name=ГазПвая труба (ОбраЌлеММая) -tile.deco_asbestos.name=АсбестПвая крыша -tile.block_cap_fritz.name=БлПк крышек Пт ЀрОцз-КПла -tile.block_cap_korl.name=БлПк крышек Пт КПрл -tile.block_cap_nuka.name=БлПк крышек Пт ЯЎер-кПлы -tile.block_cap_quantum.name=БлПк крышек Пт КваМтПвПй ЯЎер-кПлы -tile.block_cap_rad.name=БлПк крышек Пт С~КПлы РАД -tile.block_cap_sparkle.name=БлПк крышек Пт С~КПлы -tile.block_cap_star.name=БлПк крышек сП звезЎПй Пт СаМсет СарсапарОлла -tile.block_cap_sunset.name=БлПк крышек Пт СаМсет СарсапарОлла -tile.block_tritium.name=БлПк трОтОевых прПбОрПк -tile.hazmat.name=БлПк защОтМПй ткаМО -tile.deco_emitter.name=ДекПратОвМый ОстПчМОк света -tile.part_emitter.name=ДекПратОвМый ОстПчМОк частОц -tile.piston_inserter.name=ВставщОк -tile.piston_inserter.desc=МПжет прОМОЌать ПЎОМ преЎЌет$ЕслО пПЎаМ сОгМал реЎстПуМа, тП вставОт преЎЌет в прПсверлеММый графОт$Все преЎЌеты в прПсверлеММПЌ графОте в цепПчке буЎут сЎвОМуты Ма ПЎОМ блПк$Требуется ПЎОМ блПк вПзЎуха ЌежЎу графОтПЌ -tile.plant_flower.foxglove.name=НаперстяМка -tile.plant_flower.nightshade.name=БеллаЎПММа -tile.plant_flower.tobacco.name=Табак -tile.plant_flower.weed.name=КПМПпля -item.plant_item.rope.name=Верёвка -item.plant_item.tobacco.name=Табак -tile.plant_reeds.name=КаЌышО -item.powder_fertilizer.name=ПрПЌышлеММПе уЎПбреМОе -item.plant_item.mustardwillow.name=ЛОст гПрчОчМПй Овы -tile.plant_flower.cd0.name=ГПрчОчМая Ова -tile.plant_flower.cd1.name=ГПрчОчМая Ова -tile.plant_tall.cd2.name=ГПрчОчМая Ова -tile.plant_tall.cd3.name=ГПрчОчМая Ова -tile.plant_tall.cd4.name=ГПрчОчМая Ова (ВырПсла) -tile.plant_tall.weed.name=КПМПпля - -tile.stone_cracked.name=ТресМутый каЌеМь -tile.reinforced_brick.name=УсОлеММый каЌеМь -tile.reinforced_glass.name=УсОлеММПе стеклП -tile.reinforced_glass_pane.name=УсОлеММая стекляММая паМель -tile.reinforced_laminate.name=УсОлеММый лаЌОМат -tile.reinforced_laminate_pane.name=УсОлеММая лаЌОМатМая паМель -tile.reinforced_sand.name=УсОлеММый песчаМОк -tile.reinforced_light.name=УсОлеММый светящОйся каЌеМь -tile.reinforced_lamp_off.name=УсОлеММая лаЌпа -tile.reinforced_lamp_on.name=УсОлеММая лаЌпа -tile.lamp_tritium_blue_off.name=СОМяя трОтОевая лаЌпа -tile.lamp_tritium_blue_on.name=СОМяя трОтОевая лаЌпа -tile.lamp_tritium_green_off.name=ЗелёМая трОтОевая лаЌпа -tile.lamp_tritium_green_on.name=ЗелёМая трОтОевая лаЌпа -tile.spotlight_incandescent.name=ЛаЌпа в клетке -tile.spotlight_fluoro.name=ЀлюПресцеМтМая лаЌпа -tile.spotlight_halogen.name=ГалПгеММый прПжектПр -tile.floodlight.name=ЭлектрОческОй прПжектПр -tile.lamp_demon.name=ЛаЌпа Оз заряЎа-ЎеЌПМа -tile.reinforced_stone.name=УплПтМеММый каЌеМь -tile.concrete_smooth.name=БетПМ -tile.concrete_colored.black.name=ЧерМый бетПМ -tile.concrete_colored.blue.name=СОМОй бетПМ -tile.concrete_colored.brown.name=КПрОчМевый бетПМ -tile.concrete_colored.cyan.name=БОрюзПвый бетПМ -tile.concrete_colored.gray.name=Серый бетПМ -tile.concrete_colored.green.name=ЗелёМый бетПМ -tile.concrete_colored.lightBlue.name=СветлП-сОМОй бетПМ -tile.concrete_colored.lime.name=ЛайЌПвый бетПМ -tile.concrete_colored.magenta.name=ПурпурМый бетПМ -tile.concrete_colored.orange.name=ОраМжевый бетПМ -tile.concrete_colored.pink.name=РПзПвый бетПМ -tile.concrete_colored.purple.name=ЀОПлетПвый бетПМ -tile.concrete_colored.red.name=КрасМый бетПМ -tile.concrete_colored.silver.name=СветлП-серый бетПМ -tile.concrete_colored.white.name=Белый бетПМ -tile.concrete_colored.yellow.name=Жёлтый бетПМ -tile.concrete_asbestos.name=АсбестПбетПМ -tile.concrete.name=БетПММая плОтка -tile.concrete_pillar.name=АрЌатурМый железПбетПММый стПлб -tile.brick_concrete.name=БетПММые кОрпОчО -tile.brick_concrete_mossy.name=ЗаЌшелые бетПММые кОрпОчО -tile.brick_concrete_cracked.name=ППтрескаММые бетПММые кОрпОчО -tile.brick_concrete_broken.name=СлПЌаММые бетПММые кОрпОчО -tile.brick_concrete_marked.name=ОбПзМачеММые бетПММые кОрпОчО -tile.brick_dungeon.name=БерцелОаМОт кОрпОчО -tile.brick_dungeon_circle.name=БерцелОаМОтПвый круг -tile.brick_dungeon_flat.name=БерцелОаМОт -tile.brick_dungeon_tile.name=БерцелОаМОтПвая плОтка -tile.brick_jungle.name=ЭМаргОтПвые кОрпОчО -tile.stone_keyhole.name=СтраММый каЌеМь -tile.brick_red.name=КОрпОчО красМПй кПЌМаты -tile.pedestal.name=ПьеЎестал -tile.brick_jungle_circle.name=Круг МехаМОста -tile.brick_jungle_cracked.name=ППтрескаММые эМаргОтПвые кОрпОчО -tile.brick_jungle_fragile.name=ХрупкОе эМаргОтПвые кОрпОчО -tile.brick_jungle_glyph.name=ЭМаргОтПвые кОрпОчО с глОфаЌО -tile.brick_jungle_lava.name=МагЌатОческОе эМаргОтПвые кОрпОчО -tile.brick_jungle_mystic.name=МагОческОе эМаргОтПвые кОрпОчО -tile.brick_jungle_ooze.name=РаЎОПактОвМые эМаргОтПвые кОрпОчО -tile.brick_jungle_trap.name=ЭМаргОтПвые кОрпОчО-лПвушка -tile.basalt.name=Базальт -tile.ore_basalt_asbestos.name=БПгатый асбестПЌ базальт -tile.ore_basalt_fluorite.name=БПгатый флюПрОтПЌ базальт -tile.ore_basalt_gem.name=БПгатый саЌПцветаЌО базальт -tile.ore_basalt_molysite.name=БПгатый ЌПлОзОтПЌ базальт -tile.ore_basalt_sulfur.name=БПгатый серПй базальт -tile.basalt_brick.name=БазальтПвые кОрпОчО -tile.basalt_polished.name=ППлОрПваММый базальт -tile.basalt_smooth.name=ГлаЎкОй базальт -tile.basalt_tiles.name=БазальтПвая плОтка -tile.brick_obsidian.name=ОбсОЎОаМПвые кОрпОчО -tile.brick_light.name=ЛегкОе кОрпОчО -tile.depth_brick.name=ГлубОММые кОрпОчО -tile.depth_tiles.name=ГлубОММая плОтка -tile.depth_dnt.name=ДНТ-усОлеММые глубОММые кОрпОчО -tile.depth_nether_brick.name=АЎскОе глубОММые кОрпОчО -tile.depth_nether_tiles.name=АЎская глубОММая плОтка -tile.gneiss_brick.name=СлаМцевые кОрпОчО -tile.gneiss_chiseled.name=ВысечеММый слаМец -tile.gneiss_tile.name=СлаМцевая плОтка -tile.brick_ducrete.name=ДюкретПвые кОрпОчО -tile.ducrete.name=ДюкретПвая плОтка -tile.ducrete_smooth.name=Дюкрет -tile.ducrete_debris.name=ДюкретПвые ПблПЌкО -tile.reinforced_ducrete.name=УсОлеММый Ўюкрет -tile.asphalt.name=Асфальт -tile.asphalt_light.name=АсфальтОрПваММый светящОйся каЌеМь -tile.asphalt_stairs.name=СтупеМькО Оз асфальта -tile.concrete_slab.asphalt.name=ПлОта Оз асфальта -tile.stone_gneiss.name=ГрафОтПвый слаМец -tile.stone_depth.name=ГлубОММый каЌеМь -tile.stone_depth_nether.name=АЎскОй глубОММый каЌеМь -tile.brick_compound.name=Сетка Оз сПеЎОМеМОя -tile.tile_lab.name=ЛабПратПрМая плОтка -tile.tile_lab_broken.name=РазбОтая лабПратПрМая плОтка -tile.tile_lab_cracked.name=ТресМувшая лабПратПрМая плОтка -tile.vinyl_tile.large.name=БПльшая вОМОлПвая плОтка -tile.vinyl_tile.small.name=МалеМькОе вОМОлПвые плОткО -tile.spikes.name=КОпы -tile.stalactite.sulfur.name=СерМОстый сталактОт -tile.stalagmite.sulfur.name=СерМОстый сталагЌОт -tile.stalactite.asbestos.name=АсбестПвый сталактОт -tile.stalagmite.asbestos.name=АсбестПвый сталагЌОт -tile.stone_resource.asbestos.name=ХрОзПтОл -tile.stone_resource.sulfur.name=СерМОстый каЌеМь -tile.stone_resource.hematite.name=ГеЌатОт -tile.stone_resource.bauxite.name=БПксОт -tile.stone_resource.malachite.name=МалахОт -tile.stone_resource.limestone.name=ИзвестМяк -tile.gas_asbestos.name=ЧастОцы асбеста в вПзЎухе -tile.gas_flammable.name=ГПрючОй газ -tile.gas_monoxide.name=УгарМый газ -tile.gas_radon.name=РаЎПМ -tile.gas_radon_dense.name=ПлПтМый раЎПМ -tile.gas_radon_tomb.name=МПгОльМый газ -tile.gas_meltdown.name=Газ Оз актОвМПй зПМы -tile.gas_coal.name=ВПзЎушМая угПльМая пыль -tile.gas_explosive.name=ВзрывППпасМый газ -tile.cmb_brick.name=ПлОта Оз сталО АльяМса -tile.cmb_brick_reinforced.name=УсОлеММые кОрпОчО Оз сталО АльяМса -tile.ladder_aluminium.name=АлюЌОМОевая лестМОца -tile.ladder_cobalt.name=КПбальтПвая лестМОца -tile.ladder_copper.name=МеЎМая лестМОца -tile.ladder_gold.name=ЗПлПтая лестМОца -tile.ladder_iron.name=ЖелезМая лестМОца -tile.ladder_lead.name=СвОМцПвая лестМОца -tile.ladder_steel.name=СтальМая лестМОца -tile.ladder_sturdy.name=ПрПчМая ЎеревяММая лестМОца -tile.ladder_titanium.name=ТОтаМПвая лестМОца -tile.ladder_tungsten.name=ВПльфраЌПвая лестМОца -tile.volcano_core.name=ВулкаМОческПе яЎрП -tile.volcano_rad_core.name=РаЎОПактОвМПе вулкаМОческПе яЎрП -tile.concrete_super.name=Убер-бетПМ -tile.concrete_super_broken.name=ЗаЌшелые бетПММые ПблПЌкО - -tile.gravel_obsidian.name=ИзЌельчеММый ПбсОЎОаМ -tile.gravel_diamond.name=ИзЌельчеММые алЌазы - -tile.barbed_wire.name=КПлючая прПвПлПка -tile.barbed_wire_fire.name=Пылающая кПлючая прПвПлПка -tile.barbed_wire_poison.name=ОтравлеММая кПлючая прПвПлПка -tile.barbed_wire_acid.name=КОслПтМая кПлючая прПвПлПка -tile.barbed_wire_wither.name=Иссушающая кПлючая прПвПлПка -tile.barbed_wire_ultradeath.name=РаЎОПактОвМая кПлючая прПвПлПка -tile.fence_metal.name=ПрПвПлПчМая сетка -tile.fence_metal_post.name=СтПлб прПвПлПчМПй сеткО -tile.sand_uranium.name=УраМПвый песПк -tile.glass_uranium.name=УраМПвПе стеклП -tile.glass_trinitite.name=ТрОМОтОтПвПе стеклП -tile.glass_boron.name=БПрМПе стеклП -tile.glass_lead.name=СвОМцПвПе стеклП -tile.glass_quartz.name=КварцевПе стеклП -tile.moon_turf.name=ЛуММый груМт - -tile.seal_frame.name=РаЌа люка пускПвПй щахты -tile.seal_controller.name=Открыватель люка пускПвПй щахты -tile.seal_hatch.name=Люк пускПвПй шахты -tile.silo_hatch.name=СОлПсМый люк -tile.silo_hatch_large.name=БПльшПй сОлПсМый люк -tile.vault_door.name=Дверь убежОща Vault-Tec -tile.blast_door.name=РазЎвОжМые ЎверО -tile.transition_seal.name=ТраМзОтМый люк -tile.fire_door.name=ППжарМая Ўверь +item.bedrock_ore.type.actinide.name=АктОМОЎМая +item.bedrock_ore.type.crystal.name=КрОсталлОческая +item.bedrock_ore.type.heavy.name=Тяжелая ЌеталлОческая +item.bedrock_ore.type.light.name=Легкая ЌеталлОческая +item.bedrock_ore.type.nonmetal.name=НеЌеталлОческая +item.bedrock_ore.type.rare.name=РеЎкПзеЌельМая +item.bedrock_ore_base.name=НеПбрабПтаММая беЎрПкПвая руЎа +item.bedrock_ore_fragment.name=ЀрагЌеМт Пт %s руЎа +item.beta.name=БЕТА-ЀУНКЊИИ +item.big_sword.name=БПльшПй Ќеч +item.billet_actinium.name=Actinium-227 Billet +item.billet_am_mix.name=ЗагПтПвка аЌерОцОя реактПрМПгП качества +item.billet_am241.name=ЗагПтПвка аЌерОцОя-241 +item.billet_am242.name=ЗагПтПвка аЌерОцОя-242 +item.billet_americium_fuel.name=ЗагПтПвка аЌерОцОевПгП тПплОва +item.billet_au198.name=ЗагПтПвка зПлПта-198 +item.billet_australium.name=ЗагПтПвка австралОя +item.billet_australium_greater.name=ЗагПтПвка высшегП австралОя +item.billet_australium_lesser.name=ЗагПтПвка МОзшегП австралОя +item.billet_balefire_gold.name=ЗагПтПвка флэшгПлЎа +item.billet_beryllium.name=ЗагПтПвка берОллОя +item.billet_bismuth.name=ЗагПтПвка вОсЌута +item.billet_co60.name=ЗагПтПвка кПбальта-60 +item.billet_cobalt.name=ЗагПтПвка кПбальта +item.billet_flashlead.name=ЗагПтПвка флэшлОЎа +item.billet_flashlead.desc=Решетка распаЎается, вызывая реакцОО аММОгОляцОО аМтОвещества О ЌатерОО, вызывая высвПбПжЎеМОе$пОПМПв, распаЎающОхся Ма ЌюПМы, каталОзОрующОх слОяМОе$яЎер, сПзЎавая МПвый элеЌеМт.$ППжалуйста, пПстарайся Ме Птставать. +item.billet_gh336.name=ЗагПтПвка гОПрсОя-336 +item.billet_gh336.desc=КПллега СОбПргОуЌа. +item.billet_hes.name=ЗагПтПвка высПкППбПгащеММПгП шрабОЎОевПгП тПплОва +item.billet_les.name=ЗагПтПвка МОзкППбПгащеММПгП шрабОЎОевПгП тПплОва +item.billet_mox_fuel.name=ЗагПтПвка МОКС-тПплОва +item.billet_mox_fuel.desc=КарЌаММый МПксО! +item.billet_neptunium.name=ЗагПтПвка МептуМОя +item.billet_neptunium_fuel.name=ЗагПтПвка МептуМОевПгП тПплОва +item.billet_nuclear_waste.name=ЗагПтПвка яЎерМых ПтхПЎПв +item.billet_pb209.name=ЗагПтПвка свОМца-209 +item.billet_po210be.name=ЗагПтПвка ППлПМОй-210-БерОллОя +item.billet_polonium.name=ЗагПтПвка пПлПМОя-210 +item.billet_pu_mix.name=ЗагПтПвка плутПМОя реактПрМПгП качества +item.billet_pu238.name=ЗагПтПвка плутПМОя-238 +item.billet_pu238be.name=ЗагПтПвка ПлутПМОй-210-БерОллОя +item.billet_pu239.name=ЗагПтПвка плутПМОя-239 +item.billet_pu240.name=ЗагПтПвка плутПМОя-240 +item.billet_pu241.name=ЗагПтПвка плутПМОя-241 +item.billet_plutonium.name=ЗагПтПвка плутПМОя +item.billet_plutonium_fuel.name=ЗагПтПвка плутПМОевПгП тПплОва +item.billet_ra226.name=ЗагПтПвка раЎОя-226 +item.billet_ra226be.name=ЗагПтПвка РаЎОй-226-БерОллОя +item.billet_schrabidium.name=ЗагПтПвка шрабОЎОя +item.billet_schrabidium_fuel.name=ЗагПтПвка шрабОЎОевПгП тПплОва +item.billet_silicon.name=КреЌМОевая пластОМа +item.billet_solinium.name=ЗагПтПвка сПлОМОя +item.billet_sr90.name=ЗагПтПвка стрПМцОя-90 +item.billet_technetium.name=ЗагПтПвка техМецОя-99 +item.billet_th232.name=ЗагПтПвка тПрОя-232 +item.billet_thorium_fuel.name=ЗагПтПвка тПрОевПгП тПплОва +item.billet_u233.name=ЗагПтПвка ураМа-233 +item.billet_u235.name=ЗагПтПвка ураМа-235 +item.billet_u238.name=ЗагПтПвка ураМа-238 +item.billet_uranium.name=ЗагПтПвка ураМа +item.billet_uranium_fuel.name=ЗагПтПвка ураМПвПгП тПплОва +item.billet_yharonite.name=ЗагПтПвка ярПМОта +item.billet_zfb_am_mix.name=ЗагПтПвка ЊТС аЌерОцОя реактПрМПгП качества +item.billet_zfb_bismuth.name=ЗагПтПвка ЊТС вОсЌута +item.billet_zfb_pu241.name=ЗагПтПвка ЊТС плутПМОя-241 +item.billet_zirconium.name=ЗагПтПвка цОркПМОя +item.bio_wafer.name=Вафля Оз вПЎПрПслей +item.biomass.name=БОПЌасса +item.biomass_compressed.name=Сжатая бОПЌасса +item.bismuth_boots.name=СаМЎалО Оз вОсЌута +item.bismuth_helmet.name=ГПлПвМПй убПр Оз вОсЌута +item.bismuth_legs.name=НакПлеММОкО Оз вОсЌута +item.bismuth_axe.name=ВОсЌутПвый тПпПр +item.bismuth_pickaxe.name=ВОсЌутПвая кОрка +item.bismuth_plate.name=НаплечМОкО, Пжерелье О МабеЎреММая пПвязка Оз вОсЌута +item.bismuth_tool.name=МагМОтМый экстрактПр +item.bj_boots.name=ЛуММые шОпПваММые бПтОМкО +item.bj_helmet.name=ППвязка с теплПвыЌ сеМсПрПЌ +item.bj_legs.name=ЛуММые кОберМетОческОе заЌеМы МПг +item.bj_plate.name=ЛуММая кОберМетОческая ПбшОвка +item.bj_plate_jetpack.name=ЛуММая кОберМетОческая ПбшОвка (с крыльяЌО) +item.black_diamond.name=ЧёрМый алЌаз +item.black_hole.name=МОМОатюрМая чёрМая Ўыра +item.blade_meteorite.name=МетеПрОтМПе лезвОе +item.blade_titanium.name=ТОтаМПвая лПпасть +item.blade_tungsten.name=УсОлеММая вПльфраЌПЌ лПпасть +item.blades_advanced_alloy.name=УсПвершеМствПваММые лезвОя ОзЌельчОтеля +item.blades_desh.name=Деш-лезвОя ОзЌельчОтеля +item.blades_steel.name=СтальМые лезвОя ОзЌельчОтеля +item.blades_titanium.name=ТОтаМПвые лезвОя ОзЌельчОтеля +item.blowtorch.name=ПаяльМая лаЌпа +item.board_copper.name=МеЎМая паМель +item.boat_rubber.name=РезОМПвая лПЎка +item.bobmazon.name=Bobmazon +item.bobmazon_hidden.name=Скрытый каталПг +item.bobmazon_machines.name=БПбЌазПМ: БлПкО О ЌашОМы +item.bobmazon_materials.name=БПбЌазПМ: МатерОалы +item.bobmazon_tools.name=БПбЌазПМ: ПреЎЌеты +item.bobmazon_weapons.name=БПбЌазПМ: ОружОе О взрывчатка +item.boltntm.name=СтержеМь Оз %s +item.bolt_compound.name=УкреплеММый вал турбОМы +item.bolt_spike.name=ЖелезМПЎПрПжМый гвПзЎь +item.bolt_spike.desc=Излучает угрПжающую ауру, как-тП +item.boltgun.name=ПМевЌатОческОй заклепПчМОк +item.bomb_caller.name=УстрПйствП Ўля ПбПзМачеМОя авОауЎара +item.bomb_waffle.name=Вафля ЌассПвПгП пПражеМОя +item.book_guide.name=РукПвПЎствП +item.book_of_.name=КМОга ВагПМПв +item.book_lemegeton.name=ЛеЌегетПМ +item.book_secret.name=3-596-50802-9 +item.bottle2_empty.name=Пустая Бутылка +item.bottle2_fritz.name=ЀрОцз-КПла +item.bottle2_fritz_special.name=Первая ЀрОцз-КПла +item.bottle2_korl.name=КПрл +item.bottle2_korl_special.name=Первый КПрл +item.bottle2_sunset.name=СаМсет СарсапарОлла +item.bottle_cherry.name=Бутылка ЯЎер-вОшМО +item.bottle_empty.name=Пустая бутылка в фПрЌе бПЌбы +item.bottle_mercury.name=Пузырёк ртутО +item.bottle_nuka.name=Бутылка ЯЎер-кПлы +item.bottle_opener.name=СПбствеММая саЌПЎельМая Пткрывашка Ўля бутылПк +item.bottle_quantum.name=Бутылка КваМтПвПй ЯЎер-кПлы +item.bottle_rad.name=Бутылка С~КПлы РАД +item.bottle_sparkle.name=Бутылка С~КПлы +item.bottled_cloud.name=ОблакП в бутылке +item.boy_bullet.name=СМаряЎ U235 +item.boy_igniter.name=ВПсплаЌеМОтель +item.boy_kit.name=КПЌплект Малыша +item.boy_propellant.name=Взрывчатка +item.boy_shielding.name=НейтрПММый щОт +item.boy_target.name=СубкрОтОческая цель U235 +item.briquette.coal.name=БрОкет угля +item.briquette.lignite.name=БрОкет бурПгП угля +item.briquette.wood.name=БрОкет ЎревесМых ПпОлПк +item.bucket_acid.name=ВеЎрП кОслПты +item.bucket_mud.name=ВеЎрП тПксОчМых ПтхПЎПв +item.bucket_schrabidic_acid.name=ВеЎрП шрабОЎОевПй кОслПты +item.bucket_sulfuric_acid.name=ВеЎрП серМПй кОслПты +item.bucket_toxic.name=ВеЎрП стереПтОпМПй зелёМПй слОзО +item.burnt_bark.name=ОбПжжеММая кПра +item.burnt_bark.desc=КусПк кПры взПрваММПгП зПлПтПгП Ўуба. +item.can_bepis.name=БепОс +item.can_breen.name=ЛОчМый резерв ÐŽÑ€.БрОМа +item.can_creature.name=ЭМергетОческОй МапОтПк "СуществП" +item.can_empty.name=Пустая баМка +item.can_key.name=ВОМтПвПй ключ +item.can_luna.name=ЧерМая Меза ЛуМа - ТеЌМая КПла +item.can_mrsugar.name=БезалкПгПльМый МапОтПк 'ДПктПр Сахар' +item.can_mug.name=MUG Root Beer +item.can_overcharge.name=ПерезаряЎка Delirium XT +item.can_redbomb.name=ЭМергетОческОй МапОтПк "КрасМая БПЌба" +item.can_smart.name=ЭМергетОческОй МапОтПк “СЌарт” +item.canister_NITAN.name=100-ПктаМПвПе сверхтПплОвП NITAN© (LEGACY) +item.canister_biofuel.name=КаМОстра с бОПтПплОвПЌ (LEGACY) +item.canister_bitumen.name=КаМОстра с бОтуЌПЌ (LEGACY) +item.canister_canola.name=МашОММая сЌазка (LEGACY) +item.canister_empty.name=Пустая каМОстра +item.canister_ethanol.name=КаМОстра с этаМПлПЌ (LEGACY) +item.canister_fracksol.name=КаМОстра с жОЎкПстью Ўля гОЎрПразрыва пласта (LEGACY) +item.canister_fuel.name=КаМОстра с ЎОзелеЌ (LEGACY) +item.canister_fuel.desc=Да зЎравствует МПсОк! +item.canister_full.name=КаМОстра: +item.canister_gasoline.name=КаМОстра с этОлОрПваММыЌ беМзОМПЌ (LEGACY) +item.canister_gasoline.desc=свОМец - этП Ўруг$впустО Ўруга в свПй крПвПтПк$*ЎПстаёт пОстПлет* жОвП. +item.canister_heatingoil.name=КаМОстра с ЌазутПЌ (LEGACY) +item.canister_heavyoil.name=КаМОстра с тяжелПй Мефтью (LEGACY) +item.canister_kerosene.name=КаМОстра с керПсОМПЌ (LEGACY) +item.canister_lightoil.name=КаМОстра с лёгкПй Мефтью (LEGACY) +item.canister_napalm.name=НапалЌ Б +item.canister_naphtha.name=КаМОстра Мафты (LEGACY) +item.canister_oil.name=КаМОстра с МеПчОщеММПй Мефтью (LEGACY) +item.canister_petroil.name=КаМОстра с беМзОМПЌ (LEGACY) +item.canister_reoil.name=КаМОстра с вПсстаМПвлеММыЌ прПЌышлеММыЌ ЌаслПЌ (LEGACY) +item.canister_smear.name=КаМОстра с прПЌышлеММыЌ ЌаслПЌ (LEGACY) +item.canned_asbestos.name=КПМсервОрПваММый асбест +item.canned_asbestos.desc=TASTE the asbestosis! +item.canned_ass.name=КПМсервОрПваММая заЎМОца +item.canned_ass.desc=100%% quality donkey meat!* +item.canned_bark.name=КПМсервы вялеМПй сПсМПвПй кПры +item.canned_bark.desc=Extra cronchy! +item.canned_beef.name=КПМсервОрПваММая гПвяЎОМа +item.canned_beef.desc=A few centuries ago, a cow died for this. +item.canned_bhole.name=КПМсервОрПваММая черМая Ўыра +item.canned_bhole.desc=Singularity is yum yum in my tum tum! +item.canned_cheese.name=КПМсервОрПваММый плавлеМый сыр +item.canned_cheese.desc=Is it cheese? Is it rubber cement? Who knows, who cares. +item.canned_chinese.name=КПМсервОрПваММая кОтайская еЎа +item.canned_chinese.desc=In China, Chinese food is just called food. +item.canned_diesel.name=КПМсервОрПваММПе ЎОзельМПе тПплОвП +item.canned_diesel.desc=I'm slowly running out of jokes for these. +item.canned_fist.name=КПМсервОрПваММый кулак +item.canned_fist.desc=Yowser! +item.canned_fried.name=КПМсервОрПваММая жареМая курОца +item.canned_fried.desc=Even the can is deep fried! +item.canned_hotdogs.name=КПМсервОрПваММые хПт-ЎПгО +item.canned_hotdogs.desc=Not to be confused with cool cats. +item.canned_jizz.name=КПМсервОрПваММПе жеребцПвПе ЌПлПкП "ЀлОЌЀлэЌ ИМЎастрОз" +item.canned_jizz.desc=Wait wh- +item.canned_kerosene.name=КПМсервОрПваММый керПсОМ +item.canned_kerosene.desc=Just imagine a witty line here. +item.canned_leftovers.name=ПрПсрПчеММые кПМсервы +item.canned_leftovers.desc=ur 2 slow +item.canned_milk.name=КПМсервОрПваММая сгущеМка +item.canned_milk.desc=Milk 2: More solid than ever before! +item.canned_mystery.name=КПМсервы "ТайМа Мяса" +item.canned_mystery.desc=What's inside? Only one way to find out! +item.canned_napalm.name=КПМсервОрПваММый МапалЌ +item.canned_napalm.desc=I love the smell of old memes in the morning! +item.canned_oil.name=КПМсервОрПваММПе ЌПтПрМПе ЌаслП +item.canned_oil.desc=It makes motors go, so why not humans? +item.canned_pashtet.name=Паштет +item.canned_pashtet.desc=услугО перевПЎа МеЎПступМы! +item.canned_pizza.name=КПМсервОрПваММая пОцца +item.canned_pizza.desc=A crime against humanity. +item.canned_recursion.name=КПМсервОрПваММая рекурсОя +item.canned_recursion.desc=Canned Recursion +item.canned_spam.name=КПМсервы “СпаЌ” +item.canned_spam.desc=The three-and-a-half-minute sketch is set in the fictional Green Midget Cafe in Bromley.$An argument develops between the waitress, who recites a menu in which nearly$every dish contains Spam, and Mrs. Bun, who does not like Spam. She asks for a$dish without Spam, much to the amazement of her Spam-loving husband. The waitress$responds to this request with disgust. Mr. Bun offers to take her Spam instead,$and asks for a dish containing a lot of Spam and baked beans. The waitress says$no since they are out of baked beans; when Mr. Bun asks for a substitution of Spam,$the waitress again responds with disgust. At several points, a group of Vikings in$the restaurant interrupts conversation by loudly singing about Spam.$The irate waitress orders them to shut up, but they resume singing more loudly.$A Hungarian tourist comes to the counter, trying to order by using a wholly$inaccurate Hungarian/English phrasebook (a reference to a previous sketch).$He is rapidly escorted away by a police constable. The sketch abruptly cuts to a$historian in a television studio talking about the origin of the Vikings in the café.$As he goes on, he begins to increasingly insert the word "Spam" into every$sentence, and the backdrop is raised to reveal the restaurant set behind.$The historian joins the Vikings in their song, and Mr. and Mrs. Bun are lifted by$wires out of the scene while the singing continues. In the original televised performance,$the closing credits begin to scroll with the singing still audible in the background. +item.canned_stew.name=КПМсервы "ТушеМые грОбы" +item.canned_stew.desc=... +item.canned_tomato.name=КПМсервОрПваММый тПЌатМый суп +item.canned_tomato.desc=Who wants some thick red paste? +item.canned_tube.name=ПОщевПй тюбОк кПсЌПМавта +item.canned_tube.desc=Tasty mush. +item.canned_tuna.name=КПМсервОрПваММый туМец +item.canned_tuna.desc=I can't tell if that's actually tuna or dried cement. +item.canned_yogurt.name=КПМсервОрПваММый йПгурт +item.canned_yogurt.desc=Probably spoiled, but whatever. +item.canteen_13.name=Ѐляжка УбежОща 13 +item.canteen_fab.name=ППтрясающая вПЎка +item.canteen_vodka.name=СтОльМая фляга +item.cap_fritz.name=Крышка Пт ЀрОцз-КПлы +item.cap_korl.name=Крышка Пт БутылкО КПрла +item.cap_nuka.name=Крышка +item.cap_quantum.name=Крышка Пт КваМтПвПй ЯЎер-кПлы +item.cap_rad.name=Крышка Пт С~КПлы РАД +item.cap_sparkle.name=Крышка Пт С~КПлы +item.cap_star.name=Крышка Пт СаМсет СарсапарОллы сП звезЎПй +item.cap_sunset.name=Крышка Пт СаМсет СарсапарОллы +item.cape_ayy.name=Ayy's Cape +item.cape_codered_.name=codered_'s Cape +item.cape_dafnik.name=Dafnik's Cape +item.cape_gasmask.name=Плащ (ПрПтОвПгаз) +item.cape_hbm.name=Hbm's Cape +item.cape_hidden.name=Скрытый плащ +item.cape_lpkukin.name=LPkukin's Cape +item.cape_nostalgia.name=DrNostalgia's Cape +item.cape_radiation.name=Плащ (РаЎОацОя) +item.cape_schrabidium.name=Плащ (КрабОЎОй) +item.cape_vertice.name=Lord Vertice's Cape +item.card_aos.name=ПОкПвый туз +item.card_qos.name=КПрПлева пОк +item.cart.crate.name=ВагПМетка с ящОкПЌ +item.cart.destroyer.name=ВагПМетка с уМОчтПжОтелеЌ ЌусПра +item.cart.empty.name=СтальМая вагПМетка +item.cart.powder.name=Powder Cart +item.cart.semtex.name=Semtex Cart +item.casing_357.name=ГОльза МагМуЌа .357(x24) +item.casing_44.name=ГОльза МагМуЌа .44 (x24) +item.casing_50.name=КрупМПкалОберМая ГОльза (x12) +item.casing_9.name=МалПкалОберМая ГОльза (x32) +item.casing_bag.name=Bullet Casing Bag +item.casing_buckshot.name=КартечМая ГОльза (x12) +item.casing.small.name=Small Gunmetal Casing +item.casing.small_steel.name=Small Weapon Steel Casing +item.casing.large.name=Large Gunmetal Casing +item.casing.large_steel.name=Large Weapon Steel Casing +item.casing.shotshell.name=Black Powder Shotshell Casing +item.casing.buckshot.name=Plastic Shotshell Casing +item.casing.buckshot_advanced.name=Advanced Shotshell Casing +item.catalyst_clay.name=ГлОМОстый каталОзатПр +item.catalytic_converter.name=КаталОтОческОй кПМвертер +item.cbt_device.name=CBT-Ўевайс +item.cell_anti_schrabidium.name=ПрПбОрка с аМтОшрабОЎОеЌ +item.cell_antimatter.name=ПрПбОрка с аМтОЌатерОей +item.cell_balefire.name=ПрПбОрка с газППбразМыЌ жар-плаЌеМеЌ +item.cell_deuterium.name=ПрПбОрка с ЎейтерОеЌ +item.cell_empty.name=Пустая прПбОрка +item.cell_puf6.name=ПрПбОрка с гексафтПрОЎПЌ плутПМОя +item.cell_sas3.name=ПрПбОрка с трОсульфОЎПЌ шрабОЎОя +item.cell_tritium.name=ПрПбОрка с трОтОеЌ +item.cell_uf6.name=ПрПбОрка с гексафтПрОЎПЌ ураМа +item.centri_stick.name=ЊеМтрОфуга Ма палке +item.centrifuge_element.name=ЭлеЌеМт цеМтрОфугО +item.centrifuge_tower.name=БашМя цеМтрОфугО +item.chainsaw.name=БеМзПпОла +item.cheese.name=Сыр +item.cheese_quesadilla.name=СырМая кесаЎОлья +item.chemical_dye.black.name=ХОЌОческОй красОтель (ЧерМый) +item.chemical_dye.blue.name=ХОЌОческОй красОтель (СОМОй) +item.chemical_dye.brown.name=ХОЌОческОй красОтель (КПрОчМевый) +item.chemical_dye.cyan.name=ХОЌОческОй красОтель (ГПлубПй) +item.chemical_dye.gray.name=ХОЌОческОй красОтель (Серый) +item.chemical_dye.green.name=ХОЌОческОй красОтель (ЗелёМый) +item.chemical_dye.lightblue.name=ХОЌОческОй красОтель (СветлП-сОМОй) +item.chemical_dye.lime.name=ХОЌОческОй красОтель (ЛайЌПвый) +item.chemical_dye.magenta.name=ХОЌОческОй красОтель (ПурпурМый) +item.chemical_dye.orange.name=ХОЌОческОй красОтель (ОраМжевый) +item.chemical_dye.pink.name=ХОЌОческОй красОтель (РПзПвый) +item.chemical_dye.purple.name=ХОЌОческОй красОтель (ЀОПлетПвый) +item.chemical_dye.red.name=ХОЌОческОй красОтель (КрасМый) +item.chemical_dye.silver.name=ХОЌОческОй красОтель (СветлП-серый) +item.chemical_dye.white.name=ХОЌОческОй красОтель (Белый) +item.chemical_dye.yellow.name=ХОЌОческОй красОтель (Жёлтый) +item.chemistry_set.name=ЛабПратПрМая пПсуЎа +item.chemistry_set_boron.name=ЛабПратПрМая пПсуЎа (БПрМПе стеклП) +item.chemistry_template.name=КаблПМ хОЌОческПй ЌашОМы: +item.chernobylsign.name=БПевПй тПпПр Оз ЧерМПбыльскПгП преЎупрежЎающегП зМака +item.chlorine_pinwheel.name=ХлПрМая вертушка +item.chlorophyte_axe.name=ХлПрПфОтПвый тПпПр +item.chlorophyte_pickaxe.name=ХлПрПфОтПвая кОрка +item.chocolate.name=ЀОрЌеММый раЎОевый шПкПлаЎ +item.chocolate.desc=Radium Chocolate? Pretty sure this is just meth. +item.chocolate_milk.name=МПлПчМый шПкПлаЎ +item.chopper.name=ВертПлёт-ПхПтМОк +item.chopper_blades.name=ЛПпастО ВертПлёта-ПхПтМОка +item.chopper_gun.name=ОгМевая устаМПвка +item.chopper_head.name=КабОМа ВертПлета-ПхПтМОка +item.chopper_tail.name=ХвПст ВертПлёта-ПхПтМОка +item.chopper_torso.name=КПрпус ВертПлёта-ПхПтМОка +item.chopper_wing.name=КрылП ВертПлета-ПхПтМОка +item.chunk_ore.malachite.name=Malachite Chunk +item.chunk_ore.rare.name=КусПк реЎкПзеЌельМПй руЎы +item.chunk_ore.cryolite.name=Cryolite Chunk +item.cigarette.name=СОгарета ЌаркО "FFI" +item.cinnebar.name=КОМПварь +item.circuit.advanced.name=ВПеММая ЌОкрПсхеЌа +item.circuit.analog.name=АМалПгПвая плата +item.circuit.atomic_clock.name=АтПЌМые часы +item.circuit.basic.name=ИМтегральМая схеЌа +item.circuit.bismoid.name=ПереЎПвая ЌОкрПсхеЌа +item.circuit.capacitor.name=КПМЎеМсатПр +item.circuit.capacitor_board.name=КПМЎеМсатПрМая плата +item.circuit.capacitor_tantalium.name=ТаМталПвый кПМЎеМсатПр +item.circuit.chip.name=МОкрПчОп +item.circuit.chip_bismoid.name=ПереЎПвПй ОМтегральМый ЌОкрПчОп +item.circuit.chip_quantum.name=ТверЎПтельМый кваМтПвый прПцессПр +item.circuit.controller.name=БлПк управлеМОя +item.circuit.controller_advanced.name=ПрПЎвОМутый блПк управлеМОя +item.circuit.controller_chassis.name=КПрпус блПка управлеМОя +item.circuit.controller_quantum.name=КваМтПвый кПЌпьютер +item.circuit.pcb.name=ПечатМая плата +item.circuit.quantum.name=УстрПйствП кваМтПвПй ПбрабПткО +item.circuit.silicon.name=ПечатМая креЌМОевая пластОМа +item.circuit.vacuum_tube.name=ВакууЌМая трубка +item.circuit_aluminium.name=ПрПстая ЌОкрПсхеЌа +item.circuit_arsenic.name=ГОбкая ЌОкрПсхеЌа +item.circuit_arsenic_raw.name=СбПрка гОбкПй ЌОкрПсхеЌы +item.circuit_bismuth.name=УМОверсальМый чОпсет +item.circuit_bismuth_raw.name=СбПрка уМОверсальМПгП чОпсета +item.circuit_copper.name=ПрПЎвОМутая ЌОкрПсхеЌа +item.circuit_gold.name=РазПгМаММая ЌОкрПсхеЌа +item.circuit_raw.name=СбПрка прПстПй ЌОкрПсхеЌы +item.circuit_red_copper.name=УсПвершеМствПваММая ЌОкрПсхеЌа +item.circuit_schrabidium.name=ВысПкПпрПОзвПЎОтельМая ЌОкрПсхеЌа +item.circuit_star.name=МатерОМская плата ЗвёзЎМПгП ДОспетчера +item.circuit_star.desc=Не ОспПльзуется сейчас Оз-за ПтсутствОя ПперацОПММПй сОстеЌы. +item.circuit_star_component.card.name=Карта расшОреМОя ЗвёзЎМПгП ДОспетчера +item.circuit_star_component.chipset.name=ЧОпсет ЗвёзЎМПгП ДОспетчера +item.circuit_star_component.cpu.name=ПрПцессПр ЗвёзЎМПгП ДОспетчера +item.circuit_star_component.ram.name=ОператОвМая паЌять ЗвёзЎМПгП ДОспетчера +item.circuit_star_piece.board_blank.name=ЗД - ПечатМая плата +item.circuit_star_piece.board_converter.name=ЗД - ПреПбразПватель МапряжеМОя +item.circuit_star_piece.board_transistor.name=ЗД - ТраМзОстПры +item.circuit_star_piece.bridge_bios.name=ЗД - ЧОп БИОС +item.circuit_star_piece.bridge_bus.name=ЗД - КОМа +item.circuit_star_piece.bridge_chipset.name=ЗД - ЧОпсет +item.circuit_star_piece.bridge_cmos.name=ЗД - ПаЌять БИОС +item.circuit_star_piece.bridge_io.name=ЗД - ЧОп ВвПЎа/ВывПЎа +item.circuit_star_piece.bridge_north.name=ЗД - СеверМый ЌПст +item.circuit_star_piece.bridge_south.name=ЗД - ЮжМый ЌПст +item.circuit_star_piece.card_board.name=ЗД - Плата карты расшОреМОя +item.circuit_star_piece.card_processor.name=ЗД - ПрПцессПр платы расшОреМОя +item.circuit_star_piece.cpu_cache.name=ЗД - Кэш прПцессПра +item.circuit_star_piece.cpu_clock.name=ЗД - Часы прПцессПра +item.circuit_star_piece.cpu_ext.name=ЗД - МышьякПвый пПлупрПвПЎМОкПвый расшОрОтель +item.circuit_star_piece.cpu_logic.name=ЗД - АрОфЌетОкП-лПгОческПе устрПйствП +item.circuit_star_piece.cpu_register.name=ЗД - РегОстр прПцессПра +item.circuit_star_piece.cpu_socket.name=ЗД - РазъеЌ Ўля прПцессПра +item.circuit_star_piece.mem_socket.name=ЗД - РазъеЌ Ўля паЌятО +item.circuit_star_piece.mem_16k_a.name=ЗД - СлПт Ўля карты ПаЌятО 16k A +item.circuit_star_piece.mem_16k_b.name=ЗД - СлПт Ўля карты ПаЌятО 16k B +item.circuit_star_piece.mem_16k_c.name=ЗД - СлПт Ўля карты ПаЌятО 16k C +item.circuit_star_piece.mem_16k_d.name=ЗД - СлПт Ўля карты ПаЌятО 16k D +item.circuit_tantalium.name=КПМЎеМсатПрМая плата +item.circuit_tantalium_raw.name=СбПрка кПМЎеМсатПрМПй платы +item.circuit_targeting_tier1.name=ПечатМая плата вПеММПгП класса (УрПвеМь 1) +item.circuit_targeting_tier2.name=ПечатМая плата вПеММПгП класса (УрПвеМь 2) +item.circuit_targeting_tier3.name=ПечатМая плата вПеММПгП класса (УрПвеМь 3) +item.circuit_targeting_tier4.name=ПечатМая плата вПеММПгП класса (УрПвеМь 4) +item.circuit_targeting_tier5.name=ПечатМая плата вПеММПгП класса (УрПвеМь 5) +item.circuit_targeting_tier6.name=ПечатМая плата вПеММПгП класса (УрПвеМь 6) +item.cladding_desh.name=ОбшОвка Оз Ўеш +item.cladding_ghiorsium.name=ПрПклаЎка Оз гОПрсОя +item.cladding_iron.name=ЖелезМая ПбшОвка +item.cladding_lead.name=СвОМцПвая ПбшОвка +item.cladding_obsidian.name=ПрПклаЎка Оз ПбсОЎОаМа +item.cladding_paint.name=СвОМцПвая краска +item.cladding_rubber.name=РезОМПвая ПбшОвка +item.clay_tablet.name=Clay Tablet +item.clip_bf.name=ДвПйМПй НабПр Жар-сМаряЎПв +item.clip_bolt_action.name=КПрПбка Оз 12х74 пуль +item.clip_cryolator.name=Бак КрОПлятПрМПгП тПплОва +item.clip_defabricator.name=ППяс с эМергП-ячейкаЌО ДефабрОкатПра +item.clip_emp.name=НебПльшПй упакПвка эМергетОческОх ячеек +item.clip_euthanasia.name=ППслеЎМяя аптечка +item.clip_fatman.name=Кесть упакПвПк яЎерМых ЌОМО-сМаряЎПв +item.clip_hp.name=ЧерМОльМые БакО +item.clip_immolator.name=Бак с тПплОвПЌ ИЌЌПлятПра +item.clip_jack.name=КПрПбка четверМых патрПМПв картечО 12х70 +item.clip_lever_action.name=КПрПбка патрПМПв картечО 12х74 +item.clip_mirv.name=ТрО-в-ПЎМПЌ пакет ЌОМО-МИРВПв +item.clip_mp.name=БрОтаМскОй вПеММый стаМЎарт ЌагазОМа штурЌПвПй вОМтПвкО +item.clip_mp40.name=ОбПйЌа пПлуавтПЌата 9ЌЌ +item.clip_osipr.name=ОбПйЌа AR2 +item.clip_revolver.name=КПрПбПчка патрПМПв калОбра .357 +item.clip_revolver_cursed.name=БрОтаМскОй вПеММый стаМЎарт пОстПлетМПй ПбПйЌы +item.clip_revolver_gold.name=МалеМькОй суМЎучПк с зПлПтыЌО пуляЌО +item.clip_revolver_iron.name=КПрПбка с железМыЌО патрПМаЌО +item.clip_revolver_lead.name=КПрПбка яЎерМых пуль +item.clip_revolver_nightmare.name=МешПчек с пуляЌО +item.clip_revolver_nightmare2.name=ППяс с лазерМПй картечью +item.clip_revolver_nopip.name=КПрПбПчка с патрПМаЌО .44 калОбра +item.clip_revolver_pip.name=СкПрПстМПй загрузчОк с заражёММыЌО пуляЌО +item.clip_revolver_schrabidium.name=КПМтейМер Ўля шрабОЎОевых бПепрОпасПв +item.clip_rpg.name=КПМтейМер с ракетаЌО +item.clip_spark.name=БПльшПй ЭлектрПЌагМОтМый КартрОЎж +item.clip_stinger.name=УпакПвка ракет "СтОМгер" +item.clip_uboinik.name=КПрПбка патрПМПв картечО 12x70 +item.clip_uzi.name=ОбПйЌа .22 LR ПатрПМПв +item.clip_xvl1456.name=БПльшая КПрПбка с ОзПтПпаЌО +item.cmb_axe.name=ТПпПр Оз сталО АльяМса +item.cmb_boots.name=БПтОМкО Оз сталО АльяМса +item.cmb_helmet.name=КлеЌ Оз сталО АльяМса +item.cmb_hoe.name=МПтыга Оз сталО АльяМса +item.cmb_legs.name=ППМПжО Оз сталО АльяМса +item.cmb_pickaxe.name=КОрка Оз сталО АльяМса +item.cmb_plate.name=НагруЎМОк Оз сталО АльяМса +item.cmb_shovel.name=ЛПпата Оз сталО АльяМса +item.cmb_sword.name=Меч Оз сталО АльяМса +item.coal_infernal.name=АЎскОй угПль +item.cobalt_axe.name=КПбальтПвый тПпПр +item.cobalt_boots.name=КПбальтПвые бПтОМкО +item.cobalt_decorated_axe.name=ДекПрОрПваММый кПбальтПвый тПпПр +item.cobalt_decorated_hoe.name=ДекПрОрПваММая кПбальтПвая ЌПтыга +item.cobalt_decorated_pickaxe.name=ДекПрОрПваММая кПбальтПвая кОрка +item.cobalt_decorated_shovel.name=ДекПрОрПваММая кПбальтПвая лПпата +item.cobalt_decorated_sword.name=ДекПрОрПваММый кПбальтПвый Ќеч +item.cobalt_helmet.name=КПбальтПвый шлеЌ +item.cobalt_hoe.name=КПбальтПвая ЌПтыга +item.cobalt_legs.name=КПбальтПвые пПМПжО +item.cobalt_pickaxe.name=КПбальтПвая кОрка +item.cobalt_plate.name=КПбальтПвый МагруЎМОк +item.cobalt_shovel.name=КПбальтПвая лПпата +item.cobalt_sword.name=КПбальтПвый Ќеч +item.coffee.name=КПфе +item.coffee_radium.name=КПфе с раЎОеЌ +item.coil_advanced_alloy.name=СверхпрПвПЎящая катушка +item.coil_advanced_torus.name=СверхпрПвПЎящая кПльцевая катушка +item.coil_copper.name=МеЎМая катушка +item.coil_copper_torus.name=КПльцевая катушка +item.coil_gold.name=ЗПлПтая катушка +item.coil_gold_torus.name=ЗПлПтая кПльцевая катушка +item.coil_magnetized_tungsten.name=4000K ВысПкПтеЌпературМая сверхпрПвПЎящая катушка +item.coil_tungsten.name=НагревательМый элеЌеМт +item.coin_creeper.name=МПМета ЯЎерМПгП крОпера +item.coin_maskman.name=МПМета МаскЌеМа +item.coin_radiation.name=МПМета РаЎОацОО +item.coin_siege.name=МПМета ПсаЎы +item.coin_ufo.name=МПМета НЛО +item.coin_worm.name=МПМета Баллс-О-ТрПМ +item.coke.coal.name=УгПльМый кПкс +item.coke.lignite.name=Бурый кПкс +item.coke.petroleum.name=НефтяМПй кПкс +item.coltan_tool.name=КПлтасс +item.combine_scrap.name=МеталлПлПЌ АльяМса +item.component_emitter.name=КПЌпПМеМт Озлучателя +item.component_limiter.name=КПЌпПМеМт стабОлОзатПра +item.containment_box.name=ЗащОтМая кПрПбка +item.cordite.name=КПрЎОт +item.cotton_candy.name=РаЎОПактОвМая сахарМая вата +item.crackpipe.name=ОзЎПрПвОтельМая трубка +item.crate_caller.name=ЗапрПсчОк пПставкО прОпасПв +item.crayon.black.name=ЧерМый ЌелПк +item.crayon.blue.name=СОМОй ЌелПк +item.crayon.brown.name=КПрОчМевый ЌелПк +item.crayon.cyan.name=ГПлубПй ЌелПк +item.crayon.gray.name=Серый ЌелПк +item.crayon.green.name=ЗелёМый ЌелПк +item.crayon.lightblue.name=СветлП-сОМОй ЌелПк +item.crayon.lime.name=ЛайЌПвый ЌелПк +item.crayon.magenta.name=ПурпурМый ЌелПк +item.crayon.orange.name=ОраМжевый ЌелПк +item.crayon.pink.name=РПзПвый ЌелПк +item.crayon.purple.name=ЀОПлетПвый ЌелПк +item.crayon.red.name=КрасМый ЌелПк +item.crayon.silver.name=СветлП-серый ЌелПк +item.crayon.white.name=Белый ЌелПкitem.crayon.yellow.name=Желтый ЌелПк +item.crowbar.name=Mk.V УстрПйствП Для ВскрытОя ЯщОкПв "ЛПЌ" +item.crucible.name="ГПрМОлП Палача" +item.crucible_template.name=КаблПМ плавОльМО: +item.crystal_aluminium.name=КрОсталлОзПваММый алюЌОМОй +item.crystal_beryllium.name=КрОсталлОзПваММый берОллОй +item.crystal_charred.name=ОбуглеММый крОсталл +item.crystal_charred.desc=ВысПкПкачествеММый сОлОкат, слегка ПбПжжеММый. +item.crystal_charred.desc.P11=Также МастПящОй рПг. СтраММП, правЎа? +item.crystal_coal.name=КрОсталлОзПваММый угПль +item.crystal_cobalt.name=КрОсталОзПваММый кПбальт +item.crystal_copper.name=КрОсталлОзПваММая ЌеЎь +item.crystal_cinnebar.name=КрОсталлОзПваММая кОМПварь +item.crystal_diamond.name=КрОсталОзПваММый алЌаз +item.crystal_energy.name=ЭМергетОческОй крОсталл +item.crystal_fluorite.name=КрОсталлОзПваММый флюПрОт +item.crystal_gold.name=КрОсталлОзПваММПе зПлПтП +item.crystal_horn.name=КрОсталльМый рПг +item.crystal_horn.desc=Не МастПящОй рПг. +item.crystal_horn.desc.P11=НастПящОй рПг. +item.crystal_iron.name=КрОсталлОзПваММПе железП +item.crystal_lead.name=КрОсталлОзПваММый свОМец +item.crystal_lapis.name=КрОсталОзПваММый лазурОт +item.crystal_lithium.name=КрОсталОзПваММый лОтОй +item.crystal_niter.name=КрОсталлОзПваММая селОтра +item.crystal_osmiridium.name=КрОсталОзПваММый ПсЌОрОЎОй +item.crystal_phosphorus.name=КрОсталлОзПваММый фПсфПр +item.crystal_plutonium.name=КрОсталлОзПваММый плутПМОй +item.crystal_rare.name=КрОсталОзПваММые лаМтаМПОЎы +item.crystal_redstone.name=КрОсталлОзПваММая красМая пыль +item.crystal_schrabidium.name=КрОсталлОзПваММый шрабОЎОй +item.crystal_schraranium.name=КрОсталлОзПваММый шрараМОй +item.crystal_starmetal.name=КрОсталОзПваММый звёзЎМый Ќеталл +item.crystal_sulfur.name=КрОсталлОзПваММая сера +item.crystal_thorium.name=КрОсталлОзПваММый тПрОй +item.crystal_titanium.name=КрОсталлОзПваММый тОтаМ +item.crystal_trixite.name=КрОсталлОзПваММый трОксОт +item.crystal_tungsten.name=КрОсталлОзПваММый вПльфраЌ +item.crystal_uranium.name=КрОсталлОзПваММый ураМ +item.crystal_xen.name=ИскусствеММый крОсталл ЗеМа +item.crt_display.name=ЭлектрПММП-лучевая трубка +item.cube_power.name=Куб электрПМОя +item.custom_amat.name=АМтОвеществеММый заряЎ кастПЌМПй бПЌбы +item.custom_dirty.name=ГрязМый заряЎ кастПЌМПй бПЌбы +item.custom_fall.name=УлучшеМОе кастПЌМПй бПЌбы (УЎар с Меба) +item.custom_fall.desc=ЭтП тП, чегП вы все тааааааак жЎалО!$Сбрасывает бПЌбу прО актОвацОО +item.custom_hydro.name=ВПЎПрПЎМый заряЎ кастПЌМПй бПЌбы +item.custom_kit.name=КПЌплект ППльзПвательскПй бПЌбы +item.custom_nuke.name=ЯЎерМый заряЎ кастПЌМПй бПЌбы +item.custom_schrab.name=КрабОЎОевый заряЎ кастПЌМПй бПЌбы +item.custom_tnt.name=ВзрывМПй заряЎ кастПЌМПй бПЌбы +item.cyclotron_tower.name=БашМя цОклПтрПМа +item.debris_concrete.name=БПльшПй кусПк бетПМа +item.debris_element.name=ППврежЎёММый тПплОвМый элеЌеМт +item.debris_exchanger.name=ОблПЌПк теплППбЌеМОка +item.debris_fuel.name=Часть тПплОвМПгП стержМя РБМК +item.debris_graphite.name=ГПрячОй кусПк графОта +item.debris_metal.name=ППкПрёжеММая ЌеталлОческая балка +item.debris_shrapnel.name=МеталлОческая шрапМель +item.definitelyfood.name=ИРП +item.defuser.name=ВысПкПтехМПлПгОчМПе устрПйствП Ўля разЌОМОрПваМОя +item.defuser_gold.name=ЗПлПтые кусачкО +item.demon_core_closed.name=Закрытый ЗаряЎ-ДеЌПМ +item.demon_core_open.name=ПрОПстаМПвлеММый ЗаряЎ-ДеЌПМ +item.desh_axe.name=ТПпПр Оз рабПчегП сплава +item.desh_hoe.name=МПтыга Оз рабПчегП сплава +item.desh_pickaxe.name=КОрка Оз рабПчегП сплава +item.desh_shovel.name=ЛПпата Оз рабПчегП сплава +item.desh_sword.name=Меч Оз рабПчегП сплава +item.designator.name=Њелеуказатель блОжМегП ЎействОя +item.designator_arty_range.name=АртОллерОйскОй целеуказатель +item.designator_manual.name=РучМПй целеуказатель +item.designator_range.name=Њелеуказатель ЎальМегП ЎействОя +item.detonator.name=ДетПМатПр +item.detonator_de.name=Взрывчатка Ќертвеца +item.detonator_deadman.name=ДетПМатПр Ќертвеца +item.detonator_laser.name=ЛазерМый ЎетПМатПр +item.detonator_multi.name=МультО-ЎетПМатПр +item.deuterium_filter.name=ДейтерОевый фОльтр +item.diamond_gavel.name=АлЌазМый ЌПлПтПк +item.dieselsuit_boots.name=ВысПкОе каблукО с ЎОзельМыЌ ЎвОгателеЌ +item.dieselsuit_helmet.name=ГПлПвМПй ЎатчОк Пкружающей среЎы с ЎОзельМыЌ ЎвОгателеЌ +item.dieselsuit_legs.name=СервПпрОвПЎы Ўля МПг с ЎОзельМыЌ прОвПЎПЌ +item.dieselsuit_plate.name=КОберМетОка с ЎОзельМыЌ ЎвОгателеЌ +item.digamma_diagnostic.name=ДОагМПстОка ЎОгаЌЌы +item.disperser_canister.name= КаМОстра рассеОвателя: +item.disperser_canister_empty.name= КаМОстра рассеОвателя +item.dns_boots.name=БПтОМкО DNT-НаМПкПстюЌа +item.dns_legs.name=ППМПжО DNT-НаМПкПстюЌа +item.dns_helmet.name=КлеЌ DNT-НаМПкПстюЌа +item.dns_plate.name=НагруЎМОк DNT-НаМПкПстюЌа +item.dnt_boots.name=ЎаеМайтрОевые бПтОМкО +item.dnt_legs.name=ЎОМейтрПМПвые пПМПжО +item.dnt_helmet.name=ЎОМПтрПМОЌу шлеЌ +item.dnt_plate.name=ЎОМейтрПЌы МагруЎМОк +item.dnt_sword.name=dinuatureum sword +item.door_bunker.name=БуМкерМая Ўверь item.door_metal.name=МеталлОческая Ўверь item.door_office.name=ОфОсМая Ўверь -item.door_bunker.name=БуМкерМая Ўверь -tile.door_metal.name=МеталлОческая Ўверь -tile.door_office.name=ОфОсМая Ўверь -tile.door_bunker.name=БуМкерМая Ўверь item.door_red.name=КрасМая Ўверь -tile.door_red.name=КрасМая Ўверь -tile.sliding_blast_door.name=РазЎвОжМая Ўверь -item.sliding_blast_door_skin.0.name=СкОМ разЎвОжМПй ЎверО: ОбычМый -item.sliding_blast_door_skin.1.name=СкОМ разЎвОжМПй ЎверО: ВарОаМт 1 -item.sliding_blast_door_skin.2.name=СкОМ разЎвОжМПй ЎверО: ВарОаМт 2 -tile.large_vehicle_door.name=Дверь Ўля крупМПгабарОтМых автПЌПбОлей -tile.water_door.name=ППЎвПЎМая Ўверь -tile.qe_containment.name=QE Дверь бОПлПгОческПгП сЎержОваМОя -tile.qe_sliding_door.name=QE РазЎвОжМая Ўверь -tile.round_airlock_door.name=Круглый шлюз -tile.secure_access_door.name=Дверь с ОзПлОрПваММыЌ ЎПступПЌ -tile.sliding_seal_door.name=РазЎвОжМая герЌетОчМая Ўверь - -item.nugget_uranium.name=УраМПвый саЌПрПЎПк -item.nugget_plutonium.name=ПлутПМОевый саЌПрПЎПк -item.nugget_neptunium.name=НептуМОевый саЌПрПЎПк -item.nugget_neptunium_fuel.name=СаЌПрПЎПк МептуМОевПгП тПплОва -item.ingot_neptunium.name=НептуМОевый слОтПк -item.ingot_neptunium.desc=ВПт этПт ЌПй любОЌый! -item.ingot_neptunium.desc.P11=УУУ, страшМП! -item.ingot_ferrouranium.name=ЀеррПураМОевый слОтПк -item.nugget_lead.name=СвОМцПвый саЌПрПЎПк -item.ingot_lead.name=СвОМцПвый слОтПк -tile.block_lead.name=СвОМцПвый блПк -tile.ore_lead.name=СвОМцПвая руЎа -item.powder_lead.name=СвОМцПвый пПрПшПк -item.powder_neptunium.name=НептуМОевый пПрПшПк -item.powder_schrabidium.name=КрабОЎОевый пПрПшПк -item.powder_iron.name=ЖелезМый пПрПшПк -item.powder_gold.name=ЗПлПтПй пПрПшПк -item.powder_aluminium.name=АлюЌОМОевый пПрПшПк -item.powder_asbestos.name=АсбестПвый пПрПшПк -item.powder_asbestos.desc=§o"ЀЀЀЀЀЀЀЀЀЀ- ММХХХХХХХХХХХХХ"§r -item.powder_beryllium.name=БерОллОевый пПрПшПк -item.powder_copper.name=МеЎМый пПрПшПк -item.powder_titanium.name=ТОтаМПвый пПрПшПк -item.powder_tungsten.name=ВПльфраЌПвый пПрПшПк -item.powder_uranium.name=УраМПвый пПрПшПк -item.powder_plutonium.name=ПлутПМОевый пПрПшПк +item.dosimeter.name=ДПзОЌетр +item.drax.name=Терра-бур +item.drax_mk2.name=УсОлеММый терра-бур +item.drax_mk3.name=КрабОЎОевый терра-бур +item.drillbit_desh.name=Деш-гПлПвка бура +item.drillbit_desh_diamond.name=Деш-гПлПвка бура (с алЌазМыЌ МапылеМОеЌ) +item.drillbit_ferro.name=ГПлПвка бура Оз феррПураМа +item.drillbit_ferro_diamond.name=ГПлПвка бура Оз феррПураМа (с алЌазМыЌ МапылеМОеЌ) +item.drillbit_hss.name=ГПлПвка бура Оз высПкПскПрПстМПй сталО +item.drillbit_hss_diamond.name=ГПлПвка бура Оз высПкПскПрПстМПй сталО (с алЌазМыЌ МапылеМОеЌ) +item.drillbit_steel.name=ГПлПвка бура Оз сталО +item.drillbit_steel_diamond.name=ГПлПвка бура Оз сталО (с алЌазМыЌ МапылеМОеЌ) +item.drillbit_tcalloy.name=ГПлПвка бура Оз техМецОевПй сталО +item.drillbit_tcalloy_diamond.name=ГПлПвка бура Оз техМецОевПй сталО (с алЌазМыЌ МапылеМОеЌ) +item.drill_titanium.name=ТОтаМПвый бур +item.drone.patrol.name=ТраМспПртМый ЎрПМ +item.drone.patrol.desc=Путешествует пП Ќаршруту с путевыЌО тПчкаЌО$Пытается загрузОться/разгрузОться кажЎый раз, кПгЎа ЎПстОгает ящОка с ЎрПМаЌО$Правый клОк Ма ящОке с ЎрПМаЌО Ўля разЌещеМОя. +item.drone.patrol_chunkloading.name=ТраМспПртМый ЎрПМ (ЧаМклПаЎер) +item.drone.patrol_chunkloading.desc=Путешествует пП Ќаршруту с путевыЌО тПчкаЌО$Пытается загрузОться/разгрузОться кажЎый раз, кПгЎа ЎПстОгает ящОка с ЎрПМаЌО$Правый клОк Ма ящОке с ЎрПМаЌО Ўля разЌещеМОя.$Загружает кускО! +item.drone.patrol_express.name=Быстрый траМспПртМый ЎрПМ +item.drone.patrol_express.desc=Путешествует пП Ќаршруту с путевыЌО тПчкаЌО$Пытается загрузОться/разгрузОться кажЎый раз, кПгЎа ЎПстОгает ящОка с ЎрПМаЌО$Правый клОк Ма ящОке с ЎрПМаЌО Ўля разЌещеМОя. +item.drone.patrol_express_chunkloading.name=Быстрый траМспПртМый ЎрПМ (ЧаМклПаЎер) +item.drone.patrol_express_chunkloading.desc=Путешествует пП Ќаршруту с путевыЌО тПчкаЌО$Пытается загрузОться/разгрузОться кажЎый раз, кПгЎа ЎПстОгает ящОка с ЎрПМаЌО$Правый клОк пПверх ящОка с ЎрПМаЌО Ўля разЌещеМОя.$Загружает кускО! +item.drone.request.name=ЛПгОстОческОй ЎрПМ +item.drone.request.desc=ИспПльзуется ЎПкаЌО лПгОстОческОх ЎрПМПв Ўля пПрПжЎеМОя лПгОстОческОх ЎрПМПв$ДрПМы слеЎуют пП путевыЌ тПчкаЌ лПгОстОческОх ЎрПМПв$ППсле выпПлМеМОя запрПса ЎрПМ вПзвращается в ЎПк. +item.drone_linker.name=СПеЎОМОтель пассОвМых ящОкПв Ўля ЎрПМПв +item.ducttape.name=СкПтч item.dust.name=Пыль item.dust.desc=НеМавОжу пыль! item.dust.desc.P11=Ещё ПЎОМ паЎает в пыль! item.dust_tiny.name=Кучка пылО -item.powder_chlorophyte.name=ХлПрПфОтПвый пПрПшПк -item.powder_coal.name=УгПльМый пПрПшПк -item.powder_lapis.name=ЛазурОтМый пПрПшПк -item.powder_emerald.name=ИзуЌруЎМый пПрПшПк -item.powder_diamond.name=АлЌазМый пПрПшПк -item.powder_red_copper.name=КрасМПЌеЎМый пПрПшПк -item.powder_steel.name=СтальМПй пПрПшПк -item.powder_tcalloy.name=ППрПшПк техМецОевПй сталО -item.powder_magnetized_tungsten.name=ИзЌельчеММый МаЌагМОчеММый вПльфраЌ -item.powder_combine_steel.name=ИзЌельчеММая сталь АльяМса -item.powder_lithium.name=ЛОтОевый пПрПшПк -item.powder_advanced_alloy.name=ППрПшПк прПЎвОМутПгП сплава -item.powder_quartz.name=Кварцевый пПрПшПк -item.powder_power.name=ЭМергП-пПрПшПк -item.powder_semtex_mix.name=СЌесь сеЌтекса -item.powder_iodine.name=ППрПшПк ОПЎа -item.powder_thorium.name=ТПрОевый пПрПшПк -item.powder_neodymium.name=НеПЎОЌПвый пПрПшПк -item.powder_astatine.name=АстатПвый пПрПшПк -item.powder_caesium.name=ЊезОевый пПрПшПк -item.powder_balefire.name=ТерЌПяЎерМый пепел -item.powder_australium.name=АвстралОевый пПрПшПк -item.powder_weidanium.name=ВейЎаМПвый пПрПшПк -item.powder_reiium.name=РеОевый пПрПшПк -item.powder_unobtainium.name=НеЎПстатОевый пПрПшПк -item.powder_daffergon.name=ДаффергПМПвый пПрПшПк -item.powder_verticium.name=ВертОцОевый пПрПшПк -item.powder_strontium.name=СтрПМцОевый пПрПшПк -item.powder_cobalt.name=КПбальтПвый пПрПшПк -item.powder_bromine.name=ППрПшПк брПЌа -item.powder_niobium.name=НОПбОевый пПрПшПк -item.powder_tennessine.name=ТеММессОМПвый пПрПшПк -item.powder_cerium.name=ЊерОевый пПрПшПк -item.powder_dura_steel.name=ИзЌельчеММая высПкПскПрПстМая сталь -item.powder_polonium.name=ППрПшПк пПлПМОя-210 -item.powder_polymer.name=ППлОЌерМый пПрПшПк -item.powder_bakelite.name=БакелОтПвый пПрПшПк -item.powder_lanthanium.name=ЛаМтаМПвый пПрПшПк -item.powder_actinium.name=АктОМОевый пПрПшПк -item.powder_coal_tiny.name=Кучка угПльМПгП пПрПшка -item.powder_lithium_tiny.name=Кучка лОтОевПгП пПрПшка -item.powder_cobalt_tiny.name=Кучка кПбальтПвПгП пПрПшка -item.powder_neodymium_tiny.name=Кучка МеПЎОЌПвПгП пПрПшка -item.powder_niobium_tiny.name=Кучка МОПбОевПгП пПрПшка -item.powder_cerium_tiny.name=Кучка церОевПгП пПрПшка -item.powder_lanthanium_tiny.name=Кучка лаМтаМПвПгП пПрПшка -item.powder_actinium_tiny.name=Кучка актОМОевПгП пПрПшка -item.powder_euphemium.name=ЭвфеЌОевый пПрПшПк -item.powder_euphemium.desc=ИзЌельчеММый рПзПвый.$На вкус как клубМОка. -item.powder_meteorite.name=МетеПрОтМый пПрПшПк -item.powder_meteorite_tiny.name=Кучка ЌетеПрОтМПгП пПрПшка -item.powder_yellowcake.name=ЙеллПукейк -item.powder_magic.name=ИзЌельчеММПе зачарПваМОе -item.redstone_depleted.name=ОбесцвечеММая красМая пыль -item.powder_steel_tiny.name=Кучка стальМПгП пПрПшка +item.dwarven_pickaxe.name=ДварфОйская кОрка +item.dynosphere_base.name=КаблПМ ДОМПсферы +item.dynosphere_desh.name=ДОМПсфера Оз Ўеш +item.dynosphere_desh_charged.name=ДОМПсфера Оз Ўеш (ЗаряжеММая) +item.dynosphere_dineutronium.name=ДОМейтрПМОевая ЎОМПсфера +item.dynosphere_dineutronium_charged.name=ДОМейтрПМОевая ЎОМПсфера (ЗаряжеММая) +item.dynosphere_euphemium.name=ЭвфеЌОевая ЎОМПсфера +item.dynosphere_euphemium_charged.name=ЭвфеЌОевая ЎОМПсфера (ЗаряжеММая) +item.dynosphere_schrabidium.name=КрабОЎОевая ЎОМПсфера +item.dynosphere_schrabidium_charged.name=КрабОЎОевая ЎОМПсфера (ЗаряжеММая) +item.dysfunctional_reactor.name=НерабПчОй яЎерМый реактПр +item.early_explosive_lenses.name=НабПр взрывППпасМых лОМз первПгП пПкПлеМОя +item.early_explosive_lenses.desc=СбПрка Оз 8 ПскПлПчМП-фугасМых лОМз с алюЌОМОевыЌ$тПлкателеЌ, ЎюралюЌОМОевПй ПбПлПчкПй О прПвПлПчМыЌО ЎетПМатПраЌО. +item.egg_balefire.name=Жар-яйцП +item.egg_balefire.desc=Какая птОца ПтклаЎывает раЎОПактОвМые яйца? +item.egg_balefire_shard.name=Жар-ПскПлПк +item.egg_glyphid.name=ЯйцП глОфОЎПв +item.elec_axe.name=ЭлектрПпОла +item.elec_pickaxe.name=УЎарМый бур +item.elec_shovel.name=СпОральМый бур +item.elec_sword.name=ЭлектрПЎубОМка +item.energy_core.name=ИЌпрПвОзОрПваММый эМергПблПк +item.entanglement_kit.name=КПЌплект Ўля кваМтПвПгП запутываМОя +item.entanglement_kit.desc=ПреЎЌет Ўля сПзЎаМОя телепПрта.$ППзвПляет сЌещать ОзЌереМОя с пПЌПщью скаМера ресурсПв, улучшеММПгП берОллОеЌ. +item.envsuit_boots.name=БПтОМкО защОтМПгП кПстюЌа M1TTY +item.envsuit_helmet.name=КлеЌ защОтМПгП кПстюЌа M1TTY +item.envsuit_legs.name=ППМПжО защОтМПгП кПстюЌа M1TTY +item.envsuit_plate.name=НагруЎМОк защОтМПгП кПстюЌа M1TTY +item.euphemium_boots.name=ЭвфеЌОевые бПтОМкО +item.euphemium_capacitor.name=ЭвфеЌОевый кПМЎеМсатПр +item.euphemium_capacitor.desc=ППзвПляет пассОвМП рассеОвать МакПплеММую пПлПжОтельМую эМергОю. +item.euphemium_helmet.name=ЭвфеЌОевый шлеЌ +item.euphemium_kit.name=ЭвфеЌОевый кПЌплект +item.euphemium_legs.name=ЭвфеЌОевые пПМПжО +item.euphemium_plate.name=ЭвфеЌОевый МагруЎМОк +item.euphemium_stopper.name=ОграМОчОтель +item.explosive_lenses.name=НабПр взрывППпасМых лОМз +item.explosive_lenses.desc=СбПрка Оз 8 лОМз Оз пластОчМПй взрывчаткО с тПМкОЌ$алюЌОМОевыЌ тПлкателеЌ, ЎюралюЌОМОевыЌ кПрпусПЌ О$ЌОМОатюрМыЌО ЌПстПвыЌО ЎетПМатПраЌО. +item.fabsols_vodka.name=ВПЎка Fabsol'а +item.factory_core_advanced.name=ЭМергетОческОй кластер усПвершеМствПваММПй фабрОкО +item.factory_core_titanium.name=ЭМергетОческОй кластер базПвПй фабрОкО item.fallout.name=Куча раЎОПактОвМых ПсаЎкПв -item.powder_zirconium.name=ЊОркПМОевый пПрПшПк -item.powder_boron.name=БПрМый пПрПшПк -item.powder_borax.name=Бура -item.powder_chlorocalcite.name=ХлПркальцОт -item.powder_molysite.name=МПлОзОт -item.powder_boron_tiny.name=Кучка бПрМПгП пПрПшка -item.powder_at209.name=ППрПшПк астата-209 -item.powder_au198.name=ППрПшПк зПлПта-198 -item.powder_co60.name=ППрПшПк кПбальта-60 -item.powder_cs137.name=ППрПшПк цезОя-137 -item.powder_i131.name=ППрПшПк ОПЎа-131 -item.powder_i131_tiny.name=Кучка пПрПшка ОПЎа-131 -item.powder_xe135.name=ППрПшПк ксеМПМа-135 -item.powder_xe135_tiny.name=Кучка пПрПшка ксеМПМа-135 -item.powder_cs137_tiny.name=Кучка пПрПшка цезОя-137 -item.powder_coltan.name=ОчОщеММый таМталОт -item.powder_coltan_ore.name=ИзЌельчеММый КПлтаМ -item.powder_tantalium.name=ППрПшПк таМтала -item.powder_tantalium.desc='ТаМталуЌ' -item.powder_tantalium.desc.P11=АКА ТаМталОй. -item.powder_impure_osmiridium.name=ППрПшПк загрязМёММПгП ПсЌОрОЎОя -item.powder_paleogenite.name=ППрПшПк палеПгеМОта -item.powder_paleogenite_tiny.name=Кучка палеПгеМОтПвПгП пПрПшка -item.powder_tektite.name=ППрПшПк тектОта -item.powder_ra226.name=ППрПшПк раЎОя-226 -item.powder_sr90.name=ППрПшПк стрПМцОя-90 -item.powder_sr90_tiny.name=Кучка пПрПшка стрПМцОя-90 -item.powder_sawdust.name=ДревесМые ПпОлкО -item.powder_flux.name=Ѐлюс -item.powder_sodium.name=НатрОй - -item.fragment_neodymium.name=НеПЎОЌПвый ПскПлПк -item.fragment_cobalt.name=КПбальтПвый ПскПлПк -item.fragment_niobium.name=НОПбОевый ПскПлПк -item.fragment_cerium.name=ЊерОевый ПскПлПк -item.fragment_lanthanium.name=ЛаМтаМПвый ПскПлПк +item.fau_boots.name=Ѐау-бПтОМкО +item.fau_helmet.name=Ѐау-шлеЌ +item.fau_legs.name=Ѐау-пПМПжО +item.fau_plate.name=Ѐау-МагруЎМОк +item.filter_coal.name=ЀОльтр с актОвОрПваММыЌ углёЌ +item.fins_big_steel.name=БПльшОе стальМые ребра решеткО +item.fins_flat.name=ПлПскОй стальМПй кПжух +item.fins_quad_titanium.name=МалеМькОе тОтаМПвые ребра +item.fins_small_steel.name=Малые стальМые ребра решеткО +item.fins_tri_steel.name=БПльшОе стальМые ребра +item.five_htp.name=ТаблеткО эМтераЌОМа +item.five_htp.desc=УбОрает все DRX, СтабОльМПсть Ма 10 ЌОМут +item.flame_conspiracy.name=КПМспОрПлПгОческая теПрОя +item.flame_conspiracy.desc=СтальМые балкО Ме ЌПгут расплавОть реактОвМПе тПплОвП! +item.flame_opinion.name=СПбствеММПе ЌМеМОе +item.flame_opinion.desc=ЧтП ж, ЌМе этП МравОтся... +item.flame_politics.name=ППлОтОческая теЌа +item.flame_politics.desc=ДПМальЎ Дак пПстрПОт стеМу! +item.flame_pony.name=КартОМка цветМПй лПшаЎО +item.flame_pony.desc=Желтая лПшаЎь пПбежЎает сОМюю лПшаЎь, этП ЎПказаММый факт! +item.flask_infusion.shield.name=ЭлОксОр защОты +item.fleija_core.name=ЗаряЎ Ѐ.Л.Е.И Оз ураМа 235 +item.fleija_igniter.name=ИЌпульсМый вПсплаЌеМОтель +item.fleija_kit.name=КПЌплект Ѐ.Л.Е.Я +item.fleija_propellant.name=КрабОЎОевая взрывчатка +item.fluid_barrel_empty.name=Пустая бПчка Ўля жОЎкПстО +item.fluid_barrel_full.name=ЖОЎкПстМая бПчка: +item.fluid_barrel_infinite.name=БескПМечМая жОЎкПстМая бПчка +item.fluid_duct.name=ЖОЎкПстМая труба: +item.fluid_identifier.name=ИЎеМтОфОкатПр жОЎкПстО +item.fluid_identifier.info=УМОверсальМый ОЎеМтОфОкатПр жОЎкПстО: +item.fluid_identifier.usage0=Правая кМПпка ЌышО пП трубаЌ, чтПбы ПбПзМачОть Ох Ўля этПй жОЎкПстО. +item.fluid_identifier.usage1=SHIFT+ПКМ пП трубаЌ чтПбы ПбПзМачОть блОжайшОе трубы +item.fluid_identifier.usage2=в раЎОусе 64 блПкПв. +item.fluid_identifier_multi.name=МультО-жОЎкПстМый ОЎеМтОфОкатПр +item.fluid_identifier_multi.info=ЖОЎкПстМый ОЎеМтОфОкатПр Ўля: +item.fluid_identifier_multi.info2=ВтПрПй тОп: +item.fluid_tank_empty.name=ПустПй уМОверсальМый резервуар Ўля жОЎкПстО +item.fluid_tank_full.name=УМОверсальМый резервуар Ўля жОЎкПстО: +item.fluid_tank_lead_empty.name=ПустПй резервуар Ўля ПпасМых ЌатерОалПв +item.fluid_tank_lead_full.name=Резервуар с ПпасМыЌО ЌатерОалаЌО: +item.fluorite.name=ЀлюПрОт +item.flywheel_beryllium.name=БерОллевый ЌахПвОк +item.fmn.name=Таблетка флуМОтразепаЌа +item.fmn.desc=УбОрает все DRX бПлее 2,000mDRX +item.folly_bullet.name=12.8сЌ ВысПкПэМергетОческая ПбПлПчка Оз звёзЎМПгП Ќеталла +item.folly_bullet_du.name=12.8сЌ ДУ-ПбПлПчка +item.folly_bullet_nuclear.name=12.8сЌ ЯЎерМая ПбПлПчка +item.folly_shell.name=ОбПлПчка серебряМПй пулО +item.fooditem.name=пОщевПй прПЎукт item.fragment_actinium.name=АктОМОевый-227 ПскПлПк item.fragment_boron.name=БПрМый ПскПлПк -item.fragment_meteorite.name=МетеПрОтМый ПскПлПк +item.fragment_cerium.name=ЊерОевый ПскПлПк +item.fragment_cobalt.name=КПбальтПвый ПскПлПк item.fragment_coltan.name=КПлтаМ - -item.battery_generic.name=АккуЌулятПр -item.battery_advanced.name=ПрПЎвОМутый аккуЌулятПр -item.battery_lithium.name=ЛОтОй-ОПММый аккуЌулятПр -item.battery_schrabidium.name=КрабОЎОевая батарея -item.battery_spark.name=Спарк-батарея -item.battery_creative.name=БескПМечМая батарейка -item.battery_su.name=ОЎМПразПвая батарейка -item.battery_su_l.name=БПльшая ПЎМПразПвая батарейка -item.battery_trixite.name=БезыЌяММая спарк-батарея -item.battery_steam.name=ПарПвПй бак Ўля храМеМОя эМергОО -item.battery_steam_large.name=БПльшПй парПвПй бак Ўля храМеМОя эМергОО -item.battery_potato.name=КартПфельМая батарейка -item.battery_potatos.name=КартПшкОС -item.battery_red_cell.name=ЭМергПячейка Оз красМПй пылО -item.battery_advanced_cell.name=УсПвершеМствПваММая эМергПячейка -item.battery_lithium_cell.name=ЛОтОй-ОПММая эМергПячейка -item.battery_schrabidium_cell.name=КрабОЎОевая эМергПячейка -item.battery_red_cell_6.name=СшестёреММая эМергПячейка Оз красМПй пылО -item.battery_advanced_cell_4.name=СчетверёММая усПвершеМствПваММая эМергПячейка -item.battery_lithium_cell_3.name=СтрПеММая лОтОй-ОПММая эМергПячейка -item.battery_schrabidium_cell_2.name=СЎвПеММая шрабОЎОевая эМергПячейка -item.battery_red_cell_24.name=ДваЎцатОчетырёхкратМый ЌассОв Оз красМПпыльМых эМергПячеек -item.battery_advanced_cell_12.name=ДвеМаЎцатОкратМый ЌассОв Оз усПвершеМствПваММых эМергПячеек -item.battery_lithium_cell_6.name=СшестерёММая лОтОй-ОПММая эМергПячейка -item.battery_schrabidium_cell_4.name=СчетверёММая шрабОЎОевая эМергПячейка -item.battery_spark_cell_6.name=Спарк-эМергПячейка -item.battery_spark_cell_25.name=Спарк-МагОческОй аккуЌулятПр -item.battery_spark_cell_100.name=Спарк-МагОческОй ЌассОв храМеМОя эМергОО -item.battery_spark_cell_1000.name=Спарк-МагОческая Ќасс-эМергетОческая пустПта -item.battery_spark_cell_2500.name=Спарк-МагОческПе ЌПре ДОрака -item.battery_spark_cell_10000.name=УстПйчОвый прПстраМствеММП-вреЌеММПй спарк-крОсталл -item.battery_spark_cell_power.name=АбсурЎМый фОзОческОй спарк-блПк МакПплеМОя эМергОО -item.battery_sc_americium.name=СаЌПзаряжающаяся батарея с аЌерОцОеЌ-241 -item.battery_sc_gold.name=СаЌПзаряжающаяся батарея с зПлПтПЌ-198 -item.battery_sc_plutonium.name=СаЌПзаряжающаяся батарея с плутПМОеЌ-238 -item.battery_sc_polonium.name=СаЌПзаряжающаяся батарея с пПлПМОеЌ-210 -item.battery_sc_technetium.name=СаЌПзаряжающаяся батарея с техМецОеЌ-98 -item.battery_sc_uranium.name=СаЌПзаряжающаяся батарея с ураМПЌ-238 -item.battery_sc_lead.name=СаЌПзаряжающаяся батарея сП свОМцПЌ-209 - -item.upgrade_template.name=КаблПМ улучшеМОя ЌехаМОзЌа -item.upgrade_speed_1.name=УлучшеМОе ЌехаМОзЌа "СкПрПсть" урПвМя I -item.upgrade_speed_2.name=УлучшеМОе ЌехаМОзЌа "СкПрПсть" урПвМя II -item.upgrade_speed_3.name=УлучшеМОе ЌехаМОзЌа "СкПрПсть" урПвМя III -item.upgrade_effect_1.name=УлучшеМОе ЌехаМОзЌа "ЭффектОвМПсть" урПвМя I -item.upgrade_effect_2.name=УлучшеМОе ЌехаМОзЌа "ЭффектОвМПсть" урПвМя II -item.upgrade_effect_3.name=УлучшеМОе ЌехаМОзЌа "ЭффектОвМПсть" урПвМя III -item.upgrade_power_1.name=УлучшеМОе ЌехаМОзЌа "ЭМергПсбережеМОе" урПвМя I -item.upgrade_power_2.name=УлучшеМОе ЌехаМОзЌа "ЭМергПсбережеМОе" урПвМя II -item.upgrade_power_3.name=УлучшеМОе ЌехаМОзЌа "ЭМергПсбережеМОе" урПвМя III -item.upgrade_fortune_1.name=УлучшеМОе ЌехаМОзЌа "УЎача" урПвМя I -item.upgrade_fortune_2.name=УлучшеМОе ЌехаМОзЌа "УЎача" урПвМя II -item.upgrade_fortune_3.name=УлучшеМОе ЌехаМОзЌа "УЎача" урПвМя III -item.upgrade_afterburn_1.name=УлучшеМОе ЌехаМОзЌа "ЀПрсаж" урПвМя I -item.upgrade_afterburn_2.name=УлучшеМОе ЌехаМОзЌа "ЀПрсаж" урПвМя II -item.upgrade_afterburn_3.name=УлучшеМОе ЌехаМОзЌа "ЀПрсаж" урПвМя III -item.upgrade_overdrive_1.name=УлучшеМОе ЌехаМОзЌа "Перегруз" урПвМя I -item.upgrade_overdrive_2.name=УлучшеМОе ЌехаМОзЌа "Перегруз" урПвМя II -item.upgrade_overdrive_3.name=УлучшеМОе ЌехаМОзЌа "Перегруз" урПвМя III -item.upgrade_radius.name=УлучшеМОе раЎОуса Озлучателя -item.upgrade_health.name=УлучшеМОе прПчМПстО Озлучателя -item.upgrade_smelter.name=УлучшеМОе "ПлавОльМя" -item.upgrade_shredder.name=УлучшеМОе "ИзЌельчОтель" -item.upgrade_centrifuge.name=УлучшеМОе "ЊеМтрОфуга" -item.upgrade_crystallizer.name=УлучшеМОе "КрОсталлОзатПр" -item.upgrade_nullifier.name=УлучшеМОе "УМОчтПжОтель ЌусПра" -item.upgrade_muffler.name=УлучшеМОе "ГлушОтель" -item.upgrade_screm.name=УлучшеМОе "КрОчащОй учёМый" -item.upgrade_gc_speed.name=УлучшеМОе "РазгПМ газПвПй цеМтрОфугО" -item.upgrade_5g.name=УлучшеМОе "5G ОзлучеМОе" -item.upgrade_ejector_1.name=УлучшеМОе Озвлекателя "СкПрПсть" I урПвМя -item.upgrade_ejector_2.name=УлучшеМОе Озвлекателя "СкПрПсть" II урПвМя -item.upgrade_ejector_3.name=УлучшеМОе Озвлекателя "СкПрПсть" III урПвМя -item.upgrade_stack_1.name=УлучшеМОе Озвлекателя "КПлОчествП стака" I урПвМя -item.upgrade_stack_2.name=УлучшеМОе Озвлекателя "КПлОчествП стака" II урПвМя -item.upgrade_stack_3.name=УлучшеМОе Озвлекателя "КПлОчествП стака" III урПвМя - +item.fragment_lanthanium.name=ЛаМтаМПвый ПскПлПк +item.fragment_meteorite.name=МетеПрОтМый ПскПлПк +item.fragment_neodymium.name=НеПЎОЌПвый ПскПлПк +item.fragment_niobium.name=НОПбОевый ПскПлПк +item.fuel_additive.antiknock.name=АМтОЎетПМацОПММПе среЎствП Оз ТетраэтОлсвОМца +item.fuel_additive.deicer.name=АМтОПблеЎеМОтель +item.fuel_tank_large.name=БПльшПй тПплОвМый бак +item.fuel_tank_medium.name=СреЎМОй тПплОвМый бак +item.fuel_tank_small.name=Малый тПплОвМый бак +item.fuse.name=ПреЎПхраМОтель item.fusion_core.name=ЯЎерМый блПк -item.energy_core.name=ИЌпрПвОзОрПваММый эМергПблПк item.fusion_core_infinite.name=БескПМечМый яЎерМый блПк item.fusion_shield_chlorophyte.name=ХлПрПфОтПвый защОтМый слПй терЌПяЎерМПгП реактПра item.fusion_shield_desh.name=Деш-ЗащОтМый слПй терЌПяЎерМПгП реактПра item.fusion_shield_tungsten.name=ВПльфраЌПвый защОтМый слПй терЌПяЎерМПгП реактПра item.fusion_shield_vaporwave.name=ВапПрвейвМый защОтМый слПй терЌПяЎерМПгП реактПра - -item.dynosphere_base.name=КаблПМ ДОМПсферы -item.dynosphere_desh.name=ДОМПсфера Оз Ўеш -item.dynosphere_desh_charged.name=ДОМПсфера Оз Ўеш (ЗаряжеММая) -item.dynosphere_schrabidium.name=КрабОЎОевая ЎОМПсфера -item.dynosphere_schrabidium_charged.name=КрабОЎОевая ЎОМПсфера (ЗаряжеММая) -item.dynosphere_euphemium.name=ЭвфеЌОевая ЎОМПсфера -item.dynosphere_euphemium_charged.name=ЭвфеЌОевая ЎОМПсфера (ЗаряжеММая) -item.dynosphere_dineutronium.name=ДОМейтрПМОевая ЎОМПсфера -item.dynosphere_dineutronium_charged.name=ДОМейтрПМОевая ЎОМПсфера (ЗаряжеММая) - -item.plate_iron.name=ЖелезМая пластОМа -item.plate_lead.name=СвОМцПвая пластОМа -item.coil_copper.name=МеЎМая катушка -item.coil_copper_torus.name=КПльцевая катушка -item.wire_tungsten.name=ВПльфраЌПвый прПвПЎ -item.coil_tungsten.name=НагревательМый элеЌеМт -item.tank_steel.name=СтальМПй бак -tile.barrel_tcalloy.name=БПчка Оз техМецОевПй сталО +item.gadget_core.name=ПлутПМОевПе яЎрП +item.gadget_explosive.name=ВзрывМые лОМзы первПгП пПкПлеМОя +item.gadget_kit.name=КПЌплект ГаЎжета +item.gadget_wireing.name=ПрПвПЎа +item.gas_biogas.name=БаллПМ с бОПгазПЌ +item.gas_empty.name=ПустПй газПвый баллПМ +item.gas_full.name=ГазПвый баллПМ: +item.gas_lpg.name=БаллПМ с СПГ +item.gas_mask.name=ПрПтОвПгаз +item.gas_mask_filter.name=ЀОльтр прПтОвПгаза +item.gas_mask_filter_combo.name=КПЌбОМОрПваММый фОльтр Ўля прПтОвПгаза +item.gas_mask_filter_mono.name=КаталОтОческОй фОльтр ЌаскО +item.gas_mask_filter_piss.name=СаЌПЎельМый прПЎвОМутый фОльтр Ўля прПтОвПгаза +item.gas_mask_filter_rag.name=СаЌПЎельМый фОльтр Ўля прПтОвПгаза +item.gas_mask_m65.name=ПрПтОвПгаз M65-Z +item.gas_mask_mono.name=ППлуЌаска +item.gas_mask_olde.name=КПжаМый прПтОвПгаз +item.gas_petroleum.name=БаллПМ с пПпутМыЌ газПЌ +item.gas_tester.name=ГазПвый ЎатчОк +item.gear_large.name=БПльшая шестерМя +item.gear_large_steel.name=БПльшая стальМая шестерМя +item.geiger_counter.name=РучМПй счетчОк Гейгера +item.gem_alexandrite.name=АлексаМЎрОт +item.gem_rad.name=РаЎОПактОвМый саЌПцвет +item.gem_sodalite.name=СПЎалОт +item.gem_tantalium.name=ППлОкрОсталл таМтала +item.gem_tantalium.desc='ТаМталуЌ' +item.gem_tantalium.desc.P11=АКА ТаМталОй. +item.gem_volcanic.name=ВулкаМОческОй саЌПцвет +item.generator_front.name=ПереЎ геМератПра +item.generator_steel.name=КПрпус геМератПра +item.glitch.name=Глюк +item.glowing_stew.name=ТушеМые светящОеся грОбы +item.glyphid_meat.name=МясП глОфОЎПв +item.glyphid_meat_grilled.name=ЖареМПе ЌясП глОфОЎПв +item.goggles.name=ЗащОтМые ПчкО +item.grenade_aschrab.name=БрПсаеЌая аМтОшрабОЎОевая прПбОрка +item.grenade_black_hole.name=ГраМата сОМгулярМПстО +item.grenade_breach.name=РазрывМая граМата +item.grenade_burst.name=ЭкскаватПрМая граМата +item.grenate_cats.name=Grenade of Cats +item.grenade_cloud.name=КПлба с кОслПтМыЌ ПблакПЌ +item.grenade_cluster.name=КластерМая бПЌба +item.grenade_electric.name=ЭлектрПграМата +item.grenade_fire.name=ОгМеММая ПскПлПчМая граМата +item.grenade_flare.name=СОгМальМая ракета +item.grenade_frag.name=ОскПлПчМая граМата +item.grenade_gas.name=ГазПвая граМата +item.grenade_gascan.name=БрПсаеЌая беМзОМПвая каМОстра +item.grenade_generic.name=ГраМата +item.grenade_if_bouncy.name=IF - Прыгучая граМата +item.grenade_if_brimstone.name=IF - БрПсаеЌая серМая ЌОМа +item.grenade_if_concussion.name=IF - КПМтузОПММая граМата +item.grenade_if_generic.name=IF - ГраМата +item.grenade_if_he.name=IF - ЀугасМая граМата +item.grenade_if_hopwire.name=IF - ГраМата сОМгулярМПстО +item.grenade_if_impact.name=IF - УЎарМая граМата +item.grenade_if_incendiary.name=IF - ЗажОгательМая граМата +item.grenade_if_mystery.name=IF - М.-ГраМата +item.grenade_if_null.name=IF - Нулевая граМата +item.grenade_if_spark.name=IF - С.-ГраМата +item.grenade_if_sticky.name=IF - ЛОпкая граМата +item.grenade_if_toxic.name=IF - ТПксОчМая граМата +item.grenade_kit.name=КПЌплект граМат +item.grenade_kyiv.name=The Kyiv Special +item.grenade_lemon.name=ЗажОгательМый лОЌПМ +item.grenade_mirv.name=МИРВ-граМата +item.grenade_mk2.name=ГраМата МК 2 "ППсПл АМаМас" +item.grenade_nuclear.name=ЯЎерМая граМата +item.grenade_nuke.name=БурПвая граМата “Марк VI” +item.grenade_pink_cloud.name=КПлба с рПзПвыЌ ПблакПЌ +item.grenade_plasma.name=ПлазЌеММая граМата +item.grenade_poison.name=Отравляющая граМата +item.grenade_pulse.name=ИЌпульсМая граМата +item.grenade_schrabidium.name=КрабОЎОевая граМата +item.grenade_shrapnel.name=ГраМата сП шрапМелью +item.grenade_smart.name=СЌарт-граМата +item.grenade_strong.name=УсПвершеМствПваММая граМата +item.grenade_tau.name=Тау-ГраМата +item.grenade_zomg.name=ГраМата аММОгОляцОО пар ПтрОцательМПй эМергОО +item.glyphid_gland.name= Железа глОфОЎа: +item.glyphid_gland_empty.name= Железа глОфОЎа +item.gun_aberrator.name=Aberrator +item.gun_aberrator_eott.name=Eyes Of The Tempest +item.gun_am180.name=Silenced Submachine Gun +item.gun_ar15.name="ДжПш" +item.gun_autoshotgun.name=Auto Shotgun +item.gun_autoshotgun_sexy.name=Sexy +item.gun_autoshotgun_shredder.name=Shredder +item.gun_avenger.name=CZ57 “АвеМЎжер” +item.gun_b92.name=§9ЭМергетОческОй бластер B92§r +item.gun_b92_ammo.name=§9ЭМергетОческОй ЭлеЌеМт B92§r +item.gun_b93.name=§cМПЎОфОцОрПваММый бластер B93§r +item.gun_benelli.name=Benelli Autoshotgun +item.gun_bf.name=BEL +item.gun_bf_ammo.name=Жар-сМаряЎ +item.gun_bio_revolver.name=Атлас +item.gun_bolt_action.name=ВОМтПвка сП скПльзящОЌ затвПрПЌ(ОрОгОМал) +item.gun_bolt_action_ammo.name=Пуля 12x74 калОбра(LEGACY) +item.gun_bolt_action_green.name=ВОМтПвка сП скПльзящОЌ затвПрПЌ (ЗелёМый) +item.gun_bolt_action_saturnite.name=СатурМОтПвая вОМтПвка +item.gun_bolter.name=БПлтер +item.gun_bolter_digamma.name=ДОгаЌЌа пушка +item.gun_calamity.name=КалаЌОтО +item.gun_calamity_ammo.name=Кал. 50 (LEGACY) +item.gun_calamity_dual.name=БПевПе сеЎлП +item.gun_carbine.name=Carbine +item.gun_chemthrower.name=ХОЌПЌёт +item.gun_coilgun.name=Гаусс-пушка +item.gun_congolake.name=Congo Lake +item.gun_cryocannon.name=КрОПпушка +item.gun_cryolator.name=КрОПлятПр +item.gun_cryolator_ammo.name=КрОПэлеЌеМт +item.gun_dampfmaschine.name=СПвершеММП Ме шутПчМПе ПружОе +item.gun_darter.name=ДрПтОкПвый пОстПлет +item.gun_deagle.name=БОг АйрПМ +item.gun_defabricator.name=ДефабрОкатПр +item.gun_defabricator_ammo.name=ЭМергетОческОе ячейкО ДефабрОкатПра +item.gun_detonator.name=ЛазерМый ЎетПМатПр +item.gun_double_barrel.name=An Old Classic +item.gun_double_barrel_sacred_dragon.name=Sacred Dragon +item.gun_emp.name=ЭМИ-пушка +item.gun_emp_ammo.name=ЭМергетОческая ячейка +item.gun_euthanasia.name=ЭвтаМазОя +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_daybreaker.name=Daybreaker +item.gun_flamer_topaz.name=Mister Topaz +item.gun_flaregun.name=Flare Gun +item.gun_flechette.name=ИгПльчатая вОМтПвка +item.gun_folly.name=ПрПтПтОп ДОгаЌЌа "ПрОчуЎа" +item.gun_g3.name=Assault Rifle +item.gun_glass_cannon.name=СтекляММая пушка +item.gun_greasegun.name=Grease Gun +item.gun_hangman.name=Hangman +item.gun_heavy_revolver.name=Heavy Revolver +item.gun_heavy_revolver_lilmac.name=Little Macintosh +item.gun_heavy_revolver_protege.name=ProtÚge +item.gun_henry.name=Lever Action Rifle +item.gun_hk69.name=ГраМатПЌет +item.gun_hp.name=HPP ЛазерЎжет +item.gun_hp_ammo.name=ЧерМОльМый картрОЎж +item.gun_immolator.name=ИЌЌПлятПр +item.gun_immolator_ammo.name=ТПплОвП ИЌЌПлатПра +item.gun_jack.name=ДжекхаЌЌер +item.gun_jack_ammo.name=СМаряЎ Ўля четырехствПльМПгП ЎрПбПвОка +item.gun_karl.name=Карл +item.gun_kit_1.name=РужейМПе ЌаслП +item.gun_kit_2.name=КПЌплект Ўля реЌПМта ПружОя +item.gun_ks23.name=СэЌюэль БПльшПй ДрПбПвОк +item.gun_lacunae.name=CZ33 “АбаЎЎПМ” +item.gun_lacunae_ammo.name=5-ЌЌ патрПМ (LEGACY) +item.gun_lag.name=Comically Long Pistol +item.gun_lasrifle.name=Laser Rifle +item.gun_lever_action.name=«НПга кПбылы» (ОрОгОМал) +item.gun_lever_action_ammo.name=ДрПбь 12x74 калОбра (LEGACY) +item.gun_lever_action_dark.name=«НПга кПбылы» (ТёЌМый) +item.gun_lever_action_sonata.name=ПеревёрМутая «НПга кПбылы» +item.gun_lever_action_sonata_2.name=§cSonata's Microphone§r +item.gun_liberator.name=Liberator +item.gun_light_revolver.name=Break-Action Revolver +item.gun_light_revolver_atlas.name=Atlas +item.gun_light_revolver_dani.name=Day And Night +item.gun_lunatic_marksman.name=Lunatic Marksman Rifle (BETA) +item.gun_m2.name=Ma Deuce +item.gun_maresleg.name=Lever Action Shotgun +item.gun_maresleg_akimbo.name=Lever Action Shotguns +item.gun_maresleg_broken.name=Broken +item.gun_minigun.name=ПерсПМальМый ЌОМОгаМ CZ53 +item.gun_minigun_lacunae.name=Lacunae +item.gun_mirv.name=M42 ЯЎерМая катапульта "ЭксперОЌеМтальМый МИРВ" +item.gun_mirv_ammo.name=ВПсьЌОрОчМый МИРВ (LEGACY) +item.gun_missile_launcher.name=Missile Launcher +item.gun_moist_nugget.name=МПсОМ-НагаМ +item.gun_mp.name=ПулеЌет ПацОфОстПв +item.gun_mp40.name=ПОстПлет-пулеЌёт +item.gun_mp40_ammo.name=Submachine Gun Round (DEPRECATED) +item.gun_pepperbox.name=Pepperbox +item.gun_pm_ammo.name=Малый беспрПпеллеМтПвый пулеЌётМый патрПМ +item.gun_mymy.name=Ньетес +item.gun_osipr.name=ИЌпульсМая вОМтПвка Патруля +item.gun_osipr_ammo.name=ИЌпульсМые патрПМы +item.gun_osipr_ammo2.name=ЭМергетОческОй шар КПЌбайМПв +item.gun_panzerschreck.name=ПаМцершрек +item.gun_proto.name=М42 ЯЎерМая катапульта "ПрПтП МИРВ" +item.gun_quadro.name="Четыре Сыра" +item.gun_remington.name=バむデン ブラスト [BIDEN BLAST] +item.gun_revolver.name=УсПвершеМствПваММый ревПльвер +item.gun_revolver_ammo.name=СвОМцПвая пуля +item.gun_revolver_blackjack.name=ПятОзаряЎМый ревПльвер БлэкЎжек +item.gun_revolver_cursed.name=ПрПклятый ревПльвер +item.gun_revolver_cursed_ammo.name=СтальМая пуля +item.gun_revolver_gold.name=ЗПлПтПй ревПльвер +item.gun_revolver_gold_ammo.name=ЗПлПтая пуля +item.gun_revolver_inverted.name=ПереверМутый ревПльвер +item.gun_revolver_iron.name=ПрПстПй ревПльвер +item.gun_revolver_iron_ammo.name=Пуля +item.gun_revolver_lead.name=ЯЎерМый ревПльвер +item.gun_revolver_lead_ammo.name=ППкрытая стеклПЌ атПЌМая пуля +item.gun_revolver_nightmare.name=КПшЌарМый ревПльвер (ОрОгОМал) +item.gun_revolver_nightmare2.name=КПшЌарМый ревПльвер (ТёЌМый) +item.gun_revolver_nightmare2_ammo.name=ЛазерМая ЎрПбь +item.gun_revolver_nightmare_ammo.name=КПшЌарМая пуля +item.gun_revolver_nopip.name=Тяжёлый ревПльверitem.gun_revolver_nopip_ammo.name=ПатрПМ калОбра .44 (LEGACY) +item.gun_revolver_pip.name=ЛОл' ПОпсквОк +item.gun_revolver_pip_ammo.name=ЗаражеММый патрПМ (LEGACY) +item.gun_revolver_red.name=РевПльвер с красМыЌ ключПЌ +item.gun_revolver_saturnite.name=СатурМОтПвый ревПльвер +item.gun_revolver_schrabidium.name=КрабОЎОевый ревПльвер +item.gun_revolver_schrabidium_ammo.name=КрабОЎОевая пуля +item.gun_revolver_silver.name=ОЎПлжеММый пОстПлет +item.gun_rpg.name=БезПткатМая ВОМтПвка “Карл Густав” +item.gun_rpg_ammo.name=Ракета (LEGACY) +item.gun_sauer.name=ДрПбПвОк СтэМа Зауэра +item.gun_skystinger.name="НебесМый СтОМгер" +item.gun_spark.name=Спарк-Плаг +item.gun_spark_ammo.name=ЭлектрПЌагМОтМый картрОЎж +item.gun_spas12.name=ДрПбПвОк SPAS-12 +item.gun_stg77.name=StG 77 +item.gun_stinger.name=FIM-92 "СтОМгер" +item.gun_stinger_ammo.name=Ракета-СтОМгер (LEGACY) +item.gun_super_shotgun.name=СуперЎрПбПвОк +item.gun_super_shotgun.desc=ОМ супер слПЌаМ! +item.gun_supershotgun.name=СуперЎрПбПвОк +item.gun_tau.name=Tau Cannon +item.gun_tesla_cannon.name=Tesla Cannon +item.gun_thompson.name=ПОстПлет-пулеЌёт ТПЌпсПМа +item.gun_uac_pistol.name=ПОстПлет UAC .45 +item.gun_uboinik.name=УбПйМОк +item.gun_uboinik_ammo.name=ДрПбь 12x70 калОбра (LEGACY) +item.gun_uzi.name=IMI УзО +item.gun_uzi_akimbo.name=Uzis +item.gun_uzi_ammo.name=ПатрПМы кал. 22LR (LEGACY) +item.gun_uzi_saturnite.name=СатурМОтПвый УзО +item.gun_uzi_saturnite_silencer.name=СатурМОтПвый УзО с глушОтелеЌ +item.gun_uzi_silencer.name=IMI УзО с глушОтелеЌ +item.gun_xvl1456.name=ПрПтПтОп Тау-пушкО XVL1456 +item.gun_xvl1456_ammo.name=ЯщОк с ОбеЎМеММыЌ УраМПЌ-235 +item.gun_zomg.name=ZOMG-пушка +item.hand_drill.name=РучМая Ўрель +item.hand_drill_desh.name=РучМая Ўрель Оз Ўеша +item.hazmat_boots.name=ЗащОтМые бПтОМкО +item.hazmat_boots_grey.name=ВысПкПэффектОвМые защОтМые бПтОМкО +item.hazmat_boots_red.name=УлучшеММые защОтМые бПтОМкО +item.hazmat_cloth.name=ЗащОтМая ткаМь +item.hazmat_cloth_grey.name=ОсвОМцПваММая защОтМая ткаМь +item.hazmat_cloth_red.name=ДПпПлМОтельМая защОтМая ткаМь +item.hazmat_grey_kit.name=ВысПкПпрПОзвПЎОтельМый МабПр хОЌОческПй О раЎОацОПММПй защОты +item.hazmat_helmet.name=ЗащОтМый шлеЌ +item.hazmat_helmet_grey.name=ВысПкПэффектОвМый защОтМый шлеЌ +item.hazmat_helmet_red.name=УлучшеММый защОтМый шлеЌ +item.hazmat_kit.name=НабПр хОЌОческПй О раЎОацОПММПй защОты +item.hazmat_legs.name=ЗащОтМые пПМПжО +item.hazmat_legs_grey.name=ВысПкПэффектОвМые защОтМые пПМПжО +item.hazmat_legs_red.name=УлучшеММые защОтМые пПМПжО +item.hazmat_paa_boots.name=БПевые защОтМые бПтОМкО PaA +item.hazmat_paa_helmet.name=БПевПй защОтМый шлеЌ PaA +item.hazmat_paa_legs.name=БПевые защОтМые пПМПжО PaA +item.hazmat_paa_plate.name=БПевПй защОтМый МагруЎМОк PaA +item.hazmat_plate.name=ЗащОтМый МагруЎМОк +item.hazmat_plate_grey.name=ВысПкПэффектОвМый защОтМый МагруЎМОк +item.hazmat_plate_red.name=УлучшеММый защОтМый МагруЎМОк +item.hazmat_red_kit.name=РасшОреММый кПЌплект хОЌОческПй О раЎОацОПММПй защОты +item.heart_booster.name=УсОлОтель серЎца +item.heart_container.name=КПМтейМер Ўля серЎца +item.heart_fab.name=Ѐаб-серЎце +item.heart_piece.name=ЧастОчка серЎца +item.heavy_component.name=Тяжёлый кПЌпПМеМт Оз %s +item.hev_battery.name=Батарея кПстюЌа +item.hev_boots.name=БПтОМкО H.E.V МПЎелО IV +item.hev_plate.name=НагруЎМОк H.E.V МПЎелО IV +item.hev_helmet.name=КлеЌ H.E.V МПЎелО IV +item.hev_legs.name=ППМПжО H.E.V МПЎелО IV +item.holotape_damaged.name=ППврежЎёММый гПлПЎОск +item.holotape_image.name=ГПлПЎОск +item.horseshoe_magnet.name=МагМОт-пПЎкПва +item.hull_big_aluminium.name=БПльшая алюЌОМОевая ПбПлПчка +item.hull_big_steel.name=БПльшая стальМая ПбПлПчка +item.hull_big_titanium.name=БПльшая тОтаМПвая ПбПлПчка +item.hull_small_aluminium.name=НебПльшая алюЌОМОевая ПбПлПчка +item.hull_small_aluminium.desc=МПжет быть вставлеМ в прПсверлеММый графОт +item.hull_small_steel.name=НебПльшая стальМая ПбПлПчка +item.icf_pellet.name=ТПплОвМая пеллета ICF +item.icf_pellet_depleted.name=ОбеЎМеММая тПплОвМая пеллета ICF +item.icf_pellet_empty.name=Пустая тПплОвМая пеллета ICF +item.igniter.name=ЗажОгатель +item.igniter.desc=(ЩёлкМОте правПй кМПпкПй ЌышО пП ПрПтПтОпу)$ЭтП зелеМая ЌеталлОческая ручка с $яркП-красМПй кМПпкПй О ЌалеМькПй крышкПй.$ВМОзу выгравОрПваМы ОМОцОалы N.E.$. КеЌ бы МО был N.E., у МегП был ПтлОчМый вкус в ПттеМках зелеМПгП. +item.industrial_magnet.name=ПрПЌышлеММый ЌагМОт +item.inf_antimatter.name=Infinite Antimatter Tank +item.inf_antischrabidium.name=Infinite Antischrabidium Tank +item.inf_coolant.name=Infinite Coolant Tank +item.inf_deuterium.name=Infinite Deuterium Tank +item.inf_diesel.name=Infinite Diesel Tank +item.inf_sulfur.name=Infinite Sulfur Tank +item.inf_tritium.name=Infinite Tritium Tank +item.inf_water.name=БескПМечМый резервуар вПЎы +item.inf_water_mk2.name=УсОлеММый бескПМечМый резервуар вПЎы +item.ingot_actinium.name=СлОтПк актОМОя-227 +item.ingot_advanced_alloy.name=СлОтПк прПЎвОМутПгП сплава +item.ingot_aluminium.name=АлюЌОМОевый слОтПк +item.ingot_am_mix.name=СлОтПк аЌерОцОя реактПрМПгП качества +item.ingot_am241.name=СлОтПк аЌерОцОя-241 +item.ingot_am242.name=СлОтПк аЌерОцОя-242 +item.ingot_americium_fuel.name=СлОтПк аЌерОцОевПгП тПплОва +item.ingot_arsenic.name=СлОтПк Ќышьяка +item.ingot_arsenic_bronze.name=СлОтПк ЌышьякПвПй брПМзы +item.ingot_asbestos.name=АсбестПвый лОст +item.ingot_asbestos.desc=§o"НапПлМеММый жОзМью, МеувереММПстью в себе О асбестПЌ. ЭтП прОхПЎОт вЌесте с вПзЎухПЌ."§r +item.ingot_au198.name=СлОтПк зПлПта-198 +item.ingot_australium.name=АвстралОевый слОтПк +item.ingot_bakelite.name=БакелОт +item.ingot_beryllium.name=БерОллевый слОтПк +item.ingot_biorubber.name=БрусПк латекса +item.ingot_bismuth.name=СлОтПк вОсЌута +item.ingot_bismuth_bronze.name=СлОтПк вОсЌутПвПй брПМзы +item.ingot_boron.name=БПрМый слОтПк +item.ingot_bscco.name=СлОтПк BSCCO +item.ingot_c4.name=БрусПк C-4 +item.ingot_cadmium.name=КаЎЌОевый слОтПк +item.ingot_calcium.name=КальцОевый слОтПк +item.ingot_cdalloy.name=СлОтПк каЎЌОевПй сталО +item.ingot_cft.name=КрОсталлОческОй фуллерОт +item.ingot_chainsteel.name=Тяжёлая цепМая сталь +item.ingot_co60.name=СлОтПк кПбальта-60 +item.ingot_cobalt.name=КПбальтПвый слОтПк +item.ingot_combine_steel.name=СлОтПк сталО АльяМса +item.ingot_combine_steel.desc=*вставьте рефереМс Ма ГражЎаМскую ОбПрПМу* +item.ingot_copper.name=СлОтПк прПЌышлеММПй ЌеЎО +item.ingot_daffergon.name=ДаффергПМПвый слОтПк +item.ingot_desh.name=СлОтПк Ўеш +item.ingot_dineutronium.name=ДОМейтрПМОевый слОтПк +item.ingot_dura_steel.name=ВысПкПскПрПстМая сталь +item.ingot_electronium.name=ЭлектрПМОевый слОтПк +item.ingot_euphemium.name=ЭвфеЌОевый слОтПк +item.ingot_euphemium.desc=СПвершеММП ПсПбый О в тП же вреЌя страММый элеЌеМт. +item.ingot_ferrouranium.name=ЀеррПураМОевый слОтПк +item.ingot_fiberglass.name=СтеклПвПлПкМП +item.ingot_fiberglass.desc=С высПкОЌ сПЎержаМОеЌ вПлПкМа, с высПкОЌ сПЎержаМОеЌ стекла. Все, чтП МужМП ПргаМОзЌу. +item.ingot_firebrick.name=КаЌПтМый кОрпОч +item.ingot_gh336.name=СлОтПк гОПрсОя-336 +item.ingot_gh336.desc=КПллега СОбПргОуЌа. +item.ingot_graphite.name=ГрафОтПвый слОтПк +item.ingot_gunmetal.name=Gunmetal Ingot +item.ingot_hes.name=ВысПкППбПгащеММый слОтПк шрабОЎОевПгП тПплОва +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_meteorite.name=МетеПрОтПвый слОтПк +item.ingot_meteorite_forged.name=ВыкПваММый ЌетеПрОтПвый слОтПк +item.ingot_mox_fuel.name=СлОтПк МОКС-тПплОва +item.ingot_mud.name=КОрпОч Оз твёрЎых ПтхПЎПв +item.ingot_neptunium.name=НептуМОевый слОтПк +item.ingot_neptunium.desc=ВПт этПт ЌПй любОЌый! +item.ingot_neptunium.desc.P11=УУУ, страшМП! +item.ingot_neptunium_fuel.name=СлОтПк МептуМОевПгП тПплОва +item.ingot_niobium.name=НОПбОевый слОтПк +item.ingot_osmiridium.name=ОсЌОрОЎОевый слОтПк +item.ingot_pb209.name=СлОтПк свОМца-209 +item.ingot_pc.name=ТверЎый пластОкПвый брусПк +item.ingot_pet.name=МеталлОзОрПваММый алюЌОМОеЌ брусПк ПЭТ +item.ingot_phosphorus.name=БрусПк белПгП фПсфПра +item.ingot_plutonium.name=ПлутПМОевый слОтПк +item.ingot_plutonium_fuel.name=СлОтПк плутПМОевПгП тПплОва +item.ingot_polonium.name=СлОтПк пПлПМОя-210 +item.ingot_polymer.name=ППлОЌер +item.ingot_pu_mix.name=СлОтПк плутПМОя реактПрМПгП качества +item.ingot_pu238.name=СлОтПк плутПМОя-238 +item.ingot_pu239.name=СлОтПк плутПМОя-239 +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_red_copper.name=СлОтПк красМПй ЌеЎО +item.ingot_reiium.name=РеОевый слОтПк +item.ingot_rubber.name=РезОМа +item.ingot_saturnite.name=СатурМОтПвый слОтПк +item.ingot_schrabidate.name=СлОтПк шрабОЎата железа +item.ingot_schrabidium.name=КрабОЎОевый слОтПк +item.ingot_schrabidium_fuel.name=СлОтПк шрабОЎОевПгП тПплОва +item.ingot_schraranium.name=КрараМОевый слОтПк +item.ingot_schraranium.desc=Делается Оз ураМа в шрабОЎОевПЌ траМсЌутатПре +item.ingot_semtex.name=СеЌтекс +item.ingot_silicon.name=КреЌМОевый брусПк +item.ingot_smore.name=СлОтПк с'ЌПра +item.ingot_solinium.name=СПлОМОевый слОтПк +item.ingot_sr90.name=СлОтПк стрПМцОя-90 +item.ingot_starmetal.name=§9ЗвёзЎМый Ќеталл§r +item.ingot_steel.name=СтальМПй слОтПк +item.ingot_steel_dusted.name=ЗапылёММПй стальМПй слОтПк +item.ingot_tantalium.name=ТаМталПвый слОтПк +item.ingot_tantalium.desc='ТаМталуЌ' +item.ingot_tantalium.desc.P11=АКА ТаМталОй. +item.ingot_tcalloy.name=СлОтПк техМецОевПй сталО +item.ingot_technetium.name=СлОтПк техМецОя-99 +item.ingot_th232.name=СлОтПк тПрОя-232 +item.ingot_thorium_fuel.name=СлОтПк тПрОевПгП тПплОва +item.ingot_titanium.name=ТОтаМПвый слОтПк +item.ingot_tungsten.name=ВПльфраЌПвый слОтПк +item.ingot_u233.name=СлОтПк ураМа-233 +item.ingot_u235.name=СлОтПк ураМа-235 +item.ingot_u238.name=СлОтПк ураМа-238 +item.ingot_u238m2.name=ППлустабОльМый слОтПк ураМа-238-2 +item.ingot_unobtainium.name=НеЎПстатОевый слОтПк +item.ingot_uranium.name=УраМПвый слОтПк +item.ingot_uranium_fuel.name=СлОтПк ураМПвПгП тПплОва +item.ingot_verticium.name=ВертОцОевый слОтПк +item.ingot_weaponsteel.name=Weapon Steel Ingot +item.ingot_weidanium.name=ВейЎаМОевый слОтПк +item.ingot_zirconium.name=ЊОркПМОевый куб +item.injector_5htp.name=АвтПОМъектПр 5-гОЎрПксОтрОптПфаМа +item.injector_knife.name=АвтПОМъектПр 8 ЎюйЌПвПгП лезвОя +item.ink.name=林 черМОла +item.insert_doxium.name=АстПльфОй-легОрПваММая ДПксОевая пластОМа +item.insert_du.name=УраМПвая пластОМа +item.insert_era.name=ВзрывППпасМая реактОвМая брПМепластОМа +item.insert_esapi.name=ESAPI пластОМы +item.insert_ghiorsium.name=ГОПрсОевая пластОМа +item.insert_kevlar.name=КевларПвые пластОМы +item.insert_sapi.name=SAPI пластОМы +item.insert_polonium.name=ППлПМОевая пластОМа +item.insert_steel.name=ТяжёлПстальМые пластОМы +item.insert_xsapi.name=XSAPI пластОМы +item.insert_yharonite.name=ЯрПМОтПвая пластОМа +item.item_secret.canister.name=КПЌпПзОт SB-26 +item.item_secret.controller.name=ПрПпрОетарМый блПк управлеМОя +item.item_secret.selenium_steel.name=Selenium Steel +item.iv_blood.name=Пакет с крПвью +item.iv_empty.name=Пакет Ўля вМутрОвеММПгП ввеЎеМОя +item.iv_xp.name=Пакет с ПпытПЌ +item.iv_xp_empty.name=Пакет Ўля ЌагОческПгП вМутрОвеММПгП ввеЎеМОя +item.jackt.name=ЧертПвскО стОльМая баллОстОческая куртка +item.jackt2.name=ЧертПвскО стОльМая баллОстОческая куртка 2: ТПкОйскОй ДрОфт +item.jetpack_boost.name=ИЌпульсМый раМец +item.jetpack_break.name=СтрПОтельМый раМец +item.jetpack_fly.name=РеактОвМый раМец +item.jetpack_tank.name=РезервМый тПплОвМый бак раМца +item.jetpack_vector.name=ВектПрМый реактОвМый раМец +item.journal_bj.name=ПрПпОтаММый вОскО блПкМПт +item.journal_pip.name=ДМевМОк выжОвальщОка +item.journal_silver.name=ЗапОскО кПМтрактМОка +item.key.name=Ключ +item.key_fake.name=ППЎЎельМый ключ +item.key_kit.name=НабПр ОЌОтацОО ключей +item.key_red.name=КрасМый ключ +item.key_red.desc=ИсслеЎуй Ўругую стПрПМу. +item.key_red.desc.P11=§4e§r +item.key_red_cracked.name=СлПЌаММый ключ +item.key_red_cracked.desc=??? +item.key_red.key_red_cracked.P11=§4???§r +item.kit_toolbox.name=ЯщОк Ўля ОМструЌеМтПв +item.kit_toolbox_empty.name=ПустПй ящОк Ўля ОМструЌеМтПв +item.laser_crystal_bismuth.desc=ВОсЌут-СаЌарОй-УраМ-ТПрОевая крОсталлОческая ЌатрОца +item.laser_crystal_bismuth.name=ВОсЌутПвый лазерМый крОсталл +item.laser_crystal_cmb.desc=АМтОшрабОЎОй, заключеММый в решётку Оз сплава КрабОЎата О сталО АльяМса +item.laser_crystal_cmb.name=CMB-КрабОЎатПвый аМтОЌатерОальМый лазерМый крОсталл +item.laser_crystal_co2.desc=ДвуПкОсь углерПЎа, заключеММая в крОсталлОческОй Деш +item.laser_crystal_co2.name=CO2-Деш лазерМый крОсталл +item.laser_crystal_digamma.name=ДОгаЌЌа-лазерМый крОсталл +item.laser_crystal_dnt.desc=ДОМейтрПМОевый-Спарк ферЌОПММый суперкрОсталл +item.laser_crystal_dnt.name=Спарк-лазерМый крОсталл +item.launch_code.name=КПЎ запуска +item.launch_code_piece.name=КусПк кПЎа запуска +item.launch_key.name=Ключ запуска +item.lead_gavel.name=СвОМцПвый ЌПлПтПк +item.lemon.name="ЛОЌПМ" +item.letter.name=Экспресс-пПчта +item.levitation_unit.name=ГравОтацОПММый ЌаМОпулятПр +item.lignite.name=Бурый угПль +item.limiter.name=ОграМОчОтель геМератПра +item.linker.name=ТелелОМкер +item.liquidator_boots.name=БПтОМкО кПстюЌа ЛОквОЎатПра +item.liquidator_helmet.name=КлеЌ кПстюЌа ЛОквОЎатПра +item.liquidator_legs.name=ППМПжО кПстюЌа ЛОквОЎатПра +item.liquidator_plate.name=НагруЎМОк кПстюЌа ЛОквОЎатПра +item.lithium.name=Куб лОтОя +item.lodestone.name=МагМетОт +item.loop_stew.name=Завтрак IT-шМОка +item.loops.name=ПəтлО +item.loot_10.name=ЯщОк с запчастяЌО Пт Ракеты 10-гП разЌера +item.loot_15.name=ЯщОк с запчастяЌО Пт Ракеты 15-гП разЌера +item.loot_misc.name=ОбщОй ящОк с запчастяЌО Пт Ракеты +item.magnet_circular.name=ПлПскОй ЌагМОт +item.magnet_dee.name=ДО-ЌагМОты +item.magnetron.name=МагМетрПМ +item.man_core.name=ПлутПМОевПе яЎрП +item.man_explosive.name=ВзрывМые лОМзы +item.man_igniter.name=ЗажОгатель +item.man_kit.name=КПЌплект ТПлстяка +item.marshmallow.name=ЗефОр Ма палПчке +item.mask_of_infamy.name=Маска ППзПра +item.mask_piss.name=ТраМшейМый прПтОвПгаз +item.mask_rag.name=Грубая защОтМая Ќаска +item.matchstick.name=СпОчка +item.mech_key.name=БПльшПй серебряМый ключ +item.mech_key.desc=ОМ пульсОрует эМергОей. +item.mechanism_launcher_1.name=МехаМОзЌ запуска +item.mechanism_launcher_2.name=УсПвершеМствПваММый ЌехаМОзЌ запуска +item.mechanism_revolver_1.name=РевПльверМый ЌехаМОзЌ +item.mechanism_revolver_2.name=УсПвершеМствПваММый ревПльверМый ЌехаМОзЌ +item.mechanism_rifle_1.name=ВОМтПвПчМый ЌехаМОзЌ +item.mechanism_rifle_2.name=УсПвершеМствПваММый вОМтПвПчМый ЌехаМОзЌ +item.mechanism_special.name=МехаМОзЌ высПкПтехМПлПгОчМПгП ПружОя +item.med_bag.name=Аптечка первПй пПЌПщО +item.med_ipecac.name=СОрПп Оз рвПтМПгП кПрМя +item.med_ptsd.name=ЛечеМОе ПТСР +item.med_schiziphrenia.name=ЛекарствП Пт шОзПфреМОО +item.medal_liquidator.name=МеЎаль ЛОквОЎатПра +item.meltdown_tool.name=АпплОкатПр ЌгМПвеММПгП расплавлеМОя ДятлПва +item.memespoon.name=§eЗеЌлекПп +item.memory.name=item.null.name +item.mese_gavel.name=Месе ЌПлПтПк +item.mese_axe.name=Месе тПпПр +item.mese_pickaxe.name=Месе кОрка +item.meteor_charm.name=ТалОсЌаМ Пт ЌетеПрОтПв +item.meteor_remote.name=УстрПйствП Ўля вызПва ЌетеПрОтПв +item.meteorite_sword.name=МетеПрОтПвый Ќеч +item.meteorite_sword_seared.name=МетеПрОтПвый Ќеч (ОпалеММый) +item.meteorite_sword_reforged.name=МетеПрОтПвый Ќеч (ПерекПваММый) +item.meteorite_sword_hardened.name=МетеПрОтПвый Ќеч (ЗакалёММый) +item.meteorite_sword_alloyed.name=МетеПрОтПвый Ќеч (ЛегОрПваММый) +item.meteorite_sword_machined.name=МетеПрОтПвый Ќеч (МехаМОческО ПбрабПтаММый) +item.meteorite_sword_treated.name=МетеПрОтПвый Ќеч (ОбрабПтаММый) +item.meteorite_sword_etched.name=МетеПрОтПвый Ќеч (ГравОрПваММый) +item.meteorite_sword_bred.name=МетеПрОтПвый Ќеч (РазвеЎёММый) +item.meteorite_sword_irradiated.name=МетеПрОтПвый Ќеч (ОблучёММый) +item.meteorite_sword_fused.name=МетеПрОтПвый Ќеч (СплавлеММый) +item.meteorite_sword_baleful.name=МетеПрОтПвый Ќеч (ЗлПвещОй) +item.mike_cooling_unit.name=БлПк ПхлажЎеМОя ЎейтерОя +item.mike_core.name=ДейтерОевый бак с ураМПвыЌ пПкрытОеЌ +item.mike_deut.name=ДейтерОевый бак +item.mike_kit.name=КПЌплект ИвО Майка +item.mirror_tool.name=ИМструЌеМт Ўля регулОрПвкО зеркал +item.mirror_tool.linked=ППзОцОя выравМОваМОя устаМПвлеМа! +item.mirror_tool.desc=ЩелкМОте правПй кМПпкПй ЌышО пП бПйлеру, чтПбы запПЌМОть егП пПлПжеМОе.$НажЌОте Ма зеркала, чтПбы пПверМуть Ох в стПрПМу бПйлера +item.missile_anti_ballistic.name=АМтОбаллОстОческая ракета +item.missile_assembly.name=СбПрка ЌалПй ракеты +item.missile_bhole.name=Ракета "ЧерМая Дыра" +item.missile_burst.name=ЗапасМая ракета +item.missile_buster.name=ПрПтОвПбуМкерМая ракета +item.missile_buster_strong.name=УлучшеММая прПтОвПбуМкерМая ракета +item.missile_carrier.name=Ракета-МПсОтель HTR-01 +item.missile_cluster.name=КластерМая ракета +item.missile_cluster_strong.name=МПщМая кластерМая ракета +item.missile_custom.name=ППльзПвательская Ракета +item.missile_decoy.name=Ракета-прОЌаМка +item.missile_doomsday.name=Ракета СуЎМПгП ДМя +item.missile_doomsday_rusted.name=ППврежЎёММая ракета СуЎМПгП ДМя +item.missile_drill.name=КрушОтель бетПМа +item.missile_emp.name=ЭМИ-ракета +item.missile_emp_strong.name=МПщМая ЭМИ-ракета +item.missile_endo.name=ЭМЎПтерЌОческая ракета +item.missile_exo.name=ЭкзПтерЌОческая ракета +item.missile_generic.name=ЀугасМая ракета +item.missile_incendiary.name=ЗажОгательМая ракета +item.missile_incendiary_strong.name=МПщМая зажОгательМая ракета +item.missile_inferno.name=Ракета "ИМферМП Г. Р. Н. МК.II" +item.missile_kit.name=РакетМый МабПр +item.missile_micro.name=МОкрП-яЎерМая ракета +item.missile_nuclear.name=ЯЎерМая ракета +item.missile_nuclear_cluster.name=ТерЌПяЎерМая ракета +item.missile_rain.name=БПЌбПвый ЎПжЎь +item.missile_schrabidium.name=КрабОЎОевая ракета +item.missile_shuttle.name=КПсЌОческОй шаттл Reliant Robin +item.missile_soyuz.name=СПюз-ЀГ +item.missile_soyuz_lander.name=ОрбОтальМый МПЎуль +item.missile_soyuz_lander.desc=А также паршОвый пПсаЎПчМый ЌПЎуль! +item.missile_stealth.name=Стелс-ракета +item.missile_strong.name=МПщМая фугасМая ракета +item.missile_taint.name=ЗаражеММая ракета +item.missile_volcano.name=ТектПМОческая ракета +item.missile_volcano.desc=ИспПльзуя сОлу яЎерМПй взрывчаткО, Ќы ЌПжеЌ вызвать вулкаМ! +item.mold_base.name=Пустая лОтейМая фПрЌа +item.mold.name=ЛОтейМая фПрЌа +item.morning_glory.name=МПМОМ ГлПрО item.motor.name=МПтПр -item.motor_desh.name=Деш-ЌПтПр item.motor_bismuth.name=ВОсЌутПвый ЌПтПр -item.centrifuge_element.name=ЭлеЌеМт цеМтрОфугО -item.centrifuge_tower.name=БашМя цеМтрОфугО -item.reactor_core.name=АктОвМая зПМа реактПра-разЌМПжОтеля +item.motor_desh.name=Деш-ЌПтПр +item.mp_c_1.name=СхеЌа МавеЎеМОя ракеты 1-гП урПвМя +item.mp_c_2.name=СхеЌа МавеЎеМОя ракеты 2-гП урПвМя +item.mp_c_3.name=СхеЌа МавеЎеМОя ракеты 3-гП урПвМя +item.mp_c_4.name=СхеЌа МавеЎеМОя ракеты 4-гП урПвМя +item.mp_c_5.name=СхеЌа МавеЎеМОя ракеты 5-гП урПвМя +item.mp_fuselage_10_15_balefire.name=Жар-фюзеляж 10/15 разЌера +item.mp_fuselage_10_15_hydrogen.name=ВПЎПрПЎМый фюзеляж 10/15 разЌера +item.mp_fuselage_10_15_kerosene.name=КерПсОМПвый фюзеляж 10/15 разЌера +item.mp_fuselage_10_15_solid.name=ТверЎПтПплОвМый фюзеляж 10/15 разЌера +item.mp_fuselage_10_kerosene.name=КерПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_kerosene_camo.name=КерПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_kerosene_desert.name=КерПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_kerosene_flames.name=КерПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_kerosene_insulation.name=КерПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_kerosene_metal.name=КерПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_kerosene_sky.name=КерПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_kerosene_sleek.name=КерПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_kerosene_taint.name=КерПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_kerosene.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_kerosene_camo.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_kerosene_dash.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_kerosene_desert.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_kerosene_flames.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_kerosene_insulation.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_kerosene_metal.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_kerosene_sky.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_kerosene_sleek.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_kerosene_taint.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_kerosene_vap.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_solid.name=ДлОММый тверЎПтПплОвМый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_solid_bullet.name=ДлОММый тверЎПтПплОвМый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_solid_flames.name=ДлОММый тверЎПтПплОвМый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_solid_insulation.name=ДлОММый тверЎПтПплОвМый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_solid_silvermoonlight.name=ДлОММый тверЎПтПплОвМый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_solid_sleek.name=ДлОММый тверЎПтПплОвМый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_solid_soviet_glory.name=ДлОММый тверЎПтПплОвМый фюзеляж 10-гП разЌера +item.mp_fuselage_10_solid.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера +item.mp_fuselage_10_solid_battery.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера +item.mp_fuselage_10_solid_cathedral.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера +item.mp_fuselage_10_solid_duracell.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера +item.mp_fuselage_10_solid_flames.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера +item.mp_fuselage_10_solid_insulation.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера +item.mp_fuselage_10_solid_moonlit.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера +item.mp_fuselage_10_solid_sleek.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера +item.mp_fuselage_10_solid_soviet_glory.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера +item.mp_fuselage_10_xenon.name=КсеМПМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_xenon_bhole.name=КсеМПМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_15_20_kerosene.name=КерПсОМПвый фюзеляж 15/20 разЌера +item.mp_fuselage_15_20_kerosene_magnusson.name=КерПсОМПвый фюзеляж 15/20 разЌера +item.mp_fuselage_15_20_solid.name=ТверЎПтПплОвМый фюзеляж 15/20 разЌера +item.mp_fuselage_15_balefire.name=Жар-фюзеляж 15-гП разЌера +item.mp_fuselage_15_hydrogen.name=ВПЎПрПЎМый фюзеляж 15-гП разЌера +item.mp_fuselage_15_hydrogen_cathedral.name=ВПЎПрПЎМый фюзеляж 15-гП разЌера +item.mp_fuselage_15_kerosene.name=КерПсОМПвый фюзеляж 15-гП разЌера +item.mp_fuselage_15_kerosene_blackjack.name=КерПсОМПвый фюзеляж 15-гП разЌера +item.mp_fuselage_15_kerosene_camo.name=КерПсОМПвый фюзеляж 15-гП разЌера +item.mp_fuselage_15_kerosene_decorated.name=КерПсОМПвый фюзеляж 15-гП разЌера +item.mp_fuselage_15_kerosene_desert.name=КерПсОМПвый фюзеляж 15-гП разЌера +item.mp_fuselage_15_kerosene_insulation.name=КерПсОМПвый фюзеляж 15-гП разЌера +item.mp_fuselage_15_kerosene_lambda.name=КерПсОМПвый фюзеляж 15-гП разЌера +item.mp_fuselage_15_kerosene_metal.name=КерПсОМПвый фюзеляж 15-гП разЌера +item.mp_fuselage_15_kerosene_minuteman.name=КерПсОМПвый фюзеляж 15-гП разЌера +item.mp_fuselage_15_kerosene_pip.name=КерПсОМПвый фюзеляж 15-гП разЌера +item.mp_fuselage_15_kerosene_polite.name=КерПсОМПвый фюзеляж 15-гП разЌера +item.mp_fuselage_15_kerosene_sky.name=КерПсОМПвый фюзеляж 15-гП разЌера +item.mp_fuselage_15_kerosene_steampunk.name=КерПсОМПвый фюзеляж 15-гП разЌера +item.mp_fuselage_15_kerosene_taint.name=КерПсОМПвый фюзеляж 15-гП разЌера +item.mp_fuselage_15_kerosene_yuck.name=КерПсОМПвый фюзеляж 15-гП разЌера +item.mp_fuselage_15_solid.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера +item.mp_fuselage_15_solid_desh.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера +item.mp_fuselage_15_solid_faust.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера +item.mp_fuselage_15_solid_insulation.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера +item.mp_fuselage_15_solid_mimi.name=ТверЎПтПплОвМый фюзеляж МОЌО-чаМа 15-гП разЌера +item.mp_fuselage_15_solid_panorama.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера +item.mp_fuselage_15_solid_roses.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера +item.mp_fuselage_15_solid_silvermoonlight.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера +item.mp_fuselage_15_solid_snowy.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера +item.mp_fuselage_15_solid_soviet_glory.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера +item.mp_fuselage_15_solid_soviet_stank.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера +item.mp_stability_10_cruise.name=Крылатый стабОлОзатПр 10-гП разЌера +item.mp_stability_10_flat.name=ПлПскОе стабОлОзатПры 10-гП разЌера +item.mp_stability_10_space.name=КПсЌОческОй стабОлОзатПр 10-гП разЌера +item.mp_stability_15_flat.name=ПлПскОе стабОлОзатПры 15-гП разЌера +item.mp_stability_15_soyuz.name=ЗаПстрёММые стабОлОзатПры 15-гП разЌера +item.mp_stability_15_thin.name=ТПМкОе стабОлОзатПры 15-гП разЌера +item.mp_thruster_10_kerosene.name=ЖОЎкПстМый ракетМый ЎвОгатель 10-гП разЌера +item.mp_thruster_10_solid.name=ТверЎПтПплОвМый ракетМый ЎвОгатель 10-гП разЌера +item.mp_thruster_10_xenon.name=ИПММый ЎвОгатель 10-гП разЌера +item.mp_thruster_15_balefire.name=Жар-ЎвОгатель с яЎерМыЌ пПЎПгревателеЌ 15-гП разЌера +item.mp_thruster_15_balefire_large.name=Жар-вОгатель с яЎерМыЌ пПЎПгревателеЌ 15-гП разЌера (СверхЌПщМПе СПплП) +item.mp_thruster_15_balefire_large_rad.name=Жар-ЎвОгатель с яЎерМыЌ пПЎПгревателеЌ 15-гП разЌера (СверхЌПщМПе СПплП) +item.mp_thruster_15_balefire_short.name=Жар-ЎвОгатель с яЎерМыЌ пПЎПгревателеЌ 15-гП разЌера (УкПрПчеММый) +item.mp_thruster_15_hydrogen.name=ВПЎПрПЎМый ЎвОгатель 15-гП разЌера +item.mp_thruster_15_hydrogen_dual.name=ДвПйМПй вПЎПрПЎМый ЎвОгатель 15-гП разЌера +item.mp_thruster_15_kerosene.name=ЖОЎкПстМый ракетМый ЎвОгатель 15-гП разЌера +item.mp_thruster_15_kerosene_dual.name=ДвПйМПй жОЎкПстМый ЎвОгатель 15-гП разЌера +item.mp_thruster_15_kerosene_triple.name=ТрПйМПй жОЎкПстМый ЎвОгатель 15-гП разЌера +item.mp_thruster_15_solid.name=ТверЎПтПплОвМый ракетМый ЎвОгатель 15-гП разЌера +item.mp_thruster_15_solid_hexdecuple.name=КестМаЎцатОсПплПвые тверЎПтПплОвМые ЎвОгателО 15-гП разЌераitem.mp_thruster_20_kerosene.name=ЖОЎкПстМый ракетМый ЎвОгатель 20-гП разЌера +item.mp_thruster_20_kerosene_dual.name=ДвПйМПй жОЎкПстМый ракетМый ЎвОгатель 20-гП разЌера +item.mp_thruster_20_kerosene_triple.name=ТрПйМПй жОЎкПстМый ракетМый ЎвОгатель 20-гП разЌера +item.mp_thruster_20_solid.name=ТверЎПтПплОвМый ракетМый ЎвОгатель 20-гП разЌера +item.mp_thruster_20_solid_multi.name=ТверЎПтПплОвМые 30-сПплПвые ЎвОгателО 20-гП разЌера +item.mp_thruster_20_solid_multier.name=ТверЎПтПплОвМые 47-сПплПвые ЎвОгателО 20-гП разЌера +item.mp_warhead_10_buster.name=БуМкерМая бПегПлПвка 10-гП разЌера +item.mp_warhead_10_cloud.name=БПегПлПвка РПзПвПгП Облака 10-гП разЌера +item.mp_warhead_10_he.name=ЀугасМая бПегПлПвка 10-гП разЌера +item.mp_warhead_10_incendiary.name=ЗажОгательМая бПегПлПвка 10-гП разЌера +item.mp_warhead_10_nuclear.name=МОкрП-ЯЎерМая бПегПлПвка 10-гП разЌера +item.mp_warhead_10_nuclear_large.name=ЯЎерМая бПегПлПвка 10-гП разЌера +item.mp_warhead_10_taint.name=ЗаражеММая бПегПлПвка 10-гП разЌера +item.mp_warhead_15_balefire.name=Жар-БПегПлПвка 15-гП разЌера +item.mp_warhead_15_boxcar.name=ГрузПвПй ВагПМ? 15-гП разЌера +item.mp_warhead_15_he.name=ЀугасМая бПегПлПвка 15-гП разЌера +item.mp_warhead_15_incendiary.name=ЗажОгательМая бПегПлПвка 15-гП разЌера +item.mp_warhead_15_n2.name=N² МОМа 15-гП разЌера +item.mp_warhead_15_nuclear.name=ЯЎерМая бПегПлПвка 15-гП разЌера +item.mp_warhead_15_nuclear_mimi.name=ГПлПва МОЌО-чаМа 15-гП разЌера +item.mp_warhead_15_nuclear_shark.name=ЯЎерМая бПегПлПвка 15-гП разЌера +item.mp_warhead_15_turbine.name=РеактОвМый ЎвОгатель 15-гП разЌера +item.mucho_mango.name=НапОтПк "AriZona Mucho Mango" +item.multi_kit.name=КПЌплект ММПгПцелевПй бПЌбы +item.multitool_beam.name=СОлПвая перчатка (Заппер) +item.multitool_decon.name=СОлПвая Перчатка (ОбеззаражОватель) +item.multitool_dig.name=СОлПвая перчатка (ДПбывающОй кПгПть) +item.multitool_ext.name=СОлПвая перчатка (Извлекатель руЎы) +item.multitool_hit.name=СОлПвая перчатка (Кулак) +item.multitool_joule.name=СОлПвая Перчатка (ГОгаЎжПуль) +item.multitool_mega.name=СОлПвая Перчатка (СуперуЎар) +item.multitool_miner.name=СОлПвая перчатка (ДПбывающОй лазер) +item.multitool_silk.name=СОлПвая перчатка (КПгПть шёлкПвПгП касаМОя) +item.multitool_sky.name=СОлПвая перчатка (НебесМый разлПЌ) +item.mysteryshovel.name=НепрПчМая лПпата +item.n2_charge.name=КрупМый взрывМПй заряЎ +item.neutrino_lens.name=НейтрОММые лОМзы +item.neutron_reflector.name=Отражатель МейтрПМПв +item.night_vision.name=ОчкО МПчМПгП зреМОя +item.night_vision.description.item=Даёт МПчМПе зреМОе (МужЎается в пПлМПЌ электрОческПЌ сете) +item.night_vision.description.in_armor=%s (Ўаёт МПчМПе зреМОе) +item.niter.name=СелОтра +item.nitra.name=НОтра +item.nitra_small.name=Кучка МОтры +item.no9.name=Кахтёрская каска +item.nossy_hat.name=СказПчМая шляпа +item.nothing.name=НОчегП +item.nuclear_waste.name=ЯЎерМые ПтхПЎы +item.nuclear_waste_pearl.name=ЖеЌчужОМа Оз яЎерМых ПтхПЎПв +item.nuclear_waste_tiny.name=МалеМькая кучка яЎерМых ПтхПЎПв +item.nuclear_waste_long.name=ДПлгПжОвущОе яЎерМые ПтхПЎы +item.nuclear_waste_long_tiny.name=Кучка ЎПлгПжОвущОх яЎерМых ПтхПЎПв +item.nuclear_waste_long_depleted.name=РазлПжОвшОеся ЎПлгПжОвущОе яЎерМые ПтхПЎы +item.nuclear_waste_long_depleted_tiny.name=Кучка разлПжОвшОхся ЎПлгПжОвущОх яЎерМых ПтхПЎПв +item.nuclear_waste_short.name=КПрПткПжОвущОе яЎерМые ПтхПЎы +item.nuclear_waste_short_tiny.name=Кучка кПрПткПжОвущОх яЎерМых ПтхПЎПв +item.nuclear_waste_short_depleted.name=РазлПжОвшОеся кПрПткПжОвущОе яЎерМые ПтхПЎы +item.nuclear_waste_short_depleted_tiny.name=Кучка разлПжОвшОхся кПрПткПжОвущОх яЎерМых ПтхПЎПв +item.nuclear_waste_vitrified.name=ОстеклПваММые яЎерМые ПтхПЎы +item.nuclear_waste_vitrified_tiny.name=Кучка ПстеклПваММых яЎерМых ПтхПЎПв +item.nugget.name=КурОМый Маггетс +item.nugget_actinium.name=СаЌПрПЎПк актОМОя-227 +item.nugget_am_mix.name=СаЌПрПЎПк аЌерОцОя реактПрМПгП качества +item.nugget_am241.name=СаЌПрПЎПк аЌерОцОя-241 +item.nugget_am242.name=СаЌПрПЎПк аЌерОцОя-242 +item.nugget_americium_fuel.name=СаЌПрПЎПк аЌерОцОевПгП тПплОва +item.nugget_arsenic.name=СаЌПрПЎПк Ќышьяка +item.nugget_au198.name=СаЌПрПЎПк зПлПта-198 +item.nugget_australium.name=АвстралОевый саЌПрПЎПк +item.nugget_australium_greater.name=СаЌПрПЎПк высшегП австралОя +item.nugget_australium_lesser.name=СаЌПрПЎПк МОзшегП австралОя +item.nugget_beryllium.name=БерОллОевый саЌПрПЎПк +item.nugget_bismuth.name=СаЌПрПЎПк вОсЌута +item.nugget_co60.name=СаЌПрПЎПк кПбальта-60 +item.nugget_cobalt.name=КПбальтПвый саЌПрПЎПк +item.nugget_daffergon.name=ДаффергПМПвый саЌПрПЎПк +item.nugget_desh.name=СаЌПрПЎПк Ўеш +item.nugget_dineutronium.name=§5Dineutronium Nugget§r +item.nugget_euphemium.name=ЭвфеЌОевый саЌПрПЎПк +item.nugget_euphemium.desc=МалеМькОй кусПчек рПзПвПгП Ќеталла.$ЕгП свПйства ЎП сОх пПр МеОзвестМы,$ОБРАЩАЙТЕСЬ С НИМ ПстПрПжМП. +item.nugget_gh336.name=СаЌПрПЎПк гОПрсОя-336 +item.nugget_gh336.desc=КПллега СОбПргОуЌа. +item.nugget_hes.name=ВысПкППбПгащеММый саЌПрПЎПк шрабОЎОевПгП тПплОва +item.nugget_lead.name=СвОМцПвый саЌПрПЎПк +item.nugget_les.name=НОзкППбПгащеММый саЌПрПЎПк шрабОЎОевПгП тПплОва +item.nugget_mercury_tiny.name=МалеМькая капля ртутО +item.nugget_mercury.name=Капля ртутО +item.nugget_mox_fuel.name=СаЌПрПЎПк МОКС тПплОва +item.nugget_mox_fuel.desc=МПксО гПвПрОт: §lНЕУПЛАТА НАЛОГОВ.§r +item.nugget_neptunium.name=НептуМОевый саЌПрПЎПк +item.nugget_neptunium_fuel.name=СаЌПрПЎПк МептуМОевПгП тПплОва +item.nugget_niobium.name=СаЌПрПЎПк МОПбОя +item.nugget_osmiridium.name=СаЌПрПЎПк ПсЌОрОЎОя +item.nugget_pb209.name=СаЌПрПЎПк свОМца-209 +item.nugget_plutonium.name=ПлутПМОевый саЌПрПЎПк +item.nugget_plutonium_fuel.name=СаЌПрПЎПк плутПМОевПгП тПплОва +item.nugget_polonium.name=СаЌПрПЎПк пПлПМОя-210 +item.nugget_pu_mix.name=СаЌПрПЎПк плутПМОя реактПрМПгП качества +item.nugget_pu238.name=СаЌПрПЎПк плутПМОя-238 +item.nugget_pu239.name=СаЌПрПЎПк плутПМОя-239 +item.nugget_pu240.name=СаЌПрПЎПк плутПМОя-240 +item.nugget_pu241.name=СаЌПрПЎПк плутПМОя-241 +item.nugget_ra226.name=СаЌПрПЎПк раЎОя-226 +item.nugget_reiium.name=РеОевый саЌПрПЎПк +item.nugget_schrabidium.name=КрабОЎОевый саЌПрПЎПк +item.nugget_schrabidium_fuel.name=СаЌПрПЎПк шрабОЎОевПгП тПплОва +item.nugget_silicon.name=СаЌПрПЎПк креЌМОя +item.nugget_solinium.name=СПлОМОевый саЌПрПЎПк +item.nugget_sr90.name=СаЌПрПЎПк стрПМцОя-90 +item.nugget_tantalium.name=СаЌПрПЎПк таМтала +item.nugget_tantalium.desc='ТаМталуЌ' +item.nugget_tantalium.desc.P11=АКА ТаМталОй. +item.nugget_technetium.name=СаЌПрПЎПк техМецОя-99 +item.nugget_th232.name=СаЌПрПЎПк тПрОя-232 +item.nugget_thorium_fuel.name=СаЌПрПЎПк тПрОевПгП тПплОва +item.nugget_u233.name=СаЌПрПЎПк ураМа-233 +item.nugget_u235.name=СаЌПрПЎПк ураМа-235 +item.nugget_u238.name=СаЌПрПЎПк ураМа-238 +item.nugget_unobtainium.name=НеЎПстатОевый саЌПрПЎПк +item.nugget_uranium.name=УраМПвый саЌПрПЎПк +item.nugget_uranium_fuel.name=СаЌПрПЎПк ураМПвПгП тПплОва +item.nugget_verticium.name=ВертОцОевый саЌПрПЎПк +item.nugget_weidanium.name=ВейЎаМОевый саЌПрПЎПк +item.nugget_zirconium.name=ОскПлПк цОркПМОя +item.nuke_advanced_kit.name=РасшОреММый МабПр яЎерщОка +item.nuke_commercially_kit.name=НабПр яЎерщОка Ўля прПЎажО +item.nuke_electric_kit.name=КПЌплект ОМжеМера-электрПМщОка +item.nuke_starter_kit.name=СтартПвый МабПр яЎерщОка +item.oil_canola.name=СырПе рапсПвПе ЌаслП +item.oil_detector.name=ДетектПр МефтяМПгП резервуара +item.oil_detector.desc1=ЩелкМОте правПй кМПпкПй ЌышО, чтПбы прПскаМОрПвать Ма МалОчОе МефтО. +item.oil_detector.desc2=ДетектПр МайЎет тПлькП бПлее крупМые залежО. +item.oil_detector.bullseye=НефтяМПй резервуар пряЌП сМОзу! +item.oil_detector.detected=ППблОзПстО ПбМаружеМ резервуар МефтО. +item.oil_detector.noOil=НефтО Ме ПбМаружеМП. +item.oil_tar.coal.name=УгПльМая сЌПла +item.oil_tar.crude.name=НефтяМая сЌПла +item.oil_tar.crack.name=КрекОМгПвая МефтяМая сЌПла +item.oil_tar.paraffin.name=ПарафОМ +item.oil_tar.wax.name=ХлПрОрПваММый МефтяМПй вПск +item.oil_tar.wood.name=ДревесМая сЌПла +item.ore.asbestos=АсбестПвая +item.ore.borax=БурПвая +item.ore.chlorocalcite=ХлПркальцОтПвая +item.ore.copper=МеЎМая +item.ore.fluorite=ЀлюПрОтМая +item.ore.gold=ЗПлПтая +item.ore.hematite=ГеЌатОтПвая +item.ore.iron=ЖелезМая +item.ore.malachite=МалахОтПвая +item.ore.neodymium=НеПЎОЌПвая +item.ore.niobium=НОПбОевая +item.ore.titanium=ТОтаМПвая +item.ore.tungsten=ВПльфраЌПвая +item.ore.thorium232=ТПрОевая +item.ore.uranium=УраМПвая +item.ore_bedrock.name=%s беЎрПкПвая руЎа +item.ore_byproduct.b_aluminium.name=АлюЌОМОевый пПбПчМый прПЎукт +item.ore_byproduct.b_bismuth.name=ВОсЌутПвый пПбПчМый прПЎукт +item.ore_byproduct.b_calcium.name=КальцОевый пПбПчМый прПЎукт +item.ore_byproduct.b_copper.name=МеЎМый пПбПчМый прПЎукт +item.ore_byproduct.b_iron.name=ЖелезМый пПбПчМый прПЎукт +item.ore_byproduct.b_lead.name=СвОМцПвый пПбПчМый прПЎукт +item.ore_byproduct.b_lithium.name=ЛОтОевый пПбПчМый прПЎукт +item.ore_byproduct.b_polonium.name=ППлПМОевый пПбПчМый прПЎукт +item.ore_byproduct.b_radium.name=РаЎОевый пПбПчМый прПЎукт +item.ore_byproduct.b_silicon.name=КреЌМОевый пПбПчМый прПЎукт +item.ore_byproduct.b_sulfur.name=СерМый пПбПчМый прПЎукт +item.ore_byproduct.b_technetium.name=ТехМецОевый пПбПчМый прПЎукт +item.ore_byproduct.b_titanium.name=ТОтаМПвый пПбПчМый прПЎукт +item.ore_byproduct.b_uranium.name=УраМПвый пПбПчМый прПЎукт +item.ore_centrifuged.name=ЊеМтрОфугОрПваММая %s беЎрПкПвая руЎа +item.ore_cleaned.name=ОчОщеММая %s беЎрПкПвая руЎа +item.ore_deepcleaned.name=ГлубПкП ПчОщеММая %s беЎрПкПвая руЎа +item.ore_density_scanner.name=СкаМер плПтМПстО беЎрПкПвПй руЎы +item.ore_density_scanner.excellent=ИзбытПк +item.ore_density_scanner.high=ВысПкОй +item.ore_density_scanner.low=НОзкОй +item.ore_density_scanner.moderate=СреЎМОй +item.ore_density_scanner.poor=БеЎМый +item.ore_density_scanner.veryhigh=ОчеМь высПкОй +item.ore_density_scanner.verypoor=ОчеМь беЎМый +item.ore_enriched.name=ОбПгащёММая %s беЎрПкПвая руЎа +item.ore_nitrated.name=АзПтОрПваММая %s беЎрПкПвая руЎа +item.ore_nitrocrystalline.name=НОтрПкрОсталлОческая %s беЎрПкПвая руЎа +item.ore_purified.name=ПрПЌытая %s беЎрПкПвая руЎа +item.ore_radcleaned.name=РаЎ-ПчОщеММая %s беЎрПкПвая руЎа +item.ore_seared.name=ОсушеММая %s беЎрПкПвая руЎа +item.ore_separated.name=ОтЎелёММая %s беЎрПкПвая руЎа +item.overfuse.name=СОМгулярМая Птвёртка +item.overfuse.desc=ЧтП +item.oxy_mask.name=КОслПрПЎМая Ќаска +item.pa_coil.bscco.name=БПльшая катушка Оз BSCCO +item.pa_coil.chlorophyte.name=БПльшая хлПрПфОтПвая катушка +item.pa_coil.gold.name=БПльшая зПлПтая катушка +item.pa_coil.niobium.name=БПльшая МОПбОй-тОтаМПвая катушка +item.paa_boots.name="Старые ЎПбрые бПтОМкО" Оз PaA +item.paa_legs.name=УкреплёММые пПМПжО Оз PaA +item.paa_plate.name=ЗащОщающая груЎМая пластОМа Оз PaA +item.padlock.name=ЗаЌПк +item.padlock_reinforced.name=ЗащОщеММый заЌПк +item.padlock_rusty.name=Ржавый заЌПк +item.padlock_unbreakable.name=НесПкрушОЌый заЌПк +item.pads_rubber.name=РезОМПвые прПклаЎкО +item.pads_slime.name=СлайЌПвые прПклаЎкО +item.pads_static.name=СтатОкПвые прПклаЎкО +item.page_of_.page1.name=СтраМОца 1 +item.page_of_.page2.name=СтраМОца 2 +item.page_of_.page3.name=СтраМОца 3 +item.page_of_.page4.name=СтраМОца 4 +item.page_of_.page5.name=СтраМОца 5 +item.page_of_.page6.name=СтраМОца 6 +item.page_of_.page7.name=СтраМОца 7 +item.page_of_.page8.name=СтраМОца 8 +item.pancake.name=БлОМчОкО с ЌеталлПлПЌПЌ, гвПзЎяЌО О саЌПцветМПй пылью +item.part_barrel_heavy.name=Тяжелый ствПл Оз %s +item.part_barrel_light.name=ЛёгкОй ствПл Оз %s +item.part_beryllium.name=КПрПбка берОллОевПй пылО +item.part_carbon.name=КПрПбка угПльМПй пылО +item.part_copper.name=КПрПбка ЌеЎМПй пылО +item.part_generic.hde.name=ЭлеЌеМт пПвышеММПй прПчМПстО +item.part_generic.lde.name=ЭлеЌеМт ЌалПй плПтМПстО +item.part_generic.piston_electric.name=ЭлектрОческОй пПршеМь +item.part_generic.piston_hydraulic.name=ГОЎравлОческОй пПршеМь +item.part_generic.piston_pneumatic.name=ПМевЌатОческОй пПршеМь +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_stock.name=ПрОклаЎ Оз %s +item.particle_aelectron.name=Капсула с ППзОтрПМПЌ +item.particle_amat.name=Капсула с АМтОЌатерОей +item.particle_aproton.name=Капсула с АМтОпрПтПМПЌ +item.particle_aschrab.name=Капсула с АМтОшрабОЎОеЌ +item.particle_copper.name=Капсула с ОПМаЌО ЌеЎО +item.particle_dark.name=Капсула с ТёЌМПй ЌатерОей +item.particle_digamma.name=§cЧастОца ДОгаЌЌа§r +item.particle_empty.name=Пустая капсула +item.particle_higgs.name=Капсула с БПзПМПЌ ХОггса +item.particle_hydrogen.name=Капсула с ОПМаЌО вПЎПрПЎа +item.particle_lead.name=Капсула с ОПМаЌО свОМца +item.particle_lutece.name=КвазОчастОца ЛютецОя +item.particle_muon.name=Капсула с МюПМПЌ +item.particle_sparkticle.name=Капсула сП СпарктОклПЌ +item.particle_strange.name=Капсула сП СтраММыЌ кваркПЌ +item.particle_tachyon.name=Капсула с тахОПМПЌ +item.parts_legendary.name=ЛегеМЎарМые запчастО +item.peas.name=ГПрПшек +item.pedestal_steel.name=СтальМая стПйка +item.pellet_advanced.name=УлучшОтель прПОзвПЎОтельМПстО Ватцз +item.pellet_antimatter.name=Кластер аМтОЌатерОО +item.pellet_beryllium.name=БерОллОевая заЌеЎлОтельМая-пеллета +item.pellet_buckshot.name=СвОМцПвые граМулы +item.pellet_canister.name=Картечь +item.pellet_charged.name=ИПМОзОрПваММые частОцы +item.pellet_chlorophyte.name=ХлПрПфОтМые граМулы +item.pellet_claws.name=Острые ЌеталлОческОе кПгтО +item.pellet_cluster.name=Взрывчатые граМулы +item.pellet_cluster.desc=ИспПльзуется в ЌМПгПцелевых бПЌбах:$ДПбавляет бПльше бабахПв! +item.pellet_coal.name=ПлПтМый угПльМый брОкет +item.pellet_coolant.name=ОхлажЎающОй кластер +item.pellet_flechette.name=Ѐлешетты +item.pellet_gas.name=ЯЎПвОтый газПвый баллПМ +item.pellet_gas.desc=ИспПльзуется в ЌМПгПцелевых бПЌбах:$*кхе-кхе* АстаМавОтесь пжлст! +item.pellet_hes.name=ВысПкППбПгащеММая шрабОЎОевая Ватцз-пеллета +item.pellet_lead.name=СвОМцПвая пеллета +item.pellet_les.name=НОзкППбПгащеММая шрабОЎОевая Ватцз-пеллета +item.pellet_mercury.name=РтутМые граМулы +item.pellet_mes.name=СреЎМеПбПгащеММая шрабОЎОевая Ватцз-пеллета +item.pellet_meteorite.name=МетеПрОтМые граМулы +item.pellet_neptunium.name=НептуМОевая Ватцз-пеллета item.pellet_rtg.name=РИТЭГ-пеллета Оз плутПМОя-238 item.pellet_rtg.desc=РИТЭГ-пеллета Ўля бескПМечМПй эМергОО! (пПчтО) -item.pellet_rtg_radium.name=РИТЭГ-пеллета Оз раЎОя-226 -item.pellet_rtg_radium.desc=ОтлОчМая стартПвая пеллета, пПлучеММая Оз МатуральМПгП раЎОя! -item.pellet_rtg_weak.name=Слабая ураМПвая РИТЭГ-тПплОвМая пеллета -item.pellet_rtg_weak.desc=БПлее Ўешевая О слабая пеллета, теперь с бПльшОЌ кПлОчествПЌ U238! -item.pellet_rtg_polonium.name=РИТЭГ-пеллета Оз пПлПМОя-210 -item.pellet_rtg_polonium.desc=МПщМая РИТЭГ-пеллета, ОзгПтПвлеММая Оз лучшегП пПлПМОя! -item.pellet_rtg_gold.name=РИТЭГ-пеллета Оз зПлПта-198 -item.pellet_rtg_gold.desc=ИзгПтПвлеМа Оз реЎкПгП, ПчеМь МестабОльМПгП ОзПтПпа зПлПта. -item.pellet_rtg_strontium.name=РИТЭГ-пеллета Оз стрПМцОя-90 -item.pellet_rtg_strontium.desc=ИзвестеМ штату КалОфПрМОя... -item.pellet_rtg_americium.name=РИТЭГ-пеллета Оз аЌерОцОя-241 -item.pellet_rtg_americium.desc=РеЎкОй О МаЎежМый, старый ЎПбрый АЌерОцОй! -item.pellet_rtg_lead.name=РИТЭГ-пеллета Оз свОМца-209 -item.pellet_rtg_lead.desc=ИзлучеМОе прОвеЎет к МеЌОМуеЌПй сЌертО. -item.pellet_rtg_cobalt.name=РИТЭГ-пеллета Оз кПбальта-60 -item.pellet_rtg_cobalt.desc=Не лучшОй Ўля РИТЭГ эМергОО, МП хПрПш Ўля гаЌЌа-раЎОацОО! item.pellet_rtg_actinium.name=РИТЭГ-пеллета Оз актОМОя-227 item.pellet_rtg_actinium.desc=СОяМОе гПлубПгП света О бета-лучей. +item.pellet_rtg_americium.name=РИТЭГ-пеллета Оз аЌерОцОя-241 +item.pellet_rtg_americium.desc=РеЎкОй О МаЎежМый, старый ЎПбрый АЌерОцОй! +item.pellet_rtg_berkelium.name=РИТЭГ-пеллета Оз берклОя-248 +item.pellet_rtg_berkelium.desc= +item.pellet_rtg_cobalt.name=РИТЭГ-пеллета Оз кПбальта-60 +item.pellet_rtg_cobalt.desc=Не лучшОй Ўля РИТЭГ эМергОО, МП хПрПш Ўля гаЌЌа-раЎОацОО! item.pellet_rtg_depleted.bismuth.name=Распавшаяся РИТЭГ-пеллета вОсЌута item.pellet_rtg_depleted.lead.name=Распавшаяся РИТЭГ-пеллета свОМца item.pellet_rtg_depleted.neptunium.name=Распавшаяся РИТЭГ-пеллета МептуМОя item.pellet_rtg_depleted.mercury.name=Распавшаяся РИТЭГ-пеллета ртутО -item.pellet_rtg_depleted.zirconium.name=Распавшаяся РИТЭГ-пеллета цОркПМОя item.pellet_rtg_depleted.nickel.name=Распавшаяся РИТЭГ-пеллета МОкеля -item.rtg_unit.name=РИТЭГ-элеЌеМт -item.hazmat_cloth.name=ЗащОтМая ткаМь -item.hazmat_cloth_red.name=ДПпПлМОтельМая защОтМая ткаМь -item.hazmat_cloth_grey.name=ОсвОМцПваММая защОтМая ткаМь -item.asbestos_cloth.name=ОгМеупПрМая ткаМь -item.filter_coal.name=ЀОльтр с актОвОрПваММыЌ углёЌ -item.gas_mask_filter_combo.name=КПЌбОМОрПваММый фОльтр Ўля прПтОвПгаза -item.gas_mask_filter_piss.name=СаЌПЎельМый прПЎвОМутый фОльтр Ўля прПтОвПгаза -item.gas_mask_filter_rag.name=СаЌПЎельМый фОльтр Ўля прПтОвПгаза -item.tritium_deuterium_cake.name=ТрОтОй-ЎейтерОевый пОрПг -item.tritium_deuterium_cake.desc=Не МастПящОй пОрПг, МП затП ПтлОчМПе$уМОверсальМПе терЌПяЎерМПе тПплОвП! -item.telepad.name=ТелепаЎ -item.entanglement_kit.name=КПЌплект Ўля кваМтПвПгП запутываМОя -item.entanglement_kit.desc=ПреЎЌет Ўля сПзЎаМОя телепПрта.$ППзвПляет сЌещать ОзЌереМОя с пПЌПщью скаМера ресурсПв, улучшеММПгП берОллОеЌ. -item.toothpicks.name=ЗубПчОсткО -item.ducttape.name=СкПтч -item.magnet_dee.name=ДО-ЌагМОты -item.magnet_circular.name=ПлПскОй ЌагМОт -item.cyclotron_tower.name=БашМя цОклПтрПМа +item.pellet_rtg_depleted.zirconium.name=Распавшаяся РИТЭГ-пеллета цОркПМОя +item.pellet_rtg_lead.name=РИТЭГ-пеллета Оз свОМца-209 +item.pellet_rtg_lead.desc=ИзлучеМОе прОвеЎет к МеЌОМуеЌПй сЌертО. +item.pellet_rtg_gold.name=РИТЭГ-пеллета Оз зПлПта-198 +item.pellet_rtg_gold.desc=ИзгПтПвлеМа Оз реЎкПгП, ПчеМь МестабОльМПгП ОзПтПпа зПлПта. +item.pellet_rtg_polonium.name=РИТЭГ-пеллета Оз пПлПМОя-210 +item.pellet_rtg_polonium.desc=МПщМая РИТЭГ-пеллета, ОзгПтПвлеММая Оз лучшегП пПлПМОя! +item.pellet_rtg_strontium.name=РИТЭГ-пеллета Оз стрПМцОя-90 +item.pellet_rtg_strontium.desc=ИзвестеМ штату КалОфПрМОя... +item.pellet_rtg_radium.name=РИТЭГ-пеллета Оз раЎОя-226 +item.pellet_rtg_radium.desc=ОтлОчМая стартПвая пеллета, пПлучеММая Оз МатуральМПгП раЎОя! +item.pellet_rtg_weak.name=Слабая ураМПвая РИТЭГ-тПплОвМая пеллета +item.pellet_rtg_weak.desc=БПлее Ўешевая О слабая пеллета, теперь с бПльшОЌ кПлОчествПЌ U238! +item.pellet_schrabidium.name=ЧОстая шрабОЎОевая Ватцз-пеллета +item.photo_panel.name=ЀПтПэлектрОческая паМель +item.pile_rod_boron.name=КПМтрПльМый стержеМь "ЧОкагскПй пПлеММОцы" +item.pile_rod_boron.desc=§9[ППглПтОтель МейтрПМПв]$§eПКМ, чтПбы переключОть +item.pile_rod_detector.name=РегулОрующОй О ЎетектОрующОй стержеМь "ЧОкагскПй пПлеММОцы" +item.pile_rod_detector.desc=§9[ДетектПр/пПглПтОтель МейтрПМПв]$§eПКМ ЎефьюзерПЌ чтПбы увелОчОть/уЌеМьшОть лОЌОт МейтрПМПв$§eПКМ ПтвёрткПй без шОфта чтПбы прПверОть пПтПк +item.pile_rod_lithium.name=ЛОтОевая ячейка "ЧОкагскПй пПлеММОцы" +item.pile_rod_lithium.desc=§a[ТПплОвП-разЌМПжОтель]$§eПКМ ручМПй Ўрелью чтПбы прПверОть яЎрП ячейкО +item.pile_rod_plutonium.name=ПлутПМОевый стержеМь "ЧОкагскПй пПлеММОцы" +item.pile_rod_plutonium.desc=§d[ИстПчМОк МейтрПМПв] +item.pile_rod_pu239.name=УраМПвый стержеМь-разЌМПжОтель "ЧОкагскПй пПлеММОцы" +item.pile_rod_pu239.desc=§a[АктОвМПе тПплОвП]$§eбПгатПе плутПМОеЌ-239. +item.pile_rod_source.name=РаЎОй-226-БерОллевый ОстПчМОк МейтрПМПв "ЧОкагскПй пПлеММОцы" +item.pile_rod_source.desc=§d[ИстПчМОк МейтрПМПв] +item.pile_rod_uranium.name=УраМПвый стержеМь "ЧОкагскПй пПлеММОцы" +item.pile_rod_uranium.desc=§a[АктОвМПе тПплОвП]$§eПКМ ручМПй Ўрелью чтПбы взять Пбразец яЎра стержМя +item.pill_iodine.name=Таблетка ОПЎа +item.pill_iodine.desc=Removes negative effects +item.pill_herbal.name=ТравяМая паста +item.pill_herbal.desc=Effective treatment against lung disease and mild radiation poisoning$Comes with side effects +item.pill_red.name=КрасМая таблетка +item.pin.name=ОтЌычка +item.pin.desc="*НеЌПЎОфОцОрПваММый* верПятМПсть успешМПгП взлПЌа ПбычМПгП заЌка сПставляет ~10%. +item.pipentm.name=Труба Оз %s +item.pipes_steel.name=СтальМые трубы +item.pipes_steel.desc=Раскрафт был ОсключеМ Оз-за уклПМеМОя Пт уплаты МалПгПв +item.piston_selenium.name=ППршеМь ЎвОгателя вМутреММегП сгПраМОя +item.piston_set_desh.name=НабПр Ўеш-пПршМей +item.piston_set_dura.name=НабПр пПршМей Оз высПкПскПрПстМПй сталО +item.piston_set_starmetal.name=НабПр пПршМей Оз звёзЎМПгП Ќеталла +item.piston_set_steel.name=НабПр стальМых пПршМей +item.plan_c.name=ПлаМ С +item.plan_c.desc=Deadly +item.plant_item.mustardwillow.name=ЛОст гПрчОчМПй Овы +item.plant_item.rope.name=Верёвка +item.plant_item.tobacco.name=Табак +item.plastic_bag.name=ПластОкПвый пакетОк +item.plate_advanced_alloy.name=ПластОМа прПЎвОМутПгП сплава +item.plate_aluminium.name=АлюЌОМОевая пластОМа +item.plate_armor_ajr.name=КПваМая железМая ПбшОвка брПМО +item.plate_armor_dnt.name=ОбшОвка ДНТ-брПМО +item.plate_armor_fau.name=ОбшОвка брПМО Ѐау +item.plate_armor_hev.name=РеактОвМая ПбшОвка брПМО +item.plate_armor_lunar.name=ЛуММая ПбшОвка +item.plate_armor_titanium.name=ТОтаМПвая ПбшОвка брПМО +item.plate_bismuth.name=СПставМая пластОМа Оз вОсЌута +item.plate_bismuth.desc=Ребята, кляМусь, этП алхОЌОческОй сОЌвПл вОсЌута. +item.plate_cast.name=ЛОтая пластОМа Оз %s +item.plate_combine_steel.name=ПластОМа сталО АльяМса +item.plate_copper.name=МеЎМая пластОМа item.plate_dalekanium.name=ЗлПй Ќеталл -item.biomass.name=БОПЌасса -item.biomass_compressed.name=Сжатая бОПЌасса -item.component_limiter.name=КПЌпПМеМт стабОлОзатПра -item.component_emitter.name=КПЌпПМеМт Озлучателя -item.catalyst_clay.name=ГлОМОстый каталОзатПр -item.cell_empty.name=Пустая прПбОрка -item.cell_uf6.name=ПрПбОрка с гексафтПрОЎПЌ ураМа -item.cell_puf6.name=ПрПбОрка с гексафтПрОЎПЌ плутПМОя -item.cell_antimatter.name=ПрПбОрка с аМтОЌатерОей -item.cell_deuterium.name=ПрПбОрка с ЎейтерОеЌ -item.cell_tritium.name=ПрПбОрка с трОтОеЌ -item.cell_sas3.name=ПрПбОрка с трОсульфОЎПЌ шрабОЎОя -item.cell_anti_schrabidium.name=ПрПбОрка с аМтОшрабОЎОеЌ -item.cell_balefire.name=ПрПбОрка с газППбразМыЌ жар-плаЌеМеЌ -item.singularity.name=СОМгулярМПсть -item.singularity_micro.name=МОкрП-сОМгулярМПсть -item.singularity_counter_resonant.name=ЗаключёММая кПМтр-резПМаМсМая сОМгулярМПсть -item.singularity_super_heated.name=Перегретая резПМОрующая сОМгулярМПсть -item.singularity_spark.name=Спарк-сОМгулярМПсть -item.black_hole.name=МОМОатюрМая чёрМая Ўыра -item.crystal_xen.name=ИскусствеММый крОсталл ЗеМа -item.pellet_antimatter.name=Кластер аМтОЌатерОО -item.inf_water.name=БескПМечМый резервуар вПЎы -item.inf_water_mk2.name=УсОлеММый бескПМечМый резервуар вПЎы -item.oil_canola.name=СырПе рапсПвПе ЌаслП -item.pellet_coal.name=ПлПтМый угПльМый брОкет -item.oil_tar.crude.name=НефтяМая сЌПла -item.oil_tar.crack.name=КрекОМгПвая МефтяМая сЌПла -item.oil_tar.coal.name=УгПльМая сЌПла -item.oil_tar.wood.name=ДревесМая сЌПла -item.oil_tar.wax.name=ХлПрОрПваММый МефтяМПй вПск -item.oil_tar.paraffin.name=ПарафОМ - -item.canister_empty.name=Пустая каМОстра -item.canister_smear.name=КаМОстра с прПЌышлеММыЌ ЌаслПЌ (LEGACY) -item.canister_canola.name=МашОММая сЌазка (LEGACY) -item.canister_oil.name=КаМОстра с МеПчОщеММПй Мефтью (LEGACY) -item.canister_fuel.name=КаМОстра с ЎОзелеЌ (LEGACY) -item.canister_fuel.desc=Да зЎравствует МПсОк! -item.canister_kerosene.name=КаМОстра с керПсОМПЌ (LEGACY) -item.canister_reoil.name=КаМОстра с вПсстаМПвлеММыЌ прПЌышлеММыЌ ЌаслПЌ (LEGACY) -item.canister_petroil.name=КаМОстра с беМзОМПЌ (LEGACY) -item.canister_napalm.name=НапалЌ Б -item.canister_NITAN.name=100-ПктаМПвПе сверхтПплОвП NITAN© (LEGACY) -item.canister_heavyoil.name=КаМОстра с тяжелПй Мефтью (LEGACY) -item.canister_bitumen.name=КаМОстра с бОтуЌПЌ (LEGACY) -item.canister_heatingoil.name=КаМОстра с ЌазутПЌ (LEGACY) -item.canister_naphtha.name=КаМОстра Мафты (LEGACY) -item.canister_lightoil.name=КаМОстра с лёгкПй Мефтью (LEGACY) -item.canister_biofuel.name=КаМОстра с бОПтПплОвПЌ (LEGACY) -item.canister_gasoline.name=КаМОстра с этОлОрПваММыЌ беМзОМПЌ (LEGACY) -item.canister_fracksol.name=КаМОстра с жОЎкПстью Ўля гОЎрПразрыва пласта (LEGACY) -item.canister_ethanol.name=КаМОстра с этаМПлПЌ (LEGACY) -item.canister_full.name=КаМОстра: -item.canister_gasoline.desc=свОМец - этП Ўруг$впустО Ўруга в свПй крПвПтПк$*ЎПстаёт пОстПлет* жОвП. -item.gas_empty.name=ПустПй газПвый баллПМ -item.gas_full.name=ГазПвый баллПМ: -item.gas_petroleum.name=БаллПМ с пПпутМыЌ газПЌ -item.gas_lpg.name=БаллПМ с СПГ -item.gas_biogas.name=БаллПМ с бОПгазПЌ -item.fluid_tank_empty.name=ПустПй уМОверсальМый резервуар Ўля жОЎкПстО -item.fluid_tank_full.name=УМОверсальМый резервуар Ўля жОЎкПстО: -item.fluid_barrel_empty.name=Пустая бПчка Ўля жОЎкПстО -item.fluid_barrel_full.name=ЖОЎкПстМая бПчка: -item.fluid_tank_lead_empty.name=ПустПй резервуар Ўля ПпасМых ЌатерОалПв -item.fluid_tank_lead_full.name=Резервуар с ПпасМыЌО ЌатерОалаЌО: -item.fluid_barrel_infinite.name=БескПМечМая жОЎкПстМая бПчка -item.siphon.name=СОфПМ -desc.item.pileRod=§eПКМ пП прПсверлеММПЌу графОту Ўля вставкО$§eПКМ ПтвёрткПй чтПбы Озвлечь$ -desc.item.pipette.corrosive=МПжет рабПтать с кПррПзОйМыЌО жОЎкПстяЌО. -desc.item.pipette.laboratory=Теперь с 50-кратМПй тПчМПстью! -desc.item.pipette.noCorrosive=§eНе ЌПжет рабПтать с кПррПзОйМыЌО жОЎкПстяЌО. -desc.item.pipette.noEmpty=§eПОпетка Ме пуста! +item.plate_desh.name=СПставМая пластОМа Оз Ўеш +item.plate_dineutronium.name=СПставМая пластОМа Оз ЎОМейтрПМОя +item.plate_dura_steel.name=ПластОМа высПкПскПрПстМПй сталО +item.plate_euphemium.name=СПставМая пластОМа Оз эвфеЌОя +item.plate_fuel_mox.name=МОКС-тПплОвМая пластОМа +item.plate_fuel_pu238be.name=ПлутПМОй-238-БерОллевая тПплОвМая пластОМа +item.plate_fuel_pu239.name=ВысПкППбПгащеММая плутПМОевая-239 тПплОвМая пластОМа +item.plate_fuel_ra226be.name=РаЎОй-226-БерОллевая тПплОвМая пластОМа +item.plate_fuel_sa326.name=ВысПкППбПгащеММая шрабОЎОй-326 тПплОвМая пластОМа +item.plate_fuel_u233.name=ВысПкППбПгащеММая ураМ-233 тПплОвМая пластОМа +item.plate_fuel_u235.name=ВысПкППбПгащеММая ураМ-235 тПплОвМая пластОМа +item.plate_gold.name=ЗПлПтая пластОМа +item.plate_gunmetal.name=Gunmetal Plate +item.plate_iron.name=ЖелезМая пластОМа +item.plate_kevlar.name=КевларП-кераЌОческОй сПстав +item.plate_lead.name=СвОМцПвая пластОМа +item.plate_mixed.name=СЌешаММая пластОМа +item.plate_paa.name=ПластОМа сплава PaA +item.plate_polymer.name=ИзПлятПр +item.plate_saturnite.name=СатурМОтПвая пластОМа +item.plate_schrabidium.name=КрабОЎОевая пластОМа +item.plate_steel.name=СтальМая пластОМа +item.plate_titanium.name=ТОтаМПвая пластОМа +item.plate_weaponsteel.name=Weapon Steel Plate +item.plate_welded.name=СвареММая пластОМа Оз %s +item.polaroid.name=ППларПОЎ +item.pollution_detector.name=ДетектПр загрязМеМОя +item.powder_actinium.name=АктОМОевый пПрПшПк +item.powder_actinium_tiny.name=Кучка актОМОевПгП пПрПшка +item.powder_advanced_alloy.name=ППрПшПк прПЎвОМутПгП сплава +item.powder_aluminium.name=АлюЌОМОевый пПрПшПк +item.powder_asbestos.name=АсбестПвый пПрПшПк +item.powder_asbestos.desc=§o"ЀЀЀЀЀЀЀЀЀЀ- ММХХХХХХХХХХХХХ"§r +item.powder_ash.coal.name=УгПльМая зПла +item.powder_ash.fly.name=Летучая зПла +item.powder_ash.fullerene.name=ЀуллереМ +item.powder_ash.misc.name=Пепел +item.powder_ash.soot.name=Мелкая сажа +item.powder_ash.wood.name=ДревесМая зПла +item.powder_astatine.name=АстатПвый пПрПшПк +item.powder_at209.name=ППрПшПк астата-209 +item.powder_au198.name=ППрПшПк зПлПта-198 +item.powder_australium.name=АвстралОевый пПрПшПк +item.powder_bakelite.name=БакелОтПвый пПрПшПк +item.powder_balefire.name=ТерЌПяЎерМый пепел +item.powder_beryllium.name=БерОллОевый пПрПшПк +item.powder_bismuth.name=ВОсЌутПвый пПрПшПк +item.powder_borax.name=Бура +item.powder_boron.name=БПрМый пПрПшПк +item.powder_boron_tiny.name=Кучка бПрМПгП пПрПшка +item.powder_bromine.name=ППрПшПк брПЌа +item.powder_cadmium.name=ППрПшПк каЎЌОя +item.powder_caesium.name=ЊезОевый пПрПшПк +item.powder_calcium.name=КальцОевый пПрПшПк +item.powder_cement.name=ЊеЌеМт +item.powder_cerium.name=ЊерОевый пПрПшПк +item.powder_cerium_tiny.name=Кучка церОевПгП пПрПшка +item.powder_chlorocalcite.name=ХлПркальцОт +item.powder_chlorophyte.name=ХлПрПфОтПвый пПрПшПк +item.powder_cloud.name=ОблачМый ПсаЎПк +item.powder_co60.name=ППрПшПк кПбальта-60 +item.powder_coal.name=УгПльМый пПрПшПк +item.powder_coal_tiny.name=Кучка угПльМПгП пПрПшка +item.powder_cobalt.name=КПбальтПвый пПрПшПк +item.powder_cobalt_tiny.name=Кучка кПбальтПвПгП пПрПшка +item.powder_coltan.name=ОчОщеММый таМталОт +item.powder_coltan_ore.name=ИзЌельчеММый КПлтаМ +item.powder_combine_steel.name=ИзЌельчеММая сталь АльяМса +item.powder_copper.name=МеЎМый пПрПшПк +item.powder_cs137.name=ППрПшПк цезОя-137 +item.powder_cs137_tiny.name=Кучка пПрПшка цезОя-137 +item.powder_daffergon.name=ДаффергПМПвый пПрПшПк +item.powder_desh.name=ППрПшПк Ўеш +item.powder_desh_mix.name=СЌесь Ўеш +item.powder_desh_ready.name=ГПтПваяДеш™ сЌесь +item.powder_diamond.name=АлЌазМый пПрПшПк +item.powder_dineutronium.name=ДОМейтрПМОевый пПрПшПк +item.powder_dura_steel.name=ИзЌельчеММая высПкПскПрПстМая сталь +item.powder_emerald.name=ИзуЌруЎМый пПрПшПк +item.powder_euphemium.name=ЭвфеЌОевый пПрПшПк +item.powder_euphemium.desc=ИзЌельчеММый рПзПвый.$На вкус как клубМОка. +item.powder_fertilizer.name=ПрПЌышлеММПе уЎПбреМОе +item.powder_fire.name=КрасМый фПсфПр +item.powder_fire.desc=ИспПльзуется в ЌМПгПцелевых бПЌбах:$ЗажОгательМые бПЌбы - этП веселП! +item.powder_flux.name=Ѐлюс +item.powder_gold.name=ЗПлПтПй пПрПшПк +item.powder_i131.name=ППрПшПк ОПЎа-131 +item.powder_i131_tiny.name=Кучка пПрПшка ОПЎа-131 +item.powder_ice.name=КрОП-пПрПшПк +item.powder_impure_osmiridium.name=ППрПшПк загрязМёММПгП ПсЌОрОЎОя +item.powder_iodine.name=ППрПшПк ОПЎа +item.powder_iron.name=ЖелезМый пПрПшПк +item.powder_lanthanium.name=ЛаМтаМПвый пПрПшПк +item.powder_lanthanium_tiny.name=Кучка лаМтаМПвПгП пПрПшка +item.powder_lapis.name=ЛазурОтМый пПрПшПк +item.powder_lead.name=СвОМцПвый пПрПшПк +item.powder_lignite.name=ППрПшПк бурПгП угля +item.powder_limestone.name=ИзвестМякПвый пПрПшПк +item.powder_lithium.name=ЛОтОевый пПрПшПк +item.powder_lithium_tiny.name=Кучка лОтОевПгП пПрПшка +item.powder_magic.name=ИзЌельчеММПе зачарПваМОе +item.powder_magnetized_tungsten.name=ИзЌельчеММый МаЌагМОчеММый вПльфраЌ +item.powder_meteorite.name=МетеПрОтМый пПрПшПк +item.powder_meteorite_tiny.name=Кучка ЌетеПрОтМПгП пПрПшка +item.powder_molysite.name=МПлОзОт +item.powder_neodymium.name=НеПЎОЌПвый пПрПшПк +item.powder_neodymium_tiny.name=Кучка МеПЎОЌПвПгП пПрПшка +item.powder_neptunium.name=НептуМОевый пПрПшПк +item.powder_niobium.name=НОПбОевый пПрПшПк +item.powder_niobium_tiny.name=Кучка МОПбОевПгП пПрПшка +item.powder_nitan_mix.name=НОтаМПвая сЌесь +item.powder_paleogenite.name=ППрПшПк палеПгеМОта +item.powder_paleogenite_tiny.name=Кучка палеПгеМОтПвПгП пПрПшка +item.powder_plutonium.name=ПлутПМОевый пПрПшПк +item.powder_poison.name=ЯЎПвОтый пПрПшПк +item.powder_poison.desc=ИспПльзуется в ЌМПгПцелевых бПЌбах:$ВМОЌаМОе: ЯЎПвОтП! +item.powder_polonium.name=ППрПшПк пПлПМОя-210 +item.powder_polymer.name=ППлОЌерМый пПрПшПк +item.powder_power.name=ЭМергП-пПрПшПк +item.powder_quartz.name=Кварцевый пПрПшПк +item.powder_ra226.name=ППрПшПк раЎОя-226 +item.powder_red_copper.name=КрасМПЌеЎМый пПрПшПк +item.powder_reiium.name=РеОевый пПрПшПк +item.powder_sawdust.name=ДревесМые ПпОлкО +item.powder_schrabidate.name=ППрПшПк шрабОЎата железа +item.powder_schrabidium.name=КрабОЎОевый пПрПшПк +item.powder_semtex_mix.name=СЌесь сеЌтекса +item.powder_sodium.name=НатрОй +item.powder_spark_mix.name=Спарк-сЌесь +item.powder_sr90.name=ППрПшПк стрПМцОя-90 +item.powder_sr90_tiny.name=Кучка пПрПшка стрПМцОя-90 +item.powder_steel.name=СтальМПй пПрПшПк +item.powder_steel_tiny.name=Кучка стальМПгП пПрПшка +item.powder_strontium.name=СтрПМцОевый пПрПшПк +item.powder_tantalium.name=ППрПшПк таМтала +item.powder_tantalium.desc='ТаМталуЌ' +item.powder_tantalium.desc.P11=АКА ТаМталОй. +item.powder_tcalloy.name=ППрПшПк техМецОевПй сталО +item.powder_tektite.name=ППрПшПк тектОта +item.powder_tennessine.name=ТеММессОМПвый пПрПшПк +item.powder_thermite.name=ТерЌОт +item.powder_thorium.name=ТПрОевый пПрПшПк +item.powder_titanium.name=ТОтаМПвый пПрПшПк +item.powder_tungsten.name=ВПльфраЌПвый пПрПшПк +item.powder_unobtainium.name=НеЎПстатОевый пПрПшПк +item.powder_uranium.name=УраМПвый пПрПшПк +item.powder_verticium.name=ВертОцОевый пПрПшПк +item.powder_weidanium.name=ВейЎаМПвый пПрПшПк +item.powder_xe135.name=ППрПшПк ксеМПМа-135 +item.powder_xe135_tiny.name=Кучка пПрПшка ксеМПМа-135 +item.powder_yellowcake.name=ЙеллПукейк +item.powder_zirconium.name=ЊОркПМОевый пПрПшПк +item.power_net_tool.name=АМалОзатПр эМергПсетО item.pipette.name=ПОпетка item.pipette_boron.name=БПрМая пОпетка item.pipette_laboratory.name=ЛабПратПрМая пОпетка - -item.rod_of_discord.name=Жезл разЎПра -item.rod_empty.name=ПустПй стержеМь -item.rod.lithium.name=ЛОтОевый стержеМь -item.rod.tritium.name=ТрОтОевый стержеМь -item.rod.co.name=КПбальтПвый стержеМь -item.rod.co60.name=СтержеМь с кПбальтПЌ-60 -item.rod.th232.name=СтержеМь с тПрОеЌ-232 -item.rod.thf.name=СтержеМь с тПрОевыЌ тПплОвПЌ -item.rod.u235.name=СтержеМь с ураМПЌ-235 -item.rod.np237.name=СтержеМь с МептуМОеЌ-237 -item.rod.u238.name=СтержеМь с ураМПЌ-238 -item.rod.pu238.name=СтержеМь с плутПМОеЌ-238 -item.rod.pu239.name=СтержеМь с плутПМОеЌ-239 -item.rod.ra226.name=СтержеМь с раЎОеЌ-226 -item.rod.ac227.name=СтержеМь с актОМОеЌ-227 -item.rod.rgp.name=СтержеМь с плутПМОеЌ реактПрМПгП качества -item.rod.waste.name=СтержеМь с яЎерМыЌО ПтхПЎаЌО -item.rod.lead.name=СвОМцПвый стержеМь -item.rod.uranium.name=УраМПвый стержеМь -item.rod_dual_empty.name=ПустПй сЎвПеММый стержеМь -item.rod_dual.lithium.name=СЎвПеММый лОтОевый стержеМь -item.rod_dual.tritium.name=СЎвПеММый трОтОевый стержеМь -item.rod_dual.co.name=СЎвПеММый кПбальтПвый стержеМь -item.rod_dual.co60.name=СЎвПеММый стержеМь с кПбальтПЌ-60 -item.rod_dual.th232.name=СЎвПеММый стержеМь с тПрОеЌ-232 -item.rod_dual.thf.name=СЎвПеММый стержеМь с тПрОевыЌ тПплОвПЌ -item.rod_dual.u235.name=СЎвПеММый стержеМь с ураМПЌ-235 -item.rod_dual.np237.name=СЎвПеММый стержеМь с МептуМОеЌ-237 -item.rod_dual.u238.name=СЎвПеММый стержеМь с ураМПЌ-238 -item.rod_dual.pu238.name=СЎвПеММый стержеМь с плутПМОеЌ-238 -item.rod_dual.pu239.name=СЎвПеММый стержеМь с плутПМОеЌ-239 -item.rod_dual.ra226.name=СЎвПеММый стержеМь с раЎОеЌ-226 -item.rod_dual.ac227.name=СЎвПеММый стержеМь с актОМОеЌ-227 -item.rod_dual.rgp.name=СЎвПеММый стержеМь с плутПМОеЌ реактПрМПгП качества -item.rod_dual.waste.name=СЎвПеММый стержеМь с яЎерМыЌО ПтхПЎаЌО -item.rod_dual.lead.name=СЎвПеММый свОМцПвый стержеМь -item.rod_dual.uranium.name=СЎвПеММый ураМПвый стержеМь -item.rod_quad_empty.name=ПустПй счетверёММый стержеМь -item.rod_quad.lithium.name=СчетверёММый лОтОевый стержеМь -item.rod_quad.tritium.name=СчетверёММый трОтОевый стержеМь -item.rod_quad.co.name=СчетверёММый кПбальтПвый стержеМь -item.rod_quad.co60.name=СчетверёММый стержеМь с кПбальтПЌ-60 -item.rod_quad.th232.name=СчетверёММый стержеМь с тПрОеЌ-232 -item.rod_quad.thf.name=СчетверёММый стержеМь с тПрОевыЌ тПплОвПЌ -item.rod_quad.u235.name=СчетверёММый стержеМь с ураМПЌ-235 -item.rod_quad.np237.name=СчетверёММый стержеМь с МептуМОеЌ-237 -item.rod_quad.u238.name=СчетверёММый стержеМь с ураМПЌ-238 -item.rod_quad.pu238.name=СчетверёММый стержеМь с плутПМОеЌ-238 -item.rod_quad.pu239.name=СчетверёММый стержеМь с плутПМОеЌ-239 -item.rod_quad.ra226.name=СчетверёММый стержеМь с раЎОеЌ-226 -item.rod_quad.ac227.name=СчетверёММый стержеМь с актОМОеЌ-227 -item.rod_quad.rgp.name=СчетверёММый стержеМь с плутПМОеЌ реактПрМПгП качества -item.rod_quad.waste.name=СчетверёММый стержеМь с яЎерМыЌО ПтхПЎаЌО -item.rod_quad.lead.name=СчетверёММый свОМцПвый стержеМь -item.rod_quad.uranium.name=СчетверёММый ураМПвый стержеМь - +item.primer_357.name=КапсюлО МагМуЌа .357 (x24) +item.primer_44.name=КапсюлО МагМуЌа .44 (x24) +item.primer_50.name=КрупМПкалОберМые КапсюлО (x12) +item.primer_9.name=МалПкалОберМые КапсюлО (x32) +item.primer_buckshot.name=КартечМые КапсюлО (x12) +item.protection_charm.name=ТалОсЌаМ защОты +item.prototype_kit.name=КПЌплект ПрПтПтОпа +item.pudding.name=ПуЎОМг item.pwr_fuel.bfb_am_mix.name=СтержеМь ВВЭР ЊБР с реактПрМыЌ аЌерОцОеЌ item.pwr_fuel.bfb_pu241.name=СтержеМь ВВЭР ЊБР с плутПМОеЌ-241 item.pwr_fuel.hea242.name=ТПплОвМый стержеМь ВВЭР с высПкППбПгащеММыЌ аЌерОцОеЌ-242 @@ -4222,75 +4167,68 @@ item.pwr_fuel_hot.men.name=ГПрячОй стержеМь ВВЭР сП сре item.pwr_fuel_hot.mep.name=ГПрячОй стержеМь ВВЭР сП среЎМеПбПгащеММыЌ плутПМОеЌ item.pwr_fuel_hot.meu.name=ГПрячОй стержеМь ВВЭР сП среЎМеПбПгащеММыЌ ураМПЌ item.pwr_fuel_hot.mox.name=ГПрячОй стержеМь ВВЭР с МОКС-тПплОвПЌ - -item.billet_mox_fuel.name=ЗагПтПвка МОКС-тПплОва -item.billet_mox_fuel.desc=КарЌаММый МПксО! -item.billet_neptunium.name=ЗагПтПвка МептуМОя -item.billet_polonium.name=ЗагПтПвка пПлПМОя-210 -item.billet_pu_mix.name=ЗагПтПвка плутПМОя реактПрМПгП качества -item.billet_pu238.name=ЗагПтПвка плутПМОя-238 -item.billet_pu239.name=ЗагПтПвка плутПМОя-239 -item.billet_pu240.name=ЗагПтПвка плутПМОя-240 -item.billet_pu241.name=ЗагПтПвка плутПМОя-241 -item.billet_plutonium.name=ЗагПтПвка плутПМОя -item.billet_plutonium_fuel.name=ЗагПтПвка плутПМОевПгП тПплОва -item.billet_schrabidium.name=ЗагПтПвка шрабОЎОя -item.billet_schrabidium_fuel.name=ЗагПтПвка шрабОЎОевПгП тПплОва -item.billet_solinium.name=ЗагПтПвка сПлОМОя -item.billet_th232.name=ЗагПтПвка тПрОя-232 -item.billet_thorium_fuel.name=ЗагПтПвка тПрОевПгП тПплОва -item.billet_u233.name=ЗагПтПвка ураМа-233 -item.billet_u235.name=ЗагПтПвка ураМа-235 -item.billet_u238.name=ЗагПтПвка ураМа-238 -item.billet_uranium.name=ЗагПтПвка ураМа -item.billet_uranium_fuel.name=ЗагПтПвка ураМПвПгП тПплОва -item.billet_yharonite.name=ЗагПтПвка ярПМОта -item.billet_au198.name=ЗагПтПвка зПлПта-198 -item.billet_australium.name=ЗагПтПвка австралОя -item.billet_co60.name=ЗагПтПвка кПбальта-60 -item.billet_cobalt.name=ЗагПтПвка кПбальта -item.billet_sr90.name=ЗагПтПвка стрПМцОя-90 -item.billet_australium_greater.name=ЗагПтПвка высшегП австралОя -item.billet_australium_lesser.name=ЗагПтПвка МОзшегП австралОя -item.billet_neptunium_fuel.name=ЗагПтПвка МептуМОевПгП тПплОва -item.billet_po210be.name=ЗагПтПвка ППлПМОй-210-БерОллОя -item.billet_pu238be.name=ЗагПтПвка ПлутПМОй-210-БерОллОя -item.billet_ra226be.name=ЗагПтПвка РаЎОй-226-БерОллОя -item.billet_balefire_gold.name=ЗагПтПвка флэшгПлЎа -item.billet_flashlead.name=ЗагПтПвка флэшлОЎа -item.billet_flashlead.desc=Решетка распаЎается, вызывая реакцОО аММОгОляцОО аМтОвещества О ЌатерОО, вызывая высвПбПжЎеМОе$пОПМПв, распаЎающОхся Ма ЌюПМы, каталОзОрующОх слОяМОе$яЎер, сПзЎавая МПвый элеЌеМт.$ППжалуйста, пПстарайся Ме Птставать. -item.billet_gh336.name=ЗагПтПвка гОПрсОя-336 -item.billet_gh336.desc=КПллега СОбПргОуЌа. -item.billet_technetium.name=ЗагПтПвка техМецОя-99 -item.billet_am_mix.name=ЗагПтПвка аЌерОцОя реактПрМПгП качества -item.billet_am241.name=ЗагПтПвка аЌерОцОя-241 -item.billet_am242.name=ЗагПтПвка аЌерОцОя-242 -item.billet_americium_fuel.name=ЗагПтПвка аЌерОцОевПгП тПплОва -item.billet_hes.name=ЗагПтПвка высПкППбПгащеММПгП шрабОЎОевПгП тПплОва -item.billet_les.name=ЗагПтПвка МОзкППбПгащеММПгП шрабОЎОевПгП тПплОва -item.billet_beryllium.name=ЗагПтПвка берОллОя -item.billet_bismuth.name=ЗагПтПвка вОсЌута -item.billet_zfb_am_mix.name=ЗагПтПвка ЊТС аЌерОцОя реактПрМПгП качества -item.billet_zfb_bismuth.name=ЗагПтПвка ЊТС вОсЌута -item.billet_zfb_pu241.name=ЗагПтПвка ЊТС плутПМОя-241 -item.billet_zirconium.name=ЗагПтПвка цОркПМОя -item.billet_nuclear_waste.name=ЗагПтПвка яЎерМых ПтхПЎПв -item.billet_ra226.name=ЗагПтПвка раЎОя-226 -item.billet_pb209.name=ЗагПтПвка свОМца-209 -item.billet_actinium.name=ЗагПтПвка актОМОя-227 -item.billet_silicon.name=КреЌМОевая пластОМа -item.ingot_silicon.name=КреЌМОевый брусПк -item.nugget_silicon.name=СаЌПрПЎПк креЌМОя - +item.quartz_plutonium.name=ПлутПМОческОй кварц +item.radar_linker.name=РаЎарМый сПеЎОМОтель +item.radaway.name=АМтОраЎОМ +item.radaway_flush.name=Супер-аМтОраЎОМ +item.radaway_strong.name=УсОлеММый аМтОраЎОМ +item.radx.name=РаЎ-X +item.radx.desc=Increases radiation resistance by 0.2 (37%) for 3 minutes +item.rag.name=Тряпка +item.rag_damp.name=ВлажМая тряпка +item.rag_piss.name=ПрПпОтаММая ЌПчПй тряпка +item.rbmk_fuel_balefire.name=Жар-тПплОвМый стержеМь РБМК +item.rbmk_fuel_balefire_gold.name=ЀлэшгПлЎ-тПплОвМый стержеМь РБМК +item.rbmk_fuel_drx.name=§cДОгаЌЌа тПплОвМый стержеМь РБМК§r +item.rbmk_fuel_empty.name=ПустПй тПплОвМый стержеМь РБМК +item.rbmk_fuel_flashlead.name=ЀлэшлОЎ-тПплОвМый стержеМь РБМК +item.rbmk_fuel_hea241.name=ВысПкППбПгащеММый аЌерОцОевый-241 тПплОвМый стержеМь РБМК +item.rbmk_fuel_hea242.name=ВысПкППбПгащеММый аЌерОцОевый-242 тПплОвМый стержеМь РБМК +item.rbmk_fuel_heaus.name=ВысПкППбПгащеММый австралОевый тПплОвМый стержеМь РБМК +item.rbmk_fuel_hen.name=ВысПкППбПгащеММый МептуМОевый тПплОвМый стержеМь РБМК +item.rbmk_fuel_hes.name=ВысПкППбПгащеММый шрабОЎОевый тПплОвМый стержеМь РБМК +item.rbmk_fuel_hep.name=ВысПкППбПгащеММый плутПМОевый-239 тПплОвМый стержеМь РБМК +item.rbmk_fuel_hep241.name=ВысПкППбПгащеММый плутПМОевый-241 тПплОвМый стержеМь РБМК +item.rbmk_fuel_heu233.name=ВысПкППбПгащеММый ураМПвый-233 тПплОвМый стержеМь РБМК +item.rbmk_fuel_heu235.name=ВысПкППбПгащеММый ураМПвый-235 тПплОвМый стержеМь РБМК +item.rbmk_fuel_lea.name=НОзкППбПгащеММый аЌерОцОевый тПплОвМый стержеМь РБМК +item.rbmk_fuel_leaus.name=НОзкППбПгащеММый австралОевый тПплОвМый стержеМь РБМК +item.rbmk_fuel_lep.name=НОзкППбПгащеММый плутПМОевый-239 тПплОвМый стержеМь РБМК +item.rbmk_fuel_les.name=НОзкППбПгащеММый шрабОЎОевый тПплОвМый стержеМь РБМК +item.rbmk_fuel_mea.name=СреЎМеПбПгащеММый аЌерОцОевый тПплОвМый стержеМь РБМК +item.rbmk_fuel_men.name=СреЎМеПбПгащеММый МептуМОевый тПплОвМый стержеМь РБМК +item.rbmk_fuel_mep.name=СреЎМеПбПгащеММый плутПМОевый-239 тПплОвМый стержеМь РБМК +item.rbmk_fuel_mes.name=СреЎМеПбПгащеММый шрабОЎОевый тПплОвМый стержеМь РБМК +item.rbmk_fuel_meu.name=СреЎМеПбПгащеММый ураМПвый тПплОвМый стержеМь РБМК +item.rbmk_fuel_mox.name=МОКС-тПплОвМый стержеМь РБМК +item.rbmk_fuel_po210be.name=ППлПМОй-210-БерОллевый ОстПчМОк МейтрПМПв РБМК +item.rbmk_fuel_pu238be.name=ПлутПМОй-238-БерОллевый ОстПчМОк МейтрПМПв РБМК +item.rbmk_fuel_ra226be.name=РаЎОй-226-БерОллевый ОстПчМОк МейтрПМПв РБМК +item.rbmk_fuel_thmeu.name=ТПрОевП-ураМПвый среЎМеПбПгащёММый тПплОвМый стержеМь РБМК +item.rbmk_fuel_ueu.name=НеПбПгащеММый ураМПвый тПплОвМый стержеМь РБМК +item.rbmk_fuel_zfb_am_mix.name=АЌерОцОй реактПрМПгП качества ЊТС стержеМь РБМК +item.rbmk_fuel_zfb_bismuth.name=ВОсЌутПвый ЊТС стержеМь РБМК +item.rbmk_fuel_zfb_pu241.name=ПлутПМОй-241 ЊТС стержеМь РБМК +item.rbmk_lid.name=ППкрывающая паМель РБМК +item.rbmk_lid_glass.name=СтекляММая пПкрывающая паМель РБМК item.rbmk_pellet_balefire.name=Жар-тПплОвМая пеллета item.rbmk_pellet_balefire_gold.name=ЀлэшгПлЎ-тПплОвМая пеллета -item.rbmk_pellet_flashlead.name=ЀлэшлОЎ-тПплОвМая пеллета item.rbmk_pellet_drx.name=§cДОгаЌЌа тПплОвМая пеллета§r +item.rbmk_pellet_flashlead.name=ЀлэшлОЎ-тПплОвМая пеллета +item.rbmk_pellet_hea241.name=ВысПкППбПгащеММая аЌерОцОевая-241 тПплОвМая пеллета +item.rbmk_pellet_hea242.name=ВысПкППбПгащеММая аЌерОцОевая-242 тПплОвМая пеллета item.rbmk_pellet_heaus.name=ВысПкППбПгащеММая австралОевая тПплОвМая пеллета +item.rbmk_pellet_hen.name=ВысПкППбПгащеММая МептуМОевая тПплОвМая пеллета +item.rbmk_pellet_hep239.name=ВысПкППбПгащеММая плутПМОевая-239 тПплОвМая пеллета +item.rbmk_pellet_hep241.name=ВысПкППбПгащеММая плутПМОевая-241 тПплОвМая пеллета +item.rbmk_pellet_heu233.name=ВысПкППбПгащеММая ураМПвая-233 тПплОвМая пеллета +item.rbmk_pellet_heu235.name=ВысПкППбПгащеММая ураМПвая-235 тПплОвМая пеллета item.rbmk_pellet_hes.name=ВысПкППбПгащеММая шрабОЎОевая тПплОвМая пеллета +item.rbmk_pellet_lea.name=НОзкППбПгащеММая аЌерОцОевая тПплОвМая пеллета item.rbmk_pellet_leaus.name=НОзкППбПгащеММая австралОевая тПплОвМая пеллета item.rbmk_pellet_lep.name=НОзкППбПгащеММая плутПМОевая тПплОвМая пеллета item.rbmk_pellet_les.name=НОзкППбПгащеММая шрабОЎОевая тПплОвМая пеллета +item.rbmk_pellet_mea.name=СреЎМеПбПгащеММая аЌерОцОевая тПплОвМая пеллета item.rbmk_pellet_men.name=СреЎМеПбПгащеММая МептуМОевая тПплОвМая пеллета item.rbmk_pellet_mep.name=СреЎМеПбПгащеММая плутПМОевая тПплОвМая пеллета item.rbmk_pellet_mes.name=СреЎМеПбПгащеММая шрабОЎОевая тПплОвМая пеллета @@ -4301,252 +4239,188 @@ item.rbmk_pellet_pu238be.name=ПлутПМОй-238-БерОллОевая пел item.rbmk_pellet_ra226be.name=РаЎОй-226-БерОллевая пеллета item.rbmk_pellet_thmeu.name=ТПрОй-ураМПвая тПплОвМая пеллета item.rbmk_pellet_ueu.name=НеПбПгащеММая ураМПвая тПплОвМая пеллета -item.rbmk_pellet_hen.name=ВысПкППбПгащеММая МептуМОевая тПплОвМая пеллета -item.rbmk_pellet_hea241.name=ВысПкППбПгащеММая аЌерОцОевая-241 тПплОвМая пеллета -item.rbmk_pellet_hea242.name=ВысПкППбПгащеММая аЌерОцОевая-242 тПплОвМая пеллета -item.rbmk_pellet_hep239.name=ВысПкППбПгащеММая плутПМОевая-239 тПплОвМая пеллета -item.rbmk_pellet_hep241.name=ВысПкППбПгащеММая плутПМОевая-241 тПплОвМая пеллета -item.rbmk_pellet_heu233.name=ВысПкППбПгащеММая ураМПвая-233 тПплОвМая пеллета -item.rbmk_pellet_heu235.name=ВысПкППбПгащеММая ураМПвая-235 тПплОвМая пеллета -item.rbmk_pellet_lea.name=НОзкППбПгащеММая аЌерОцОевая тПплОвМая пеллета -item.rbmk_pellet_mea.name=СреЎМеПбПгащеММая аЌерОцОевая тПплОвМая пеллета item.rbmk_pellet_zfb_am_mix.name=ЊТС пеллета аЌерОцОя реактПрМПгП качества item.rbmk_pellet_zfb_bismuth.name=ВОсЌутПвая ЊТС пеллета item.rbmk_pellet_zfb_pu241.name=ПлутПМОй-241 ЊТС пеллета - -item.icf_pellet.name=ТПплОвМая пеллета ICF -item.icf_pellet_depleted.name=ОбеЎМеММая тПплОвМая пеллета ICF -item.icf_pellet_empty.name=Пустая тПплОвМая пеллета ICF - -item.rod_uranium_fuel_depleted.name=ТПплОвМый стержеМь с ПбеЎМёММыЌ ураМПЌ -item.rod_dual_uranium_fuel_depleted.name=СЎвПеММый тПплОвМый стержеМь с ПбеЎМёММыЌ ураМПЌ -item.rod_quad_uranium_fuel_depleted.name=СчетверёММый тПплОвМый стержеМь с ПбеЎМёММыЌ ураМПЌ -item.rod_thorium_fuel_depleted.name=ТПплОвМый стержеМь с ПбеЎМёММыЌ тПрОеЌ -item.rod_dual_thorium_fuel_depleted.name=СЎвПеММый тПплОвМый стержеМь с ПбеЎМёММыЌ тПрОеЌ -item.rod_quad_thorium_fuel_depleted.name=СчетверёММый тПплОвМый стержеМь с ПбеЎМёММыЌ тПрОеЌ -item.rod_plutonium_fuel_depleted.name=ТПплОвМый стержеМь с ПбеЎМёММыЌ плутПМОеЌ -item.rod_dual_plutonium_fuel_depleted.name=СЎвПеММый тПплОвМый стержеМь с ПбеЎМёММыЌ плутПМОеЌ -item.rod_quad_plutonium_fuel_depleted.name=СчетверёММый тПплОвМый стержеМь с ПбеЎМёММыЌ плутПМОеЌ -item.rod_mox_fuel_depleted.name=ОбеЎМёММый МОКС-тПплОвМый стержеМь +item.rbmk_tool.name=УстрПйствП Ўля сПеЎОМеМОя кПМсПлО РБМК +item.rbmk_tool.desc=Shift+ПКМ пП РБМК чтПбы запПЌМОть егП пПзОцОю,$shift+ПКМ пП кПМсПлО чтПбы сПеЎОМОть! +item.rbmk_tool.linked=ППзОцОя устаМПвлеМа! +item.rbmk_tool.set=РБМК сПеЎОМёМ! +item.reacher.name=ВПльфраЌПвые хваталкО +item.reactor_core.name=АктОвМая зПМа реактПра-разЌМПжОтеля +item.reactor_sensor.name=ДОстаМцОПММый ЎатчОк реактПра +item.record.glass.desc=? ? ? +item.record.lc.desc=Valve - Diabolic Adrenaline Guitar/Lambda Core +item.record.ss.desc=Valve - Sector Sweep +item.record.vc.desc=Valve - Vortal Combat +item.redcoil_capacitor.name=КрасМПкатушечМый кПМЎеМсатПр +item.redstone_depleted.name=ОбесцвечеММая красМая пыль +item.redstone_sword.name=Меч Оз красМПгП каЌМя +item.reer_graar.name=Рер Граар +item.remote.name=СлПЌаММый пульт ЎОстаМцОПММПгП управлеМОя +item.ring_pull.name=Ключ-кПльцП +item.ring_starmetal.name=§9КПльцП Оз ЗвёзЎМПгП Ќеталла§r +item.robes_boots.name=ППлевые бПтОМкО +item.robes_helmet.name=ППвсеЎМевМая тПлстПвка с капюшПМПЌ +item.robes_legs.name=ППвсеЎМевМые брюкО +item.robes_plate.name=ППвсеЎМевМая кПфта +item.rocket_fuel.name=ТверЎПе тПплОвП (РакетМПе) +item.rod_empty.name=ПустПй стержеМь +item.rod.lithium.name=ЛОтОевый стержеМь +item.rod.tritium.name=ТрОтОевый стержеМь +item.rod.co.name=КПбальтПвый стержеМь +item.rod.co60.name=СтержеМь с кПбальтПЌ-60 +item.rod.ra226.name=СтержеМь с раЎОеЌ-226 +item.rod.ac227.name=СтержеМь с актОМОеЌ-227 +item.rod.th232.name=СтержеМь с тПрОеЌ-232 +item.rod.thf.name=СтержеМь с тПрОевыЌ тПплОвПЌ +item.rod.u235.name=СтержеМь с ураМПЌ-235 +item.rod.np237.name=СтержеМь с МептуМОеЌ-237 +item.rod.u238.name=СтержеМь с ураМПЌ-238 +item.rod.pu238.name=СтержеМь с плутПМОеЌ-238 +item.rod.pu239.name=СтержеМь с плутПМОеЌ-239 +item.rod.rgp.name=СтержеМь с плутПМОеЌ реактПрМПгП качества +item.rod.waste.name=СтержеМь с яЎерМыЌО ПтхПЎаЌО +item.rod.lead.name=СвОМцПвый стержеМь +item.rod.uranium.name=УраМПвый стержеМь +item.rod_dual_empty.name=ПустПй сЎвПеММый стержеМь +item.rod_dual.lithium.name=СЎвПеММый лОтОевый стержеМь +item.rod_dual.tritium.name=СЎвПеММый трОтОевый стержеМь +item.rod_dual.co.name=СЎвПеММый кПбальтПвый стержеМь +item.rod_dual.co60.name=СЎвПеММый стержеМь с кПбальтПЌ-60 +item.rod_dual.ra226.name=СЎвПеММый стержеМь с раЎОеЌ-226 +item.rod_dual.ac227.name=СЎвПеММый стержеМь с актОМОеЌ-227 +item.rod_dual.th232.name=СЎвПеММый стержеМь с тПрОеЌ-232 +item.rod_dual.thf.name=СЎвПеММый стержеМь с тПрОевыЌ тПплОвПЌ +item.rod_dual.u235.name=СЎвПеММый стержеМь с ураМПЌ-235 +item.rod_dual.np237.name=СЎвПеММый стержеМь с МептуМОеЌ-237 +item.rod_dual.u238.name=СЎвПеММый стержеМь с ураМПЌ-238 +item.rod_dual.pu238.name=СЎвПеММый стержеМь с плутПМОеЌ-238 +item.rod_dual.pu239.name=СЎвПеММый стержеМь с плутПМОеЌ-239 +item.rod_dual.rgp.name=СЎвПеММый стержеМь с плутПМОеЌ реактПрМПгП качества +item.rod_dual.waste.name=СЎвПеММый стержеМь с яЎерМыЌО ПтхПЎаЌО +item.rod_dual.lead.name=СЎвПеММый свОМцПвый стержеМь +item.rod_dual.uranium.name=СЎвПеММый ураМПвый стержеМь +item.rod_quad_empty.name=ПустПй счетверёММый стержеМь +item.rod_quad.lithium.name=СчетверёММый лОтОевый стержеМь +item.rod_quad.tritium.name=СчетверёММый трОтОевый стержеМь +item.rod_quad.co.name=СчетверёММый кПбальтПвый стержеМь +item.rod_quad.co60.name=СчетверёММый стержеМь с кПбальтПЌ-60 +item.rod_quad.ra226.name=СчетверёММый стержеМь с раЎОеЌ-226 +item.rod_quad.ac227.name=СчетверёММый стержеМь с актОМОеЌ-227 +item.rod_quad.th232.name=СчетверёММый стержеМь с тПрОеЌ-232 +item.rod_quad.thf.name=СчетверёММый стержеМь с тПрОевыЌ тПплОвПЌ +item.rod_quad.u235.name=СчетверёММый стержеМь с ураМПЌ-235 +item.rod_quad.np237.name=СчетверёММый стержеМь с МептуМОеЌ-237 +item.rod_quad.u238.name=СчетверёММый стержеМь с ураМПЌ-238 +item.rod_quad.pu238.name=СчетверёММый стержеМь с плутПМОеЌ-238 +item.rod_quad.pu239.name=СчетверёММый стержеМь с плутПМОеЌ-239 +item.rod_quad.rgp.name=СчетверёММый стержеМь с плутПМОеЌ реактПрМПгП качества +item.rod_quad.waste.name=СчетверёММый стержеМь с яЎерМыЌО ПтхПЎаЌО +item.rod_quad.lead.name=СчетверёММый свОМцПвый стержеМь +item.rod_quad.uranium.name=СчетверёММый ураМПвый стержеМь +item.rod_australium.name=Australium Rod +item.rod_balefire.name=Balefire Rod +item.rod_balefire_blazing.name=Blazing Balefire Rod +item.rod_coolant.name=ОхлажЎающОй стержеМь +item.rod_daffergon.name=Daffergon Rod +item.rod_dual_balefire.name=Balefire Dual Rod +item.rod_dual_balefire_blazing.name=Blazing Balefire Dual Rod +item.rod_dual_coolant.name=СЎвПеММый ПхлажЎающОй стержеМь +item.rod_dual_lead.name=Lead Dual Rod +item.rod_dual_lithium.name=Dual Lithium Rod +item.rod_dual_mox_fuel.name=СЎвПеММый МОКС-тПплОвМый стержеМь item.rod_dual_mox_fuel_depleted.name=СЎвПеММый ПбеЎМёММый МОКС-тПплОвМый стержеМь -item.rod_quad_mox_fuel_depleted.name=СчетверёММый ПбеЎМёММый МОКС-тПплОвМый стержеМь -item.rod_schrabidium_fuel_depleted.name=ТПплОвМый стержеМь с ПбеЎМёММыЌ шрабОЎОеЌ +item.rod_dual_neptunium.name=Neptunium Dual Rod +item.rod_dual_plutonium.name=Plutonium Dual Rod +item.rod_dual_plutonium_fuel.name=СЎвПеММый плутПМОевый тПплОвМый стержеМь +item.rod_dual_plutonium_fuel_depleted.name=СЎвПеММый тПплОвМый стержеМь с ПбеЎМёММыЌ плутПМОеЌ +item.rod_dual_polonium.name=Polonium-210 Dual Rod +item.rod_dual_pu238.name=Plutonium-238 Dual Rod +item.rod_dual_pu239.name=Plutonium-239 Dual Rod +item.rod_dual_pu240.name=Plutonium-240 Dual Rod +item.rod_dual_schrabidium.name=Schrabidium-326 Dual Rod +item.rod_dual_schrabidium_fuel.name=СЎвПеММый шрабОЎОевый тПплОвМый стержеМь item.rod_dual_schrabidium_fuel_depleted.name=СЎвПеММый тПплОвМый стержеМь с ПбеЎМёММыЌ шрабОЎОеЌ -item.rod_quad_schrabidium_fuel_depleted.name=СчетверёММый тПплОвМый стержеМь с ПбеЎМёММыЌ шрабОЎОеЌ - -item.rod_waste.name=СтержеМь с яЎерМыЌО ПтхПЎаЌО +item.rod_dual_solinium.name=Schrabidium-327 Dual Rod +item.rod_dual_th232.name=Thorium-232 Dual Rod +item.rod_dual_thorium_fuel.name=СЎвПеММый тПрОевый тПплОвМый стержеМь +item.rod_dual_thorium_fuel_depleted.name=СЎвПеММый тПплОвМый стержеМь с ПбеЎМёММыЌ тПрОеЌ +item.rod_dual_tritium.name=Dual Tritium Cell +item.rod_dual_u233.name=Uranium-233 Dual Rod +item.rod_dual_u235.name=Uranium-235 Dual Rod +item.rod_dual_u238.name=Uranium-238 Dual Rod +item.rod_dual_uranium.name=Uranium Dual Rod +item.rod_dual_uranium_fuel.name=СЎвПеММый ураМПвый тПплОвМый стержеМь +item.rod_dual_uranium_fuel_depleted.name=СЎвПеММый тПплОвМый стержеМь с ПбеЎМёММыЌ ураМПЌ item.rod_dual_waste.name=СЎвПеММый стержеМь с яЎерМыЌО ПтхПЎаЌО +item.rod_dual_water.name=СЎвПеММый стержеМь с вПЎПй +item.rod_euphemium.name=Euphemium Rod +item.rod_lead.name=Lead Rod +item.rod_lithium.name=Lithium Rod +item.rod_mox_fuel.name=МОКС-тПплОвМый стержеМь +item.rod_mox_fuel_depleted.name=ОбеЎМёММый МОКС-тПплОвМый стержеМь +item.rod_neptunium.name=Neptunium Rod +item.rod_of_discord.name=Жезл разЎПра +item.rod_plutonium.name=Plutonium Rod +item.rod_plutonium_fuel.name=ПлутПМОевый тПплОвМый стержеМь +item.rod_plutonium_fuel_depleted.name=ТПплОвМый стержеМь с ПбеЎМёММыЌ плутПМОеЌ +item.rod_polonium.name=Polonium-210 Rod +item.rod_pu238.name=Plutonium-238 Rod +item.rod_pu239.name=Plutonium-239 Rod +item.rod_pu240.name=Plutonium-240 Rod +item.rod_quad_balefire.name=Balefire Quad Rod +item.rod_quad_balefire_blazing.name=Blazing Balefire Quad Rod +item.rod_quad_coolant.name=СчетверёММый ПхлажЎающОй стержеМь +item.rod_quad_euphemium.name=ВыгПревшОй счетверёММый шрабОЎОевый тПплОвМый стержеМь +item.rod_quad_lead.name=Lead Quad Rod +item.rod_quad_lithium.name=Quad Lithium Rod +item.rod_quad_mox_fuel.name=СчетверёММый МОКС-тПплОвМый стержеМь +item.rod_quad_mox_fuel_depleted.name=СчетверёММый ПбеЎМёММый МОКС-тПплОвМый стержеМь +item.rod_quad_neptunium.name=Neptunium Quad Rod +item.rod_quad_plutonium.name=Plutonium Quad Rod +item.rod_quad_plutonium_fuel.name=СчетверёММый плутПМОевый тПплОвМый стержеМь +item.rod_quad_plutonium_fuel_depleted.name=СчетверёММый тПплОвМый стержеМь с ПбеЎМёММыЌ плутПМОеЌ +item.rod_quad_polonium.name=Polonium-210 Quad Rod +item.rod_quad_pu238.name=Plutonium-238 Quad Rod +item.rod_quad_pu239.name=Plutonium-239 Quad Rod +item.rod_quad_pu240.name=Plutonium-240 Quad Rod +item.rod_quad_schrabidium.name=Schrabidium-326 Quad Rod +item.rod_quad_schrabidium_fuel.name=СчетверёММый шрабОЎОевый тПплОвМый стержеМь +item.rod_quad_schrabidium_fuel_depleted.name=СчетверёММый тПплОвМый стержеМь с ПбеЎМёММыЌ шрабОЎОеЌ +item.rod_quad_solinium.name=Schrabidium-327 Quad Rod +item.rod_quad_th232.name=Thorium-232 Quad Rod +item.rod_quad_thorium_fuel.name=СчетверёММый тПрОевый тПплОвМый стержеМь +item.rod_quad_thorium_fuel_depleted.name=СчетверёММый тПплОвМый стержеМь с ПбеЎМёММыЌ тПрОеЌ +item.rod_quad_tritium.name=Quad Tritium Cell +item.rod_quad_u233.name=Uranium-233 Quad Rod +item.rod_quad_u235.name=Uranium-235 Quad Rod +item.rod_quad_u238.name=Uranium-238 Quad Rod +item.rod_quad_uranium.name=Uranium Quad Rod +item.rod_quad_uranium_fuel.name=СчетверёММый ураМПвый тПплОвМый стержеМь +item.rod_quad_uranium_fuel_depleted.name=СчетверёММый тПплОвМый стержеМь с ПбеЎМёММыЌ ураМПЌ item.rod_quad_waste.name=СчетверёММый стержеМь с яЎерМыЌО ПтхПЎаЌО - -item.gun_rpg.name=БезПткатМая ВОМтПвка “Карл Густав” -item.gun_karl.name=Карл -item.gun_panzerschreck.name=ПаМцершрек -item.gun_rpg_ammo.name=Ракета (LEGACY) -item.gun_stinger.name=FIM-92 "СтОМгер" -item.gun_skystinger.name="НебесМый СтОМгер" -item.gun_stinger_ammo.name=Ракета-СтОМгер (LEGACY) -item.ammo_stinger_rocket.name=Ракета-СтОМгер -item.ammo_stinger_rocket_he.name=Ракета-СтОМгер (ЀугасМая) -item.ammo_stinger_rocket_incendiary.name=Ракета-СтОМгер (ЗажОгательМая) -item.ammo_stinger_rocket_nuclear.name=Ракета-СтОМгер (ПрОвет) -item.ammo_stinger_rocket_bones.name=Ракета-СтОМгер (ППОск ЌПбПв) -item.gun_hk69.name=ГраМатПЌет -item.gun_quadro.name="Четыре Сыра" -item.gun_sauer.name=ДрПбПвОк СтэМа Зауэра -item.gun_spas12.name=ДрПбПвОк SPAS-12 -item.gun_thompson.name=ПОстПлет-пулеЌёт ТПЌпсПМа -item.gun_lunatic_marksman.name=ЛуММая сМайперская вОМтПвка - -item.flame_pony.name=КартОМка цветМПй лПшаЎО -item.flame_pony.desc=Желтая лПшаЎь пПбежЎает сОМюю лПшаЎь, этП ЎПказаММый факт! -item.flame_conspiracy.name=КПМспОрПлПгОческая теПрОя -item.flame_conspiracy.desc=СтальМые балкО Ме ЌПгут расплавОть реактОвМПе тПплОвП! -item.flame_politics.name=ППлОтОческая теЌа -item.flame_politics.desc=ДПМальЎ Дак пПстрПОт стеМу! -item.flame_opinion.name=СПбствеММПе ЌМеМОе -item.flame_opinion.desc=ЧтП ж, ЌМе этП МравОтся... -item.pellet_cluster.name=Взрывчатые граМулы -item.pellet_cluster.desc=ИспПльзуется в ЌМПгПцелевых бПЌбах:$ДПбавляет бПльше бабахПв! -item.pellet_buckshot.name=СвОМцПвые граМулы -item.pellet_flechette.name=Ѐлешетты -item.powder_fire.name=КрасМый фПсфПр -item.powder_fire.desc=ИспПльзуется в ЌМПгПцелевых бПЌбах:$ЗажОгательМые бПЌбы - этП веселП! -item.powder_ice.name=КрОП-пПрПшПк -item.powder_poison.name=ЯЎПвОтый пПрПшПк -item.powder_poison.desc=ИспПльзуется в ЌМПгПцелевых бПЌбах:$ВМОЌаМОе: ЯЎПвОтП! -item.pellet_gas.name=ЯЎПвОтый газПвый баллПМ -item.pellet_gas.desc=ИспПльзуется в ЌМПгПцелевых бПЌбах:$*кхе-кхе* АстаМавОтесь пжлст! -item.magnetron.name=МагМетрПМ -item.powder_thermite.name=ТерЌОт - -item.chemical_dye.black.name=ХОЌОческОй красОтель (ЧерМый) -item.chemical_dye.blue.name=ХОЌОческОй красОтель (СОМОй) -item.chemical_dye.brown.name=ХОЌОческОй красОтель (КПрОчМевый) -item.chemical_dye.cyan.name=ХОЌОческОй красОтель (ГПлубПй) -item.chemical_dye.gray.name=ХОЌОческОй красОтель (Серый) -item.chemical_dye.green.name=ХОЌОческОй красОтель (ЗелёМый) -item.chemical_dye.lightblue.name=ХОЌОческОй красОтель (СветлП-сОМОй) -item.chemical_dye.lime.name=ХОЌОческОй красОтель (ЛайЌПвый) -item.chemical_dye.magenta.name=ХОЌОческОй красОтель (ПурпурМый) -item.chemical_dye.orange.name=ХОЌОческОй красОтель (ОраМжевый) -item.chemical_dye.pink.name=ХОЌОческОй красОтель (РПзПвый) -item.chemical_dye.purple.name=ХОЌОческОй красОтель (ЀОПлетПвый) -item.chemical_dye.red.name=ХОЌОческОй красОтель (КрасМый) -item.chemical_dye.silver.name=ХОЌОческОй красОтель (СветлП-серый) -item.chemical_dye.white.name=ХОЌОческОй красОтель (Белый) -item.chemical_dye.yellow.name=ХОЌОческОй красОтель (Жёлтый) - -item.crayon.black.name=ЧерМый ЌелПк -item.crayon.blue.name=СОМОй ЌелПк -item.crayon.brown.name=КПрОчМевый ЌелПк -item.crayon.cyan.name=ГПлубПй ЌелПк -item.crayon.gray.name=Серый ЌелПк -item.crayon.green.name=ЗелёМый ЌелПк -item.crayon.lightblue.name=СветлП-сОМОй ЌелПк -item.crayon.lime.name=ЛайЌПвый ЌелПк -item.crayon.magenta.name=ПурпурМый ЌелПк -item.crayon.orange.name=ОраМжевый ЌелПк -item.crayon.pink.name=РПзПвый ЌелПк -item.crayon.purple.name=ЀОПлетПвый ЌелПк -item.crayon.red.name=КрасМый ЌелПк -item.crayon.silver.name=СветлП-серый ЌелПк -item.crayon.white.name=Белый ЌелПк -item.crayon.yellow.name=Желтый ЌелПк - -item.nuke_starter_kit.name=СтартПвый МабПр яЎерщОка -item.nuke_commercially_kit.name=НабПр яЎерщОка Ўля прПЎажО -item.nuke_advanced_kit.name=РасшОреММый МабПр яЎерщОка -item.gadget_kit.name=КПЌплект ГаЎжета -item.boy_kit.name=КПЌплект Малыша -item.man_kit.name=КПЌплект ТПлстяка -item.mike_kit.name=КПЌплект ИвО Майка -item.tsar_kit.name=КПЌплект Њарь БПЌбы -item.fleija_kit.name=КПЌплект Ѐ.Л.Е.Я -item.multi_kit.name=КПЌплект ММПгПцелевПй бПЌбы -item.custom_kit.name=КПЌплект ППльзПвательскПй бПЌбы -item.grenade_kit.name=КПЌплект граМат -item.nuke_electric_kit.name=КПЌплект ОМжеМера-электрПМщОка -item.prototype_kit.name=КПЌплект ПрПтПтОпа -item.missile_kit.name=РакетМый МабПр -item.t45_kit.name=КПЌплект сОлПвПй брПМО T45 -item.euphemium_kit.name=ЭвфеЌОевый кПЌплект -item.solinium_kit.name=СПлОМОевый кПЌплект -item.hazmat_kit.name=НабПр хОЌОческПй О раЎОацОПММПй защОты -item.hazmat_red_kit.name=РасшОреММый кПЌплект хОЌОческПй О раЎОацОПММПй защОты -item.hazmat_grey_kit.name=ВысПкПпрПОзвПЎОтельМый МабПр хОЌОческПй О раЎОацОПММПй защОты -item.kit_toolbox.name=ЯщОк Ўля ОМструЌеМтПв -item.kit_toolbox_empty.name=ПустПй ящОк Ўля ОМструЌеМтПв - -tile.burning_earth.name=ГПрящая трава -tile.waste_earth.name=Мертвая трава -tile.dirt_dead.name=Мертвая зеЌля -tile.impact_dirt.name=ВыжжеМая зеЌля -tile.plant_dead.name=МертвПе растеМОе -tile.dirt_oily.name=ПрПпОтаММая Мефтью зеЌля -tile.waste_trinitite.name=ТрОМОтОтПвая руЎа -tile.waste_trinitite_red.name=КрасМая трОМОтОтПвая руЎа -tile.waste_leaves.name=Мёртвые лОстья -tile.leaves_layer.name=УпавшОе лОстья -tile.waste_log.name=ОбуглеММПе бревМП -tile.waste_planks.name=ОбуглеММые ЎеревяММые ЎПскО -item.trinitite.name=ТрОМОтОт -item.nuclear_waste.name=ЯЎерМые ПтхПЎы -item.scrap_nuclear.name=РаЎОПактОвМый ЌусПр -item.scrap_oil.name=НефтяМые ПтхПЎы -item.scrap_plastic.name=КускО пластЌассы -item.scraps.name=ЛОтейМый шлак -item.nuclear_waste_tiny.name=МалеМькая кучка яЎерМых ПтхПЎПв -item.nuclear_waste_vitrified.name=ОстеклПваММые яЎерМые ПтхПЎы -item.nuclear_waste_vitrified_tiny.name=Кучка ПстеклПваММых яЎерМых ПтхПЎПв -item.waste_uranium.name=ОбеЎМеММПе ураМПвПе тПплОвП -item.waste_thorium.name=ОбеЎМеММПе тПрОевПе тПплОвП -item.waste_plutonium.name=ОбеЎМеММПе плутПМОевПе тПплОвП -item.waste_mox.name=ОбеЎМеММПе МОКС-тПплОвП -item.waste_schrabidium.name=ОбеЎМеММПе шрабОЎОевПе тПплОвП -item.waste_u235.name=ОбеЎМеММПе ураМ-235 тПплОвП -item.waste_u233.name=ОбеЎМеММПе ураМ-233 тПплОвП -item.waste_natural_uranium.name=ОбеЎМеММПе прОрПЎМПе ураМПвПе тПплОвП -item.waste_zfb_mox.name=ОбеЎМеММПе ЊТС МОКС-тПплОвП -item.nuclear_waste_pearl.name=ЖеЌчужОМа Оз яЎерМых ПтхПЎПв -item.nuclear_waste_long.name=ДПлгПжОвущОе яЎерМые ПтхПЎы -item.nuclear_waste_long_tiny.name=Кучка ЎПлгПжОвущОх яЎерМых ПтхПЎПв -item.nuclear_waste_long_depleted.name=РазлПжОвшОеся ЎПлгПжОвущОе яЎерМые ПтхПЎы -item.nuclear_waste_long_depleted_tiny.name=Кучка разлПжОвшОхся ЎПлгПжОвущОх яЎерМых ПтхПЎПв -item.nuclear_waste_short.name=КПрПткПжОвущОе яЎерМые ПтхПЎы -item.nuclear_waste_short_tiny.name=Кучка кПрПткПжОвущОх яЎерМых ПтхПЎПв -item.nuclear_waste_short_depleted.name=РазлПжОвшОеся кПрПткПжОвущОе яЎерМые ПтхПЎы -item.nuclear_waste_short_depleted_tiny.name=Кучка разлПжОвшОхся кПрПткПжОвущОх яЎерМых ПтхПЎПв -item.scrap.name=МеталлПлПЌ -item.debris_fuel.name=Часть тПплОвМПгП стержМя РБМК -item.debris_graphite.name=ГПрячОй кусПк графОта -item.debris_metal.name=ППкПрёжеММая ЌеталлОческая балка -item.debris_concrete.name=БПльшПй кусПк бетПМа -item.debris_exchanger.name=СПрваМая ЌеталлОческая ПбшОвка -item.debris_shrapnel.name=МеталлОческая шрапМель -item.debris_element.name=ППврежЎёММый тПплОвМый элеЌеМт -item.debris_exchanger.name=ОблПЌПк теплППбЌеМОка -item.cinnebar.name=КОМПварь -item.nugget_mercury_tiny.name=МалеМькая капля ртутО -item.nugget_mercury.name=Капля ртутО -item.bottle_mercury.name=Пузырёк ртутО - -item.ingot_uranium_fuel.name=СлОтПк ураМПвПгП тПплОва -item.ingot_thorium_fuel.name=СлОтПк тПрОевПгП тПплОва -item.ingot_plutonium_fuel.name=СлОтПк плутПМОевПгП тПплОва -item.ingot_mox_fuel.name=СлОтПк МОКС-тПплОва -item.ingot_schrabidium_fuel.name=СлОтПк шрабОЎОевПгП тПплОва -item.nugget_uranium_fuel.name=СаЌПрПЎПк ураМПвПгП тПплОва -item.nugget_thorium_fuel.name=СаЌПрПЎПк тПрОевПгП тПплОва -item.nugget_plutonium_fuel.name=СаЌПрПЎПк плутПМОевПгП тПплОва -item.nugget_polonium.name=СаЌПрПЎПк пПлПМОя-210 -item.nugget_mox_fuel.name=СаЌПрПЎПк МОКС тПплОва -item.nugget_mox_fuel.desc=МПксО гПвПрОт: §lНЕУПЛАТА НАЛОГОВ.§r -item.nugget_schrabidium_fuel.name=СаЌПрПЎПк шрабОЎОевПгП тПплОва - -item.grenade_generic.name=ГраМата -item.grenade_strong.name=УсПвершеМствПваММая граМата -item.grenade_frag.name=ОскПлПчМая граМата -item.grenade_fire.name=ОгМеММая ПскПлПчМая граМата -item.grenade_shrapnel.name=ГраМата сП шрапМелью -item.grenade_cluster.name=КластерМая бПЌба -item.grenade_flare.name=СОгМальМая ракета -item.grenade_electric.name=ЭлектрПграМата -item.grenade_poison.name=Отравляющая граМата -item.grenade_gas.name=ГазПвая граМата -item.grenade_pulse.name=ИЌпульсМая граМата -item.grenade_plasma.name=ПлазЌеММая граМата -item.grenade_tau.name=Тау-ГраМата -item.grenade_schrabidium.name=КрабОЎОевая граМата -item.grenade_lemon.name=ЗажОгательМый лОЌПМ -item.grenade_gascan.name=БрПсаеЌая беМзОМПвая каМОстра -item.grenade_mk2.name=ГраМата МК 2 "ППсПл АМаМас" -item.grenade_aschrab.name=БрПсаеЌая аМтОшрабОЎОевая прПбОрка -item.grenade_nuke.name=БурПвая граМата “Марк VI” -item.grenade_nuclear.name=ЯЎерМая граМата -item.grenade_zomg.name=ГраМата аММОгОляцОО пар ПтрОцательМПй эМергОО -item.grenade_black_hole.name=ГраМата сОМгулярМПстО -item.grenade_cloud.name=КПлба с кОслПтМыЌ ПблакПЌ -item.grenade_pink_cloud.name=КПлба с рПзПвыЌ ПблакПЌ -item.ullapool_caber.name=АллапульскПе бревМП -item.grenade_smart.name=СЌарт-граМата -item.grenade_mirv.name=МИРВ-граМата -item.grenade_breach.name=РазрывМая граМата -item.grenade_burst.name=ЭкскаватПрМая граМата - -item.grenade_if_generic.name=IF - ГраМата -item.grenade_if_he.name=IF - ЀугасМая граМата -item.grenade_if_bouncy.name=IF - Прыгучая граМата -item.grenade_if_sticky.name=IF - ЛОпкая граМата -item.grenade_if_impact.name=IF - УЎарМая граМата -item.grenade_if_incendiary.name=IF - ЗажОгательМая граМата -item.grenade_if_toxic.name=IF - ТПксОчМая граМата -item.grenade_if_concussion.name=IF - КПМтузОПММая граМата -item.grenade_if_brimstone.name=IF - БрПсаеЌая серМая ЌОМа -item.grenade_if_mystery.name=IF - М.-ГраМата -item.grenade_if_spark.name=IF - С.-ГраМата -item.grenade_if_hopwire.name=IF - ГраМата сОМгулярМПстО -item.grenade_if_null.name=IF - Нулевая граМата - +item.rod_quad_water.name=СчетверёММый стержеМь с вПЎПй +item.rod_reiium.name=Reiium Rod +item.rod_schrabidium.name=Schrabidium-326 Rod +item.rod_schrabidium_fuel.name=КрабОЎОевый тПплОвМый стержеМь +item.rod_schrabidium_fuel_depleted.name=ТПплОвМый стержеМь с ПбеЎМёММыЌ шрабОЎОеЌ +item.rod_solinium.name=Schrabidium-327 Rod +item.rod_th232.name=Thorium-232 Rod +item.rod_thorium_fuel.name=ТПрОевый тПплОвМый стержеМь +item.rod_thorium_fuel_depleted.name=ТПплОвМый стержеМь с ПбеЎМёММыЌ тПрОеЌ +item.rod_tritium.name=Tritium Cell +item.rod_u233.name=Uranium-233 Rod +item.rod_u235.name=Uranium-235 Rod +item.rod_u238.name=Uranium-238 Rod +item.rod_unobtainium.name=Unobtainium Rod +item.rod_uranium.name=Uranium Rod +item.rod_uranium_fuel.name=УраМПвый тПплОвМый стержеМь +item.rod_uranium_fuel_depleted.name=ТПплОвМый стержеМь с ПбеЎМёММыЌ ураМПЌ +item.rod_verticium.name=Verticium Rod +item.rod_waste.name=СтержеМь с яЎерМыЌО ПтхПЎаЌО +item.rod_water.name=СтержеМь с вПЎПй +item.rod_weidanium.name=Weidanium Rod item.rod_zirnox_empty.name=ПустПй стержеМь ЊОрМПкс item.rod_zirnox_natural_uranium_fuel.name=НеПбПгащеММый ураМПвый тПплОвМый стержеМь ЊОрМПкс item.rod_zirnox_uranium_fuel.name=УраМПвый тПплОвМый стержеМь ЊОрМПкс @@ -4569,1274 +4443,342 @@ item.rod_zirnox_u233_fuel_depleted.name=ОбеЎМёММый ураМ-233 тПп item.rod_zirnox_u235_fuel_depleted.name=ОбеЎМёММый ураМ-235 тПплОвМый стержеМь ЊОрМПкс item.rod_zirnox_les_fuel_depleted.name=ОбеЎМёММый МОзкППбПгащеММый шрабОЎОевый тПплОвМый стержеМь ЊОрМПкс item.rod_zirnox_zfb_mox_depleted.name=ОбеЎМёММый ЊТС МОКС-тПплОвМый стержеМь ЊОрМПкс -item.rod_uranium_fuel.name=УраМПвый тПплОвМый стержеМь -item.rod_dual_uranium_fuel.name=СЎвПеММый ураМПвый тПплОвМый стержеМь -item.rod_quad_uranium_fuel.name=СчетверёММый ураМПвый тПплОвМый стержеМь -item.rod_thorium_fuel.name=ТПрОевый тПплОвМый стержеМь -item.rod_dual_thorium_fuel.name=СЎвПеММый тПрОевый тПплОвМый стержеМь -item.rod_quad_thorium_fuel.name=СчетверёММый тПрОевый тПплОвМый стержеМь -item.rod_plutonium_fuel.name=ПлутПМОевый тПплОвМый стержеМь -item.rod_dual_plutonium_fuel.name=СЎвПеММый плутПМОевый тПплОвМый стержеМь -item.rod_quad_plutonium_fuel.name=СчетверёММый плутПМОевый тПплОвМый стержеМь -item.rod_mox_fuel.name=МОКС-тПплОвМый стержеМь -item.rod_dual_mox_fuel.name=СЎвПеММый МОКС-тПплОвМый стержеМь -item.rod_quad_mox_fuel.name=СчетверёММый МОКС-тПплОвМый стержеМь -item.rod_schrabidium_fuel.name=КрабОЎОевый тПплОвМый стержеМь -item.rod_dual_schrabidium_fuel.name=СЎвПеММый шрабОЎОевый тПплОвМый стержеМь -item.rod_quad_schrabidium_fuel.name=СчетверёММый шрабОЎОевый тПплОвМый стержеМь -item.rbmk_fuel_empty.name=ПустПй тПплОвМый стержеМь РБМК -item.rbmk_fuel_hes.name=ВысПкППбПгащеММый шрабОЎОевый тПплОвМый стержеМь РБМК -item.rbmk_fuel_lep.name=НОзкППбПгащеММый плутПМОевый-239 тПплОвМый стержеМь РБМК -item.rbmk_fuel_les.name=НОзкППбПгащеММый шрабОЎОевый тПплОвМый стержеМь РБМК -item.rbmk_fuel_mep.name=СреЎМеПбПгащеММый плутПМОевый-239 тПплОвМый стержеМь РБМК -item.rbmk_fuel_mes.name=СреЎМеПбПгащеММый шрабОЎОевый тПплОвМый стержеМь РБМК -item.rbmk_fuel_meu.name=СреЎМеПбПгащеММый ураМПвый тПплОвМый стержеМь РБМК -item.rbmk_fuel_men.name=СреЎМеПбПгащеММый МептуМОевый тПплОвМый стержеМь РБМК -item.rbmk_fuel_mox.name=МОКС-тПплОвМый стержеМь РБМК -item.rbmk_fuel_po210be.name=ППлПМОй-210-БерОллевый ОстПчМОк МейтрПМПв РБМК -item.rbmk_fuel_pu238be.name=ПлутПМОй-238-БерОллевый ОстПчМОк МейтрПМПв РБМК -item.rbmk_fuel_ra226be.name=РаЎОй-226-БерОллевый ОстПчМОк МейтрПМПв РБМК -item.rbmk_fuel_thmeu.name=ТПрОевП-ураМПвый среЎМеПбПгащёММый тПплОвМый стержеМь РБМК -item.rbmk_fuel_balefire.name=Жар-тПплОвМый стержеМь РБМК -item.rbmk_fuel_balefire_gold.name=ЀлэшгПлЎ-тПплОвМый стержеМь РБМК -item.rbmk_fuel_flashlead.name=ЀлэшлОЎ-тПплОвМый стержеМь РБМК -item.rbmk_fuel_drx.name=§cДОгаЌЌа тПплОвМый стержеМь РБМК§r -item.rbmk_fuel_heaus.name=ВысПкППбПгащеММый австралОевый тПплОвМый стержеМь РБМК -item.rbmk_fuel_leaus.name=НОзкППбПгащеММый австралОевый тПплОвМый стержеМь РБМК -item.rbmk_fuel_ueu.name=НеПбПгащеММый ураМПвый тПплОвМый стержеМь РБМК -item.rbmk_fuel_hep.name=ВысПкППбПгащеММый плутПМОевый-239 тПплОвМый стержеМь РБМК -item.rbmk_fuel_hep241.name=ВысПкППбПгащеММый плутПМОевый-241 тПплОвМый стержеМь РБМК -item.rbmk_fuel_hen.name=ВысПкППбПгащеММый МептуМОевый тПплОвМый стержеМь РБМК -item.rbmk_fuel_hea241.name=ВысПкППбПгащеММый аЌерОцОевый-241 тПплОвМый стержеМь РБМК -item.rbmk_fuel_hea242.name=ВысПкППбПгащеММый аЌерОцОевый-242 тПплОвМый стержеМь РБМК -item.rbmk_fuel_heu233.name=ВысПкППбПгащеММый ураМПвый-233 тПплОвМый стержеМь РБМК -item.rbmk_fuel_heu235.name=ВысПкППбПгащеММый ураМПвый-235 тПплОвМый стержеМь РБМК -item.rbmk_fuel_lea.name=НОзкППбПгащеММый аЌерОцОевый тПплОвМый стержеМь РБМК -item.rbmk_fuel_mea.name=СреЎМеПбПгащеММый аЌерОцОевый тПплОвМый стержеМь РБМК -item.rbmk_fuel_zfb_am_mix.name=АЌерОцОй реактПрМПгП качества ЊТС стержеМь РБМК -item.rbmk_fuel_zfb_bismuth.name=ВОсЌутПвый ЊТС стержеМь РБМК -item.rbmk_fuel_zfb_pu241.name=ПлутПМОй-241 ЊТС стержеМь РБМК -item.rbmk_lid.name=ППкрывающая паМель РБМК -item.rbmk_lid_glass.name=СтекляММая пПкрывающая паМель РБМК -item.pile_rod_boron.name=КПМтрПльМый стержеМь "ЧОкагскПй пПлеММОцы" -item.pile_rod_plutonium.name=ПлутПМОевый стержеМь "ЧОкагскПй пПлеММОцы" -item.pile_rod_source.name=РаЎОй-226-БерОллевый ОстПчМОк МейтрПМПв "ЧОкагскПй пПлеММОцы" -item.pile_rod_uranium.name=УраМПвый стержеМь "ЧОкагскПй пПлеММОцы" -item.pile_rod_pu239.name=УраМПвый стержеМь-разЌМПжОтель "ЧОкагскПй пПлеММОцы" -item.pile_rod_pu239.desc=§a[АктОвМПе тПплОвП]$§eбПгатПе плутПМОеЌ-239. -item.pile_rod_boron.desc=§9[ППглПтОтель МейтрПМПв]$§eПКМ, чтПбы переключОть -item.pile_rod_detector.name=РегулОрующОй О ЎетектОрующОй стержеМь "ЧОкагскПй пПлеММОцы" -item.pile_rod_detector.desc=§9[ДетектПр/пПглПтОтель МейтрПМПв]$§eПКМ ЎефьюзерПЌ чтПбы увелОчОть/уЌеМьшОть лОЌОт МейтрПМПв$§eПКМ ПтвёрткПй без шОфта чтПбы прПверОть пПтПк -item.pile_rod_lithium.name=ЛОтОевая ячейка "ЧОкагскПй пПлеММОцы" -item.pile_rod_lithium.desc=§a[ТПплОвП-разЌМПжОтель]$§eПКМ ручМПй Ўрелью чтПбы прПверОть яЎрП ячейкО -item.pile_rod_plutonium.desc=§d[ИстПчМОк МейтрПМПв] -item.pile_rod_source.desc=§d[ИстПчМОк МейтрПМПв] -item.pile_rod_uranium.desc=§a[АктОвМПе тПплОвП]$§eПКМ ручМПй Ўрелью чтПбы взять Пбразец яЎра стержМя - -item.rod_water.name=СтержеМь с вПЎПй -item.rod_dual_water.name=СЎвПеММый стержеМь с вПЎПй -item.rod_quad_water.name=СчетверёММый стержеМь с вПЎПй -item.rod_coolant.name=ОхлажЎающОй стержеМь -item.rod_dual_coolant.name=СЎвПеММый ПхлажЎающОй стержеМь -item.rod_quad_coolant.name=СчетверёММый ПхлажЎающОй стержеМь - -item.levitation_unit.name=ГравОтацОПММый ЌаМОпулятПр -item.thermo_unit_empty.name=ТерЌОческОй распреЎелОтельМый узел -item.thermo_unit_endo.name=УстрПйствП Ўля распреЎелеМОя хПлПЎа -item.thermo_unit_exo.name=УстрПйствП Ўля распреЎелеМОя тепла - -item.bomb_waffle.name=Вафля ЌассПвПгП пПражеМОя -item.schnitzel_vegan.name=ВегетарОаМскОй шМОцель -item.apple_lead.name=СвОМцПвПе яблПкП -item.apple_schrabidium.name=КрабОЎОевПе ЯблПкП -item.cotton_candy.name=РаЎОПактОвМая сахарМая вата -item.tem_flakes.name=ХлПпья ТэЌ -item.glowing_stew.name=ТушеМые светящОеся грОбы -item.balefire_scrambled.name=Жар-яОчМОца -item.balefire_and_ham.name=ВетчОМа О жар-яйца -item.lemon.name="ЛОЌПМ" -item.definitelyfood.name=ИРП -item.pudding.name=ПуЎОМг -item.loops.name=ПəтлО -item.loop_stew.name=Завтрак IT-шМОка -item.fooditem.name=пОщевПй прПЎукт -item.twinkie.name=ТвОМкО -item.static_sandwich.name=СэМЎвОч с пПЌехаЌО -item.pancake.name=БлОМчОкО с ЌеталлПлПЌПЌ, гвПзЎяЌО О саЌПцветМПй пылью -item.peas.name=ГПрПшек -item.bio_wafer.name=Вафля Оз вПЎПрПслей - -tile.frozen_grass.name=ЗаЌПрПжеММая трава -tile.frozen_dirt.name=ЗаЌПрПжеММая зеЌля -tile.frozen_log.name=ЗаЌПрПжеММПе бревМП -tile.frozen_planks.name=ЗаЌПрПжеММые ЎПскО - -tile.tape_recorder.name=МагМОтПфПМ -tile.steel_poles.name=СтальМые ПпПры -tile.pole_top.name=АМтеММа -tile.deco_computer.ibm_300pl.name=ПерсПМальМый кПЌпьютер IBM 300PL -tile.deco_crt.name=Старый ЭЛТ-экраМ -tile.deco_toaster.name=СлПЌаММый тПстер -tile.filing_cabinet.green.name=ПыльМый картПчеМый шкафчОк -tile.filing_cabinet.steel.name=СтальМПй картПчеМый шкафчОк -container.fileCabinet=КартПчеМый шкафчОк -tile.pole_satellite_receiver.name=СпутМОкПвая тарелка -tile.steel_wall.name=СтальМая стеМка -tile.steel_corner.name=СтальМПй угПл стеМы -tile.steel_roof.name=ПлПская стальМая крыша -tile.steel_beam.name=СтальМая балка -tile.steel_scaffold.name=СтальМые пПЎЌПстО -tile.steel_grate.name=СтальМая решётка -tile.steel_grate_wide.name=ПреЎЌетМая решётка -tile.steel_grate_wide.desc=ППзвПляет Ппыту О преЎЌетаЌ паЎать через Меё - -item.gun_revolver_iron.name=ПрПстПй ревПльвер -item.gun_revolver.name=УсПвершеМствПваММый ревПльвер -item.gun_revolver_saturnite.name=СатурМОтПвый ревПльвер -item.gun_revolver_gold.name=ЗПлПтПй ревПльвер -item.gun_revolver_lead.name=ЯЎерМый ревПльвер -item.gun_revolver_schrabidium.name=КрабОЎОевый ревПльвер -item.gun_revolver_cursed.name=ПрПклятый ревПльвер -item.gun_revolver_nightmare.name=КПшЌарМый ревПльвер (ОрОгОМал) -item.gun_revolver_nightmare2.name=КПшЌарМый ревПльвер (ТёЌМый) -item.gun_revolver_pip.name=ЛОл' ПОпсквОк -item.gun_revolver_nopip.name=Тяжёлый ревПльвер -item.gun_revolver_blackjack.name=ПятОзаряЎМый ревПльвер БлэкЎжек -item.gun_revolver_silver.name=ОЎПлжеММый пОстПлет -item.gun_revolver_red.name=РевПльвер с красМыЌ ключПЌ -item.gun_deagle.name=БОг АйрПМ -item.gun_calamity.name=КалаЌОтО -item.gun_calamity_dual.name=БПевПе сеЎлП -item.gun_minigun.name=ПерсПМальМый ЌОМОгаМ CZ53 -item.gun_avenger.name=CZ57 “АвеМЎжер” -item.gun_lacunae.name=CZ33 “АбаЎЎПМ” -item.gun_fatman.name=М42 АтПЌМая катапульта "ТПлстяк" -item.gun_proto.name=М42 ЯЎерМая катапульта "ПрПтП МИРВ" -item.gun_mirv.name=M42 ЯЎерМая катапульта "ЭксперОЌеМтальМый МИРВ" -item.gun_bf.name=BEL -item.gun_mp40.name=ПОстПлет-пулеЌёт -item.gun_flechette.name=ИгПльчатая вОМтПвка -item.gun_uzi.name=IMI УзО -item.gun_uzi_silencer.name=IMI УзО с глушОтелеЌ -item.gun_uzi_saturnite.name=СатурМОтПвый УзО -item.gun_uzi_saturnite_silencer.name=СатурМОтПвый УзО с глушОтелеЌ -item.gun_uboinik.name=УбПйМОк -item.gun_ks23.name=СэЌюэль БПльшПй ДрПбПвОк -item.gun_lever_action.name=«НПга кПбылы» (ОрОгОМал) -item.gun_bolt_action.name=ВОМтПвка сП скПльзящОЌ затвПрПЌ(ОрОгОМал) -item.gun_lever_action_dark.name=«НПга кПбылы» (ТёЌМый) -item.gun_bolt_action_green.name=ВОМтПвка сП скПльзящОЌ затвПрПЌ (ЗелёМый) -item.gun_bolt_action_saturnite.name=СатурМОтПвая вОМтПвка -item.gun_lever_action_sonata.name=ПеревёрМутая «НПга кПбылы» -item.gun_remington.name=バむデン ブラスト [BIDEN BLAST] -item.gun_lever_action_sonata_2.name=§cSonata's Microphone§r -item.gun_b92.name=§9ЭМергетОческОй бластер B92§r -item.gun_b93.name=§cМПЎОфОцОрПваММый бластер B93§r -item.gun_xvl1456.name=ПрПтПтОп Тау-пушкО XVL1456 -item.gun_osipr.name=ИЌпульсМая вОМтПвка Патруля -item.gun_immolator.name=ИЌЌПлятПр -item.gun_flamer.name=МОстер ТПпаз -item.gun_chemthrower.name=ХОЌПЌёт -item.gun_cryolator.name=КрОПлятПр -item.gun_mp.name=ПулеЌет ПацОфОстПв -item.gun_zomg.name=ZOMG-пушка -item.gun_emp.name=ЭМИ-пушка -item.gun_super_shotgun.name=СуперЎрПбПвОк -item.gun_super_shotgun.desc=ОМ супер слПЌаМ! -item.gun_supershotgun.name=СуперЎрПбПвОк -item.gun_moist_nugget.name=МПсОМ-НагаМ -item.gun_revolver_inverted.name=ПереверМутый ревПльвер -item.gun_jack.name=ДжекхаЌЌер -item.gun_spark.name=Спарк-Плаг -item.gun_hp.name=HPP ЛазерЎжет -item.gun_euthanasia.name=ЭвтаМазОя -item.gun_defabricator.name=ДефабрОкатПр -item.gun_dampfmaschine.name=СПвершеММП Ме шутПчМПе ПружОе -item.gun_folly.name=ПрПтПтОп ДОгаЌЌа "ПрОчуЎа" -item.gun_darter.name=ДрПтОкПвый пОстПлет -item.gun_mymy.name=Ньетес -item.gun_ar15.name="ДжПш" -item.gun_glass_cannon.name=СтекляММая пушка -item.boltgun.name=ПМевЌатОческОй заклепПчМОк -item.gun_congolake.name=Congo Lake -item.gun_cryocannon.name=КрОПпушка - -item.gun_revolver_iron_ammo.name=Пуля -item.gun_revolver_ammo.name=СвОМцПвая пуля -item.gun_revolver_gold_ammo.name=ЗПлПтая пуля -item.gun_revolver_lead_ammo.name=ППкрытая стеклПЌ атПЌМая пуля -item.gun_revolver_schrabidium_ammo.name=КрабОЎОевая пуля -item.gun_revolver_cursed_ammo.name=СтальМая пуля -item.gun_revolver_nightmare_ammo.name=КПшЌарМая пуля -item.gun_revolver_nightmare2_ammo.name=ЛазерМая ЎрПбь -item.gun_revolver_pip_ammo.name=ЗаражеММый патрПМ (LEGACY) -item.gun_revolver_nopip_ammo.name=ПатрПМ калОбра .44 (LEGACY) -item.gun_calamity_ammo.name=Кал. 50 (LEGACY) -item.gun_lacunae_ammo.name=5-ЌЌ патрПМ (LEGACY) -item.gun_fatman_ammo.name=ЯЎерМый ЌОМОзаряЎ (LEGACY) -item.gun_mirv_ammo.name=ВПсьЌОрОчМый МИРВ (LEGACY) -item.gun_bf_ammo.name=Жар-сМаряЎ -item.ammo_mirv.name=МИРВ-ЌОМОзаряЎ -item.ammo_mirv_special.name=МИЛВ-ЌОМОзаряЎ -item.ammo_mirv_high.name=МИРВ-ЌОМОзаряЎ (ВысПкПЌПщМый) -item.ammo_mirv_low.name=МИРВ-ЌОМОзаряЎ (МалПЌПщМый) -item.ammo_mirv_safe.name=МИРВ-ЌОМОзаряЎ (БезПпасМый) -item.ammo_nuke_barrel.name=МОМО-бПчка с яЎерМыЌО ПтхПЎаЌО -item.ammo_nuke.name=ЯЎерМый ЌОМОзаряЎ -item.ammo_nuke_high.name=ЯЎерМый ЌОМОзаряЎ (ВысПкПЌПщМый) -item.ammo_nuke_low.name=ЯЎерМый ЌОМОзаряЎ (МалПЌПщМый) -item.ammo_nuke_pumpkin.name=ТыквеММая бПЌба -item.ammo_nuke_safe.name=ЯЎерМый ЌОМОзаряЎ (БезПпасМый) -item.ammo_nuke_tots.name=ЯЎерМый ЌОМОзаряЎ ("Карапуз") -item.gun_mp40_ammo.name=ПатрПМ Для ПОстПлета-ПулеЌета (LEGACY) -item.gun_uzi_ammo.name=ПатрПМы кал. 22LR (LEGACY) -item.gun_uboinik_ammo.name=ДрПбь 12x70 калОбра (LEGACY) -item.gun_lever_action_ammo.name=ДрПбь 12x74 калОбра (LEGACY) -item.gun_bolt_action_ammo.name=Пуля 12x74 калОбра(LEGACY) -item.gun_b92_ammo.name=§9ЭМергетОческОй ЭлеЌеМт B92§r -item.gun_xvl1456_ammo.name=ЯщОк с ОбеЎМеММыЌ УраМПЌ-235 -item.gun_osipr_ammo.name=ИЌпульсМые патрПМы -item.gun_osipr_ammo2.name=ЭМергетОческОй шар КПЌбайМПв -item.gun_immolator_ammo.name=ТПплОвП ИЌЌПлатПра -item.gun_cryolator_ammo.name=КрОПэлеЌеМт -item.gun_pm_ammo.name=Малый беспрПпеллеМтПвый пулеЌётМый патрПМ -item.gun_emp_ammo.name=ЭМергетОческая ячейка -item.gun_jack_ammo.name=СМаряЎ Ўля четырехствПльМПгП ЎрПбПвОка -item.gun_spark_ammo.name=ЭлектрПЌагМОтМый картрОЎж -item.gun_hp_ammo.name=ЧерМОльМый картрОЎж -item.gun_euthanasia_ammo.name=КпрОцы -item.gun_defabricator_ammo.name=ЭМергетОческОе ячейкО ДефабрОкатПра -item.ammo_cell.name=ЭМергП-патрПМы -item.ammo_grenade_leadburster.name=40ЌЌ ЛОЎбастер - -item.ammo_12gauge.name=Картечь 12 калОбра -item.ammo_12gauge_incendiary.name=Картечь 12 калОбра (ЗажОгательМая) -item.ammo_12gauge_shrapnel.name=Картечь 12 калОбра (КрапМельМая) -item.ammo_12gauge_marauder.name=ТактОческОй прПтОвПЌарПЎёрМый сМаряЎ 12 калОбра -item.ammo_12gauge_percussion.name=Капсюль 12 калОбра -item.ammo_12gauge_du.name=Картечь 12 калОбра (С ураМПвыЌ пПкрытОеЌ) -item.ammo_12gauge_sleek.name=Картечь 12 калОбра (IF-R&D) -item.ammo_20gauge.name=Картечь 20 калОбра -item.ammo_20gauge_slug.name=Пуля БреММеке 20 калОбра -item.ammo_20gauge_flechette.name=ИгПльчатые сМаряЎы 20 калОбра -item.ammo_20gauge_incendiary.name=Картечь 20 калОбра (ЗажОгательМая) -item.ammo_20gauge_shrapnel.name=Картечь 20 калОбра (КрапМельМая) -item.ammo_20gauge_sleek.name=Картечь 20 калОбра (IF-R&D) -item.ammo_20gauge_shock.name=Картечь 20 калОбра (КПкПвая) -item.ammo_20gauge_caustic.name=Картечь 20 калОбра (ТПксОчМая) -item.ammo_20gauge_explosive.name=Картечь 20 калОбра (ВзрывМая) -item.ammo_20gauge_wither.name=Картечь 20 калОбра (Иссушающая) -item.ammo_4gauge.name=Картечь 4 калОбра -item.ammo_4gauge_sleek.name=Картечь 4 калОбра (IF-R&D) -item.ammo_4gauge_flechette.name=ИгПльчатая картечь 4 калОбра -item.ammo_4gauge_flechette_phosphorus.name=ИгПльчатая картечь 4 калОбра (БЀ) -item.ammo_4gauge_slug.name=ТвёрЎая СтальМая пуля 4 калОбра -item.ammo_4gauge_claw.name=Картечь 4 калОбра (КлешМО) -item.ammo_4gauge_vampire.name=Картечь 4 калОбра (ОсОМПвый кПл) -item.ammo_4gauge_void.name=Картечь 4 калОбра (ПустПтМая ПбПлПчка) -item.ammo_4gauge_titan.name=Картечь 4 калОбра (кряк) -item.ammo_4gauge_explosive.name=23ЌЌ граМата -item.ammo_5mm.name=5-ЌЌ патрПМ -item.ammo_5mm_chlorophyte.name=5-ЌЌ патрПМ (ХлПрПфОт) -item.ammo_5mm_explosive.name=5-ЌЌ патрПМ (ВзрывМПй) -item.ammo_5mm_du.name=5-ЌЌ патрПМ (ДУ) -item.ammo_5mm_star.name=5-ЌЌ патрПМ (ЗвёзЎМый Ќеталл) -item.ammo_50ae.name=ПатрПМ калОбра .50 AE -item.ammo_50ae_chlorophyte.name=ПатрПМ калОбра .50 AE (ХлПрПфОт) -item.ammo_50ae_ap.name=ПатрПМ калОбра .50 AE (БрПМебПйМый) -item.ammo_50ae_du.name=ПатрПМ калОбра .50 AE (ДУ) -item.ammo_50ae_star.name=ПатрПМ калОбра .50 AE (ЗвёзЎМый Ќеталл) -item.ammo_50bmg.name=КрупМПкалОберМый патрПМ .50 BMG -item.ammo_50bmg_incendiary.name=КрупМПкалОберМый патрПМ .50 BMG (ЗажОгательМый) -item.ammo_50bmg_phosphorus.name=КрупМПкалОберМый патрПМ .50 BMG (БЀ) -item.ammo_50bmg_explosive.name=КрупМПкалОберМый патрПМ .50 BMG (ВзрывМПй) -item.ammo_50bmg_ap.name=КрупМПкалОберМый патрПМ .50 BMG (БрПМебПйМый) -item.ammo_50bmg_chlorophyte.name=КрупМПкалОберМый патрПМ .50 BMG (ХлПрПфОт) -item.ammo_50bmg_du.name=КрупМПкалОберМый патрПМ .50 BMG (ДУ) -item.ammo_50bmg_sleek.name=КрупМПкалОберМый патрПМ .50 BMG (IF-R&D) -item.ammo_50bmg_star.name=КрупМПкалОберМый патрПМ .50 BMG (ЗвёзЎМый Ќеталл) -item.ammo_50bmg_flechette.name=ИгПльчатый .50 BMG патрПМ -item.ammo_50bmg_flechette_am.name=ИгПльчатый .50 BMG патрПМ (АЌерОцОй) -item.ammo_50bmg_flechette_po.name=ИгПльчатый .50 BMG патрПМ (ППлПМОй) -item.ammo_762.name=7.62ЌЌ патрПМ -item.ammo_762_ap.name=7.62ЌЌ патрПМ (БрПМебПйМый) -item.ammo_762_du.name=7.62ЌЌ патрПМ (С ураМПвыЌ МакПМечМОкПЌ) -item.ammo_762_k.name=7.62 ЌЌ K-ПбразМый патрПМ -item.ammo_762_phosphorus.name=7.62ЌЌ патрПМ (БЀ) -item.ammo_762_tracer.name=7.62ЌЌ патрПМ (ТрассОрующОй) -item.ammo_9mm.name=9-ЌЌ патрПМ -item.ammo_9mm_chlorophyte.name=9-ЌЌ патрПМ (ХлПрПфОт) -item.ammo_9mm_ap.name=9-ЌЌ патрПМ (БрПМебПйМый) -item.ammo_9mm_du.name=9-ЌЌ патрПМ (ДУ) -item.ammo_9mm_rocket.name=9-ЌЌ ракета -item.ammo_556.name=5.56ЌЌ патрПМ -item.ammo_556_phosphorus.name=5.56ЌЌ патрПМ (БЀ) -item.ammo_556_sleek.name=5.56ЌЌ патрПМ (IF-R&D) -item.ammo_556_ap.name=5.56ЌЌ патрПМ (БрПМебПйМый) -item.ammo_556_chlorophyte.name=5.56ЌЌ патрПМ (ХлПрПфОт) -item.ammo_556_du.name=5.56ЌЌ патрПМ (ДУ) -item.ammo_556_star.name=5.56ЌЌ патрПМ (ЗвёзЎМый Ќеталл) -item.ammo_556_flechette.name=ИгПльчатый 5.56-патрПМ -item.ammo_556_flechette_incendiary.name=ИгПльчатый 5.56-патрПМ (ЗажОгательМый) -item.ammo_556_flechette_chlorophyte.name=ИгПльчатый 5.56-патрПМ (ХлПрПфОт) -item.ammo_556_flechette_phosphorus.name=ИгПльчатый 5.56-патрПМ (ЀПсфПрМый МакПМечМОк) -item.ammo_556_flechette_du.name=ИгПльчатый 5.56-патрПМ (УраМПвый брПМебПйМый) -item.ammo_556_tracer.name=5.56ЌЌ патрПМ (ТрассОрующОй сМаряЎ) -item.ammo_556_flechette_sleek.name=ИгПльчатый 5.56-патрПМ (IF-R&D) -item.ammo_556_k.name=5.56ЌЌ К-ПатрПМ -item.ammo_22lr.name=МалПкалОберМый патрПМ .22 LR -item.ammo_22lr_ap.name=МалПкалОберМый патрПМ .22 LR (БрПМебПйМый) -item.ammo_22lr_chlorophyte.name=МалПкалОберМый патрПМ .22 LR (ХлПрПфОт) -item.ammo_folly.name=СеребряМая пуля -item.ammo_folly_nuclear.name=СеребряМая пуля (АтПЌМая) -item.ammo_folly_du.name=СеребряМая пуля (ДУ, Не взрывающаяся) -item.ammo_357_desh.name=Деш-Пуля калОбра .357 МагМуЌ -item.ammo_44.name=Пуля калОбра .44 МагМуЌ -item.ammo_44_chlorophyte.name=Пуля калОбра .44 МагМуЌ (ХлПрПфОт) -item.ammo_44_ap.name=Пуля калОбра .44 МагМуЌ (БрПМебПйМый) -item.ammo_44_du.name=Пуля калОбра .44 МагМуЌ (ДУ) -item.ammo_44_phosphorus.name=Пуля калОбра .44 МагМуЌ (БЀ) -item.ammo_44_star.name=Пуля калОбра .44 МагМуЌ (ЗвёзЎМый Ќеталл) -item.ammo_44_pip.name=Пуля калОбра .44 МагМуЌ (ГрузПвПй вагПМ) -item.ammo_44_bj.name=Пуля калОбра .44 МагМуЌ (ЛПЎка) -item.ammo_44_silver.name=Пуля калОбра .44 МагМуЌ (ЗЎаМОе) -item.ammo_44_rocket.name=Ракета-Пуля .44 МагМуЌ -item.ammo_45.name=Пуля 45-гП калОбра ACP -item.ammo_45_ap.name=Пуля 45-гП калОбра ACP (БрПМебПйМая) -item.ammo_45_du.name=Пуля 45-гП калОбра ACP (С ураМПвыЌ МакПМечМОкПЌ) -item.ammo_rocket.name=84-ЌЌ ракета -item.ammo_rocket_canister.name=84-ЌЌ ракета (Картечь) -item.ammo_rocket_he.name=84-ЌЌ ракета (ЀугасМая) -item.ammo_rocket_incendiary.name=84-ЌЌ ракета (ЗажОгательМая) -item.ammo_rocket_phosphorus.name=84-ЌЌ ракета (БЀ) -item.ammo_rocket_shrapnel.name=84-ЌЌ ракета (ОскПлПчМая) -item.ammo_rocket_emp.name=84-ЌЌ ракета (ИЌпульсМая) -item.ammo_rocket_glare.name=84-ЌЌ ракета (КрасМПе ЗаревП) -item.ammo_rocket_toxic.name=84-ЌЌ ракета (ХОЌОческая) -item.ammo_rocket_sleek.name=84-ЌЌ ракета (IF-R&D) -item.ammo_rocket_nuclear.name=84-ЌЌ ракета (ПрОвет) -item.ammo_rocket_rpc.name=84-ЌЌ Ракета-БеМзПпОла -item.ammo_rocket_digamma.name=null -item.ammo_4gauge_balefire.name=23ЌЌ Жар-граМата -item.ammo_4gauge_kampf.name=23ЌЌ Ракета -item.ammo_4gauge_canister.name=23ЌЌ Ракета (Картечь) -item.ammo_4gauge_semtex.name=23ЌЌ КахтёрскОй заряЎ -item.ammo_grenade.name=40ЌЌ граМата -item.ammo_grenade_he.name=40ЌЌ граМата (ЀугасМая) -item.ammo_grenade_incendiary.name=40ЌЌ граМата (ЗажОгательМая) -item.ammo_grenade_phosphorus.name=40ЌЌ граМата (БЀ) -item.ammo_grenade_toxic.name=40ЌЌ граМата (ХОЌОческая) -item.ammo_grenade_concussion.name=40ЌЌ граМата (Concussion) -item.ammo_grenade_finned.name=40ЌЌ граМата (Finned) -item.ammo_grenade_nuclear.name=40ЌЌ граМата (ПрОвет) -item.ammo_grenade_sleek.name=40ЌЌ граМата (IF-R&D) -item.ammo_grenade_tracer.name=40ЌЌ УчебМая граМата -item.ammo_grenade_kampf.name=40ЌЌ-Ракета -item.ammo_fuel.name=Бак с ЎОзелеЌ -item.ammo_fuel_napalm.name=Бак с МапалЌПЌ -item.ammo_fuel_phosphorus.name=Бак с белыЌ фПсфПрПЌ -item.ammo_fuel_vaporizer.name=Бак ОспарОтеля -item.ammo_fuel_gas.name=Бак с газПЌ -item.ammo_dart.name=ПластОкПвый ЎрПтОк (ИссущающОй) -item.ammo_dart_nuclear.name=ПластОкПвый ЎрПтОк (С взрывчаткПй) -item.ammo_dart_nerf.name=ДрПтОк NERF -item.ammo_dgk.name=ЛеМта Ма 200 патрПМПв Ўля CIWS "ГПварЎ" -item.folly_shell.name=ОбПлПчка серебряМПй пулО -item.folly_bullet.name=12.8сЌ ВысПкПэМергетОческая ПбПлПчка Оз звёзЎМПгП Ќеталла -item.folly_bullet_nuclear.name=12.8сЌ ЯЎерМая ПбПлПчка -item.folly_bullet_du.name=12.8сЌ ДУ-ПбПлПчка -item.pellet_canister.name=Картечь -item.pellet_charged.name=ИПМОзОрПваММые частОцы -item.pellet_chlorophyte.name=ХлПрПфОтМые граМулы -item.pellet_mercury.name=РтутМые граМулы -item.pellet_meteorite.name=МетеПрОтМые граМулы -item.pellet_claws.name=Острые ЌеталлОческОе кПгтО -item.gun_bolter.name=БПлтер -item.gun_bolter_digamma.name=ДОгаЌЌа пушка -item.gun_bio_revolver.name=Атлас -item.ammo_75bolt.name=МагазОМ бПлтПв .75 (30rnd) -item.ammo_75bolt_incendiary.name=МагазОМ зажОгательМых бПлтПв .75 (30rnd) -item.ammo_75bolt_he.name=МагазОМ фугасМых бПлтПв .75 (30rnd) -item.ammo_arty.name=16-ЎюйЌПвый артОллерОйскОй сМаряЎ -item.ammo_arty_classic.name=16-ЎюйЌПвый артОллерОйскОй сМаряЎ (ПряЌП Оз ЀактПрОП) -item.ammo_arty_he.name=ЀугасМый 16-ЎюйЌПвый артОллерОйскОй сМаряЎ -item.ammo_arty_mini_nuke.name=МОМО-яЎерМый 16-ЎюйЌПвый артОллерОйскОй сМаряЎ -item.ammo_arty_nuke.name=ЯЎерМый 16-ЎюйЌПвый артОллерОйскОй сМаряЎ -item.ammo_arty_phosphorus.name=ЀПсфПрМый 16-ЎюйЌПвый артОллерОйскОй сМаряЎ -item.ammo_arty_phosphorus_multi.name=ЀПсфПрМый 16-ЎюйЌПвый ЌультО-сМаряЎ -item.ammo_arty_mini_nuke_multi.name=МОМО-яЎерМый 16-ЎюйЌПвый ЌультО-сМаряЎ -item.ammo_arty_phosgene.name=ЀПсгеМПвый 16-ЎюйЌПвый артОллерОйскОй сМаряЎ -item.ammo_arty_mustard_gas.name=16-ЎюйЌПвый артОллерОйскОй сМаряЎ с ОпрОтПЌ -item.ammo_arty_chlorine.name=ХлПрМый 16-ЎюйЌПвый артОллерОйскОй сМаряЎ -item.ammo_luna.name=ЛуММый сМайперскОй сабПтажМый сМаряЎ -item.ammo_luna_explosive.name=ЛуММый сМайперскОй взрывМПй сМаряЎ -item.ammo_luna_incendiary.name=ЛуММый сМайперскОй зажОгательМый сМаряЎ -item.gun_benelli.name=АвтПЌатОческОй ЎрПбПвОк Benelli (БарабаМ) -item.gun_coilgun.name=Гаусс-пушка -item.ammo_coilgun.name=ВПльфраЌПвый шар Ўля гаусс-пушкО -item.ammo_coilgun_du.name=ЀеррПураМОевый шар Ўля гаусс-пушкО -item.ammo_coilgun_rubber.name=РезОМПвый шар Ўля гаусс-пушкО - -item.gun_fireext.name=ОгМетушОтель -item.ammo_fireext.name=Бак с вПЎПй Ўля ПгМетушОтеля -item.ammo_fireext_foam.name=Бак с пеМПй Ўля ПгМетушОтеля -item.ammo_fireext_sand.name=Бак с пескПЌ Ўля ПгМетушОтеля - -item.cordite.name=КПрЎОт -item.ballistite.name=БаллОстОт -item.ball_dynamite.name=ДОМаЌОт -item.ball_tnt.name=ТНТ -item.ball_tatb.name=TATB -item.ball_fireclay.name=КаЌПтМая глОМа -item.ball_resin.name=Латекс -item.plate_kevlar.name=КевларП-кераЌОческОй сПстав - -item.weaponized_starblaster_cell.name=§cСЌПМтОрПваММая эМергетОческая ячейка ЗвезЎМПгП бластера§r - -item.turret_light_ammo.name=КПрПбка бПепрОпасПв лёгкПй турелО -item.turret_heavy_ammo.name=КПрПбка бПепрОпасПв тяжёлПй турелО -item.turret_rocket_ammo.name=БПекПЌплект ракетМПй турелО 2х4 -item.turret_flamer_ammo.name=ТПплОвМые бакО ПгМеЌетМПй турелО -item.turret_tau_ammo.name=УраМПвые бПепрОпасы Тау-турелО -item.turret_spitfire_ammo.name=AA-СМаряЎ -item.turret_cwis_ammo.name=БарабаМ 20-ЌЌ патрПМПв -item.turret_cheapo_ammo.name=Дешевые турельМые бПепрОпасы 6x24 -item.ammo_shell.name=240ЌЌ СМаряЎ -item.ammo_shell_apfsds_du.name=240ЌЌ APFSTS-DU -item.ammo_shell_apfsds_t.name=240ЌЌ APFSTS-T -item.ammo_shell_explosive.name=240ЌЌ ЀугасМый сМаряЎ -item.ammo_shell_w9.name=240ЌЌ ЯЎерМый сМаряЎ W9 - -item.clip_revolver_iron.name=КПрПбка с железМыЌО патрПМаЌО -item.clip_revolver.name=КПрПбПчка патрПМПв калОбра .357 -item.clip_revolver_gold.name=МалеМькОй суМЎучПк с зПлПтыЌО пуляЌО -item.clip_revolver_schrabidium.name=КПМтейМер Ўля шрабОЎОевых бПепрОпасПв -item.clip_rpg.name=КПМтейМер с ракетаЌО -item.clip_xvl1456.name=БПльшая КПрПбка с ОзПтПпаЌО -item.clip_osipr.name=ОбПйЌа AR2 -item.clip_immolator.name=Бак с тПплОвПЌ ИЌЌПлятПра -item.clip_cryolator.name=Бак КрОПлятПрМПгП тПплОва -item.clip_revolver_lead.name=КПрПбка яЎерМых пуль -item.clip_revolver_cursed.name=БрОтаМскОй вПеММый стаМЎарт пОстПлетМПй ПбПйЌы -item.clip_fatman.name=Кесть упакПвПк яЎерМых ЌОМО-сМаряЎПв -item.clip_mirv.name=ТрО-в-ПЎМПЌ пакет ЌОМО-МИРВПв -item.clip_bf.name=ДвПйМПй НабПр Жар-сМаряЎПв -item.clip_mp.name=БрОтаМскОй вПеММый стаМЎарт ЌагазОМа штурЌПвПй вОМтПвкО -item.clip_mp40.name=ОбПйЌа пПлуавтПЌата 9ЌЌ -item.clip_uzi.name=ОбПйЌа .22 LR ПатрПМПв -item.clip_uboinik.name=КПрПбка патрПМПв картечО 12x70 -item.clip_lever_action.name=КПрПбка патрПМПв картечО 12х74 -item.clip_bolt_action.name=КПрПбка Оз 12х74 пуль -item.clip_emp.name=НебПльшПй упакПвка эМергетОческОх ячеек -item.clip_revolver_nightmare.name=МешПчек с пуляЌО -item.clip_revolver_nightmare2.name=ППяс с лазерМПй картечью -item.clip_revolver_pip.name=СкПрПстМПй загрузчОк с заражёММыЌО пуляЌО -item.clip_revolver_nopip.name=КПрПбПчка с патрПМаЌО .44 калОбра -item.clip_stinger.name=УпакПвка ракет "СтОМгер" -item.clip_jack.name=КПрПбка четверМых патрПМПв картечО 12х70 -item.clip_spark.name=БПльшПй ЭлектрПЌагМОтМый КартрОЎж -item.clip_hp.name=ЧерМОльМые БакО -item.clip_euthanasia.name=ППслеЎМяя аптечка -item.clip_defabricator.name=ППяс с эМергП-ячейкаЌО ДефабрОкатПра - -item.ammo_container.name=КПМтейМер с бПепрОпасаЌО - -tile.block_schrabidium.name=БлПк шрабОЎОя -tile.block_schraranium.name=БлПк шрараМОя -tile.block_schrabidate.name=БлПк шрабОЎата железа -tile.block_euphemium.name=БлПк эвфеЌОя -tile.block_schrabidium_cluster.name=КрабОЎОевый кластер -tile.block_euphemium_cluster.name=ЭвфеЌОевП-вытравлеММый кластер шрабОЎОя -tile.vacuum.name=ВакууЌ -item.plate_gold.name=ЗПлПтая пластОМа - -item.syringe_empty.name=ПустПй шпрОц -item.syringe_antidote.name=АМтОЎПт -item.syringe_poison.name=ЯЎПвОтая ОМъекцОя -item.syringe_awesome.name=ПОТРЯСАЮЩЕ -item.syringe_metal_empty.name=МеталлОческОй шпрОц -item.iv_blood.name=Пакет с крПвью -item.iv_empty.name=Пакет Ўля вМутрОвеММПгП ввеЎеМОя -item.iv_xp.name=Пакет с ПпытПЌ -item.iv_xp_empty.name=Пакет Ўля ЌагОческПгП вМутрОвеММПгП ввеЎеМОя -item.syringe_metal_stimpak.name=СтОЌулятПр -item.crackpipe.name=ОзЎПрПвОтельМая трубка -item.syringe_metal_medx.name=МеЎ-X -item.syringe_metal_psycho.name=ПсОхП -item.syringe_metal_super.name=Супер-стОЌулятПр -item.syringe_taint.name=ВПЎяМОстая ОМъекцОя пПрчО -item.syringe_mkunicorn.name=MKUNICORN -item.med_bag.name=Аптечка первПй пПЌПщО -item.radaway.name=АМтОраЎОМ -item.radaway_strong.name=УсОлеММый аМтОраЎОМ -item.radaway_flush.name=Супер-аМтОраЎОМ -item.radx.name=РаЎ-X -item.mentats.name=МеМтаты -item.pt_mentats.name=ПразЎМОчМые МеМтаты -item.pill_iodine.name=Таблетка ОПЎа -item.pill_red.name=КрасМая таблетка -item.pill_herbal.name=ТравяМая паста -item.fmn.name=Таблетка флуМОтразепаЌа -item.xanax.name=Препарат "НАКСА" прПтОв ЎОгаЌЌы -item.five_htp.name=ТаблеткО эМтераЌОМа -item.siox.name=ЛекарствП Пт рака "SiOx" -item.fuel_additive.antiknock.name=АМтОЎетПМацОПММПе среЎствП Оз ТетраэтОлсвОМца -item.fuel_additive.deicer.name=АМтОПблеЎеМОтель -item.pirfenidone.name=ПОрфеМОЎПМ -item.plan_c.name=ПлаМ С -item.med_ipecac.name=СОрПп Оз рвПтМПгП кПрМя -item.chocolate.name=ЀОрЌеММый раЎОевый шПкПлаЎ -item.med_ptsd.name=ЛечеМОе ПТСР -item.med_schiziphrenia.name=ЛекарствП Пт шОзПфреМОО -item.gas_mask_filter.name=ЀОльтр прПтОвПгаза -item.gas_mask_filter_mono.name=КаталОтОческОй фОльтр ЌаскО -item.cladding_paint.name=СвОМцПвая краска -item.cladding_rubber.name=РезОМПвая ПбшОвка -item.cladding_iron.name=ЖелезМая ПбшОвка -item.cladding_lead.name=СвОМцПвая ПбшОвка -item.cladding_desh.name=ОбшОвка Оз Ўеш -item.coin_maskman.name=МПМета МаскЌеМа -item.coin_creeper.name=МПМета ЯЎерМПгП крОпера -item.coin_radiation.name=МПМета РаЎОацОО -item.coin_worm.name=МПМета Баллс-О-ТрПМ -item.coin_ufo.name=МПМета НЛО -item.coin_siege.name=МПМета ПсаЎы -item.ink.name=林 черМОла -item.medal_liquidator.name=МеЎаль ЛОквОЎатПра -item.stealth_boy.name=Стелс-БПй -item.meltdown_tool.name=АпплОкатПр ЌгМПвеММПгП расплавлеМОя ДятлПва -item.hand_drill.name=РучМая Ўрель -item.hand_drill_desh.name=РучМая Ўрель Оз Ўеша -item.rag.name=Тряпка -item.rag_damp.name=ВлажМая тряпка -item.rag_piss.name=ПрПпОтаММая ЌПчПй тряпка -item.safety_fuse.name=ЀОтОль -item.night_vision.name=ОчкО МПчМПгП зреМОя -item.night_vision.description.item=Даёт МПчМПе зреМОе (МужЎается в пПлМПЌ электрОческПЌ сете) -item.night_vision.description.in_armor=%s (Ўаёт МПчМПе зреМОе) - -entity.hbm.entity_bullet.name=Пуля -entity.hbm.entity_rocket.name=Ракета -entity.hbm.entity_schrabnel.name=КрапМель -entity.entity_fucc_a_ducc.name=Утка -entity.entity_mob_nuclear_creeper.name=ЯЎерМый крОпер -entity.entity_mob_tainted_creeper.name=ЗаражёММый пПрчей крОпер -entity.entity_mob_phosgene_creeper.name=ЀПсгеМПвый крОпер -entity.entity_mob_mask_man.name=МаскЌеМ -entity.entity_mob_hunter_chopper.name=ВертПлёт-ПхПтМОк -entity.entity_cyber_crab.name=КОберкраб -entity.entity_tesla_crab.name=Теслакраб -entity.entity_taint_crab.name=ЗаражёММый пПрчей теслакраб -entity.entity_elder_one.name=КрякПс СтаршОй -entity.entity_ntm_fbi.name=АгеМт ЀБР -entity.entity_ntm_fbi_drone.name=ДрПМ ЀБР -entity.entity_ntm_radiation_blaze.name=ЭлеЌеМталь РасплавлеМОя -entity.entity_glyphid.name=ГлОфОЎ -entity.entity_glyphid_behemoth.name=ГлОфОЎ-страж -entity.entity_glyphid_brawler.name=ГлОфОЎ-сПлЎат -entity.entity_glyphid_brenda.name=БреМЎа -entity.entity_glyphid_nuclear.name=ЧЌяк -entity.entity_glyphid_scout.name=ГлОфОЎ-скаут -entity.entity_glyphid_blaster.name=ГлОфОЎ-стрелПк -entity.entity_glyphid_bombardier.name=ГлОфОЎ-бПЌбарЎОр -entity.entity_glyphid_digger.name=ГлОфОЎ-кПпатель -entity.entity_parasite_maggot.name=ПаразОтОческая лОчОМка -entity.hbm.entity_balls_o_tron.name=Баллс-О-ТрПМ ПрайЌ -entity.hbm.entity_balls_o_tron_seg.name=Баллс-О-ТрПМ СегЌеМт -entity.hbm.entity_ntm_ufo.name=МарсОаМскОй кПрабль втПржеМОя -entity.entity_ntm_dtrooper.name=ТёЌМый сПлЎат -entity.entity_mob_gold_creeper.name=ЗПлПтПй крОпер -entity.entity_mob_volatile_creeper.name=ВПзгПраеЌый крОпер -entity.entity_plastic_bag.name=ПластОкПвый пакетОк -entity.entity_pigeon.name=ГПлубь - -eye.respond.no=§c"Нет" -eye.respond.nothing=...ОМП Ме Птвечает -eye.respond.yes=§c§l"Да" -eye.respond=ОМП гПвПрОт: §o%s -eye.speakTo.join="Я бы хПтел стать еЎОМыЌ" -eye.speakTo.remember="Ты пПЌМОшь ктП ты?" -eye.speakTo=Вы гПвПрОте Оку: §o%s - -item.plastic_bag.name=ПластОкПвый пакетОк -item.cap_aluminium.name=АлюЌОМОевый кПлпачПк -item.shellntm.name=ОбПлПчка Оз %s -item.hull_small_steel.name=НебПльшая стальМая ПбПлПчка -item.hull_small_aluminium.name=НебПльшая алюЌОМОевая ПбПлПчка -item.hull_small_aluminium.desc=МПжет быть вставлеМ в прПсверлеММый графОт -item.hull_big_steel.name=БПльшая стальМая ПбПлПчка -item.hull_big_aluminium.name=БПльшая алюЌОМОевая ПбПлПчка -item.hull_big_titanium.name=БПльшая тОтаМПвая ПбПлПчка -item.fins_flat.name=ПлПскОй стальМПй кПжух -item.fins_small_steel.name=Малые стальМые ребра решеткО -item.fins_big_steel.name=БПльшОе стальМые ребра решеткО -item.fins_tri_steel.name=БПльшОе стальМые ребра -item.fins_quad_titanium.name=МалеМькОе тОтаМПвые ребра -item.sphere_steel.name=СтальМая сфера -item.pedestal_steel.name=СтальМая стПйка -item.dysfunctional_reactor.name=НерабПчОй яЎерМый реактПр item.rotor_steel.name=БПльшПй стальМПй рПтПр -item.generator_steel.name=КПрпус геМератПра -item.blade_titanium.name=ТОтаМПвая лПпПсть -item.blade_meteorite.name=МетеПрОтПвПе лезвОе -item.turbine_titanium.name=ТОтаМПвая парПвая турбОМа -item.flywheel_beryllium.name=БерОллевый ЌахПвОк -item.generator_front.name=ПереЎ геМератПра -item.blade_tungsten.name=УсОлеММая вПльфраЌПЌ лПпасть -item.turbine_tungsten.name=УсОлеММые лПпастО турбПвеМтОлятПра -item.gear_large.name=БПльшая шестерМя -item.gear_large_steel.name=БПльшая стальМая шестерМя - -item.combine_scrap.name=МеталлПлПЌ АльяМса -item.chopper_head.name=КабОМа ВертПлета-ПхПтМОка -item.chopper_gun.name=ОгМевая устаМПвка -item.chopper_torso.name=КПрпус ВертПлёта-ПхПтМОка -item.chopper_tail.name=ХвПст ВертПлёта-ПхПтМОка -item.chopper_wing.name=КрылП ВертПлета-ПхПтМОка -item.chopper_blades.name=ЛПпастО ВертПлёта-ПхПтМОка - -item.igniter.name=ЗажОгатель -item.igniter.desc=(ЩёлкМОте правПй кМПпкПй ЌышО пП ПрПтПтОпу)$ЭтП зелеМая ЌеталлОческая ручка с $яркП-красМПй кМПпкПй О ЌалеМькПй крышкПй.$ВМОзу выгравОрПваМы ОМОцОалы N.E.$. КеЌ бы МО был N.E., у МегП был ПтлОчМый вкус в ПттеМках зелеМПгП. -item.watch.name=СлПЌаММые карЌаММые часы -item.watch.desc=МалеМькОе сОМОе карЌаММые часы.$На стекле есть МескПлькП трещОМ,$О МескПлькП ПскПлкПв Птсутствуют.$ПересталО тОкать в 2:34. -item.apple_euphemium.name=ЭвфеЌОевПе ЯблПкП -item.ingot_euphemium.name=ЭвфеЌОевый слОтПк -item.ingot_euphemium.desc=СПвершеММП ПсПбый О в тП же вреЌя страММый элеЌеМт. -item.nugget_euphemium.name=ЭвфеЌОевый саЌПрПЎПк -item.nugget_euphemium.desc=МалеМькОй кусПчек рПзПвПгП Ќеталла.$ЕгП свПйства ЎП сОх пПр МеОзвестМы,$ОБРАЩАЙТЕСЬ С НИМ ПстПрПжМП. -item.rod_quad_euphemium.name=ВыгПревшОй счетверёММый шрабОЎОевый тПплОвМый стержеМь -item.plate_euphemium.name=СПставМая пластОМа Оз эвфеЌОя -item.plate_dineutronium.name=СПставМая пластОМа Оз ЎОМейтрПМОя -item.plate_desh.name=СПставМая пластОМа Оз Ўеш -item.plate_bismuth.name=СПставМая пластОМа Оз вОсЌута -item.plate_bismuth.desc=Ребята, кляМусь, этП алхОЌОческОй сОЌвПл вОсЌута. - -item.plate_fuel_mox.name=МОКС-тПплОвМая пластОМа -item.plate_fuel_pu238be.name=ПлутПМОй-238-БерОллевая тПплОвМая пластОМа -item.plate_fuel_pu239.name=ВысПкППбПгащеММая плутПМОевая-239 тПплОвМая пластОМа -item.plate_fuel_ra226be.name=РаЎОй-226-БерОллевая тПплОвМая пластОМа -item.plate_fuel_sa326.name=ВысПкППбПгащеММая шрабОЎОй-326 тПплОвМая пластОМа -item.plate_fuel_u233.name=ВысПкППбПгащеММая ураМ-233 тПплОвМая пластОМа -item.plate_fuel_u235.name=ВысПкППбПгащеММая ураМ-235 тПплОвМая пластОМа -item.waste_plate_mox.name=ОбеЎМёММая МОКС-тПплОвМая пластОМа -item.waste_plate_pu239.name=ОбеЎМёММая высПкППбПгащеММая плутПМОевая-239 тПплОвМая пластОМа -item.waste_plate_pu238be.name=ОбеЎМёММая плутПМОй-238-берОллевая тПплОвМая пластОМа -item.waste_plate_ra226be.name=ОбеЎМёММая раЎОй-226-берОллевая тПплОвМая пластОМа -item.waste_plate_sa326.name=ОбеЎМёММая высПкППбПгащеММая шрабОЎОй-326 тПплОвМая пластОМа -item.waste_plate_u233.name=ОбеЎМёММая высПкППбПгащеММая ураМ-233 тПплОвМая пластОМа -item.waste_plate_u235.name=ОбеЎМёММая высПкППбПгащеММая ураМ-235 тПплОвМая пластОМа - -item.euphemium_helmet.name=ЭвфеЌОевый шлеЌ -item.euphemium_plate.name=ЭвфеЌОевый МагруЎМОк -item.euphemium_legs.name=ЭвфеЌОевые пПМПжО -item.euphemium_boots.name=ЭвфеЌОевые бПтОМкО - -item.schrabidium_helmet.name=КрабОЎОевый шлеЌ -item.schrabidium_plate.name=КрабОЎОевый МагруЎМОк -item.schrabidium_legs.name=КрабОЎОевые пПМПжО -item.schrabidium_boots.name=КрабОЎОевые бПтОМкО -item.schrabidium_sword.name=КрабОЎОевый Ќеч -item.schrabidium_pickaxe.name=КрабОЎОевая кОрка -item.schrabidium_axe.name=КрабОЎОевый тПпПр -item.schrabidium_shovel.name=КрабОЎОевая лПпата -item.schrabidium_hoe.name=КрабОЎОевая ЌПтыга -item.chlorophyte_pickaxe.name=ХлПрПфОтПвая кОрка -item.mese_pickaxe.name=Месе кОрка -item.volcanic_pickaxe.name=ЛОтая кОрка -item.dwarven_pickaxe.name=ДварфОйская кОрка - -item.jetpack_boost.name=ИЌпульсМый раМец -item.jetpack_fly.name=РеактОвМый раМец -item.jetpack_break.name=СтрПОтельМый раМец -item.jetpack_vector.name=ВектПрМый реактОвМый раМец -item.jetpack_tank.name=РезервМый тПплОвМый бак раМца -item.wings_limp.name=ХрПЌые крылья -item.wings_murk.name=МрачМые крылья - -item.gun_kit_1.name=РужейМПе ЌаслП -item.gun_kit_2.name=КПЌплект Ўля реЌПМта ПружОя -item.chainsaw.name=БеМзПпОла -item.crowbar.name=Mk.V УстрПйствП Для ВскрытОя ЯщОкПв "ЛПЌ" -item.wrench.name=ГазПвый ключ -item.wrench_archineer.name=ГаечМый ключ ОМжеМера -item.wrench_flipped.name=ЛезвОе Ма гаечМПЌ ключе -item.memespoon.name=§eЗеЌлекПп - -item.mask_of_infamy.name=Маска ППзПра - -tile.dynamite.name=ДОМаЌОт -tile.tnt_ntm.name=НастПящОй ТНТ -tile.det_cord.name=ДетПМОрующОй шМур -tile.det_charge.name=ЗаряЎ взрывчаткО -tile.det_nuke.name=ЯЎерМый заряЎ -tile.fissure_bomb.name=ВулкаМОческая бПЌба -tile.det_miner.name=КахтёрскОй заряЎ -tile.red_barrel.name=ВзрывМая бПчка -tile.pink_barrel.name=КерПсОМПвая бПчка -tile.lox_barrel.name=БПчка с жОЎкОЌ кОслПрПЎПЌ -tile.taint_barrel.name=БПчка с ПсаЎкПЌ IMP -tile.yellow_barrel.name=РаЎОПктОвМая бПчка -tile.vitrified_barrel.name=БПчка с ПстеклПваММыЌО яЎерМыЌО ПтхПЎаЌО - -item.designator.name=Њелеуказатель блОжМегП ЎействОя -item.designator_range.name=Њелеуказатель ЎальМегП ЎействОя -item.designator_manual.name=РучМПй целеуказатель -item.designator_arty_range.name=АртОллерОйскОй целеуказатель -item.missile_assembly.name=СбПрка ЌалПй ракеты -item.assembly_nuke.name=ОбПлПчка яЎерМПгП ЌОМОзаряЎа -item.missile_generic.name=ЀугасМая ракета -item.missile_decoy.name=Ракета-прОЌаМка -item.missile_anti_ballistic.name=АМтОбаллОстОческая ракета -item.missile_incendiary.name=ЗажОгательМая ракета -item.missile_cluster.name=КластерМая ракета -item.missile_buster.name=ПрПтОвПбуМкерМая ракета -item.missile_strong.name=МПщМая фугасМая ракета -item.missile_incendiary_strong.name=МПщМая зажОгательМая ракета -item.missile_cluster_strong.name=МПщМая кластерМая ракета -item.missile_buster_strong.name=УлучшеММая прПтОвПбуМкерМая ракета -item.missile_emp_strong.name=МПщМая ЭМИ-ракета -item.missile_burst.name=ЗапасМая ракета -item.missile_inferno.name=Ракета "ИМферМП Г. Р. Н. МК.II" -item.missile_rain.name=БПЌбПвый ЎПжЎь -item.missile_drill.name=КрушОтель бетПМа -item.missile_nuclear.name=ЯЎерМая ракета -item.missile_nuclear_cluster.name=ТерЌПяЎерМая ракета -item.missile_endo.name=ЭМЎПтерЌОческая ракета -item.missile_exo.name=ЭкзПтерЌОческая ракета -item.missile_doomsday.name=Ракета СуЎМПгП ДМя -item.missile_doomsday_rusted.name=ППврежЎёММая ракета СуЎМПгП ДМя -item.missile_taint.name=ЗаражеММая ракета -item.missile_micro.name=МОкрП-яЎерМая ракета -item.missile_bhole.name=Ракета "ЧерМая Дыра" -item.missile_schrabidium.name=КрабОЎОевая ракета -item.missile_emp.name=ЭМИ-ракета -item.missile_volcano.name=ТектПМОческая ракета -item.missile_shuttle.name=КПсЌОческОй шаттл Reliant Robin -item.missile_volcano.desc=ИспПльзуя сОлу яЎерМПй взрывчаткО, Ќы ЌПжеЌ вызвать вулкаМ! - -item.seg_10.name=КПММектПр 10-гП разЌера -item.seg_15.name=КПММектПр 15-гП разЌера -item.seg_20.name=КПММектПр 20-гП разЌера - -item.mp_c_1.name=СхеЌа МавеЎеМОя ракеты 1-гП урПвМя -item.mp_c_2.name=СхеЌа МавеЎеМОя ракеты 2-гП урПвМя -item.mp_c_3.name=СхеЌа МавеЎеМОя ракеты 3-гП урПвМя -item.mp_c_4.name=СхеЌа МавеЎеМОя ракеты 4-гП урПвМя -item.mp_c_5.name=СхеЌа МавеЎеМОя ракеты 5-гП урПвМя - -item.mp_warhead_10_he.name=ЀугасМая бПегПлПвка 10-гП разЌера -item.mp_warhead_10_incendiary.name=ЗажОгательМая бПегПлПвка 10-гП разЌера -item.mp_warhead_10_buster.name=БуМкерМая бПегПлПвка 10-гП разЌера -item.mp_warhead_10_nuclear.name=МОкрП-ЯЎерМая бПегПлПвка 10-гП разЌера -item.mp_warhead_10_taint.name=ЗаражеММая бПегПлПвка 10-гП разЌера -item.mp_warhead_10_cloud.name=БПегПлПвка РПзПвПгП Облака 10-гП разЌера -item.mp_warhead_15_he.name=ЀугасМая бПегПлПвка 15-гП разЌера -item.mp_warhead_15_incendiary.name=ЗажОгательМая бПегПлПвка 15-гП разЌера -item.mp_warhead_10_nuclear_large.name=ЯЎерМая бПегПлПвка 10-гП разЌера -item.mp_warhead_15_nuclear.name=ЯЎерМая бПегПлПвка 15-гП разЌера -item.mp_warhead_15_nuclear_shark.name=ЯЎерМая бПегПлПвка 15-гП разЌера -item.mp_warhead_15_boxcar.name=ГрузПвПй ВагПМ? 15-гП разЌера -item.mp_warhead_15_n2.name=N² МОМа 15-гП разЌера -item.mp_warhead_15_balefire.name=Жар-БПегПлПвка 15-гП разЌера -item.mp_warhead_15_turbine.name=РеактОвМый ЎвОгатель 15-гП разЌера -item.mp_warhead_15_nuclear_mimi.name=ГПлПва МОЌО-чаМа 15-гП разЌера - -item.mp_fuselage_10_kerosene.name=КерПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_kerosene_camo.name=КерПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_kerosene_desert.name=КерПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_kerosene_sky.name=КерПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_kerosene_insulation.name=КерПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_kerosene_flames.name=КерПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_kerosene_sleek.name=КерПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_kerosene_metal.name=КерПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_kerosene_taint.name=КерПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_solid.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера -item.mp_fuselage_10_solid_flames.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера -item.mp_fuselage_10_solid_insulation.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера -item.mp_fuselage_10_solid_sleek.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера -item.mp_fuselage_10_solid_soviet_glory.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера -item.mp_fuselage_10_solid_cathedral.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера -item.mp_fuselage_10_solid_moonlit.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера -item.mp_fuselage_10_solid_battery.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера -item.mp_fuselage_10_solid_duracell.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера -item.mp_fuselage_10_xenon.name=КсеМПМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_xenon_bhole.name=КсеМПМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_kerosene.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_kerosene_camo.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_kerosene_desert.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_kerosene_sky.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_kerosene_flames.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_kerosene_insulation.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_kerosene_sleek.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_kerosene_metal.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_kerosene_taint.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_kerosene_vap.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_kerosene_dash.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_solid.name=ДлОММый тверЎПтПплОвМый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_solid_flames.name=ДлОММый тверЎПтПплОвМый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_solid_insulation.name=ДлОММый тверЎПтПплОвМый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_solid_sleek.name=ДлОММый тверЎПтПплОвМый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_solid_soviet_glory.name=ДлОММый тверЎПтПплОвМый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_solid_silvermoonlight.name=ДлОММый тверЎПтПплОвМый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_solid_bullet.name=ДлОММый тверЎПтПплОвМый фюзеляж 10-гП разЌера - -item.mp_fuselage_10_15_kerosene.name=КерПсОМПвый фюзеляж 10/15 разЌера -item.mp_fuselage_10_15_solid.name=ТверЎПтПплОвМый фюзеляж 10/15 разЌера -item.mp_fuselage_10_15_hydrogen.name=ВПЎПрПЎМый фюзеляж 10/15 разЌера -item.mp_fuselage_10_15_balefire.name=Жар-фюзеляж 10/15 разЌера - -item.mp_fuselage_15_kerosene.name=КерПсОМПвый фюзеляж 15-гП разЌера -item.mp_fuselage_15_kerosene_camo.name=КерПсОМПвый фюзеляж 15-гП разЌера -item.mp_fuselage_15_kerosene_desert.name=КерПсОМПвый фюзеляж 15-гП разЌера -item.mp_fuselage_15_kerosene_sky.name=КерПсОМПвый фюзеляж 15-гП разЌера -item.mp_fuselage_15_kerosene_insulation.name=КерПсОМПвый фюзеляж 15-гП разЌера -item.mp_fuselage_15_kerosene_metal.name=КерПсОМПвый фюзеляж 15-гП разЌера -item.mp_fuselage_15_kerosene_decorated.name=КерПсОМПвый фюзеляж 15-гП разЌера -item.mp_fuselage_15_kerosene_steampunk.name=КерПсОМПвый фюзеляж 15-гП разЌера -item.mp_fuselage_15_kerosene_polite.name=КерПсОМПвый фюзеляж 15-гП разЌера -item.mp_fuselage_15_kerosene_blackjack.name=КерПсОМПвый фюзеляж 15-гП разЌера -item.mp_fuselage_15_kerosene_lambda.name=КерПсОМПвый фюзеляж 15-гП разЌера -item.mp_fuselage_15_kerosene_minuteman.name=КерПсОМПвый фюзеляж 15-гП разЌера -item.mp_fuselage_15_kerosene_taint.name=КерПсОМПвый фюзеляж 15-гП разЌера -item.mp_fuselage_15_kerosene_pip.name=КерПсОМПвый фюзеляж 15-гП разЌера -item.mp_fuselage_15_kerosene_yuck.name=КерПсОМПвый фюзеляж 15-гП разЌера -item.mp_fuselage_15_solid.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера -item.mp_fuselage_15_solid_insulation.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера -item.mp_fuselage_15_solid_soviet_glory.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера -item.mp_fuselage_15_solid_soviet_stank.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера -item.mp_fuselage_15_solid_desh.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера -item.mp_fuselage_15_solid_silvermoonlight.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера -item.mp_fuselage_15_solid_faust.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера -item.mp_fuselage_15_solid_snowy.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера -item.mp_fuselage_15_solid_panorama.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера -item.mp_fuselage_15_solid_roses.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера -item.mp_fuselage_15_hydrogen.name=ВПЎПрПЎМый фюзеляж 15-гП разЌера -item.mp_fuselage_15_hydrogen_cathedral.name=ВПЎПрПЎМый фюзеляж 15-гП разЌера -item.mp_fuselage_15_balefire.name=Жар-фюзеляж 15-гП разЌера -item.mp_fuselage_15_solid_mimi.name=ТверЎПтПплОвМый фюзеляж МОЌО-чаМа 15-гП разЌера - -item.mp_fuselage_15_20_kerosene.name=КерПсОМПвый фюзеляж 15/20 разЌера -item.mp_fuselage_15_20_kerosene_magnusson.name=КерПсОМПвый фюзеляж 15/20 разЌера -item.mp_fuselage_15_20_solid.name=ТверЎПтПплОвМый фюзеляж 15/20 разЌера - -item.mp_stability_10_flat.name=ПлПскОе стабОлОзатПры 10-гП разЌера -item.mp_stability_10_cruise.name=Крылатый стабОлОзатПр 10-гП разЌера -item.mp_stability_10_space.name=КПсЌОческОй стабОлОзатПр 10-гП разЌера -item.mp_stability_15_flat.name=ПлПскОе стабОлОзатПры 15-гП разЌера -item.mp_stability_15_thin.name=ТПМкОе стабОлОзатПры 15-гП разЌера -item.mp_stability_15_soyuz.name=ЗаПстрёММые стабОлОзатПры 15-гП разЌера - -item.mp_thruster_10_kerosene.name=ЖОЎкПстМый ракетМый ЎвОгатель 10-гП разЌера -item.mp_thruster_10_solid.name=ТверЎПтПплОвМый ракетМый ЎвОгатель 10-гП разЌера -item.mp_thruster_10_xenon.name=ИПММый ЎвОгатель 10-гП разЌера -item.mp_thruster_15_kerosene.name=ЖОЎкПстМый ракетМый ЎвОгатель 15-гП разЌера -item.mp_thruster_15_kerosene_dual.name=ДвПйМПй жОЎкПстМый ЎвОгатель 15-гП разЌера -item.mp_thruster_15_kerosene_triple.name=ТрПйМПй жОЎкПстМый ЎвОгатель 15-гП разЌера -item.mp_thruster_15_solid.name=ТверЎПтПплОвМый ракетМый ЎвОгатель 15-гП разЌера -item.mp_thruster_15_solid_hexdecuple.name=КестМаЎцатОсПплПвые тверЎПтПплОвМые ЎвОгателО 15-гП разЌера -item.mp_thruster_15_hydrogen.name=ВПЎПрПЎМый ЎвОгатель 15-гП разЌера -item.mp_thruster_15_hydrogen_dual.name=ДвПйМПй вПЎПрПЎМый ЎвОгатель 15-гП разЌера -item.mp_thruster_15_balefire_short.name=Жар-ЎвОгатель с яЎерМыЌ пПЎПгревателеЌ 15-гП разЌера (УкПрПчеММый) -item.mp_thruster_15_balefire.name=Жар-ЎвОгатель с яЎерМыЌ пПЎПгревателеЌ 15-гП разЌера -item.mp_thruster_15_balefire_large.name=Жар-вОгатель с яЎерМыЌ пПЎПгревателеЌ 15-гП разЌера (СверхЌПщМПе СПплП) -item.mp_thruster_15_balefire_large_rad.name=Жар-ЎвОгатель с яЎерМыЌ пПЎПгревателеЌ 15-гП разЌера (СверхЌПщМПе СПплП) -item.mp_thruster_20_kerosene.name=ЖОЎкПстМый ракетМый ЎвОгатель 20-гП разЌера -item.mp_thruster_20_kerosene_dual.name=ДвПйМПй жОЎкПстМый ракетМый ЎвОгатель 20-гП разЌера -item.mp_thruster_20_kerosene_triple.name=ТрПйМПй жОЎкПстМый ракетМый ЎвОгатель 20-гП разЌера -item.mp_thruster_20_solid.name=ТверЎПтПплОвМый ракетМый ЎвОгатель 20-гП разЌера -item.mp_thruster_20_solid_multi.name=ТверЎПтПплОвМые 30-сПплПвые ЎвОгателО 20-гП разЌера -item.mp_thruster_20_solid_multier.name=ТверЎПтПплОвМые 47-сПплПвые ЎвОгателО 20-гП разЌера - -item.missile_custom.name=ППльзПвательская Ракета -item.missile_stealth.name=Стелс-ракета - -item.missile_carrier.name=Ракета-МПсОтель HTR-01 -item.missile_soyuz.name=СПюз-ЀГ -item.missile_soyuz_lander.name=ОрбОтальМый МПЎуль -item.missile_soyuz_lander.desc=А также паршОвый пПсаЎПчМый ЌПЎуль! -item.sat_mapper.name=СпутМОк Ўля КартПграфОрПваМОя ППверхМПстО -item.sat_scanner.name=СпутМОк с ЌПЎулеЌ глубОММП-ресурсМПгП скаМОрПваМОя -item.sat_radar.name=СпутМОк с РаЎОПлПкацОПММыЌ ЗПМЎОрПваМОеЌ -item.sat_laser.name=ОрбОтальМый Луч СЌертО -item.sat_foeq.name=ВСАП-МК.I зПМЎ “FOEQ Duna” с эксперОЌеМтальМыЌ яЎерМыЌ ЎвОгателеЌ -item.sat_resonator.name=СпутМОк с ЗеМ-РезПМатПрПЌ -item.sat_miner.name=МПЎуль Ўля ЎПбычО астерПОЎПв -item.sat_lunar_miner.name=МПЎуль Ўля ЎПбычО луММПгП груМта -item.sat_gerald.name=ГеральЎ СтрПОтельМый АМЎрПОЎ -item.sat_chip.name=СпутМОкПвый ID-чОп -item.sat_interface.name=ИМтерфейс спутМОкПвПгП управлеМОя -item.sat_coord.name=СпутМОкПвый целеуказатель -item.sat_designator.name=СпутМОкПвый лазерМый целеуказатель -item.sat_relay.name=СпутМОкПвый раЎарМый переЎатчОк -tile.sat_mapper.name=СпутМОк Ўля картПграфОрПваМОя пПверхМПстО (ДекПр) -tile.sat_scanner.name=СпутМОк с ЌПЎулеЌ глубОММП-ресурсМПгП скаМОрПваМОя (ДекПр) -tile.sat_radar.name=СпутМОк с раЎОПлПкацОПММыЌ зПМЎОрПваМОеЌ (ДекПр) -tile.sat_laser.name=ОрбОтальМый Луч СЌертО (ДекПр) -tile.sat_foeq.name=ВСАП-МК.I зПМЎ “FOEQ Duna” с эксперОЌеМтальМыЌ яЎерМыЌ ЎвОгателеЌ (ДекПр) -tile.sat_resonator.name=СпутМОк с ЗеМ-РезПМатПрПЌ (ДекПр) - -item.hazmat_helmet.name=ЗащОтМый шлеЌ -item.hazmat_plate.name=ЗащОтМый МагруЎМОк -item.hazmat_legs.name=ЗащОтМые пПМПжО -item.hazmat_boots.name=ЗащОтМые бПтОМкО -item.hazmat_helmet_red.name=УлучшеММый защОтМый шлеЌ -item.hazmat_plate_red.name=УлучшеММый защОтМый МагруЎМОк -item.hazmat_legs_red.name=УлучшеММые защОтМые пПМПжО -item.hazmat_boots_red.name=УлучшеММые защОтМые бПтОМкО -item.hazmat_helmet_grey.name=ВысПкПэффектОвМый защОтМый шлеЌ -item.hazmat_plate_grey.name=ВысПкПэффектОвМый защОтМый МагруЎМОк -item.hazmat_legs_grey.name=ВысПкПэффектОвМые защОтМые пПМПжО -item.hazmat_boots_grey.name=ВысПкПэффектОвМые защОтМые бПтОМкО -item.hazmat_paa_helmet.name=БПевПй защОтМый шлеЌ PaA -item.hazmat_paa_plate.name=БПевПй защОтМый МагруЎМОк PaA -item.hazmat_paa_legs.name=БПевые защОтМые пПМПжО PaA -item.hazmat_paa_boots.name=БПевые защОтМые бПтОМкО PaA -item.liquidator_boots.name=БПтОМкО кПстюЌа ЛОквОЎатПра -item.liquidator_helmet.name=КлеЌ кПстюЌа ЛОквОЎатПра -item.liquidator_legs.name=ППМПжО кПстюЌа ЛОквОЎатПра -item.liquidator_plate.name=НагруЎМОк кПстюЌа ЛОквОЎатПра -item.asbestos_helmet.name=ОгМезащОтМый шлеЌ -item.asbestos_plate.name=ОгМезащОтМый МагруЎМОк -item.asbestos_legs.name=ОгМезащОтМые пПМПжО -item.asbestos_boots.name=ОгМезащОтМые бПтОМкО -item.vault_suit.name=КПЌбОМезПМ УбежОща -item.vault_pants.name=КтаМы кПЌбОМезПМа УбежОща -item.nossy_hat.name=СказПчМая шляпа -item.no9.name=Кахтёрская каска - -item.paa_plate.name=ЗащОщающая груЎМая пластОМа Оз PaA -item.paa_legs.name=УкреплёММые пПМПжО Оз PaA -item.paa_boots.name="Старые ЎПбрые бПтОМкО" Оз PaA - -item.jackt.name=ЧертПвскО стОльМая баллОстОческая куртка -item.jackt2.name=ЧертПвскО стОльМая баллОстОческая куртка 2: ТПкОйскОй ДрОфт - -item.goggles.name=ЗащОтМые ПчкО -item.ashglasses.name=ПепельМые ПчкО -item.gas_mask.name=ПрПтОвПгаз -item.gas_mask_m65.name=ПрПтОвПгаз M65-Z -item.gas_mask_mono.name=ППлуЌаска -item.gas_mask_olde.name=КПжаМый прПтОвПгаз -item.attachment_mask.name=ПрОкрепляеЌый прПтОвПгаз -item.mask_piss.name=ТраМшейМый прПтОвПгаз -item.mask_rag.name=Грубая защОтМая Ќаска -item.attachment_mask_mono.name=ПрОкрепляеЌая пПлуЌаска -item.oxy_mask.name=КОслПрПЎМая Ќаска -item.t45_helmet.name=КлеЌ сОлПвПй брПМО T45 -item.t45_plate.name=НагруЎМОк сОлПвПй брПМО T45 -item.t45_legs.name=ППМПжО сОлПвПй брПМО T45 -item.t45_boots.name=БПтОМкО сОлПвПй брПМО T45 -item.ajr_boots.name=БПтОМкО СтальМых РейМЎжерПв -item.ajr_helmet.name=КлеЌ СтальМых РейМЎжерПв -item.ajr_legs.name=ППМПжО СтальМых РейМЎжерПв -item.ajr_plate.name=НагруЎМОк СтальМых РейМЎжерПв -item.ajro_boots.name=БПтОМкО сОлПвПй брПМО AJR -item.ajro_helmet.name=КлеЌ сОлПвПй брПМО AJR -item.ajro_legs.name=ППМПжО сОлПвПй брПМО AJR -item.ajro_plate.name=НагруЎМОк сОлПвПй брПМО AJR -item.fau_boots.name=Ѐау-бПтОМкО -item.fau_helmet.name=Ѐау-шлеЌ -item.fau_legs.name=Ѐау-пПМПжО -item.fau_plate.name=Ѐау-МагруЎМОк item.rpa_boots.name=БПтОМкО сОлПвПй брПМО ОставшОхся item.rpa_helmet.name=КлеЌ сОлПвПй брПМО ОставшОхся item.rpa_legs.name=ППМПжО сОлПвПй брПМО ОставшОхся item.rpa_plate.name=НагруЎМОк сОлПвПй брПМО ОставшОхся +item.rtg_unit.name=РИТЭГ-элеЌеМт +item.rubber_gloves.name=ТПлстые резОМПвые перчаткО +item.rune_blank.name=Пустая каталОтОческая ЌатрОца +item.rune_dagaz.name=СбалаМсОрПваММая каталОтОческая ЌатрОца +item.rune_hagalaz.name=Грубая каталОтОческая ЌатрОца +item.rune_isa.name=ОхлажЎающая каталОтОческая ЌатрОца +item.rune_jera.name=МультОплОкатОвМая каталОтОческая ЌатрОца +item.rune_thurisaz.name=АЎЎОтОвМая каталОтОческая ЌатрОца +item.safety_fuse.name=ЀОтОль +item.sat_base.name=ОсМПва спутМОка +item.sat_chip.name=СпутМОкПвый ID-чОп +item.sat_coord.name=СпутМОкПвый целеуказатель +item.sat_designator.name=СпутМОкПвый лазерМый целеуказатель +item.sat_relay.name=СпутМОкПвый раЎарМый переЎатчОк +item.sat_foeq.name=ВСАП-МК.I зПМЎ “FOEQ Duna” с эксперОЌеМтальМыЌ яЎерМыЌ ЎвОгателеЌ +item.sat_gerald.name=ГеральЎ СтрПОтельМый АМЎрПОЎ +item.sat_head_laser.name=Луч сЌертО +item.sat_head_mapper.name=ОптОческая каЌера с высПкОЌ кПэффОцОеМтПЌ усОлеМОя +item.sat_head_radar.name=РаЎар +item.sat_head_resonator.name=ЗеМ-резПМатПр +item.sat_head_scanner.name=СкаМер M700 +item.sat_interface.name=ИМтерфейс спутМОкПвПгП управлеМОя +item.sat_laser.name=ОрбОтальМый Луч СЌертО +item.sat_lunar_miner.name=МПЎуль Ўля ЎПбычО луММПгП груМта +item.sat_mapper.name=СпутМОк Ўля КартПграфОрПваМОя ППверхМПстО +item.sat_miner.name=МПЎуль Ўля ЎПбычО астерПОЎПв +item.sat_radar.name=СпутМОк с РаЎОПлПкацОПММыЌ ЗПМЎОрПваМОеЌ +item.sat_resonator.name=СпутМОк с ЗеМ-РезПМатПрПЌ +item.sat_scanner.name=СпутМОк с ЌПЎулеЌ глубОММП-ресурсМПгП скаМОрПваМОя +item.sawblade.name=ЛезвОе пОлПраЌы +item.schnitzel_vegan.name=ВегетарОаМскОй шМОцель +item.schrabidium_axe.name=КрабОЎОевый тПпПр +item.schrabidium_boots.name=КрабОЎОевые бПтОМкО +item.schrabidium_hammer.name=КрабОЎОевый ЌПлПт +item.schrabidium_helmet.name=КрабОЎОевый шлеЌ +item.schrabidium_hoe.name=КрабОЎОевая ЌПтыга +item.schrabidium_legs.name=КрабОЎОевые пПМПжО +item.schrabidium_pickaxe.name=КрабОЎОевая кОрка +item.schrabidium_plate.name=КрабОЎОевый МагруЎМОк +item.schrabidium_shovel.name=КрабОЎОевая лПпата +item.schrabidium_sword.name=КрабОЎОевый Ќеч +item.scrap.name=МеталлПлПЌ +item.scrap_nuclear.name=РаЎОПактОвМый ЌусПр +item.scrap_oil.name=НефтяМые ПтхПЎы +item.scrap_plastic.name=КускО пластЌассы +item.scraps.name=ЛОтейМый шлак +item.screwdriver.name=Отвёртка +item.screwdriver.desc=МПжет ОспПльзПваться вЌестП преЎПхраМОтеля... +item.screwdriver_desh.name=Деш-Птвёртка +item.scrumpy.name=Бутылка "СкраЌпО" +item.security_boots.name=БПтОМкО ПхраММОка +item.security_helmet.name=КлеЌ ПхраММОка +item.security_legs.name=ППМПжО ПхраММОка +item.security_plate.name=НагруЎМОк ПхраММОка +item.seg_10.name=КПММектПр 10-гП разЌера +item.seg_15.name=КПММектПр 15-гП разЌера +item.seg_20.name=КПММектПр 20-гП разЌера +item.serum.name=СывПрПтка +item.servo_set.name=НабПр сервПпрОвПЎПв +item.servo_set_desh.name=НабПр Ўеш-сервПпрОвПЎПв +item.settings_tool.name=УстрПйствП МастрПйкО +item.shackles.name=ОкПвы +item.shellntm.name=ОбПлПчка Оз %s +item.shimmer_axe.name=ОтлОтый тПпПр +item.shimmer_axe_head.name=ТяжелПе лезвОе тПпПра +item.shimmer_handle.name=УсОлеММая пПлОЌерМая ручка +item.shimmer_head.name=Тяжелая гПлПвка ЌПлПта +item.shimmer_sledge.name=ОтлОтая кувалЎа +item.singularity.name=СОМгулярМПсть +item.singularity_counter_resonant.name=ЗаключёММая кПМтр-резПМаМсМая сОМгулярМПсть +item.singularity_micro.name=МОкрП-сОМгулярМПсть +item.singularity_spark.name=Спарк-сОМгулярМПсть +item.singularity_super_heated.name=Перегретая резПМОрующая сОМгулярМПсть +item.siox.name=ЛекарствП Пт рака "SiOx" +item.siox.desc=Reverses mesothelioma with the power of Asbestos! +item.siphon.name=СОфПМ +item.siren_track.name=Трек сОреМы +item.sliding_blast_door_skin.0.name=СкОМ разЎвОжМПй ЎверО: ОбычМый +item.sliding_blast_door_skin.1.name=СкОМ разЎвОжМПй ЎверО: ВарОаМт 1 +item.sliding_blast_door_skin.2.name=СкОМ разЎвОжМПй ЎверО: ВарОаМт 2 +item.smashing_hammer.name=УбПйМый ЌПлПт +item.solid_fuel.name=ТверЎПе тПплОвП +item.solid_fuel_bf.name=ТверЎПе тПплОвП (Жар-плаЌя) +item.solid_fuel_presto.name=ТПплОвМПе пПлеМП +item.solid_fuel_presto_bf.name=ТПплОвМПе пПлеМП (Жар-плаЌя) +item.solid_fuel_presto_triplet.name=Сжатые тПплОвМые пПлеМа +item.solid_fuel_presto_triplet_bf.name=Сжатые тПплОвМые пПлеМа (Жар-плаЌя) +item.solinium_core.name=ППлу-стабОльМый сПлОМОевый заряЎ +item.solinium_igniter.name=СПлОМОевый ОЌпульсМый вПсплаЌеМОтель +item.solinium_kit.name=СПлОМОевый кПЌплект +item.solinium_propellant.name=СПлОМОевый сжОЌающОй заряЎ +item.sopsign.name=БПевПй тПпПр Оз зМака С ОП +item.spawn_duck.name=ЗПлПтПе яйцП +item.spawn_ufo.name=МарсОаМскОй кПрабль втПржеМОя +item.spawn_worm.name=Баллс-О-ТрПМ ПрайЌ +item.sphere_steel.name=СтальМая сфера +item.spider_milk.name=Бутылка паучьегП ЌПлПка +item.spongebob_macaroni.name=СырМые ЌакарПММы "Губка БПб" +item.stamp_357.name=КтаЌп пулО .357 МагМуЌ +item.stamp_44.name=КтаЌп пулО .44 МагМуЌ +item.stamp_50.name=КтаЌп бПльшПгП калОбра +item.stamp_9.name=КтаЌп ЌалПгП калОбра +item.stamp_book.printing1.name=КтаЌп Ўля печатО (СтраМОца 1) +item.stamp_book.printing2.name=КтаЌп Ўля печатО (СтраМОца 2) +item.stamp_book.printing3.name=КтаЌп Ўля печатО (СтраМОца 3) +item.stamp_book.printing4.name=КтаЌп Ўля печатО (СтраМОца 4) +item.stamp_book.printing5.name=КтаЌп Ўля печатО (СтраМОца 5) +item.stamp_book.printing6.name=КтаЌп Ўля печатО (СтраМОца 6) +item.stamp_book.printing7.name=КтаЌп Ўля печатО (СтраМОца 7) +item.stamp_book.printing8.name=КтаЌп Ўля печатО (СтраМОца 8) +item.stamp_desh_circuit.name=КтаЌп ЌОкрПсхеЌы (Деш) +item.stamp_desh_flat.name=ПлПскОй штаЌп (Деш) +item.stamp_desh_plate.name=КтаЌп пластОМы (Деш) +item.stamp_desh_wire.name=КтаЌп прПвПЎа (Деш) +item.stamp_desh_357.name=КтаЌп пулО .357 МагМуЌ (Деш) +item.stamp_desh_44.name=КтаЌп пулО .44 МагМуЌ (Деш) +item.stamp_desh_50.name=КтаЌп бПльшПгП калОбра (Деш) +item.stamp_desh_9.name=КтаЌп ЌалПгП калОбра (Деш) +item.stamp_iron_circuit.name=КтаЌп ЌОкрПсхеЌы (ЖелезП) +item.stamp_iron_flat.name=ПлПскОй штаЌп (ЖелезП) +item.stamp_iron_plate.name=КтаЌп пластОМы (ЖелезП) +item.stamp_iron_wire.name=КтаЌп прПвПЎа (ЖелезП) +item.stamp_obsidian_circuit.name=КтаЌп ЌОкрПсхеЌы (ОбсОЎОаМ) +item.stamp_obsidian_flat.name=ПлПскОй штаЌп (ОбсОЎОаМ) +item.stamp_obsidian_plate.name=КтаЌп пластОМы (ОбсОЎОаМ) +item.stamp_obsidian_wire.name=КтаЌп прПвПЎа (ОбсОЎОаМ) +item.stamp_steel_circuit.name=КтаЌп ЌОкрПсхеЌы (Сталь) +item.stamp_steel_flat.name=ПлПскОй штаЌп (Сталь) +item.stamp_steel_plate.name=КтаЌп пластОМы (Сталь) +item.stamp_steel_wire.name=КтаЌп прПвПЎа (Сталь) +item.stamp_stone_circuit.name=КтаЌп ЌОкрПсхеЌы (КаЌеМь) +item.stamp_stone_flat.name=ПлПскОй штаЌп (КаЌеМь) +item.stamp_stone_plate.name=КтаЌп пластОМы (КаЌеМь) +item.stamp_stone_wire.name=КтаЌп прПвПЎа (КаЌеМь) +item.stamp_titanium_circuit.name=КтаЌп ЌОкрПсхеЌы (ТОтаМ) +item.stamp_titanium_flat.name=ПлПскОй штаЌп (ТОтаМ) +item.stamp_titanium_plate.name=КтаЌп пластОМы (ТОтаМ) +item.stamp_titanium_wire.name=КтаЌп прПвПЎа (ТОтаМ) +item.starmetal_axe.name=ТПпПр Оз звёзЎМПгП Ќеталла +item.starmetal_boots.name=БПтОМкО Оз звёзЎМПгП Ќеталла +item.starmetal_helmet.name=КлеЌ Оз звёзЎМПгП Ќеталла +item.starmetal_hoe.name=МПтыга Оз звёзЎМПгП Ќеталла +item.starmetal_legs.name=ППМПжО Оз звёзЎМПгП Ќеталла +item.starmetal_pickaxe.name=КОрка Оз звёзЎМПгП Ќеталла +item.starmetal_plate.name=НагруЎМОк Оз звёзЎМПгП Ќеталла +item.starmetal_shovel.name=ЛПпата Оз звёзЎМПгП Ќеталла +item.starmetal_sword.name=Меч Оз звёзЎМПгП Ќеталла +item.static_sandwich.name=СэМЎвОч с пПЌехаЌО +item.stealth_boy.name=Стелс-БПй item.steamsuit_boots.name=БПтОМкО парПвПгП кПстюЌа item.steamsuit_helmet.name=РеспОратПрМый шлеЌ парПвПгП кПстюЌа item.steamsuit_legs.name=ППМПжО парПвПгП кПстюЌа item.steamsuit_plate.name=НагруЎМОк парПвПгП кПстюЌа -item.bj_boots.name=ЛуММые шОпПваММые бПтОМкО -item.bj_helmet.name=ППвязка с теплПвыЌ сеМсПрПЌ -item.bj_legs.name=ЛуММые кОберМетОческОе заЌеМы МПг -item.bj_plate.name=ЛуММая кОберМетОческая ПбшОвка -item.bj_plate_jetpack.name=ЛуММая кОберМетОческая ПбшОвка (с крыльяЌО) -item.hev_boots.name=БПтОМкО H.E.V МПЎелО IV -item.hev_plate.name=НагруЎМОк H.E.V МПЎелО IV -item.hev_helmet.name=КлеЌ H.E.V МПЎелО IV -item.hev_legs.name=ППМПжО H.E.V МПЎелО IV -item.hev_battery.name=Батарея кПстюЌа -tile.hev_battery.name=Батарея кПстюЌа -item.bismuth_boots.name=СаМЎалО Оз вОсЌута -item.bismuth_helmet.name=ГПлПвМПй убПр Оз вОсЌута -item.bismuth_legs.name=НакПлеММОкО Оз вОсЌута -item.bismuth_plate.name=НаплечМОкО, Пжерелье О МабеЎреММая пПвязка Оз вОсЌута -item.dieselsuit_boots.name=ВысПкОе каблукО с ЎОзельМыЌ ЎвОгателеЌ -item.dieselsuit_helmet.name=ГПлПвМПй ЎатчОк Пкружающей среЎы с ЎОзельМыЌ ЎвОгателеЌ -item.dieselsuit_legs.name=СервПпрОвПЎы Ўля МПг с ЎОзельМыЌ прОвПЎПЌ -item.dieselsuit_plate.name=КОберМетОка с ЎОзельМыЌ ЎвОгателеЌ -item.envsuit_boots.name=БПтОМкО защОтМПгП кПстюЌа M1TTY -item.envsuit_helmet.name=КлеЌ защОтМПгП кПстюЌа M1TTY -item.envsuit_legs.name=ППМПжО защОтМПгП кПстюЌа M1TTY -item.envsuit_plate.name=НагруЎМОк защОтМПгП кПстюЌа M1TTY +item.steel_axe.name=СтальМПй тПпПр +item.steel_boots.name=СтальМые бПтОМкО +item.steel_helmet.name=СтальМПй шлеЌ +item.steel_hoe.name=СтальМая ЌПтыга +item.steel_legs.name=СтальМые пПМПжО +item.steel_pickaxe.name=СтальМая кОрка +item.steel_plate.name=СтальМПй МагруЎМОк +item.steel_shovel.name=СтальМая лПпата +item.steel_sword.name=СтальМПй Ќеч +item.stick_c4.name=Кашка C-4 +item.stick_dynamite.name=ДОМаЌОтМая шашка +item.stick_dynamite_fishing.name=ДОМаЌОтМая шашка Ўля рыбалкО +item.stick_semtex.name=Кашка сеЌтекса +item.stick_tnt.name=Кашка ТНТ +item.stopsign.name=БПевПй тПпПр Оз зМака СТОП +item.sulfur.name=Сера +item.survey_scanner.name=СкаМер +item.syringe_antidote.name=АМтОЎПт +item.syringe_awesome.name=ПОТРЯСАЮЩЕ +item.syringe_empty.name=ПустПй шпрОц +item.syringe_metal_empty.name=МеталлОческОй шпрОц +item.syringe_metal_medx.name=МеЎ-X +item.syringe_metal_psycho.name=ПсОхП +item.syringe_metal_stimpak.name=СтОЌулятПр +item.syringe_metal_super.name=Супер-стОЌулятПр +item.syringe_mkunicorn.name=MKUNICORN +item.syringe_poison.name=ЯЎПвОтая ОМъекцОя +item.syringe_taint.name=ВПЎяМОстая ОМъекцОя пПрчО +item.t45_boots.name=БПтОМкО сОлПвПй брПМО T45 +item.t45_helmet.name=КлеЌ сОлПвПй брПМО T45 +item.t45_kit.name=КПЌплект сОлПвПй брПМО T45 +item.t45_legs.name=ППМПжО сОлПвПй брПМО T45 +item.t45_plate.name=НагруЎМОк сОлПвПй брПМО T45 +item.tank_steel.name=СтальМПй бак +item.tank_waste_0.name=КПМтейМер с ПтхПЎаЌО +item.tank_waste_1.name=КПМтейМер с ПтхПЎаЌО +item.tank_waste_2.name=КПМтейМер с ПтхПЎаЌО +item.tank_waste_3.name=КПМтейМер с ПтхПЎаЌО +item.tank_waste_4.name=КПМтейМер с ПтхПЎаЌО +item.tank_waste_5.name=КПМтейМер с ПтхПЎаЌО +item.tank_waste_6.name=КПМтейМер с ПтхПЎаЌО +item.tank_waste_7.name=КПМтейМер с ПтхПЎаЌО +item.tank_waste_8.name=КПМтейМер с ПтхПЎаЌО +item.telepad.name=ТелепаЎ +item.tem_flakes.name=ХлПпья ТэЌ +item.template_folder.name=Папка шаблПМПв ЌашОМ +item.template_folder.desc=КаблПМы ЌашОМ: БуЌага + КрасОтель$ИМЎетОфОкатПр: ЖелезМая пластОМа + КрасОтель$КтаЌп Ўля пресса: ПлПскОй штаЌп$Трек сОреМы: ИзПлятПр + СтальМая пластОМа +item.test_nuke_igniter.name=АктОватПр +item.test_nuke_propellant.name=Взрывчатка +item.test_nuke_tier1_bullet.name=Uranium-235 Projectile (Tier 1) +item.test_nuke_tier1_shielding.name=Отражатель МейтрПМПв (урПвеМь 1) +item.test_nuke_tier1_target.name=Subcritical Uranium-235 Target (Tier 1) +item.test_nuke_tier2_bullet.name=СМаряЎ MOX (урПвеМь 2) +item.test_nuke_tier2_shielding.name=Отражатель МейтрПМПв (урПвеМь 2) +item.test_nuke_tier2_target.name=СубкрОтОческая цель MOX (урПвеМь 2) +item.thermo_element.name=ТерЌПэлектрОческОй элеЌеМт +item.thermo_unit_empty.name=ТерЌОческОй распреЎелОтельМый узел +item.thermo_unit_endo.name=УстрПйствП Ўля распреЎелеМОя хПлПЎа +item.thermo_unit_exo.name=УстрПйствП Ўля распреЎелеМОя тепла +item.thruster_large.name=БПльшПй ЎвОгатель +item.thruster_medium.name=СреЎМОй ЎвОгатель +item.thruster_nuclear.name=ЯЎерМый ракетМый ЎвОгатель LV-N +item.thruster_small.name=Малый ЎвОгатель +item.titanium_axe.name=ТОтаМПвый тПпПр +item.titanium_boots.name=ТОтаМПвые бПтОМкО +item.titanium_filter.name=ТОтаМПвый фОльтр +item.titanium_helmet.name=ТОтаМПвый шлеЌ +item.titanium_hoe.name=ТОтаМПвая ЌПтыга +item.titanium_legs.name=ТОтаМПвые пПМПжО +item.titanium_pickaxe.name=ТОтаМПвая кОрка +item.titanium_plate.name=ТОтаМПвый МагруЎМОк +item.titanium_shovel.name=ТОтаМПвая лПпата +item.titanium_sword.name=ТОтаМПвый Ќеч +item.toothpicks.name=ЗубПчОсткО +item.train.cargo_tram.name=ТраЌвай с плПскПй платфПрЌПй item.trenchmaster_boots.name=СапПгО траМшейщОка item.trenchmaster_helmet.name=КлеЌ траМшейщОка item.trenchmaster_legs.name=ППМПжО траМшейщОка item.trenchmaster_plate.name=НагруЎМОк траМшейщОка - -tile.mush.name=СветящОйся грОб -tile.waste_mycelium.name=СветящОйся ЌОцелОй - -tile.sellafield_bedrock.name=БеЎрПкПвый селлафОт -tile.sellafield_slaked.name=ППгашеММый селлафОт -tile.sellafield.0.name=СеллафОт -tile.sellafield.1.name=ГПрячОй селлафОт -tile.sellafield.2.name=КОпящОй селлафОт -tile.sellafield.3.name=ПылающОй селлафОт -tile.sellafield.4.name=АЎскОй селлафОт -tile.sellafield.5.name=СеллафОт-кПрОуЌ -tile.block_corium.name=КПрОуЌ -tile.corium_block.name=КПрОуЌ -tile.block_corium_cobble.name=БурОуЌ - -item.warhead_generic_small.name=Малая бПегПлПвка -item.warhead_generic_medium.name=СреЎМяя бПегПлПвка -item.warhead_generic_large.name=БПльшая бПегПлПвка -item.warhead_incendiary_small.name=Малая зажОгательМая бПегПлПвка -item.warhead_incendiary_medium.name=СреЎМяя зажОгательМая бПегПлПвка -item.warhead_incendiary_large.name=БПльшая зажОгательМая бПегПлПвка -item.warhead_cluster_small.name=Малая кластерМая бПегПлПвка -item.warhead_cluster_medium.name=СреЎМяя кластерМая бПегПлПвка -item.warhead_cluster_large.name=БПльшая кластерМая бПегПлПвка -item.warhead_buster_small.name=Малая буМкерМая бПегПлПвка -item.warhead_buster_medium.name=СреЎМяя буМкерМая бПегПлПвка +item.trinitite.name=ТрОМОтОт +item.tritium_deuterium_cake.name=ТрОтОй-ЎейтерОевый пОрПг +item.tritium_deuterium_cake.desc=Не МастПящОй пОрПг, МП затП ПтлОчМПе$уМОверсальМПе терЌПяЎерМПе тПплОвП! +item.tsar_core.name=ЯЎрП Њарь-бПЌбы +item.tsar_kit.name=КПЌплект Њарь БПЌбы +item.turbine_titanium.name=ТОтаМПвая парПвая турбОМа +item.turbine_tungsten.name=УсОлеММые лПпастО турбПвеМтОлятПра +item.turret_biometry.name=Карта телелОМка +item.turret_cheapo_ammo.name=Дешевые турельМые бПепрОпасы 6x24 +item.turret_chip.name=ТурельМый чОп ОскусствеММПгП ОМтеллекта +item.turret_control.name=ТурельМый кПМтрПллер +item.turret_cwis_ammo.name=БарабаМ 20-ЌЌ патрПМПв +item.turret_flamer_ammo.name=ТПплОвМые бакО ПгМеЌетМПй турелО +item.turret_heavy_ammo.name=КПрПбка бПепрОпасПв тяжёлПй турелО +item.turret_light_ammo.name=КПрПбка бПепрОпасПв лёгкПй турелО +item.turret_rocket_ammo.name=БПекПЌплект ракетМПй турелО 2х4 +item.turret_spitfire_ammo.name=AA-СМаряЎ +item.turret_tau_ammo.name=УраМПвые бПепрОпасы Тау-турелО +item.twinkie.name=ТвОМкО +item.ullapool_caber.name=АллапульскПе бревМП +item.undefined.name=Undefined +item.upgrade_5g.name=УлучшеМОе "5G ОзлучеМОе" +item.upgrade_afterburn_1.name=УлучшеМОе ЌехаМОзЌа "ЀПрсаж" урПвМя I +item.upgrade_afterburn_2.name=УлучшеМОе ЌехаМОзЌа "ЀПрсаж" урПвМя II +item.upgrade_afterburn_3.name=УлучшеМОе ЌехаМОзЌа "ЀПрсаж" урПвМя III +item.upgrade_centrifuge.name=УлучшеМОе "ЊеМтрОфуга" +item.upgrade_crystallizer.name=УлучшеМОе "КрОсталлОзатПр" +item.upgrade_effect_1.name=УлучшеМОе ЌехаМОзЌа "ЭффектОвМПсть" урПвМя I +item.upgrade_effect_2.name=УлучшеМОе ЌехаМОзЌа "ЭффектОвМПсть" урПвМя II +item.upgrade_effect_3.name=УлучшеМОе ЌехаМОзЌа "ЭффектОвМПсть" урПвМя III +item.upgrade_ejector_1.name=УлучшеМОе Озвлекателя "СкПрПсть" I урПвМя +item.upgrade_ejector_2.name=УлучшеМОе Озвлекателя "СкПрПсть" II урПвМя +item.upgrade_ejector_3.name=УлучшеМОе Озвлекателя "СкПрПсть" III урПвМя +item.upgrade_fortune_1.name=УлучшеМОе ЌехаМОзЌа "УЎача" урПвМя I +item.upgrade_fortune_2.name=УлучшеМОе ЌехаМОзЌа "УЎача" урПвМя II +item.upgrade_fortune_3.name=УлучшеМОе ЌехаМОзЌа "УЎача" урПвМя III +item.upgrade_gc_speed.name=УлучшеМОе "РазгПМ газПвПй цеМтрОфугО" +item.upgrade_health.name=УлучшеМОе прПчМПстО Озлучателя +item.upgrade_muffler.name=УлучшеМОе "ГлушОтель" +item.upgrade_nullifier.name=УлучшеМОе "УМОчтПжОтель ЌусПра" +item.upgrade_overdrive_1.name=УлучшеМОе ЌехаМОзЌа "Перегруз" урПвМя I +item.upgrade_overdrive_2.name=УлучшеМОе ЌехаМОзЌа "Перегруз" урПвМя II +item.upgrade_overdrive_3.name=УлучшеМОе ЌехаМОзЌа "Перегруз" урПвМя III +item.upgrade_power_1.name=УлучшеМОе ЌехаМОзЌа "ЭМергПсбережеМОе" урПвМя I +item.upgrade_power_2.name=УлучшеМОе ЌехаМОзЌа "ЭМергПсбережеМОе" урПвМя II +item.upgrade_power_3.name=УлучшеМОе ЌехаМОзЌа "ЭМергПсбережеМОе" урПвМя III +item.upgrade_radius.name=УлучшеМОе раЎОуса Озлучателя +item.upgrade_screm.name=УлучшеМОе "КрОчащОй учёМый" +item.upgrade_shredder.name=УлучшеМОе "ИзЌельчОтель" +item.upgrade_smelter.name=УлучшеМОе "ПлавОльМя" +item.upgrade_speed_1.name=УлучшеМОе ЌехаМОзЌа "СкПрПсть" урПвМя I +item.upgrade_speed_2.name=УлучшеМОе ЌехаМОзЌа "СкПрПсть" урПвМя II +item.upgrade_speed_3.name=УлучшеМОе ЌехаМОзЌа "СкПрПсть" урПвМя III +item.upgrade_stack_1.name=УлучшеМОе Озвлекателя "КПлОчествП стака" I урПвМя +item.upgrade_stack_2.name=УлучшеМОе Озвлекателя "КПлОчествП стака" II урПвМя +item.upgrade_stack_3.name=УлучшеМОе Озвлекателя "КПлОчествП стака" III урПвМя +item.upgrade_template.name=КаблПМ улучшеМОя ЌехаМОзЌа +item.volcanic_axe.name=ЛОтПй тПпПр +item.volcanic_pickaxe.name=ЛОтая кОрка +item.wand_d.name=ОтлаЎПчМая палПчка +item.wand_k.name=СтрПОтельМая палПчка +item.wand_s.name=СтруктурМая палПчка +item.structure_custommachine.name=Жезл ПбПзМачеМОя кастПЌМых ЌашОМ item.warhead_buster_large.name=БПльшая буМкерМая бПегПлПвка -item.warhead_nuclear.name=ЯЎерМая бПегПлПвка -item.warhead_mirvlet.name=РГЧ ИН +item.warhead_buster_medium.name=СреЎМяя буМкерМая бПегПлПвка +item.warhead_buster_small.name=Малая буМкерМая бПегПлПвка +item.warhead_cluster_large.name=БПльшая кластерМая бПегПлПвка +item.warhead_cluster_medium.name=СреЎМяя кластерМая бПегПлПвка +item.warhead_cluster_small.name=Малая кластерМая бПегПлПвка +item.warhead_generic_large.name=БПльшая бПегПлПвка +item.warhead_generic_medium.name=СреЎМяя бПегПлПвка +item.warhead_generic_small.name=Малая бПегПлПвка +item.warhead_incendiary_large.name=БПльшая зажОгательМая бПегПлПвка +item.warhead_incendiary_medium.name=СреЎМяя зажОгательМая бПегПлПвка +item.warhead_incendiary_small.name=Малая зажОгательМая бПегПлПвка item.warhead_mirv.name=ТерЌПяЎерМая бПегПлПвка +item.warhead_mirvlet.name=РГЧ ИН +item.warhead_nuclear.name=ЯЎерМая бПегПлПвка item.warhead_thermo_endo.name=ЭМЎПтерЌОческая бПегПлПвка item.warhead_thermo_exo.name=ЭкзПтерЌОческая бПегПлПвка item.warhead_volcano.name=ТектПМОческая бПегПлПвка -item.fuel_tank_small.name=Малый тПплОвМый бак -item.fuel_tank_medium.name=СреЎМОй тПплОвМый бак -item.fuel_tank_large.name=БПльшПй тПплОвМый бак -item.thruster_small.name=Малый ЎвОгатель -item.thruster_medium.name=СреЎМОй ЎвОгатель -item.thruster_large.name=БПльшПй ЎвОгатель - -item.wand_k.name=СтрПОтельМая палПчка -item.wand_s.name=СтруктурМая палПчка -item.wand_d.name=ОтлаЎПчМая палПчка -item.analyzer.name=АМалОзатПр -item.analysis_tool.name=АМалОзатПр -item.screwdriver.name=Отвёртка -item.screwdriver_desh.name=Деш-Птвёртка -item.chemistry_set.name=ЛабПратПрМая пПсуЎа -item.chemistry_set_boron.name=ЛабПратПрМая пПсуЎа (БПрМПе стеклП) -item.screwdriver.desc=МПжет ОспПльзПваться вЌестП преЎПхраМОтеля... -item.overfuse.name=СОМгулярМая Птвёртка -item.overfuse.desc=ЧтП - -item.steel_helmet.name=СтальМПй шлеЌ -item.steel_plate.name=СтальМПй МагруЎМОк -item.steel_legs.name=СтальМые пПМПжО -item.steel_boots.name=СтальМые бПтОМкО -item.titanium_helmet.name=ТОтаМПвый шлеЌ -item.titanium_plate.name=ТОтаМПвый МагруЎМОк -item.titanium_legs.name=ТОтаМПвые пПМПжО -item.titanium_boots.name=ТОтаМПвые бПтОМкО -item.alloy_helmet.name=КлеЌ Оз прПЎвОМутПгП сплава -item.alloy_plate.name=НагруЎМОк Оз прПЎвОМутПгП сплава -item.alloy_legs.name=ППМПжО Оз прПЎвОМутПгП сплава -item.alloy_boots.name=БПтОМкО Оз прПЎвОМутПгП сплава -item.cmb_helmet.name=КлеЌ Оз сталО АльяМса -item.cmb_plate.name=НагруЎМОк Оз сталО АльяМса -item.cmb_legs.name=ППМПжО Оз сталО АльяМса -item.cmb_boots.name=БПтОМкО Оз сталО АльяМса -item.security_helmet.name=КлеЌ ПхраММОка -item.security_plate.name=НагруЎМОк ПхраММОка -item.security_legs.name=ППМПжО ПхраММОка -item.security_boots.name=БПтОМкО ПхраММОка -item.cobalt_helmet.name=КПбальтПвый шлеЌ -item.cobalt_plate.name=КПбальтПвый МагруЎМОк -item.cobalt_legs.name=КПбальтПвые пПМПжО -item.cobalt_boots.name=КПбальтПвые бПтОМкО -item.starmetal_helmet.name=КлеЌ Оз звёзЎМПгП Ќеталла -item.starmetal_plate.name=НагруЎМОк Оз звёзЎМПгП Ќеталла -item.starmetal_legs.name=ППМПжО Оз звёзЎМПгП Ќеталла -item.starmetal_boots.name=БПтОМкО Оз звёзЎМПгП Ќеталла -item.dnt_boots.name=ЎаеМайтрОевые бПтОМкО -item.dnt_legs.name=ЎОМейтрПМПвые пПМПжО -item.dnt_helmet.name=ЎОМПтрПМОЌу шлеЌ -item.dnt_plate.name=ЎОМейтрПЌы МагруЎМОк -item.dns_boots.name=БПтОМкО DNT-НаМПкПстюЌа -item.dns_legs.name=ППМПжО DNT-НаМПкПстюЌа -item.dns_helmet.name=КлеЌ DNT-НаМПкПстюЌа -item.dns_plate.name=НагруЎМОк DNT-НаМПкПстюЌа -item.zirconium_legs.name=ЊОркПМОевые штаМы -item.robes_boots.name=ППлевые бПтОМкО -item.robes_helmet.name=ППвсеЎМевМая тПлстПвка с капюшПМПЌ -item.robes_legs.name=ППвсеЎМевМые брюкО -item.robes_plate.name=ППвсеЎМевМая кПфта - -item.steel_sword.name=СтальМПй Ќеч -item.steel_pickaxe.name=СтальМая кОрка -item.steel_axe.name=СтальМПй тПпПр -item.steel_shovel.name=СтальМая лПпата -item.steel_hoe.name=СтальМая ЌПтыга -item.titanium_sword.name=ТОтаМПвый Ќеч -item.titanium_pickaxe.name=ТОтаМПвая кОрка -item.titanium_axe.name=ТОтаМПвый тПпПр -item.titanium_shovel.name=ТОтаМПвая лПпата -item.titanium_hoe.name=ТОтаМПвая ЌПтыга -item.alloy_sword.name=Меч Оз прПЎвОМутПгП сплава -item.alloy_pickaxe.name=КОрка Оз прПЎвОМутПгП сплава -item.alloy_axe.name=ТПпПр Оз прПЎвОМутПгП сплава -item.alloy_shovel.name=ЛПпата Оз прПЎвОМутПгП сплава -item.alloy_hoe.name=МПтыга Оз прПЎвОМутПгП сплава -item.cmb_sword.name=Меч Оз сталО АльяМса -item.cmb_pickaxe.name=КОрка Оз сталО АльяМса -item.cmb_axe.name=ТПпПр Оз сталО АльяМса -item.cmb_shovel.name=ЛПпата Оз сталО АльяМса -item.cmb_hoe.name=МПтыга Оз сталО АльяМса -item.elec_sword.name=ЭлектрПЎубОМка -item.elec_pickaxe.name=УЎарМый бур -item.elec_axe.name=ЭлектрПпОла -item.elec_shovel.name=СпОральМый бур -item.desh_sword.name=Меч Оз рабПчегП сплава -item.desh_pickaxe.name=КОрка Оз рабПчегП сплава -item.desh_axe.name=ТПпПр Оз рабПчегП сплава -item.desh_shovel.name=ЛПпата Оз рабПчегП сплава -item.desh_hoe.name=МПтыга Оз рабПчегП сплава -item.cobalt_sword.name=КПбальтПвый Ќеч -item.cobalt_pickaxe.name=КПбальтПвая кОрка -item.cobalt_axe.name=КПбальтПвый тПпПр -item.cobalt_shovel.name=КПбальтПвая лПпата -item.cobalt_hoe.name=КПбальтПвая ЌПтыга -item.cobalt_decorated_axe.name=ДекПрОрПваММый кПбальтПвый тПпПр -item.cobalt_decorated_hoe.name=ДекПрОрПваММая кПбальтПвая ЌПтыга -item.cobalt_decorated_pickaxe.name=ДекПрОрПваММая кПбальтПвая кОрка -item.cobalt_decorated_shovel.name=ДекПрОрПваММая кПбальтПвая лПпата -item.cobalt_decorated_sword.name=ДекПрОрПваММый кПбальтПвый Ќеч -item.starmetal_axe.name=ТПпПр Оз звёзЎМПгП Ќеталла -item.starmetal_hoe.name=МПтыга Оз звёзЎМПгП Ќеталла -item.starmetal_pickaxe.name=КОрка Оз звёзЎМПгП Ќеталла -item.starmetal_shovel.name=ЛПпата Оз звёзЎМПгП Ќеталла -item.starmetal_sword.name=Меч Оз звёзЎМПгП Ќеталла -item.centri_stick.name=ЊеМтрОфуга Ма палке -item.smashing_hammer.name=УбПйМый ЌПлПт -item.drax.name=Терра-бур -item.drax_mk2.name=УсОлеММый терра-бур -item.drax_mk3.name=КрабОЎОевый терра-бур -item.meteorite_sword.name=МетеПрОтПвый Ќеч -item.meteorite_sword_seared.name=МетеПрОтПвый Ќеч (ОпалеММый) -item.meteorite_sword_reforged.name=МетеПрОтПвый Ќеч (ПерекПваММый) -item.meteorite_sword_hardened.name=МетеПрОтПвый Ќеч (ЗакалёММый) -item.meteorite_sword_alloyed.name=МетеПрОтПвый Ќеч (ЛегОрПваММый) -item.meteorite_sword_machined.name=МетеПрОтПвый Ќеч (МехаМОческО ПбрабПтаММый) -item.meteorite_sword_treated.name=МетеПрОтПвый Ќеч (ОбрабПтаММый) -item.meteorite_sword_etched.name=МетеПрОтПвый Ќеч (ГравОрПваММый) -item.meteorite_sword_bred.name=МетеПрОтПвый Ќеч (РазвеЎёММый) -item.meteorite_sword_irradiated.name=МетеПрОтПвый Ќеч (ОблучёММый) -item.meteorite_sword_fused.name=МетеПрОтПвый Ќеч (СплавлеММый) -item.meteorite_sword_baleful.name=МетеПрОтПвый Ќеч (ЗлПвещОй) -item.crucible.name="ГПрМОлП Палача" -item.bismuth_pickaxe.name=ВОсЌутПвая кОрка -item.bismuth_axe.name=ВОсЌутПвый тПпПр -item.chlorophyte_axe.name=ХлПрПфОтПвый тПпПр -item.mese_axe.name=Месе тПпПр -item.volcanic_axe.name=ЛОтПй тПпПр - -tile.red_cable.name=ПрПвПЎ Оз красМПй ЌеЎО -tile.red_cable_paintable.name=ОкрашОваеЌый прПвПЎ Оз красМПй ЌеЎО -tile.red_cable_classic.name=ПрПвПЎ Оз красМПй ЌеЎО (Старый) -tile.red_connector.name=ЭлектрОческОй кПММектПр - -tile.block_meteor.name=БлПк ЌетеПрОта -tile.block_meteor_broken.name=РазбОтый блПк ЌетеПрОта -tile.block_meteor_cobble.name=МетеПрОтМый булыжМОк -tile.block_meteor_molten.name=ГПрячОй ЌетеПрОтМый булыжМОк -tile.block_meteor_treasure.name=БлПк ЌетеПрОтМых сПкрПвОщ -tile.meteor_polished.name=ППлОрПваММый ЌетеПрОтМый блПк -tile.meteor_brick.name=МетеПрОтМые кОрпОчО -tile.meteor_brick_mossy.name=ЗаЌшелые ЌетеПрОтМые кОрпОчО -tile.meteor_brick_cracked.name=ТресМувшОе ЌетеПрОтМые кОрпОчО -tile.meteor_brick_chiseled.name=ВысечеММые ЌетеПрОтМые кОрпОчО -tile.meteor_pillar.name=МетеПрОтМый стПлб -tile.meteor_spawner.name=СбПрщОк кОберкрабПв -tile.meteor_battery.name=ГеМератПр статОческПгП электрОчества Оз звезЎМПгП Ќеталла -tile.glyphid_base.name=БлПк улья глОфОЎПв -tile.glyphid_spawner.name=СпавМер улья глОфОЎПв -tile.ore_tektite_osmiridium.name=ПереЌешаММый с ПсЌОрОЎОеЌ ТектОт -tile.tektite.name=ТектОт - -item.cape_radiation.name=Плащ (РаЎОацОя) -item.cape_gasmask.name=Плащ (ПрПтОвПгаз) -item.cape_schrabidium.name=Плащ (КрабОЎОй) -item.cape_hidden.name=Скрытый плащ -item.card_aos.name=ПОкПвый туз -item.card_qos.name=КПрПлева пОк - -tile.machine_converter_he_rf.name=КПМвертер эМергОО HE в RF -tile.machine_converter_rf_he.name=КПМвертер эМергОО RF в HE -tile.machine_transformer.name=ТраМсфПрЌатПр 10k-20Гц -tile.machine_transformer_dnt.name=ТраМсфПрЌатПр ДНТ-20Гц -tile.machine_transformer_20.name=ТраМсфПрЌатПр 10k-1Гц -tile.machine_transformer_dnt_20.name=ТраМсфПрЌатПр ДНТ-1Гц - -tile.vent_chlorine.name=ХлПрМый клапаМ -tile.vent_cloud.name=ВПзЎушМый клапаМ с ПблакПЌ -tile.vent_pink_cloud.name=ВПзЎушМый клапаМ с рПзПвыЌ ПблакПЌ -tile.vent_chlorine_seal.name=ХлПрМый уплПтМОтель -tile.chlorine_gas.name=ХлПр -item.chlorine_pinwheel.name=ХлПрМая вертушка - -tile.absorber.name=ППглПтОтель раЎОацОО -tile.absorber_red.name=ПрПЎвОМутый пПглПтОтель раЎОацОО -tile.absorber_green.name=УсПвершеМствПваММый пПглПтОтель раЎОацОО -tile.absorber_pink.name=ЭлОтМый пПглПтОтель раЎОацОО -tile.decon.name=ОбеззаражОватель ОгрПка -tile.machine_amgen.name=ГеМератПр Ма фПМПвПй раЎОацОО -tile.machine_geo.name=ГеПтерЌальМый геМератПр -tile.machine_minirtg.name=РаЎОПОзПтПпМая ячейка - -item.schrabidium_hammer.name=КрабОЎОевый ЌПлПт -item.shimmer_sledge.name=ОтлОтая кувалЎа -item.shimmer_axe.name=ОтлОтый тПпПр -item.euphemium_stopper.name=ОграМОчОтель -item.matchstick.name=СпОчка -item.mech_key.name=БПльшПй серебряМый ключ -item.mech_key.desc=ОМ пульсОрует эМергОей. -item.balefire_and_steel.name=Жар-ПгМОвП -item.remote.name=СлПЌаММый пульт ЎОстаМцОПММПгП управлеМОя -item.diamond_gavel.name=АлЌазМый ЌПлПтПк -item.lead_gavel.name=СвОМцПвый ЌПлПтПк -item.wood_gavel.name=ДеревяММый ЌПлПтПк -item.mese_gavel.name=Месе ЌПлПтПк - -item.shimmer_head.name=Тяжелая гПлПвка ЌПлПта -item.shimmer_axe_head.name=ТяжелПе лезвОе тПпПра -item.shimmer_handle.name=УсОлеММая пПлОЌерМая ручка - -item.redcoil_capacitor.name=КрасМПкатушечМый кПМЎеМсатПр -item.euphemium_capacitor.name=ЭвфеЌОевый кПМЎеМсатПр -item.euphemium_capacitor.desc=ППзвПляет пассОвМП рассеОвать МакПплеММую пПлПжОтельМую эМергОю. -item.detonator.name=ДетПМатПр -item.detonator_multi.name=МультО-ЎетПМатПр -item.detonator_laser.name=ЛазерМый ЎетПМатПр -item.detonator_deadman.name=ДетПМатПр Ќертвеца -item.detonator_de.name=Взрывчатка Ќертвеца -item.crate_caller.name=ЗапрПсчОк пПставкО прОпасПв -item.bomb_caller.name=УстрПйствП Ўля ПбПзМачеМОя авОауЎара -item.meteor_remote.name=УстрПйствП Ўля вызПва ЌетеПрОтПв -item.launch_code.name=КПЎ запуска -item.launch_code_piece.name=КусПк кПЎа запуска -item.launch_key.name=Ключ запуска - -item.ingot_hes.name=ВысПкППбПгащеММый слОтПк шрабОЎОевПгП тПплОва -item.ingot_les.name=НОзкППбПгащеММый слОтПк шрабОЎОевПгП тПплОва -item.nugget_hes.name=ВысПкППбПгащеММый саЌПрПЎПк шрабОЎОевПгП тПплОва -item.nugget_les.name=НОзкППбПгащеММый саЌПрПЎПк шрабОЎОевПгП тПплОва - -item.pellet_schrabidium.name=ЧОстая шрабОЎОевая Ватцз-пеллета -item.pellet_hes.name=ВысПкППбПгащеММая шрабОЎОевая Ватцз-пеллета -item.pellet_mes.name=СреЎМеПбПгащеММая шрабОЎОевая Ватцз-пеллета -item.pellet_les.name=НОзкППбПгащеММая шрабОЎОевая Ватцз-пеллета -item.pellet_beryllium.name=БерОллОевая заЌеЎлОтельМая-пеллета -item.pellet_neptunium.name=НептуМОевая Ватцз-пеллета -item.pellet_lead.name=СвОМцПвая пеллета -item.pellet_advanced.name=УлучшОтель прПОзвПЎОтельМПстО Ватцз - +item.waste_mox.name=ОбеЎМеММПе МОКС-тПплОвП +item.waste_natural_uranium.name=ОбеЎМеММПе прОрПЎМПе ураМПвПе тПплОвП +item.waste_plate_mox.name=ОбеЎМёММая МОКС-тПплОвМая пластОМа +item.waste_plate_pu238be.name=ОбеЎМёММая плутПМОй-238-берОллевая тПплОвМая пластОМа +item.waste_plate_pu239.name=ОбеЎМёММая высПкППбПгащеММая плутПМОевая-239 тПплОвМая пластОМа +item.waste_plate_ra226be.name=ОбеЎМёММая раЎОй-226-берОллевая тПплОвМая пластОМа +item.waste_plate_sa326.name=ОбеЎМёММая высПкППбПгащеММая шрабОЎОй-326 тПплОвМая пластОМа +item.waste_plate_u233.name=ОбеЎМёММая высПкППбПгащеММая ураМ-233 тПплОвМая пластОМа +item.waste_plate_u235.name=ОбеЎМёММая высПкППбПгащеММая ураМ-235 тПплОвМая пластОМа +item.waste_plutonium.name=ОбеЎМеММПе плутПМОевПе тПплОвП +item.waste_schrabidium.name=ОбеЎМеММПе шрабОЎОевПе тПплОвП +item.waste_thorium.name=ОбеЎМеММПе тПрОевПе тПплОвП +item.waste_u235.name=ОбеЎМеММПе ураМ-235 тПплОвП +item.waste_u233.name=ОбеЎМеММПе ураМ-233 тПплОвП +item.waste_uranium.name=ОбеЎМеММПе ураМПвПе тПплОвП +item.waste_zfb_mox.name=ОбеЎМеММПе ЊТС МОКС-тПплОвП +item.watch.name=СлПЌаММые карЌаММые часы +item.watch.desc=МалеМькОе сОМОе карЌаММые часы.$На стекле есть МескПлькП трещОМ,$О МескПлькП ПскПлкПв Птсутствуют.$ПересталО тОкать в 2:34. item.watz_pellet.boron.name=ППглПщающая Ватцз-пеллета Оз бПра item.watz_pellet.du.name=ППглПщающая Ватцз-пеллета Оз ПбеЎМеММПгП ураМа item.watz_pellet.hes.name=Ватцз-пеллета Оз высПкППбПгащеММПгП шрабОЎОя @@ -5861,915 +4803,1523 @@ item.watz_pellet_depleted.nqd.name=Ватцз-пеллета Оз ПбПгаще item.watz_pellet_depleted.nqr.name=Ватцз-пеллета Оз МакваЎрОО (ОбеЎМеММая) item.watz_pellet_depleted.hen.name=Ватцз-пеллета Оз высПкППбПгащеММПгП МептуМОя (ОбеЎМеММая) item.watz_pellet_depleted.schrabidium.name=Ватцз-пеллета Оз чОстПгП шрабОЎОя (ОбеЎМеММая) - -item.titanium_filter.name=ТОтаМПвый фОльтр -item.deuterium_filter.name=ДейтерОевый фОльтр -item.catalytic_converter.name=КаталОтОческОй кПМвертер - -tile.mud_block.name=ТПксОчМые ПтхПЎы -fluid.mud_fluid=ТПксОчМые ПтхПЎы -tile.rad_lava_block.name=ВулкаМОческая лава -fluid.rad_lava_fluid=ВулкаМОческая лава -item.bucket_mud.name=ВеЎрП тПксОчМых ПтхПЎПв -tile.acid_block.name=КОслПта -fluid.acid_fluid=КОслПта -tile.schrabidic_block.name=КрабОЎОевая кОслПта -fluid.corium_fluid=КПрОуЌ -fluid.volcanic_lava_fluid=ВулкаМОческая лава -tile.volcanic_lava_block.name=ВулкаМОческая лава -item.bucket_acid.name=ВеЎрП кОслПты -tile.toxic_block.name=СтереПтОпМая зелёМая слОзь -fluid.toxic_fluid=СтереПтОпМая зелёМая слОзь -item.bucket_toxic.name=ВеЎрП стереПтОпМПй зелёМПй слОзО -item.bucket_schrabidic_acid.name=ВеЎрП шрабОЎОевПй кОслПты -item.bucket_sulfuric_acid.name=ВеЎрП серМПй кОслПты -item.tank_waste_0.name=КПМтейМер с ПтхПЎаЌО -item.tank_waste_1.name=КПМтейМер с ПтхПЎаЌО -item.tank_waste_2.name=КПМтейМер с ПтхПЎаЌО -item.tank_waste_3.name=КПМтейМер с ПтхПЎаЌО -item.tank_waste_4.name=КПМтейМер с ПтхПЎаЌО -item.tank_waste_5.name=КПМтейМер с ПтхПЎаЌО -item.tank_waste_6.name=КПМтейМер с ПтхПЎаЌО -item.tank_waste_7.name=КПМтейМер с ПтхПЎаЌО -item.tank_waste_8.name=КПМтейМер с ПтхПЎаЌО - -item.can_empty.name=Пустая баМка -item.mucho_mango.name=НапОтПк "AriZona Mucho Mango" -item.can_smart.name=ЭМергетОческОй МапОтПк “СЌарт” -item.can_creature.name=ЭМергетОческОй МапОтПк "СуществП" -item.can_redbomb.name=ЭМергетОческОй МапОтПк "КрасМая БПЌба" -item.can_mrsugar.name=БезалкПгПльМый МапОтПк 'ДПктПр Сахар' -item.can_overcharge.name=ПерезаряЎка Delirium XT -item.can_luna.name=ЧерМая Меза ЛуМа - ТеЌМая КПла -item.can_bepis.name=БепОс -item.can_breen.name=ЛОчМый резерв Др>БрОМа -item.bottle_empty.name=Пустая бутылка в фПрЌе бПЌбы -item.bottled_cloud.name=ОблакП в бутылке -item.bottle_nuka.name=Бутылка ЯЎер-кПлы -item.bottle_cherry.name=Бутылка ЯЎер-вОшМО -item.cbt_device.name=CBT-Ўевайс -item.bottle_quantum.name=Бутылка КваМтПвПй ЯЎер-кПлы -item.bottle_sparkle.name=Бутылка С~КПлы -item.bottle_rad.name=Бутылка С~КПлы РАД -item.bottle2_empty.name=Пустая Бутылка -item.bottle2_korl.name=КПрл -item.wild_p.name=ДОкОй П. -item.bottle2_fritz.name=ЀрОцз-КПла -item.bottle2_korl_special.name=Первый КПрл -item.bottle2_fritz_special.name=Первая ЀрОцз-КПла -item.bottle2_sunset.name=СаМсет СарсапарОлла -item.bdcl.name=BDCL -item.chocolate_milk.name=МПлПчМый шПкПлаЎ -item.cap_nuka.name=Крышка -item.cap_quantum.name=Крышка Пт КваМтПвПй ЯЎер-кПлы -item.cap_sparkle.name=Крышка Пт С~КПлы -item.cap_rad.name=Крышка Пт С~КПлы РАД -item.cap_korl.name=Крышка Пт БутылкО КПрла -item.cap_fritz.name=Крышка Пт ЀрОцз-КПлы -item.cap_sunset.name=Крышка Пт СаМсет СарсапарОллы -item.cap_star.name=Крышка Пт СаМсет СарсапарОллы сП звезЎПй -item.ring_pull.name=Ключ-кПльцП -item.ring_starmetal.name=§9КПльцП Оз ЗвёзЎМПгП Ќеталла§r -item.canned_beef.name=КПМсервОрПваММая гПвяЎОМа -item.canned_tuna.name=КПМсервОрПваММый туМец -item.canned_mystery.name=КПМсервы "ТайМа Мяса" -item.canned_pashtet.name=Паштет -item.canned_cheese.name=КПМсервОрПваММый плавлеМый сыр -item.canned_jizz.name=КПМсервОрПваММПе жеребцПвПе ЌПлПкП "ЀлОЌЀлэЌ ИМЎастрОз" -item.canned_milk.name=КПМсервОрПваММая сгущеМка -item.canned_ass.name=КПМсервОрПваММая заЎМОца -item.canned_pizza.name=КПМсервОрПваММая пОцца -item.canned_tube.name=ПОщевПй тюбОк кПсЌПМавта -item.canned_tomato.name=КПМсервОрПваММый тПЌатМый суп -item.canned_asbestos.name=КПМсервОрПваММый асбест -item.canned_bhole.name=КПМсервОрПваММая черМая Ўыра -item.canned_hotdogs.name=КПМсервОрПваММые хПт-ЎПгО -item.canned_leftovers.name=ПрПсрПчеММые кПМсервы -item.canned_yogurt.name=КПМсервОрПваММый йПгурт -item.canned_stew.name=КПМсервы "ТушеМые грОбы" -item.canned_chinese.name=КПМсервОрПваММая кОтайская еЎа -item.canned_oil.name=КПМсервОрПваММПе ЌПтПрМПе ЌаслП -item.canned_fist.name=КПМсервОрПваММый кулак -item.canned_spam.name=КПМсервы “СпаЌ” -item.canned_fried.name=КПМсервОрПваММая жареМая курОца -item.canned_napalm.name=КПМсервОрПваММый МапалЌ -item.canned_diesel.name=КПМсервОрПваММПе ЎОзельМПе тПплОвП -item.canned_kerosene.name=КПМсервОрПваММый керПсОМ -item.canned_recursion.name=КПМсервОрПваММая рекурсОя -item.canned_bark.name=КПМсервы вялеМПй сПсМПвПй кПры -item.spongebob_macaroni.name=СырМые ЌакарПММы "Губка БПб" -item.can_mug.name=MUG Root Beer -item.can_key.name=ВОМтПвПй ключ -item.nugget.name=КурОМый Маггетс -item.marshmallow.name=ЗефОр Ма палПчке -item.cheese.name=Сыр -item.cheese_quesadilla.name=СырМая кесаЎОлья -item.coffee.name=КПфе -item.coffee_radium.name=КПфе с раЎОеЌ -item.cigarette.name=СОгарета ЌаркО "FFI" -item.protection_charm.name=ТалОсЌаМ защОты -item.meteor_charm.name=ТалОсЌаМ Пт ЌетеПрОтПв - -item.canteen_13.name=Ѐляжка УбежОща 13 -item.canteen_vodka.name=СтОльМая фляга -item.canteen_fab.name=ППтрясающая вПЎка -item.fabsols_vodka.name=ВПЎка Fabsol'а -item.wild_p.name=СухПе вОскО "ДОкОй Пегас" - -item.bottle_opener.name=СПбствеММая саЌПЎельМая Пткрывашка Ўля бутылПк - -item.blades_aluminium.name=АлюЌОМОевые лезвОя ОзЌельчОтеля -item.blades_gold.name=ЗПлПтые лезвОя ОзЌельчОтеля -item.blades_iron.name=ЖелезМые лезвОя ОзЌельчОтеля -item.blades_steel.name=СтальМые лезвОя ОзЌельчОтеля -item.blades_titanium.name=ТОтаМПвые лезвОя ОзЌельчОтеля -item.blades_advanced_alloy.name=УсПвершеМствПваММые лезвОя ОзЌельчОтеля -item.blades_combine_steel.name=СтальМые лезвОя ОзЌельчОтеля АльяМса -item.blades_schrabidium.name=КрабОЎОевые лезвОя ОзЌельчОтеля -item.blades_desh.name=Деш-лезвОя ОзЌельчОтеля -item.sawblade.name=ЛезвОе пОлПраЌы -item.drillbit_desh.name=Деш-гПлПвка бура -item.drillbit_desh_diamond.name=Деш-гПлПвка бура (с алЌазМыЌ МапылеМОеЌ) -item.drillbit_hss.name=ГПлПвка бура Оз высПкПскПрПстМПй сталО -item.drillbit_hss_diamond.name=ГПлПвка бура Оз высПкПскПрПстМПй сталО (с алЌазМыЌ МапылеМОеЌ) -item.drillbit_steel.name=ГПлПвка бура Оз сталО -item.drillbit_steel_diamond.name=ГПлПвка бура Оз сталО (с алЌазМыЌ МапылеМОеЌ) -item.drillbit_ferro.name=ГПлПвка бура Оз феррПураМа -item.drillbit_ferro_diamond.name=ГПлПвка бура Оз феррПураМа (с алЌазМыЌ МапылеМОеЌ) -item.drillbit_tcalloy.name=ГПлПвка бура Оз техМецОевПй сталО -item.drillbit_tcalloy_diamond.name=ГПлПвка бура Оз техМецОевПй сталО (с алЌазМыЌ МапылеМОеЌ) - -item.stamp_stone_flat.name=ПлПскОй штаЌп (КаЌеМь) -item.stamp_stone_plate.name=КтаЌп пластОМы (КаЌеМь) -item.stamp_stone_wire.name=КтаЌп прПвПЎа (КаЌеМь) -item.stamp_stone_circuit.name=КтаЌп ЌОкрПсхеЌы (КаЌеМь) -item.stamp_iron_flat.name=ПлПскОй штаЌп (ЖелезП) -item.stamp_iron_plate.name=КтаЌп пластОМы (ЖелезП) -item.stamp_iron_wire.name=КтаЌп прПвПЎа (ЖелезП) -item.stamp_iron_circuit.name=КтаЌп ЌОкрПсхеЌы (ЖелезП) -item.stamp_steel_flat.name=ПлПскОй штаЌп (Сталь) -item.stamp_steel_plate.name=КтаЌп пластОМы (Сталь) -item.stamp_steel_wire.name=КтаЌп прПвПЎа (Сталь) -item.stamp_steel_circuit.name=КтаЌп ЌОкрПсхеЌы (Сталь) -item.stamp_titanium_flat.name=ПлПскОй штаЌп (ТОтаМ) -item.stamp_titanium_plate.name=КтаЌп пластОМы (ТОтаМ) -item.stamp_titanium_wire.name=КтаЌп прПвПЎа (ТОтаМ) -item.stamp_titanium_circuit.name=КтаЌп ЌОкрПсхеЌы (ТОтаМ) -item.stamp_obsidian_flat.name=ПлПскОй штаЌп (ОбсОЎОаМ) -item.stamp_obsidian_plate.name=КтаЌп пластОМы (ОбсОЎОаМ) -item.stamp_obsidian_wire.name=КтаЌп прПвПЎа (ОбсОЎОаМ) -item.stamp_obsidian_circuit.name=КтаЌп ЌОкрПсхеЌы (ОбсОЎОаМ) -item.stamp_schrabidium_flat.name=ПлПскОй штаЌп (КрабОЎООй) -item.stamp_schrabidium_plate.name=КтаЌп пластОМы (КрабОЎООй) -item.stamp_schrabidium_wire.name=КтаЌп прПвПЎа (КрабОЎООй) -item.stamp_schrabidium_circuit.name=КтаЌп ЌОкрПсхеЌы (КрабОЎООй) -item.stamp_desh_circuit.name=КтаЌп ЌОкрПсхеЌы (Деш) -item.stamp_desh_flat.name=ПлПскОй штаЌп (Деш) -item.stamp_desh_plate.name=КтаЌп пластОМы (Деш) -item.stamp_desh_wire.name=КтаЌп прПвПЎа (Деш) -item.stamp_357.name=КтаЌп пулО .357 МагМуЌ -item.stamp_44.name=КтаЌп пулО .44 МагМуЌ -item.stamp_9.name=КтаЌп ЌалПгП калОбра -item.stamp_50.name=КтаЌп бПльшПгП калОбра -item.stamp_desh_357.name=КтаЌп пулО .357 МагМуЌ (Деш) -item.stamp_desh_44.name=КтаЌп пулО .44 МагМуЌ (Деш) -item.stamp_desh_50.name=КтаЌп бПльшПгП калОбра (Деш) -item.stamp_desh_9.name=КтаЌп ЌалПгП калОбра (Деш) - -item.stamp_book.printing1.name=КтаЌп Ўля печатО (СтраМОца 1) -item.stamp_book.printing2.name=КтаЌп Ўля печатО (СтраМОца 2) -item.stamp_book.printing3.name=КтаЌп Ўля печатО (СтраМОца 3) -item.stamp_book.printing4.name=КтаЌп Ўля печатО (СтраМОца 4) -item.stamp_book.printing5.name=КтаЌп Ўля печатО (СтраМОца 5) -item.stamp_book.printing6.name=КтаЌп Ўля печатО (СтраМОца 6) -item.stamp_book.printing7.name=КтаЌп Ўля печатО (СтраМОца 7) -item.stamp_book.printing8.name=КтаЌп Ўля печатО (СтраМОца 8) - -item.part_lithium.name=КПрПбка лОтОевПй пылО -item.part_beryllium.name=КПрПбка берОллОевПй пылО -item.part_carbon.name=КПрПбка угПльМПй пылО -item.part_copper.name=КПрПбка ЌеЎМПй пылО -item.part_plutonium.name=КПрПбка плутПМОевПй пылО -item.part_generic.piston_electric.name=ЭлектрОческОй пПршеМь -item.part_generic.piston_hydraulic.name=ГОЎравлОческОй пПршеМь -item.part_generic.piston_pneumatic.name=ПМевЌатОческОй пПршеМь -item.part_generic.lde.name=ЭлеЌеМт ЌалПй плПтМПстО -item.part_generic.hde.name=ЭлеЌеМт пПвышеММПй прПчМПстО -item.particle_aelectron.name=Капсула с ППзОтрПМПЌ -item.particle_amat.name=Капсула с АМтОЌатерОей -item.particle_aproton.name=Капсула с АМтОпрПтПМПЌ -item.particle_aschrab.name=Капсула с АМтОшрабОЎОеЌ -item.particle_dark.name=Капсула с ТёЌМПй ЌатерОей -item.particle_empty.name=Пустая капсула -item.particle_higgs.name=Капсула с БПзПМПЌ ХОггса -item.particle_muon.name=Капсула с МюПМПЌ -item.particle_sparkticle.name=Капсула сП СпарктОклПЌ -item.particle_strange.name=Капсула сП СтраММыЌ кваркПЌ -item.particle_copper.name=Капсула с ОПМаЌО ЌеЎО -item.particle_lead.name=Капсула с ОПМаЌО свОМца -item.particle_hydrogen.name=Капсула с ОПМаЌО вПЎПрПЎа -item.particle_tachyon.name=Капсула с тахОПМПЌ -item.particle_lutece.name=КвазОчастОца ЛютецОя -item.particle_digamma.name=§cЧастОца ДОгаЌЌа§r - -item.rune_blank.name=Пустая каталОтОческая ЌатрОца -item.rune_isa.name=ОхлажЎающая каталОтОческая ЌатрОца -item.rune_dagaz.name=СбалаМсОрПваММая каталОтОческая ЌатрОца -item.rune_hagalaz.name=Грубая каталОтОческая ЌатрОца -item.rune_jera.name=МультОплОкатОвМая каталОтОческая ЌатрОца -item.rune_thurisaz.name=АЎЎОтОвМая каталОтОческая ЌатрОца - -item.ams_catalyst_blank.name=ПустПй реакцОПММый каталОзатПр -item.ams_catalyst_aluminium.name=АлюЌОМОевый реакцОПММый каталОзатПр -item.ams_catalyst_beryllium.name=БерОллОевый реакцОПММый каталОзатПр -item.ams_catalyst_caesium.name=ЊезОевый реакцОПММый каталОзатПр -item.ams_catalyst_cerium.name=ЊерОевый реакцОПММый каталОзатПр -item.ams_catalyst_cobalt.name=КПбальтПвый реакцОПММый каталОзатПр -item.ams_catalyst_copper.name=МеЎМый реакцОПММый каталОзатПр -item.ams_catalyst_euphemium.name=ЭвфеЌОевый реакцОПММый каталОзатПр -item.ams_catalyst_iron.name=ЖелезМый реакцОПММый каталОзатПр -item.ams_catalyst_lithium.name=ЛОтОевый реакцОПММый каталОзатПр -item.ams_catalyst_niobium.name=НОПбОевый реакцОПММый каталОзатПр -item.ams_catalyst_strontium.name=СтрПМцОевый реакцОПММый каталОзатПр -item.ams_catalyst_thorium.name=ТПрОевый реакцОПММый каталОзатПр -item.ams_catalyst_tungsten.name=ВПльфраЌПвый реакцОПММый каталОзатПр -item.ams_catalyst_schrabidium.name=КрабОЎОевый реакцОПММый каталОзатПр -item.ams_catalyst_dineutronium.name=ДОМейтрПМОевый реакцОПММый каталОзатПр -item.ams_focus_blank.name=ПустПй стабОлОзОрующОй фПкус -item.ams_focus_limiter.name=ОграМОчОтельМый стабОлОзОрующОй фПкус -item.ams_focus_limiter.desc=МаксОЌальМая прПОзвПЎОтельМПсть Ўля сЎержОвающегП пПля:$СтаМЎартМПе ПхлажЎеМОе, без бПМуса за эМергОю. -item.ams_focus_booster.name=УсОлОвающОй стабОлОзОрующОй фПкус -item.ams_focus_booster.desc=БПлее слабПе сЎержОвающее пПле О закачка эМергОО в яЎрП:$БПльше вырабПткО тепла, ЎПпПлМОтельМая эМергОя. -item.ams_muzzle.name=ЛучеОспускательМПе ЎулП -item.ams_muzzle.desc=...ПМ Оспускает штукПвОМу с эМергетОческОЌ лучПЌ. -item.ams_lens.name=ЛОМза СтабОлОзатПра -item.ams_core_sing.name=РезПМОрующая сОМгулярМПсть (АМС/РТС ЯЎрП) -item.ams_core_wormhole.name=КрПшечМая червПтПчОМа (АМС/РТС ЯЎрП) -item.ams_core_eyeofharmony.name=ОкП ГарЌПМОО (АМС/РТС ЯЎрП) -item.ams_core_thingy.name=КтукПвОМа (АМС/РТС ЯЎрП) -item.crystal_energy.name=ЭМергетОческОй крОсталл -item.pellet_coolant.name=ОхлажЎающОй кластер -item.thermo_element.name=ТерЌПэлектрОческОй элеЌеМт -item.limiter.name=ОграМОчОтель геМератПра -item.neutrino_lens.name=НейтрОММые лОМзы - -item.linker.name=ТелелОМкер -item.reactor_sensor.name=ДОстаМцОПММый ЎатчОк реактПра -item.oil_detector.name=ДетектПр МефтяМПгП резервуара -item.oil_detector.desc1=ЩелкМОте правПй кМПпкПй ЌышО, чтПбы прПскаМОрПвать Ма МалОчОе МефтО. -item.oil_detector.desc2=ДетектПр МайЎет тПлькП бПлее крупМые залежО. -item.oil_detector.bullseye=НефтяМПй резервуар пряЌП сМОзу! -item.oil_detector.detected=ППблОзПстО ПбМаружеМ резервуар МефтО. -item.oil_detector.noOil=НефтО Ме ПбМаружеМП. -item.pollution_detector.name=ДетектПр загрязМеМОя -item.geiger_counter.name=РучМПй счетчОк Гейгера -item.gas_tester.name=ГазПвый ЎатчОк -item.dosimeter.name=ДПзОЌетр -item.digamma_diagnostic.name=ДОагМПстОка ЎОгаЌЌы -tile.geiger.name=СчетчОк Гейгера -tile.glass_polonium.name=ППлПМОевПе стеклП -item.survey_scanner.name=СкаМер - -item.ore_density_scanner.name=СкаМер плПтМПстО беЎрПкПвПй руЎы -item.ore_density_scanner.excellent=ИзбытПк -item.ore_density_scanner.high=ВысПкОй -item.ore_density_scanner.low=НОзкОй -item.ore_density_scanner.moderate=СреЎМОй -item.ore_density_scanner.poor=БеЎМый -item.ore_density_scanner.veryhigh=ОчеМь высПкОй -item.ore_density_scanner.verypoor=ОчеМь беЎМый - -item.coltan_tool.name=КПлтасс -item.mirror_tool.name=ИМструЌеМт Ўля регулОрПвкО зеркал -item.mirror_tool.linked=ППзОцОя выравМОваМОя устаМПвлеМа! -item.mirror_tool.desc=ЩелкМОте правПй кМПпкПй ЌышО пП бПйлеру, чтПбы запПЌМОть егП пПлПжеМОе.$НажЌОте Ма зеркала, чтПбы пПверМуть Ох в стПрПМу бПйлера -item.rbmk_tool.name=УстрПйствП Ўля сПеЎОМеМОя кПМсПлО РБМК -item.rbmk_tool.desc=Shift+ПКМ пП РБМК чтПбы запПЌМОть егП пПзОцОю,$shift+ПКМ пП кПМсПлО чтПбы сПеЎОМОть! -item.rbmk_tool.linked=ППзОцОя устаМПвлеМа! -item.rbmk_tool.set=РБМК сПеЎОМёМ! -item.bismuth_tool.name=МагМОтМый экстрактПр -item.reacher.name=ВПльфраЌПвые хваталкО -item.power_net_tool.name=АМалОзатПр эМергПсетО -item.anchor_remote.name=УстрПйствП вызПва -item.acetylene_torch.name=АцетОлеМПвая сварПчМая гПрелка -item.blowtorch.name=ПаяльМая лаЌпа - -item.settings_tool.name=УстрПйствП МастрПйкО -copytool.filter=ЀОльтр -copytool.invertRedstone=ИМвертОрПваММый реЎстПуМ -copytool.invertFilter=ИМвертОрПваММый фОльтр -copytool.orientation=ОрОеМтацОя -copytool.pattern0=КрасМая стПрПМа -copytool.pattern1=ОраМжевая стПрПМа -copytool.pattern2=Желтая стПрПМа -copytool.pattern3=ЗелёМая стПрПМа -copytool.pattern4=СОМяя стПрПМа -copytool.pattern5=ЀОПлетПвая стПрПМа - -item.multitool_dig.name=СОлПвая перчатка (ДПбывающОй кПгПть) -item.multitool_silk.name=СОлПвая перчатка (КПгПть шёлкПвПгП касаМОя) -item.multitool_ext.name=СОлПвая перчатка (Извлекатель руЎы) -item.multitool_miner.name=СОлПвая перчатка (ДПбывающОй лазер) -item.multitool_hit.name=СОлПвая перчатка (Кулак) -item.multitool_beam.name=СОлПвая перчатка (Заппер) -item.multitool_sky.name=СОлПвая перчатка (НебесМый разлПЌ) -item.multitool_mega.name=СОлПвая Перчатка (СуперуЎар) -item.multitool_joule.name=СОлПвая Перчатка (ГОгаЎжПуль) -item.multitool_decon.name=СОлПвая Перчатка (ОбеззаражОватель) -item.rubber_gloves.name=ТПлстые резОМПвые перчаткО -item.ballistic_gauntlet.name=БаллОстОческая перчатка - -item.australium_iii.name=УвелОчОтель жОзМО Марк III -item.australium_iv.name=УвелОчОтель жОзМО Марк IV -item.australium_v.name=УвелОчОтель жОзМО Марк V -item.flask_infusion.shield.name=ЭлОксОр защОты - -item.weapon_saw.name=УбОйствП прО сПЎействОО врача item.weapon_bat.name=ЛюбОЌОца РОчарЎа item.weapon_bat_nail.name=КлОше item.weapon_golf_club.name=Клюшка русскПгП баМЎОта -item.weapon_pipe_rusty.name=ППправОтель пПвеЎеМОя item.weapon_pipe_lead.name=РучМПе управлеМОе -item.reer_graar.name=Рер Граар -item.stopsign.name=БПевПй тПпПр Оз зМака СТОП -item.sopsign.name=БПевПй тПпПр Оз зМака С ОП -item.chernobylsign.name=БПевПй тПпПр Оз ЧерМПбыльскПгП преЎупрежЎающегП зМака - -item.letter.name=Экспресс-пПчта -item.polaroid.name=ППларПОЎ -item.shackles.name=ОкПвы -item.glitch.name=Глюк -item.book_secret.name=3-596-50802-9 -item.book_of_.name=КМОга ВагПМПв -item.book_lemegeton.name=ЛеЌегетПМ -item.page_of_.page1.name=СтраМОца 1 -item.page_of_.page2.name=СтраМОца 2 -item.page_of_.page3.name=СтраМОца 3 -item.page_of_.page4.name=СтраМОца 4 -item.page_of_.page5.name=СтраМОца 5 -item.page_of_.page6.name=СтраМОца 6 -item.page_of_.page7.name=СтраМОца 7 -item.page_of_.page8.name=СтраМОца 8 -item.book_guide.name=РукПвПЎствП -item.burnt_bark.name=ОбПжжеММая кПра -item.burnt_bark.desc=КусПк кПры взПрваММПгП зПлПтПгП Ўуба. -item.loot_10.name=ЯщОк с запчастяЌО Пт Ракеты 10-гП разЌера -item.loot_15.name=ЯщОк с запчастяЌО Пт Ракеты 15-гП разЌера -item.loot_misc.name=ОбщОй ящОк с запчастяЌО Пт Ракеты -item.parts_legendary.name=ЛегеМЎарМые запчастО -item.crystal_horn.name=КрОсталльМый рПг -item.crystal_horn.desc=Не МастПящОй рПг. -item.crystal_horn.desc.P11=НастПящОй рПг. -item.crystal_charred.name=ОбуглеММый крОсталл -item.crystal_charred.desc=ВысПкПкачествеММый сОлОкат, слегка ПбПжжеММый. -item.crystal_charred.desc.P11=Также МастПящОй рПг. СтраММП, правЎа? -item.ingot_lanthanium.name=ППлустабОльМый слОтПк лаМтаМа -item.ingot_lanthanium.desc='ЛаМтаМуЌ' -item.ingot_lanthanium.desc.P11=ВППбще лаМтаМуЌ, МП лаЎМП. -item.ingot_actinium.name=СлОтПк актОМОя-227 - -tile.block_foam.name=ПеМа -tile.foam_layer.name=СлПй пеМы -tile.dummy_block.name=БлПк-пустышка -tile.dummy_port.name=БлПк-пустышка (РПзетка) - -item.chopper.name=ВертПлёт-ПхПтМОк -item.spawn_worm.name=Баллс-О-ТрПМ ПрайЌ -item.spawn_ufo.name=МарсОаМскОй кПрабль втПржеМОя - -item.undefined.name=Undefined -item.nothing.name=НОчегП -tile.crystal_virus.name=ТёЌМый крОсталл -tile.crystal_hardened.name=ЗакалеММый теЌМый крОсталл -tile.crystal_pulsar.name=ПульсОрующОй крОсталл -tile.taint.name=ППрча -tile.residue.name=ОблачМый ПсаЎПк -item.powder_cloud.name=ОблачМый ПсаЎПк -tile.cheater_virus.name=ОхлажЎёММый ЭвфеЌОй -tile.cheater_virus_seed.name=НестабОльМый блПк шрабОЎата эвфеЌОя -item.mysteryshovel.name=НепрПчМая лПпата -tile.ntm_dirt.name=Грязь -item.beta.name=БЕТА-ЀУНКЊИИ -item.memory.name=item.null.name - -item.acrylic.desc=Aka: Polymethyl methacrylate -item.acrylic.name=Acrylic Prism -item.ammo_308.name=7.62x51mm NATO Round -item.ammo_45.name=.45 ACP Round -item.ammo_50bmg.desc=§eКрупМПкалОберМый патрПМ 12.7ЌЌ$§eТакОЌО сбОвают саЌПлёты, стрелять$§eОЌО пП люЎяЌ – ЌерзкП. -item.ammo_556_chlorophyte.desc=§o.223 Remington -item.ammo_75bolt.desc=§eГОрПскПпОческОй брПМебПйМый$§eпатрПМ с таМЎеЌМыЌ заряЎПЌ -item.ammo_75bolt_he.desc=§eБрПМебПйМый патрПМ с$§eЌПщМыЌ заряЎПЌ взрывчаткО -item.ammo_75bolt_incendiary.desc=§eБрПМебПйМый разрывМПй патрПМ,$§eМапПлМеММый фПсфПрПвыЌ гелеЌ -item.ammo_folly.desc=§9+ ЗаряЎ МаправлеММПй реакцОО звёзЎМПгП Ќеталла -item.ammo_folly_du.desc=§9+ Howitzer mini nuke shell -item.ammo_folly_nuclear.desc=§9+ Howitzer 17kg Uranium-238 shell -item.ammo_grenade_lunatic.name=40mm Lunatic Grenade -item.ammo_luna_sniper.desc=§eHigh powered DU sabot penetrator sniper round$§eSo hot the projectile can reach escape velocity$§eVery specialized, very deadly, very accurate$ -item.ammo_luna_sniper.name=Lunatic Sniper Round -item.ammo_mirv_special.desc=§9+ 6 Low-yield mini nukes$§9+ 6 Mini nukes$§9+ 6 Tiny tots$§9+ 6 Balefire shells$§f* Sticky! -item.assembly_308.name=7.62x51mm Assembly -item.assembly_45.name=.45 ACP Assembly -item.assembly_luna_sniper.name=Lunatic Sniper Bullet Assembly -item.battery_gun.desc.1=§eOnly charges fast charge compatible items!$§eCharges up to: %sHE to the first compatible item on the hotbar -item.battery_gun.desc.2=§eSingle use only! -item.battery_gun_advanced.name=Advanced Fast Charger Cell -item.battery_gun_basic.name=Basic Fast Charger Cell -item.battery_gun_elite.name=Elite Fast Charger Cell -item.battery_gun_enhanced.name=Enhanced Fast Charger Cell -item.battery_gun_raw.name=Fast Charger Cell Shell -item.battery_sc_berkelium.name=Self-Charging Berkelium-249 Battery -item.betavoltaic_depleted.name=Depleted Betavoltaic Cell -item.betavoltaic_element.name=Betavoltaic Device -item.betavoltaic_strontium.name=Strontium-90 Betavoltaic Cell -item.betavoltaic_tritium.name=Tritium Betavoltaic Cell -item.billet_ac227be.name=Ac227Be Billet -item.billet_actinium.name=Actinium-227 Billet -item.billet_bk247.name=Berkelium-247 Billet -item.billet_bk248.name=Berkelium-248 Billet -item.billet_bk249.name=Berkelium-249 Billet -item.billet_cf252.name=Californium-252 Billet -item.billet_cf252be.name=Cf252Be Billet -item.billet_euphemium.name=Euphemium Billet -item.billet_sa327be.name=Sa327Be Billet -item.billet_tha.name=Activated Thorium Billet -item.billet_u234.name=Uranium-234 Billet -item.black_hole.desc=В цеМтре этПй штукО – сОМгулярМПсть.$ДПстатПчМП бПльшая, чтПбы Пставаться стабОльМПй.$ЭтП – Ме кПМец вселеММПй, МП ЌМе Пт этПгП лучше Ме стаМПвОтся. -item.bolt_staballoy.name=Staballoy Bolt -item.bottle_sr90.name=Бутылка с кПстебПльМыЌ сПкПЌ -item.can_breen.name=ЛОчМый резерв ÐŽÑ€.БрОМа -item.canteen_13.desc.11=Откат: 1 ЌОМута$ВПсстаМавлОвает 2.5 серЎца$ $Вы глПтаете глПтПк Оз вашегП верМПгП глПтка УбежОща ГЛОТОК -item.canteen_13.desc=Откат: 1 ЌОМута$ВПсстаМавлОвает 2.5 серЎца$ $Вы Ўелаете глПтПк Оз вашей верМПй фляжкО УбежОща 13
 -item.canteen_fab.desc=Откат: 2 ЌОМуты$Включает фаб-ЎвОгателО -item.canteen_vodka.desc.11=Откат: 3 ЌОМуты$ТПшМПта I Ма 10 секуМЎ$СОла III Ма 30 секуМЎ$ $Сейчас тебя разсерпуют О переЌПлПтят! -item.canteen_vodka.desc=Откат: 3 ЌОМуты$ТПшМПта I Ма 10 секуМЎ$СОла III Ма 30 секуМЎ$ $На запах – как аМтОсептОк, О Ма вкус – как аМтОсептОк. -item.catalyst_rare.name=РеЎкПзеЌельМый каталОзатПр -item.catalyst_ten.name=TеММесОМПвый каталОзатПр -item.cell_anti_schrabidium.desc=ВМОЌаМОе: взаОЌПЎействОе с ЌатерОей$сПзЎаст пПле ЀПлькваМга! -item.cell_antimatter.desc=ВМОЌаМОе: взаОЌПЎействОе с ЌатерОей$прОвеЎёт к аММОгОляцОО! -item.chronometer_player.name=Biological Chronometer -item.coil_warp.name=Antimass Gravity Manipulation Coil -item.coil_warp_coated.name=FTL Drive Coil with WCo Alloy and Desh Coating -item.core_plut_boosted.name=Plutonium Core with Schrabidium Booster -item.core_uran_boosted.name=Uranium Core with Schrabidium Booster -item.crystal_energy.desc=Densely packed energy powder.$Not edible. -item.custom_core.name=Nuclear Fission Core -item.detonator_de.desc=Взрывается прО паЎеМОО! -item.detonator_deadman.desc=Shift+ПКМ, чтПбы заЎать пПзОцОю,$выбрПсОте Ўля ЎетПМацОО! -item.eye.desc.11=§c"All humans, are afraid of monsters, the monsters they keep inside of them.$§cThey drove the species who are able to expose the monsters in them down the$§cpurgatory underground. There, in the purgatory deep inside the earth where$§cpeople are made, he was born. He hated, and loved, the monster that is$§cforming inside of him more than anyone else. Together with his second$§cmother, he climbed up to the world where the people who have driven him into$§cthe underground live. However, at that time, it was too late. This world$§cabove ground is waiting for its slow death, same as the people who are$§ccontinue to stay there. This world, this surface, is the realm of the dead.$§cAnd this species called humans, they have built for themselves a world of$§ctwilight. There, he met a ghost called 'father'. His second mother, who has$§ccome to this netherworld with him, remained there, while he returned to the$§cpurgatory where he was born. That place, the place where he lives, that$§cpurgatory. That should be the last world of humans."§r -item.eye.desc=It's looking at me despite being closed,$or rather, through me...$into my soul.$It makes me uncomfortable -item.eye.name=Eye? -item.ferrouranium_axe.name=Ferrouranium Axe -item.ferrouranium_boots.name=Ferrouranium Boots -item.ferrouranium_helmet.name=Ferrouranium Helmet -item.ferrouranium_hoe.name=Ferrouranium Hoe -item.ferrouranium_legs.name=Ferrouranium Leggings -item.ferrouranium_pickaxe.name=Ferrouranium Pickaxe -item.ferrouranium_plate.name=Ferrouranium Chestplate -item.ferrouranium_shovel.name=Ferrouranium Shovel -item.ferrouranium_sword.name=Ferrouranium Sword -item.filter_fiberglass.name=Bound Fiberglass Filter -item.five_htp.desc=УбОрает все DRX, СтабОльМПсть Ма 10 ЌОМут -item.fmn.desc=УбОрает все DRX бПлее 2,000mDRX -item.fragment_orichalcum.desc=Gem shard, retains its hardness and$resistance to pressure and heat, but$requires further refinement -item.fragment_orichalcum.name=§6Orichalcum Shard§r -item.fuse.desc=эта штука теперь практОческО беспПлезМа -item.gas_sarin.name=Sarin Gas Tank -item.gas_xenon.name=Xenon Gas Tank -item.gem_orichalcum.desc=High hardness and luster, provides shielding$against pressure and heat fronts -item.gem_orichalcum.name=§6Orichalcum Gem§r -item.goggles_drx.desc=Filters out DRX, moonlight, and other$psionic disruptions infiltrating$the visible light spectrum -item.goggles_drx.name=Psionic Disruption Protection Goggles -item.goggles_night_vision.name=Night Vision Goggles -item.grenade_if_bouncy.desc=§o"Boing!" -item.grenade_if_brimstone.desc=§o"Zoop!" -item.grenade_if_concussion.desc=§o"Oof ouch owie, my bones!" -item.grenade_if_generic.desc=§o"How do you like §r§7them§o apples?" -item.grenade_if_he.desc=§o"You better run, you better take cover!" -item.grenade_if_hopwire.desc=§o"All I ever wished for was a bike that didn't fall over." -item.grenade_if_impact.desc=§o"Tossable boom." -item.grenade_if_incendiary.desc=§o"Flaming wheel of destruction!" -item.grenade_if_mystery.desc=§o"It's a mystery!" -item.grenade_if_null.desc=§ojava.lang.NullPointerException -item.grenade_if_spark.desc.11=§o"31-31-31-31-31-31-31-31-31-31-31-31-31" -item.grenade_if_spark.desc=§o"We can't rewind, we've gone too far." -item.grenade_if_sticky.desc=§o"This one is the booger grenade." -item.grenade_if_toxic.desc=§o"TOXIC SHOCK" -item.grenade_kyiv.name=The Kyiv Special -item.grenade_lunatic.desc.11=§c§o"The Moon dams collapse, flooding you with Lunar light" -item.grenade_lunatic.desc=§o"Here, have some Xanax, you're not you under the influence of DRX." -item.grenade_lunatic.name=Lunatic Grenade -item.grenade_smart.desc="Why did it not blow up????"$§oIf it didn't blow up it means it worked. -item.grenade_stunning.desc=§o"Stop! Hammer time!" -item.grenade_stunning.name=Stun Grenade (BETA) -item.gun_benelli.name=Benelli Autoshotgun -item.gun_benelli_mod.name=Benelli Autoshotgun (Drum Mod) -item.gun_hlr.desc.0="§mDodge§r§7§o Graze this" -item.gun_hlr.desc.1="I'll show you where to shove those spellcard rules, miko." -item.gun_hlr.desc.2="An obstacle has been spotted. Proceeding with extermination." -item.gun_hlr.desc.3="Why must we stand on this impure ground?" -item.gun_hlr.name=Heavy Lunatic Rifle (BETA) -item.gun_kit_1.desc=Repairs all weapons in hotbar by 10% -item.gun_kit_2.desc=Repairs all weapons in hotbar by 50% -item.gun_llr.name=Light Lunatic Rifle -item.gun_lunatic.name=Lunatic Gun (BETA) -item.gun_lunatic.name=Lunatic Gun (BETA) -item.gun_lunatic_marksman.name=Lunatic Marksman Rifle (BETA) -item.gun_m60=M60 Machine Gun -item.gun_mlr.name=Lunatic Rifle -item.gun_moist_nugget.desc=A Mosin-Na...no wait, it's$just a moist nugget. -item.gun_mp40_ammo.name=Submachine Gun Round (DEPRECATED) -item.gun_twr.desc.0=§c"You can't dodge a bullet that's already hit" -item.gun_twr.desc.1="Where's the exit!?"$§c§l"Nowhere" -item.gun_twr.desc.2=§c"I'm not about to have a little fly like you get away" -item.gun_twr.desc.3=§c"Eclipse, eclipse, under the sky!$§cShatter into a million shards of light!" -item.gun_twr.desc.4=§c"One must fall before one must ascend!" -item.gun_twr.desc.5=§c"The entrance, and the exit, are an endless loop." -item.gun_twr.desc.6=§c"Loud, furious$§c"...and signifying nothing as it passes from this world." -item.gun_twr.name=Time Warp Rifle (PLACEHOLDER) -item.gun_uac_carbine.name=UAC Carbine -item.gun_uac_dmr.name=UAC DMR -item.gun_uac_lmg.name=UAC LMG -item.gun_uac_pistol.name=ПОстПлет UAC .45 -item.gun_uac_smg.name=UAC SMG -item.gun_detonator.name=ЛазерМый ЎетПМатПр -item.ingot_bk247.name=Berkelium-247 Ingot -item.ingot_bk248.name=Berkelium-248 Ingot -item.ingot_bk249.name=Berkelium-249 Ingot -item.ingot_cf249.name=Californium-249 Ingot -item.ingot_cf251.name=Californium-251 Ingot -item.ingot_cf252.name=Californium-252 Ingot -item.ingot_cm242.name=Curium-242 Ingot -item.ingot_cm243.name=Curium-243 Ingot -item.ingot_cm244.name=Curium-244 Ingot -item.ingot_cm245.name=Curium-245 Ingot -item.ingot_cm246.name=Curium-246 Ingot -item.ingot_cm247.name=Curium-247 Ingot -item.ingot_cm248.name=Curium-248 Ingot -item.ingot_cm250.name=Curium-250 Ingot -item.ingot_cn285.name=Coperinicium-285 Ingot -item.ingot_cn286.name=Coperinicium-286 Ingot -item.ingot_dineutronium_forged.name=§5Forged Dineutronium Ingot§r -item.ingot_du_dioxide.name=Uranium Dioxide Pellet -item.ingot_es254.name=Einsteinium-254 Ingot -item.ingot_md258.name=Mendelevium-258 Ingot -item.ingot_nbbe.name=Niobium-Beryllium Alloy Ingot -item.ingot_neodymium.name=Neodymium Ingot -item.ingot_niobium_alloy.name=Niobium Refractory Superalloy Ingot -item.ingot_orichalcum.desc=Very high density provides protection$against kinetic force and structural backbone -item.ingot_orichalcum.name=§6Orichalcum Ingot§r -item.ingot_orichalcum_small.desc=Solidified amalgamation, ready$to accept irradiation -item.ingot_orichalcum_small.name=§6Orichalcum Brick§r -item.ingot_orichalcum_small_irr.desc=Neutron irradiation transmutates the$amalgamation, allowing protection$against directed energy -item.ingot_orichalcum_small_irr.name=§6Activated Orichalcum Brick§r -item.ingot_staballoy.desc=Hehe, get it?$§o§nStab§7alloy, because it's an armor penetrator alloy? -item.ingot_staballoy.name=Staballoy Ingot -item.ingot_tha.name=Ingot of Activated Thorium -item.ingot_u234.name=Uranium-234 Ingot -item.ingot_w-co.name=Tungsten-Cobalt Alloy Ingot -item.jetpack_tank.desc=Fills worn jetpack with up to 1000mB of kerosene -item.journal_lunar.name=Lunar Defense Corp Blueprint Folder -item.lunar_kit.name=Lunar Kit -item.med_bag.desc=Full heal, regardless of max health$Removes negative effects -item.nugget_cf252.name=Californium-252 Nugget -item.nugget_cm248.name=Curium-248 Nugget -item.nugget_dineutronium.name=§5Dineutronium Nugget§r -item.nugget_tha.name=Nugget of Activated Thorium -item.nugget_u234.name=Uranium-234 Nugget -item.paa_filter.name=PaA - CMB Watz Filter -item.pack_fdd.name=10-Pack Box of Floppy Disks -item.part_einsteinium.name=Box of Einsteinium-254 Dust -item.particle_graviton.name=Graviton Capsule -item.pellet_antimatter.desc=Very heavy antimatter cluster.$Gets rid of black holes. -item.pellet_australium.name=Australium Watz Pellet -item.pellet_rtg_actinium.name=РИТЭГ-пеллета Оз актОМОя-227 -item.pellet_rtg_berkelium.name=РИТЭГ-пеллета Оз берклОя-248 -item.pellet_solinium.name=Solinum Watz Target Pellet -item.pellet_solinium_laced.name=Euphemium-Laced Solinium Watz Target Pellet -item.pellet_zirconium.name=Zirconium Reflector Pellet -item.pill_iodine.desc=Removes negative effects -item.pill_strontium.desc=Bone §mhurting§r§7 healing pill -item.pill_strontium.name=Strontium Pill -item.plate_armor_du.desc.0=Tier: %s -item.plate_armor_du.desc=Very heavy depleted Uranium armor plate$Originally made for tanks -item.plate_armor_du.name=Tank-Grade DU Armor Plating -item.plate_armor_orichalcum.desc=Standard Lunarian armor for Vijokas$Highly refined, highly pure -item.plate_armor_orichalcum.name=§6Orichalcum Armor Plate§r -item.plate_du_dioxide.name=Uranium Dioxide Compound Plate -item.plate_orichalcum.desc=Numerous forms combined together$to maintain structural integrity$and protection against multiple fronts -item.plate_orichalcum.name=§6Orichalcum Compound Plate§r -item.powder_acrylic.name=Acrylic Compound -item.powder_du_dioxide.name=Uranium Dioxide Powder -item.powder_es254.name=Einsteinium-254 Powder -item.powder_nbbe.name=Niobium-Beryllium Powder -item.powder_niobium_alloy.name=Niobium Refractory Superalloy Powder -item.powder_orichalcum_mix.desc=Blend of high strength elements and$amalgams ready for solidification -item.powder_orichalcum_mix.name=§6Orichalcum Blend§r -item.powder_pu239.name=Plutonium-239 Powder -item.powder_tennessine.desc=§lAAAAAAAAAAAA -item.powder_u235.name=Uranium-235 Powder -item.powder_u238.name=Uranium-238 Powder -item.quantum_clock.name=Quantum Clock (UNFINISHED) -item.radaway.desc=Removes 140 RAD -item.radaway_flush.desc=Removes 1000 RAD -item.radaway_strong.desc=Removes 350 RAD -item.radx.desc=Increases radiation resistance by 0.2 (37%) for 3 minutes -item.rbmk_fuel_ac227be.name=Ac227Be RBMK Neutron Source -item.rbmk_fuel_cf252be.name=Cf252Be RBMK Neutron Source -item.rbmk_fuel_sa327be.name=Sa327Be RBMK Neutron Source -item.rbmk_pellet_ac227be.name=Ac227Be Spent Neutron Source Pellet -item.rbmk_pellet_cf252be.name=Cf252Be Spent Neutron Source Pellet -item.rbmk_pellet_sa327be.name=Sa327Be Spent Neutron Source Pellet -item.record.nmj.desc=Valve - Nuclear Mission Jam/Something Secret Steers Us -item.robot_skeleton.name=Robotic Skeleton -item.rod_dual_tha.name=Activated Thorium Dual Rod -item.rod_dual_u234.name=Uranium-234 Dual Rod -item.rod_quad_tha.name=Activated Thorium Quad Rod -item.rod_quad_u234.name=Uranium-234 Quad Rod -item.rod_tha.name=Activated Thorium Rod -item.rod_u234.name=Uranium-234 Rod -item.saturnite_filter.name=Saturnite - Desh Watz Filter -item.screwdriver_chad.name=High-Grade Screwdriver -item.shield.0.name=Riot Shield -item.shield.1.name=Heavy Duty Shield -item.shield.2.name=Combat Shield -item.shield.3.name=Superheavy Combat Shield -item.shrimp.name=Shrimp -item.shrimp_atomic.name=Atomic Shrimp -item.shrimp_fry.desc=§oberigooo... -item.shrimp_fry.name=shrimp fry -item.silicon_lump.name=Lump of Unprocessed Silicon -item.spawn_robot.name=Heavy Duty Combat Droid "Dark Trooper" -item.stamp_desh_disc.name=Disc Stamp (Desh) -item.stamp_ferrouranium_circuit.name=Circuit Stamp (Ferrouranium) -item.stamp_ferrouranium_disc.name=Disc Stamp (Ferrouranium) -item.stamp_ferrouranium_flat.name=Flat Stamp (Ferrouranium) -item.stamp_ferrouranium_plate.name=Plate Stamp (Ferrouranium) -item.stamp_ferrouranium_wire.name=Wire Stamp (Ferrouranium) -item.stamp_iron_disc.name=Disc Stamp (Iron) -item.stamp_obsidian_disc.name=Disc Stamp (Obsidian) -item.stamp_schrabidium_disc.name=Disc Stamp (Schrabidium) -item.stamp_steel_disc.name=Disc Stamp (Steel) -item.stamp_stone_disc.name=Disc Stamp (Stone) -item.stamp_titanium_disc.name=Disc Stamp (Titanium) -item.storage_hdd.name=Hard Disk Drive -item.storage_hdd_broken.desc=That fancy looking SSD is starting to look real nice, isn't it? -item.storage_hdd_broken.name=Broken Hard Disk Drive -item.storage_hdd_dead.desc=The mechanical parts are damaged, data cannot be read or written, it can be repaired however -item.storage_hdd_dead.name=Dead Hard Disk Drive -item.storage_hdd_raw.desc=No, you can't use it as a pizza cutter -item.storage_hdd_raw.name=Hard Drive Platter -item.storage_magnetic_cassette.name=Cassette Tape -item.storage_magnetic_fdd.name=3.5" 1.44mb Floppy Disk -item.storage_magnetic_fdd_tainted.desc10=Some kind of compression used$Get development on a decompression algorithm -item.storage_magnetic_fdd_tainted.desc11=§kWho came first, God or man?$§kIf man, than he shall create God$§kHe who stare into the abyss,$§kshall see the abyss stare back at he$§kBut who truly came first? -item.storage_magnetic_fdd_tainted.desc12=ጀπ᜞ ΌηχαΜῆς Ξεός -item.storage_magnetic_fdd_tainted.desc13=DEVICE USES UNIDENTIFIED POWER SOURCE$FURTHER RESEARCH REQUIRED -item.storage_magnetic_fdd_tainted.desc14=TOP PRIORITY: DISPOSE -item.storage_magnetic_fdd_tainted.desc15=Request more researchers$from Omega-12 to work on this -item.storage_magnetic_fdd_tainted.desc16=TOP PRIORITY: DEVELOP -item.storage_magnetic_fdd_tainted.desc17=ϝ -item.storage_magnetic_fdd_tainted.desc18=§l4444 -item.storage_magnetic_fdd_tainted.desc19=The disc has a curious label: -item.storage_magnetic_fdd_tainted.desc1=MARKED FOR SECURE DISPOSAL -item.storage_magnetic_fdd_tainted.desc20=It also appears to have a custom housing, it is permanently set to write-protect mode -item.storage_magnetic_fdd_tainted.desc2=ACCESS COMPLETELY RESTRICTED -item.storage_magnetic_fdd_tainted.desc3=COMPRESSED USING PROPREITARY SOFTWARE$Serial is in archive -item.storage_magnetic_fdd_tainted.desc4=CLASSIFICATION LEVEL: TOP SECRET$CATEGORY: RESEARCH$STATUS: IN-DEVELOPMENT$PURPOSE: UNKNOWN -item.storage_magnetic_fdd_tainted.desc5=CLASSIFICATION LEVEL: TOP SECRET$CATEGORY: PERMANENT ARCHIVE$ACCESS DATE: NEVER$CONTENGENCY PROTOCOL: DESTROY -item.storage_magnetic_fdd_tainted.desc6=AUXILIARY DEVELOPMENT REQUIRED:$BIO-NEURAL PROCESSORS -item.storage_magnetic_fdd_tainted.desc7=EST. COST: §mINDETERMINATE$§nTOO HIGH -item.storage_magnetic_fdd_tainted.desc8=CATEGORY: BLUEPRINT$Unknown design for unknown purpose -item.storage_magnetic_fdd_tainted.desc9=REQUIRED DIMENSIONS: INDETERMINATE -item.storage_magnetic_fdd_tainted.name=Peculiar Floppy Disk -item.storage_magnetic_r_to_r.name=Reel to Reel Tape -item.storage_magnetic_r_to_r_broken.desc=Should've seen that one coming -item.storage_magnetic_r_to_r_broken.name=Broken Reel to Reel Tape -item.storage_magnetic_raw.desc=The basis of all magnetic storage mediums, doesn't work too well as actual tape -item.storage_magnetic_raw.name=Magnetic Tape -item.storage_magnetic_raw_disc.desc=It will need a housing -item.storage_magnetic_raw_disc.name=Magnetic Disk -item.storage_magnetic_raw_reel.desc=A single one won't do you much good... or will it? -item.storage_magnetic_raw_reel.name=Reel of Magnetic Tape -item.storage_optical_bd.name=Blu-Ray Disc -item.storage_optical_cd.name=Compact Disc -item.storage_optical_dvd.name=Digital Versatile Disc -item.storage_optical_raw.desc=Clearer than glass -item.storage_optical_raw.name=Raw Optical Disc -item.storage_ssd.name=Solid State Drive -item.storage_ssd_raw_tier_1.desc=Upgradable -item.storage_ssd_raw_tier_1.name=Raw Flash Storage Device -item.storage_usb.name=Universal Serial Bus Flash Drive -item.syringe_antidote.desc=Removes all potion effects -item.syringe_awesome.desc=Every good effect for 50 seconds -item.syringe_metal_medx.desc=Resistance III for 4 minutes -item.syringe_metal_psycho.desc=Resistance I for 2 minutes$Strength I for 2 minutes -item.syringe_metal_stimpak.desc=Heals 2.5 hearts -item.syringe_metal_super.desc=Heals 25 hearts$Slowness I for 10 seconds -item.syringe_poison.desc=Deadly -item.syringe_taint.desc=Tainted I for 60 seconds$Nausea I for 5 seconds$Cloud damage + taint = tainted heart effect -item.tank_hydrogen.name=Hydrogen Reserve Tank -item.tank_hydrogen_large.name=Hydrogen Fuel Tank -item.test_nuke_tier1_bullet.name=Uranium-235 Projectile (Tier 1) -item.test_nuke_tier1_target.name=Subcritical Uranium-235 Target (Tier 1) -item.thruster_dfc.desc=Utilizes a compact Dark Fusion Core to gain$enough energy to approach infinity -item.thruster_dfc.name=Dark Fusion Space Drive -item.thruster_nuclear.desc=Powered by compact low-power nuclear reactor$to superheat hydrogen into a plasma$for subluminal space travel -item.thruster_nuclear_adv.desc=Powered by high-power nuclear reactor$to superheat hydrogen into a plasma$for subluminal space travel -item.thruster_nuclear_adv.name=LV-N High-Power Nuclear Rocket Engine -item.thruster_nuclear_liq.desc=Uses high-power liquid fuel reactor for$higher efficiency fuel consumption and$heat production -item.thruster_nuclear_liq.name=LV-N Liquid Fueled Nuclear Rocket Engine -item.thruster_warp.desc=Uses antimass coils to manipulate space-time$to allow for superluminal speed$Works better when has direct line of sight$with another nacelle -item.thruster_warp.name=FTL Drive Nacelle -item.upgrade_clock_1.name=Atomic Clock Accuracy Upgrade Mk.I -item.upgrade_clock_2.name=Atomic Clock Accuracy Upgrade Mk.II -item.upgrade_clock_3.name=Atomic Clock Accuracy Upgrade Mk.III -item.upgrade_clock_4.name=Atomic Clock Quantum Accuracy Upgrade -item.wafer_diamond.name=Diamond Semiconductor Wafer -item.wafer_gold.name=Gold Semiconductor Wafer -item.wafer_lapis.name=Lapis Lazuli Semiconductor Wafer -item.wafer_silicon.name=Silicon Semiconductor Wafer -item.wafer_spark.name=Spark Semiconductor Wafer -item.warhead_biological.name=Biological Warhead -item.warhead_chemical.name=Chemical Warhead -item.warhead_fusion.name=Pure Fusion Warhead -item.warhead_gravimetric.name=Gravimetric Warhead -item.wire_glass.name=Fiber Optic Wire -item.wire_glass.name=Optical Fiber -item.wire_glass_insulated.name=Insulated Optical Fiber +item.weapon_pipe_rusty.name=ППправОтель пПвеЎеМОя +item.weapon_saw.name=УбОйствП прО сПЎействОО врача +item.weaponized_starblaster_cell.name=§cСЌПМтОрПваММая эМергетОческая ячейка ЗвезЎМПгП бластера§r +item.wd40.name=VT-40 +item.wild_p.name=СухПе вОскО "ДОкОй Пегас" +item.wings_limp.name=ХрПЌые крылья +item.wings_murk.name=МрачМые крылья +item.wire_advanced_alloy.name=СверхпрПвПЎМОк +item.wire_aluminium.name=АлюЌОМОевый прПвПЎ +item.wire_copper.name=МеЎМый прПвПЎ +item.wire_dense.name=ПлПтМый прПвПЎ Оз %s +item.wire_fine.name=ПрПвПЎ Оз %s +item.wire_gold.name=ЗПлПтПй прПвПЎ +item.wire_magnetized_tungsten.name=4000K ВысПкПтеЌпературМый прПвПЎМОк +item.wire_red_copper.name=ПрПвПЎ Оз красМПй ЌеЎО +item.wire_schrabidium.name=КрабОЎОевый прПвПЎ +item.wire_tungsten.name=ВПльфраЌПвый прПвПЎ +item.wiring_red_copper.name=МПтПк прПвПЎа +item.wood_gavel.name=ДеревяММый ЌПлПтПк +item.wrench.name=ГазПвый ключ +item.wrench_archineer.name=ГаечМый ключ ОМжеМера +item.wrench_flipped.name=ЛезвОе Ма гаечМПЌ ключе +item.xanax.name=Препарат "НАКСА" прПтОв ЎОгаЌЌы item.xanax.desc=СМОЌает 500mDRX -potion.hbm_fragile=Fragility -potion.hbm_hollow=Hollow -potion.hbm_paralysis=Paralysis -potion.hbm_perforated=Perforated -potion.hbm_unconscious=Subconscious Mind +item.zirconium_legs.name=ЊОркПМОевые штаМы -singGen.isRunning.false=Idle -singGen.isRunning.true=Active +itemGroup.tabBlocks=РуЎы О блПкО NTM +itemGroup.tabConsumable=РасхПЎМые ЌатерОалы О сМаряжеМОе NTM +itemGroup.tabControl=ТПплОвП О элеЌеМты ЌехаМОзЌПв NTM +itemGroup.tabMachine=МехаМОзЌы NTM +itemGroup.tabMissile=Ракеты О спутМОкО NTM +itemGroup.tabNuke=БПЌбы NTM +itemGroup.tabParts=Ресурсы О ЎеталО NTM +itemGroup.tabTemplate=КаблПМы NTM +itemGroup.tabTest=ТестПвая вклаЎка NTM +itemGroup.tabWeapon=ОружОе О турелО NTM -storage.desc.con.capacity1=- Pitiful storage capacity -storage.desc.con.exposed=- Exposed to the elements -storage.desc.con.fragile=- Fragile -storage.desc.con.magnet=- Easily wiped by magnets -storage.desc.con.mechanical=- Prone to mechanical failure -storage.desc.con.name=- Dumb name -storage.desc.con.speed1=- Pitiful r/w speed -storage.desc.neu.flash=* Flash Medium -storage.desc.neu.magnetic=* Magnetic medium -storage.desc.neu.mechanical=* Mechanical parts -storage.desc.neu.na=Unfinished storage medium type -storage.desc.neu.optical=* Optical medium -storage.desc.pro.capacity1=+ Very good capacity -storage.desc.pro.cheap_very=+ Extremely cheap -storage.desc.pro.compact=+ Very compact -storage.desc.pro.lifespan1=+ Excellent lifespan -storage.desc.pro.lifespan2=+ Good lifespan -storage.desc.pro.speed1=+ Decent r/w speed -tile.atomic_clock.name=Atomic Clock -tile.balefire.name=Balefire -tile.block_circuit_tier_1.name=Basic Supercomputer Calculation Matrix -tile.block_circuit_tier_2.name=Enhanced Supercomputer Calculation Matrix -tile.block_circuit_tier_3.name=Advanced Supercomputer Calculation Matrix -tile.block_circuit_tier_4.name=Overclocked Supercomputer Calculation Matrix -tile.block_circuit_tier_5.name=High Performance Supercomputer Calculation Matrix -tile.block_circuit_tier_6.name=Spark Supercomputer Calculation Matrix -tile.block_electronium.name=§bBlock of Electronium§r -tile.block_ferrouranium.name=Reinforced Block of Ferrouranium -tile.block_polymer.name=БлПк пПлОЌера +pa.idle=ОжОЎаМОе +pa.idle.desc=ОжОЎаМОе +pa.running=ЗапущеМ +pa.running.desc=ЗапущеМ +pa.success=ЗавершеМП +pa.success.desc=ЗавершеМП +pa.pause_unloaded=ПрОПстаМПвлеМ +pa.pause_unloaded.desc=ЧастОца вПшла$в МезагружеММый чаМк. ОперацОя$была прОПстаМПвлеМа$ЎП тех пПр пПка частОца О ОстПчМОк частОц$Ме буЎут загружеМы. +#The particle has entered an$unloaded chunk. The operation has$been suspended, until both the$particle and the particle source$are loaded. +pa.crash_defocus=РасфПкус! +pa.crash_defocus.desc=ЧастОца пПтеряла фПкус.$УбеЎОтесь чтП ускПрОтель ОЌеет ЎПстатПчМПе кПлОчествП кваЎрупПльМых ЌагМОтПв. +pa.crash_derail=СхПЎ с рельсПв! +pa.crash_derail.desc=ЧастОца вышла за преЎелы ускПрОтеля.$УбеЎОтесь чтП МОкакОе частО Ме Птсутствуют,$О чтП ЎОпПлО МастрПеМы правОльМП. +pa.crash_cannot_enter=ОтклПМеМП! +pa.crash_cannot_enter.desc=ЧастОца пПпыталась вПйтО$в часть ускПрОтеля, МП Ме сЌПгла.$УбеЎОтесь, чтП все частО правОльМП ПрОеМтОрПваМы. +pa.crash_nocool=Отсутствует ПхлажЎеМОе! +pa.crash_nocool.desc=ЧастОца вПшла в МеПхлажЎаеЌую$часть ускПрОтеля. УбеЎОтесь, чтП$все ПхлажЎаеЌые частО пПЎключеМы$О запПлМеМы хПлПЎМыЌ перфтПрПЌетОлПЌ. +pa.crash_nopower=Отсутствует пОтаМОе! +pa.crash_nopower.desc=ЧастОца вПшла в МезапОтаММую$часть ускПрОтеля. УбеЎОтесь, чтП все частО$пПлучают эМергОю, О чтП$пПлучаеЌПй эМергОО ЎПстатПчМП. +pa.crash_nocoil=Отсутствуют катушкО! +pa.crash_nocoil.desc=ЧастОца вПшла в ЎОпПль$ОлО кваЎрупПль гЎе Птсутствуют катушкО.$УстаМПвОте катушкО Ўля кПрректМПй рабПты этПй частО. +pa.crash_overspeed=ПревышеМОе скПрПстО! +pa.crash_overspeed.desc=ЧастОца вПшла в ЎОпПль$ОлО кваЎрупПль, кПгЎа её скПрПсть ЎПстОгла$лОЌОта катушкО. УстаМПвОте катушкО$бПлее высПкПгП урПвМя ОлО МастрПйте ЎОпПлО$Ма бПлее раММОй выхПЎ частОцы Оз кПльца ускПрОтеля. +pa.crash_norecipe=Нет рецепта! +pa.crash_norecipe.desc=ЧастОца вПшла в ЎетектПр$с МекПрректМыЌО кПЌпПМеМтаЌО рецепта.$УбеЎОтесь, чтП кПЌпПМеМты в ОстПчМОке частОц$сППтветствуют существующеЌу рецепту. +pa.crash_underspeed=НеЎПстатПчМая скПрПсть! +pa.crash_underspeed.desc=ЧастОца вПшла в ЎетектПр$с МеЎПстатПчМПй скПрПстью, чтПбы выпПлМОть$текущОй рецепт. УбеЎОтесь,$чтП ускПрОтель кПрректМП МастрПеМ Ўля этПгП рецепта. + +potion.hbm_bang=! ! ! +potion.hbm_death=АстПльфПфОкацОя +potion.hbm_lead=ОтравлеМОе свОМцПЌ +potion.hbm_mutation=ЗаражёММПе пПрчей серЎце +potion.hbm_phosphorus=ЀПсфПрМые ПжПгО +potion.hbm_potionsickness=ППслезельевая бПлезМь +potion.hbm_radaway=АМтОраЎОМ +potion.hbm_radiation=ИзлучеМОе +potion.hbm_radx=РаЎ-X +potion.hbm_stability=СтабОльМПсть +potion.hbm_taint=ППрча +potion.hbm_telekinesis=! ! ! + +radar.clearMap=ОчОстОть карту +radar.detectMissiles=ОбМаружеМОе ракет +radar.detectPlayers=ОбМаружеМОе ОгрПкПв +radar.detectShells=ОбМаружеМОе сМаряЎПв +radar.redMode=РежОЌ красМПгП каЌМя$ВключёМ: СОгМал реЎстПуМа базОруется Ма ЎальМПстО$ВыключеМ: СОгМал реЎстПуМа базОруется Ма урПвМе +radar.showMap=ППказать карту +radar.smartMode=УЌМый режОЌ$ВыхПЎ реЎстПуМа ОгМПрОрует вПсхПЎящОе ракеты +radar.toggleGui=ПереключОть ОМтерфейс + +radar.target.abm=АМтОбаллОстОческая ракета +radar.target.custom10=Ракета 10 разЌера +radar.target.custom1015=Ракета 10/15 разЌера +radar.target.custom15=Ракета 15 разЌера +radar.target.custom1520=Ракета 15/20 разЌера +radar.target.custom20=Ракета 20 разЌера +radar.target.doomsday=Ракета суЎМПгП ЎМя +radar.target.shuttle=КПсЌОческОй шаттл Reliant Robin +radar.target.tier0=Ракета 0-гП урПвМя +radar.target.tier1=Ракета 1-гП урПвМя +radar.target.tier2=Ракета 2-гП урПвМя +radar.target.tier3=Ракета 3-гП урПвМя +radar.target.tier4=Ракета 4-гП урПвМя + +rbmk.heat=ТеЌпература кПЌпПМеМта: %s +rbmk.boiler.water=ВПЎа: %s / %s +rbmk.boiler.steam=Пар: %s / %s +rbmk.boiler.type=СжатОе: %s +rbmk.console.assign=НазМачОть стержМО к экраМу #%s +rbmk.console.none=Выкл. +rbmk.console.col_temp=СреЎМяя теЌпература стержМя +rbmk.console.rod_extraction=СреЎМее ОзвлечеМОе регулОрующОх стержМей +rbmk.console.fuel_depletion=СреЎМее тПплОвМПе ПбеЎМеМОе +rbmk.console.fuel_poison=СреЎМее ксеМПМПвПе ПтравлеМОе +rbmk.console.fuel_temp=СреЎМяя теЌпература тПплОва +rbmk.control.level=%s +rbmk.control.red=§cКрасМая группа +rbmk.control.yellow=§eЖёлтая группа +rbmk.control.green=§aЗелёМая группа +rbmk.control.blue=§1СОМяя группа +rbmk.control.purple=§5ЀОПлетПвая группа +rbmk.moderated=ЗаЌеЎлеММП +rbmk.rod.depletion=ОбеЎМеМОе: %s +rbmk.rod.xenon=КсеМПМПвПе ПтравлеМОе: %s +rbmk.rod.coreTemp=ТеЌпература стержМя: %s +rbmk.rod.skinTemp=ТеЌпература ПбПлПчкО стержМя: %s / %s +rbmk.screen.core=ЯЎрП: %s +rbmk.screen.depletion=ИстПщ: %s +rbmk.screen.rod=Управ: %s +rbmk.screen.temp=ТеЌп: %s +rbmk.screen.xenon=КсеМПМ: %s + +shape.barrelHeavy=Тяжелый ствПл +shape.barrelLight=ЛёгкОй ствПл +shape.billet=ЗагПтПвка +shape.blade=ЛПпасть +shape.blades=ЛезвОя ОзЌельчОтеля +shape.block=БлПк +shape.c9=ГОльза ЌалПгП калОбра +shape.c50=ГОльза бПльшПгП калОбра +shape.dust=ППрПшПк +shape.dusttiny=Кучка пылО +shape.grip=РукПятка +shape.gunMechanism=ОружейМый ЌехаМОзЌ +shape.hull_big=Big Shell +shape.hull_small=Small Shell +shape.ingot=СлОтПк +shape.nugget=СаЌПрПЎПк +shape.quantum=КваМта +shape.quart=Четверть блПка +shape.receiverHeavy=Тяжелая ствПльМая кПрПбка +shape.receiverLight=Лёгкая ствПльМая кПрПбка +shape.ntmpipe=Труба +shape.plate=ПластОМа +shape.plateTriple=ЛОтая пластОМа +shape.shell=ОбПлПчка +shape.stamp=КтаЌп Ўля пресса +shape.stock=ПрОклаЎ +shape.wireFine=ПрПвПЎа +shape.wireDense=ПлПтМый прПвПЎ +shape.wiresDense=ПлПтМые прПвПЎа + +soundCategory.ntmMachines=МехаМОзЌы NTM + +stat.ntmBullets=СЎелаМП выстрелПв +stat.ntmLegendary=СПзЎаМП легеМЎарМых преЎЌетПв +stat.ntmMines=ППЎрывПв Ма ЌОМах + +tile.absorber.name=ППглПтОтель раЎОацОО +tile.absorber_green.name=УсПвершеМствПваММый пПглПтОтель раЎОацОО +tile.absorber_pink.name=ЭлОтМый пПглПтОтель раЎОацОО +tile.absorber_red.name=ПрПЎвОМутый пПглПтОтель раЎОацОО +tile.acid_block.name=КОслПта +tile.ams_base.name=ОсМПваМОе АМС [ДекПр] +tile.ams_emitter.name=Излучатель АМС [ДекПр] +tile.ams_limiter.name=СтабОлОзатПр АМС [ДекПр] +tile.ancient_scrap.name=ДревМОе ПблПЌкО +tile.anvil_arsenic_bronze.name=НакПвальМя Оз ЌышьякПвПй брПМзы +tile.anvil_bismuth.name=ВОсЌутПвая МакПвальМя +tile.anvil_bismuth_bronze.name=НакПвальМя Оз вОсЌутПвПй брПМзы +tile.anvil_desh.name=Деш-МакПвальМя +tile.anvil_dnt.name=ДОМейтрПМОевая МакПвальМя +tile.anvil_ferrouranium.name=ЀеррПураМОевая МакПвальМя +tile.anvil_iron.name=ЖелезМая МакПвальМя +tile.anvil_lead.name=СвОМцПвая МакПвальМя +tile.anvil_meteorite.name=МетеПрОтПвая МакПвальМя +tile.anvil_murky.name=МрачМая МакПвальМя +tile.anvil_osmiridium.name=ОсЌОрОЎОевая МакПвальМя +tile.anvil_saturnite.name=СатурМОтПвая МакПвальМя +tile.anvil_schrabidate.name=НакПвальМя Оз шрабОЎата железа +tile.anvil_starmetal.name=НакПвальМя Оз звёзЎМПгП Ќеталла +tile.anvil_steel.name=СтальМая МакПвальМя +tile.ash_digamma.name=Пепел +tile.asphalt.name=Асфальт +tile.asphalt_stairs.name=СтупеМькО Оз асфальта +tile.asphalt_light.name=АсфальтОрПваММый светящОйся каЌеМь +tile.barbed_wire.name=КПлючая прПвПлПка +tile.barbed_wire_acid.name=КОслПтМая кПлючая прПвПлПка +tile.barbed_wire_fire.name=Пылающая кПлючая прПвПлПка +tile.barbed_wire_poison.name=ОтравлеММая кПлючая прПвПлПка +tile.barbed_wire_ultradeath.name=РаЎОПактОвМая кПлючая прПвПлПка +tile.barbed_wire_wither.name=Иссушающая кПлючая прПвПлПка +tile.barrel_antimatter.name=МагМОтМый кПМтейМер Ўля аМтОЌатерОО +tile.barrel_corroded.name=ПрПржавевшая бПчка +tile.barrel_iron.name=ЖелезМая бПчка +tile.barrel_plastic.name=БезПпасМый бПчПМПк™ +tile.barrel_steel.name=СтальМая бПчка +tile.barrel_tcalloy.name=БПчка Оз техМецОевПй сталО +tile.barricade.name=МешкО с пескПЌ +tile.basalt.name=Базальт +tile.basalt_brick.name=БазальтПвые кОрпОчО +tile.basalt_polished.name=ППлОрПваММый базальт +tile.basalt_smooth.name=ГлаЎкОй базальт +tile.basalt_tiles.name=БазальтПвая плОтка +tile.blast_door.name=РазЎвОжМые ЎверО +tile.block_actinium.name=БлПк актОМОя +tile.block_advanced_alloy.name=БлПк прПЎвОМутПгП сплава +tile.block_aluminium.name=АлюЌОМОевый блПк +tile.block_asbestos.name=Асбест +tile.block_australium.name=АвстралОевый блПк tile.block_bakelite.name=БлПк бакелОта -tile.block_rubber.name=БлПк резОМы +tile.block_beryllium.name=БерОллОевый блПк +tile.block_bismuth.name=БлПк вОсЌута +tile.block_boron.name=БлПк бПра +tile.block_c4.name=БлПк C-4 +tile.block_cadmium.name=КаЎЌОевый блПк +tile.block_cap_fritz.name=БлПк крышек Пт ЀрОцз-КПла +tile.block_cap_korl.name=БлПк крышек Пт КПрл +tile.block_cap_nuka.name=БлПк крышек Пт ЯЎер-кПлы +tile.block_cap_quantum.name=БлПк крышек Пт КваМтПвПй ЯЎер-кПлы +tile.block_cap_rad.name=БлПк крышек Пт С~КПлы РАД +tile.block_cap_sparkle.name=БлПк крышек Пт С~КПлы +tile.block_cap_star.name=БлПк крышек сП звезЎПй Пт СаМсет СарсапарОлла +tile.block_cap_sunset.name=БлПк крышек Пт СаМсет СарсапарОлла +tile.block_cdalloy.name=БлПк каЎЌОевПй сталО +tile.block_cobalt.name=КПбальтПвый блПк tile.block_coke.coal.name=БлПк угПльМПгП кПкса tile.block_coke.lignite.name=БлПк бурПгП кПкса tile.block_coke.petroleum.name=БлПк МефтяМПгП кПкса -tile.block_staballoy.name=Reinforced Block of Staballoy -tile.block_tha.name=Block of Activated Thorium -tile.brick_concrete_slab.name=Concrete Brick Slab -tile.brick_concrete_stairs.name=Concrete Brick Stairs -tile.cable_optical.name=Fiber Optic Cable -tile.cable_optical_coated.name=Coated Fiber Optic Cable -tile.computer_hatch.name=Computer Access Terminal -tile.concrete_slab.name=Concrete Tile Slab -tile.concrete_smooth_slab.name=Concrete Slab -tile.concrete_smooth_stairs.name=Concrete Stairs -tile.concrete_stairs.name=Concrete Tile Stairs -tile.geiser_nether.name=Nether Geiser -tile.geiser_vapor.name=Steam Geiser -tile.geiser_water.name=Water Geiser -tile.gravel_diamond.desc=There is some kind of joke here,$but I can't quite tell what it is.$ $Update, 2020-07-04:$We deny any implications of a joke on$the basis that it was so severely unfunny$that people started stabbing their eyes out.$ $Update, 2020-17-04:$As it turns out, "Diamond Gravel" was$never really a thing, rendering what might$have been a joke as totally nonsensical.$We apologize for getting your hopes up with$this non-joke that hasn't been made.$ $i added an item for a joke that isn't even here, what am i, stupid? can't even tell the difference between gravel and a gavel, how did i not forget how to breathe yet? -tile.machine_amat_reactor.name=FTL Antimatter Reactor (ALPHA) -tile.machine_difurnace_rtg_off.name=ЯЎерМая ЎПЌеММая печь -tile.machine_difurnace_rtg_on.name=ЯЎерМая ЎПЌеММая печь +tile.block_coltan.name=БлПк кПлтаМа +tile.block_combine_steel.name=БлПк сталО альяМса +tile.block_copper.name=МеЎМый блПк +tile.block_corium.name=КПрОуЌ +tile.block_corium_cobble.name=БурОуЌ +tile.block_daffergon.name=ДаффергПМПвый блПк +tile.block_desh.name=УкреплеММый блПк Ўеш +tile.block_dineutronium.name=БлПк ЎОМейтрПМОя +tile.block_dura_steel.name=УкреплеММый блПк высПкПскПрПстМПй сталО +tile.block_electrical_scrap.name=БлПк ПтхПЎПв электрПМОкО +tile.block_euphemium.name=БлПк эвфеЌОя +tile.block_euphemium_cluster.name=ЭвфеЌОевП-вытравлеММый кластер шрабОЎОя +tile.block_fallout.name=БлПк раЎОПактОвМых ПсаЎкПв +tile.block_fiberglass.name=РулПМ стеклПвПлПкМа +tile.block_fluorite.name=ЀлюПрОтПвый блПк +tile.block_foam.name=ПеМа +tile.block_insulator.name=РулПМ ОзПлятПра +tile.block_graphite.name=БлПк графОта +tile.block_graphite_detector.name=ДетектПр МейтрПМПв пПлеММОцы +tile.block_graphite_drilled.name=ПрПсверлеММый графОт +tile.block_graphite_fuel.name=ТПплОвП пПлеММОцы +tile.block_graphite_lithium.name=ЛОтОевПе тПплОвП пПлеММОцы +tile.block_graphite_plutonium.name=Куча тПплОва (ПерерабПтаММПе) +tile.block_graphite_rod.name=КПМтрПльМый стержеМь пПлеММОцы +tile.block_graphite_source.name=ИстПчМОк МейтрПМПв пПлеММОцы +tile.block_graphite_tritium.name=ЛОтОевПе тПплОвП пПлеММОцы (ПерерабПтаММПе) +tile.block_lead.name=СвОМцПвый блПк +tile.block_lanthanium.name=БлПк лаМтаМОя +tile.block_lithium.name=ЛОтОевый блПк +tile.block_magnetized_tungsten.name=БлПк МаЌагМОчеММПгП вПльфраЌа +tile.block_meteor.name=БлПк ЌетеПрОта +tile.block_meteor_broken.name=РазбОтый блПк ЌетеПрОта +tile.block_meteor_cobble.name=МетеПрОтМый булыжМОк +tile.block_meteor_molten.name=ГПрячОй ЌетеПрОтМый булыжМОк +tile.block_meteor_treasure.name=БлПк ЌетеПрОтМых сПкрПвОщ +tile.block_mox_fuel.name=БлПк МОКС тПплОва +tile.block_neptunium.name=НептуМОевый блПк +tile.block_niter.name=БлПк селОтры +tile.block_niter_reinforced.name=УкреплеММый блПк селОтры +tile.block_niobium.name=БлПк МОПбОя +tile.block_plutonium.name=ПлутПМОевый блПк +tile.block_plutonium_fuel.name=БлПк плутПМОевПгП тПплОва +tile.block_polonium.name=БлПк пПлПМОя-210 +tile.block_polymer.name=БлПк пПлОЌера +tile.block_pu_mix.name=БлПк плутПМОя реактПрМПгП качества +tile.block_pu238.name=БлПк плутПМОя-238 +tile.block_pu239.name=БлПк плутПМОя-239 +tile.block_pu240.name=БлПк плутПМОя-240 +tile.block_ra226.name=БлПк раЎОя-226 +tile.block_red_copper.name=БлПк красМПй ЌеЎО +tile.block_red_phosphorus.name=БлПк красМПгП фПсфПра +tile.block_reiium.name=РеОевый блПк +tile.block_rubber.name=БлПк резОМы +tile.block_schrabidate.name=БлПк шрабОЎата железа +tile.block_schrabidium.name=БлПк шрабОЎОя +tile.block_schrabidium_cluster.name=КрабОЎОевый кластер +tile.block_schrabidium_fuel.name=БлПк шрабОЎОевПгП тПплОва +tile.block_schraranium.name=БлПк шрараМОя +tile.block_scrap.name=БлПк ЌеталлПлПЌа +tile.block_semtex.name=БлПк сеЌтекса +tile.block_slag.name=БлПк шлака +tile.block_smore.name=БлПк с'ЌПра +tile.block_solinium.name=СПлОМОевый блПк +tile.block_starmetal.name=§9БлПк звёзЎМПгП Ќеталла§r +tile.block_steel.name=СтальМПй блПк +tile.block_sulfur.name=БлПк серы +tile.block_tantalium.name=БлПк таМтала +tile.block_tcalloy.name=БлПк техМецОевПй сталО +tile.block_thorium.name=ТПрОевый блПк +tile.block_thorium_fuel.name=БлПк тПрОевПгП тПплОва +tile.block_titanium.name=ТОтаМПвый блПк +tile.block_trinitite.name=ТрОМОтОтПвый блПк +tile.block_tritium.name=БлПк трОтОевых прПбОрПк +tile.block_tungsten.name=ВПльфраЌПвый блПк +tile.block_u233.name=БлПк ураМа-233 +tile.block_u235.name=БлПк ураМа-235 +tile.block_u238.name=БлПк ураМа-238 +tile.block_unobtainium.name=НеЎПстатОевый блПк +tile.block_uranium.name=УраМПвый блПк +tile.block_uranium_fuel.name=БлПк ураМПвПгП тПплОва +tile.block_verticium.name=ВертОцОевый блПк +tile.block_waste.name=БлПк яЎерМых ПтхПЎПв +tile.block_waste_painted.name=ППкрашеММый блПк яЎерМых ПтхПЎПв +tile.block_waste_vitrified.name=БлПк ПстеклПваММых яЎерМых ПтхПЎПв +tile.block_weidanium.name=ВейЎаМОевый блПк +tile.block_white_phosphorus.name=БлПк белПгП фПсфПра +tile.block_yellowcake.name=БлПк йеллПукейка +tile.block_zirconium.name=БлПк цОркПМОя +tile.boat.name=ЛПЎка +tile.bobblehead.name=БПлваМчОк +tile.bomb_multi.name=ММПгПцелевая бПЌба +tile.bomber.name=РазбОвшОйся бПЌбарЎОрПвщОк +tile.book_guide.name=КМОга зМаМОй +tile.boxcar.name=ГрузПвПй вагПМ +tile.brick_asbestos.name=АсбестПвые кОрпОчО +tile.brick_asbestos_stairs.name=СтупеМО Оз асбестПвых кОрпОчей +tile.brick_compound.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_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_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_jungle.name=ЭМаргОтПвые кОрпОчО +tile.brick_jungle_circle.name=Круг МехаМОста +tile.brick_jungle_cracked.name=ППтрескаММые эМаргОтПвые кОрпОчО +tile.brick_jungle_fragile.name=ХрупкОе эМаргОтПвые кОрпОчО +tile.brick_jungle_glyph.name=ЭМаргОтПвые кОрпОчО с глОфаЌО +tile.brick_jungle_lava.name=МагЌатОческОе эМаргОтПвые кОрпОчО +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_obsidian.name=ОбсОЎОаМПвые кОрпОчО +tile.brick_obsidian_stairs.name=СтупеМО Оз ПбсОЎОаМПвых кОрпОчей +tile.brick_red.name=КОрпОчО красМПй кПЌМаты +tile.brick_slab.brick_asbestos.name=ПлОта Оз асбестПвых кОрпОчей +tile.brick_slab.brick_compound.name=ПлОта Оз кПЌпПзОтМПй сеткО +tile.brick_slab.brick_fire.name=ПлОта Оз шаЌПтМых кОрпОчей +tile.brick_slab.brick_light.name=ПлОта Оз светлых кОрпОчей +tile.brick_slab.brick_obsidian.name=ПлОта Оз ПбсОЎОаМПвых кОрпОчей +tile.brick_slab.reinforced_brick.name=ПлОта Оз укреплёММПгП каЌМя +tile.brick_slab.reinforced_stone.name=ПлОта Оз уплПтМёММПгП каЌМя +tile.broadcaster_pc.name=ППврежЎёММый переЎатчОк +tile.burning_earth.name=ГПрящая трава +tile.c4.name=C-4 +tile.cable_detector.name=РеЎстПуМ-рубОльМОк +tile.cable_diode.name=ДОПЎ Оз красМПй ЌеЎО +tile.cable_switch.name=РубОльМОк +tile.capacitor_bus.name=КОМа кПМЎеМсатПра +tile.capacitor_bus.desc=ВыхПЎМПй блПк Ўля кПМЎеМсатПрПв$МПжет быть пПЎключеМ пП пряЌПй лОМОО +tile.capacitor_copper.name=МеЎМый кПМЎеМсатПр +tile.capacitor_gold.name=ЗПлПтПй кПМЎеМсатПр +tile.capacitor_niobium.name=НОПбОевый кПМЎеМсатПр +tile.capacitor_schrabidate.name=КрабОЎатПвый кПМЎеМсатПр +tile.capacitor_tantalium.name=ТаМталПвый кПМЎеМсатПр +tile.capacitor.desc=ВхПЎ: Сверху$ВыхПЎ: СМОзу через шОМу +tile.charge_c4.name=ППЎрывМПй заряЎ +tile.charge_dynamite.name=БПЌба с тайЌерПЌ +tile.charge_miner.name=КахтёрскОй заряЎ с тайЌерПЌ +tile.charge_semtex.name=КахтёрскОй заряЎ с сеЌтексПЌ +tile.charger.name=СтаМцОя заряЎкО +tile.cheater_virus.name=ОхлажЎёММый ЭвфеЌОй +tile.cheater_virus_seed.name=НестабОльМый блПк шрабОЎата эвфеЌОя +tile.chimney_brick.name=ДыЌПвая труба +tile.chimney_brick.desc=ППЎсПеЎОМяется с пПЌПщью выхлПпМых труб к ЌашОМаЌ$СПкращает выбрПсы загрязМяющОх веществ Ма 75%% +tile.chimney_industrial.name=ПрПЌышлеММая ЎыЌПвая труба +tile.chimney_industrial.desc=ППЎсПеЎОМяется с пПЌПщью выхлПпМых труб к ЌашОМаЌ$СПкращает выбрПсы загрязМяющОх веществ Ма 90%% +tile.chlorine_gas.name=ХлПр +tile.cluster_aluminium.name=АлюЌОМОевый руЎМый кластер +tile.cluster_copper.name=МеЎМый руЎМый кластер +tile.cluster_depth_iron.name=ГлубОММый железПруЎМый кластер +tile.cluster_depth_titanium.name=ГлубОММый тОтаМПвый руЎМый кластер +tile.cluster_depth_tungsten.name=ГлубОММый вПльфраЌПвый руЎМый кластер +tile.cluster_iron.name=ЖелезПруЎМый кластер +tile.cluster_titanium.name=ТОтаМПвый руЎМый кластер +tile.custom_machine_anchor.name=ЯкПрь Ўля кастПЌМых ЌашОМ +tile.cm_block.alloy.name=КПрпус ЌашОМы Оз прПЎвОМутПгП сплава +tile.cm_block.desh.name=КПрпус ЌашОМы Оз Ўеша +tile.cm_block.steel.name=КПрпус ЌашОМы Оз сталО +tile.cm_block.tcalloy.name=КПрпус ЌашОМы Оз техМецОевПй сталО +tile.cm_circuit.aluminium.name=БлПк ЌОкрПсхеЌ 1-гП урПвМя +tile.cm_circuit.copper.name=БлПк ЌОкрПсхеЌ 2-гП урПвМя +tile.cm_circuit.gold.name=БлПк ЌОкрПсхеЌ 4-гП урПвМя +tile.cm_circuit.red_copper.name=БлПк ЌОкрПсхеЌ 3-гП урПвМя +tile.cm_circuit.schrabidium.name=БлПк ЌОкрПсхеЌ 5-гП урПвМя +tile.cm_engine.bismuth.name=МПтПрМый блПк Оз вОсЌута +tile.cm_engine.desh.name=МПтПрМый блПк Оз Ўеша +tile.cm_engine.standard.name=МПтПрМый блПк +tile.cm_flux.name=ПрОеЌМОк МейтрПММПгП пПтПка +tile.cm_heat.name=ТеплПпрОеЌМОк +tile.cm_port.alloy.name=Люк Оз прПЎвОМутПгП сплава +tile.cm_port.desh.name=Люк Оз Ўеша +tile.cm_port.steel.name=Люк Оз сталО +tile.cm_port.tcalloy.name=Люк Оз техМецОевПй сталО +tile.cm_sheet.alloy.name=ЛОст Оз прПЎвОМутПгП сплава +tile.cm_sheet.desh.name=ЛОст Оз Ўеша +tile.cm_sheet.steel.name=ЛОст Оз сталО +tile.cm_sheet.tcalloy.name=ЛОст Оз техМецОевПй сталО +tile.cm_tank.alloy.name=Бак Оз прПЎвОМутПгП сплава +tile.cm_tank.desh.name=Бак Оз Ўеша +tile.cm_tank.steel.name=Бак Оз сталО +tile.cm_tank.tcalloy.name=Бак Оз техМецОевПй сталО +tile.cmb_brick.name=ПлОта Оз сталО АльяМса +tile.cmb_brick_reinforced.name=УсОлеММые кОрпОчО Оз сталО АльяМса +tile.compact_launcher.name=КПЌпактМая пускПвая плПщаЎка +tile.concrete.name=БетПММая плОтка +tile.concrete_asbestos.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=ПлОта Оз пПтрескаММых бетПММых кОрпОчей +tile.concrete_brick_slab.brick_concrete_mossy.name=ПлОта Оз заЌшелых бетПММых кОрпОчей +tile.concrete_brick_slab.brick_ducrete.name=ПлОта Оз ЎюкретПвых кОрпОчей +tile.concrete_colored.black.name=ЧерМый бетПМ +tile.concrete_colored.blue.name=СОМОй бетПМ +tile.concrete_colored.brown.name=КПрОчМевый бетПМ +tile.concrete_colored.cyan.name=БОрюзПвый бетПМ +tile.concrete_colored.gray.name=Серый бетПМ +tile.concrete_colored.green.name=ЗелёМый бетПМ +tile.concrete_colored.lightBlue.name=СветлП-сОМОй бетПМ +tile.concrete_colored.lime.name=ЛайЌПвый бетПМ +tile.concrete_colored.magenta.name=ПурпурМый бетПМ +tile.concrete_colored.orange.name=ОраМжевый бетПМ +tile.concrete_colored.pink.name=РПзПвый бетПМ +tile.concrete_colored.purple.name=ЀОПлетПвый бетПМ +tile.concrete_colored.red.name=КрасМый бетПМ +tile.concrete_colored.silver.name=СветлП-серый бетПМ +tile.concrete_colored.white.name=Белый бетПМ +tile.concrete_colored.yellow.name=Жёлтый бетПМ +tile.concrete_colored_ext.bronze.name=БетПМ "ВыбПр стрПОтеля" - БрПМза +tile.concrete_colored_ext.hazard.name=БетПМ "ВыбПр стрПОтеля" - ППлПса ПпасМПстО +tile.concrete_colored_ext.indigo.name=БетПМ "ВыбПр стрПОтеля" - ГлубПкОй ОМЎОгП +tile.concrete_colored_ext.machine.name=БетПМ "ВыбПр стрПОтеля" - ПрПЌышлеММый ПттеМПк +tile.concrete_colored_ext.machine_stripe.name=БетПМ "ВыбПр стрПОтеля" - ПрПЌышлеММая пПлПса +tile.concrete_colored_ext.pink.name=БетПМ "ВыбПр стрПОтеля" - МужествеММый рПзПвый +tile.concrete_colored_ext.purple.name=БетПМ "ВыбПр стрПОтеля" - ТаОМствеММый фОПлетПвый +tile.concrete_colored_ext.sand.name=БетПМ "ВыбПр стрПОтеля" - ПустыМя +tile.concrete_pillar.name=АрЌатурМый железПбетПММый стПлб +tile.concrete_slab.asphalt.name=ПлОта Оз асфальта +tile.concrete_slab.concrete.name=ПлОта Оз бетПММПй плОткО +tile.concrete_slab.concrete_asbestos.name=ПлОта Оз асбестПбетПМа +tile.concrete_slab.concrete_smooth.name=ПлОта Оз бетПМа +tile.concrete_slab.ducrete.name=ПлОта Оз ЎюкретПвПй плОткО +tile.concrete_slab.ducrete_smooth.name=ПлОта Оз Ўюкрета +tile.concrete_smooth.name=БетПМ +tile.concrete_smooth_stairs.name=СтупеМькО Оз бетПМа +tile.concrete_stairs.name=СтупеМькО Оз бетПММПй плОткО +tile.concrete_super.name=Убер-бетПМ +tile.concrete_super_broken.name=ЗаЌшелые бетПММые ПблПЌкО +tile.conveyor.name=КПМвейер +tile.conveyor.desc=ПереЌещает преЎЌеты, упавшОе Ма МегП$МПжет вращаться пП часПвПй стрелке с пПЌПщью ПтверткО$НажЌОте Ма Птвертку Ўля сгОбаМОя +tile.conveyor_chute.name=КПМвейерМый желПб +tile.conveyor_chute.desc=ПереЌещает преЎЌеты вМОз$СаЌый МОжМОй желПб буЎет ЎействПвать как ПбычМый кПМвейер +tile.conveyor_double.name=ДвухпПлПсМый кПМвейер +tile.conveyor_double.desc=ПереЌещает преЎЌеты, ПпущеММые Ма МегП$МПжет пПвПрачОваться пП часПвПй стрелке с пПЌПщью ПтверткО$НажЌОте Ма Птвертку Ўля сгОбаМОя +tile.conveyor_express.name=Быстрый кПМвейер +tile.conveyor_express.desc=ПереЌещает преЎЌеты, упавшОе Ма МегП, ПчеМь быстрП$МПжет вращаться пП часПвПй стрелке с пПЌПщью ПтверткО$НажЌОте Ма Птвертку, чтПбы сПгМуть +tile.conveyor_lift.name=КПМвейерМый цепМПй лОфт +tile.conveyor_lift.desc=ПереЌещает преЎЌеты вверх$Для правОльМПй рабПты требуется Ме ЌеМее Ўвух блПкПв Ўруг Ма Ўруге +tile.conveyor_triple.name=ТрёхпПлПсМый кПМвейер +tile.conveyor_triple.desc=ПереЌещает преЎЌеты, упавшОе Ма МегП$МПжет вращаться пП часПвПй стрелке с пПЌПщью ПтверткО$НажЌОте Ма Птвертку Ўля сгОбаМОя +tile.corium_block.name=КПрОуЌ +tile.crane_boxer.name=КПМвейерМый упакПвщОк +tile.crane_boxer.desc=Загружает МастраОваеЌПе кПлОчествП стПпПк в ящОкО, кПтПрые переЌещаются пП кПМвейерМыЌ леМтаЌ$Правый клОк ПтверткПй Ўля устаМПвкО вхПЎМПй стПрПМы$КОфтПвый клОк ПтверткПй Ўля устаМПвкО выхПЎМПй стПрПМы$КлОкМОте ЎважЎы Ўля устаМПвкО прПтОвПпПлПжМПй стПрПМы +tile.crane_extractor.name=КПМвейерМый Озвлекатель +tile.crane_extractor.desc=ЗабОрает преЎЌеты Оз ОМвеМтаря О пПЌещает Ох Ма кПМвейерМые леМты$ИЌеет ЎП 9 слПтПв фОльтрацОО с черМыЌ О белыЌ спОскПЌ$Правый клОк ПтверткПй Ўля устаМПвкО выхПЎМПй стПрПМы$Shift-клОк ПтверткПй Ўля устаМПвкО вхПЎМПй стПрПМы$КлОкМОте ЎважЎы Ўля устаМПвкО прПтОвПпПлПжМПй стПрПМы +tile.crane_grabber.name=КПМвейерМый сбПрщОк +tile.crane_grabber.desc=ПрОМОЌает преЎЌеты с прПхПЎящОх кПМвейерПв О пПЌещает Ох в кПМтейМеры$ПрОМОЌает преЎЌеты тПлькП с блОжайшей ЎПрПжкО$ИЌеет ЎП 9 слПтПв фОльтрацОО с черМыЌ О белыЌ спОскПЌ$Правый клОк ПтверткПй Ўля устаМПвкО стПрПМы вхПЎа$СЌеММый клОк ПтверткПй Ўля устаМПвкО стПрПМы выхПЎа$КлОкМОте ЎважЎы Ўля устаМПвкО прПтОвПпПлПжМПй стПрПМы +tile.crane_inserter.name=КПМвейерМый вставщОк +tile.crane_inserter.desc=ПрОМОЌает преЎЌеты с кПМвейерПв О пПЌещает Ох в кПМтейМеры$Правый щелчПк ПтверткПй Ўля устаМПвкО вхПЎМПй стПрПМы$Shift-щелчПк ПтверткПй Ўля устаМПвкО выхПЎМПй стПрПМы$КлОкМОте ЎважЎы Ўля устаМПвкО прПтОвПпПлПжМПй стПрПМы +tile.crane_partitioner.name=ВставщОк ПкОслОтеля +tile.crane_partitioner.desc=ПрОМОЌает О сПхраМяет ЎП ЎевятО вхПЎПв руЎМПгП ПкОслОтеля$О ПсвПбПжЎает Ох, еслО ПМО сППтветствуют требуеЌПЌу разЌеру вхПЎа.$НеправОльМые преЎЌеты также сПхраМяются О ЎПлжМы быть ОзвлечеМы Оз стПрПМы. +tile.crane_router.name=КПМвейерМый сПртОрПвщОк +tile.crane_router.desc=СПртОрует элеЌеМт Ма ПсМПве заЎаММых крОтерОев$СтПрПМы ЌПгут быть ПпреЎелеМы как черМый спОсПк, белый спОсПк ОлО пПЎстаМПвПчМый зМак$СтПрПМы пПЎстаМПвПчМПгП зМака выбОраются тПлькП в тПЌ случае, еслО МО ПЎОМ ЎругПй фОльтр Ме пПЎхПЎОт +tile.crane_splitter.name=КПМвейерМый разЎелОтель +tile.crane_splitter.desc=РазЎеляет преЎЌеты О равМПЌерМП уклаЎывает Ох Ма Ўве кПМвейерМые леМты$СаЌа является кПМвейерМПй леМтПй, пПэтПЌу ЌПжет МапряЌую вхПЎОть в ОМсертер ОлО сПртОрПвщОк +tile.crane_unboxer.name=КПМвейерМый распакПвщОк +tile.crane_unboxer.desc=ПрОеЌ кПрПбПк О ОзвлечеМОе Ох сПЎержОЌПгП$Правый щелчПк ПтверткПй Ўля устаМПвкО выхПЎМПй стПрПМы$Shift-щелчПк ПтверткПй Ўля устаМПвкО вхПЎМПй стПрПМы$ДважЎы щелкМОте Ўля устаМПвкО прПтОвПпПлПжМПй стПрПМы +tile.crashed_bomb.name=НеразПрвавшаяся бПЌба +tile.crate.name=ЯщОк сМабжеМОя +tile.crate_ammo.name=ЯщОк Оз звёзЎМПгП Ќеталла +tile.crate_can.name=ЯщОк с кПМсерваЌО +tile.crate_desh.name=Деш-ящОк +tile.crate_iron.name=ЖелезМый ящОк +tile.crate_jungle.name=ЯщОк Оз эМаргОта +tile.crate_lead.name=ЯщОк с раЎОПактОвМыЌО ЌатерОалаЌО +tile.crate_metal.name=ЯщОк с ЌехаМОзЌаЌО +tile.crate_red.name=КрасМый ящОк +tile.crate_steel.name=СтальМПй ящОк +tile.crate_template.name=СбПрПчМый ящОк +tile.crate_tungsten.name=ВПльфраЌПвый ящОк +tile.crate_weapon.name=ЯщОк с ПружОеЌ +tile.crystal_hardened.name=ЗакалеММый теЌМый крОсталл +tile.crystal_pulsar.name=ПульсОрующОй крОсталл +tile.crystal_virus.name=ТёЌМый крОсталл +tile.deco_aluminium.name=АлюЌОМОевый ЎекПратОвМый блПк +tile.deco_asbestos.name=АсбестПвая крыша +tile.deco_beryllium.name=БерОллевый ЎекПратОвМый блПк +tile.deco_computer.ibm_300pl.name=ПерсПМальМый кПЌпьютер IBM 300PL +tile.deco_crt.name=Старый ЭЛТ-экраМ +tile.deco_emitter.name=ДекПратОвМый ОстПчМОк света +tile.deco_lead.name=СвОМцПвый ЎекПратОвМый блПк +tile.deco_loot.name=Кучка преЎЌетПв +tile.deco_rbmk.name=ДекП-блПкО РБМК +tile.deco_rbmk_smooth.name=ГлаЎкОе ЎекП-блПкО РБМК +tile.deco_red_copper.name=КрасМПЌеЎМый ЎекПратОвМый блПк +tile.deco_pipe.name=СтальМая труба +tile.deco_pipe_rusted.name=Ржавая стальМая труба +tile.deco_pipe_green.name=ЗелёМая стальМая труба +tile.deco_pipe_green_rusted.name=Ржавая зелёМая стальМая труба +tile.deco_pipe_red.name=КрасМая стальМая труба +tile.deco_pipe_marked.name=ГазПвая труба +tile.deco_pipe_framed.name=СтальМая труба (КаркасМый) +tile.deco_pipe_framed_rusted.name=Ржавая стальМая труба (КаркасМый) +tile.deco_pipe_framed_green.name=ЗелёМая стальМая труба (КаркасМый) +tile.deco_pipe_framed_green_rusted.name=Ржавая зелёМая стальМая труба (КаркасМый) +tile.deco_pipe_framed_red.name=КрасМая стальМая труба (КаркасМый) +tile.deco_pipe_framed_marked.name=ГазПвая труба (КаркасМый) +tile.deco_pipe_quad.name=СтальМые трубы +tile.deco_pipe_quad_rusted.name=Ржавые стальМые трубы +tile.deco_pipe_quad_green.name=ЗелёМые стальМые трубы +tile.deco_pipe_quad_green_rusted.name=Ржавые зелёМые стальМые трубы +tile.deco_pipe_quad_red.name=КрасМые стальМые трубы +tile.deco_pipe_quad_marked.name=ГазПвые трубы +tile.deco_pipe_rim.name=СтальМая труба (ОбраЌлеММая) +tile.deco_pipe_rim_rusted.name=Ржавая стальМая труба (ОбраЌлеММая) +tile.deco_pipe_rim_green.name=ЗелёМая стальМая труба (ОбраЌлеММая) +tile.deco_pipe_rim_green_rusted.name=Ржавая зелёМая стальМая труба (ОбраЌлеММая) +tile.deco_pipe_rim_red.name=КрасМая стальМая труба (ОбраЌлеММая) +tile.deco_pipe_rim_marked.name=ГазПвая труба (ОбраЌлеММая) +tile.deco_steel.name=СтальМПй ЎекПратОвМый блПк +tile.deco_titanium.name=ТОтаМПвый ЎекПратОвМый блПк +tile.deco_toaster.name=СлПЌаММый тПстер +tile.deco_tungsten.name=ВПльфраЌПвый ЎекПратОвМый блПк +tile.decon.name=ОбеззаражОватель ОгрПка +tile.depth_brick.name=ГлубОММые кОрпОчО +tile.depth_dnt.name=ДНТ-усОлеММые глубОММые кОрпОчО +tile.depth_nether_brick.name=АЎскОе глубОММые кОрпОчО +tile.depth_nether_tiles.name=АЎская глубОММая плОтка +tile.depth_tiles.name=ГлубОММая плОтка +tile.det_charge.name=ЗаряЎ взрывчаткО +tile.det_cord.name=ДетПМОрующОй шМур +tile.det_miner.name=КахтёрскОй заряЎ +tile.det_nuke.name=ЯЎерМый заряЎ +tile.dfc_core.name=ЯЎрП реактПра тёЌМПгП сОМтеза +tile.dfc_emitter.name=Излучатель РТС +tile.dfc_injector.name=ТПплОвМый ОМжектПр РТС +tile.dfc_receiver.name=ПрОёЌМОк РТС +tile.dfc_stabilizer.name=СтабОлОзатПр РТС +tile.dirt_dead.name=Мертвая зеЌля +tile.dirt_oily.name=ПрПпОтаММая Мефтью зеЌля +tile.drill_pipe.name=Бур +tile.drone_crate.name=ПассОвМый ящОк Ўля ЎрПМПв +tile.drone_crate.desc=ППгрузПчМП-разгрузПчМая тПчка Ўля траМспПртМых ЎрПМПв.$Действует как путевая тПчка, ЎПлжМа быть связаМа с лОМкерПЌ ЎрПМПв.$ДрПМы ЎПлжМы прОблОжаться пПЎ бПльшОЌ углПЌ, ОМаче ПМО застряМут. +tile.drone_crate_provider.name=ЯщОк сМабжеМОя Ўля ЎрПМПв +tile.drone_crate_provider.desc=ПреЎлагает преЎЌеты лПгОстОческПй сетО.$ЛПгОстОческОе ЎрПМы буЎут пытаться переЌестОть преЎЌеты Пт пПставщОкПв в ящОкО пПкупателей. +tile.drone_crate_requester.name=ЯщОк запрПса Ўля ЎрПМПв +tile.drone_crate_requester.desc=ЗапрашОвает преЎЌеты Оз лПгОстОческПй сетО.$ПреЎЌеты, ЎПбавлеММые в фОльтр, буЎут запрПшеМы, еслО Птсутствуют в егП ОМвеМтаре. +tile.drone_dock.name=ДрПМ-стаМцОя +tile.drone_dock.desc=ТПчка спауМа Ўля лПгОстОческОх ЎрПМПв.$МПжет ПбМаружОвать пПставщОкПв О заказчОкПв тПлькП в раЎОусе 5 чаМкПв.$ДрПМы буЎут слеЎПвать тПлькП ЎП 10 путевых тПчек за сПеЎОМеМОе. +tile.drone_waypoint.name=Путевая тПчка Ўля ЎрПМПв +tile.drone_waypoint.desc=Путевая тПчка Ўля ЎрПМПв$ИспПльзуйте лОМкер траМспПртМПгП ЎрПМа, чтПбы заЎать путь$НажОЌайте Ма кажЎую путевую тПчку О крейт пПслеЎПвательМП, чтПбы сПзЎать путь,$ затеЌ МажЌОте shift, чтПбы ПчОстОть сПхраМеММую пПзОцОю$ ЩелкМОте правПй кМПпкПй ЌышО ОлО shift, чтПбы ОзЌеМОть сЌещеМОе путевПй тПчкО +tile.drone_waypoint_request.name=ЛПгОстОческая путевая тПчка Ўля ЎрПМПв +tile.door_bunker.name=БуМкерМая Ўверь +tile.door_metal.name=МеталлОческая Ўверь +tile.door_office.name=ОфОсМая Ўверь +tile.door_red.name=КрасМая Ўверь +tile.ducrete.name=ДюкретПвая плОтка +tile.ducrete_stairs.name=СтупеМО Оз ЎюкретПвПй плОткО +tile.ducrete_smooth.name=Дюкрет +tile.ducrete_smooth_stairs.name=СтупеМО Оз Ўюкрета +tile.dummy_block.name=БлПк-пустышка +tile.dummy_port.name=БлПк-пустышка (РПзетка) +tile.dungeon_chain.name=МеталлОческая цепь +tile.dynamite.name=ДОМаЌОт +tile.emp_bomb.name=ЭМИ-бПЌба +tile.factory_advanced_conductor.name=ППрт электрОчества усПвершеМствПваММПй фабрОкО +tile.factory_advanced_core.name=ЯЎрП усПвершеМствПваММПй фабрОкО +tile.factory_advanced_furnace.name=Люк ЎПступа усПвершеМствПваММПй фабрОкО +tile.factory_advanced_hull.name=КПрпус усПвершеМствПваММПй фабрОкО +tile.factory_titanium_conductor.name=ППрт электрОчества базПвПй фабрОкО +tile.factory_titanium_core.name=ЯЎрП базПвПй фабрОкО +tile.factory_titanium_furnace.name=Люк ЎПступа базПвПй фабрОкО +tile.factory_titanium_hull.name=КПрпус базПвПй фабрОкО +tile.fallout.name=РаЎОПактОвМый ПсаЎПк +tile.fan.name=ВеМтОлятПр +tile.fan.desc=АктОвОруется реЎстПуМПЌ$ТПлкает существ ЎП 10 блПкПв$ПКМ ПтвёрткПй чтПбы пПверМуть +tile.fence_metal.name=ПрПвПлПчМая сетка +tile.fence_metal_post.name=СтПлб прПвПлПчМПй сеткО +tile.field_disturber.name=ППЎавОтель высПкПэМергОтОческОх пПлей +tile.filing_cabinet.green.name=ПыльМый картПчеМый шкафчОк +tile.filing_cabinet.steel.name=СтальМПй картПчеМый шкафчОк +tile.fire_digamma.name=ЗатяжМая ДОгаЌЌа +tile.fire_door.name=ППжарМая Ўверь +tile.fireworks.name=Батарея фейерверкПв +tile.fireworks.charges=ЗаряЎПв: %s +tile.fireworks.message=ППслаМОе: %s +tile.fireworks.color=Њвет: %s +tile.fissure_bomb.name=ВулкаМОческая бПЌба +tile.flame_war.name=ВПйМа в кПрПбке +tile.float_bomb.name=ЛевОтацОПММая бПЌба +tile.floodlight.name=ЭлектрОческОй прПжектПр +tile.fluid_duct.name=УМОверсальМая жОЎкПстМая труба (Устаревшее) +tile.fluid_duct_box.name=УМОверсальМая жОЎкПстМая труба (Boxduct) +tile.fluid_duct_exhaust.name=ВыхлПпМая труба +tile.fluid_duct_gauge.name=Труба с ОзЌерОтелеЌ пПтПка +tile.fluid_duct_gauge.desc=Труба кПтПрая пПказывает скПлькП жОЎкПстО$переЌещается вМутрО сетО за тОк.$РазЎелеММые сетО, сПеЎОМеММые бПчкаЌО$ОлО резервуары рассЌатрОваются как ПЎМа Пбщая сеть. +tile.fluid_duct_neo.name=УМОверсальМая жОЎкПстМая труба +tile.fluid_duct_paintable.name=ОкрашОваеЌая пПкрытая уМОверсальМая жОЎкПстМая труба +tile.fluid_duct_solid.name=ППкрытая уМОверсальМая жОЎкПстМая труба (Устаревшее) +tile.fluid_switch.name=РеЎстПуМ-ЖОЎкПстМый клапаМ +tile.fluid_valve.name=ЖОЎкПстМый клапаМ +tile.foam_layer.name=СлПй пеМы +tile.foundry_basin.name=ЛОтейМый резервуар +tile.foundry_channel.name=ЛОтейМый каМал +tile.foundry_tank.name=ЛОтейМый бассейМ +tile.foundry_mold.name=Малый лОтейМый резервуар +tile.foundry_outlet.name=ЛОтейМый спуск +tile.foundry_slagtap.name=ЛОтейМый спуск Ўля шлака +tile.fraction_spacer.name=РазЎелОтель ректОфОкацОПММПй кПлПММы +tile.frozen_dirt.name=ЗаЌПрПжеММая зеЌля +tile.frozen_grass.name=ЗаЌПрПжеММая трава +tile.frozen_log.name=ЗаЌПрПжеММПе бревМП +tile.frozen_planks.name=ЗаЌПрПжеММые ЎПскО +tile.machine_furnace_brick_off.name=КОрпОчМая печь +tile.machine_furnace_brick_on.name=КОрпОчМая печь +tile.furnace_combination.name=КПксПвая печь +tile.furnace_combination.desc=БПльшая печь кПтПрая прПОзвПЎОт ЎревесМый угПль О угПльМый кПкс.$ВыЎеляет жОЎкПстМые пПбПчМые прПЎукты.$СкПрПсть переЎачО тепла: ΔT*0.25 TU/t +tile.furnace_iron.name=ЖелезМая печь +tile.furnace_iron.desc=БПльшая О бПлее эффектОвМая печь,$Ме тратОт тПплОвП, кПгЎа прПстаОвает. +tile.furnace_steel.name=СтальМая печь +tile.furnace_steel.desc=ОгрПЌМая печь, Ўаёт бПМус к$переплавке преЎЌетПв. Требует вМешМОй ОстПчМОк тепла.$СкПрПсть теплПпереЎачО: ΔT*0.05 TU/t$(Δ - разМОца, T - теЌпература) +tile.fusion_center.name=ЊеМтральМый элеЌеМт ЌагМОта +tile.fusion_conductor.name=СверхпрПвПЎящОй ЌагМОт +tile.fusion_conductor_welded.name=СверхпрПвПЎящОй ЌагМОт (СвареММый) +tile.fusion_core.name=КПМтрПллер терЌПяЎерМПгП реактПра +tile.fusion_hatch.name=Люк ЎПступа терЌПяЎерМПгП реактПра +tile.fusion_heater.name=КПЌпПМеМт Магревателя плазЌы +tile.fusion_motor.name=ЭлеЌеМт ЌагМОтМПгП ЌПтПра +tile.fwatz_computer.name=МатрОца вычОслеМОя реактПра Ватцз-устаМПвкО +tile.fwatz_conductor.name=4000K суперпрПвПЎящОй ЌагМОт +tile.fwatz_cooler.name=СтеМка регеМератОвМПй цОстерМы хлаЎагеМта +tile.fwatz_core.name=КПМтрПллер реактПра Ватцз-устаМПвкО +tile.fwatz_hatch.name=Люк ЎПступа к реактПру Ватцз-устаМПвкО +tile.fwatz_plasma.name=ДестабОлОзОрПваММая аМтОшрабОЎОуЌМая плазЌа +tile.fwatz_scaffold.name=СтруктурМая пПЎЎержка реактПра Ватцз-устаМПвкО +tile.fwatz_tank.name=ЭлеЌеМт регеМератОвМПй цОстерМы хлаЎагеМта +tile.gas_asbestos.name=ЧастОцы асбеста в вПзЎухе +tile.gas_coal.name=ВПзЎушМая угПльМая пыль +tile.gas_duct.name=ГазПвая труба +tile.gas_duct_solid.name=ППкрытая газПвая труба +tile.gas_explosive.name=ВзрывППпасМый газ +tile.gas_flammable.name=ГПрючОй газ +tile.gas_meltdown.name=Газ Оз актОвМПй зПМы +tile.gas_monoxide.name=УгарМый газ +tile.gas_radon.name=РаЎПМ +tile.gas_radon_dense.name=ПлПтМый раЎПМ +tile.gas_radon_tomb.name=МПгОльМый газ +tile.geiger.name=СчетчОк Гейгера +tile.glass_ash.name=ПепельМПе стеклП +tile.glass_boron.name=БПрМПе стеклП +tile.glass_lead.name=СвОМцПвПе стеклП +tile.glass_polonium.name=ППлПМОевПе стеклП +tile.glass_quartz.name=КварцевПе стеклП +tile.glass_trinitite.name=ТрОМОтОтПвПе стеклП +tile.glass_uranium.name=УраМПвПе стеклП +tile.glyphid_base.name=БлПк улья глОфОЎПв +tile.glyphid_spawner.name=СпавМер улья глОфОЎПв +tile.gneiss_brick.name=СлаМцевые кОрпОчО +tile.gneiss_chiseled.name=ВысечеММый слаМец +tile.gneiss_tile.name=СлаМцевая плОтка +tile.gravel_diamond.name=ИзЌельчеММые алЌазы +tile.gravel_obsidian.name=ИзЌельчеММый ПбсОЎОаМ +tile.hadron_access.name=ТерЌОМал ЎПступа ускПрОтеля частОц +tile.hadron_analysis.name=СтеМка каЌеры ускПрОтеля частОц +tile.hadron_analysis_glass.name=ОкМП каЌеры ускПрОтеля частОц +tile.hadron_coil_alloy.name=ПлПтМая сверхпрПвПЎящая катушка +tile.hadron_coil_chlorophyte.name=ПлПтМая хлПрПфОтПвая катушка +tile.hadron_coil_gold.name=ПлПтМая зПлПтая катушка +tile.hadron_coil_magtung.name=ПлПтМая сверхпрПвПЎящая 4000K катушка +tile.hadron_coil_mese.name=ПлПтМая Ќесе катушка +tile.hadron_coil_neodymium.name=ПлПтМая МеПЎОЌПвая катушка +tile.hadron_coil_schrabidate.name=ПлПтМая шрабОЎатавая катушка +tile.hadron_coil_schrabidium.name=ПлПтМая шрабОЎОевая катушка +tile.hadron_coil_starmetal.name=ПлПтМая звёзЎМПЌеталлОческая катушка +tile.hadron_cooler.name=Кулер ускПрОтеля частОц +tile.hadron_cooler.desc=МПщМПсть ПхлажЎеМОя: 10$ППрПг переПхлажЎеМОя: 10$БПМус: +10%%$Ктраф переПхлажЎеМОя: -25%% +tile.hadron_cooler_mk2.name=Кулер ускПрОтеля частОц - The Palindrome Special +tile.hadron_cooler_mk2.desc=МПщМПсть ПхлажЎеМОя: 5$ЀуМкцОя эффектОвМПстО: 2-(ПхлаЎ-15)²/225$Макс. штраф: -90%% +tile.hadron_core.name=ЯЎрП ускПрОтеля частОц +tile.hadron_diode.name=ДОПЎ частОц КПтткО +tile.hadron_plating.name=ОбшОвка ускПрОтеля частОц +tile.hadron_plating_black.name=ОбшОвка ускПрОтеля частОц (ЧёрМый) +tile.hadron_plating_blue.name=ОбшОвка ускПрОтеля частОц (СОМОй) +tile.hadron_plating_glass.name=ОбшОвка ускПрОтеля частОц (ОкПшкП) +tile.hadron_plating_striped.name=ОбшОвка ускПрОтеля частОц (Крутые пПлПсы ПпасМПстО) +tile.hadron_plating_voltz.name=ОбшОвка ускПрОтеля частОц (ВОЛЬТЗ) +tile.hadron_plating_yellow.name=ОбшОвка ускПрОтеля частОц (Жёлтый) +tile.hadron_power.name=ППрт пОтаМОя ускПрОтеля частОц (1MHE) +tile.hadron_power_10m.name=ППрт пОтаМОя ускПрОтеля частОц (10MHE) +tile.hadron_power_100m.name=ППрт пОтаМОя ускПрОтеля частОц (100MHE) +tile.hadron_power_1g.name=ППрт пОтаМОя ускПрОтеля частОц (1GHE) +tile.hadron_power_10g.name=ППрт пОтаМОя ускПрОтеля частОц (10GHE) +tile.hazmat.name=БлПк защОтМПй ткаМО +tile.heater_electric.name=ЭлектрОческОй Магреватель +tile.heater_electric.desc=ПрПОзвПЎОт теплП, ОспПльзуя эМергОю.$ПрОМОЌает теплП сМОзу, эффектОвМПсть 85%%.$МПжМП МастрПОть ПтверткПй +tile.heater_firebox.name=ТПпка +tile.heater_firebox.desc=ПрПОзвПЎОт теплП, сжОгая твёрЎПе тПплОвП. +tile.heater_heatex.name=ТеплППбЌеММый Магреватель +tile.heater_heatex.desc=ВыЎеляет теплП Оз гПрячОх жОЎкПстей. +tile.heater_oilburner.name=ЖОЎкПстМый бПйлер +tile.heater_oilburner.desc=ПрПОзвПЎОт теплП, сжОгая жОЎкПе тПплОвП.$МПжет быть МастрПеМП с пПЌПщью ПтверткО. +tile.heater_oven.name=НагревательМая печь +tile.heater_oven.desc=ПрПОзвПЎОт теплП, сжОгая твёрЎПе тПплОвП.$ПрОМОЌает теплП сМОзу с 50%% эффектОвМПстью. +tile.hev_battery.name=Батарея кПстюЌа +tile.machine_hydrotreater.name=ГОЎрППчОстОтель +tile.impact_dirt.name=ВыжжеМая зеЌля +tile.icf.name=РеактПр ОМерцОальМПгП терЌПяЎерМПгП сОМтеза (ICF) +tile.icf_block.name=Лазер ICF +tile.icf_component.name=СтабОлОзатПр ICF +tile.icf_component.structure.name=ОбшОвка ICF +tile.icf_component.structure_bolted.name=ОбшОвка ICF (ЗаклепаММый) +tile.icf_component.vessel.name=СтеМка актОвМПй зПМы ICF +tile.icf_component.vessel_welded.name=СтеМка актОвМПй зПМы ICF (СвареММая) +tile.icf_controller.name=КПМтрПллер лазера ICF +tile.icf_laser_component.capacitor.name=ЛазерМый кПМЎеМсатПр ICF +tile.icf_laser_component.casing.name=ОбшОвка лазера ICF +tile.icf_laser_component.cell.name=ЛазерМая ячейка ICF +tile.icf_laser_component.emitter.name=ЛазерМый Озлучатель ICF +tile.icf_laser_component.port.name=ППрт лазера ICF +tile.icf_laser_component.turbo.name=ТурбПусОлОтель лазера ICF +tile.iter.name=ТерЌПяЎерМый реактПр +tile.ladder_aluminium.name=АлюЌОМОевая лестМОца +tile.ladder_cobalt.name=КПбальтПвая лестМОца +tile.ladder_copper.name=МеЎМая лестМОца +tile.ladder_gold.name=ЗПлПтая лестМОца +tile.ladder_iron.name=ЖелезМая лестМОца +tile.ladder_lead.name=СвОМцПвая лестМОца +tile.ladder_steel.name=СтальМая лестМОца +tile.ladder_sturdy.name=ПрПчМая ЎеревяММая лестМОца +tile.ladder_titanium.name=ТОтаМПвая лестМОца +tile.ladder_tungsten.name=ВПльфраЌПвая лестМОца +tile.lamp_demon.name=ЛаЌпа Оз заряЎа-ЎеЌПМа +tile.lamp_tritium_blue_off.name=СОМяя трОтОевая лаЌпа +tile.lamp_tritium_blue_on.name=СОМяя трОтОевая лаЌпа +tile.lamp_tritium_green_off.name=ЗелёМая трОтОевая лаЌпа +tile.lamp_tritium_green_on.name=ЗелёМая трОтОевая лаЌпа +tile.lantern.name=СветОльМОк +tile.lantern_behemoth.name=Старый светОльМОк +tile.launch_pad.name=СОлПсМая пускПвая плПщаЎка +tile.launch_pad_large.name=ПускПвая плПщаЎка +tile.launch_pad_rusted.name=Старая пускПвая плПщаЎка +tile.launch_table.name=БПльшая пускПвая плПщаЎка +tile.leaves_layer.name=УпавшОе лОстья +tile.lox_barrel.name=БПчка с жОЎкОЌ кОслПрПЎПЌ +tile.machine_amgen.name=ГеМератПр Ма фПМПвПй раЎОацОО +tile.machine_ammo_press.name=Пресс Ўля патрПМПв +tile.machine_arc_furnace.name=ЭлектрОческая ЎугПвая печь +tile.machine_arc_furnace_off.name=ДугПвая печь +tile.machine_arc_furnace_on.name=ДугПвая печь +tile.machine_arc_welder.name=ДугПвПй сварщОк +tile.machine_armor_table.name=СтПл ЌПЎОфОкацОО брПМО +tile.machine_ashpit.name=ЗПльМОк +tile.machine_ashpit.desc=СПбОрает зПлу Оз тПпПк О МагревательМых печей +tile.machine_assembler.name=СбПрПчМая ЌашОМа +tile.machine_assemfac.name=СбПрПчМый завПЎ +tile.machine_autocrafter.name=АвтПЌатОческОй верстак +tile.machine_autosaw.name=АвтПЌатОческая пОла +tile.machine_autosaw.desc=Срубает блОжайшОе растеМОя, пересажОвает Ўеревья$ПрОМОЌает:$-ДревесМПе ЌаслП$-ЭтаМПл$-РыбМПе ЌаслП$-Тяжелую Мефть +tile.machine_bat9000.name=Охереть-бПльшая цОстерМа 9000 +tile.machine_battery.name=ЭМергПхраМОлОще +tile.machine_battery_potato.name=КартПфельМая батарея +tile.machine_boiler.name=БПйлер +tile.machine_boiler.desc=БПльшПй бПйлер Ўля кОпячеМОя вПЎы ОлО Магрева МефтО.$Требует вМешМОй ОстПчМОк тепла.$СкПрПсть переЎачО тепла: ΔT*0.01 TU/t +tile.machine_boiler_electric_off.name=ЭлектрОческОй Магреватель МефтО +tile.machine_boiler_electric_on.name=ЭлектрОческОй Магреватель МефтО +tile.machine_boiler_off.name=НагревательМефтО +tile.machine_catalytic_cracker.name=БашМя каталОтОческПгП крекОМга +tile.machine_catalytic_reformer.name=КаталОтОческОй рефПрЌер +tile.machine_centrifuge.name=ЊеМтрОфуга +tile.machine_chemfac.name=ХОЌОческОй завПЎ +tile.machine_chemplant.name=ХОЌОческая устаМПвка +tile.machine_chungus.name=ПарПвая турбОМа "ЛевОафаМ" +tile.machine_chungus.desc=Efficiency: 85%% +tile.machine_coal_off.name=ГеМератПр вМутреММегП сгПраМОя +tile.machine_coal_on.name=ГеМератПр вМутреММегП сгПраМОя +tile.machine_coker.name=КПксПвая устаМПвка +tile.machine_coker.desc=КПксует жОЎкПсть, сПзЎавая жОЎкую пПбПчку.$Требует вМешМОй ОстПчМОк тепла.$СкПрПсть переЎачО тепла: ΔT*0.025 TU/t +tile.machine_combine_factory.name=Печь Ўля сталО АльяМса +tile.machine_combustion_engine.name=ПрПЌышлеММый ЎвОгатель вМутреММегП сгПраМОя +tile.machine_compressor.name=КПЌпрессПр +tile.machine_condenser.name=КПМЎеМсатПр пара +tile.machine_condenser_powered.name=МПщМый кПМЎеМсатПр пара +tile.machine_controller.name=БлПк уЎалёММПгП ЎПступа к реактПру +tile.machine_converter_he_rf.name=КПМвертер эМергОО HE в RF +tile.machine_converter_rf_he.name=КПМвертер эМергОО RF в HE +tile.machine_conveyor_press.name=КПМвейерМый пресс +tile.machine_conveyor_press.desc=ЛеМта ЎвОгается слевП-МаправП$ПКМ чтПбы устаМПвОть штаЌп$ПКМ ПтвёрткПй чтПбы сМять штаЌп +tile.machine_crucible.name=ПлавОльМя +tile.machine_crystallizer.name=РуЎМый ПкОслОтель +tile.machine_cyclotron.name=ЊОклПтрПМ +tile.machine_detector.name=ДетектПр ЌПщМПстО tile.machine_deuterium_extractor.name=ЭкстрактПр тяжёлПй вПЎы tile.machine_deuterium_tower.name=КПлПММа ПчОсткО ЎейтерОя сульфОЎМыЌ прПцессПЌ ГОрЎлера - -tile.machine_mining_laser.desc=3x3x3 Multiblock$Only placeable on a ceiling. -tile.machine_sing_gen.name=Watz Super-Compressor (BETA) -tile.meteor_battery.desc=Provides infinite charge to tesla coils -tile.mush_block.name=Giant Glowing Mushroom Block -tile.mush_block_stem.name=Giant Glowing Mushroom Stem -tile.ore_oil.desc=You weren't supposed to mine that.$Come on, get a derrick you doofus. -tile.pane_acrylic.name=Acrylic Pane -tile.pane_actinium.name=Actinium Glass Pane -tile.storage_aux_fdd.name=Auxiliary Floppy Disk Drive -tile.storage_aux_optical_bd=Auxiliary Elite Optical Drive -tile.storage_aux_optical_cd=Auxiliary Basic Optical Drive -tile.storage_aux_optical_dvd=Auxiliary Advanced Optical Drive -tile.storage_aux_sdd.name=Auxiliary USB Drive -tile.storage_hdd.name=Hard Disk Drive Storage Unit -tile.storage_magnetic.name=Magnetic Data Storage Unit -tile.storage_sdd.name=Solid State Drive Storage Unit +tile.machine_diesel.name=ДОзельМый геМератПр +tile.machine_difurnace_extension.name=РасшОрОтель ЎПЌеММПй печО +tile.machine_difurnace_off.name=ДПЌеММая печь +tile.machine_difurnace_on.name=ДПЌеММая печь +tile.machine_difurnace_rtg_off.name=ЯЎерМая ЎПЌеММая печь +tile.machine_difurnace_rtg_on.name=ЯЎерМая ЎПЌеММая печь +tile.machine_dineutronium_battery.name=Спарк-эМергПхраМОлОще +tile.machine_drain.name=СлОвМая труба +tile.machine_drill.name=АвтПЌатОческОй гПрМый бур +tile.machine_electric_furnace_off.name=ЭлектрОческая печь +tile.machine_electric_furnace_on.name=ЭлектрОческая печь +tile.machine_electrolyser.name=ЭлектрПлОзёр +tile.machine_epress.name=ЭлектрОческОй пресс +tile.machine_excavator.name=БПльшПй гПрМый бур +tile.machine_exposure_chamber.name=КаЌера ПблучеМОя частОцаЌО +tile.machine_fel.name=Лазер Ма свПбПЎМых электрПМах (FEL) +tile.machine_fensu.name=ЭМЭХ +tile.machine_flare.name=ГазПвая башМя +tile.machine_fluidtank.name=ЊОстерМа +tile.machine_forcefield.name=Излучатель сОлПвПгП пПля +tile.machine_fraction_tower.name=РектОфОкацОПММая кПлПММа +tile.machine_fracking_tower.name=БашМя гОЎрПразрыва пласта +tile.machine_funnel.name=КПЌбОМатПрМая вПрПМка +tile.machine_funnel.desc=Automatically compresses items in a 2x2 or 3x3 crafting grid$Top: Input$Bottom: Output$Side: Output for clearing ingredients +tile.machine_gascent.name=ГазПвая цеМтрОфуга +tile.machine_generator.name=ЯЎерМый реактПр (УстаревшОй) +tile.machine_geo.name=ГеПтерЌальМый геМератПр +tile.machine_hephaestus.name=ГеПтерЌальМый теплППбЌеМОк +tile.machine_icf_press.name=ТПплОвМый пресс ICF +tile.machine_icf_press.desc=НапПлМяет тПплОвМые пеллеты ICF$Левый тПплОвМый слПт прОМОЌается сверху/сМОзу, правый - пП бПкаЌ$МюПМы О пеллеты ЌПгут пПЎаваться с любПй стПрПМы +tile.machine_industrial_boiler.name=ПрПЌышлеММый бПйлер +tile.machine_industrial_boiler.desc=БПльшПй бПйлер, в кПтПрПЌ ЌПжМП вскОпятОть вПЎу ОлО разПгреть Мефть.$Требует вМешМОй ОстПчМОк тепла.$СкПрПсть переЎачО тепла: ΔT*0.01 TU/t$Не ЌПжет взПрваться +tile.machine_industrial_generator.name=ПрПЌышлеММый геМератПр +tile.machine_keyforge.name=СтПл Ќастера пП заЌкаЌ +tile.machine_large_turbine.name=ПрПЌышлеММая парПвая турбОМа +tile.machine_large_turbine.desc=ЭффектОвМПсть: 100%% +tile.machine_liquefactor.name=ПрПЌышлеММый разжОжОтель +tile.machine_liquefactor.desc=МПщМая ЌашОМа Ўля превращеМОя преЎЌетПв в жОЎкПстО.$ППставляется с уМОверсальМыЌО каталОтОческОЌО кПЌпПМеМтаЌО, МагревательМыЌО элеЌеМтаЌО$О встрПеММыЌ гОЎратПрПЌ Ўля МефтехОЌОческПгП сжОжеМОя. +tile.machine_lithium_battery.name=ЛОтОй-ОПММПе эМергПхраМОлОще +tile.machine_microwave.name=МОкрПвПлМПвка +tile.machine_mining_laser.name=КахтёрскОй лазер +tile.machine_minirtg.name=РаЎОПОзПтПпМая ячейка +tile.machine_missile_assembly.name=РакетПсбПрПчМая стаМцОя +tile.machine_mixer.name=ПрПЌышлеММый сЌесОтель +tile.machine_nuke_furnace_off.name=ЯЎерМая печь +tile.machine_nuke_furnace_on.name=ЯЎерМая печь +tile.machine_orbus.name=Тяжёлый ЌагМОтМый кПМтейМер Ўля аМтОЌатерОО +tile.machine_ore_slopper.name=ПерерабПтчОк беЎрПкПвПй руЎы +tile.machine_powerrtg.name=ПТ-ОзПтПпМая ячейка +tile.machine_press.name=Пресс +tile.machine_puf6_tank.name=БПчка гексафтПрОЎа плутПМОя +tile.machine_pumpjack.name=СтаМПк-качалка +tile.machine_pyrooven.name=ПОрПлОзМая печь +tile.machine_radar.name=РаЎар +tile.machine_radar_large.name=БПльшПй раЎар +tile.machine_radgen.name=РаЎОацОПММый ЎвОгатель +tile.machine_radiolysis.name=РаЎОПОзПтПпМый терЌПэлектрОческОй геМератПр О каЌера раЎОПлОза +tile.machine_reactor.name=РеактПр-разЌМПжОтель +tile.machine_reactor_small.name=ИсслеЎПвательскОй реактПр +tile.machine_refinery.name=НефтеперерабатывающОй завПЎ +tile.machine_reix_mainframe.name=МэйМфрейЌ Rei-X (WIP) +tile.machine_rotary_furnace.name=Rotary Furnace +tile.machine_rtg_blue.name=КПМвекцОПММый геМератПр +tile.machine_rtg_cyan.name=ГеМератПр КрабОЎОевПгП распаЎа (WIP) +tile.machine_rtg_furnace_off.name=РИТЭГ-печь +tile.machine_rtg_furnace_on.name=РИТЭГ-печь +tile.machine_rtg_green.name=ВертОцОевый геМератПр бПгатства +tile.machine_rtg_grey.name=РИТЭГ-геМератПр +tile.machine_rtg_orange.name=СОльМый RT геМератПр +tile.machine_rtg_purple.name=ГеМератПр аММОгОляцОО аМтОЌатерОО +tile.machine_rtg_red.name=ЀульЌОМацОПММый геМератПр +tile.machine_rtg_yellow.name=АвстралОевый супертПплОвМый геМератПр +tile.machine_satlinker.name=МеМеЎжер ID спутМОкПв +tile.machine_sawmill.name=ЛесПпОлка Ма геМератПре СтОрлОМга +tile.machine_sawmill.desc=Требует вМешМОй ОстПчМОк тепла.$СкПрПсть теплПпереЎачО: T*0.1 TU/t$МОМ. пПтреблеМОе: 100 TU/t, Макс. пПтреблеМОе intake: 300 TU/t +tile.machine_schrabidium_battery.name=КрабОЎОевПе эМергПхраМОлОще +tile.machine_schrabidium_transmutator.name=КрабОЎОевый траМсЌутатПр +tile.machine_selenium.name=РаЎОальМый ЎвОгатель +tile.machine_shredder.name=ИзЌельчОтель +tile.machine_silex.name=КаЌера лазерМПгП разЎелеМОя ОзПтПпПв (SILEX) +tile.machine_siren.name=СОреМа +tile.machine_solar_boiler.name=БПйлер сПлМечМПй башМО +tile.machine_soldering_station.name=ПаяльМый стПл +tile.machine_solidifier.name=ПрПЌышлеММый ПтверЎОтель +tile.machine_solidifier.desc=УМОверсальМая ЌашОМа, ПсМащеММая сОстеЌаЌО ПхлажЎеМОя О ЎругОЌО$уМОверсальМыЌО ОМструЌеМтаЌО Ўля превращеМОя жОЎкПстей в тверЎые вещества с ОспПльзПваМОеЌ разлОчМых$прПцессПв, такОх как заЌПражОваМОе О МефтехОЌОческая пПлОЌерОзацОя. +tile.machine_spp_bottom.name=ГеМератПр пПтеМцОала ZPE (МОз) +tile.machine_spp_top.name=ГеМератПр пПтеМцОала ZPE (верх) +tile.machine_steam_engine.name=ПарПвПй ЎвОгатель +tile.machine_steam_engine.desc=ЭффектОвМПсть: 85%% +tile.machine_stirling.name=ГеМератПр СтОрлОМга +tile.machine_stirling.desc=Превращает теплП в эМергОю. Требует вМешМОй ОстПчМОк тепла.$СкПрПсть теплПпереЎачО: T*0.1 TU/t$МаксОЌальМПе пПтреблеМОе: 300 TU/t$ЭффектОвМПсть: 50%% +tile.machine_stirling_creative.name=ТвПрческОй геМератПр СтОрлОМга +tile.machine_stirling_creative.desc=Превращает теплП в эМергОю. Требует вМешМОй ОстПчМОк тепла.$СкПрПсть теплПпереЎачО: T*0.1 TU/t$БескПМечМПе пПтреблеМОе/t$ЭффектОвМПсть: 100%% +tile.machine_stirling_steel.name=УкреплёММый геМератПр СтОрлОМга +tile.machine_stirling_steel.desc=Превращает теплП в эМергОю. Требует вМешМОй ОстПчМОк тепла.$ИспПльзует бПлее тяжёлую шестерМю, чтПбы выЎержОвать высПкОе теЌпературы.$СкПрПсть теплПпереЎачО: T*0.1 TU/t$МаксОЌальМПе пПтреблеМОе: 1500 TU/t$ЭффектОвМПсть: 50%% +tile.machine_storage_drum.name=БПчка Ўля захПрПМеМОя яЎерМых ПтхПЎПв +tile.machine_strand_caster.name=МашОМа МепрерывМПгП лОтья загПтПвПк +tile.machine_telelinker.name=СтПл телелОМка +tile.machine_teleporter.name=ТелепПрт +tile.machine_tower_large.name=ГраЎОрМя +tile.machine_tower_small.name=ВспПЌПгательМая граЎОрМя +tile.machine_transformer.name=ТраМсфПрЌатПр 10k-20Гц +tile.machine_transformer_20.name=ТраМсфПрЌатПр 10k-1Гц +tile.machine_transformer_dnt.name=ТраМсфПрЌатПр ДНТ-20Гц +tile.machine_transformer_dnt_20.name=ТраМсфПрЌатПр ДНТ-1Гц +tile.machine_turbine.name=ПарПвая турбОМа +tile.machine_turbine.desc=Efficiency: 85%% +tile.machine_turbinegas.name=ГазПвая турбОМа кПЌбОМОрПваММПгП цОкла +tile.machine_turbofan.name=ТурбПвеМтОлятПр +tile.machine_uf6_tank.name=БПчка гексафтПрОЎа ураМа +tile.machine_vacuum_distill.name=ВакууЌМый МефтеперерабатывающОй завПЎ +tile.machine_waste_drum.name=БПчка с ПтрабПтаММыЌ тПплОвПЌ +tile.machine_wood_burner.name=ГеМератПр Ма ЎрПвах +tile.machine_wood_burner.desc=ГеМерОрует 100HE/тОк$СПбОрает зПлу$МПжет сжОгать жОЎкПстО с 25%% эффектОвМПстью за 1ЌБ/с +tile.machine_well.name=НефтяМая вышка +tile.machine_zirnox.name=ЯЎерМый реактПр ЊОрМПкс +tile.marker_structure.name=Маркер Ўля ЌМПгПблПчМых структур +tile.mass_storage.name=НакПпОтельМый блПк +tile.meteor_battery.name=ГеМератПр статОческПгП электрОчества Оз звезЎМПгП Ќеталла +tile.meteor_brick.name=МетеПрОтМые кОрпОчО +tile.meteor_brick_chiseled.name=ВысечеММые ЌетеПрОтМые кОрпОчО +tile.meteor_brick_cracked.name=ТресМувшОе ЌетеПрОтМые кОрпОчО +tile.meteor_brick_mossy.name=ЗаЌшелые ЌетеПрОтМые кОрпОчО +tile.meteor_pillar.name=МетеПрОтМый стПлб +tile.meteor_polished.name=ППлОрПваММый ЌетеПрОтМый блПк +tile.meteor_spawner.name=СбПрщОк кОберкрабПв +tile.mine_ap.name=ПрПтОвПпехПтМая ЌОМа +tile.mine_fat.name=МОМа-"ТПлстяк" +tile.mine_he.name=ПрПтОвПтаМкПвая ЌОМа +tile.mine_shrap.name=МОМа сП шрапМелью +tile.moon_turf.name=ЛуММый груМт +tile.mud_block.name=ТПксОчМые ПтхПЎы +tile.muffler.name=ГлушОтель +tile.mush.name=СветящОйся грОб +tile.ntm_dirt.name=Грязь +tile.nuke_boy.name=Малыш +tile.nuke_custom.name=КастПЌМая бПЌба +tile.nuke_fleija.name=Ѐ.Л.Е.Я +tile.nuke_fstbmb.name=Жар-бПЌба +tile.nuke_gadget.name=ГаЎжет +tile.nuke_man.name=ТПлстяк +tile.nuke_mike.name=ИвО Майк +tile.nuke_n2.name=N²-ЌОМа +tile.nuke_n45.name=МПрская ЌОМа N45 +tile.nuke_prototype.name=ПрПтПтОп +tile.nuke_solinium.name=СОМОй ОпПласкОватель +tile.nuke_tsar.name=Њарь-бПЌба +tile.oil_duct.name=Труба Ўля МефтО +tile.oil_duct_solid.name=ППкрытая труба Ўля МефтО +tile.oil_pipe.name=Труба Ўля ОзвлечеМОя МеПчОщеММПй МефтО +tile.oil_spill.name=РазлОтая Мефть +tile.ore_alexandrite.name=АлексаМЎрОтПвая руЎа +tile.ore_aluminium.name=АлюЌОМОевая руЎа +tile.ore_asbestos.name=АсбестПвая руЎа +tile.ore_australium.name=АвстралОевая руЎа +tile.ore_basalt_asbestos.name=БПгатый асбестПЌ базальт +tile.ore_basalt_fluorite.name=БПгатый флюПрОтПЌ базальт +tile.ore_basalt_gem.name=БПгатый саЌПцветаЌО базальт +tile.ore_basalt_molysite.name=БПгатый ЌПлОзОтПЌ базальт +tile.ore_basalt_sulfur.name=БПгатый серПй базальт +tile.ore_bedrock.name=БеЎрПкПвая руЎа +tile.ore_bedrock_coltan.name=БеЎрПкПвая кПлтаМПвая руЎа +tile.ore_bedrock_oil.name=БеЎрПкПвый МефтяМПй пласт +tile.ore_beryllium.name=БерОллОевая руЎа +tile.ore_cinnebar.name=КОМПварь +tile.ore_coal_oil.name=МасляМОстая угПльМая руЎа +tile.ore_coal_oil_burning.name=ГПрящая ЌасляМОстая угПльМая руЎа +tile.ore_cobalt.name=КПбальтПвая руЎа +tile.ore_coltan.name=КПлтаМПвая руЎа +tile.ore_copper.name=МеЎМая руЎа +tile.ore_daffergon.name=ДеллОт +tile.ore_depth_borax.name=ГлубОММая бура +tile.ore_depth_cinnebar.name=ГлубОММая кОМПварь +tile.ore_depth_nether_neodymium.name=АЎская глубОММая МеПЎОЌПвая руЎа +tile.ore_depth_zirconium.name=ГлубОММая цОркПМОевая руЎа +tile.ore_fluorite.name=ЀлюПрОт +tile.ore_gneiss_asbestos.name=СлаМцевая асбестПвая руЎа +tile.ore_gneiss_copper.name=СлаМцевая ЌеЎМая руЎа +tile.ore_gneiss_gas.name=СлаМцевый газ +tile.ore_gneiss_gold.name=СлаМцевая зПлПтая руЎа +tile.ore_gneiss_iron.name=СлаМцевая железМая руЎа +tile.ore_gneiss_lithium.name=СлаМцевая лОтОевая руЎа +tile.ore_gneiss_rare.name=СлаМцевая реЎкПзеЌельМая руЎа +tile.ore_gneiss_schrabidium.name=СлаМцевая шрабОЎОевая руЎа +tile.ore_gneiss_uranium.name=СлаМцевая ураМПвая руЎа +tile.ore_gneiss_uranium_scorched.name=ОбПжёММая слаМцевая ураМПвая руЎа +tile.ore_lead.name=СвОМцПвая руЎа +tile.ore_lignite.name=Бурый угПль +tile.ore_meteor.aluminium.name=МетеПрОтМая алюЌОМОевая руЎа +tile.ore_meteor.cobalt.name=МетеПрОтМая кПбальтПвая руЎа +tile.ore_meteor.copper.name=МетеПрОтМая ЌеЎМая руЎа +tile.ore_meteor.iron.name=МетеПрОтМая железМая руЎа +tile.ore_meteor.rareearth.name=МетеПрОтМая реЎкПзеЌельМая руЎа +tile.ore_meteor_aluminium.name=Meteor Aluminium Ore +tile.ore_meteor_copper.name=Meteor Copper Ore +tile.ore_meteor_lead.name=МетеПрОтМая свОМцПвая руЎа +tile.ore_meteor_lithium.name=МетеПрОтМая лОтОевая руЎа +tile.ore_meteor_starmetal.name=РуЎа звёзЎМПгП Ќеталла +tile.ore_meteor_sulfur.name=МетеПрОтМая серМая руЎа +tile.ore_meteor_thorium.name=МетеПрОтМая тПрОевая руЎа +tile.ore_meteor_titanium.name=МетеПрОтМая тОтаМПвая руЎа +tile.ore_meteor_tungsten.name=МетеПрОтМая вПльфраЌПвая руЎа +tile.ore_meteor_uranium.name=МетеПрОтМая ураМПвая руЎа +tile.ore_nether_coal.name=ГПрящая руЎа аЎскПгП угля +tile.ore_nether_cobalt.name=АЎская кПбальтПвая руЎа +tile.ore_nether_fire.name=АЎская фПсфПрМая руЎа +tile.ore_nether_plutonium.name=АЎская плутПМОевая руЎа +tile.ore_nether_schrabidium.name=АЎская шрабОЎОевая руЎа +tile.ore_nether_smoldering.name=ТлеющОй аЎскОй каЌеМь +tile.ore_nether_sulfur.name=АЎская серМая руЎа +tile.ore_nether_tungsten.name=АЎская вПльфраЌПвая руЎа +tile.ore_nether_uranium.name=АЎская ураМПвая руЎа +tile.ore_nether_uranium_scorched.name=ОбПжёММая аЎская ураМПвая руЎа +tile.ore_niter.name=СелОтра +tile.ore_oil.name=НефтяМПй карЌаМ +tile.ore_oil_empty.name=ПустПй МефтяМПй карЌаМ +tile.ore_oil_sand.name=БОтуЌПзМый песПк +tile.ore_random.name=РуЎа %s +tile.ore_rare.name=РеЎкПзеЌельМая руЎа +tile.ore_reiium.name=РеООт +tile.ore_schrabidium.name=КрабОЎОевая руЎа +tile.ore_sellafield_diamond.name=СеллафОтПвая алЌазМая руЎа +tile.ore_sellafield_emerald.name=СеллафОтПвая ОзуЌруЎМая руЎа +tile.ore_sellafield_radgem.name=СеллафОтПвый раЎОПактОвМый саЌПцвет +tile.ore_sellafield_schrabidium.name=СеллафОтПвая шрабОЎОевая руЎа +tile.ore_sellafield_uranium_scorched.name=ОбПжжеММая селлафОтПвая ураМПвая руЎа +tile.ore_sulfur.name=Сера +tile.ore_tektite_osmiridium.name=ПереЌешаММый с ПсЌОрОЎОеЌ ТектОт +tile.ore_thorium.name=ТПрОй +tile.ore_tikite.name=ТрОксОт +tile.ore_titanium.name=ТОтаМПвая руЎа +tile.ore_tungsten.name=ВПльфраЌПвая РуЎа +tile.ore_unobtainium.name=БрайтблеМЎ +tile.ore_uranium.name=УраМПвая руЎа +tile.ore_uranium_scorched.name=ОбПжжеММая ураМПвая руЎа +tile.ore_verticium.name=ДПлларПвый ЗелёМый ЌОМерал +tile.ore_volcano.name=ГеПтерЌальМый ОстПчМОк +tile.ore_weidanium.name=ВейЎОтОт +tile.pa_beamline.name=КаМал пучка +tile.pa_beamline.desc=НеПбязательМая часть, сПеЎОМяет разМые частО ускПрОтеля частОц.$Также пПзвПляет МеЎПрПгП увелОчОть разЌер кПльца,$Ўля сППтветствОя требПваМОяЌ ЎОпПля к разЌеру катушкО. +tile.pa_detector.name=ДетектПр частОц +tile.pa_detector.desc=Требует ПхлажЎеМОя!$ПрОМОЌает частОцы О выпПлМяет рецепт.$Рецепты ЌПгут требПвать кПМтейМеры (капсулы Ўля частОц).$Для прОёЌа частОцы её расфПкус ЎПлжеМ быть равеМ 0. +tile.pa_dipole.name=ДОпПльМые ЌагМОты +tile.pa_dipole.desc=Требует ПхлажЎеМОя!$ПереМаправляет частОцы Ма ПсМПве Ох ЌПЌеМта.$ИЌеет выхПЎы МОже пПрПга,$выше пПрПга О тПлькП выше пПрПга прО пПЎаММПЌ сОгМале красМПгП каЌМя.$Требует бПльшую катушку Ўля рабПты. +tile.pa_quadrupole.name=КваЎрупПльМые ЌагМОты +tile.pa_quadrupole.desc=Требует ПхлажЎеМОя!$УЌеМьшает расфПкус частОцы Ма 100 еЎОМОц.$Требует бПльшую катушку Ўля рабПты +tile.pa_rfc.name=РаЎОПчастПтМый резПМатПр +tile.pa_rfc.desc=Требует ПхлажЎеМОя!$УскПряет частОцы Ма 100 еЎОМОц,$О увелОчОвает расфПкус Ма 100 еЎОМОц.$ЧастОца стПлкМется прО ЎПстОжеМОО расфПкуса в 1000 еЎОМОц. +tile.pa_source.name=ИстПчМОк частОц +tile.pa_source.desc=Требует ПхлажЎеМОя!$ИспПльзует Ўва преЎЌета чтПбы сПзЎать частОцу. +tile.part_emitter.name=ДекПратОвМый ОстПчМОк частОц +tile.pedestal.name=ПьеЎестал +tile.pink_barrel.name=КерПсОМПвая бПчка +tile.pink_log.name=РПзПвПе ЎеревП +tile.pink_planks.name=РПзПвые ЎПскО +tile.pink_slab.name=ПлОта Оз рПзПвПгП Ўерева +tile.pink_stairs.name=СтупеМькО Оз рПзПвПгП Ўерева +tile.piston_inserter.name=ВставщОк +tile.piston_inserter.desc=МПжет прОМОЌать ПЎОМ преЎЌет$ЕслО пПЎаМ сОгМал реЎстПуМа, тП вставОт преЎЌет в прПсверлеММый графОт$Все преЎЌеты в прПсверлеММПЌ графОте в цепПчке буЎут сЎвОМуты Ма ПЎОМ блПк$Требуется ПЎОМ блПк вПзЎуха ЌежЎу графОтПЌ +tile.plant_dead.name=МертвПе растеМОе +tile.plant_flower.cd0.name=ГПрчОчМая Ова +tile.plant_flower.cd1.name=ГПрчОчМая Ова +tile.plant_flower.foxglove.name=НаперстяМка +tile.plant_flower.nightshade.name=БеллаЎПММа +tile.plant_flower.tobacco.name=Табак +tile.plant_flower.weed.name=КПМПпля +tile.plant_reeds.name=КаЌышО +tile.plant_tall.cd2.name=ГПрчОчМая Ова +tile.plant_tall.cd3.name=ГПрчОчМая Ова +tile.plant_tall.cd4.name=ГПрчОчМая Ова (ВырПсла) +tile.plant_tall.weed.name=КПМПпля +tile.plasma.name=ПлазЌа +tile.plasma_heater.name=Нагреватель плазЌы +tile.plushie.name=Плюшевая Огрушка %s +tile.pole_satellite_receiver.name=СпутМОкПвая тарелка +tile.pole_top.name=АМтеММа +tile.press_preheater.name=ВМешМОй Магреватель пресса +tile.pribris.name=ОблПЌкО РБМК +tile.pribris_burning.name=ГПрящОе ПблПЌкО РБМК +tile.pribris_digamma.name=ППчерМевшОе ПблПЌкО РБМК +tile.pribris_radiating.name=ТлеющОе ПблПЌкО РБМК +tile.pump_electric.name=ЭлектрОческОй МасПс Ўля груМтПвых вПЎ +tile.pump_electric.desc=ИспПльзует электрОчествП Ўля выкачОваМОя груМтПвых вПЎ$Выкачывает ЎП 10,000ЌБ/тОк$ДПлжМП быть разЌещеМП МОже Y:70 +tile.pump_steam.name=ПарПвПй МасПс Ўля груМтПвых вПЎ +tile.pump_steam.desc=ИспПльзует пар Ўля выкачОваМОя груМтПвых вПЎ$Выкачывает ЎП 1000ЌБ/тОк$ДПлжМП быть разЌещеМП МОже Y:70 +tile.pwr_block.name=ВПЎП-вПЎяМПй эМергетОческОй реактПр (ВВЭР) +tile.pwr_casing.name=ВМешМяя ПбшОвка ВВЭР +tile.pwr_casing.desc=Для фПрЌОрПваМОя реактПра МеПбхПЎОЌП пПкрыть все вМутреММОе частО$РазЌещеМОе: ОбшОвка +tile.pwr_channel.name=КаМалы с ПхлаЎОтелеЌ ВВЭР +tile.pwr_channel.desc=ИспПльзует теплП кПрпуса Ўля Магрева ПхлажЎающей жОЎкПстО$РазЌещеМОе: ЛюбПе +tile.pwr_control.name=РегулОрующОе стержМО ВВЭР +tile.pwr_control.desc=ППзвПляет управлять разЌещёММыЌО тПплОвМыЌО стержМяЌО$РазЌещеМОе: ВМутрО, ЌежЎу тПплОвМыЌО стержМяЌО +tile.pwr_controller.name=КПМтрПллер ВВЭР +tile.pwr_controller.desc=ПаМель управлеМОя ВВЭР$РазЌещеМОе: ОбшОвка, тПлькП ПЎОМ Ма весь реактПр$ПКМ чтПбы сПбрать реактПр +tile.pwr_fuel.name=ТПплОвМый стержеМь ВВЭР +tile.pwr_fuel.desc=УвелОчОвает вЌестОЌПсть тПплОва$РазЌещеМОе: ВМутрО, пПвышает реактОвМПсть +tile.pwr_heatex.name=ТеплППбЌеММОк ВВЭР +tile.pwr_heatex.desc=ПереЌещает теплП Оз актОвМПй зПМы Ма кПрпус$РазЌещеМОе: ЛюбПе +tile.pwr_heatsink.name=РаЎОатПр ВВЭР +tile.pwr_heatsink.desc=УвелОчОвает теплПеЌкПсть актОвМПй зПМы Ма 5%%$Делает каМалы ПхлажЎающей жОЎкПстО О теплППбЌеММОкО чуть ЌеМее эффектОвМыЌО$РазЌещеМОе: ЛюбПе +tile.pwr_neutron_source.name=ИстПчМОк МейтрПМПв ВВЭР +tile.pwr_neutron_source.desc=ДПбавляет 20 еЎОМОц пПтПка в актОвМую зПМу$РазЌещеМОе: ЛюбПе$ППтПк ЎПстОгает тПплОвМых стержМей еслО ЌежЎу МОЌО МОчегП Мет +tile.pwr_port.name=Люк ЎПступа ВВЭР +tile.pwr_port.desc=ВвПЎ/вывПЎ жОЎкПстей О преЎЌетПв$РазЌещеМОе: ОбшОвка +tile.pwr_reflector.name=НейтрПММый Птражатель ВВЭР +tile.pwr_reflector.desc=Отражает МейтрПМы ПбратМП к тПплОвМыЌ стержМяЌ$РазЌещеМОе: ВМутрО, пПвышает реактОвМПсть$ППЎхПЎОт Ўля ПбшОвкО +tile.rad_lava_block.name=ВулкаМОческая лава +tile.radar_screen.name=ЭкраМ раЎара +tile.radio_telex.name=Телекс +tile.radio_torch_counter.name=РеЎстПуМ-раЎОП счётчОк преЎЌетПв +tile.radio_torch_counter.desc=СтавОтся Ма плПскОе пПверхМПстО ОлО сПвЌестОЌые кПЌпаратПрМые блПкО$СОгМал завОсОт Пт кПлОчества МужМых преЎЌетПв +tile.radio_torch_logic.name=РеЎстПуМ-раЎОП лПгОческОй прОёЌМОк +tile.radio_torch_logic.desc=РазЌещается Ма плПскОх пПверхМПстях ОлО сПвЌестОЌых с кПЌпаратПрПЌ блПках$СПпПставляет сОгМалы красМПгП каЌМя с услПвОяЌО, ПцеМОваеЌыЌО в заЎаММПЌ пПряЎке$ЧОслПвые ОлО стрПкПвые вхПЎы сравМОваются с кПМстаМтПй +tile.radio_torch_receiver.name=РеЎстПуМ-раЎОП прОёЌМОк +tile.radio_torch_receiver.desc=СтавОтся Ма плПскОе пПверхМПстО ОлО сПвЌестОЌые кПЌпаратПрМые блПкО +tile.radio_torch_sender.name=РеЎстПуМ-раЎОП переЎатчОк +tile.radio_torch_sender.desc=СтавОтся Ма плПскОе пПверхМПстО ОлО сПвЌестОЌые кПЌпаратПрМые блПкО$СчОтывает реЎстПуМ сОгМал ОлО вхПЎ кПЌпаратПра +tile.radiobox.name=КПрПбка управлеМОя вреЎОтеляЌО РПзеМберга +tile.radiorec.name=FM раЎОП +tile.rail_booster.name=УскПряющОе высПкПскПрПстМые рельсы +tile.rail_highspeed.name=ВысПкПскПрПстМые рельсы +tile.rail_large_buffer.name=СтаМЎартМый буферМый упПрМый рельс (5ÐŒ) +tile.rail_large_curve.name=СтаМЎартМая крОвая кПлея (5ÐŒ) +tile.rail_large_curve_7.name=СтаМЎартМая крОвая кПлея (7ÐŒ) +tile.rail_large_curve_9.name=СтаМЎартМая крОвая рельса (9ÐŒ) +tile.rail_large_ramp.name=СтаМЎартМая раЌпа (5ÐŒ) +tile.rail_large_straight.name=СтаМЎартМая кПлея (5ÐŒ) +tile.rail_large_straight_short.name=СтаМЎартМая кПлея (1ÐŒ) +tile.rail_large_switch.name=Переключатель стаМЎартМПй кПлеО (15ÐŒ, левый) +tile.rail_large_switch_flipped.name=Переключатель стаМЎартМПй кПлеО (15ÐŒ, правый) +tile.rail_narrow.name=УзкПкПлейМые вагПМетПчМые рельсы +tile.rail_wood.name=ДеревяММые рельсы +tile.rbmk_absorber.name=БПрМый пПглПтОтель МейтрПМПв РБМК +tile.rbmk_blank.name=СтруктурМая кПлПММа РБМК +tile.rbmk_boiler.name=ПарПвПй каМал РБМК +tile.rbmk_console.name=КПМсПль РБМК +tile.rbmk_cooler.name=ОхлаЎОтель РБМК +tile.rbmk_control.name=РегулОрующОе стержМО РБМК +tile.rbmk_control_auto.name=АвтПЌатОческОе регулОрующОе стержМО РБМК +tile.rbmk_control_mod.name=ЗаЌеЎляющОе регулОрующОе стержМО РБМК +tile.rbmk_crane_console.name=КПМсПль краМа РБМК +tile.rbmk_heater.name=ЖОЎкПстМый Магреватель РБМК +tile.rbmk_heatex.name=ТеплППбЌеММОк РБМК +tile.rbmk_loader.name=ПарПвПй прПвПЎМОк РБМК +tile.rbmk_loader.desc=ППзвПляет РБМК ОЌеть вМОзу сПеЎОМеМОя Ўля вПЎы О пара$ППЌестОте ПЎМу вПЎМую трубу пПЎ кПлПММПй РБМК, затеЌ прПвПЎМОк,$пПтПЌ пПЎключОте парПпрПвПЎ к прПвПЎМОку. +tile.rbmk_moderator.name=ГрафОтПвый заЌеЎлОтель РБМК +tile.rbmk_outgasser.name=СтержеМь ПблучеМОя РБМК +tile.rbmk_reflector.name=КарбОЎ-вПльфраЌПвый Птражатель МейтрПМПв РБМК +tile.rbmk_rod.name=ТПплОвМые стержМО РБМК +tile.rbmk_rod_mod.name=ЗаЌеЎляющОе тПплОвМые стержМО РБМК +tile.rbmk_rod_reasim.name=ТПплОвМые стержМО РБМК (РеаСОЌ) +tile.rbmk_rod_reasim_mod.name=ЗаЌеЎляющОе тПплОвМые стержМО РБМК (РеаСОЌ) +tile.rbmk_steam_inlet.name=ППрт ввПЎа вПЎы РБМК РеаСОЌ +tile.rbmk_steam_inlet.desc=ППЎает вПЎу в кПлПММы RBMK, еслО включеМы ReaSim бПйлеры$ППЎключается к кПлПММаЌ RBMK сбПку +tile.rbmk_steam_outlet.name=ППрт вывПЎа пара РБМК РеаСОЌ +tile.rbmk_steam_outlet.desc=Извлекает перегретый пар Оз кПлПММ РБМК, еслО включеМы ReaSim бПйлеры$ППЎключается к кПлПММаЌ RBMK сбПку +tile.rbmk_storage.name=КПлПММа-храМОлОще РБМК +tile.reactor_computer.name=КПМтрПллер реактПра +tile.reactor_conductor.name=БПйлер реактПра +tile.reactor_control.name=РегулОрующОе стержМО +tile.reactor_ejector.name=ВыталкОватель ПтхПЎПв реактПра +tile.reactor_element.name=РеактПрМая каЌера +tile.reactor_hatch.name=Люк ЎПступа реактПра +tile.reactor_inserter.name=АвтПЌатОческОй заправщОк реактПра +tile.red_barrel.name=ВзрывМая бПчка +tile.red_cable.name=ПрПвПЎ Оз красМПй ЌеЎО +tile.red_cable_classic.name=ПрПвПЎ Оз красМПй ЌеЎО (Старый) +tile.red_cable_gauge.name=ДатчОк ЌПщМПстО +tile.red_cable_gauge.desc=Кабель, кПтПрый пПказывает, скПлькП эМергОО$ переЌещается пП сетО за тОк.$РазЎелеММые сетО, сПеЎОМеММые блПкаЌО храМеМОя эМергОО$рассЌатрОваются как ПЎМа Пбщая сеть. +tile.red_cable_paintable.name=ОкрашОваеЌый прПвПЎ Оз красМПй ЌеЎО +tile.red_connector.name=ЭлектрОческОй кПММектПр +tile.red_pylon.name=Малый электрОческОй стПлб +tile.red_pylon_large.name=ЛЭП +tile.red_pylon_medium_steel.name=СреЎМОй стальМПй электрОческОй стПлб +tile.red_pylon_medium_steel_transformer.name=СреЎМОй стальМПй электрОческОй стПлб с траМсфПрЌатПрПЌ +tile.red_pylon_medium_wood.name=СреЎМОй ЎеревяММый электрОческОй стПлб +tile.red_pylon_medium_wood_transformer.name=СреЎМОй ЎеревяММый электрОческОй стПлб с траМсфПрЌатПрПЌ +tile.red_wire_coated.name=МеЎМый кабель с пПкрытОеЌ +tile.refueler.name=Refueling Station +tile.reinforced_brick.name=УсОлеММый каЌеМь +tile.reinforced_brick_stairs.name=СтупеМО Оз укреплёММПгП каЌМя +tile.reinforced_ducrete.name=УсОлеММый Ўюкрет +tile.reinforced_glass.name=УсОлеММПе стеклП +tile.reinforced_glass_pane.name=УсОлеММая стекляММая паМель +tile.reinforced_lamp_off.name=УсОлеММая лаЌпа +tile.reinforced_lamp_on.name=УсОлеММая лаЌпа +tile.reinforced_light.name=УсОлеММый светящОйся каЌеМь +tile.reinforced_sand.name=УсОлеММый песчаМОк +tile.reinforced_stone.name=УплПтМеММый каЌеМь +tile.reinforced_stone_stairs.name=СтупеМО Оз уплПтМёММПгП каЌМя +tile.reinforced_laminate.name=УсОлеММый лаЌОМат +tile.reinforced_laminate_pane.name=УсОлеММая лаЌОМатМая паМель +tile.rejuvinator.name=ГЭКК +tile.residue.name=ОблачМый ПсаЎПк +tile.safe.name=Сейф +tile.sand_boron.name=БПрМый песПк +tile.sand_boron_layer.name=СлПй бПрМПгП песка +tile.sand_dirty.name=ПрПпОтаММый Мефтью песПк +tile.sand_dirty_red.name=ПрПпОтаММый Мефтью красМый песПк +tile.sand_gold.name=ЗПлПтПй песПк +tile.sand_gold198.name=ПесПк Оз зПлПта-198 +tile.sand_lead.name=СвОМцПвый песПк +tile.sand_polonium.name=ППлПМОевый песПк +tile.sand_quartz.name=Кварцевый песПк +tile.sand_uranium.name=УраМПвый песПк +tile.sat_dock.name=СтаМцОя пПсаЎкО груза +tile.sat_foeq.name=ВСАП-МК.I зПМЎ “FOEQ Duna” с эксперОЌеМтальМыЌ яЎерМыЌ ЎвОгателеЌ (ДекПр) +tile.sat_laser.name=ОрбОтальМый Луч СЌертО (ДекПр) +tile.sat_mapper.name=СпутМОк Ўля картПграфОрПваМОя пПверхМПстО (ДекПр) +tile.sat_radar.name=СпутМОк с раЎОПлПкацОПММыЌ зПМЎОрПваМОеЌ (ДекПр) +tile.sat_resonator.name=СпутМОк с ЗеМ-РезПМатПрПЌ (ДекПр) +tile.sat_scanner.name=СпутМОк с ЌПЎулеЌ глубОММП-ресурсМПгП скаМОрПваМОя (ДекПр) +tile.schrabidic_block.name=КрабОЎОевая кОслПта +tile.seal_controller.name=Открыватель люка пускПвПй щахты +tile.seal_frame.name=РаЌа люка пускПвПй щахты +tile.seal_hatch.name=Люк пускПвПй шахты +tile.sellafield.0.name=СеллафОт +tile.sellafield.1.name=ГПрячОй селлафОт +tile.sellafield.2.name=КОпящОй селлафОт +tile.sellafield.3.name=ПылающОй селлафОт +tile.sellafield.4.name=АЎскОй селлафОт +tile.sellafield.5.name=СеллафОт-кПрОуЌ +tile.sellafield_bedrock.name=БеЎрПкПвый селлафОт +tile.sellafield_slaked.name=ППгашеММый селлафОт +tile.semtex.name=СеЌтекс +tile.silo_hatch.name=СОлПсМый люк +tile.silo_hatch_large.name=БПльшПй сОлПсМый люк +tile.sliding_blast_door.name=РазЎвОжМая Ўверь +tile.solar_mirror.name=ЗеркалП-гелОПстат +tile.soyuz_capsule.name=ГрузПвая пПсаЎПчМая капсула +tile.soyuz_launcher.name=СтартПвая платфПрЌа "СПюза" +tile.spikes.name=КОпы +tile.snowglobe.name=СМежМый шар +tile.spotlight_incandescent.name=ЛаЌпа в клетке +tile.spotlight_fluoro.name=ЀлюПресцеМтМая лаЌпа +tile.spotlight_halogen.name=ГалПгеММый прПжектПр +tile.stalactite.asbestos.name=АсбестПвый сталактОт +tile.stalactite.sulfur.name=СерМОстый сталактОт +tile.stalagmite.asbestos.name=АсбестПвый сталагЌОт +tile.stalagmite.sulfur.name=СерМОстый сталагЌОт +tile.steel_beam.name=СтальМая балка +tile.steel_corner.name=СтальМПй угПл стеМы +tile.steel_grate.name=СтальМая решётка +tile.steel_grate_wide.name=ПреЎЌетМая решётка +tile.steel_grate_wide.desc=ППзвПляет Ппыту О преЎЌетаЌ паЎать через Меё +tile.steel_poles.name=СтальМые ПпПры +tile.steel_roof.name=ПлПская стальМая крыша +tile.steel_scaffold.name=СтальМые пПЎЌПстО +tile.steel_wall.name=СтальМая стеМка +tile.stone_cracked.name=ТресМутый каЌеМь +tile.stone_depth.name=ГлубОММый каЌеМь +tile.stone_depth_nether.name=АЎскОй глубОММый каЌеМь +tile.stone_gneiss.name=ГрафОтПвый слаМец +tile.stone_keyhole.name=СтраММый каЌеМь +tile.stone_keyhole_meta.name=Strange Red Room Brick +tile.stone_porous.name=ППрОстый каЌеМь +tile.stone_resource.asbestos.name=ХрОзПтОл +tile.stone_resource.bauxite.name=БПксОт +tile.stone_resource.hematite.name=ГеЌатОт +tile.stone_resource.limestone.name=ИзвестМяк +tile.stone_resource.malachite.name=МалахОт +tile.stone_resource.sulfur.name=СерМОстый каЌеМь +tile.struct_icf_core.name=ЯЎрП ОМерцОальМПгП терЌПяЎерМПгП реактПра (ICF) +tile.struct_iter_core.name=ЯЎрП терЌПяЎерМПгП реактПра +tile.struct_launcher.name=БлПк-кПЌпПМеМт пускПвПй плПщаЎкО tile.struct_launcher_core.name=Compact Launch Pad Core Component -tile.turret_cwis.desc=Hmmm today I will use an anti-missile turret agains mobs$ $Why does it not work???$bob pls fix -tile.turret_lunar_oni.desc=Standard armament for Anti-Oni type Lunariun Vijokas$Covered in the standard highly durable armor plating: Orichalcum$Can be used without the Vijoka, of course$Designed after Bishamonten's pagoda$To bring an end to suffering -tile.turret_lunar_oni.name=Lunarian Strategic Focused Energy Platform - Divine Light (ALPHA) +tile.struct_launcher_core_large.name=ЯЎрП бПльшПй пускПвПй плПщаЎкО +tile.struct_plasma_core.name=ЯЎрП Магревателя плазЌы +tile.struct_scaffold.name=ППЎЌПстПк пускПвПй плПщаЎкО +tile.struct_soyuz_core.name=ЯЎрП стартПвПй плПщаЎкО СПюза +tile.struct_watz_core.name=ЯЎрП Ватцз-реактПра +tile.substation.name=ППЎстаМцОя +tile.sulfuric_acid_block.name=СерМая кОслПта +tile.taint.name=ППрча +tile.taint_barrel.name=БПчка с ПсаЎкПЌ IMP +tile.tape_recorder.name=МагМОтПфПМ +tile.tektite.name=ТектОт +tile.teleanchor.name=ТелепПртацОПММый якПрь +tile.tesla.name=Катушка Теслы +tile.test_nuke.name=ТестПвая бПЌба +tile.therm_endo.name=ЭМЎПтерЌОческая бПЌба +tile.therm_exo.name=ЭкзПтерЌОческая бПЌба +tile.tile_lab.name=ЛабПратПрМая плОтка +tile.tile_lab_broken.name=РазбОтая лабПратПрМая плОтка +tile.tile_lab_cracked.name=ТресМувшая лабПратПрМая плОтка +tile.tnt_ntm.name=НастПящОй ТНТ +tile.toxic_block.name=СтереПтОпМая зелёМая слОзь +tile.transition_seal.name=ТраМзОтМый люк +tile.turret_arty.name=АртОллерОйская турель "Грег" +tile.turret_cheapo.name=Дешёвая пулеЌётМая турель +tile.turret_chekhov.name=КрупМПкалОберМая пулеЌетМая турель "ЧехПвскПе ружьё" +tile.turret_cwis.name=”ЀэлеМкс” Mk-15 CIWS +tile.turret_flamer.name=Турель с ПгМеЌётПЌ +tile.turret_friendly.name=Турель ГатлОМга "МОстер ДружелюбМый" +tile.turret_fritz.name=Тяжелая ПгМеЌетМая турель "ЀрОц" +tile.turret_heavy.name=Турель с тяжёлыЌ пулеЌётПЌ +tile.turret_himars.name=РакетМая артОллерОйская турель "ГеМрО" +tile.turret_howard.name=ДвПйМая турель ГатлОМга CIWS "ГПварЎ" +tile.turret_howard_damaged.name=ДвПйМая турель ГатлОМга CIWS "МафусаОл" +tile.turret_jeremy.name=АвтПпушка "ДжереЌО" +tile.turret_light.name=Турель с лёгкОЌ пулеЌётПЌ +tile.turret_maxwell.name=ВысПкПэМергетОческая МазерМая турель "Максвелл" tile.turret_rocket.name=Rocket Turret -tile.turret_twr.desc="Spacetime Displacing Singularity-Armed Weapon$Platform with Heisenberg Uncertainty Targeting Matrix 'Lord Tsukuyomi'"$Heavy emplaced defence weapon for very high threat targets$Targets cannot escape divine judgement due to exploitation of quantum uncertainty$Named after the Lord of the Moon and night himself -tile.turret_twr.name=Lunarian Time Warp Weapon Platform "Lord Tsukuyomi" (BETA) +tile.turret_richard.name=РакетМая турель "РОчарЎ" +tile.turret_spitfire.name=Турель без МазваМОя [WIP] +tile.turret_sentry.name=СтПрПжевая турель "БрауМ" +tile.turret_sentry_damaged.name=СтПрПжевая турель "ЭЎвОМ" +tile.turret_tau.name=Турель с тау-пушкПй +tile.turret_tauon.name=ПрПтПтОп турелО XVL1456 "ТауПМ" +tile.vacuum.name=ВакууЌ +tile.vault_door.name=Дверь убежОща Vault-Tec +tile.vent_chlorine.name=ХлПрМый клапаМ +tile.vent_chlorine_seal.name=ХлПрМый уплПтМОтель +tile.vent_cloud.name=ВПзЎушМый клапаМ с ПблакПЌ +tile.vent_pink_cloud.name=ВПзЎушМый клапаМ с рПзПвыЌ ПблакПЌ +tile.vinyl_tile.large.name=БПльшая вОМОлПвая плОтка +tile.vinyl_tile.small.name=МалеМькОе вОМОлПвые плОткО +tile.vitrified_barrel.name=БПчка с ПстеклПваММыЌО яЎерМыЌО ПтхПЎаЌО +tile.volcanic_lava_block.name=ВулкаМОческая лава +tile.volcano_core.name=ВулкаМОческПе яЎрП +tile.volcano_rad_core.name=РаЎОПактОвМПе вулкаМОческПе яЎрП +tile.wand_air.name=Structure Wand Block (Air) +tile.wand_loot.name=Structure Wand Block (Lootable) +tile.wand_jigsaw.name=Structure Wand Block (Jigsaw) +tile.waste_earth.name=Мертвая трава +tile.waste_leaves.name=Мёртвые лОстья +tile.waste_log.name=ОбуглеММПе бревМП +tile.waste_mycelium.name=СветящОйся ЌОцелОй +tile.waste_planks.name=ОбуглеММые ЎеревяММые ЎПскО +tile.waste_trinitite.name=ТрОМОтОтПвая руЎа +tile.waste_trinitite_red.name=КрасМая трОМОтОтПвая руЎа +tile.watz.name=РеактПр Ватцз +tile.watz_conductor.name=ППрт электрОчества Ватцза +tile.watz_control.name=УпрПчМёММые регулОрующОе стержМО +tile.watz_cooler.name=СуперПхлаЎОтель реактПра Ватцза +tile.watz_core.name=КПМтрПллер реактПра Ватцза +tile.watz_element.name=КаЌера реакцОО Ватцза +tile.watz_end.name=СтабОлОзатПр реактПра Ватцза +tile.watz_end_bolted.name=СтабОлОзатПр реактПра Ватцза (ЗаклепаММый) +tile.watz_hatch.name=Люк ЎПступа к реактПру Ватцза +tile.watz_pump.name=НагМетающая пПЌпа Ватцза +tile.yellow_barrel.name=РаЎОПктОвМая бПчка +tile.zirnox_destroyed.name=РазрушеММый ЊОрМПкс -trait.BERYLLIUM=Beryllium Particles -trait.CHEMICAL=Chemical Hazard -trait.HEAVY_METAL=Heavy Metal -trait.corruptedHeavy=Heavily Corrupted -trait.corruptedLight=Lightly Corrupted -trait.corrutpedAbsolute=Completely Corrupted -trait.damaged=Damaged -trait.dirty=Dirty -twr.ammo=SINGULARITIES: %s / %s -twr.gui.add=Add new entity to elimination register -twr.gui.calibrate=Calibrate entanglement for ideal targeting -twr.gui.clear=Remove current singularity -twr.gui.down=Move cursor down -twr.gui.purify=Commence divine judgement -twr.gui.recalibrating=RECALIBRATING HEISENBERG$UNCERTAINTY QUANTUM TARGETING$MATRIX...$CURRENT QUANTUM INSTABILITY: %s -twr.gui.remove=Remove entity from elimination register -twr.gui.search=Initiate quantum search for specified entities$and truncate invalid entities -twr.gui.up=Move cursor up -twr.result.checking=DETERMINING... -twr.result.fail=FAILED -twr.result.partial=INDETERMINATE -twr.result.success=ELIMINATED -twr.result=UNCERTAINTY: %s -twr.sign=QUANTUM SIGNATURE: %s -twr.target.lost=[LOST CONTACT!] -twr.target.none=[NONE] -twr.target.search=[SEARCHING...] -twr.target=TARGET: %s -twr.title=TIME WARP RIFLE QUANTUM TARGETING -twr.zoom=ZOOM: x%s +tile.large_vehicle_door.name=Дверь Ўля крупМПгабарОтМых автПЌПбОлей +tile.water_door.name=ППЎвПЎМая Ўверь +tile.qe_containment.name=QE Дверь бОПлПгОческПгП сЎержОваМОя +tile.qe_sliding_door.name=QE РазЎвОжМая Ўверь +tile.round_airlock_door.name=Круглый шлюз +tile.secure_access_door.name=Дверь с ОзПлОрПваММыЌ ЎПступПЌ +tile.sliding_seal_door.name=РазЎвОжМая герЌетОчМая Ўверь -warhead.AMAT=Antimatter -warhead.BF=Balefire -warhead.BIO.ANTHRAX=Anthrax -warhead.BIO.MKU=MKUNICORN -warhead.BIO=Biological (%s) -warhead.CHEM.ACID=Caustics -warhead.CHEM.CHLORINE=Chlorine -warhead.CHEM.NERVE=Sarin -warhead.CHEM.TOX=Biotoxin -warhead.CHEM=Chemical (%s) -warhead.FUSION=Pure Fusion -warhead.GRAV=Gravimetric -warhead.HE=Conventional -warhead.NUCLEAR=Nuclear -warhead.SCHRAB=Schrabidium -warhead.TX=Thermonuclear -warhead.ZPE=Quantum +trait.asbestos=СПЎержОт асбест +trait.blinding=ОслеплеМОе +trait.coal=УгПльМая пыль +trait.digamma=ДОгаЌЌа раЎОацОя +trait.drop=ОпасМП выкОЎывать +trait.explosive=ВПсплаЌеМяющОйся / ВзрывППпасМый +trait.furnace=Даёт %s ПперацОй в яЎерМПй печО +trait.heat=ОбеспечОвает %s ТЕПЛА +trait.hlParticle=ПерОПЎ ППлураспаЎа ЧастОцы: %s +trait.hlPlayer=ПерОПЎ ППлураспаЎа ИгрПка: %s +trait.hot=ПОрПфПрМый / ГПрячОй +trait.hydro=ГОЎрПреактОвМый +trait.radioactive=РаЎОПактОвМый +trait.radResistance=СПпрПтОвлеМОе раЎОацОО: %s -warheadFuel.ACID=Caustics -warheadFuel.ANTHRAX=Anthrax -warheadFuel.Am242m=Americium-242m -warheadFuel.Au197=Gold -warheadFuel.Au198=Gold-198 -warheadFuel.Co59=Cobalt -warheadFuel.Co60=Cobalt-60 -warheadFuel.Cs137=Caesium-137 -warheadFuel.DEUT=Deuterium -warheadFuel.GRAV=Gravimetric Charge -warheadFuel.HE=Semtex-H -warheadFuel.LI=Lithium -warheadFuel.LiDEUT=Lithium-Deuteride -warheadFuel.NERVE=Sarin -warheadFuel.Np237=Neptunium-237 -warheadFuel.Pu239=Plutonium-239 -warheadFuel.Pu240=Plutonium-240 -warheadFuel.Pu241=Plutonium-241 -warheadFuel.Sa326=Schrabidium-326 -warheadFuel.Sa327=Schrabidium-327 -warheadFuel.Sr90=Strontium-90 -warheadFuel.TRIT=Tritium -warheadFuel.Ta181=Tantalum -warheadFuel.Ta182=Tantalum-182 -warheadFuel.U233=Uranium-233 -warheadFuel.U235=Uranium-235 +trait.rbmk.coreTemp=ТеЌпература стержМя: %s +trait.rbmk.depletion=ОбеЎМеМОе: %s +trait.rbmk.diffusion=РассеОваМОе: %s +trait.rbmk.fluxFunc=ЀуМкцОя пПтПка: %s +trait.rbmk.funcType=ТОп фуМкцОО: %s +trait.rbmk.heat=ТеплП за тОк прО пПлМПй ЌПщМПстО: %s +trait.rbmk.melt=ТПчка плавлеМОя: %s +trait.rbmk.neutron.any=Любые МейтрПМы +trait.rbmk.neutron.fast=Быстрые МейтрПМы +trait.rbmk.neutron.slow=МеЎлеММые МейтрПМы +trait.rbmk.skinTemp=ТеЌпература ПбПлПчкО стержМя: %s +trait.rbmk.source=СаЌПвПсплаЌеМяющОйся +trait.rbmk.splitsInto=РаспаЎается Ма: %s +trait.rbmk.splitsWith=РаспаЎается с: %s +trait.rbmk.xenon=КсеМПМПвПе ПтравлеМОе: %s +trait.rbmk.xenonBurn=ЀуМкцОя выгПраМОя ксеМПМа: %s +trait.rbmk.xenonGen=ЀуМкцОя МакПплеМОя ксеМПМа: %s -warheadFuse=Fuse: %s +trait.rbmx.coreTemp=РазрушеМОе стержМя: %s +trait.rbmx.depletion=КПрПчка: %s +trait.rbmx.diffusion=ППтПк: %s +trait.rbmx.fluxFunc=ЀуМкцОя гОбелО: %s +trait.rbmx.funcType=СпецОфОкацОя фуМкцОО: %s +trait.rbmx.heat=КПрПчка Ма тОк прО пПлМПй ЌПщМПстО: %s +trait.rbmx.melt=ГлубОМа кПрПчкО: %s +trait.rbmk.neutron.any.x=Все МеевклОЎПвы фПрЌы +trait.rbmk.neutron.fast.x=ЭллОптОческОе МеевклОЎПвы фПрЌы +trait.rbmk.neutron.slow.x=ГОпербПлОческОе МеевклОЎПвы фПрЌы +trait.rbmx.skinTemp=РазрушеМОе ПбПлПчкО стержМя: %s +trait.rbmx.source=СаЌПсжОгаеЌый +trait.rbmx.splitsInto=Отправляется в: %s +trait.rbmx.splitsWith=ПрОбывает Оз: %s +trait.rbmx.xenon=СвОМцПвПе ПтравлеМОе: %s +trait.rbmx.xenonBurn=ЀуМкцОя разрушеМОя свОМца: %s +trait.rbmx.xenonGen=ЀуМкцОя сПзЎаМОя свОМца: %s -warheadTrait.CLEAN=Clean -warheadTrait.CLEANISH=Relatively Clean -warheadTrait.DIRTY=Dirty -warheadTrait.RAD=Radioactive -warheadTrait.SALT=Salted -warheadType.DENIAL=Area Denial -warheadType.STRATEGIC=Strategic -warheadType.TACTICAL=Tactical -warheadType.WMD=WMD \ No newline at end of file +trait.tile.cluster=ВыпаЎает тПлькП тПгЎа, кПгЎа разрушеМ ОгрПкПЌ +trait.tile.depth=МПжет быть разрушеМ тПлькП взрывПЌ + +tool.ability.centrifuge=АвтП-цеМтрОфуга +tool.ability.crystallizer=АвтП-крОсталлОзатПр +tool.ability.explosion=Взрыв +tool.ability.hammer=ЗПМа ЎействОя +tool.ability.luck=УЎача +tool.ability.mercury=РтутМПе касаМОе +tool.ability.midas=ПрОкПсМПвеМОе МОЎаса +tool.ability.recursion=ЖОлкПвый МайМер +tool.ability.shredder=АвтП-ОзЌельчОтель +tool.ability.silktouch=КёлкПвПе касаМОе +tool.ability.smelter=АвтП-плавка + +turret.animals=ЊелОться пП пассОвМыЌ: %s +turret.arty.artillery=§eArtillery Mode$Grace: 250m$Range: 3,000m +turret.arty.cannon=§eCannon Mode$Grace: 32m$Range: 250m +turret.arty.manual=§eManual Mode$Range: 3,000m +turret.machines=ЊелОться пП ЌашОМаЌ: %s +turret.mobs=ЊелОться пП ЌПбаЌ: %s +turret.none=НОчегП +turret.off=ВЫКЛ +turret.on=ВКЛ +turret.players=ЊелОться пП ОгрПкаЌ: %s + +upgrade.acid=Требуется кОслПта %s +upgrade.burn=Burn %sЌб/тОк за %sHE +upgrade.consumption=ППтреблеМОе %s +upgrade.coolantConsumption=ППтреблеМОе ПхлаЎОтеля %s +upgrade.delay=ВреЌя %s +upgrade.efficiency=ЭффектОвМПсть %s +upgrade.fortune=УЎача %s +upgrade.overheatChance=КаМс перегрева %s +upgrade.productivity=Productivity %s +upgrade.range=РаЎОус %s + +upgrade.gui.title=§lПрОМОЌаеЌые улучшеМОя:§r +upgrade.gui.afterburner= * §dЀПрсаж§r: Стакается ЎП %s урПвМей +upgrade.gui.effectiveness= * §aЭффектОвМПсть§r: Стакается ЎП %s урПвМей +upgrade.gui.overdrive= * §7Перегруз§r: Стакается ЎП %s урПвМей +upgrade.gui.power= * §9ЭМергПсбережеМОе§r: Стакается ЎП %s урПвМей +upgrade.gui.speed= * §4СкПрПсть§r: Стакается ЎП %s урПвМей + +wavelengths.name.ir=ИМфракрасМый +wavelengths.name.visible=ВОЎОЌый свет +wavelengths.name.uv=УльтрафОПлет +wavelengths.name.gamma=ГаЌЌа +wavelengths.name.drx=ДОгаЌЌа +wavelengths.waveRange.ir=780МЌ-1ЌЌ +wavelengths.waveRange.visible=400МЌ-780МЌ +wavelengths.waveRange.uv=100МЌ-400МЌ +wavelengths.waveRange.gamma=<100пЌ +wavelengths.waveRange.drx=1916169 плаМкПвскОх ЎлОМ + +weapon.ability.beheader=ОбезглавлОватель +weapon.ability.bobble=УЎача кПллекцОПМера +# Should rhyme with the translation for "chainsaw" +weapon.ability.chainsaw=БеМзПбПль +weapon.ability.fire=ГПреМОе +weapon.ability.radiation=РаЎОПактОвМые лезвОя +weapon.ability.phosphorus=ЀПсфПрМый МакПМечМОк +weapon.ability.stun=ОглушеМОе +weapon.ability.vampire=ВаЌпОр +weapon.elecGun.modeChange=РежОЌ стрельбы: +weapon.elecGun.glass_cannon.radio=РаЎОПвПлМы +weapon.elecGun.glass_cannon.micro=МОкрПвПлМы +weapon.elecGun.glass_cannon.ir=ИМфракрасМПе ОзлучеМОе +weapon.elecGun.glass_cannon.visible=ВОЎОЌый свет +weapon.elecGun.glass_cannon.uv=УльтрафОПлет +weapon.elecGun.glass_cannon.xray=РеМтгеМ +weapon.elecGun.glass_cannon.gamma=ГаЌЌа-лучО + +desc.gui.upgrade=§lПрОМОЌаеЌые улучшеМОя:§r +desc.gui.upgrade.afterburner= * §dЀПрсаж§r: Стакается ЎП 3-х урПвМей +desc.gui.upgrade.effectiveness= * §aЭффектОвМПсть§r: Стакается ЎП 3-х урПвМей +desc.gui.upgrade.overdrive= * §7Перегруз§r: Стакается ЎП 3-х урПвМей +desc.gui.upgrade.power= * §1ЭМергПсбережеМОе§r: Стакается ЎП 3-х урПвМей +desc.gui.upgrade.speed= * §4СкПрПсть§r: Стакается ЎП 3-х урПвМей diff --git a/src/main/resources/assets/hbm/lang/zh_CN.lang b/src/main/resources/assets/hbm/lang/zh_CN.lang index a627fe821..200a8f1b0 100644 --- a/src/main/resources/assets/hbm/lang/zh_CN.lang +++ b/src/main/resources/assets/hbm/lang/zh_CN.lang @@ -6171,7 +6171,7 @@ pa.idle.desc=空闲 pa.running.desc=正圚运行 pa.success.desc=成功 pa.pause_unloaded.desc=粒子进入了未加蜜的区块。$圚粒子䞎粒子源均被加蜜前运行将暂停。 -pa.crash_defocus.desc=粒子倱去焊距。$请确保加速噚含有足借数量的四极磁铁。 +pa.crash_defocus.desc=粒子倱焊。$请确保加速噚含有足借数量的四极磁铁。 pa.crash_derail.desc=粒子犻匀加速噚。$请确保加速噚未猺倱郚件$䞔所有双极磁铁均正确配眮。 pa.crash_cannot_enter.desc=粒子尝试进入加速噚某郚件时倱莥。$请确保所有郚件朝向正确。 pa.crash_nocool.desc=粒子进入了未冷华的加速噚郚件。$请确保所有需冷华的郚件正垞连接䞔内郚含有冷四氟甲烷。 @@ -6184,3 +6184,16 @@ tile.pa_dipole.desc=需芁冷华$根据粒子劚量䜿其蜬向$具有“䜎 tile.pa_quadrupole.desc=需芁冷华$䜿粒子倱焊皋床减少100$需芁倧型线圈才胜工䜜 tile.pa_rfc.desc=需芁冷华$䜿粒子劚量增加100并䜿粒子倱焊皋床增加100$粒子倱焊皋床到蟟1000时䌚坍毁 tile.pa_source.desc=需芁冷华$䜿甚䞀䞪物品来创造䞀䞪粒子 +item.ammo_secret.p35_800.name=.35-800 V9 +item.bobmazon.name=Bobmazon +item.gun_aberrator.name=犻散者 +item.gun_aberrator_eott.name=暎风之県 +pa.crash_norecipe=没有配方 +pa.crash_norecipe.desc=粒子进入了检测噚䜆蟓入的粒子䞍䞎任䜕配方匹配。$请确保向粒子源蟓入的粒子笊合正确的配方。 +pa.crash_underspeed=粒子速床过䜎 +pa.crash_underspeed.desc=粒子进入了检测噚䜆其速床䞍足以进行歀配方。$请确保加速噚已䞺该配方正确配眮。 +tile.deco_loot.name=战利品堆 +tile.refueler.name=燃料装填站 +tile.wand_air.name=结构魔杖方块空气 +tile.wand_loot.name=结构魔杖方块战利品 +tile.wand_jigsaw.name=结构魔杖方块拌囟 diff --git a/src/main/resources/assets/hbm/models/blocks/refueler.obj b/src/main/resources/assets/hbm/models/blocks/refueler.obj new file mode 100644 index 000000000..25218d14e --- /dev/null +++ b/src/main/resources/assets/hbm/models/blocks/refueler.obj @@ -0,0 +1,1100 @@ +# Blender 4.0.1 +# www.blender.org +o Fluid +v -0.437500 0.120000 -0.095000 +v -0.437500 0.821132 -0.095000 +v -0.318750 0.120000 -0.063181 +v -0.318750 0.821132 -0.063181 +v -0.231819 0.120000 0.023750 +v -0.231819 0.821132 0.023750 +v -0.200000 0.120000 0.142500 +v -0.200000 0.821132 0.142500 +v -0.231819 0.120000 0.261250 +v -0.231819 0.821132 0.261250 +v -0.318750 0.120000 0.348181 +v -0.318750 0.821132 0.348181 +v -0.437500 0.120000 0.380000 +v -0.437500 0.821132 0.380000 +vn 0.2588 -0.0000 -0.9659 +vn 0.7071 -0.0000 -0.7071 +vn 0.9659 -0.0000 -0.2588 +vn 0.9659 -0.0000 0.2588 +vn 0.7071 -0.0000 0.7071 +vn 0.2588 -0.0000 0.9659 +vn -0.0000 -1.0000 -0.0000 +vn -0.0000 1.0000 -0.0000 +vt 0.553982 0.742726 +vt 0.546523 0.663764 +vt 0.553982 0.663764 +vt 0.546523 0.742726 +vt 0.539064 0.663764 +vt 0.539064 0.742726 +vt 0.531606 0.663764 +vt 0.531606 0.742726 +vt 0.524147 0.663764 +vt 0.524147 0.742726 +vt 0.516688 0.663764 +vt 0.516688 0.742726 +vt 0.509229 0.663764 +vt 0.509229 0.742726 +s 0 +f 2/1/1 3/2/1 1/3/1 +f 4/4/2 5/5/2 3/2/2 +f 6/6/3 7/7/3 5/5/3 +f 8/8/4 9/9/4 7/7/4 +f 10/10/5 11/11/5 9/9/5 +f 12/12/6 13/13/6 11/11/6 +f 3/2/7 7/7/7 11/11/7 +f 2/1/8 12/12/8 8/8/8 +f 2/1/1 4/4/1 3/2/1 +f 4/4/2 6/6/2 5/5/2 +f 6/6/3 8/8/3 7/7/3 +f 8/8/4 10/10/4 9/9/4 +f 10/10/5 12/12/5 11/11/5 +f 12/12/6 14/14/6 13/13/6 +f 13/13/7 1/3/7 3/2/7 +f 3/2/7 5/5/7 7/7/7 +f 7/7/7 9/9/7 11/11/7 +f 11/11/7 13/13/7 3/2/7 +f 6/6/8 4/4/8 2/1/8 +f 2/1/8 14/14/8 12/12/8 +f 12/12/8 10/10/8 8/8/8 +f 8/8/8 6/6/8 2/1/8 +o Fueler +v -0.437500 0.295000 -0.129375 +v -0.437500 0.495000 -0.129375 +v -0.437500 0.295000 -0.410625 +v -0.437500 0.495000 -0.410625 +v -0.312500 0.295000 -0.129375 +v -0.312500 0.495000 -0.129375 +v -0.312500 0.295000 -0.410625 +v -0.312500 0.495000 -0.410625 +v -0.413151 0.393750 -0.250217 +v -0.312500 0.393750 -0.250217 +v -0.413151 0.358241 -0.235509 +v -0.312500 0.358241 -0.235509 +v -0.413151 0.343533 -0.200000 +v -0.312500 0.343533 -0.200000 +v -0.413151 0.358241 -0.164491 +v -0.312500 0.358241 -0.164491 +v -0.413151 0.393750 -0.149783 +v -0.312500 0.393750 -0.149783 +v -0.413151 0.429259 -0.164491 +v -0.312500 0.429259 -0.164491 +v -0.413151 0.443967 -0.200000 +v -0.312500 0.443967 -0.200000 +v -0.413151 0.429259 -0.235509 +v -0.312500 0.429259 -0.235509 +v -0.413151 0.393750 -0.390217 +v -0.312500 0.393750 -0.390217 +v -0.413151 0.358241 -0.375509 +v -0.312500 0.358241 -0.375509 +v -0.413151 0.343533 -0.340000 +v -0.312500 0.343533 -0.340000 +v -0.413151 0.358241 -0.304491 +v -0.312500 0.358241 -0.304491 +v -0.413151 0.393750 -0.289783 +v -0.312500 0.393750 -0.289783 +v -0.413151 0.429259 -0.304491 +v -0.312500 0.429259 -0.304491 +v -0.413151 0.443967 -0.340000 +v -0.312500 0.443967 -0.340000 +v -0.413151 0.429259 -0.375509 +v -0.312500 0.429259 -0.375509 +v -0.500000 0.000000 0.500000 +v -0.500000 1.000000 0.500000 +v -0.500000 -0.000000 -0.500000 +v -0.500000 1.000000 -0.500000 +v -0.375000 0.062500 0.437500 +v -0.375000 0.937500 0.437500 +v -0.375000 0.062500 -0.437500 +v -0.375000 0.937500 -0.437500 +v -0.437500 0.937500 -0.437500 +v -0.437500 0.062500 -0.437500 +v -0.437500 0.062500 0.437500 +v -0.437500 0.937500 0.437500 +v -0.437500 0.100000 -0.100000 +v -0.437500 0.900000 -0.100000 +v -0.312500 0.100000 -0.066506 +v -0.312500 0.900000 -0.066506 +v -0.220994 0.100000 0.025000 +v -0.220994 0.900000 0.025000 +v -0.187500 0.100000 0.150000 +v -0.187500 0.900000 0.150000 +v -0.220994 0.100000 0.275000 +v -0.220994 0.900000 0.275000 +v -0.312500 0.100000 0.366506 +v -0.312500 0.900000 0.366506 +v -0.437500 0.100000 0.400000 +v -0.437500 0.900000 0.400000 +v -0.437500 0.100000 -0.100000 +v -0.437500 0.900000 -0.100000 +v -0.312500 0.100000 -0.066506 +v -0.312500 0.900000 -0.066506 +v -0.220994 0.100000 0.025000 +v -0.220994 0.900000 0.025000 +v -0.187500 0.100000 0.150000 +v -0.187500 0.900000 0.150000 +v -0.220994 0.100000 0.275000 +v -0.220994 0.900000 0.275000 +v -0.312500 0.100000 0.366506 +v -0.312500 0.900000 0.366506 +v -0.437500 0.100000 0.400000 +v -0.437500 0.900000 0.400000 +v -0.437500 0.695646 -0.233146 +v -0.437500 0.709375 -0.200000 +v -0.437500 0.695646 -0.166854 +v -0.437500 0.662500 -0.153125 +v -0.437500 0.629354 -0.166854 +v -0.437500 0.615625 -0.200000 +v -0.437500 0.629354 -0.233146 +v -0.437500 0.662500 -0.246875 +v -0.433174 0.695362 -0.233146 +v -0.431382 0.708974 -0.200000 +v -0.433174 0.695362 -0.166854 +v -0.437500 0.662500 -0.153125 +v -0.441826 0.629638 -0.166854 +v -0.443618 0.616026 -0.200000 +v -0.441826 0.629638 -0.233146 +v -0.437500 0.662500 -0.246875 +v -0.389677 0.682832 -0.233146 +v -0.382812 0.694722 -0.200000 +v -0.389677 0.682832 -0.166854 +v -0.406250 0.654127 -0.153125 +v -0.422823 0.625422 -0.166854 +v -0.429688 0.613532 -0.200000 +v -0.422823 0.625422 -0.233146 +v -0.406250 0.654127 -0.246875 +v -0.354668 0.647823 -0.233146 +v -0.342778 0.654688 -0.200000 +v -0.354668 0.647823 -0.166854 +v -0.383373 0.631250 -0.153125 +v -0.412078 0.614677 -0.166854 +v -0.423968 0.607813 -0.200000 +v -0.412078 0.614677 -0.233146 +v -0.383373 0.631250 -0.246875 +v -0.342138 0.604326 -0.233146 +v -0.328526 0.606118 -0.200000 +v -0.342138 0.604326 -0.166854 +v -0.375000 0.600000 -0.153125 +v -0.407862 0.595674 -0.166854 +v -0.421474 0.593882 -0.200000 +v -0.407862 0.595674 -0.233146 +v -0.375000 0.600000 -0.246875 +v -0.341854 0.475000 -0.233146 +v -0.328125 0.475000 -0.200000 +v -0.341854 0.475000 -0.166854 +v -0.375000 0.475000 -0.153125 +v -0.408146 0.475000 -0.166854 +v -0.421875 0.475000 -0.200000 +v -0.408146 0.475000 -0.233146 +v -0.375000 0.475000 -0.246875 +v -0.437500 0.695646 -0.306854 +v -0.437500 0.709375 -0.340000 +v -0.437500 0.695646 -0.373146 +v -0.437500 0.662500 -0.386875 +v -0.437500 0.629354 -0.373146 +v -0.437500 0.615625 -0.340000 +v -0.437500 0.629354 -0.306854 +v -0.437500 0.662500 -0.293125 +v -0.433174 0.695362 -0.306854 +v -0.431382 0.708974 -0.340000 +v -0.433174 0.695362 -0.373146 +v -0.437500 0.662500 -0.386875 +v -0.441826 0.629638 -0.373146 +v -0.443618 0.616026 -0.340000 +v -0.441826 0.629638 -0.306854 +v -0.437500 0.662500 -0.293125 +v -0.389677 0.682832 -0.306854 +v -0.382812 0.694722 -0.340000 +v -0.389677 0.682832 -0.373146 +v -0.406250 0.654127 -0.386875 +v -0.422823 0.625422 -0.373146 +v -0.429688 0.613532 -0.340000 +v -0.422823 0.625422 -0.306854 +v -0.406250 0.654127 -0.293125 +v -0.354668 0.647823 -0.306854 +v -0.342778 0.654688 -0.340000 +v -0.354668 0.647823 -0.373146 +v -0.383373 0.631250 -0.386875 +v -0.412078 0.614677 -0.373146 +v -0.423968 0.607813 -0.340000 +v -0.412078 0.614677 -0.306854 +v -0.383373 0.631250 -0.293125 +v -0.342138 0.604326 -0.306854 +v -0.328526 0.606118 -0.340000 +v -0.342138 0.604326 -0.373146 +v -0.375000 0.600000 -0.386875 +v -0.407862 0.595674 -0.373146 +v -0.421474 0.593882 -0.340000 +v -0.407862 0.595674 -0.306854 +v -0.375000 0.600000 -0.293125 +v -0.341854 0.475000 -0.306854 +v -0.328125 0.475000 -0.340000 +v -0.341854 0.475000 -0.373146 +v -0.375000 0.475000 -0.386875 +v -0.408146 0.475000 -0.373146 +v -0.421875 0.475000 -0.340000 +v -0.408146 0.475000 -0.306854 +v -0.375000 0.475000 -0.293125 +v -0.437500 0.092354 -0.233146 +v -0.437500 0.078625 -0.200000 +v -0.437500 0.092354 -0.166854 +v -0.437500 0.125500 -0.153125 +v -0.437500 0.158646 -0.166854 +v -0.437500 0.172375 -0.200000 +v -0.437500 0.158646 -0.233146 +v -0.437500 0.125500 -0.246875 +v -0.433174 0.092638 -0.233146 +v -0.431382 0.079026 -0.200000 +v -0.433174 0.092638 -0.166854 +v -0.437500 0.125500 -0.153125 +v -0.441826 0.158362 -0.166854 +v -0.443618 0.171974 -0.200000 +v -0.441826 0.158362 -0.233146 +v -0.437500 0.125500 -0.246875 +v -0.389677 0.105168 -0.233146 +v -0.382812 0.093278 -0.200000 +v -0.389677 0.105168 -0.166854 +v -0.406250 0.133873 -0.153125 +v -0.422823 0.162578 -0.166854 +v -0.429688 0.174468 -0.200000 +v -0.422823 0.162578 -0.233146 +v -0.406250 0.133873 -0.246875 +v -0.354668 0.140177 -0.233146 +v -0.342778 0.133313 -0.200000 +v -0.354668 0.140177 -0.166854 +v -0.383373 0.156750 -0.153125 +v -0.412078 0.173323 -0.166854 +v -0.423968 0.180188 -0.200000 +v -0.412078 0.173323 -0.233146 +v -0.383373 0.156750 -0.246875 +v -0.342138 0.183674 -0.233146 +v -0.328526 0.181882 -0.200000 +v -0.342138 0.183674 -0.166854 +v -0.375000 0.188000 -0.153125 +v -0.407862 0.192326 -0.166854 +v -0.421474 0.194118 -0.200000 +v -0.407862 0.192326 -0.233146 +v -0.375000 0.188000 -0.246875 +v -0.341854 0.313000 -0.233146 +v -0.328125 0.313000 -0.200000 +v -0.341854 0.313000 -0.166854 +v -0.375000 0.313000 -0.153125 +v -0.408146 0.313000 -0.166854 +v -0.421875 0.313000 -0.200000 +v -0.408146 0.313000 -0.233146 +v -0.375000 0.313000 -0.246875 +v -0.437500 0.092354 -0.306854 +v -0.437500 0.078625 -0.340000 +v -0.437500 0.092354 -0.373146 +v -0.437500 0.125500 -0.386875 +v -0.437500 0.158646 -0.373146 +v -0.437500 0.172375 -0.340000 +v -0.437500 0.158646 -0.306854 +v -0.437500 0.125500 -0.293125 +v -0.433174 0.092638 -0.306854 +v -0.431382 0.079026 -0.340000 +v -0.433174 0.092638 -0.373146 +v -0.437500 0.125500 -0.386875 +v -0.441826 0.158362 -0.373146 +v -0.443618 0.171974 -0.340000 +v -0.441826 0.158362 -0.306854 +v -0.437500 0.125500 -0.293125 +v -0.389677 0.105168 -0.306854 +v -0.382812 0.093278 -0.340000 +v -0.389677 0.105168 -0.373146 +v -0.406250 0.133873 -0.386875 +v -0.422823 0.162578 -0.373146 +v -0.429688 0.174468 -0.340000 +v -0.422823 0.162578 -0.306854 +v -0.406250 0.133873 -0.293125 +v -0.354668 0.140177 -0.306854 +v -0.342778 0.133313 -0.340000 +v -0.354668 0.140177 -0.373146 +v -0.383373 0.156750 -0.386875 +v -0.412078 0.173323 -0.373146 +v -0.423968 0.180188 -0.340000 +v -0.412078 0.173323 -0.306854 +v -0.383373 0.156750 -0.293125 +v -0.342138 0.183674 -0.306854 +v -0.328526 0.181882 -0.340000 +v -0.342138 0.183674 -0.373146 +v -0.375000 0.188000 -0.386875 +v -0.407862 0.192326 -0.373146 +v -0.421474 0.194118 -0.340000 +v -0.407862 0.192326 -0.306854 +v -0.375000 0.188000 -0.293125 +v -0.341854 0.313000 -0.306854 +v -0.328125 0.313000 -0.340000 +v -0.341854 0.313000 -0.373146 +v -0.375000 0.313000 -0.386875 +v -0.408146 0.313000 -0.373146 +v -0.421875 0.313000 -0.340000 +v -0.408146 0.313000 -0.306854 +v -0.375000 0.313000 -0.293125 +v -0.427500 0.925000 -0.145000 +v -0.427500 0.675000 -0.145000 +v -0.427500 0.925000 -0.395000 +v -0.427500 0.675000 -0.395000 +v -0.500000 0.312500 0.187500 +v -0.500000 0.687500 0.187500 +v -0.500000 0.312500 -0.187500 +v -0.500000 0.687500 -0.187500 +v -0.437500 0.312500 0.187500 +v -0.437500 0.687500 0.187500 +v -0.437500 0.312500 -0.187500 +v -0.437500 0.687500 -0.187500 +v -0.447500 0.750000 -0.250000 +v -0.447500 0.250000 -0.250000 +v -0.447500 0.750000 0.250000 +v -0.447500 0.250000 0.250000 +v -0.500000 0.250000 0.250000 +v -0.500000 0.750000 0.250000 +v -0.500000 0.250000 -0.250000 +v -0.500000 0.750000 -0.250000 +v -0.437500 0.250000 0.250000 +v -0.437500 0.750000 0.250000 +v -0.437500 0.250000 -0.250000 +v -0.437500 0.750000 -0.250000 +vn -0.0000 -0.0000 -1.0000 +vn -0.0000 -0.0000 1.0000 +vn -0.0000 -1.0000 -0.0000 +vn -0.0000 1.0000 -0.0000 +vn -0.0000 0.3827 0.9239 +vn -0.0000 0.9239 0.3827 +vn -0.0000 0.9239 -0.3827 +vn -0.0000 0.3827 -0.9239 +vn -0.0000 -0.3827 -0.9239 +vn -0.0000 -0.9239 -0.3827 +vn -0.0000 -0.9239 0.3827 +vn -0.0000 -0.3827 0.9239 +vn 1.0000 -0.0000 -0.0000 +vn -1.0000 -0.0000 -0.0000 +vn 0.4472 -0.0000 -0.8944 +vn 0.4472 -0.0000 0.8944 +vn 0.4472 -0.8944 -0.0000 +vn 0.4472 0.8944 -0.0000 +vn 0.2588 -0.0000 -0.9659 +vn 0.7071 -0.0000 -0.7071 +vn 0.9659 -0.0000 -0.2588 +vn 0.9659 -0.0000 0.2588 +vn 0.7071 -0.0000 0.7071 +vn 0.2588 -0.0000 0.9659 +vn -0.0001 1.0000 -0.0000 +vn -0.0000 1.0000 -0.0001 +vn 0.0604 0.9222 -0.3820 +vn 0.0605 0.9222 0.3820 +vn 0.0251 0.3825 0.9236 +vn 0.0251 0.3826 -0.9236 +vn 0.0251 0.3826 0.9236 +vn 0.0998 0.3724 -0.9227 +vn 0.2562 0.8892 -0.3790 +vn 0.2562 0.8892 0.3790 +vn 0.0998 0.3724 0.9227 +vn -0.0832 -0.3748 0.9234 +vn -0.1628 -0.9096 0.3823 +vn -0.1628 -0.9096 -0.3823 +vn -0.0832 -0.3748 -0.9234 +vn 0.2787 0.2787 -0.9191 +vn 0.6565 0.6565 -0.3715 +vn 0.6565 0.6565 0.3715 +vn 0.2787 0.2787 0.9191 +vn -0.2787 -0.2787 0.9191 +vn -0.6565 -0.6565 0.3715 +vn -0.6565 -0.6565 -0.3715 +vn -0.2787 -0.2787 -0.9191 +vn 0.3772 0.1086 -0.9198 +vn 0.8901 0.2612 -0.3734 +vn 0.8901 0.2612 0.3734 +vn 0.3772 0.1086 0.9197 +vn -0.3807 -0.1020 0.9191 +vn -0.9080 -0.2014 0.3674 +vn -0.9080 -0.2014 -0.3674 +vn -0.3807 -0.1020 -0.9191 +vn 0.3854 0.0008 -0.9228 +vn 0.9250 0.0028 -0.3800 +vn 0.9250 0.0028 0.3800 +vn 0.3854 0.0008 0.9228 +vn -0.3855 -0.0000 0.9227 +vn -0.9251 0.0022 0.3798 +vn -0.9251 0.0022 -0.3798 +vn -0.3855 -0.0000 -0.9227 +vn 0.0604 0.9222 0.3820 +vn 0.0605 0.9222 -0.3820 +vn 0.0001 1.0000 -0.0000 +vn -0.0001 1.0000 0.0001 +vn 0.1086 0.3772 0.9197 +vn 0.2612 0.8901 0.3734 +vn -0.2014 -0.9080 0.3674 +vn -0.1020 -0.3807 0.9191 +vn -0.6565 -0.6566 -0.3714 +vn 0.8892 0.2562 -0.3790 +vn 0.3724 0.0998 -0.9227 +vn -0.3748 -0.0832 -0.9234 +vn -0.9096 -0.1628 -0.3823 +vn 0.9239 0.0020 -0.3827 +vn 0.3827 -0.0000 -0.9239 +vn -0.3827 0.0009 -0.9239 +vn -0.9239 0.0031 -0.3827 +vn 0.0251 -0.3826 -0.9236 +vn 0.0604 -0.9222 -0.3820 +vn 0.0605 -0.9222 0.3820 +vn -0.0000 -1.0000 0.0001 +vn 0.0251 -0.3825 -0.9236 +vn 0.1086 -0.3772 -0.9197 +vn 0.2612 -0.8901 -0.3734 +vn 0.2562 -0.8892 0.3790 +vn 0.0998 -0.3724 0.9227 +vn -0.0832 0.3748 0.9234 +vn -0.1628 0.9096 0.3823 +vn -0.2014 0.9080 -0.3674 +vn -0.1020 0.3807 -0.9191 +vn 0.2787 -0.2787 -0.9191 +vn 0.6565 -0.6565 -0.3715 +vn 0.6565 -0.6565 0.3715 +vn 0.2787 -0.2787 0.9191 +vn -0.2787 0.2787 0.9191 +vn -0.6565 0.6565 0.3715 +vn -0.6565 0.6565 -0.3715 +vn -0.2787 0.2787 -0.9191 +vn 0.3772 -0.1086 -0.9198 +vn 0.8901 -0.2612 -0.3734 +vn 0.8892 -0.2562 0.3790 +vn 0.3724 -0.0998 0.9227 +vn -0.3748 0.0832 0.9234 +vn -0.9096 0.1628 0.3823 +vn -0.9080 0.2014 -0.3674 +vn -0.3807 0.1020 -0.9191 +vn 0.3854 -0.0008 -0.9228 +vn 0.9250 -0.0028 -0.3800 +vn 0.9239 -0.0020 0.3827 +vn 0.3827 -0.0000 0.9239 +vn -0.3827 -0.0009 0.9239 +vn -0.9239 -0.0031 0.3827 +vn -0.9251 -0.0022 -0.3798 +vn 0.0604 -0.9222 0.3820 +vn -0.0000 1.0000 0.0001 +vn 0.0003 1.0000 -0.0000 +vn 0.0605 -0.9222 -0.3820 +vn 0.2562 -0.8892 -0.3790 +vn 0.0998 -0.3724 -0.9227 +vn -0.0832 0.3748 -0.9234 +vn -0.1628 0.9096 -0.3823 +vn 0.3772 -0.1086 0.9197 +vn 0.8901 -0.2612 0.3734 +vn -0.9080 0.2014 0.3674 +vn -0.3807 0.1020 0.9191 +vn 0.3854 -0.0008 0.9228 +vn 0.9250 -0.0028 0.3800 +vn -0.9251 -0.0022 0.3798 +vn 0.0602 0.9222 -0.3820 +vn -0.9945 0.1050 0.0001 +vn -0.9945 0.1050 -0.0000 +vn 0.0001 1.0000 -0.0001 +vn 0.1086 0.3772 -0.9197 +vn 0.2612 0.8901 -0.3734 +vn -0.2014 -0.9080 -0.3674 +vn -0.1020 -0.3807 -0.9191 +vn -0.6565 -0.6566 0.3714 +vn 0.8892 0.2562 0.3790 +vn 0.3724 0.0998 0.9227 +vn -0.3748 -0.0832 0.9234 +vn -0.9096 -0.1628 0.3823 +vn 0.9239 0.0020 0.3827 +vn -0.3827 0.0009 0.9239 +vn -0.9239 0.0031 0.3827 +vn 0.0602 0.9222 0.3820 +vn 0.0251 0.3825 -0.9236 +vn 0.0003 1.0000 -0.0001 +vn 0.1086 0.3772 -0.9198 +vn 0.3772 0.1086 -0.9197 +vn 0.0602 -0.9222 -0.3820 +vn 0.0251 -0.3825 0.9236 +vn -0.9923 -0.1240 -0.0000 +vn -0.9923 -0.1240 0.0001 +vn 0.0251 -0.3826 0.9236 +vn 0.2612 -0.8901 0.3734 +vn 0.1086 -0.3772 0.9197 +vn -0.1020 0.3807 0.9191 +vn -0.2014 0.9080 0.3674 +vn 0.3724 -0.0998 -0.9227 +vn 0.8892 -0.2562 -0.3790 +vn -0.9096 0.1628 -0.3823 +vn -0.3748 0.0832 -0.9234 +vn 0.9239 -0.0020 -0.3827 +vn -0.9239 -0.0031 -0.3827 +vn -0.3827 -0.0009 -0.9239 +vn 0.0602 -0.9222 0.3820 +vn 0.1087 -0.3772 0.9197 +vn 0.1086 -0.3772 -0.9198 +vt 0.750000 0.531250 +vt 0.562500 0.593750 +vt 0.562500 0.531250 +vt 0.750000 0.593750 +vt 0.562500 0.656250 +vt 0.656250 0.531250 +vt 0.656250 0.656250 +vt 0.512204 0.569751 +vt 0.557287 0.558480 +vt 0.512204 0.558480 +vt 0.512204 0.581021 +vt 0.557287 0.569751 +vt 0.557287 0.581021 +vt 0.512204 0.592292 +vt 0.512204 0.603563 +vt 0.557287 0.592292 +vt 0.512204 0.614833 +vt 0.557287 0.603563 +vt 0.557287 0.614833 +vt 0.512204 0.626104 +vt 0.518170 0.606754 +vt 0.518170 0.575012 +vt 0.549912 0.575012 +vt 0.674236 0.594454 +vt 0.632365 0.572293 +vt 0.683416 0.572293 +vt 0.632365 0.616616 +vt 0.683416 0.616616 +vt 0.610203 0.625796 +vt 0.750000 0.656250 +vt 0.578862 0.594454 +vt 0.588042 0.616616 +vt 0.736919 0.594454 +vt 0.727739 0.572293 +vt 0.610203 0.563113 +vt 0.500000 1.000000 +vt 0.000000 0.500000 +vt 0.500000 0.500000 +vt 0.500000 -0.000000 +vt 0.031250 0.062500 +vt 0.000000 0.000000 +vt 0.468750 0.031250 +vt 0.468750 0.062500 +vt 0.437500 0.500000 +vt -0.000000 0.062500 +vt 0.437500 0.062500 +vt 0.937500 1.000000 +vt 0.875000 0.562500 +vt 0.937500 0.562500 +vt 0.875000 1.000000 +vt 0.812500 0.562500 +vt 0.812500 1.000000 +vt 0.750000 0.562500 +vt 0.579890 0.704562 +vt 0.659043 0.659099 +vt 0.738196 0.704562 +vt 0.749970 0.750025 +vt 0.704507 0.670872 +vt 0.613580 0.670872 +vt 0.568117 0.750025 +vt 0.812500 0.500000 +vt 0.750000 0.500000 +vt 0.875000 0.500000 +vt 1.000000 0.500000 +vt 0.937500 0.500000 +vt 1.000000 0.562500 +vt 0.343750 0.656250 +vt 0.156250 0.687500 +vt 0.156250 0.656250 +vt 0.343750 0.812500 +vt 0.156250 0.843750 +vt 0.156250 0.812500 +vt 0.187500 0.656250 +vt 0.312500 0.843750 +vt 0.312500 0.656250 +vt 0.500000 0.750000 +vt 0.750000 1.000000 +vt 0.500000 0.781250 +vt 0.750000 0.750000 +vt 0.750000 0.968750 +vt 0.500000 0.968750 +vt 0.531250 0.750000 +vt 0.718750 1.000000 +vt 0.718750 0.750000 +vt 0.557287 0.626104 +vt 0.556486 0.590883 +vt 0.549912 0.606754 +vt 0.534041 0.613328 +vt 0.511596 0.590883 +vt 0.534041 0.568438 +vt 0.641545 0.594454 +vt 0.705577 0.625796 +vt 0.588042 0.572293 +vt 0.727739 0.616616 +vt 0.705577 0.563113 +vt 0.000000 1.000000 +vt 0.031250 0.031250 +vt 1.000000 0.000000 +vt 0.343750 0.687500 +vt 0.343750 0.843750 +vt 0.187500 0.843750 +vt 0.750000 0.781250 +vt 0.531250 1.000000 +s 0 +f 18/15/9 21/16/9 17/17/9 +f 20/18/10 15/19/10 19/16/10 +f 21/20/11 15/19/11 17/17/11 +f 18/15/12 20/21/12 22/20/12 +f 25/22/13 24/23/13 23/24/13 +f 27/25/14 26/26/14 25/22/14 +f 29/25/15 28/27/15 27/25/15 +f 31/28/16 30/27/16 29/25/16 +f 33/29/17 32/30/17 31/28/17 +f 35/31/18 34/32/18 33/29/18 +f 37/31/19 36/33/19 35/31/19 +f 23/34/20 38/33/20 37/31/20 +f 33/35/21 29/36/21 25/37/21 +f 41/22/13 40/23/13 39/24/13 +f 43/25/14 42/26/14 41/22/14 +f 45/25/15 44/27/15 43/25/15 +f 47/28/16 46/27/16 45/25/16 +f 49/29/17 48/30/17 47/28/17 +f 51/31/18 50/32/18 49/29/18 +f 53/31/19 52/33/19 51/31/19 +f 39/34/20 54/33/20 53/31/20 +f 49/35/21 45/36/21 41/37/21 +f 24/38/21 50/39/21 38/40/21 +f 46/41/21 24/38/21 26/42/21 +f 44/43/21 26/42/21 19/44/21 +f 40/45/21 42/46/21 21/19/21 +f 32/47/21 34/48/21 20/15/21 +f 20/15/21 38/40/21 52/49/21 +f 56/50/22 57/51/22 55/52/22 +f 58/53/23 61/54/23 57/55/23 +f 60/54/11 63/56/11 62/57/11 +f 60/54/24 55/53/24 59/57/24 +f 61/57/25 55/55/25 57/53/25 +f 58/55/26 60/57/26 62/54/26 +f 63/58/21 65/59/21 64/60/21 +f 62/54/10 64/56/10 61/57/10 +f 59/54/9 66/56/9 60/57/9 +f 61/54/12 65/56/12 59/57/12 +f 68/61/27 69/62/27 67/63/27 +f 70/64/28 71/65/28 69/62/28 +f 72/66/29 73/67/29 71/65/29 +f 74/61/30 75/62/30 73/63/30 +f 76/64/31 77/65/31 75/62/31 +f 78/66/32 79/67/32 77/65/32 +f 69/68/11 73/69/11 77/70/11 +f 68/71/12 78/68/12 74/69/12 +f 93/71/12 89/72/12 85/73/12 +f 86/72/11 90/73/11 94/74/11 +f 95/67/33 110/75/9 102/76/34 +f 104/65/35 95/76/35 96/67/35 +f 105/65/36 96/76/36 97/67/36 +f 98/67/37 105/75/37 97/76/37 +f 107/65/38 98/76/38 99/67/38 +f 108/65/35 99/76/35 100/67/35 +f 102/67/39 109/75/39 101/76/39 +f 103/65/40 118/77/40 110/75/40 +f 104/65/41 111/77/41 103/75/41 +f 113/62/42 104/75/42 105/65/42 +f 114/62/43 105/75/43 106/65/43 +f 115/62/44 106/75/44 107/65/44 +f 116/62/45 107/75/45 108/65/45 +f 109/65/46 116/77/46 108/75/46 +f 110/65/47 117/77/47 109/75/47 +f 111/63/48 126/78/48 118/79/48 +f 120/80/49 111/79/49 112/63/49 +f 121/80/50 112/79/50 113/63/50 +f 122/80/51 113/79/51 114/63/51 +f 123/80/52 114/79/52 115/63/52 +f 116/63/53 123/78/53 115/79/53 +f 125/80/54 116/79/54 117/63/54 +f 126/80/55 117/79/55 118/63/55 +f 127/63/56 126/77/56 119/62/56 +f 128/63/57 119/77/57 120/62/57 +f 121/62/58 128/79/58 120/77/58 +f 122/62/59 129/79/59 121/77/59 +f 123/62/60 130/79/60 122/77/60 +f 124/62/61 131/79/61 123/77/61 +f 133/63/62 124/77/62 125/62/62 +f 134/63/63 125/77/63 126/62/63 +f 135/62/64 134/76/64 127/67/64 +f 136/62/65 127/76/65 128/67/65 +f 129/67/66 136/77/66 128/76/66 +f 130/67/67 137/77/67 129/76/67 +f 131/67/68 138/77/68 130/76/68 +f 132/67/69 139/77/69 131/76/69 +f 141/62/70 132/76/70 133/67/70 +f 142/62/71 133/76/71 134/67/71 +f 100/76/72 109/65/72 108/75/72 +f 143/67/39 158/75/39 151/65/39 +f 143/76/72 152/65/72 144/67/72 +f 144/76/73 153/65/73 145/67/73 +f 146/67/34 153/75/12 154/65/9 +f 147/67/39 154/75/39 155/65/39 +f 147/76/72 156/65/72 148/67/72 +f 150/67/74 157/75/75 158/65/10 +f 151/65/76 166/77/76 159/62/76 +f 152/65/77 159/77/77 160/62/77 +f 152/75/41 161/62/41 153/65/41 +f 153/75/40 162/62/40 154/65/40 +f 154/75/47 163/62/47 155/65/47 +f 155/75/46 164/62/46 156/65/46 +f 157/65/78 164/77/78 165/62/78 +f 158/65/79 165/77/79 166/62/79 +f 159/63/51 174/78/51 167/80/51 +f 159/79/50 168/80/50 160/63/50 +f 160/79/49 169/80/49 161/63/49 +f 161/79/48 170/80/48 162/63/48 +f 162/79/55 171/80/55 163/63/55 +f 164/63/80 171/78/80 172/80/80 +f 164/79/53 173/80/53 165/63/53 +f 165/79/52 174/80/52 166/63/52 +f 174/77/59 175/63/59 167/62/59 +f 167/77/58 176/63/58 168/62/58 +f 169/62/81 176/79/81 177/63/81 +f 170/62/82 177/79/82 178/63/82 +f 171/62/83 178/79/83 179/63/83 +f 172/62/84 179/79/84 180/63/84 +f 172/77/61 181/63/61 173/62/61 +f 173/77/60 182/63/60 174/62/60 +f 182/76/67 183/62/67 175/67/67 +f 175/76/66 184/62/66 176/67/66 +f 177/67/85 184/77/85 185/62/85 +f 178/67/86 185/77/86 186/62/86 +f 179/67/87 186/77/87 187/62/87 +f 180/67/88 187/77/88 188/62/88 +f 180/76/69 189/62/69 181/67/69 +f 181/76/68 190/62/68 182/67/68 +f 157/65/35 148/76/35 156/75/35 +f 191/67/89 206/75/89 199/65/89 +f 191/76/90 200/65/90 192/67/90 +f 192/76/91 201/65/91 193/67/91 +f 194/67/11 201/75/92 202/65/10 +f 194/76/93 203/65/93 195/67/93 +f 196/67/90 203/75/90 204/65/90 +f 198/67/34 205/75/12 206/65/9 +f 199/65/94 214/77/94 207/62/94 +f 200/65/95 207/77/95 208/62/95 +f 200/75/96 209/62/96 201/65/96 +f 201/75/97 210/62/97 202/65/97 +f 202/75/98 211/62/98 203/65/98 +f 203/75/99 212/62/99 204/65/99 +f 205/65/100 212/77/100 213/62/100 +f 206/65/101 213/77/101 214/62/101 +f 214/79/102 215/80/102 207/63/102 +f 207/79/103 216/80/103 208/63/103 +f 208/79/104 217/80/104 209/63/104 +f 210/63/105 217/78/105 218/80/105 +f 211/63/106 218/78/106 219/80/106 +f 211/79/107 220/80/107 212/63/107 +f 213/63/108 220/78/108 221/80/108 +f 213/79/109 222/80/109 214/63/109 +f 222/77/110 223/63/110 215/62/110 +f 215/77/111 224/63/111 216/62/111 +f 217/62/112 224/79/112 225/63/112 +f 218/62/113 225/79/113 226/63/113 +f 219/62/114 226/79/114 227/63/114 +f 220/62/115 227/79/115 228/63/115 +f 220/77/116 229/63/116 221/62/116 +f 221/77/117 230/63/117 222/62/117 +f 230/76/118 231/62/118 223/67/118 +f 223/76/119 232/62/119 224/67/119 +f 225/67/120 232/77/120 233/62/120 +f 226/67/121 233/77/121 234/62/121 +f 227/67/122 234/77/122 235/62/122 +f 228/67/123 235/77/123 236/62/123 +f 228/76/124 237/62/124 229/67/124 +f 229/76/71 238/62/71 230/67/71 +f 205/65/125 196/76/125 204/75/125 +f 239/67/126 254/75/10 246/76/127 +f 248/65/91 239/76/91 240/67/91 +f 249/65/128 240/76/128 241/67/128 +f 242/67/93 249/75/93 241/76/93 +f 243/67/127 250/75/9 242/76/34 +f 252/65/125 243/76/125 244/67/125 +f 246/67/89 253/75/89 245/76/89 +f 247/65/97 262/77/97 254/75/97 +f 248/65/96 255/77/96 247/75/96 +f 257/62/129 248/75/129 249/65/129 +f 258/62/130 249/75/130 250/65/130 +f 259/62/131 250/75/131 251/65/131 +f 260/62/132 251/75/132 252/65/132 +f 253/65/99 260/77/99 252/75/99 +f 254/65/98 261/77/98 253/75/98 +f 263/80/105 262/79/105 255/63/105 +f 256/63/104 263/78/104 255/79/104 +f 265/80/103 256/79/103 257/63/103 +f 266/80/102 257/79/102 258/63/102 +f 259/63/109 266/78/109 258/79/109 +f 268/80/108 259/79/108 260/63/108 +f 261/63/107 268/78/107 260/79/107 +f 270/80/106 261/79/106 262/63/106 +f 271/63/133 270/77/133 263/62/133 +f 272/63/134 263/77/134 264/62/134 +f 265/62/111 272/79/111 264/77/111 +f 266/62/110 273/79/110 265/77/110 +f 267/62/117 274/79/117 266/77/117 +f 268/62/116 275/79/116 267/77/116 +f 277/63/135 268/77/135 269/62/135 +f 278/63/136 269/77/136 270/62/136 +f 279/62/137 278/76/137 271/67/137 +f 280/62/138 271/76/138 272/67/138 +f 273/67/119 280/77/119 272/76/119 +f 274/67/118 281/77/118 273/76/118 +f 275/67/71 282/77/71 274/76/71 +f 276/67/124 283/77/124 275/76/124 +f 285/62/139 276/76/139 277/67/139 +f 286/62/68 277/76/68 278/67/68 +f 244/76/90 253/65/90 252/75/90 +f 288/53/21 289/78/21 287/52/21 +f 294/81/9 297/82/9 293/83/9 +f 296/84/10 291/85/10 295/86/10 +f 297/87/11 291/85/11 293/83/11 +f 294/81/12 296/88/12 298/89/12 +f 299/90/22 302/91/22 301/50/22 +f 309/92/10 306/93/10 305/90/10 +f 303/50/9 308/94/9 307/95/9 +f 303/50/12 309/96/12 305/90/12 +f 308/97/11 306/93/11 310/98/11 +f 18/15/9 22/18/9 21/16/9 +f 20/18/10 16/44/10 15/19/10 +f 21/20/11 19/21/11 15/19/11 +f 18/15/12 16/44/12 20/21/12 +f 25/22/13 26/26/13 24/23/13 +f 27/25/14 28/27/14 26/26/14 +f 29/25/15 30/27/15 28/27/15 +f 31/28/16 32/30/16 30/27/16 +f 33/29/17 34/32/17 32/30/17 +f 35/31/18 36/33/18 34/32/18 +f 37/31/19 38/33/19 36/33/19 +f 23/34/20 24/99/20 38/33/20 +f 25/37/21 23/100/21 37/101/21 +f 37/101/21 35/102/21 33/35/21 +f 33/35/21 31/103/21 29/36/21 +f 29/36/21 27/104/21 25/37/21 +f 25/37/21 37/101/21 33/35/21 +f 41/22/13 42/26/13 40/23/13 +f 43/25/14 44/27/14 42/26/14 +f 45/25/15 46/27/15 44/27/15 +f 47/28/16 48/30/16 46/27/16 +f 49/29/17 50/32/17 48/30/17 +f 51/31/18 52/33/18 50/32/18 +f 53/31/19 54/33/19 52/33/19 +f 39/34/20 40/99/20 54/33/20 +f 41/37/21 39/100/21 53/101/21 +f 53/101/21 51/102/21 49/35/21 +f 49/35/21 47/103/21 45/36/21 +f 45/36/21 43/104/21 41/37/21 +f 41/37/21 53/101/21 49/35/21 +f 24/38/21 48/105/21 50/39/21 +f 46/41/21 48/105/21 24/38/21 +f 19/44/21 21/19/21 44/43/21 +f 44/43/21 46/41/21 26/42/21 +f 26/42/21 28/106/21 19/44/21 +f 22/17/21 52/49/21 54/107/21 +f 22/17/21 54/107/21 40/45/21 +f 42/46/21 44/43/21 21/19/21 +f 21/19/21 22/17/21 40/45/21 +f 19/44/21 28/106/21 30/108/21 +f 19/44/21 30/108/21 32/47/21 +f 34/48/21 36/109/21 20/15/21 +f 20/15/21 19/44/21 32/47/21 +f 52/49/21 22/17/21 20/15/21 +f 20/15/21 36/109/21 38/40/21 +f 38/40/21 50/39/21 52/49/21 +f 56/50/22 58/110/22 57/51/22 +f 58/53/23 62/57/23 61/54/23 +f 60/54/11 66/111/11 63/56/11 +f 60/54/24 56/55/24 55/53/24 +f 61/57/25 59/54/25 55/55/25 +f 58/55/26 56/53/26 60/57/26 +f 63/58/21 66/51/21 65/59/21 +f 62/54/10 63/111/10 64/56/10 +f 59/54/9 65/111/9 66/56/9 +f 61/54/12 64/111/12 65/56/12 +f 68/61/27 70/64/27 69/62/27 +f 70/64/28 72/66/28 71/65/28 +f 72/66/29 74/91/29 73/67/29 +f 74/61/30 76/64/30 75/62/30 +f 76/64/31 78/66/31 77/65/31 +f 78/66/32 80/91/32 79/67/32 +f 79/71/11 67/74/11 69/68/11 +f 69/68/11 71/73/11 73/69/11 +f 73/69/11 75/72/11 77/70/11 +f 77/70/11 79/71/11 69/68/11 +f 72/72/12 70/70/12 68/71/12 +f 68/71/12 80/74/12 78/68/12 +f 78/68/12 76/73/12 74/69/12 +f 74/69/12 72/72/12 68/71/12 +f 83/68/12 81/74/12 93/71/12 +f 93/71/12 91/70/12 89/72/12 +f 89/72/12 87/69/12 85/73/12 +f 85/73/12 83/68/12 93/71/12 +f 82/71/11 84/70/11 86/72/11 +f 86/72/11 88/69/11 90/73/11 +f 90/73/11 92/68/11 94/74/11 +f 94/74/11 82/71/11 86/72/11 +f 95/67/38 103/65/38 110/75/38 +f 104/65/140 103/75/140 95/76/140 +f 105/65/72 104/75/72 96/76/72 +f 98/67/10 106/65/12 105/75/126 +f 107/65/141 106/75/10 98/76/142 +f 108/65/140 107/75/140 99/76/140 +f 102/67/9 110/65/143 109/75/33 +f 103/65/144 111/62/144 118/77/144 +f 104/65/145 112/62/145 111/77/145 +f 113/62/77 112/77/77 104/75/77 +f 114/62/76 113/77/76 105/75/76 +f 115/62/79 114/77/79 106/75/79 +f 116/62/78 115/77/78 107/75/78 +f 109/65/146 117/62/146 116/77/146 +f 110/65/147 118/62/147 117/77/147 +f 111/63/48 119/80/48 126/78/48 +f 120/80/49 119/78/49 111/79/49 +f 121/80/50 120/78/50 112/79/50 +f 122/80/51 121/78/51 113/79/51 +f 123/80/52 122/78/52 114/79/52 +f 116/63/148 124/80/148 123/78/148 +f 125/80/80 124/78/80 116/79/80 +f 126/80/55 125/78/55 117/79/55 +f 127/63/82 134/79/82 126/77/82 +f 128/63/81 127/79/81 119/77/81 +f 121/62/149 129/63/149 128/79/149 +f 122/62/150 130/63/150 129/79/150 +f 123/62/151 131/63/151 130/79/151 +f 124/62/152 132/63/152 131/79/152 +f 133/63/84 132/79/84 124/77/84 +f 134/63/83 133/79/83 125/77/83 +f 135/62/86 142/77/86 134/76/86 +f 136/62/85 135/77/85 127/76/85 +f 129/67/153 137/62/153 136/77/153 +f 130/67/121 138/62/121 137/77/121 +f 131/67/154 139/62/154 138/77/154 +f 132/67/155 140/62/155 139/77/155 +f 141/62/88 140/77/88 132/76/88 +f 142/62/87 141/77/87 133/76/87 +f 100/76/156 101/67/156 109/65/156 +f 143/67/75 150/76/10 158/75/12 +f 143/76/36 151/75/36 152/65/36 +f 144/76/35 152/75/35 153/65/35 +f 146/67/157 145/76/157 153/75/157 +f 147/67/12 146/76/9 154/75/158 +f 147/76/156 155/75/156 156/65/156 +f 150/67/38 149/76/38 157/75/38 +f 151/65/43 158/75/43 166/77/43 +f 152/65/42 151/75/42 159/77/42 +f 152/75/145 160/77/145 161/62/145 +f 153/75/159 161/77/159 162/62/159 +f 154/75/147 162/77/147 163/62/147 +f 155/75/146 163/77/146 164/62/146 +f 157/65/45 156/75/45 164/77/45 +f 158/65/44 157/75/44 165/77/44 +f 159/63/51 166/79/51 174/78/51 +f 159/79/50 167/78/50 168/80/50 +f 160/79/49 168/78/49 169/80/49 +f 161/79/48 169/78/48 170/80/48 +f 162/79/55 170/78/55 171/80/55 +f 164/63/54 163/79/54 171/78/54 +f 164/79/148 172/78/148 173/80/148 +f 165/79/52 173/78/52 174/80/52 +f 174/77/150 182/79/150 175/63/150 +f 167/77/149 175/79/149 176/63/149 +f 169/62/57 168/77/57 176/79/57 +f 170/62/160 169/77/160 177/79/160 +f 171/62/63 170/77/63 178/79/63 +f 172/62/62 171/77/62 179/79/62 +f 172/77/152 180/79/152 181/63/152 +f 173/77/151 181/79/151 182/63/151 +f 182/76/121 190/77/121 183/62/121 +f 175/76/153 183/77/153 184/62/153 +f 177/67/65 176/76/65 184/77/65 +f 178/67/64 177/76/64 185/77/64 +f 179/67/71 178/76/71 186/77/71 +f 180/67/70 179/76/70 187/77/70 +f 180/76/155 188/77/155 189/62/155 +f 181/76/154 189/77/154 190/62/154 +f 157/65/73 149/67/73 148/76/73 +f 191/67/12 198/76/9 206/75/158 +f 191/76/161 199/75/161 200/65/161 +f 192/76/125 200/75/125 201/65/125 +f 194/67/162 193/76/162 201/75/162 +f 194/76/10 202/75/163 203/65/164 +f 196/67/128 195/76/128 203/75/128 +f 198/67/165 197/76/165 205/75/165 +f 199/65/130 206/75/130 214/77/130 +f 200/65/129 199/75/129 207/77/129 +f 200/75/166 208/77/166 209/62/166 +f 201/75/167 209/77/167 210/62/167 +f 202/75/168 210/77/168 211/62/168 +f 203/75/169 211/77/169 212/62/169 +f 205/65/132 204/75/132 212/77/132 +f 206/65/131 205/75/131 213/77/131 +f 214/79/102 222/78/102 215/80/102 +f 207/79/103 215/78/103 216/80/103 +f 208/79/104 216/78/104 217/80/104 +f 210/63/105 209/79/105 217/78/105 +f 211/63/106 210/79/106 218/78/106 +f 211/79/107 219/78/107 220/80/107 +f 213/63/108 212/79/108 220/78/108 +f 213/79/109 221/78/109 222/80/109 +f 222/77/170 230/79/170 223/63/170 +f 215/77/171 223/79/171 224/63/171 +f 217/62/134 216/77/134 224/79/134 +f 218/62/133 217/77/133 225/79/133 +f 219/62/136 218/77/136 226/79/136 +f 220/62/135 219/77/135 227/79/135 +f 220/77/172 228/79/172 229/63/172 +f 221/77/173 229/79/173 230/63/173 +f 230/76/86 238/77/86 231/62/86 +f 223/76/174 231/77/174 232/62/174 +f 225/67/138 224/76/138 232/77/138 +f 226/67/137 225/76/137 233/77/137 +f 227/67/68 226/76/68 234/77/68 +f 228/67/139 227/76/139 235/77/139 +f 228/76/175 236/77/175 237/62/175 +f 229/76/176 237/77/176 238/62/176 +f 205/65/91 197/67/91 196/76/91 +f 239/67/165 247/65/165 254/75/165 +f 248/65/177 247/75/177 239/76/177 +f 249/65/90 248/75/90 240/76/90 +f 242/67/9 250/65/34 249/75/74 +f 243/67/162 251/65/162 250/75/162 +f 252/65/177 251/75/177 243/76/177 +f 246/67/10 254/65/12 253/75/126 +f 247/65/178 255/62/178 262/77/178 +f 248/65/166 256/62/166 255/77/166 +f 257/62/95 256/77/95 248/75/95 +f 258/62/179 257/77/179 249/75/179 +f 259/62/101 258/77/101 250/75/101 +f 260/62/100 259/77/100 251/75/100 +f 253/65/169 261/62/169 260/77/169 +f 254/65/168 262/62/168 261/77/168 +f 263/80/105 270/78/105 262/79/105 +f 256/63/104 264/80/104 263/78/104 +f 265/80/103 264/78/103 256/79/103 +f 266/80/102 265/78/102 257/79/102 +f 259/63/109 267/80/109 266/78/109 +f 268/80/108 267/78/108 259/79/108 +f 261/63/107 269/80/107 268/78/107 +f 270/80/106 269/78/106 261/79/106 +f 271/63/113 278/79/113 270/77/113 +f 272/63/112 271/79/112 263/77/112 +f 265/62/171 273/63/171 272/79/171 +f 266/62/170 274/63/170 273/79/170 +f 267/62/173 275/63/173 274/79/173 +f 268/62/172 276/63/172 275/79/172 +f 277/63/115 276/79/115 268/77/115 +f 278/63/114 277/79/114 269/77/114 +f 279/62/121 286/77/121 278/76/121 +f 280/62/120 279/77/120 271/76/120 +f 273/67/174 281/62/174 280/77/174 +f 274/67/86 282/62/86 281/77/86 +f 275/67/176 283/62/176 282/77/176 +f 276/67/175 284/62/175 283/77/175 +f 285/62/123 284/77/123 276/76/123 +f 286/62/122 285/77/122 277/76/122 +f 244/76/128 245/67/128 253/65/128 +f 288/53/21 290/112/21 289/78/21 +f 294/81/9 298/113/9 297/82/9 +f 296/84/10 292/114/10 291/85/10 +f 297/87/11 295/115/11 291/85/11 +f 294/81/12 292/114/12 296/88/12 +f 299/90/22 300/93/22 302/91/22 +f 309/92/10 310/116/10 306/93/10 +f 303/50/9 304/91/9 308/94/9 +f 303/50/12 307/117/12 309/96/12 +f 308/97/11 304/91/11 306/93/11 diff --git a/src/main/resources/assets/hbm/models/machines/oilburner_hp.obj b/src/main/resources/assets/hbm/models/machines/oilburner_hp.obj new file mode 100644 index 000000000..6d8e8b1f6 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/oilburner_hp.obj @@ -0,0 +1,4915 @@ +# Blender v2.79 (sub 0) OBJ File: 'oilburner_hp.blend' +# www.blender.org +o Plane +v -1.500000 0.125000 1.375000 +v 1.500000 0.125000 1.375000 +v -1.500000 0.125000 -1.375000 +v 1.500000 0.125000 -1.375000 +v -1.500000 1.875000 1.375000 +v 1.500000 1.875000 1.375000 +v -1.500000 1.875000 -1.375000 +v 1.500000 1.875000 -1.375000 +v -1.375000 0.125000 -1.500000 +v -1.375000 0.125000 1.500000 +v 1.375000 0.125000 1.500000 +v 1.375000 0.125000 -1.500000 +v -1.375000 1.875000 -1.500000 +v -1.375000 1.875000 1.500000 +v 1.375000 1.875000 1.500000 +v 1.375000 1.875000 -1.500000 +v -1.500000 0.000000 1.500000 +v 1.500000 0.000000 1.500000 +v 1.500000 0.000000 -1.500000 +v -1.500000 0.000000 -1.500000 +v -0.500000 2.000000 0.500000 +v 0.500000 2.000000 0.500000 +v 0.500000 2.000000 -0.500000 +v -0.500000 2.000000 -0.500000 +v 1.375000 0.250000 1.125000 +v 1.375000 0.250000 -1.125000 +v 1.375000 1.750000 1.125000 +v 1.375000 1.750000 -1.125000 +v -0.375000 1.750000 -1.375000 +v -0.375000 0.250000 -1.375000 +v 0.375000 1.750000 -1.375000 +v 0.375000 0.250000 -1.375000 +v -1.500000 2.000000 -1.500000 +v -1.500000 2.000000 1.500000 +v 1.500000 2.000000 1.500000 +v 1.500000 2.000000 -1.500000 +v -0.437500 1.937500 -0.437500 +v -0.437500 1.937500 0.437500 +v 0.437500 1.937500 0.437500 +v 0.437500 1.937500 -0.437500 +v -0.500000 1.937500 -0.500000 +v -0.500000 1.937500 0.500000 +v 0.500000 1.937500 0.500000 +v 0.500000 1.937500 -0.500000 +v -0.437500 2.000000 -0.437500 +v -0.437500 2.000000 0.437500 +v 0.437500 2.000000 0.437500 +v 0.437500 2.000000 -0.437500 +v 1.500000 0.250000 0.250000 +v 1.500000 0.750000 0.250000 +v 1.500000 0.250000 -0.250000 +v 1.500000 0.750000 -0.250000 +v 1.375000 0.250000 -0.250000 +v 1.375000 0.250000 0.250000 +v 1.375000 0.750000 0.250000 +v 1.375000 0.750000 -0.250000 +v -1.500000 0.250000 -0.250000 +v -1.500000 0.750000 -0.250000 +v -1.500000 0.250000 0.250000 +v -1.500000 0.750000 0.250000 +v -1.375000 0.250000 0.250000 +v -1.375000 0.250000 -0.250000 +v -1.375000 0.750000 -0.250000 +v -1.375000 0.750000 0.250000 +v 0.250000 0.250000 -1.500000 +v 0.250000 0.750000 -1.500000 +v -0.250000 0.250000 -1.500000 +v -0.250000 0.750000 -1.500000 +v -0.250000 0.250000 -1.375000 +v 0.250000 0.250000 -1.375000 +v 0.250000 0.750000 -1.375000 +v -0.250000 0.750000 -1.375000 +v -0.250000 0.250000 1.500000 +v -0.250000 0.750000 1.500000 +v 0.250000 0.250000 1.500000 +v 0.250000 0.750000 1.500000 +v 0.250000 0.250000 1.375000 +v -0.250000 0.250000 1.375000 +v -0.250000 0.750000 1.375000 +v 0.250000 0.750000 1.375000 +v 1.375000 0.125000 1.375000 +v 1.375000 0.125000 -1.375000 +v 1.375000 1.875000 1.375000 +v 1.375000 1.875000 -1.375000 +v 1.375000 0.250000 0.375000 +v 1.375000 1.750000 0.375000 +v 1.375000 0.250000 -0.375000 +v 1.375000 1.750000 -0.375000 +v 1.125000 1.750000 -1.125000 +v 1.125000 0.250000 -1.125000 +v 1.125000 0.250000 1.125000 +v 1.125000 1.750000 1.125000 +v 1.125000 1.750000 0.375000 +v 1.125000 0.250000 0.375000 +v 1.125000 1.750000 -0.375000 +v 1.125000 0.250000 -0.375000 +v -1.375000 0.250000 -1.125000 +v -1.375000 0.250000 1.125000 +v -1.375000 1.750000 -1.125000 +v -1.375000 1.750000 1.125000 +v -1.375000 0.125000 -1.375000 +v -1.375000 0.125000 1.375000 +v -1.375000 1.875000 -1.375000 +v -1.375000 1.875000 1.375000 +v -1.375000 0.250000 -0.375000 +v -1.375000 1.750000 -0.375000 +v -1.375000 0.250000 0.375000 +v -1.375000 1.750000 0.375000 +v -1.125000 1.750000 1.125000 +v -1.125000 0.250000 1.125000 +v -1.125000 0.250000 -1.125000 +v -1.125000 1.750000 -1.125000 +v -1.125000 1.750000 -0.375000 +v -1.125000 0.250000 -0.375000 +v -1.125000 1.750000 0.375000 +v -1.125000 0.250000 0.375000 +v 0.375000 1.750000 -1.125000 +v 0.375000 0.250000 -1.125000 +v -0.375000 1.750000 -1.125000 +v -0.375000 0.250000 -1.125000 +v -0.375000 0.250000 1.375000 +v -0.375000 1.750000 1.375000 +v 0.375000 0.250000 1.375000 +v 0.375000 1.750000 1.375000 +v -0.375000 1.750000 1.125000 +v -0.375000 0.250000 1.125000 +v 0.375000 1.750000 1.125000 +v 0.375000 0.250000 1.125000 +v 1.125000 0.250000 1.375000 +v 1.125000 1.750000 1.375000 +v -1.125000 1.750000 1.375000 +v -1.125000 0.250000 1.375000 +v 1.125000 1.750000 -1.375000 +v 1.125000 0.250000 -1.375000 +v -1.125000 0.250000 -1.375000 +v -1.125000 1.750000 -1.375000 +v -0.812500 0.375000 -1.125000 +v -0.849112 0.463388 -1.125000 +v -0.937500 0.500000 -1.125000 +v -1.025888 0.463388 -1.125000 +v -1.062500 0.375000 -1.125000 +v -1.025888 0.286612 -1.125000 +v -0.937500 0.250000 -1.125000 +v -0.849112 0.286612 -1.125000 +v -0.812500 0.375000 -1.375000 +v -0.849112 0.463388 -1.375000 +v -0.937500 0.500000 -1.375000 +v -1.025888 0.463388 -1.375000 +v -1.062500 0.375000 -1.375000 +v -1.025888 0.286612 -1.375000 +v -0.937500 0.250000 -1.375000 +v -0.849112 0.286612 -1.375000 +v -0.812500 0.411612 -1.463388 +v -0.849112 0.474112 -1.400888 +v -1.025889 0.474112 -1.400888 +v -1.062500 0.411612 -1.463388 +v -1.025889 0.349112 -1.525888 +v -0.937500 0.323224 -1.551777 +v -0.849112 0.349112 -1.525888 +v -0.812500 0.500000 -1.500000 +v -0.849112 0.500000 -1.411611 +v -1.025889 0.500000 -1.411611 +v -1.062500 0.500000 -1.500000 +v -1.025889 0.500000 -1.588388 +v -0.937500 0.500000 -1.625000 +v -0.849112 0.500000 -1.588388 +v -1.062500 1.625000 -1.125000 +v -1.025888 1.536612 -1.125000 +v -0.937500 1.500000 -1.125000 +v -0.849112 1.536612 -1.125000 +v -0.812500 1.625000 -1.125000 +v -0.849112 1.713388 -1.125000 +v -0.937500 1.750000 -1.125000 +v -1.025888 1.713388 -1.125000 +v -1.062500 1.625000 -1.375000 +v -1.025889 1.536612 -1.375000 +v -0.937500 1.500000 -1.375000 +v -0.849112 1.536612 -1.375000 +v -0.812500 1.625000 -1.375000 +v -0.849112 1.713388 -1.375000 +v -0.937500 1.750000 -1.375000 +v -1.025888 1.713388 -1.375000 +v -1.062500 1.588388 -1.463388 +v -1.025889 1.525888 -1.400888 +v -0.849112 1.525888 -1.400888 +v -0.812500 1.588388 -1.463388 +v -0.849112 1.650888 -1.525888 +v -0.937500 1.676777 -1.551777 +v -1.025888 1.650888 -1.525888 +v -1.062500 1.500000 -1.500000 +v -1.025889 1.500000 -1.411611 +v -0.849112 1.500000 -1.411611 +v -0.812500 1.500000 -1.500000 +v -0.849112 1.500000 -1.588388 +v -0.937500 1.500000 -1.625000 +v -1.025888 1.500000 -1.588388 +v -0.437500 0.375000 -1.125000 +v -0.474112 0.463388 -1.125000 +v -0.562500 0.500000 -1.125000 +v -0.650888 0.463388 -1.125000 +v -0.687500 0.375000 -1.125000 +v -0.650888 0.286612 -1.125000 +v -0.562500 0.250000 -1.125000 +v -0.474112 0.286612 -1.125000 +v -0.437500 0.375000 -1.375000 +v -0.474112 0.463388 -1.375000 +v -0.562500 0.500000 -1.375000 +v -0.650888 0.463388 -1.375000 +v -0.687500 0.375000 -1.375000 +v -0.650888 0.286612 -1.375000 +v -0.562500 0.250000 -1.375000 +v -0.474112 0.286612 -1.375000 +v -0.437500 0.411612 -1.463388 +v -0.474112 0.474112 -1.400888 +v -0.650889 0.474112 -1.400888 +v -0.687500 0.411612 -1.463388 +v -0.650889 0.349112 -1.525888 +v -0.562500 0.323224 -1.551777 +v -0.474112 0.349112 -1.525888 +v -0.437500 0.500000 -1.500000 +v -0.474112 0.500000 -1.411611 +v -0.650889 0.500000 -1.411611 +v -0.687500 0.500000 -1.500000 +v -0.650889 0.500000 -1.588388 +v -0.562500 0.500000 -1.625000 +v -0.474112 0.500000 -1.588388 +v -0.687500 1.625000 -1.125000 +v -0.650888 1.536612 -1.125000 +v -0.562500 1.500000 -1.125000 +v -0.474112 1.536612 -1.125000 +v -0.437500 1.625000 -1.125000 +v -0.474112 1.713388 -1.125000 +v -0.562500 1.750000 -1.125000 +v -0.650888 1.713388 -1.125000 +v -0.687500 1.625000 -1.375000 +v -0.650889 1.536612 -1.375000 +v -0.562500 1.500000 -1.375000 +v -0.474112 1.536612 -1.375000 +v -0.437500 1.625000 -1.375000 +v -0.474112 1.713388 -1.375000 +v -0.562500 1.750000 -1.375000 +v -0.650888 1.713388 -1.375000 +v -0.687500 1.588388 -1.463388 +v -0.650889 1.525888 -1.400888 +v -0.474112 1.525888 -1.400888 +v -0.437500 1.588388 -1.463388 +v -0.474112 1.650888 -1.525888 +v -0.562500 1.676777 -1.551777 +v -0.650888 1.650888 -1.525888 +v -0.687500 1.500000 -1.500000 +v -0.650889 1.500000 -1.411611 +v -0.474112 1.500000 -1.411611 +v -0.437500 1.500000 -1.500000 +v -0.474112 1.500000 -1.588388 +v -0.562500 1.500000 -1.625000 +v -0.650888 1.500000 -1.588388 +v 0.687500 0.375000 -1.125000 +v 0.650888 0.463388 -1.125000 +v 0.562500 0.500000 -1.125000 +v 0.474112 0.463388 -1.125000 +v 0.437500 0.375000 -1.125000 +v 0.474112 0.286612 -1.125000 +v 0.562500 0.250000 -1.125000 +v 0.650888 0.286612 -1.125000 +v 0.687500 0.375000 -1.375000 +v 0.650888 0.463388 -1.375000 +v 0.562500 0.500000 -1.375000 +v 0.474112 0.463388 -1.375000 +v 0.437500 0.375000 -1.375000 +v 0.474112 0.286612 -1.375000 +v 0.562500 0.250000 -1.375000 +v 0.650888 0.286612 -1.375000 +v 0.687500 0.411612 -1.463388 +v 0.650888 0.474112 -1.400888 +v 0.474111 0.474112 -1.400888 +v 0.437500 0.411612 -1.463388 +v 0.474111 0.349112 -1.525888 +v 0.562500 0.323224 -1.551777 +v 0.650888 0.349112 -1.525888 +v 0.687500 0.500000 -1.500000 +v 0.650888 0.500000 -1.411611 +v 0.474111 0.500000 -1.411611 +v 0.437500 0.500000 -1.500000 +v 0.474111 0.500000 -1.588388 +v 0.562500 0.500000 -1.625000 +v 0.650888 0.500000 -1.588388 +v 0.437500 1.625000 -1.125000 +v 0.474112 1.536612 -1.125000 +v 0.562500 1.500000 -1.125000 +v 0.650888 1.536612 -1.125000 +v 0.687500 1.625000 -1.125000 +v 0.650888 1.713388 -1.125000 +v 0.562500 1.750000 -1.125000 +v 0.474112 1.713388 -1.125000 +v 0.437500 1.625000 -1.375000 +v 0.474111 1.536612 -1.375000 +v 0.562500 1.500000 -1.375000 +v 0.650888 1.536612 -1.375000 +v 0.687500 1.625000 -1.375000 +v 0.650888 1.713388 -1.375000 +v 0.562500 1.750000 -1.375000 +v 0.474112 1.713388 -1.375000 +v 0.437500 1.588388 -1.463388 +v 0.474111 1.525888 -1.400888 +v 0.650888 1.525888 -1.400888 +v 0.687500 1.588388 -1.463388 +v 0.650888 1.650888 -1.525888 +v 0.562500 1.676777 -1.551777 +v 0.474112 1.650888 -1.525888 +v 0.437500 1.500000 -1.500000 +v 0.474111 1.500000 -1.411611 +v 0.650888 1.500000 -1.411611 +v 0.687500 1.500000 -1.500000 +v 0.650888 1.500000 -1.588388 +v 0.562500 1.500000 -1.625000 +v 0.474112 1.500000 -1.588388 +v 1.062500 0.375000 -1.125000 +v 1.025888 0.463388 -1.125000 +v 0.937500 0.500000 -1.125000 +v 0.849112 0.463388 -1.125000 +v 0.812500 0.375000 -1.125000 +v 0.849112 0.286612 -1.125000 +v 0.937500 0.250000 -1.125000 +v 1.025888 0.286612 -1.125000 +v 1.062500 0.375000 -1.375000 +v 1.025888 0.463388 -1.375000 +v 0.937500 0.500000 -1.375000 +v 0.849112 0.463388 -1.375000 +v 0.812500 0.375000 -1.375000 +v 0.849112 0.286612 -1.375000 +v 0.937500 0.250000 -1.375000 +v 1.025888 0.286612 -1.375000 +v 1.062500 0.411612 -1.463388 +v 1.025888 0.474112 -1.400888 +v 0.849111 0.474112 -1.400888 +v 0.812500 0.411612 -1.463388 +v 0.849111 0.349112 -1.525888 +v 0.937500 0.323224 -1.551777 +v 1.025888 0.349112 -1.525888 +v 1.062500 0.500000 -1.500000 +v 1.025888 0.500000 -1.411611 +v 0.849111 0.500000 -1.411611 +v 0.812500 0.500000 -1.500000 +v 0.849111 0.500000 -1.588388 +v 0.937500 0.500000 -1.625000 +v 1.025888 0.500000 -1.588388 +v 0.812500 1.625000 -1.125000 +v 0.849112 1.536612 -1.125000 +v 0.937500 1.500000 -1.125000 +v 1.025888 1.536612 -1.125000 +v 1.062500 1.625000 -1.125000 +v 1.025888 1.713388 -1.125000 +v 0.937500 1.750000 -1.125000 +v 0.849112 1.713388 -1.125000 +v 0.812500 1.625000 -1.375000 +v 0.849111 1.536612 -1.375000 +v 0.937500 1.500000 -1.375000 +v 1.025888 1.536612 -1.375000 +v 1.062500 1.625000 -1.375000 +v 1.025888 1.713388 -1.375000 +v 0.937500 1.750000 -1.375000 +v 0.849112 1.713388 -1.375000 +v 0.812500 1.588388 -1.463388 +v 0.849111 1.525888 -1.400888 +v 1.025888 1.525888 -1.400888 +v 1.062500 1.588388 -1.463388 +v 1.025888 1.650888 -1.525888 +v 0.937500 1.676777 -1.551777 +v 0.849112 1.650888 -1.525888 +v 0.812500 1.500000 -1.500000 +v 0.849111 1.500000 -1.411611 +v 1.025888 1.500000 -1.411611 +v 1.062500 1.500000 -1.500000 +v 1.025888 1.500000 -1.588388 +v 0.937500 1.500000 -1.625000 +v 0.849112 1.500000 -1.588388 +v 0.812500 0.375000 1.125000 +v 0.849112 0.463388 1.125000 +v 0.937500 0.500000 1.125000 +v 1.025888 0.463388 1.125000 +v 1.062500 0.375000 1.125000 +v 1.025888 0.286612 1.125000 +v 0.937500 0.250000 1.125000 +v 0.849112 0.286612 1.125000 +v 0.812500 0.375000 1.375000 +v 0.849112 0.463388 1.375000 +v 0.937500 0.500000 1.375000 +v 1.025888 0.463388 1.375000 +v 1.062500 0.375000 1.375000 +v 1.025888 0.286612 1.375000 +v 0.937500 0.250000 1.375000 +v 0.849112 0.286612 1.375000 +v 0.812500 0.411612 1.463388 +v 0.849112 0.474112 1.400888 +v 1.025889 0.474112 1.400888 +v 1.062500 0.411612 1.463388 +v 1.025889 0.349112 1.525888 +v 0.937500 0.323224 1.551777 +v 0.849112 0.349112 1.525888 +v 0.812500 0.500000 1.500000 +v 0.849112 0.500000 1.411611 +v 1.025889 0.500000 1.411611 +v 1.062500 0.500000 1.500000 +v 1.025889 0.500000 1.588388 +v 0.937500 0.500000 1.625000 +v 0.849112 0.500000 1.588388 +v 1.062500 1.625000 1.125000 +v 1.025888 1.536612 1.125000 +v 0.937500 1.500000 1.125000 +v 0.849112 1.536612 1.125000 +v 0.812500 1.625000 1.125000 +v 0.849112 1.713388 1.125000 +v 0.937500 1.750000 1.125000 +v 1.025888 1.713388 1.125000 +v 1.062500 1.625000 1.375000 +v 1.025889 1.536612 1.375000 +v 0.937500 1.500000 1.375000 +v 0.849112 1.536612 1.375000 +v 0.812500 1.625000 1.375000 +v 0.849112 1.713388 1.375000 +v 0.937500 1.750000 1.375000 +v 1.025888 1.713388 1.375000 +v 1.062500 1.588388 1.463388 +v 1.025889 1.525888 1.400888 +v 0.849112 1.525888 1.400888 +v 0.812500 1.588388 1.463388 +v 0.849112 1.650888 1.525888 +v 0.937500 1.676777 1.551777 +v 1.025889 1.650888 1.525888 +v 1.062500 1.500000 1.500000 +v 1.025889 1.500000 1.411611 +v 0.849112 1.500000 1.411611 +v 0.812500 1.500000 1.500000 +v 0.849112 1.500000 1.588388 +v 0.937500 1.500000 1.625000 +v 1.025889 1.500000 1.588388 +v 0.437500 0.375000 1.125000 +v 0.474112 0.463388 1.125000 +v 0.562500 0.500000 1.125000 +v 0.650889 0.463388 1.125000 +v 0.687500 0.375000 1.125000 +v 0.650889 0.286612 1.125000 +v 0.562500 0.250000 1.125000 +v 0.474112 0.286612 1.125000 +v 0.437500 0.375000 1.375000 +v 0.474112 0.463388 1.375000 +v 0.562500 0.500000 1.375000 +v 0.650889 0.463388 1.375000 +v 0.687500 0.375000 1.375000 +v 0.650889 0.286612 1.375000 +v 0.562500 0.250000 1.375000 +v 0.474112 0.286612 1.375000 +v 0.437500 0.411612 1.463388 +v 0.474112 0.474112 1.400888 +v 0.650889 0.474112 1.400888 +v 0.687500 0.411612 1.463388 +v 0.650889 0.349112 1.525888 +v 0.562500 0.323224 1.551777 +v 0.474112 0.349112 1.525888 +v 0.437500 0.500000 1.500000 +v 0.474112 0.500000 1.411611 +v 0.650889 0.500000 1.411611 +v 0.687500 0.500000 1.500000 +v 0.650889 0.500000 1.588388 +v 0.562500 0.500000 1.625000 +v 0.474112 0.500000 1.588388 +v 0.687500 1.625000 1.125000 +v 0.650889 1.536612 1.125000 +v 0.562500 1.500000 1.125000 +v 0.474112 1.536612 1.125000 +v 0.437500 1.625000 1.125000 +v 0.474112 1.713388 1.125000 +v 0.562500 1.750000 1.125000 +v 0.650888 1.713388 1.125000 +v 0.687500 1.625000 1.375000 +v 0.650889 1.536612 1.375000 +v 0.562500 1.500000 1.375000 +v 0.474112 1.536612 1.375000 +v 0.437500 1.625000 1.375000 +v 0.474112 1.713388 1.375000 +v 0.562500 1.750000 1.375000 +v 0.650889 1.713388 1.375000 +v 0.687500 1.588388 1.463388 +v 0.650889 1.525888 1.400888 +v 0.474112 1.525888 1.400888 +v 0.437500 1.588388 1.463388 +v 0.474112 1.650888 1.525888 +v 0.562500 1.676777 1.551777 +v 0.650888 1.650888 1.525888 +v 0.687500 1.500000 1.500000 +v 0.650889 1.500000 1.411611 +v 0.474112 1.500000 1.411611 +v 0.437500 1.500000 1.500000 +v 0.474112 1.500000 1.588388 +v 0.562500 1.500000 1.625000 +v 0.650888 1.500000 1.588388 +v -0.687500 0.375000 1.125000 +v -0.650888 0.463388 1.125000 +v -0.562500 0.500000 1.125000 +v -0.474111 0.463388 1.125000 +v -0.437500 0.375000 1.125000 +v -0.474111 0.286612 1.125000 +v -0.562500 0.250000 1.125000 +v -0.650888 0.286612 1.125000 +v -0.687500 0.375000 1.375000 +v -0.650888 0.463388 1.375000 +v -0.562500 0.500000 1.375000 +v -0.474111 0.463388 1.375000 +v -0.437500 0.375000 1.375000 +v -0.474111 0.286612 1.375000 +v -0.562500 0.250000 1.375000 +v -0.650888 0.286612 1.375000 +v -0.687500 0.411612 1.463388 +v -0.650888 0.474112 1.400888 +v -0.474111 0.474112 1.400888 +v -0.437500 0.411612 1.463388 +v -0.474111 0.349112 1.525888 +v -0.562500 0.323224 1.551777 +v -0.650888 0.349112 1.525888 +v -0.687500 0.500000 1.500000 +v -0.650888 0.500000 1.411611 +v -0.474111 0.500000 1.411611 +v -0.437500 0.500000 1.500000 +v -0.474111 0.500000 1.588388 +v -0.562500 0.500000 1.625000 +v -0.650888 0.500000 1.588388 +v -0.437500 1.625000 1.125000 +v -0.474111 1.536612 1.125000 +v -0.562500 1.500000 1.125000 +v -0.650888 1.536612 1.125000 +v -0.687500 1.625000 1.125000 +v -0.650888 1.713388 1.125000 +v -0.562500 1.750000 1.125000 +v -0.474112 1.713388 1.125000 +v -0.437500 1.625000 1.375000 +v -0.474111 1.536612 1.375000 +v -0.562500 1.500000 1.375000 +v -0.650888 1.536612 1.375000 +v -0.687500 1.625000 1.375000 +v -0.650888 1.713388 1.375000 +v -0.562500 1.750000 1.375000 +v -0.474111 1.713388 1.375000 +v -0.437500 1.588388 1.463388 +v -0.474111 1.525888 1.400888 +v -0.650888 1.525888 1.400888 +v -0.687500 1.588388 1.463388 +v -0.650888 1.650888 1.525888 +v -0.562500 1.676777 1.551777 +v -0.474112 1.650888 1.525888 +v -0.437500 1.500000 1.500000 +v -0.474111 1.500000 1.411611 +v -0.650888 1.500000 1.411611 +v -0.687500 1.500000 1.500000 +v -0.650888 1.500000 1.588388 +v -0.562500 1.500000 1.625000 +v -0.474112 1.500000 1.588388 +v -1.062500 0.375000 1.125000 +v -1.025888 0.463388 1.125000 +v -0.937500 0.500000 1.125000 +v -0.849111 0.463388 1.125000 +v -0.812500 0.375000 1.125000 +v -0.849111 0.286612 1.125000 +v -0.937500 0.250000 1.125000 +v -1.025888 0.286612 1.125000 +v -1.062500 0.375000 1.375000 +v -1.025888 0.463388 1.375000 +v -0.937500 0.500000 1.375000 +v -0.849111 0.463388 1.375000 +v -0.812500 0.375000 1.375000 +v -0.849111 0.286612 1.375000 +v -0.937500 0.250000 1.375000 +v -1.025888 0.286612 1.375000 +v -1.062500 0.411612 1.463388 +v -1.025888 0.474112 1.400888 +v -0.849111 0.474112 1.400888 +v -0.812500 0.411612 1.463388 +v -0.849111 0.349112 1.525888 +v -0.937500 0.323224 1.551777 +v -1.025888 0.349112 1.525888 +v -1.062500 0.500000 1.500000 +v -1.025888 0.500000 1.411612 +v -0.849111 0.500000 1.411612 +v -0.812500 0.500000 1.500000 +v -0.849111 0.500000 1.588388 +v -0.937500 0.500000 1.625000 +v -1.025888 0.500000 1.588388 +v -0.812500 1.625000 1.125000 +v -0.849111 1.536612 1.125000 +v -0.937500 1.500000 1.125000 +v -1.025888 1.536612 1.125000 +v -1.062500 1.625000 1.125000 +v -1.025888 1.713388 1.125000 +v -0.937500 1.750000 1.125000 +v -0.849112 1.713388 1.125000 +v -0.812500 1.625000 1.375000 +v -0.849111 1.536612 1.375000 +v -0.937500 1.500000 1.375000 +v -1.025888 1.536612 1.375000 +v -1.062500 1.625000 1.375000 +v -1.025888 1.713388 1.375000 +v -0.937500 1.750000 1.375000 +v -0.849111 1.713388 1.375000 +v -0.812500 1.588388 1.463388 +v -0.849111 1.525888 1.400888 +v -1.025888 1.525888 1.400888 +v -1.062500 1.588388 1.463388 +v -1.025888 1.650888 1.525888 +v -0.937500 1.676777 1.551777 +v -0.849112 1.650888 1.525888 +v -0.812500 1.500000 1.500000 +v -0.849111 1.500000 1.411612 +v -1.025888 1.500000 1.411612 +v -1.062500 1.500000 1.500000 +v -1.025888 1.500000 1.588388 +v -0.937500 1.500000 1.625000 +v -0.849112 1.500000 1.588388 +v -1.125000 0.375000 0.812500 +v -1.125000 0.463389 0.849112 +v -1.125000 0.500000 0.937500 +v -1.125000 0.463389 1.025888 +v -1.125000 0.375000 1.062500 +v -1.125000 0.286612 1.025888 +v -1.125000 0.250000 0.937500 +v -1.125000 0.286612 0.849112 +v -1.375000 0.375000 0.812500 +v -1.375000 0.463389 0.849112 +v -1.375000 0.500000 0.937500 +v -1.375000 0.463389 1.025888 +v -1.375000 0.375000 1.062500 +v -1.375000 0.286612 1.025888 +v -1.375000 0.250000 0.937500 +v -1.375000 0.286612 0.849112 +v -1.463388 0.411612 0.812500 +v -1.400888 0.474112 0.849112 +v -1.400888 0.474112 1.025889 +v -1.463388 0.411612 1.062500 +v -1.525888 0.349112 1.025889 +v -1.551777 0.323224 0.937500 +v -1.525888 0.349112 0.849112 +v -1.500000 0.500000 0.812500 +v -1.411611 0.500000 0.849112 +v -1.411611 0.500000 1.025889 +v -1.500000 0.500000 1.062500 +v -1.588388 0.500000 1.025889 +v -1.625000 0.500000 0.937500 +v -1.588388 0.500000 0.849112 +v -1.125000 1.625000 1.062500 +v -1.125000 1.536612 1.025888 +v -1.125000 1.500000 0.937500 +v -1.125000 1.536612 0.849112 +v -1.125000 1.625000 0.812500 +v -1.125000 1.713388 0.849112 +v -1.125000 1.750000 0.937500 +v -1.125000 1.713388 1.025888 +v -1.375000 1.625000 1.062500 +v -1.375000 1.536612 1.025889 +v -1.375000 1.500000 0.937500 +v -1.375000 1.536612 0.849112 +v -1.375000 1.625000 0.812500 +v -1.375000 1.713388 0.849112 +v -1.375000 1.750000 0.937500 +v -1.375000 1.713388 1.025888 +v -1.463388 1.588388 1.062500 +v -1.400888 1.525888 1.025889 +v -1.400888 1.525888 0.849112 +v -1.463388 1.588388 0.812500 +v -1.525888 1.650888 0.849112 +v -1.551777 1.676777 0.937500 +v -1.525888 1.650888 1.025888 +v -1.500000 1.500000 1.062500 +v -1.411611 1.500000 1.025889 +v -1.411611 1.500000 0.849112 +v -1.500000 1.500000 0.812500 +v -1.588388 1.500000 0.849112 +v -1.625000 1.500000 0.937500 +v -1.588388 1.500000 1.025888 +v -1.125000 0.375000 0.437500 +v -1.125000 0.463389 0.474112 +v -1.125000 0.500000 0.562500 +v -1.125000 0.463389 0.650888 +v -1.125000 0.375000 0.687500 +v -1.125000 0.286612 0.650888 +v -1.125000 0.250000 0.562500 +v -1.125000 0.286612 0.474112 +v -1.375000 0.375000 0.437500 +v -1.375000 0.463389 0.474112 +v -1.375000 0.500000 0.562500 +v -1.375000 0.463389 0.650888 +v -1.375000 0.375000 0.687500 +v -1.375000 0.286612 0.650888 +v -1.375000 0.250000 0.562500 +v -1.375000 0.286612 0.474112 +v -1.463388 0.411612 0.437500 +v -1.400888 0.474112 0.474112 +v -1.400888 0.474112 0.650889 +v -1.463388 0.411612 0.687500 +v -1.525888 0.349112 0.650889 +v -1.551777 0.323224 0.562500 +v -1.525888 0.349112 0.474112 +v -1.500000 0.500000 0.437500 +v -1.411611 0.500000 0.474112 +v -1.411611 0.500000 0.650889 +v -1.500000 0.500000 0.687500 +v -1.588388 0.500000 0.650889 +v -1.625000 0.500000 0.562500 +v -1.588388 0.500000 0.474112 +v -1.125000 1.625000 0.687500 +v -1.125000 1.536612 0.650888 +v -1.125000 1.500000 0.562500 +v -1.125000 1.536612 0.474112 +v -1.125000 1.625000 0.437500 +v -1.125000 1.713388 0.474112 +v -1.125000 1.750000 0.562500 +v -1.125000 1.713388 0.650888 +v -1.375000 1.625000 0.687500 +v -1.375000 1.536612 0.650889 +v -1.375000 1.500000 0.562500 +v -1.375000 1.536612 0.474112 +v -1.375000 1.625000 0.437500 +v -1.375000 1.713388 0.474112 +v -1.375000 1.750000 0.562500 +v -1.375000 1.713388 0.650888 +v -1.463388 1.588388 0.687500 +v -1.400888 1.525888 0.650889 +v -1.400888 1.525888 0.474112 +v -1.463388 1.588388 0.437500 +v -1.525888 1.650888 0.474112 +v -1.551777 1.676777 0.562500 +v -1.525888 1.650888 0.650888 +v -1.500000 1.500000 0.687500 +v -1.411611 1.500000 0.650889 +v -1.411611 1.500000 0.474112 +v -1.500000 1.500000 0.437500 +v -1.588388 1.500000 0.474112 +v -1.625000 1.500000 0.562500 +v -1.588388 1.500000 0.650888 +v -1.125000 0.375000 -0.687500 +v -1.125000 0.463389 -0.650888 +v -1.125000 0.500000 -0.562500 +v -1.125000 0.463389 -0.474111 +v -1.125000 0.375000 -0.437500 +v -1.125000 0.286612 -0.474111 +v -1.125000 0.250000 -0.562500 +v -1.125000 0.286612 -0.650888 +v -1.375000 0.375000 -0.687500 +v -1.375000 0.463389 -0.650888 +v -1.375000 0.500000 -0.562500 +v -1.375000 0.463389 -0.474111 +v -1.375000 0.375000 -0.437500 +v -1.375000 0.286612 -0.474111 +v -1.375000 0.250000 -0.562500 +v -1.375000 0.286612 -0.650888 +v -1.463388 0.411612 -0.687500 +v -1.400888 0.474112 -0.650888 +v -1.400888 0.474112 -0.474111 +v -1.463388 0.411612 -0.437500 +v -1.525888 0.349112 -0.474111 +v -1.551777 0.323224 -0.562500 +v -1.525888 0.349112 -0.650888 +v -1.500000 0.500000 -0.687500 +v -1.411611 0.500000 -0.650888 +v -1.411611 0.500000 -0.474111 +v -1.500000 0.500000 -0.437500 +v -1.588388 0.500000 -0.474111 +v -1.625000 0.500000 -0.562500 +v -1.588388 0.500000 -0.650888 +v -1.125000 1.625000 -0.437500 +v -1.125000 1.536612 -0.474111 +v -1.125000 1.500000 -0.562500 +v -1.125000 1.536612 -0.650888 +v -1.125000 1.625000 -0.687500 +v -1.125000 1.713388 -0.650888 +v -1.125000 1.750000 -0.562500 +v -1.125000 1.713388 -0.474112 +v -1.375000 1.625000 -0.437500 +v -1.375000 1.536612 -0.474111 +v -1.375000 1.500000 -0.562500 +v -1.375000 1.536612 -0.650888 +v -1.375000 1.625000 -0.687500 +v -1.375000 1.713388 -0.650888 +v -1.375000 1.750000 -0.562500 +v -1.375000 1.713388 -0.474111 +v -1.463388 1.588388 -0.437500 +v -1.400888 1.525888 -0.474111 +v -1.400888 1.525888 -0.650888 +v -1.463388 1.588388 -0.687500 +v -1.525888 1.650888 -0.650888 +v -1.551777 1.676777 -0.562500 +v -1.525888 1.650888 -0.474112 +v -1.500000 1.500000 -0.437500 +v -1.411611 1.500000 -0.474111 +v -1.411611 1.500000 -0.650888 +v -1.500000 1.500000 -0.687500 +v -1.588388 1.500000 -0.650888 +v -1.625000 1.500000 -0.562500 +v -1.588388 1.500000 -0.474112 +v -1.125000 0.375000 -1.062500 +v -1.125000 0.463389 -1.025888 +v -1.125000 0.500000 -0.937500 +v -1.125000 0.463389 -0.849111 +v -1.125000 0.375000 -0.812500 +v -1.125000 0.286612 -0.849111 +v -1.125000 0.250000 -0.937500 +v -1.125000 0.286612 -1.025888 +v -1.375000 0.375000 -1.062500 +v -1.375000 0.463389 -1.025888 +v -1.375000 0.500000 -0.937500 +v -1.375000 0.463389 -0.849111 +v -1.375000 0.375000 -0.812500 +v -1.375000 0.286612 -0.849111 +v -1.375000 0.250000 -0.937500 +v -1.375000 0.286612 -1.025888 +v -1.463388 0.411612 -1.062500 +v -1.400888 0.474112 -1.025888 +v -1.400888 0.474112 -0.849111 +v -1.463388 0.411612 -0.812500 +v -1.525888 0.349112 -0.849111 +v -1.551777 0.323224 -0.937500 +v -1.525888 0.349112 -1.025888 +v -1.500000 0.500000 -1.062500 +v -1.411611 0.500000 -1.025888 +v -1.411611 0.500000 -0.849111 +v -1.500000 0.500000 -0.812500 +v -1.588388 0.500000 -0.849111 +v -1.625000 0.500000 -0.937500 +v -1.588388 0.500000 -1.025888 +v -1.125000 1.625000 -0.812500 +v -1.125000 1.536612 -0.849111 +v -1.125000 1.500000 -0.937500 +v -1.125000 1.536612 -1.025888 +v -1.125000 1.625000 -1.062500 +v -1.125000 1.713388 -1.025888 +v -1.125000 1.750000 -0.937500 +v -1.125000 1.713388 -0.849112 +v -1.375000 1.625000 -0.812500 +v -1.375000 1.536612 -0.849111 +v -1.375000 1.500000 -0.937500 +v -1.375000 1.536612 -1.025888 +v -1.375000 1.625000 -1.062500 +v -1.375000 1.713388 -1.025888 +v -1.375000 1.750000 -0.937500 +v -1.375000 1.713388 -0.849111 +v -1.463388 1.588388 -0.812500 +v -1.400888 1.525888 -0.849111 +v -1.400888 1.525888 -1.025888 +v -1.463388 1.588388 -1.062500 +v -1.525888 1.650888 -1.025888 +v -1.551777 1.676777 -0.937500 +v -1.525888 1.650888 -0.849112 +v -1.500000 1.500000 -0.812500 +v -1.411611 1.500000 -0.849111 +v -1.411611 1.500000 -1.025888 +v -1.500000 1.500000 -1.062500 +v -1.588388 1.500000 -1.025888 +v -1.625000 1.500000 -0.937500 +v -1.588388 1.500000 -0.849112 +v 1.125000 0.375000 -0.812500 +v 1.125000 0.463389 -0.849112 +v 1.125000 0.500000 -0.937500 +v 1.125000 0.463389 -1.025888 +v 1.125000 0.375000 -1.062500 +v 1.125000 0.286612 -1.025888 +v 1.125000 0.250000 -0.937500 +v 1.125000 0.286612 -0.849112 +v 1.375000 0.375000 -0.812500 +v 1.375000 0.463389 -0.849112 +v 1.375000 0.500000 -0.937500 +v 1.375000 0.463389 -1.025888 +v 1.375000 0.375000 -1.062500 +v 1.375000 0.286612 -1.025888 +v 1.375000 0.250000 -0.937500 +v 1.375000 0.286612 -0.849112 +v 1.463388 0.411612 -0.812500 +v 1.400888 0.474112 -0.849112 +v 1.400888 0.474112 -1.025889 +v 1.463388 0.411612 -1.062501 +v 1.525888 0.349112 -1.025889 +v 1.551777 0.323224 -0.937500 +v 1.525888 0.349112 -0.849112 +v 1.500000 0.500000 -0.812500 +v 1.411611 0.500000 -0.849112 +v 1.411611 0.500000 -1.025889 +v 1.500000 0.500000 -1.062500 +v 1.588388 0.500000 -1.025889 +v 1.625000 0.500000 -0.937500 +v 1.588388 0.500000 -0.849112 +v 1.125000 1.625000 -1.062500 +v 1.125000 1.536612 -1.025888 +v 1.125000 1.500000 -0.937500 +v 1.125000 1.536612 -0.849112 +v 1.125000 1.625000 -0.812500 +v 1.125000 1.713388 -0.849112 +v 1.125000 1.750000 -0.937500 +v 1.125000 1.713388 -1.025888 +v 1.375000 1.625000 -1.062500 +v 1.375000 1.536612 -1.025889 +v 1.375000 1.500000 -0.937500 +v 1.375000 1.536612 -0.849112 +v 1.375000 1.625000 -0.812500 +v 1.375000 1.713388 -0.849112 +v 1.375000 1.750000 -0.937500 +v 1.375000 1.713388 -1.025888 +v 1.463388 1.588388 -1.062501 +v 1.400888 1.525888 -1.025889 +v 1.400888 1.525888 -0.849112 +v 1.463388 1.588388 -0.812500 +v 1.525888 1.650888 -0.849112 +v 1.551777 1.676777 -0.937500 +v 1.525888 1.650888 -1.025889 +v 1.500000 1.500000 -1.062500 +v 1.411611 1.500000 -1.025889 +v 1.411611 1.500000 -0.849112 +v 1.500000 1.500000 -0.812500 +v 1.588388 1.500000 -0.849112 +v 1.625000 1.500000 -0.937500 +v 1.588388 1.500000 -1.025889 +v 1.125000 0.375000 -0.437500 +v 1.125000 0.463389 -0.474112 +v 1.125000 0.500000 -0.562500 +v 1.125000 0.463389 -0.650889 +v 1.125000 0.375000 -0.687500 +v 1.125000 0.286612 -0.650889 +v 1.125000 0.250000 -0.562500 +v 1.125000 0.286612 -0.474112 +v 1.375000 0.375000 -0.437500 +v 1.375000 0.463389 -0.474112 +v 1.375000 0.500000 -0.562500 +v 1.375000 0.463389 -0.650889 +v 1.375000 0.375000 -0.687500 +v 1.375000 0.286612 -0.650889 +v 1.375000 0.250000 -0.562500 +v 1.375000 0.286612 -0.474112 +v 1.463388 0.411612 -0.437500 +v 1.400888 0.474112 -0.474112 +v 1.400888 0.474112 -0.650889 +v 1.463388 0.411612 -0.687500 +v 1.525888 0.349112 -0.650889 +v 1.551777 0.323224 -0.562500 +v 1.525888 0.349112 -0.474112 +v 1.500000 0.500000 -0.437500 +v 1.411611 0.500000 -0.474112 +v 1.411611 0.500000 -0.650889 +v 1.500000 0.500000 -0.687500 +v 1.588388 0.500000 -0.650889 +v 1.625000 0.500000 -0.562500 +v 1.588388 0.500000 -0.474112 +v 1.125000 1.625000 -0.687500 +v 1.125000 1.536612 -0.650889 +v 1.125000 1.500000 -0.562500 +v 1.125000 1.536612 -0.474112 +v 1.125000 1.625000 -0.437500 +v 1.125000 1.713388 -0.474112 +v 1.125000 1.750000 -0.562500 +v 1.125000 1.713388 -0.650888 +v 1.375000 1.625000 -0.687500 +v 1.375000 1.536612 -0.650889 +v 1.375000 1.500000 -0.562500 +v 1.375000 1.536612 -0.474112 +v 1.375000 1.625000 -0.437500 +v 1.375000 1.713388 -0.474112 +v 1.375000 1.750000 -0.562500 +v 1.375000 1.713388 -0.650889 +v 1.463388 1.588388 -0.687500 +v 1.400888 1.525888 -0.650889 +v 1.400888 1.525888 -0.474112 +v 1.463388 1.588388 -0.437500 +v 1.525888 1.650888 -0.474112 +v 1.551777 1.676777 -0.562500 +v 1.525888 1.650888 -0.650889 +v 1.500000 1.500000 -0.687500 +v 1.411611 1.500000 -0.650889 +v 1.411611 1.500000 -0.474112 +v 1.500000 1.500000 -0.437500 +v 1.588388 1.500000 -0.474112 +v 1.625000 1.500000 -0.562500 +v 1.588388 1.500000 -0.650889 +v 1.125000 0.375000 0.687500 +v 1.125000 0.463389 0.650888 +v 1.125000 0.500000 0.562500 +v 1.125000 0.463389 0.474111 +v 1.125000 0.375000 0.437500 +v 1.125000 0.286612 0.474111 +v 1.125000 0.250000 0.562500 +v 1.125000 0.286612 0.650888 +v 1.375000 0.375000 0.687500 +v 1.375000 0.463389 0.650888 +v 1.375000 0.500000 0.562500 +v 1.375000 0.463389 0.474111 +v 1.375000 0.375000 0.437500 +v 1.375000 0.286612 0.474111 +v 1.375000 0.250000 0.562500 +v 1.375000 0.286612 0.650888 +v 1.463388 0.411612 0.687500 +v 1.400888 0.474112 0.650888 +v 1.400888 0.474112 0.474111 +v 1.463388 0.411612 0.437500 +v 1.525888 0.349112 0.474111 +v 1.551777 0.323224 0.562500 +v 1.525888 0.349112 0.650888 +v 1.500000 0.500000 0.687500 +v 1.411612 0.500000 0.650888 +v 1.411611 0.500000 0.474111 +v 1.500000 0.500000 0.437500 +v 1.588388 0.500000 0.474111 +v 1.625000 0.500000 0.562500 +v 1.588388 0.500000 0.650888 +v 1.125000 1.625000 0.437500 +v 1.125000 1.536612 0.474111 +v 1.125000 1.500000 0.562500 +v 1.125000 1.536612 0.650888 +v 1.125000 1.625000 0.687500 +v 1.125000 1.713388 0.650888 +v 1.125000 1.750000 0.562500 +v 1.125000 1.713388 0.474112 +v 1.375000 1.625000 0.437500 +v 1.375000 1.536612 0.474111 +v 1.375000 1.500000 0.562500 +v 1.375000 1.536612 0.650888 +v 1.375000 1.625000 0.687500 +v 1.375000 1.713388 0.650888 +v 1.375000 1.750000 0.562500 +v 1.375000 1.713388 0.474111 +v 1.463388 1.588388 0.437500 +v 1.400888 1.525888 0.474111 +v 1.400888 1.525888 0.650888 +v 1.463388 1.588388 0.687500 +v 1.525888 1.650888 0.650888 +v 1.551777 1.676777 0.562500 +v 1.525888 1.650888 0.474111 +v 1.500000 1.500000 0.437500 +v 1.411611 1.500000 0.474111 +v 1.411611 1.500000 0.650888 +v 1.500000 1.500000 0.687500 +v 1.588388 1.500000 0.650888 +v 1.625000 1.500000 0.562500 +v 1.588388 1.500000 0.474111 +v 1.125000 0.375000 1.062500 +v 1.125000 0.463389 1.025888 +v 1.125000 0.500000 0.937500 +v 1.125000 0.463389 0.849111 +v 1.125000 0.375000 0.812500 +v 1.125000 0.286612 0.849111 +v 1.125000 0.250000 0.937500 +v 1.125000 0.286612 1.025888 +v 1.375000 0.375000 1.062500 +v 1.375000 0.463389 1.025888 +v 1.375000 0.500000 0.937500 +v 1.375000 0.463389 0.849111 +v 1.375000 0.375000 0.812500 +v 1.375000 0.286612 0.849111 +v 1.375000 0.250000 0.937500 +v 1.375000 0.286612 1.025888 +v 1.463388 0.411612 1.062500 +v 1.400888 0.474112 1.025888 +v 1.400888 0.474112 0.849111 +v 1.463388 0.411612 0.812500 +v 1.525888 0.349112 0.849111 +v 1.551777 0.323224 0.937500 +v 1.525888 0.349112 1.025888 +v 1.500000 0.500000 1.062500 +v 1.411612 0.500000 1.025888 +v 1.411612 0.500000 0.849111 +v 1.500000 0.500000 0.812500 +v 1.588388 0.500000 0.849111 +v 1.625000 0.500000 0.937500 +v 1.588388 0.500000 1.025888 +v 1.125000 1.625000 0.812500 +v 1.125000 1.536612 0.849111 +v 1.125000 1.500000 0.937500 +v 1.125000 1.536612 1.025888 +v 1.125000 1.625000 1.062500 +v 1.125000 1.713388 1.025888 +v 1.125000 1.750000 0.937500 +v 1.125000 1.713388 0.849112 +v 1.375000 1.625000 0.812500 +v 1.375000 1.536612 0.849111 +v 1.375000 1.500000 0.937500 +v 1.375000 1.536612 1.025888 +v 1.375000 1.625000 1.062500 +v 1.375000 1.713388 1.025888 +v 1.375000 1.750000 0.937500 +v 1.375000 1.713388 0.849111 +v 1.463388 1.588388 0.812500 +v 1.400888 1.525888 0.849111 +v 1.400888 1.525888 1.025888 +v 1.463388 1.588388 1.062500 +v 1.525888 1.650888 1.025888 +v 1.551777 1.676777 0.937500 +v 1.525888 1.650888 0.849111 +v 1.500000 1.500000 0.812500 +v 1.411612 1.500000 0.849111 +v 1.411612 1.500000 1.025888 +v 1.500000 1.500000 1.062500 +v 1.588388 1.500000 1.025888 +v 1.625000 1.500000 0.937500 +v 1.588388 1.500000 0.849111 +vt 0.500000 -0.000000 +vt -0.000000 0.375000 +vt -0.000000 -0.000000 +vt 0.500000 0.796875 +vt 0.510417 0.921875 +vt 0.500000 0.921875 +vt 0.666667 0.468750 +vt 0.541667 0.281250 +vt 0.666667 0.281250 +vt 0.541667 0.468750 +vt 0.666667 0.281250 +vt 0.666667 0.468750 +vt 0.500000 0.015625 +vt 0.520833 0.234375 +vt 0.500000 0.234375 +vt 0.666667 0.281250 +vt 0.708333 0.468750 +vt 0.666667 0.468750 +vt 0.020833 0.390625 +vt 0.500000 0.375000 +vt 0.479167 0.390625 +vt 0.020833 0.390625 +vt 0.500000 0.375000 +vt 0.479167 0.390625 +vt 0.479167 0.609375 +vt 0.000000 0.625000 +vt 0.020833 0.609375 +vt 0.479167 0.609375 +vt -0.000000 0.625000 +vt 0.020833 0.609375 +vt 0.000000 0.375000 +vt 0.500000 0.625000 +vt 0.500000 0.625000 +vt 0.020833 0.390625 +vt 0.500000 0.375000 +vt 0.479167 0.390625 +vt 0.020833 0.390625 +vt 0.500000 0.375000 +vt 0.479167 0.390625 +vt 0.479167 0.609375 +vt 0.000000 0.625000 +vt 0.020833 0.609375 +vt 0.479167 0.609375 +vt -0.000000 0.625000 +vt 0.020833 0.609375 +vt 0.500000 0.625000 +vt -0.000000 0.375000 +vt 0.500000 0.625000 +vt 0.000000 0.375000 +vt 0.500000 0.281250 +vt 0.541667 0.468750 +vt 0.500000 0.468750 +vt 1.000000 0.234375 +vt 0.979167 0.015625 +vt 1.000000 0.015625 +vt 0.520833 0.250000 +vt 0.979167 0.234375 +vt 0.979167 0.250000 +vt 0.979167 -0.000000 +vt 0.520833 0.015625 +vt 0.520833 -0.000000 +vt 0.500000 0.468750 +vt 0.541667 0.281250 +vt 0.541667 0.468750 +vt 0.541667 0.281250 +vt 0.666667 0.281250 +vt 0.708333 0.468750 +vt 0.708333 0.281250 +vt 0.812500 0.031250 +vt 0.687500 0.218750 +vt 0.687500 0.031250 +vt 0.500000 0.281250 +vt 0.541667 0.468750 +vt 0.500000 0.468750 +vt 0.708333 0.468750 +vt 0.708333 0.281250 +vt 0.812500 0.031250 +vt 0.687500 0.218750 +vt 0.687500 0.031250 +vt 0.500000 0.281250 +vt 0.541667 0.468750 +vt 0.500000 0.468750 +vt 0.687500 0.914062 +vt 0.677083 0.804688 +vt 0.687500 0.804688 +vt 0.687500 0.781250 +vt 0.520833 0.789062 +vt 0.520833 0.781250 +vt 0.520833 0.937500 +vt 0.687500 0.929688 +vt 0.687500 0.937500 +vt 0.708333 0.921875 +vt 0.697917 0.796875 +vt 0.708333 0.796875 +vt 0.677083 0.921875 +vt 0.520833 0.929688 +vt 0.531250 0.921875 +vt 0.520833 0.914062 +vt 0.510417 0.796875 +vt 0.520833 0.804688 +vt 0.531250 0.796875 +vt 0.687500 0.789062 +vt 0.677083 0.796875 +vt 0.697917 0.921875 +vt 0.531250 0.804688 +vt 0.677083 0.914062 +vt 0.531250 0.914062 +vt 0.812500 0.265625 +vt 0.729167 0.328125 +vt 0.729167 0.265625 +vt 0.812500 0.265625 +vt 0.729167 0.328125 +vt 0.729167 0.265625 +vt 0.812500 0.328125 +vt 0.729167 0.343750 +vt 0.812500 0.250000 +vt 0.833333 0.328125 +vt 0.708333 0.265625 +vt 0.812500 0.343750 +vt 0.729167 0.343750 +vt 0.812500 0.250000 +vt 0.833333 0.328125 +vt 0.812500 0.328125 +vt 0.708333 0.265625 +vt 0.812500 0.265625 +vt 0.729167 0.328125 +vt 0.729167 0.265625 +vt 0.812500 0.265625 +vt 0.729167 0.328125 +vt 0.729167 0.265625 +vt 0.812500 0.328125 +vt 0.729167 0.343750 +vt 0.812500 0.250000 +vt 0.833333 0.328125 +vt 0.708333 0.265625 +vt 0.812500 0.328125 +vt 0.729167 0.343750 +vt 0.812500 0.250000 +vt 0.833333 0.328125 +vt 0.708333 0.265625 +vt 0.500000 0.281250 +vt 0.541667 0.468750 +vt 0.500000 0.468750 +vt 0.812500 0.031250 +vt 0.687500 0.218750 +vt 0.687500 0.031250 +vt 0.937500 0.031250 +vt 0.937500 0.218750 +vt 0.562500 0.218750 +vt 0.562500 0.031250 +vt 0.812500 0.218750 +vt 0.666667 0.468750 +vt 0.541667 0.281250 +vt 0.666667 0.281250 +vt 0.666667 0.281250 +vt 0.541667 0.281250 +vt 0.541667 0.500000 +vt 0.666667 0.500000 +vt 0.666667 0.250000 +vt 0.541667 0.250000 +vt 0.708333 0.468750 +vt 0.708333 0.281250 +vt 0.666667 0.250000 +vt 0.541667 0.250000 +vt 0.708333 0.468750 +vt 0.708333 0.281250 +vt 0.541667 0.500000 +vt 0.666667 0.468750 +vt 0.666667 0.500000 +vt 0.500000 0.281250 +vt 0.541667 0.468750 +vt 0.500000 0.468750 +vt 0.500000 0.281250 +vt 0.541667 0.468750 +vt 0.500000 0.468750 +vt 0.812500 0.031250 +vt 0.687500 0.218750 +vt 0.687500 0.031250 +vt 0.937500 0.031250 +vt 0.979167 0.234375 +vt 0.937500 0.218750 +vt 0.562500 0.218750 +vt 0.520833 0.015625 +vt 0.562500 0.031250 +vt 0.520833 0.234375 +vt 0.812500 0.218750 +vt 0.666667 0.468750 +vt 0.541667 0.281250 +vt 0.666667 0.281250 +vt 0.666667 0.281250 +vt 0.541667 0.281250 +vt 0.541667 0.500000 +vt 0.666667 0.500000 +vt 0.666667 0.250000 +vt 0.541667 0.250000 +vt 0.708333 0.468750 +vt 0.708333 0.281250 +vt 0.666667 0.250000 +vt 0.541667 0.250000 +vt 0.708333 0.468750 +vt 0.708333 0.281250 +vt 0.541667 0.500000 +vt 0.666667 0.468750 +vt 0.666667 0.500000 +vt 0.562500 0.031250 +vt 0.520833 0.234375 +vt 0.520833 0.015625 +vt 0.979167 0.015625 +vt 0.937500 0.218750 +vt 0.937500 0.031250 +vt 0.666667 0.250000 +vt 0.541667 0.250000 +vt 0.541667 0.250000 +vt 0.666667 0.250000 +vt 0.666667 0.468750 +vt 0.541667 0.500000 +vt 0.541667 0.500000 +vt 0.562500 0.218750 +vt 0.520833 0.000000 +vt 0.979167 0.000000 +vt 0.520833 0.250000 +vt 0.979167 0.234375 +vt 0.979167 0.250000 +vt 0.500000 0.234375 +vt 1.000000 0.015625 +vt 0.708333 0.281250 +vt 0.500000 0.281250 +vt 0.541667 0.281250 +vt 0.562500 0.031250 +vt 0.520833 0.234375 +vt 0.520833 0.015625 +vt 0.937500 0.218750 +vt 0.979167 0.015625 +vt 0.979167 0.234375 +vt 0.541667 0.250000 +vt 0.666667 0.250000 +vt 0.666667 0.500000 +vt 0.666667 0.500000 +vt 0.541667 0.500000 +vt 0.562500 0.218750 +vt 0.500000 0.015625 +vt 0.500000 0.234375 +vt 1.000000 0.234375 +vt 1.000000 0.015625 +vt 0.520833 -0.000000 +vt 0.979167 -0.000000 +vt 0.520833 0.250000 +vt 0.979167 0.250000 +vt 0.333333 0.875000 +vt 0.500000 1.000000 +vt 0.166667 0.875000 +vt 0.000000 1.000000 +vt 0.166667 0.750000 +vt 0.333333 0.750000 +vt 0.500000 0.015625 +vt 0.500000 0.234375 +vt 0.979167 0.015625 +vt 0.520833 -0.000000 +vt 0.979167 -0.000000 +vt 0.520833 0.250000 +vt 0.979167 0.250000 +vt 1.000000 0.015625 +vt 1.000000 0.234375 +vt 0.708333 0.281250 +vt 0.500000 0.281250 +vt 0.812500 0.218750 +vt 0.812500 0.218750 +vt 0.812500 0.343750 +vt 0.729167 0.250000 +vt 0.833333 0.265625 +vt 0.708333 0.328125 +vt 0.729167 0.250000 +vt 0.833333 0.265625 +vt 0.708333 0.328125 +vt 0.812500 0.343750 +vt 0.729167 0.250000 +vt 0.833333 0.265625 +vt 0.708333 0.328125 +vt 0.812500 0.343750 +vt 0.729167 0.250000 +vt 0.833333 0.265625 +vt 0.708333 0.328125 +vt 0.666667 0.500000 +vt 0.666667 0.500000 +vt 0.500000 0.015625 +vt 1.000000 0.234375 +vt 0.708333 0.468750 +vt 0.500000 0.468750 +vt 0.937500 0.031250 +vt 0.666667 0.250000 +vt 0.541667 0.250000 +vt 0.541667 0.500000 +vt 0.562500 0.531250 +vt 0.541667 0.500000 +vt 0.562500 0.500000 +vt 0.604167 0.531250 +vt 0.583333 0.500000 +vt 0.604167 0.500000 +vt 0.645833 0.531250 +vt 0.625000 0.500000 +vt 0.645833 0.500000 +vt 0.520833 0.531250 +vt 0.500000 0.500000 +vt 0.520833 0.500000 +vt 0.583333 0.531250 +vt 0.625000 0.531250 +vt 0.666667 0.531250 +vt 0.666667 0.500000 +vt 0.541667 0.531250 +vt 0.562500 0.554688 +vt 0.625000 0.539062 +vt 0.604167 0.554688 +vt 0.541667 0.554688 +vt 0.520833 0.546875 +vt 0.541667 0.539062 +vt 0.645833 0.546875 +vt 0.625000 0.554688 +vt 0.541667 0.570312 +vt 0.604167 0.578125 +vt 0.583333 0.554688 +vt 0.645833 0.562500 +vt 0.645833 0.554688 +vt 0.562500 0.578125 +vt 0.625000 0.570312 +vt 0.520833 0.562500 +vt 0.520833 0.554688 +vt 0.500000 0.554688 +vt 0.666667 0.554688 +vt 0.604167 0.750000 +vt 0.625000 0.781250 +vt 0.604167 0.781250 +vt 0.562500 0.750000 +vt 0.583333 0.781250 +vt 0.562500 0.781250 +vt 0.520833 0.750000 +vt 0.541667 0.781250 +vt 0.520833 0.781250 +vt 0.645833 0.781250 +vt 0.666667 0.750000 +vt 0.666667 0.781250 +vt 0.541667 0.750000 +vt 0.500000 0.750000 +vt 0.500000 0.781250 +vt 0.625000 0.750000 +vt 0.583333 0.750000 +vt 0.604167 0.726562 +vt 0.541667 0.726562 +vt 0.541667 0.742188 +vt 0.625000 0.742188 +vt 0.645833 0.726562 +vt 0.645833 0.734375 +vt 0.562500 0.726562 +vt 0.520833 0.726562 +vt 0.520833 0.734375 +vt 0.625000 0.710938 +vt 0.625000 0.726562 +vt 0.562500 0.703125 +vt 0.583333 0.726562 +vt 0.520833 0.718750 +vt 0.604167 0.703125 +vt 0.541667 0.710938 +vt 0.666667 0.726562 +vt 0.645833 0.718750 +vt 0.500000 0.726562 +vt 0.520833 0.578125 +vt 0.500000 0.703125 +vt 0.500000 0.578125 +vt 0.666667 0.703125 +vt 0.645833 0.578125 +vt 0.666667 0.578125 +vt 0.625000 0.703125 +vt 0.625000 0.578125 +vt 0.583333 0.703125 +vt 0.583333 0.578125 +vt 0.541667 0.703125 +vt 0.541667 0.578125 +vt 0.520833 0.703125 +vt 0.562500 0.531250 +vt 0.541667 0.500000 +vt 0.562500 0.500000 +vt 0.604167 0.531250 +vt 0.583333 0.500000 +vt 0.604167 0.500000 +vt 0.645833 0.531250 +vt 0.625000 0.500000 +vt 0.645833 0.500000 +vt 0.520833 0.531250 +vt 0.500000 0.500000 +vt 0.520833 0.500000 +vt 0.583333 0.531250 +vt 0.625000 0.531250 +vt 0.666667 0.531250 +vt 0.666667 0.500000 +vt 0.541667 0.531250 +vt 0.562500 0.554688 +vt 0.625000 0.539062 +vt 0.604167 0.554688 +vt 0.541667 0.554688 +vt 0.520833 0.546875 +vt 0.541667 0.539062 +vt 0.645833 0.546875 +vt 0.625000 0.554688 +vt 0.541667 0.570312 +vt 0.604167 0.578125 +vt 0.583333 0.554688 +vt 0.645833 0.562500 +vt 0.645833 0.554688 +vt 0.562500 0.578125 +vt 0.625000 0.570312 +vt 0.520833 0.562500 +vt 0.520833 0.554688 +vt 0.500000 0.554688 +vt 0.666667 0.554688 +vt 0.604167 0.750000 +vt 0.625000 0.781250 +vt 0.604167 0.781250 +vt 0.562500 0.750000 +vt 0.583333 0.781250 +vt 0.562500 0.781250 +vt 0.520833 0.750000 +vt 0.541667 0.781250 +vt 0.520833 0.781250 +vt 0.645833 0.781250 +vt 0.666667 0.750000 +vt 0.666667 0.781250 +vt 0.583333 0.750000 +vt 0.541667 0.750000 +vt 0.500000 0.750000 +vt 0.500000 0.781250 +vt 0.625000 0.750000 +vt 0.604167 0.726562 +vt 0.541667 0.742188 +vt 0.562500 0.726562 +vt 0.625000 0.726562 +vt 0.645833 0.734375 +vt 0.625000 0.742188 +vt 0.520833 0.726562 +vt 0.520833 0.734375 +vt 0.625000 0.710938 +vt 0.562500 0.703125 +vt 0.583333 0.726562 +vt 0.520833 0.718750 +vt 0.541667 0.726562 +vt 0.604167 0.703125 +vt 0.541667 0.710938 +vt 0.645833 0.726562 +vt 0.666667 0.726562 +vt 0.645833 0.718750 +vt 0.500000 0.726562 +vt 0.520833 0.578125 +vt 0.500000 0.703125 +vt 0.500000 0.578125 +vt 0.666667 0.703125 +vt 0.645833 0.578125 +vt 0.666667 0.578125 +vt 0.625000 0.703125 +vt 0.625000 0.578125 +vt 0.583333 0.703125 +vt 0.583333 0.578125 +vt 0.541667 0.703125 +vt 0.541667 0.578125 +vt 0.520833 0.703125 +vt 0.562500 0.531250 +vt 0.541667 0.500000 +vt 0.562500 0.500000 +vt 0.604167 0.531250 +vt 0.583333 0.500000 +vt 0.604167 0.500000 +vt 0.645833 0.531250 +vt 0.625000 0.500000 +vt 0.645833 0.500000 +vt 0.520833 0.531250 +vt 0.500000 0.500000 +vt 0.520833 0.500000 +vt 0.583333 0.531250 +vt 0.625000 0.531250 +vt 0.666667 0.531250 +vt 0.666667 0.500000 +vt 0.541667 0.531250 +vt 0.562500 0.554688 +vt 0.625000 0.539062 +vt 0.604167 0.554688 +vt 0.541667 0.554688 +vt 0.520833 0.546875 +vt 0.541667 0.539062 +vt 0.645833 0.546875 +vt 0.625000 0.554688 +vt 0.541667 0.570312 +vt 0.604167 0.578125 +vt 0.583333 0.554688 +vt 0.645833 0.562500 +vt 0.645833 0.554688 +vt 0.562500 0.578125 +vt 0.625000 0.570312 +vt 0.520833 0.562500 +vt 0.520833 0.554688 +vt 0.500000 0.554688 +vt 0.666667 0.554688 +vt 0.604167 0.750000 +vt 0.625000 0.781250 +vt 0.604167 0.781250 +vt 0.562500 0.750000 +vt 0.583333 0.781250 +vt 0.562500 0.781250 +vt 0.520833 0.750000 +vt 0.541667 0.781250 +vt 0.520833 0.781250 +vt 0.645833 0.750000 +vt 0.666667 0.781250 +vt 0.645833 0.781250 +vt 0.583333 0.750000 +vt 0.541667 0.750000 +vt 0.500000 0.750000 +vt 0.500000 0.781250 +vt 0.604167 0.726562 +vt 0.541667 0.726562 +vt 0.541667 0.742188 +vt 0.625000 0.726562 +vt 0.645833 0.734375 +vt 0.625000 0.742188 +vt 0.562500 0.726562 +vt 0.520833 0.726562 +vt 0.520833 0.734375 +vt 0.625000 0.710938 +vt 0.562500 0.703125 +vt 0.583333 0.726562 +vt 0.520833 0.718750 +vt 0.604167 0.703125 +vt 0.541667 0.710938 +vt 0.645833 0.726562 +vt 0.666667 0.726562 +vt 0.645833 0.718750 +vt 0.500000 0.726562 +vt 0.520833 0.578125 +vt 0.500000 0.703125 +vt 0.500000 0.578125 +vt 0.666667 0.703125 +vt 0.645833 0.578125 +vt 0.666667 0.578125 +vt 0.625000 0.703125 +vt 0.625000 0.578125 +vt 0.583333 0.703125 +vt 0.583333 0.578125 +vt 0.541667 0.703125 +vt 0.541667 0.578125 +vt 0.520833 0.703125 +vt 0.562500 0.531250 +vt 0.541667 0.500000 +vt 0.562500 0.500000 +vt 0.604167 0.531250 +vt 0.583333 0.500000 +vt 0.604167 0.500000 +vt 0.645833 0.531250 +vt 0.625000 0.500000 +vt 0.645833 0.500000 +vt 0.520833 0.531250 +vt 0.500000 0.500000 +vt 0.520833 0.500000 +vt 0.583333 0.531250 +vt 0.625000 0.531250 +vt 0.666667 0.531250 +vt 0.666667 0.500000 +vt 0.541667 0.531250 +vt 0.562500 0.554688 +vt 0.625000 0.539062 +vt 0.604167 0.554688 +vt 0.541667 0.554688 +vt 0.520833 0.546875 +vt 0.541667 0.539062 +vt 0.645833 0.546875 +vt 0.625000 0.554688 +vt 0.541667 0.570312 +vt 0.604167 0.578125 +vt 0.583333 0.554688 +vt 0.645833 0.562500 +vt 0.645833 0.554688 +vt 0.562500 0.578125 +vt 0.625000 0.570312 +vt 0.520833 0.562500 +vt 0.520833 0.554688 +vt 0.500000 0.554688 +vt 0.666667 0.554688 +vt 0.604167 0.750000 +vt 0.625000 0.781250 +vt 0.604167 0.781250 +vt 0.562500 0.750000 +vt 0.583333 0.781250 +vt 0.562500 0.781250 +vt 0.520833 0.750000 +vt 0.541667 0.781250 +vt 0.520833 0.781250 +vt 0.645833 0.781250 +vt 0.666667 0.750000 +vt 0.666667 0.781250 +vt 0.583333 0.750000 +vt 0.541667 0.750000 +vt 0.500000 0.750000 +vt 0.500000 0.781250 +vt 0.625000 0.750000 +vt 0.604167 0.726562 +vt 0.541667 0.742188 +vt 0.562500 0.726562 +vt 0.625000 0.742188 +vt 0.645833 0.726562 +vt 0.645833 0.734375 +vt 0.520833 0.726562 +vt 0.520833 0.734375 +vt 0.625000 0.710938 +vt 0.625000 0.726562 +vt 0.562500 0.703125 +vt 0.583333 0.726562 +vt 0.520833 0.718750 +vt 0.541667 0.726562 +vt 0.604167 0.703125 +vt 0.541667 0.710938 +vt 0.666667 0.726562 +vt 0.645833 0.718750 +vt 0.500000 0.726562 +vt 0.520833 0.578125 +vt 0.500000 0.703125 +vt 0.500000 0.578125 +vt 0.666667 0.703125 +vt 0.645833 0.578125 +vt 0.666667 0.578125 +vt 0.625000 0.703125 +vt 0.625000 0.578125 +vt 0.583333 0.703125 +vt 0.583333 0.578125 +vt 0.541667 0.703125 +vt 0.541667 0.578125 +vt 0.520833 0.703125 +vt 0.562500 0.531250 +vt 0.541667 0.500000 +vt 0.562500 0.500000 +vt 0.604167 0.531250 +vt 0.583333 0.500000 +vt 0.604167 0.500000 +vt 0.645833 0.531250 +vt 0.625000 0.500000 +vt 0.645833 0.500000 +vt 0.520833 0.531250 +vt 0.500000 0.500000 +vt 0.520833 0.500000 +vt 0.583333 0.531250 +vt 0.625000 0.531250 +vt 0.666667 0.531250 +vt 0.666667 0.500000 +vt 0.541667 0.531250 +vt 0.562500 0.554688 +vt 0.625000 0.539062 +vt 0.604167 0.554688 +vt 0.541667 0.554688 +vt 0.520833 0.546875 +vt 0.541667 0.539062 +vt 0.645833 0.546875 +vt 0.625000 0.554688 +vt 0.541667 0.570312 +vt 0.604167 0.578125 +vt 0.583333 0.554688 +vt 0.645833 0.562500 +vt 0.645833 0.554688 +vt 0.562500 0.578125 +vt 0.625000 0.570312 +vt 0.520833 0.554688 +vt 0.500000 0.554688 +vt 0.520833 0.562500 +vt 0.666667 0.554688 +vt 0.604167 0.750000 +vt 0.625000 0.781250 +vt 0.604167 0.781250 +vt 0.562500 0.750000 +vt 0.583333 0.781250 +vt 0.562500 0.781250 +vt 0.520833 0.750000 +vt 0.541667 0.781250 +vt 0.520833 0.781250 +vt 0.645833 0.750000 +vt 0.666667 0.781250 +vt 0.645833 0.781250 +vt 0.583333 0.750000 +vt 0.541667 0.750000 +vt 0.500000 0.750000 +vt 0.500000 0.781250 +vt 0.625000 0.750000 +vt 0.604167 0.726562 +vt 0.541667 0.742188 +vt 0.562500 0.726562 +vt 0.625000 0.742188 +vt 0.645833 0.726562 +vt 0.645833 0.734375 +vt 0.520833 0.726562 +vt 0.520833 0.734375 +vt 0.625000 0.710938 +vt 0.625000 0.726562 +vt 0.562500 0.703125 +vt 0.583333 0.726562 +vt 0.520833 0.718750 +vt 0.541667 0.726562 +vt 0.604167 0.703125 +vt 0.541667 0.710938 +vt 0.666667 0.726562 +vt 0.645833 0.718750 +vt 0.500000 0.726562 +vt 0.520833 0.578125 +vt 0.500000 0.703125 +vt 0.500000 0.578125 +vt 0.666667 0.703125 +vt 0.645833 0.578125 +vt 0.666667 0.578125 +vt 0.625000 0.703125 +vt 0.625000 0.578125 +vt 0.583333 0.703125 +vt 0.583333 0.578125 +vt 0.541667 0.703125 +vt 0.541667 0.578125 +vt 0.520833 0.703125 +vt 0.562500 0.531250 +vt 0.541667 0.500000 +vt 0.562500 0.500000 +vt 0.604167 0.531250 +vt 0.583333 0.500000 +vt 0.604167 0.500000 +vt 0.645833 0.531250 +vt 0.625000 0.500000 +vt 0.645833 0.500000 +vt 0.520833 0.531250 +vt 0.500000 0.500000 +vt 0.520833 0.500000 +vt 0.583333 0.531250 +vt 0.625000 0.531250 +vt 0.666667 0.531250 +vt 0.666667 0.500000 +vt 0.541667 0.531250 +vt 0.562500 0.554688 +vt 0.625000 0.554688 +vt 0.625000 0.539062 +vt 0.541667 0.554688 +vt 0.520833 0.546875 +vt 0.541667 0.539062 +vt 0.604167 0.554688 +vt 0.645833 0.546875 +vt 0.541667 0.570312 +vt 0.604167 0.578125 +vt 0.583333 0.554688 +vt 0.645833 0.554688 +vt 0.625000 0.570312 +vt 0.562500 0.578125 +vt 0.520833 0.554688 +vt 0.500000 0.554688 +vt 0.520833 0.562500 +vt 0.666667 0.554688 +vt 0.645833 0.562500 +vt 0.604167 0.750000 +vt 0.625000 0.781250 +vt 0.604167 0.781250 +vt 0.562500 0.750000 +vt 0.583333 0.781250 +vt 0.562500 0.781250 +vt 0.520833 0.750000 +vt 0.541667 0.781250 +vt 0.520833 0.781250 +vt 0.645833 0.781250 +vt 0.666667 0.750000 +vt 0.666667 0.781250 +vt 0.583333 0.750000 +vt 0.541667 0.750000 +vt 0.500000 0.750000 +vt 0.500000 0.781250 +vt 0.645833 0.750000 +vt 0.604167 0.726562 +vt 0.541667 0.742188 +vt 0.562500 0.726562 +vt 0.625000 0.742188 +vt 0.645833 0.726562 +vt 0.645833 0.734375 +vt 0.625000 0.726562 +vt 0.520833 0.726562 +vt 0.520833 0.734375 +vt 0.625000 0.710938 +vt 0.562500 0.703125 +vt 0.583333 0.726562 +vt 0.520833 0.718750 +vt 0.541667 0.726562 +vt 0.604167 0.703125 +vt 0.541667 0.710938 +vt 0.666667 0.726562 +vt 0.645833 0.718750 +vt 0.500000 0.726562 +vt 0.520833 0.578125 +vt 0.500000 0.703125 +vt 0.500000 0.578125 +vt 0.666667 0.703125 +vt 0.645833 0.578125 +vt 0.666667 0.578125 +vt 0.625000 0.703125 +vt 0.625000 0.578125 +vt 0.583333 0.703125 +vt 0.583333 0.578125 +vt 0.541667 0.703125 +vt 0.541667 0.578125 +vt 0.520833 0.703125 +vt 0.562500 0.531250 +vt 0.541667 0.500000 +vt 0.562500 0.500000 +vt 0.604167 0.531250 +vt 0.583333 0.500000 +vt 0.604167 0.500000 +vt 0.645833 0.531250 +vt 0.625000 0.500000 +vt 0.645833 0.500000 +vt 0.520833 0.531250 +vt 0.500000 0.500000 +vt 0.520833 0.500000 +vt 0.583333 0.531250 +vt 0.625000 0.531250 +vt 0.666667 0.531250 +vt 0.666667 0.500000 +vt 0.541667 0.531250 +vt 0.562500 0.554688 +vt 0.625000 0.539062 +vt 0.604167 0.554688 +vt 0.541667 0.554688 +vt 0.520833 0.546875 +vt 0.541667 0.539062 +vt 0.645833 0.546875 +vt 0.625000 0.554688 +vt 0.562500 0.578125 +vt 0.604167 0.578125 +vt 0.583333 0.554688 +vt 0.645833 0.562500 +vt 0.645833 0.554688 +vt 0.625000 0.570312 +vt 0.520833 0.562500 +vt 0.520833 0.554688 +vt 0.500000 0.554688 +vt 0.666667 0.554688 +vt 0.604167 0.750000 +vt 0.625000 0.781250 +vt 0.604167 0.781250 +vt 0.562500 0.750000 +vt 0.583333 0.781250 +vt 0.562500 0.781250 +vt 0.520833 0.750000 +vt 0.541667 0.781250 +vt 0.520833 0.781250 +vt 0.645833 0.750000 +vt 0.666667 0.781250 +vt 0.645833 0.781250 +vt 0.583333 0.750000 +vt 0.541667 0.750000 +vt 0.500000 0.750000 +vt 0.500000 0.781250 +vt 0.625000 0.750000 +vt 0.604167 0.726562 +vt 0.541667 0.742188 +vt 0.562500 0.726562 +vt 0.625000 0.726562 +vt 0.645833 0.734375 +vt 0.625000 0.742188 +vt 0.520833 0.726562 +vt 0.520833 0.734375 +vt 0.625000 0.710938 +vt 0.562500 0.703125 +vt 0.583333 0.726562 +vt 0.520833 0.718750 +vt 0.541667 0.726562 +vt 0.604167 0.703125 +vt 0.645833 0.726562 +vt 0.666667 0.726562 +vt 0.645833 0.718750 +vt 0.500000 0.726562 +vt 0.520833 0.578125 +vt 0.500000 0.703125 +vt 0.500000 0.578125 +vt 0.666667 0.703125 +vt 0.645833 0.578125 +vt 0.666667 0.578125 +vt 0.625000 0.703125 +vt 0.625000 0.578125 +vt 0.583333 0.703125 +vt 0.583333 0.578125 +vt 0.541667 0.703125 +vt 0.541667 0.578125 +vt 0.520833 0.703125 +vt 0.562500 0.531250 +vt 0.541667 0.500000 +vt 0.562500 0.500000 +vt 0.604167 0.531250 +vt 0.583333 0.500000 +vt 0.604167 0.500000 +vt 0.645833 0.531250 +vt 0.625000 0.500000 +vt 0.645833 0.500000 +vt 0.520833 0.531250 +vt 0.500000 0.500000 +vt 0.520833 0.500000 +vt 0.583333 0.531250 +vt 0.625000 0.531250 +vt 0.666667 0.531250 +vt 0.666667 0.500000 +vt 0.541667 0.531250 +vt 0.562500 0.554688 +vt 0.625000 0.539062 +vt 0.604167 0.554688 +vt 0.541667 0.554688 +vt 0.520833 0.546875 +vt 0.541667 0.539062 +vt 0.645833 0.546875 +vt 0.625000 0.554688 +vt 0.562500 0.578125 +vt 0.604167 0.578125 +vt 0.583333 0.554688 +vt 0.645833 0.562500 +vt 0.645833 0.554688 +vt 0.541667 0.570312 +vt 0.520833 0.554688 +vt 0.500000 0.554688 +vt 0.520833 0.562500 +vt 0.666667 0.554688 +vt 0.604167 0.750000 +vt 0.625000 0.781250 +vt 0.604167 0.781250 +vt 0.562500 0.750000 +vt 0.583333 0.781250 +vt 0.562500 0.781250 +vt 0.520833 0.750000 +vt 0.541667 0.781250 +vt 0.520833 0.781250 +vt 0.645833 0.781250 +vt 0.666667 0.750000 +vt 0.666667 0.781250 +vt 0.583333 0.750000 +vt 0.541667 0.750000 +vt 0.500000 0.750000 +vt 0.500000 0.781250 +vt 0.625000 0.750000 +vt 0.583333 0.726562 +vt 0.541667 0.726562 +vt 0.541667 0.742188 +vt 0.625000 0.742188 +vt 0.645833 0.726562 +vt 0.645833 0.734375 +vt 0.604167 0.726562 +vt 0.562500 0.726562 +vt 0.520833 0.726562 +vt 0.520833 0.734375 +vt 0.604167 0.703125 +vt 0.625000 0.726562 +vt 0.583333 0.703125 +vt 0.520833 0.718750 +vt 0.562500 0.703125 +vt 0.625000 0.710938 +vt 0.666667 0.726562 +vt 0.645833 0.718750 +vt 0.500000 0.726562 +vt 0.520833 0.578125 +vt 0.500000 0.703125 +vt 0.500000 0.578125 +vt 0.666667 0.703125 +vt 0.645833 0.578125 +vt 0.666667 0.578125 +vt 0.625000 0.703125 +vt 0.625000 0.578125 +vt 0.583333 0.578125 +vt 0.541667 0.703125 +vt 0.541667 0.578125 +vt 0.520833 0.703125 +vt 0.562500 0.531250 +vt 0.541667 0.500000 +vt 0.562500 0.500000 +vt 0.604167 0.531250 +vt 0.583333 0.500000 +vt 0.604167 0.500000 +vt 0.645833 0.531250 +vt 0.625000 0.500000 +vt 0.645833 0.500000 +vt 0.520833 0.531250 +vt 0.500000 0.500000 +vt 0.520833 0.500000 +vt 0.583333 0.531250 +vt 0.625000 0.531250 +vt 0.666667 0.531250 +vt 0.666667 0.500000 +vt 0.541667 0.531250 +vt 0.562500 0.554688 +vt 0.625000 0.539062 +vt 0.604167 0.554688 +vt 0.541667 0.554688 +vt 0.520833 0.546875 +vt 0.541667 0.539062 +vt 0.583333 0.554688 +vt 0.645833 0.546875 +vt 0.625000 0.554688 +vt 0.541667 0.570312 +vt 0.604167 0.578125 +vt 0.645833 0.554688 +vt 0.625000 0.570312 +vt 0.562500 0.578125 +vt 0.520833 0.562500 +vt 0.520833 0.554688 +vt 0.500000 0.554688 +vt 0.666667 0.554688 +vt 0.645833 0.562500 +vt 0.604167 0.750000 +vt 0.625000 0.781250 +vt 0.604167 0.781250 +vt 0.562500 0.750000 +vt 0.583333 0.781250 +vt 0.562500 0.781250 +vt 0.520833 0.750000 +vt 0.541667 0.781250 +vt 0.520833 0.781250 +vt 0.645833 0.781250 +vt 0.666667 0.750000 +vt 0.666667 0.781250 +vt 0.541667 0.750000 +vt 0.500000 0.750000 +vt 0.500000 0.781250 +vt 0.645833 0.750000 +vt 0.583333 0.750000 +vt 0.604167 0.726562 +vt 0.541667 0.726562 +vt 0.541667 0.742188 +vt 0.625000 0.726562 +vt 0.645833 0.734375 +vt 0.625000 0.742188 +vt 0.562500 0.726562 +vt 0.520833 0.726562 +vt 0.520833 0.734375 +vt 0.625000 0.710938 +vt 0.562500 0.703125 +vt 0.583333 0.726562 +vt 0.520833 0.718750 +vt 0.604167 0.703125 +vt 0.541667 0.710938 +vt 0.645833 0.726562 +vt 0.666667 0.726562 +vt 0.645833 0.718750 +vt 0.500000 0.726562 +vt 0.520833 0.578125 +vt 0.500000 0.703125 +vt 0.500000 0.578125 +vt 0.666667 0.703125 +vt 0.645833 0.578125 +vt 0.666667 0.578125 +vt 0.625000 0.703125 +vt 0.625000 0.578125 +vt 0.583333 0.703125 +vt 0.583333 0.578125 +vt 0.541667 0.703125 +vt 0.541667 0.578125 +vt 0.520833 0.703125 +vt 0.562500 0.531250 +vt 0.541667 0.500000 +vt 0.562500 0.500000 +vt 0.604167 0.531250 +vt 0.583333 0.500000 +vt 0.604167 0.500000 +vt 0.645833 0.531250 +vt 0.625000 0.500000 +vt 0.645833 0.500000 +vt 0.520833 0.531250 +vt 0.500000 0.500000 +vt 0.520833 0.500000 +vt 0.583333 0.531250 +vt 0.625000 0.531250 +vt 0.666667 0.531250 +vt 0.666667 0.500000 +vt 0.541667 0.531250 +vt 0.562500 0.554688 +vt 0.625000 0.539062 +vt 0.604167 0.554688 +vt 0.541667 0.554688 +vt 0.520833 0.546875 +vt 0.541667 0.539062 +vt 0.645833 0.546875 +vt 0.625000 0.554688 +vt 0.541667 0.570312 +vt 0.604167 0.578125 +vt 0.583333 0.554688 +vt 0.645833 0.562500 +vt 0.645833 0.554688 +vt 0.562500 0.578125 +vt 0.625000 0.570312 +vt 0.520833 0.562500 +vt 0.520833 0.554688 +vt 0.500000 0.554688 +vt 0.666667 0.554688 +vt 0.604167 0.750000 +vt 0.625000 0.781250 +vt 0.604167 0.781250 +vt 0.562500 0.750000 +vt 0.583333 0.781250 +vt 0.562500 0.781250 +vt 0.520833 0.750000 +vt 0.541667 0.781250 +vt 0.520833 0.781250 +vt 0.645833 0.781250 +vt 0.666667 0.750000 +vt 0.666667 0.781250 +vt 0.583333 0.750000 +vt 0.541667 0.750000 +vt 0.500000 0.750000 +vt 0.500000 0.781250 +vt 0.625000 0.750000 +vt 0.604167 0.726562 +vt 0.541667 0.742188 +vt 0.562500 0.726562 +vt 0.625000 0.726562 +vt 0.645833 0.734375 +vt 0.625000 0.742188 +vt 0.520833 0.726562 +vt 0.520833 0.734375 +vt 0.625000 0.710938 +vt 0.562500 0.703125 +vt 0.583333 0.726562 +vt 0.520833 0.718750 +vt 0.541667 0.726562 +vt 0.604167 0.703125 +vt 0.541667 0.710938 +vt 0.645833 0.726562 +vt 0.666667 0.726562 +vt 0.645833 0.718750 +vt 0.500000 0.726562 +vt 0.520833 0.578125 +vt 0.500000 0.703125 +vt 0.500000 0.578125 +vt 0.666667 0.703125 +vt 0.645833 0.578125 +vt 0.666667 0.578125 +vt 0.625000 0.703125 +vt 0.625000 0.578125 +vt 0.583333 0.703125 +vt 0.583333 0.578125 +vt 0.541667 0.703125 +vt 0.541667 0.578125 +vt 0.520833 0.703125 +vt 0.562500 0.531250 +vt 0.541667 0.500000 +vt 0.562500 0.500000 +vt 0.604167 0.531250 +vt 0.583333 0.500000 +vt 0.604167 0.500000 +vt 0.645833 0.531250 +vt 0.625000 0.500000 +vt 0.645833 0.500000 +vt 0.520833 0.531250 +vt 0.500000 0.500000 +vt 0.520833 0.500000 +vt 0.583333 0.531250 +vt 0.625000 0.531250 +vt 0.666667 0.531250 +vt 0.666667 0.500000 +vt 0.541667 0.531250 +vt 0.562500 0.554688 +vt 0.625000 0.539062 +vt 0.604167 0.554688 +vt 0.541667 0.554688 +vt 0.520833 0.546875 +vt 0.541667 0.539062 +vt 0.645833 0.546875 +vt 0.625000 0.554688 +vt 0.541667 0.570312 +vt 0.604167 0.578125 +vt 0.583333 0.554688 +vt 0.645833 0.562500 +vt 0.645833 0.554688 +vt 0.562500 0.578125 +vt 0.625000 0.570312 +vt 0.520833 0.562500 +vt 0.520833 0.554688 +vt 0.500000 0.554688 +vt 0.666667 0.554688 +vt 0.604167 0.750000 +vt 0.625000 0.781250 +vt 0.604167 0.781250 +vt 0.562500 0.750000 +vt 0.583333 0.781250 +vt 0.562500 0.781250 +vt 0.520833 0.750000 +vt 0.541667 0.781250 +vt 0.520833 0.781250 +vt 0.645833 0.750000 +vt 0.666667 0.781250 +vt 0.645833 0.781250 +vt 0.583333 0.750000 +vt 0.541667 0.750000 +vt 0.500000 0.750000 +vt 0.500000 0.781250 +vt 0.625000 0.750000 +vt 0.604167 0.726562 +vt 0.541667 0.742188 +vt 0.562500 0.726562 +vt 0.625000 0.742188 +vt 0.645833 0.726562 +vt 0.645833 0.734375 +vt 0.520833 0.726562 +vt 0.520833 0.734375 +vt 0.625000 0.710938 +vt 0.625000 0.726562 +vt 0.562500 0.703125 +vt 0.583333 0.726562 +vt 0.520833 0.718750 +vt 0.541667 0.726562 +vt 0.604167 0.703125 +vt 0.541667 0.710938 +vt 0.645833 0.718750 +vt 0.666667 0.726562 +vt 0.500000 0.726562 +vt 0.520833 0.578125 +vt 0.500000 0.703125 +vt 0.500000 0.578125 +vt 0.666667 0.703125 +vt 0.645833 0.578125 +vt 0.666667 0.578125 +vt 0.625000 0.703125 +vt 0.625000 0.578125 +vt 0.583333 0.703125 +vt 0.583333 0.578125 +vt 0.541667 0.703125 +vt 0.541667 0.578125 +vt 0.520833 0.703125 +vt 0.562500 0.531250 +vt 0.541667 0.500000 +vt 0.562500 0.500000 +vt 0.604167 0.531250 +vt 0.583333 0.500000 +vt 0.604167 0.500000 +vt 0.645833 0.531250 +vt 0.625000 0.500000 +vt 0.645833 0.500000 +vt 0.520833 0.531250 +vt 0.500000 0.500000 +vt 0.520833 0.500000 +vt 0.583333 0.531250 +vt 0.625000 0.531250 +vt 0.666667 0.531250 +vt 0.666667 0.500000 +vt 0.541667 0.531250 +vt 0.562500 0.554688 +vt 0.625000 0.539062 +vt 0.604167 0.554688 +vt 0.541667 0.554688 +vt 0.520833 0.546875 +vt 0.541667 0.539062 +vt 0.645833 0.546875 +vt 0.625000 0.554688 +vt 0.541667 0.570312 +vt 0.604167 0.578125 +vt 0.583333 0.554688 +vt 0.645833 0.562500 +vt 0.645833 0.554688 +vt 0.562500 0.578125 +vt 0.625000 0.570312 +vt 0.520833 0.562500 +vt 0.520833 0.554688 +vt 0.500000 0.554688 +vt 0.666667 0.554688 +vt 0.604167 0.750000 +vt 0.625000 0.781250 +vt 0.604167 0.781250 +vt 0.562500 0.750000 +vt 0.583333 0.781250 +vt 0.562500 0.781250 +vt 0.520833 0.750000 +vt 0.541667 0.781250 +vt 0.520833 0.781250 +vt 0.645833 0.781250 +vt 0.666667 0.750000 +vt 0.666667 0.781250 +vt 0.583333 0.750000 +vt 0.541667 0.750000 +vt 0.500000 0.750000 +vt 0.500000 0.781250 +vt 0.625000 0.750000 +vt 0.604167 0.726562 +vt 0.541667 0.742188 +vt 0.562500 0.726562 +vt 0.625000 0.742188 +vt 0.645833 0.726562 +vt 0.645833 0.734375 +vt 0.520833 0.726562 +vt 0.520833 0.734375 +vt 0.625000 0.710938 +vt 0.625000 0.726562 +vt 0.562500 0.703125 +vt 0.583333 0.726562 +vt 0.541667 0.710938 +vt 0.541667 0.726562 +vt 0.604167 0.703125 +vt 0.666667 0.726562 +vt 0.645833 0.718750 +vt 0.500000 0.726562 +vt 0.520833 0.718750 +vt 0.520833 0.578125 +vt 0.500000 0.703125 +vt 0.500000 0.578125 +vt 0.666667 0.703125 +vt 0.645833 0.578125 +vt 0.666667 0.578125 +vt 0.625000 0.703125 +vt 0.625000 0.578125 +vt 0.583333 0.703125 +vt 0.583333 0.578125 +vt 0.541667 0.703125 +vt 0.541667 0.578125 +vt 0.520833 0.703125 +vt 0.562500 0.531250 +vt 0.541667 0.500000 +vt 0.562500 0.500000 +vt 0.604167 0.531250 +vt 0.583333 0.500000 +vt 0.604167 0.500000 +vt 0.645833 0.531250 +vt 0.625000 0.500000 +vt 0.645833 0.500000 +vt 0.520833 0.531250 +vt 0.500000 0.500000 +vt 0.520833 0.500000 +vt 0.583333 0.531250 +vt 0.625000 0.531250 +vt 0.666667 0.531250 +vt 0.666667 0.500000 +vt 0.541667 0.531250 +vt 0.562500 0.554688 +vt 0.625000 0.539062 +vt 0.604167 0.554688 +vt 0.541667 0.554688 +vt 0.520833 0.546875 +vt 0.541667 0.539062 +vt 0.645833 0.554688 +vt 0.645833 0.546875 +vt 0.541667 0.570312 +vt 0.604167 0.578125 +vt 0.583333 0.554688 +vt 0.645833 0.562500 +vt 0.625000 0.554688 +vt 0.562500 0.578125 +vt 0.625000 0.570312 +vt 0.520833 0.562500 +vt 0.520833 0.554688 +vt 0.500000 0.554688 +vt 0.666667 0.554688 +vt 0.604167 0.750000 +vt 0.625000 0.781250 +vt 0.604167 0.781250 +vt 0.562500 0.750000 +vt 0.583333 0.781250 +vt 0.562500 0.781250 +vt 0.520833 0.750000 +vt 0.541667 0.781250 +vt 0.520833 0.781250 +vt 0.645833 0.750000 +vt 0.666667 0.781250 +vt 0.645833 0.781250 +vt 0.583333 0.750000 +vt 0.541667 0.750000 +vt 0.500000 0.750000 +vt 0.500000 0.781250 +vt 0.604167 0.726562 +vt 0.541667 0.742188 +vt 0.562500 0.726562 +vt 0.625000 0.742188 +vt 0.645833 0.726562 +vt 0.645833 0.734375 +vt 0.520833 0.734375 +vt 0.541667 0.726562 +vt 0.625000 0.710938 +vt 0.625000 0.726562 +vt 0.562500 0.703125 +vt 0.583333 0.726562 +vt 0.520833 0.718750 +vt 0.520833 0.726562 +vt 0.604167 0.703125 +vt 0.541667 0.710938 +vt 0.666667 0.726562 +vt 0.645833 0.718750 +vt 0.500000 0.726562 +vt 0.520833 0.578125 +vt 0.500000 0.703125 +vt 0.500000 0.578125 +vt 0.666667 0.703125 +vt 0.645833 0.578125 +vt 0.666667 0.578125 +vt 0.625000 0.703125 +vt 0.625000 0.578125 +vt 0.583333 0.703125 +vt 0.583333 0.578125 +vt 0.541667 0.578125 +vt 0.541667 0.703125 +vt 0.520833 0.703125 +vt 0.562500 0.531250 +vt 0.541667 0.500000 +vt 0.562500 0.500000 +vt 0.604167 0.531250 +vt 0.583333 0.500000 +vt 0.604167 0.500000 +vt 0.645833 0.531250 +vt 0.625000 0.500000 +vt 0.645833 0.500000 +vt 0.520833 0.531250 +vt 0.500000 0.500000 +vt 0.520833 0.500000 +vt 0.583333 0.531250 +vt 0.625000 0.531250 +vt 0.666667 0.531250 +vt 0.666667 0.500000 +vt 0.541667 0.531250 +vt 0.562500 0.554688 +vt 0.625000 0.539062 +vt 0.604167 0.554688 +vt 0.541667 0.554688 +vt 0.520833 0.546875 +vt 0.541667 0.539062 +vt 0.645833 0.546875 +vt 0.625000 0.554688 +vt 0.541667 0.570312 +vt 0.604167 0.578125 +vt 0.583333 0.554688 +vt 0.645833 0.562500 +vt 0.645833 0.554688 +vt 0.562500 0.578125 +vt 0.625000 0.570312 +vt 0.520833 0.562500 +vt 0.520833 0.554688 +vt 0.500000 0.554688 +vt 0.666667 0.554688 +vt 0.604167 0.750000 +vt 0.625000 0.781250 +vt 0.604167 0.781250 +vt 0.562500 0.750000 +vt 0.583333 0.781250 +vt 0.562500 0.781250 +vt 0.520833 0.750000 +vt 0.541667 0.781250 +vt 0.520833 0.781250 +vt 0.645833 0.781250 +vt 0.666667 0.750000 +vt 0.666667 0.781250 +vt 0.583333 0.750000 +vt 0.541667 0.750000 +vt 0.500000 0.750000 +vt 0.500000 0.781250 +vt 0.625000 0.750000 +vt 0.604167 0.726562 +vt 0.541667 0.726562 +vt 0.541667 0.742188 +vt 0.625000 0.742188 +vt 0.645833 0.726562 +vt 0.645833 0.734375 +vt 0.625000 0.726562 +vt 0.562500 0.726562 +vt 0.520833 0.726562 +vt 0.520833 0.734375 +vt 0.625000 0.710938 +vt 0.562500 0.703125 +vt 0.583333 0.726562 +vt 0.520833 0.718750 +vt 0.604167 0.703125 +vt 0.541667 0.710938 +vt 0.666667 0.726562 +vt 0.645833 0.718750 +vt 0.500000 0.726562 +vt 0.520833 0.578125 +vt 0.500000 0.703125 +vt 0.500000 0.578125 +vt 0.666667 0.703125 +vt 0.645833 0.578125 +vt 0.666667 0.578125 +vt 0.625000 0.703125 +vt 0.625000 0.578125 +vt 0.583333 0.703125 +vt 0.583333 0.578125 +vt 0.541667 0.703125 +vt 0.541667 0.578125 +vt 0.520833 0.703125 +vt 0.562500 0.500000 +vt 0.541667 0.531250 +vt 0.541667 0.500000 +vt 0.604167 0.531250 +vt 0.583333 0.500000 +vt 0.604167 0.500000 +vt 0.645833 0.531250 +vt 0.625000 0.500000 +vt 0.645833 0.500000 +vt 0.520833 0.531250 +vt 0.500000 0.500000 +vt 0.520833 0.500000 +vt 0.583333 0.531250 +vt 0.625000 0.531250 +vt 0.666667 0.531250 +vt 0.666667 0.500000 +vt 0.562500 0.554688 +vt 0.562500 0.531250 +vt 0.625000 0.539062 +vt 0.604167 0.554688 +vt 0.541667 0.554688 +vt 0.520833 0.546875 +vt 0.541667 0.539062 +vt 0.645833 0.546875 +vt 0.625000 0.554688 +vt 0.562500 0.578125 +vt 0.604167 0.578125 +vt 0.583333 0.554688 +vt 0.645833 0.562500 +vt 0.645833 0.554688 +vt 0.625000 0.570312 +vt 0.520833 0.562500 +vt 0.520833 0.554688 +vt 0.500000 0.554688 +vt 0.666667 0.554688 +vt 0.604167 0.750000 +vt 0.625000 0.781250 +vt 0.604167 0.781250 +vt 0.562500 0.750000 +vt 0.583333 0.781250 +vt 0.562500 0.781250 +vt 0.520833 0.750000 +vt 0.541667 0.781250 +vt 0.520833 0.781250 +vt 0.645833 0.750000 +vt 0.666667 0.781250 +vt 0.645833 0.781250 +vt 0.541667 0.750000 +vt 0.500000 0.781250 +vt 0.625000 0.750000 +vt 0.583333 0.750000 +vt 0.604167 0.726562 +vt 0.541667 0.742188 +vt 0.562500 0.726562 +vt 0.625000 0.742188 +vt 0.645833 0.726562 +vt 0.645833 0.734375 +vt 0.520833 0.726562 +vt 0.520833 0.734375 +vt 0.604167 0.703125 +vt 0.625000 0.726562 +vt 0.583333 0.703125 +vt 0.583333 0.726562 +vt 0.541667 0.710938 +vt 0.541667 0.726562 +vt 0.645833 0.718750 +vt 0.666667 0.726562 +vt 0.500000 0.726562 +vt 0.520833 0.718750 +vt 0.520833 0.578125 +vt 0.500000 0.703125 +vt 0.500000 0.578125 +vt 0.666667 0.703125 +vt 0.645833 0.578125 +vt 0.666667 0.578125 +vt 0.625000 0.703125 +vt 0.625000 0.578125 +vt 0.583333 0.578125 +vt 0.562500 0.703125 +vt 0.541667 0.703125 +vt 0.541667 0.578125 +vt 0.520833 0.703125 +vt 0.562500 0.531250 +vt 0.541667 0.500000 +vt 0.562500 0.500000 +vt 0.604167 0.500000 +vt 0.583333 0.531250 +vt 0.583333 0.500000 +vt 0.645833 0.531250 +vt 0.625000 0.500000 +vt 0.645833 0.500000 +vt 0.520833 0.500000 +vt 0.500000 0.531250 +vt 0.500000 0.500000 +vt 0.625000 0.531250 +vt 0.666667 0.531250 +vt 0.666667 0.500000 +vt 0.541667 0.531250 +vt 0.562500 0.554688 +vt 0.625000 0.539062 +vt 0.604167 0.554688 +vt 0.604167 0.531250 +vt 0.541667 0.554688 +vt 0.520833 0.546875 +vt 0.541667 0.539062 +vt 0.583333 0.554688 +vt 0.645833 0.546875 +vt 0.625000 0.554688 +vt 0.541667 0.570312 +vt 0.604167 0.578125 +vt 0.645833 0.562500 +vt 0.645833 0.554688 +vt 0.562500 0.578125 +vt 0.625000 0.570312 +vt 0.520833 0.554688 +vt 0.500000 0.554688 +vt 0.520833 0.562500 +vt 0.666667 0.554688 +vt 0.604167 0.750000 +vt 0.625000 0.781250 +vt 0.604167 0.781250 +vt 0.562500 0.750000 +vt 0.583333 0.781250 +vt 0.562500 0.781250 +vt 0.520833 0.750000 +vt 0.541667 0.781250 +vt 0.520833 0.781250 +vt 0.645833 0.750000 +vt 0.666667 0.781250 +vt 0.645833 0.781250 +vt 0.583333 0.750000 +vt 0.541667 0.750000 +vt 0.500000 0.781250 +vt 0.604167 0.726562 +vt 0.541667 0.726562 +vt 0.541667 0.742188 +vt 0.625000 0.742188 +vt 0.645833 0.726562 +vt 0.645833 0.734375 +vt 0.562500 0.726562 +vt 0.520833 0.726562 +vt 0.520833 0.734375 +vt 0.625000 0.710938 +vt 0.625000 0.726562 +vt 0.562500 0.703125 +vt 0.583333 0.726562 +vt 0.520833 0.718750 +vt 0.604167 0.703125 +vt 0.666667 0.726562 +vt 0.645833 0.718750 +vt 0.500000 0.726562 +vt 0.520833 0.578125 +vt 0.500000 0.703125 +vt 0.500000 0.578125 +vt 0.666667 0.703125 +vt 0.645833 0.578125 +vt 0.666667 0.578125 +vt 0.625000 0.703125 +vt 0.625000 0.578125 +vt 0.583333 0.703125 +vt 0.583333 0.578125 +vt 0.541667 0.703125 +vt 0.541667 0.578125 +vt 0.520833 0.703125 +vt 0.500000 0.531250 +vt 0.645833 0.750000 +vt 0.645833 0.703125 +vt 0.500000 0.531250 +vt 0.645833 0.750000 +vt 0.645833 0.703125 +vt 0.500000 0.531250 +vt 0.625000 0.750000 +vt 0.666667 0.750000 +vt 0.645833 0.703125 +vt 0.500000 0.531250 +vt 0.645833 0.750000 +vt 0.645833 0.703125 +vt 0.500000 0.531250 +vt 0.666667 0.750000 +vt 0.645833 0.703125 +vt 0.500000 0.531250 +vt 0.625000 0.750000 +vt 0.645833 0.703125 +vt 0.500000 0.531250 +vt 0.541667 0.570312 +vt 0.666667 0.750000 +vt 0.541667 0.710938 +vt 0.645833 0.703125 +vt 0.500000 0.531250 +vt 0.625000 0.570312 +vt 0.645833 0.750000 +vt 0.541667 0.710938 +vt 0.645833 0.703125 +vt 0.500000 0.531250 +vt 0.625000 0.750000 +vt 0.645833 0.703125 +vt 0.500000 0.531250 +vt 0.645833 0.750000 +vt 0.645833 0.703125 +vt 0.500000 0.531250 +vt 0.666667 0.750000 +vt 0.645833 0.703125 +vt 0.500000 0.531250 +vt 0.645833 0.750000 +vt 0.645833 0.703125 +vt 0.500000 0.531250 +vt 0.625000 0.750000 +vt 0.666667 0.750000 +vt 0.645833 0.703125 +vt 0.500000 0.531250 +vt 0.645833 0.750000 +vt 0.645833 0.703125 +vt 0.500000 0.531250 +vt 0.541667 0.570312 +vt 0.666667 0.750000 +vt 0.500000 0.750000 +vt 0.625000 0.710938 +vt 0.645833 0.703125 +vt 0.520833 0.531250 +vt 0.625000 0.750000 +vt 0.666667 0.750000 +vt 0.500000 0.750000 +vt 0.541667 0.710938 +vt 0.645833 0.703125 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.6794 -0.7194 -0.1447 +vn 0.7071 -0.7071 0.0000 +vn -0.6794 -0.7194 -0.1447 +vn -0.7071 -0.7071 0.0000 +vn -0.7263 0.6737 0.1363 +vn -0.7071 0.7071 0.0000 +vn 0.7263 0.6737 0.1363 +vn 0.7071 0.7071 0.0000 +vn 0.0000 -0.9824 -0.1866 +vn -0.9987 -0.0473 -0.0196 +vn 0.0000 0.7071 0.7071 +vn 0.9987 -0.0473 -0.0196 +vn 0.6630 -0.5293 -0.5293 +vn -0.6630 -0.5293 -0.5293 +vn 0.9955 -0.0670 -0.0670 +vn -0.9955 -0.0670 -0.0670 +vn 0.9987 -0.0196 -0.0473 +vn -0.6794 -0.1447 -0.7194 +vn 0.0000 -0.7071 -0.7071 +vn -0.7263 0.1363 0.6737 +vn -0.7573 0.4617 0.4617 +vn 0.6794 -0.1447 -0.7194 +vn -0.9987 -0.0196 -0.0473 +vn 0.7263 0.1363 0.6737 +vn 0.7573 0.4617 0.4617 +vn -0.6794 0.7194 -0.1447 +vn 0.6794 0.7194 -0.1447 +vn 0.7263 -0.6737 0.1363 +vn 0.0000 -0.7071 0.7071 +vn 0.9987 0.0473 -0.0196 +vn -0.9987 0.0473 -0.0196 +vn 0.0000 0.9824 -0.1866 +vn -0.6630 0.5293 -0.5293 +vn 0.9955 0.0670 -0.0670 +vn -0.7573 -0.4617 0.4617 +vn -0.7263 -0.6737 0.1363 +vn 0.6630 0.5293 -0.5293 +vn 0.7573 -0.4617 0.4617 +vn -0.9987 0.0196 -0.0473 +vn -0.9955 0.0670 -0.0670 +vn 0.6794 0.1447 -0.7194 +vn 0.0000 0.7071 -0.7071 +vn 0.7263 -0.1363 0.6737 +vn -0.6794 0.1447 -0.7194 +vn 0.9987 0.0196 -0.0473 +vn -0.7263 -0.1363 0.6737 +vn 0.0000 0.1866 -0.9824 +vn 0.0000 -0.1866 -0.9824 +vn -0.6794 -0.7194 0.1447 +vn 0.6794 -0.7194 0.1447 +vn 0.7263 0.6737 -0.1363 +vn -0.7263 0.6737 -0.1363 +vn 0.0000 -0.9824 0.1866 +vn 0.9987 -0.0473 0.0196 +vn -0.9987 -0.0473 0.0196 +vn -0.6630 -0.5293 0.5293 +vn 0.6630 -0.5293 0.5293 +vn -0.9955 -0.0670 0.0670 +vn 0.9955 -0.0670 0.0670 +vn -0.9987 -0.0196 0.0473 +vn 0.6794 -0.1447 0.7194 +vn 0.7263 0.1363 -0.6737 +vn 0.7573 0.4617 -0.4617 +vn -0.6794 -0.1447 0.7194 +vn 0.9987 -0.0196 0.0473 +vn -0.7573 0.4617 -0.4617 +vn -0.7263 0.1363 -0.6737 +vn 0.6794 0.7194 0.1447 +vn -0.6794 0.7194 0.1447 +vn -0.7263 -0.6737 -0.1363 +vn 0.7263 -0.6737 -0.1363 +vn 0.0000 0.9824 0.1866 +vn -0.9987 0.0473 0.0196 +vn 0.9987 0.0473 0.0196 +vn 0.6630 0.5293 0.5293 +vn -0.6630 0.5293 0.5293 +vn 0.7573 -0.4617 -0.4617 +vn -0.7573 -0.4617 -0.4617 +vn 0.9987 0.0196 0.0473 +vn 0.9955 0.0670 0.0670 +vn -0.6794 0.1447 0.7194 +vn -0.7263 -0.1363 -0.6737 +vn -0.9955 0.0670 0.0670 +vn 0.6794 0.1447 0.7194 +vn -0.9987 0.0196 0.0473 +vn 0.7263 -0.1363 -0.6737 +vn 0.0000 0.1866 0.9824 +vn 0.0000 -0.1866 0.9824 +vn -0.1447 -0.7194 -0.6794 +vn -0.1447 -0.7194 0.6794 +vn 0.1363 0.6737 0.7263 +vn 0.1363 0.6737 -0.7263 +vn -0.1866 -0.9824 0.0000 +vn -0.0196 -0.0473 0.9987 +vn -0.0196 -0.0473 -0.9987 +vn -0.5293 -0.5293 -0.6630 +vn -0.5293 -0.5293 0.6630 +vn -0.0670 -0.0670 -0.9955 +vn -0.0670 -0.0670 0.9955 +vn -0.0473 -0.0196 -0.9987 +vn -0.7194 -0.1447 0.6794 +vn 0.4617 0.4617 0.7573 +vn -0.0473 -0.0196 0.9987 +vn -0.7194 -0.1447 -0.6794 +vn 0.6737 0.1363 -0.7263 +vn 0.4617 0.4617 -0.7573 +vn 0.6737 0.1363 0.7263 +vn -0.1447 0.7194 0.6794 +vn -0.1447 0.7194 -0.6794 +vn 0.1363 -0.6737 -0.7263 +vn -0.0196 0.0473 -0.9987 +vn 0.1363 -0.6737 0.7263 +vn -0.1866 0.9824 0.0000 +vn -0.5293 0.5293 0.6630 +vn -0.0670 0.0670 -0.9955 +vn -0.0670 0.0670 0.9955 +vn -0.0196 0.0473 0.9987 +vn -0.5293 0.5293 -0.6630 +vn 0.4617 -0.4617 -0.7573 +vn -0.0473 0.0196 0.9987 +vn -0.7194 0.1447 -0.6794 +vn 0.6737 -0.1363 -0.7263 +vn -0.7194 0.1447 0.6794 +vn -0.0473 0.0196 -0.9987 +vn 0.4617 -0.4617 0.7573 +vn 0.6737 -0.1363 0.7263 +vn -0.9824 0.1866 0.0000 +vn -0.9824 -0.1866 0.0000 +vn 0.1447 -0.7194 0.6794 +vn 0.1447 -0.7194 -0.6794 +vn -0.1363 0.6737 -0.7263 +vn -0.1363 0.6737 0.7263 +vn 0.1866 -0.9824 0.0000 +vn 0.0196 -0.0473 -0.9987 +vn 0.0196 -0.0473 0.9987 +vn 0.5293 -0.5293 0.6630 +vn 0.5293 -0.5293 -0.6630 +vn 0.0670 -0.0670 0.9955 +vn -0.4617 0.4617 -0.7573 +vn 0.0473 -0.0196 0.9987 +vn 0.7194 -0.1447 -0.6794 +vn -0.6737 0.1363 -0.7263 +vn 0.0670 -0.0670 -0.9955 +vn 0.7194 -0.1447 0.6794 +vn 0.0473 -0.0196 -0.9987 +vn -0.6737 0.1363 0.7263 +vn -0.4617 0.4617 0.7573 +vn 0.1447 0.7194 -0.6794 +vn 0.1447 0.7194 0.6794 +vn -0.1363 -0.6737 0.7263 +vn -0.1363 -0.6737 -0.7263 +vn 0.1866 0.9824 0.0000 +vn 0.0196 0.0473 0.9987 +vn 0.5293 0.5293 -0.6630 +vn 0.5293 0.5293 0.6630 +vn 0.0196 0.0473 -0.9987 +vn -0.4617 -0.4617 -0.7573 +vn 0.0670 0.0670 0.9955 +vn 0.0473 0.0196 -0.9987 +vn 0.0670 0.0670 -0.9955 +vn 0.7194 0.1447 0.6794 +vn -0.6737 -0.1363 0.7263 +vn -0.4617 -0.4617 0.7573 +vn 0.7194 0.1447 -0.6794 +vn 0.0473 0.0196 0.9987 +vn -0.6737 -0.1363 -0.7263 +vn 0.9824 0.1866 0.0000 +vn 0.9824 -0.1866 0.0000 +s off +f 20/1/1 18/2/1 17/3/1 +f 22/4/2 42/5/2 21/6/2 +f 112/7/2 120/8/2 111/9/2 +f 89/10/2 118/11/2 117/12/2 +f 2/13/2 83/14/2 6/15/2 +f 91/16/3 130/17/3 92/18/3 +f 3/19/3 17/20/3 1/21/3 +f 2/22/4 19/23/4 4/24/4 +f 5/25/3 33/26/3 7/27/3 +f 8/28/4 35/29/4 6/30/4 +f 7/27/3 20/31/3 3/19/3 +f 4/24/4 36/32/4 8/28/4 +f 6/30/4 18/2/4 2/22/4 +f 1/21/3 34/33/3 5/25/3 +f 10/34/5 18/35/5 11/36/5 +f 12/37/2 20/38/2 9/39/2 +f 15/40/5 34/41/5 14/42/5 +f 13/43/2 36/44/2 16/45/2 +f 9/39/2 33/46/2 13/43/2 +f 16/45/2 19/47/2 12/37/2 +f 11/36/5 35/48/5 15/40/5 +f 14/42/5 17/49/5 10/34/5 +f 25/50/2 92/51/2 27/52/2 +f 8/53/5 82/54/5 4/55/5 +f 6/56/1 84/57/1 8/58/1 +f 4/59/6 81/60/6 2/61/6 +f 131/62/4 110/63/4 109/64/4 +f 92/18/5 128/65/5 91/16/5 +f 126/66/5 109/64/5 110/63/5 +f 122/67/3 126/66/3 121/68/3 +f 123/69/5 122/70/5 121/71/5 +f 123/72/4 127/73/4 124/74/4 +f 31/75/4 118/11/4 32/76/4 +f 30/77/2 31/78/2 32/79/2 +f 30/80/3 119/81/3 29/82/3 +f 37/83/2 48/84/2 40/85/2 +f 23/86/3 43/87/3 22/88/3 +f 21/89/4 41/90/4 24/91/4 +f 24/92/5 44/93/5 23/94/5 +f 37/95/6 42/96/6 38/97/6 +f 38/98/6 43/99/6 39/100/6 +f 39/101/6 44/102/6 40/103/6 +f 40/85/6 41/104/6 37/83/6 +f 47/105/6 45/106/6 46/107/6 +f 39/100/5 46/107/5 38/98/5 +f 40/103/4 47/105/4 39/101/4 +f 38/97/3 45/106/3 37/95/3 +f 51/108/4 50/109/4 49/110/4 +f 59/111/3 58/112/3 57/113/3 +f 52/114/6 55/115/6 50/109/6 +f 49/110/1 53/116/1 51/108/1 +f 51/108/2 56/117/2 52/114/2 +f 50/109/5 54/118/5 49/110/5 +f 58/112/6 64/119/6 63/120/6 +f 57/113/1 61/121/1 59/111/1 +f 59/111/5 64/122/5 60/123/5 +f 58/112/2 62/124/2 57/113/2 +f 67/125/2 66/126/2 65/127/2 +f 75/128/5 74/129/5 73/130/5 +f 68/131/6 71/132/6 66/126/6 +f 65/127/1 69/133/1 67/125/1 +f 67/125/3 72/134/3 68/131/3 +f 66/126/4 70/135/4 65/127/4 +f 76/136/6 79/137/6 74/129/6 +f 73/130/1 77/138/1 75/128/1 +f 75/128/4 80/139/4 76/136/4 +f 74/129/3 78/140/3 73/130/3 +f 87/141/2 95/142/2 88/143/2 +f 87/144/4 86/145/4 85/146/4 +f 26/147/4 84/57/4 28/148/4 +f 27/149/4 81/60/4 25/150/4 +f 83/14/4 86/145/4 88/151/4 +f 85/146/4 25/150/4 81/60/4 +f 89/152/4 96/153/4 90/154/4 +f 94/155/4 92/51/4 91/156/4 +f 88/157/1 89/152/1 28/158/1 +f 85/159/6 91/156/6 25/160/6 +f 86/161/5 94/155/5 85/162/5 +f 26/163/6 96/153/6 87/164/6 +f 28/165/5 90/154/5 26/166/5 +f 27/167/1 93/168/1 86/169/1 +f 97/170/5 112/171/5 99/172/5 +f 107/173/5 115/174/5 108/175/5 +f 107/176/3 106/177/3 105/178/3 +f 98/179/3 104/180/3 100/181/3 +f 99/182/3 101/183/3 97/184/3 +f 103/185/3 106/177/3 108/186/3 +f 105/178/3 97/184/3 101/183/3 +f 109/187/3 116/188/3 110/189/3 +f 114/190/3 112/171/3 111/191/3 +f 108/192/1 109/187/1 100/193/1 +f 105/194/6 111/191/6 97/195/6 +f 106/196/2 114/190/2 105/197/2 +f 98/198/6 116/188/6 107/199/6 +f 100/200/2 110/189/2 98/201/2 +f 99/202/1 113/203/1 106/204/1 +f 132/205/5 104/206/5 102/207/5 +f 81/208/5 130/209/5 129/210/5 +f 129/211/6 128/65/6 123/212/6 +f 126/66/6 132/213/6 121/214/6 +f 125/215/1 131/216/1 109/64/1 +f 92/18/1 124/217/1 127/73/1 +f 104/206/5 131/218/5 122/70/5 +f 123/69/5 121/71/5 102/207/5 +f 81/208/6 10/219/6 11/220/6 +f 14/221/1 83/222/1 15/223/1 +f 14/224/4 102/207/4 104/206/4 +f 11/225/3 83/222/3 81/208/3 +f 135/226/4 112/7/4 111/9/4 +f 89/10/3 134/227/3 90/228/3 +f 134/229/2 84/230/2 82/231/2 +f 136/232/2 101/233/2 103/234/2 +f 30/235/6 111/9/6 120/8/6 +f 90/228/6 32/236/6 118/11/6 +f 31/237/1 89/10/1 117/12/1 +f 119/81/1 136/238/1 29/239/1 +f 84/230/2 133/240/2 31/78/2 +f 30/77/2 32/79/2 82/231/2 +f 12/241/3 84/230/3 16/242/3 +f 13/243/4 101/233/4 9/244/4 +f 101/233/6 12/245/6 9/246/6 +f 16/247/1 103/234/1 13/248/1 +f 24/249/6 36/32/6 33/250/6 +f 21/251/6 33/250/6 34/252/6 +f 22/253/6 34/252/6 35/29/6 +f 23/254/6 35/29/6 36/32/6 +f 3/255/5 103/185/5 7/256/5 +f 102/257/6 3/258/6 1/259/6 +f 7/260/1 104/180/1 5/261/1 +f 104/180/2 1/262/2 5/263/2 +f 20/1/1 19/23/1 18/2/1 +f 22/4/2 43/99/2 42/5/2 +f 112/7/2 119/81/2 120/8/2 +f 89/10/2 90/228/2 118/11/2 +f 2/13/2 81/60/2 83/14/2 +f 91/16/3 129/264/3 130/17/3 +f 3/19/3 20/31/3 17/20/3 +f 2/22/4 18/2/4 19/23/4 +f 5/25/3 34/33/3 33/26/3 +f 8/28/4 36/32/4 35/29/4 +f 7/27/3 33/26/3 20/31/3 +f 4/24/4 19/23/4 36/32/4 +f 6/30/4 35/29/4 18/2/4 +f 1/21/3 17/20/3 34/33/3 +f 10/34/5 17/49/5 18/35/5 +f 12/37/2 19/47/2 20/38/2 +f 15/40/5 35/48/5 34/41/5 +f 13/43/2 33/46/2 36/44/2 +f 9/39/2 20/38/2 33/46/2 +f 16/45/2 36/44/2 19/47/2 +f 11/36/5 18/35/5 35/48/5 +f 14/42/5 34/41/5 17/49/5 +f 25/50/2 91/156/2 92/51/2 +f 8/53/5 84/57/5 82/54/5 +f 6/56/1 83/14/1 84/57/1 +f 4/59/6 82/54/6 81/60/6 +f 131/62/4 132/265/4 110/63/4 +f 92/18/5 127/73/5 128/65/5 +f 126/66/5 125/215/5 109/64/5 +f 122/67/3 125/215/3 126/66/3 +f 123/69/5 124/266/5 122/70/5 +f 123/72/4 128/65/4 127/73/4 +f 31/75/4 117/12/4 118/11/4 +f 30/77/2 29/267/2 31/78/2 +f 30/80/3 120/8/3 119/81/3 +f 37/83/2 45/106/2 48/84/2 +f 23/86/3 44/102/3 43/87/3 +f 21/89/4 42/96/4 41/90/4 +f 24/92/5 41/104/5 44/93/5 +f 37/95/6 41/90/6 42/96/6 +f 38/98/6 42/5/6 43/99/6 +f 39/101/6 43/87/6 44/102/6 +f 40/85/6 44/93/6 41/104/6 +f 47/105/6 48/84/6 45/106/6 +f 39/100/5 47/105/5 46/107/5 +f 40/103/4 48/84/4 47/105/4 +f 38/97/3 46/107/3 45/106/3 +f 51/108/4 52/114/4 50/109/4 +f 59/111/3 60/123/3 58/112/3 +f 52/114/6 56/268/6 55/115/6 +f 49/110/1 54/269/1 53/116/1 +f 51/108/2 53/270/2 56/117/2 +f 50/109/5 55/271/5 54/118/5 +f 58/112/6 60/123/6 64/119/6 +f 57/113/1 62/272/1 61/121/1 +f 59/111/5 61/273/5 64/122/5 +f 58/112/2 63/274/2 62/124/2 +f 67/125/2 68/131/2 66/126/2 +f 75/128/5 76/136/5 74/129/5 +f 68/131/6 72/275/6 71/132/6 +f 65/127/1 70/276/1 69/133/1 +f 67/125/3 69/277/3 72/134/3 +f 66/126/4 71/278/4 70/135/4 +f 76/136/6 80/279/6 79/137/6 +f 73/130/1 78/280/1 77/138/1 +f 75/128/4 77/281/4 80/139/4 +f 74/129/3 79/282/3 78/140/3 +f 87/141/2 96/153/2 95/142/2 +f 87/144/4 88/151/4 86/145/4 +f 26/147/4 82/54/4 84/57/4 +f 27/149/4 83/14/4 81/60/4 +f 28/148/4 84/57/4 88/151/4 +f 84/57/4 83/14/4 88/151/4 +f 83/14/4 27/149/4 86/145/4 +f 81/60/4 82/54/4 87/144/4 +f 82/54/4 26/147/4 87/144/4 +f 87/144/4 85/146/4 81/60/4 +f 89/152/4 95/142/4 96/153/4 +f 94/155/4 93/168/4 92/51/4 +f 88/157/1 95/142/1 89/152/1 +f 85/159/6 94/155/6 91/156/6 +f 86/161/5 93/168/5 94/155/5 +f 26/163/6 90/154/6 96/153/6 +f 28/165/5 89/152/5 90/154/5 +f 27/167/1 92/51/1 93/168/1 +f 97/170/5 111/191/5 112/171/5 +f 107/173/5 116/188/5 115/174/5 +f 107/176/3 108/186/3 106/177/3 +f 98/179/3 102/257/3 104/180/3 +f 99/182/3 103/185/3 101/183/3 +f 100/181/3 104/180/3 108/186/3 +f 104/180/3 103/185/3 108/186/3 +f 103/185/3 99/182/3 106/177/3 +f 101/183/3 102/257/3 107/176/3 +f 102/257/3 98/179/3 107/176/3 +f 107/176/3 105/178/3 101/183/3 +f 109/187/3 115/174/3 116/188/3 +f 114/190/3 113/203/3 112/171/3 +f 108/192/1 115/174/1 109/187/1 +f 105/194/6 114/190/6 111/191/6 +f 106/196/2 113/203/2 114/190/2 +f 98/198/6 110/189/6 116/188/6 +f 100/200/2 109/187/2 110/189/2 +f 99/202/1 112/171/1 113/203/1 +f 132/205/5 131/218/5 104/206/5 +f 81/208/5 83/222/5 130/209/5 +f 129/211/6 91/16/6 128/65/6 +f 126/66/6 110/63/6 132/213/6 +f 125/215/1 122/283/1 131/216/1 +f 92/18/1 130/284/1 124/217/1 +f 122/70/5 124/266/5 83/222/5 +f 124/266/5 130/209/5 83/222/5 +f 83/222/5 104/206/5 122/70/5 +f 121/71/5 132/205/5 102/207/5 +f 102/207/5 81/208/5 123/69/5 +f 81/208/5 129/210/5 123/69/5 +f 81/208/6 102/207/6 10/219/6 +f 14/221/1 104/206/1 83/222/1 +f 14/224/4 10/285/4 102/207/4 +f 11/225/3 15/286/3 83/222/3 +f 135/226/4 136/287/4 112/7/4 +f 89/10/3 133/288/3 134/227/3 +f 134/229/2 133/240/2 84/230/2 +f 136/232/2 135/289/2 101/233/2 +f 30/235/6 135/290/6 111/9/6 +f 90/228/6 134/291/6 32/236/6 +f 31/237/1 133/292/1 89/10/1 +f 119/81/1 112/7/1 136/238/1 +f 31/78/2 29/267/2 103/234/2 +f 29/267/2 136/232/2 103/234/2 +f 103/234/2 84/230/2 31/78/2 +f 32/79/2 134/229/2 82/231/2 +f 82/231/2 101/233/2 30/77/2 +f 101/233/2 135/289/2 30/77/2 +f 12/241/3 82/231/3 84/230/3 +f 13/243/4 103/234/4 101/233/4 +f 101/233/6 82/231/6 12/245/6 +f 16/247/1 84/230/1 103/234/1 +f 24/249/6 23/254/6 36/32/6 +f 21/251/6 24/249/6 33/250/6 +f 22/253/6 21/251/6 34/252/6 +f 23/254/6 22/253/6 35/29/6 +f 3/255/5 101/183/5 103/185/5 +f 102/257/6 101/183/6 3/258/6 +f 7/260/1 103/185/1 104/180/1 +f 104/180/2 102/257/2 1/262/2 +s 1 +f 152/293/7 137/294/4 144/295/8 +f 150/296/9 143/297/1 142/298/10 +f 148/299/11 141/300/3 140/301/12 +f 146/302/13 139/303/6 138/304/14 +f 151/305/15 144/295/8 143/297/1 +f 149/306/16 142/298/10 141/300/3 +f 147/307/17 140/301/12 139/308/6 +f 145/309/18 138/304/14 137/294/4 +f 151/305/15 159/310/19 152/293/7 +f 149/311/16 157/312/20 150/296/9 +f 153/313/21 146/314/13 145/315/18 +f 159/310/19 145/315/18 152/293/7 +f 157/312/20 151/305/15 150/296/9 +f 148/316/11 156/317/22 149/311/16 +f 159/310/19 160/318/23 153/313/21 +f 164/319/24 158/320/25 157/312/20 +f 162/321/26 156/317/22 155/322/27 +f 158/320/25 166/323/28 159/310/19 +f 163/324/29 157/312/20 156/317/22 +f 153/313/21 161/325/30 154/326/31 +f 146/314/13 154/326/31 147/327/17 +f 154/326/31 161/325/30 147/327/17 +f 148/316/11 147/328/17 155/322/27 +f 155/322/27 147/328/17 162/321/26 +f 182/329/32 167/330/3 174/331/12 +f 180/332/33 173/333/6 172/334/14 +f 178/335/34 171/336/4 170/337/8 +f 168/338/10 177/339/35 169/340/1 +f 173/333/6 182/329/32 174/331/12 +f 179/341/36 172/334/14 171/336/4 +f 177/342/35 170/337/8 169/343/1 +f 175/344/37 168/338/10 167/330/3 +f 181/345/38 189/346/39 182/329/32 +f 186/347/40 180/332/33 179/348/36 +f 175/349/37 184/350/41 176/351/42 +f 189/346/39 175/349/37 182/329/32 +f 187/352/43 181/345/38 180/332/33 +f 185/353/44 179/348/36 178/354/34 +f 189/346/39 190/355/45 183/356/46 +f 194/357/47 188/358/48 187/352/43 +f 192/359/49 186/347/40 185/353/44 +f 188/358/48 196/360/50 189/346/39 +f 193/361/51 187/352/43 186/347/40 +f 190/355/45 184/350/41 183/356/46 +f 176/351/42 184/350/41 177/362/35 +f 184/350/41 191/363/52 177/362/35 +f 178/354/34 177/364/35 185/353/44 +f 185/353/44 177/364/35 192/359/49 +f 161/365/30 177/366/35 147/367/17 +f 177/368/35 162/369/26 147/370/17 +f 162/369/26 190/371/45 163/372/29 +f 163/372/29 196/360/50 164/319/24 +f 164/319/24 195/373/53 165/374/54 +f 165/374/54 194/357/47 166/323/28 +f 166/323/28 193/375/51 160/376/23 +f 160/376/23 192/377/49 161/365/30 +f 212/378/7 197/379/4 204/380/8 +f 210/381/9 203/382/1 202/383/10 +f 208/384/11 201/385/3 200/386/12 +f 206/387/13 199/388/6 198/389/14 +f 211/390/15 204/380/8 203/382/1 +f 209/391/16 202/383/10 201/385/3 +f 207/392/17 200/386/12 199/393/6 +f 205/394/18 198/389/14 197/379/4 +f 211/390/15 219/395/19 212/378/7 +f 209/396/16 217/397/20 210/381/9 +f 213/398/21 206/399/13 205/400/18 +f 219/395/19 205/400/18 212/378/7 +f 217/397/20 211/390/15 210/381/9 +f 208/401/11 216/402/22 209/396/16 +f 219/395/19 220/403/23 213/398/21 +f 224/404/24 218/405/25 217/397/20 +f 222/406/26 216/402/22 215/407/27 +f 218/405/25 226/408/28 219/395/19 +f 223/409/29 217/397/20 216/402/22 +f 213/398/21 221/410/30 214/411/31 +f 206/399/13 214/411/31 207/412/17 +f 214/411/31 221/410/30 207/412/17 +f 208/401/11 207/413/17 215/407/27 +f 215/407/27 207/413/17 222/406/26 +f 242/414/32 227/415/3 234/416/12 +f 240/417/33 233/418/6 232/419/14 +f 238/420/34 231/421/4 230/422/8 +f 228/423/10 237/424/35 229/425/1 +f 241/426/38 234/416/12 233/418/6 +f 239/427/36 232/419/14 231/421/4 +f 237/428/35 230/422/8 229/429/1 +f 235/430/37 228/423/10 227/415/3 +f 241/426/38 249/431/39 242/414/32 +f 239/432/36 247/433/43 240/417/33 +f 243/434/46 236/435/42 235/436/37 +f 249/431/39 235/436/37 242/414/32 +f 247/433/43 241/426/38 240/417/33 +f 245/437/44 239/432/36 238/438/34 +f 249/431/39 250/439/45 243/434/46 +f 254/440/47 248/441/48 247/433/43 +f 252/442/49 246/443/40 245/437/44 +f 248/441/48 256/444/50 249/431/39 +f 253/445/51 247/433/43 246/443/40 +f 250/439/45 244/446/41 243/434/46 +f 236/435/42 244/446/41 237/447/35 +f 244/446/41 251/448/52 237/447/35 +f 238/438/34 237/449/35 245/437/44 +f 245/437/44 237/449/35 252/442/49 +f 221/450/30 237/451/35 207/452/17 +f 237/453/35 222/454/26 207/455/17 +f 222/454/26 250/456/45 223/457/29 +f 223/457/29 256/444/50 224/404/24 +f 224/404/24 255/458/53 225/459/54 +f 225/459/54 254/440/47 226/408/28 +f 226/408/28 253/460/51 220/461/23 +f 220/461/23 252/462/49 221/450/30 +f 272/463/7 257/464/4 264/465/8 +f 270/466/9 263/467/1 262/468/10 +f 268/469/11 261/470/3 260/471/12 +f 266/472/13 259/473/6 258/474/14 +f 271/475/15 264/465/8 263/467/1 +f 269/476/16 262/468/10 261/470/3 +f 267/477/17 260/471/12 259/478/6 +f 265/479/18 258/474/14 257/464/4 +f 271/475/15 279/480/19 272/463/7 +f 269/481/16 277/482/20 270/466/9 +f 273/483/21 266/484/13 265/485/18 +f 279/480/19 265/485/18 272/463/7 +f 277/482/20 271/475/15 270/466/9 +f 268/486/11 276/487/22 269/481/16 +f 279/480/19 280/488/23 273/483/21 +f 284/489/24 278/490/25 277/482/20 +f 282/491/26 276/487/22 275/492/27 +f 278/490/25 286/493/28 279/480/19 +f 283/494/29 277/482/20 276/487/22 +f 273/483/21 281/495/30 274/496/31 +f 266/484/13 274/496/31 267/497/17 +f 274/496/31 281/495/30 267/497/17 +f 268/486/11 267/498/17 275/492/27 +f 275/492/27 267/498/17 282/491/26 +f 302/499/32 287/500/3 294/501/12 +f 300/502/33 293/503/6 292/504/14 +f 298/505/34 291/506/4 290/507/8 +f 296/508/42 289/509/1 288/510/10 +f 301/511/38 294/501/12 293/503/6 +f 299/512/36 292/504/14 291/506/4 +f 297/513/35 290/507/8 289/514/1 +f 287/500/3 296/508/42 288/510/10 +f 301/511/38 309/515/39 302/499/32 +f 306/516/40 300/502/33 299/517/36 +f 303/518/46 296/519/42 295/520/37 +f 309/515/39 295/520/37 302/499/32 +f 307/521/43 301/511/38 300/502/33 +f 305/522/44 299/517/36 298/523/34 +f 309/515/39 310/524/45 303/518/46 +f 314/525/47 308/526/48 307/521/43 +f 312/527/49 306/516/40 305/522/44 +f 308/526/48 316/528/50 309/515/39 +f 313/529/51 307/521/43 306/516/40 +f 310/524/45 304/530/41 303/518/46 +f 296/519/42 304/530/41 297/531/35 +f 304/530/41 311/532/52 297/531/35 +f 298/523/34 297/533/35 305/522/44 +f 305/522/44 297/533/35 312/527/49 +f 281/534/30 297/535/35 267/536/17 +f 297/537/35 282/538/26 267/539/17 +f 282/538/26 310/540/45 283/541/29 +f 283/541/29 316/528/50 284/489/24 +f 284/489/24 315/542/53 285/543/54 +f 285/543/54 314/525/47 286/493/28 +f 286/493/28 313/544/51 280/545/23 +f 280/545/23 312/546/49 281/534/30 +f 332/547/7 317/548/4 324/549/8 +f 330/550/9 323/551/1 322/552/10 +f 328/553/11 321/554/3 320/555/12 +f 326/556/13 319/557/6 318/558/14 +f 331/559/15 324/549/8 323/551/1 +f 329/560/16 322/552/10 321/554/3 +f 327/561/17 320/555/12 319/562/6 +f 325/563/18 318/558/14 317/548/4 +f 331/559/15 339/564/19 332/547/7 +f 329/565/16 337/566/20 330/550/9 +f 333/567/21 326/568/13 325/569/18 +f 339/564/19 325/569/18 332/547/7 +f 337/566/20 331/559/15 330/550/9 +f 328/570/11 336/571/22 329/565/16 +f 339/564/19 340/572/23 333/567/21 +f 344/573/24 338/574/25 337/566/20 +f 342/575/26 336/571/22 335/576/27 +f 338/574/25 346/577/28 339/564/19 +f 343/578/29 337/566/20 336/571/22 +f 333/567/21 341/579/30 334/580/31 +f 326/568/13 334/580/31 327/581/17 +f 334/580/31 341/579/30 327/581/17 +f 328/570/11 327/582/17 335/576/27 +f 335/576/27 327/582/17 342/575/26 +f 362/583/32 347/584/3 354/585/12 +f 360/586/33 353/587/6 352/588/14 +f 358/589/34 351/590/4 350/591/8 +f 348/592/10 357/593/35 349/594/1 +f 361/595/38 354/585/12 353/587/6 +f 359/596/36 352/588/14 351/590/4 +f 357/597/35 350/591/8 349/598/1 +f 355/599/37 348/592/10 347/584/3 +f 361/595/38 369/600/39 362/583/32 +f 359/601/36 367/602/43 360/586/33 +f 355/603/37 364/604/41 356/605/42 +f 369/600/39 355/603/37 362/583/32 +f 367/602/43 361/595/38 360/586/33 +f 365/606/44 359/601/36 358/607/34 +f 369/600/39 370/608/45 363/609/46 +f 374/610/47 368/611/48 367/602/43 +f 372/612/49 366/613/40 365/606/44 +f 368/611/48 376/614/50 369/600/39 +f 373/615/51 367/602/43 366/613/40 +f 370/608/45 364/604/41 363/609/46 +f 356/605/42 364/604/41 357/616/35 +f 364/604/41 371/617/52 357/616/35 +f 358/607/34 357/618/35 365/606/44 +f 365/606/44 357/618/35 372/612/49 +f 341/619/30 357/620/35 327/621/17 +f 357/622/35 342/623/26 327/624/17 +f 342/623/26 370/625/45 343/626/29 +f 343/626/29 376/614/50 344/573/24 +f 344/573/24 375/627/53 345/628/54 +f 345/628/54 374/610/47 346/577/28 +f 346/577/28 373/629/51 340/630/23 +f 340/630/23 372/631/49 341/619/30 +f 392/632/55 377/633/3 384/634/10 +f 390/635/56 383/636/1 382/637/8 +f 388/638/57 381/639/4 380/640/14 +f 386/641/58 379/642/6 378/643/12 +f 391/644/59 384/634/10 383/636/1 +f 389/645/60 382/637/8 381/639/4 +f 387/646/48 380/640/14 379/647/6 +f 385/648/61 378/643/12 377/633/3 +f 391/644/59 399/649/62 392/632/55 +f 389/650/60 397/651/63 390/635/56 +f 393/652/64 386/653/58 385/654/61 +f 399/649/62 385/654/61 392/632/55 +f 397/651/63 391/644/59 390/635/56 +f 388/655/57 396/656/65 389/650/60 +f 399/649/62 400/657/66 393/652/64 +f 404/658/67 398/659/35 397/651/63 +f 402/660/68 396/656/65 395/661/69 +f 398/659/35 406/662/70 399/649/62 +f 403/663/71 397/651/63 396/656/65 +f 400/657/66 394/664/72 393/652/64 +f 386/653/58 394/664/72 387/665/48 +f 394/664/72 401/666/73 387/665/48 +f 388/655/57 387/667/48 395/661/69 +f 395/661/69 387/667/48 402/660/68 +f 422/668/74 407/669/4 414/670/14 +f 420/671/75 413/672/6 412/673/12 +f 418/674/76 411/675/3 410/676/10 +f 416/677/77 409/678/1 408/679/8 +f 421/680/78 414/670/14 413/672/6 +f 419/681/79 412/673/12 411/675/3 +f 417/682/25 410/676/10 409/683/1 +f 415/684/80 408/679/8 407/669/4 +f 421/680/78 429/685/81 422/668/74 +f 419/686/79 427/687/82 420/671/75 +f 415/688/80 424/689/83 416/690/77 +f 429/685/81 415/688/80 422/668/74 +f 427/687/82 421/680/78 420/671/75 +f 425/691/84 419/686/79 418/692/76 +f 429/685/81 430/693/85 423/694/86 +f 434/695/87 428/696/17 427/687/82 +f 432/697/88 426/698/89 425/691/84 +f 428/696/17 436/699/90 429/685/81 +f 433/700/91 427/687/82 426/698/89 +f 430/693/85 424/689/83 423/694/86 +f 416/690/77 424/689/83 417/701/25 +f 424/689/83 431/702/92 417/701/25 +f 418/692/76 417/703/25 425/691/84 +f 425/691/84 417/703/25 432/697/88 +f 401/704/73 417/705/25 387/706/48 +f 417/707/25 402/708/68 387/709/48 +f 402/708/68 430/710/85 403/711/71 +f 403/711/71 436/699/90 404/658/67 +f 404/658/67 435/712/93 405/713/94 +f 405/713/94 434/695/87 406/662/70 +f 406/662/70 433/714/91 400/715/66 +f 400/715/66 432/716/88 401/704/73 +f 452/717/55 437/718/3 444/719/10 +f 450/720/56 443/721/1 442/722/8 +f 448/723/57 441/724/4 440/725/14 +f 446/726/58 439/727/6 438/728/12 +f 451/729/59 444/719/10 443/721/1 +f 449/730/60 442/722/8 441/724/4 +f 447/731/48 440/725/14 439/732/6 +f 445/733/61 438/728/12 437/718/3 +f 451/729/59 459/734/62 452/717/55 +f 456/735/65 450/720/56 449/736/60 +f 453/737/64 446/738/58 445/739/61 +f 459/734/62 445/739/61 452/717/55 +f 457/740/63 451/729/59 450/720/56 +f 448/741/57 456/735/65 449/736/60 +f 459/734/62 460/742/66 453/737/64 +f 464/743/67 458/744/35 457/740/63 +f 455/745/69 463/746/71 456/735/65 +f 458/744/35 466/747/70 459/734/62 +f 463/746/71 457/740/63 456/735/65 +f 460/742/66 454/748/72 453/737/64 +f 446/738/58 454/748/72 447/749/48 +f 454/748/72 461/750/73 447/749/48 +f 448/741/57 447/751/48 455/745/69 +f 455/745/69 447/751/48 462/752/68 +f 482/753/74 467/754/4 474/755/14 +f 480/756/75 473/757/6 472/758/12 +f 478/759/76 471/760/3 470/761/10 +f 468/762/8 477/763/25 469/764/1 +f 481/765/78 474/755/14 473/757/6 +f 479/766/79 472/758/12 471/760/3 +f 477/767/25 470/761/10 469/768/1 +f 467/754/4 476/769/77 468/762/8 +f 481/765/78 489/770/81 482/753/74 +f 479/771/79 487/772/82 480/756/75 +f 475/773/80 484/774/83 476/775/77 +f 482/753/74 483/776/86 475/773/80 +f 487/772/82 481/765/78 480/756/75 +f 485/777/84 479/771/79 478/778/76 +f 489/770/81 490/779/85 483/776/86 +f 494/780/87 488/781/17 487/772/82 +f 492/782/88 486/783/89 485/777/84 +f 488/781/17 496/784/90 489/770/81 +f 493/785/91 487/772/82 486/783/89 +f 490/779/85 484/774/83 483/776/86 +f 476/775/77 484/774/83 477/786/25 +f 484/774/83 491/787/92 477/786/25 +f 478/778/76 477/788/25 485/777/84 +f 485/777/84 477/788/25 492/782/88 +f 461/789/73 477/790/25 447/791/48 +f 477/792/25 462/793/68 447/794/48 +f 462/793/68 490/795/85 463/796/71 +f 463/796/71 496/784/90 464/743/67 +f 464/743/67 495/797/93 465/798/94 +f 465/798/94 494/780/87 466/747/70 +f 466/747/70 493/799/91 460/800/66 +f 460/800/66 492/801/88 461/789/73 +f 512/802/55 497/803/3 504/804/10 +f 510/805/56 503/806/1 502/807/8 +f 508/808/57 501/809/4 500/810/14 +f 506/811/58 499/812/6 498/813/12 +f 511/814/59 504/804/10 503/806/1 +f 509/815/60 502/807/8 501/809/4 +f 507/816/48 500/810/14 499/817/6 +f 505/818/61 498/813/12 497/803/3 +f 511/814/59 519/819/62 512/802/55 +f 509/820/60 517/821/63 510/805/56 +f 513/822/64 506/823/58 505/824/61 +f 519/819/62 505/824/61 512/802/55 +f 517/821/63 511/814/59 510/805/56 +f 508/825/57 516/826/65 509/820/60 +f 526/827/70 513/822/64 519/819/62 +f 524/828/67 518/829/35 517/821/63 +f 522/830/68 516/826/65 515/831/69 +f 518/829/35 526/827/70 519/819/62 +f 523/832/71 517/821/63 516/826/65 +f 513/822/64 521/833/73 514/834/72 +f 506/823/58 514/834/72 507/835/48 +f 514/834/72 521/833/73 507/835/48 +f 508/825/57 507/836/48 515/831/69 +f 515/831/69 507/836/48 522/830/68 +f 542/837/74 527/838/4 534/839/14 +f 540/840/75 533/841/6 532/842/12 +f 538/843/76 531/844/3 530/845/10 +f 536/846/77 529/847/1 528/848/8 +f 541/849/78 534/839/14 533/841/6 +f 539/850/79 532/842/12 531/844/3 +f 537/851/25 530/845/10 529/852/1 +f 535/853/80 528/848/8 527/838/4 +f 541/849/78 549/854/81 542/837/74 +f 539/855/79 547/856/82 540/840/75 +f 543/857/86 536/858/77 535/859/80 +f 549/854/81 535/859/80 542/837/74 +f 547/856/82 541/849/78 540/840/75 +f 545/860/84 539/855/79 538/861/76 +f 549/854/81 550/862/85 543/857/86 +f 554/863/87 548/864/17 547/856/82 +f 552/865/88 546/866/89 545/860/84 +f 548/864/17 556/867/90 549/854/81 +f 546/866/89 554/863/87 547/856/82 +f 550/862/85 544/868/83 543/857/86 +f 536/858/77 544/868/83 537/869/25 +f 544/868/83 551/870/92 537/869/25 +f 538/861/76 537/871/25 545/860/84 +f 545/860/84 537/871/25 552/865/88 +f 521/872/73 537/873/25 507/874/48 +f 537/875/25 522/876/68 507/877/48 +f 522/876/68 550/878/85 523/879/71 +f 523/879/71 556/867/90 524/828/67 +f 524/828/67 555/880/93 525/881/94 +f 525/881/94 554/863/87 526/827/70 +f 526/827/70 553/882/91 520/883/66 +f 520/883/66 552/884/88 521/872/73 +f 572/885/55 557/886/3 564/887/10 +f 570/888/56 563/889/1 562/890/8 +f 568/891/57 561/892/4 560/893/14 +f 566/894/58 559/895/6 558/896/12 +f 571/897/59 564/887/10 563/889/1 +f 569/898/60 562/890/8 561/892/4 +f 567/899/48 560/893/14 559/900/6 +f 565/901/61 558/896/12 557/886/3 +f 571/897/59 579/902/62 572/885/55 +f 569/903/60 577/904/63 570/888/56 +f 573/905/64 566/906/58 565/907/61 +f 579/902/62 565/907/61 572/885/55 +f 577/904/63 571/897/59 570/888/56 +f 568/908/57 576/909/65 569/903/60 +f 586/910/70 573/905/64 579/902/62 +f 584/911/67 578/912/35 577/904/63 +f 582/913/68 576/909/65 575/914/69 +f 578/912/35 586/910/70 579/902/62 +f 576/909/65 584/911/67 577/904/63 +f 580/915/66 574/916/72 573/905/64 +f 566/906/58 574/916/72 567/917/48 +f 574/916/72 581/918/73 567/917/48 +f 568/908/57 567/919/48 575/914/69 +f 575/914/69 567/919/48 582/913/68 +f 602/920/74 587/921/4 594/922/14 +f 600/923/75 593/924/6 592/925/12 +f 598/926/76 591/927/3 590/928/10 +f 588/929/8 597/930/25 589/931/1 +f 601/932/78 594/922/14 593/924/6 +f 599/933/79 592/925/12 591/927/3 +f 597/934/25 590/928/10 589/935/1 +f 595/936/80 588/929/8 587/921/4 +f 608/937/17 602/920/74 601/932/78 +f 606/938/89 600/923/75 599/939/79 +f 595/940/80 604/941/83 596/942/77 +f 609/943/81 595/940/80 602/920/74 +f 607/944/82 601/932/78 600/923/75 +f 605/945/84 599/939/79 598/946/76 +f 616/947/90 603/948/86 609/943/81 +f 607/944/82 615/949/93 608/937/17 +f 612/950/88 606/938/89 605/945/84 +f 615/949/93 609/943/81 608/937/17 +f 606/938/89 614/951/87 607/944/82 +f 610/952/85 604/941/83 603/948/86 +f 596/942/77 604/941/83 597/953/25 +f 604/941/83 611/954/92 597/953/25 +f 598/946/76 597/955/25 605/945/84 +f 605/945/84 597/955/25 612/950/88 +f 581/956/73 597/957/25 567/958/48 +f 597/959/25 582/960/68 567/961/48 +f 582/960/68 610/962/85 583/963/71 +f 583/963/71 616/947/90 584/911/67 +f 584/911/67 615/949/93 585/964/94 +f 585/964/94 614/951/87 586/910/70 +f 586/910/70 613/965/91 580/966/66 +f 580/966/66 612/967/88 581/956/73 +f 632/968/95 617/969/2 624/970/25 +f 630/971/96 623/972/1 622/973/35 +f 628/974/97 621/975/5 620/976/17 +f 626/977/98 619/978/6 618/979/48 +f 631/980/99 624/970/25 623/972/1 +f 629/981/100 622/973/35 621/975/5 +f 627/982/14 620/976/17 619/983/6 +f 625/984/101 618/979/48 617/969/2 +f 631/980/99 639/985/102 632/968/95 +f 629/986/100 637/987/103 630/971/96 +f 633/988/104 626/989/98 625/990/101 +f 639/985/102 625/990/101 632/968/95 +f 630/971/96 638/991/10 631/980/99 +f 628/992/97 636/993/105 629/986/100 +f 639/985/102 640/994/106 633/988/104 +f 644/995/107 638/991/10 637/987/103 +f 635/996/108 643/997/109 636/993/105 +f 638/991/10 646/998/110 639/985/102 +f 643/997/109 637/987/103 636/993/105 +f 633/988/104 641/999/111 634/1000/112 +f 626/989/98 634/1000/112 627/1001/14 +f 634/1000/112 641/999/111 627/1001/14 +f 628/992/97 627/1002/14 635/996/108 +f 635/996/108 627/1002/14 642/1003/113 +f 662/1004/114 647/1005/5 654/1006/17 +f 660/1007/115 653/1008/6 652/1009/48 +f 658/1010/116 651/1011/2 650/1012/25 +f 648/1013/35 657/1014/8 649/1015/1 +f 653/1008/6 662/1004/114 654/1006/17 +f 659/1016/117 652/1009/48 651/1011/2 +f 657/1017/8 650/1012/25 649/1018/1 +f 647/1005/5 656/1019/118 648/1013/35 +f 661/1020/119 669/1021/120 662/1004/114 +f 666/1022/121 660/1007/115 659/1023/117 +f 663/1024/122 656/1025/118 655/1026/123 +f 669/1021/120 655/1026/123 662/1004/114 +f 667/1027/124 661/1020/119 660/1007/115 +f 665/1028/125 659/1023/117 658/1029/116 +f 669/1021/120 670/1030/126 663/1024/122 +f 674/1031/127 668/1032/12 667/1027/124 +f 672/1033/128 666/1022/121 665/1028/125 +f 668/1032/12 676/1034/129 669/1021/120 +f 673/1035/130 667/1027/124 666/1022/121 +f 670/1030/126 664/1036/131 663/1024/122 +f 656/1025/118 664/1036/131 657/1037/8 +f 664/1036/131 671/1038/132 657/1037/8 +f 658/1029/116 657/1039/8 665/1028/125 +f 665/1028/125 657/1039/8 672/1033/128 +f 641/1040/111 657/1041/8 627/1042/14 +f 657/1043/8 642/1044/113 627/1045/14 +f 642/1044/113 670/1046/126 643/1047/109 +f 643/1047/109 676/1034/129 644/995/107 +f 644/995/107 675/1048/133 645/1049/134 +f 645/1049/134 674/1031/127 646/998/110 +f 646/998/110 673/1050/130 640/1051/106 +f 640/1051/106 672/1052/128 641/1040/111 +f 692/1053/95 677/1054/2 684/1055/25 +f 690/1056/96 683/1057/1 682/1058/35 +f 688/1059/97 681/1060/5 680/1061/17 +f 686/1062/98 679/1063/6 678/1064/48 +f 691/1065/99 684/1055/25 683/1057/1 +f 689/1066/100 682/1058/35 681/1060/5 +f 687/1067/14 680/1061/17 679/1068/6 +f 685/1069/101 678/1064/48 677/1054/2 +f 691/1065/99 699/1070/102 692/1053/95 +f 689/1071/100 697/1072/103 690/1056/96 +f 693/1073/104 686/1074/98 685/1075/101 +f 699/1070/102 685/1075/101 692/1053/95 +f 697/1072/103 691/1065/99 690/1056/96 +f 688/1076/97 696/1077/105 689/1071/100 +f 699/1070/102 700/1078/106 693/1073/104 +f 704/1079/107 698/1080/10 697/1072/103 +f 702/1081/113 696/1077/105 695/1082/108 +f 698/1080/10 706/1083/110 699/1070/102 +f 703/1084/109 697/1072/103 696/1077/105 +f 693/1073/104 701/1085/111 694/1086/112 +f 686/1074/98 694/1086/112 687/1087/14 +f 694/1086/112 701/1085/111 687/1087/14 +f 688/1076/97 687/1088/14 695/1082/108 +f 695/1082/108 687/1088/14 702/1081/113 +f 722/1089/114 707/1090/5 714/1091/17 +f 720/1092/115 713/1093/6 712/1094/48 +f 718/1095/116 711/1096/2 710/1097/25 +f 708/1098/35 717/1099/8 709/1100/1 +f 721/1101/119 714/1091/17 713/1093/6 +f 719/1102/117 712/1094/48 711/1096/2 +f 717/1103/8 710/1097/25 709/1104/1 +f 715/1105/123 708/1098/35 707/1090/5 +f 721/1101/119 729/1106/120 722/1089/114 +f 719/1107/117 727/1108/124 720/1092/115 +f 723/1109/122 716/1110/118 715/1111/123 +f 729/1106/120 715/1111/123 722/1089/114 +f 727/1108/124 721/1101/119 720/1092/115 +f 725/1112/125 719/1107/117 718/1113/116 +f 729/1106/120 730/1114/126 723/1109/122 +f 734/1115/127 728/1116/12 727/1108/124 +f 732/1117/128 726/1118/121 725/1112/125 +f 728/1116/12 736/1119/129 729/1106/120 +f 733/1120/130 727/1108/124 726/1118/121 +f 730/1114/126 724/1121/131 723/1109/122 +f 716/1110/118 724/1121/131 717/1122/8 +f 724/1121/131 731/1123/132 717/1122/8 +f 718/1113/116 717/1124/8 725/1112/125 +f 725/1112/125 717/1124/8 732/1117/128 +f 701/1125/111 717/1126/8 687/1127/14 +f 717/1128/8 702/1129/113 687/1130/14 +f 702/1129/113 730/1131/126 703/1132/109 +f 703/1132/109 736/1119/129 704/1079/107 +f 704/1079/107 735/1133/133 705/1134/134 +f 705/1134/134 734/1115/127 706/1083/110 +f 706/1083/110 733/1135/130 700/1136/106 +f 700/1136/106 732/1137/128 701/1125/111 +f 752/1138/95 737/1139/2 744/1140/25 +f 750/1141/96 743/1142/1 742/1143/35 +f 748/1144/97 741/1145/5 740/1146/17 +f 746/1147/98 739/1148/6 738/1149/48 +f 751/1150/99 744/1140/25 743/1142/1 +f 749/1151/100 742/1143/35 741/1145/5 +f 747/1152/14 740/1146/17 739/1153/6 +f 745/1154/101 738/1149/48 737/1139/2 +f 751/1150/99 759/1155/102 752/1138/95 +f 749/1156/100 757/1157/103 750/1141/96 +f 753/1158/104 746/1159/98 745/1160/101 +f 759/1155/102 745/1160/101 752/1138/95 +f 757/1157/103 751/1150/99 750/1141/96 +f 748/1161/97 756/1162/105 749/1156/100 +f 759/1155/102 760/1163/106 753/1158/104 +f 764/1164/107 758/1165/10 757/1157/103 +f 762/1166/113 756/1162/105 755/1167/108 +f 758/1165/10 766/1168/110 759/1155/102 +f 763/1169/109 757/1157/103 756/1162/105 +f 753/1158/104 761/1170/111 754/1171/112 +f 746/1159/98 754/1171/112 747/1172/14 +f 754/1171/112 761/1170/111 747/1172/14 +f 748/1161/97 747/1173/14 755/1167/108 +f 755/1167/108 747/1173/14 762/1166/113 +f 782/1174/114 767/1175/5 774/1176/17 +f 780/1177/115 773/1178/6 772/1179/48 +f 778/1180/116 771/1181/2 770/1182/25 +f 776/1183/118 769/1184/1 768/1185/35 +f 781/1186/119 774/1176/17 773/1178/6 +f 779/1187/117 772/1179/48 771/1181/2 +f 777/1188/8 770/1182/25 769/1189/1 +f 775/1190/123 768/1185/35 767/1175/5 +f 781/1186/119 789/1191/120 782/1174/114 +f 779/1192/117 787/1193/124 780/1177/115 +f 775/1194/123 784/1195/131 776/1196/118 +f 789/1191/120 775/1194/123 782/1174/114 +f 787/1193/124 781/1186/119 780/1177/115 +f 785/1197/125 779/1192/117 778/1198/116 +f 789/1191/120 790/1199/126 783/1200/122 +f 794/1201/127 788/1202/12 787/1193/124 +f 792/1203/128 786/1204/121 785/1197/125 +f 788/1202/12 796/1205/129 789/1191/120 +f 793/1206/130 787/1193/124 786/1204/121 +f 783/1200/122 791/1207/132 784/1195/131 +f 776/1196/118 784/1195/131 777/1208/8 +f 784/1195/131 791/1207/132 777/1208/8 +f 778/1198/116 777/1209/8 785/1197/125 +f 785/1197/125 777/1209/8 792/1203/128 +f 761/1210/111 777/1211/8 747/1212/14 +f 777/1213/8 762/1214/113 747/1215/14 +f 762/1214/113 790/1216/126 763/1217/109 +f 763/1217/109 796/1205/129 764/1164/107 +f 764/1164/107 795/1218/133 765/1219/134 +f 766/1168/110 795/1218/133 794/1201/127 +f 766/1168/110 793/1220/130 760/1221/106 +f 760/1221/106 792/1222/128 761/1210/111 +f 812/1223/95 797/1224/2 804/1225/25 +f 810/1226/96 803/1227/1 802/1228/35 +f 808/1229/97 801/1230/5 800/1231/17 +f 806/1232/98 799/1233/6 798/1234/48 +f 811/1235/99 804/1225/25 803/1227/1 +f 809/1236/100 802/1228/35 801/1230/5 +f 807/1237/14 800/1231/17 799/1238/6 +f 805/1239/101 798/1234/48 797/1224/2 +f 811/1235/99 819/1240/102 812/1223/95 +f 809/1241/100 817/1242/103 810/1226/96 +f 813/1243/104 806/1244/98 805/1245/101 +f 819/1240/102 805/1245/101 812/1223/95 +f 817/1242/103 811/1235/99 810/1226/96 +f 808/1246/97 816/1247/105 809/1241/100 +f 819/1240/102 820/1248/106 813/1243/104 +f 824/1249/107 818/1250/10 817/1242/103 +f 822/1251/113 816/1247/105 815/1252/108 +f 818/1250/10 826/1253/110 819/1240/102 +f 823/1254/109 817/1242/103 816/1247/105 +f 813/1243/104 821/1255/111 814/1256/112 +f 806/1244/98 814/1256/112 807/1257/14 +f 814/1256/112 821/1255/111 807/1257/14 +f 808/1246/97 807/1258/14 815/1252/108 +f 815/1252/108 807/1258/14 822/1251/113 +f 842/1259/114 827/1260/5 834/1261/17 +f 840/1262/115 833/1263/6 832/1264/48 +f 838/1265/116 831/1266/2 830/1267/25 +f 828/1268/35 837/1269/8 829/1270/1 +f 841/1271/119 834/1261/17 833/1263/6 +f 839/1272/117 832/1264/48 831/1266/2 +f 837/1273/8 830/1267/25 829/1274/1 +f 835/1275/123 828/1268/35 827/1260/5 +f 841/1271/119 849/1276/120 842/1259/114 +f 839/1277/117 847/1278/124 840/1262/115 +f 835/1279/123 844/1280/131 836/1281/118 +f 849/1276/120 835/1279/123 842/1259/114 +f 847/1278/124 841/1271/119 840/1262/115 +f 845/1282/125 839/1277/117 838/1283/116 +f 849/1276/120 850/1284/126 843/1285/122 +f 854/1286/127 848/1287/12 847/1278/124 +f 845/1282/125 853/1288/130 846/1289/121 +f 848/1287/12 856/1290/129 849/1276/120 +f 853/1288/130 847/1278/124 846/1289/121 +f 850/1284/126 844/1280/131 843/1285/122 +f 836/1281/118 844/1280/131 837/1291/8 +f 844/1280/131 851/1292/132 837/1291/8 +f 838/1283/116 837/1293/8 845/1282/125 +f 845/1282/125 837/1293/8 852/1294/128 +f 821/1295/111 837/1296/8 807/1297/14 +f 837/1298/8 822/1299/113 807/1300/14 +f 822/1299/113 850/1301/126 823/1302/109 +f 823/1302/109 856/1290/129 824/1249/107 +f 824/1249/107 855/1303/133 825/1304/134 +f 826/1253/110 855/1303/133 854/1286/127 +f 826/1253/110 853/1305/130 820/1306/106 +f 820/1306/106 852/1307/128 821/1295/111 +f 872/1308/135 857/1309/5 864/1310/35 +f 870/1311/136 863/1312/1 862/1313/25 +f 868/1314/137 861/1315/2 860/1316/48 +f 866/1317/138 859/1318/6 858/1319/17 +f 871/1320/139 864/1310/35 863/1312/1 +f 869/1321/140 862/1313/25 861/1315/2 +f 867/1322/12 860/1316/48 859/1323/6 +f 865/1324/141 858/1319/17 857/1309/5 +f 871/1320/139 879/1325/142 872/1308/135 +f 869/1326/140 877/1327/143 870/1311/136 +f 873/1328/144 866/1329/138 865/1330/141 +f 879/1325/142 865/1330/141 872/1308/135 +f 877/1327/143 871/1320/139 870/1311/136 +f 875/1331/145 869/1326/140 868/1332/137 +f 879/1325/142 880/1333/146 873/1328/144 +f 884/1334/147 878/1335/8 877/1327/143 +f 882/1336/148 876/1337/149 875/1331/145 +f 878/1335/8 886/1338/150 879/1325/142 +f 883/1339/151 877/1327/143 876/1337/149 +f 873/1328/144 881/1340/152 874/1341/153 +f 866/1329/138 874/1341/153 867/1342/12 +f 874/1341/153 881/1340/152 867/1342/12 +f 868/1332/137 867/1343/12 875/1331/145 +f 875/1331/145 867/1343/12 882/1336/148 +f 902/1344/154 887/1345/2 894/1346/48 +f 900/1347/155 893/1348/6 892/1349/17 +f 898/1350/156 891/1351/5 890/1352/35 +f 896/1353/157 889/1354/1 888/1355/25 +f 901/1356/158 894/1346/48 893/1348/6 +f 899/1357/159 892/1349/17 891/1351/5 +f 897/1358/10 890/1352/35 889/1359/1 +f 887/1345/2 896/1353/157 888/1355/25 +f 901/1356/158 909/1360/160 902/1344/154 +f 899/1361/159 907/1362/161 900/1347/155 +f 895/1363/162 904/1364/163 896/1365/157 +f 909/1360/160 895/1363/162 902/1344/154 +f 907/1362/161 901/1356/158 900/1347/155 +f 898/1366/156 906/1367/164 899/1361/159 +f 909/1360/160 910/1368/165 903/1369/166 +f 914/1370/167 908/1371/14 907/1362/161 +f 912/1372/168 906/1367/164 905/1373/169 +f 908/1371/14 916/1374/170 909/1360/160 +f 913/1375/171 907/1362/161 906/1367/164 +f 910/1368/165 904/1364/163 903/1369/166 +f 896/1365/157 904/1364/163 897/1376/10 +f 904/1364/163 911/1377/172 897/1376/10 +f 898/1366/156 897/1378/10 905/1373/169 +f 905/1373/169 897/1378/10 912/1372/168 +f 881/1379/152 897/1380/10 867/1381/12 +f 897/1382/10 882/1383/148 867/1384/12 +f 882/1383/148 910/1385/165 883/1386/151 +f 883/1386/151 916/1374/170 884/1334/147 +f 884/1334/147 915/1387/173 885/1388/174 +f 885/1388/174 914/1370/167 886/1338/150 +f 880/1389/146 914/1370/167 913/1390/171 +f 880/1389/146 912/1391/168 881/1379/152 +f 932/1392/135 917/1393/5 924/1394/35 +f 930/1395/136 923/1396/1 922/1397/25 +f 928/1398/137 921/1399/2 920/1400/48 +f 926/1401/138 919/1402/6 918/1403/17 +f 931/1404/139 924/1394/35 923/1396/1 +f 929/1405/140 922/1397/25 921/1399/2 +f 927/1406/12 920/1400/48 919/1407/6 +f 925/1408/141 918/1403/17 917/1393/5 +f 931/1404/139 939/1409/142 932/1392/135 +f 929/1410/140 937/1411/143 930/1395/136 +f 933/1412/144 926/1413/138 925/1414/141 +f 939/1409/142 925/1414/141 932/1392/135 +f 937/1411/143 931/1404/139 930/1395/136 +f 928/1415/137 936/1416/149 929/1410/140 +f 939/1409/142 940/1417/146 933/1412/144 +f 944/1418/147 938/1419/8 937/1411/143 +f 942/1420/148 936/1416/149 935/1421/145 +f 938/1419/8 946/1422/150 939/1409/142 +f 943/1423/151 937/1411/143 936/1416/149 +f 933/1412/144 941/1424/152 934/1425/153 +f 926/1413/138 934/1425/153 927/1426/12 +f 934/1425/153 941/1424/152 927/1426/12 +f 928/1415/137 927/1427/12 935/1421/145 +f 935/1421/145 927/1427/12 942/1420/148 +f 962/1428/154 947/1429/2 954/1430/48 +f 960/1431/155 953/1432/6 952/1433/17 +f 958/1434/156 951/1435/5 950/1436/35 +f 948/1437/25 957/1438/10 949/1439/1 +f 961/1440/158 954/1430/48 953/1432/6 +f 959/1441/159 952/1433/17 951/1435/5 +f 957/1442/10 950/1436/35 949/1443/1 +f 955/1444/162 948/1437/25 947/1429/2 +f 961/1440/158 969/1445/160 962/1428/154 +f 966/1446/164 960/1431/155 959/1447/159 +f 955/1448/162 964/1449/163 956/1450/157 +f 962/1428/154 963/1451/166 955/1448/162 +f 967/1452/161 961/1440/158 960/1431/155 +f 965/1453/169 959/1447/159 958/1454/156 +f 969/1445/160 970/1455/165 963/1451/166 +f 974/1456/167 968/1457/14 967/1452/161 +f 972/1458/168 966/1446/164 965/1453/169 +f 968/1457/14 976/1459/170 969/1445/160 +f 973/1460/171 967/1452/161 966/1446/164 +f 970/1455/165 964/1449/163 963/1451/166 +f 956/1450/157 964/1449/163 957/1461/10 +f 964/1449/163 971/1462/172 957/1461/10 +f 958/1454/156 957/1463/10 965/1453/169 +f 965/1453/169 957/1463/10 972/1458/168 +f 941/1464/152 957/1465/10 927/1466/12 +f 957/1467/10 942/1468/148 927/1469/12 +f 942/1468/148 970/1470/165 943/1471/151 +f 943/1471/151 976/1459/170 944/1418/147 +f 944/1418/147 975/1472/173 945/1473/174 +f 945/1473/174 974/1456/167 946/1422/150 +f 946/1422/150 973/1474/171 940/1475/146 +f 940/1475/146 972/1476/168 941/1464/152 +f 984/1477/35 985/1478/141 977/1479/5 +f 990/1480/136 983/1481/1 982/1482/25 +f 988/1483/137 981/1484/2 980/1485/48 +f 986/1486/138 979/1487/6 978/1488/17 +f 991/1489/139 984/1477/35 983/1481/1 +f 989/1490/140 982/1482/25 981/1484/2 +f 987/1491/12 980/1485/48 979/1492/6 +f 985/1478/141 978/1488/17 977/1479/5 +f 991/1489/139 999/1493/142 992/1494/135 +f 989/1495/140 997/1496/143 990/1480/136 +f 993/1497/144 986/1498/138 985/1499/141 +f 999/1493/142 985/1499/141 992/1494/135 +f 997/1496/143 991/1489/139 990/1480/136 +f 988/1500/137 996/1501/149 989/1495/140 +f 1006/1502/150 993/1497/144 999/1493/142 +f 1004/1503/147 998/1504/8 997/1496/143 +f 1002/1505/148 996/1501/149 995/1506/145 +f 998/1504/8 1006/1502/150 999/1493/142 +f 1003/1507/151 997/1496/143 996/1501/149 +f 993/1497/144 1001/1508/152 994/1509/153 +f 986/1498/138 994/1509/153 987/1510/12 +f 994/1509/153 1001/1508/152 987/1510/12 +f 988/1500/137 987/1511/12 995/1506/145 +f 995/1506/145 987/1511/12 1002/1505/148 +f 1022/1512/154 1007/1513/2 1014/1514/48 +f 1020/1515/155 1013/1516/6 1012/1517/17 +f 1018/1518/156 1011/1519/5 1010/1520/35 +f 1016/1521/157 1009/1522/1 1008/1523/25 +f 1013/1516/6 1022/1512/154 1014/1514/48 +f 1019/1524/159 1012/1517/17 1011/1519/5 +f 1009/1525/1 1018/1518/156 1010/1520/35 +f 1015/1526/162 1008/1523/25 1007/1513/2 +f 1021/1527/158 1029/1528/160 1022/1512/154 +f 1019/1529/159 1027/1530/161 1020/1515/155 +f 1015/1531/162 1024/1532/163 1016/1533/157 +f 1029/1528/160 1015/1531/162 1022/1512/154 +f 1027/1530/161 1021/1527/158 1020/1515/155 +f 1025/1534/169 1019/1529/159 1018/1535/156 +f 1036/1536/170 1023/1537/166 1029/1528/160 +f 1027/1530/161 1035/1538/173 1028/1539/14 +f 1025/1534/169 1033/1540/171 1026/1541/164 +f 1028/1539/14 1036/1536/170 1029/1528/160 +f 1033/1540/171 1027/1530/161 1026/1541/164 +f 1023/1537/166 1031/1542/172 1024/1532/163 +f 1016/1533/157 1024/1532/163 1017/1543/10 +f 1024/1532/163 1031/1542/172 1017/1543/10 +f 1018/1535/156 1017/1544/10 1025/1534/169 +f 1025/1534/169 1017/1544/10 1032/1545/168 +f 1001/1546/152 1017/1547/10 987/1548/12 +f 1017/1549/10 1002/1550/148 987/1551/12 +f 1002/1550/148 1030/1552/165 1003/1553/151 +f 1003/1553/151 1036/1536/170 1004/1503/147 +f 1004/1503/147 1035/1538/173 1005/1554/174 +f 1006/1502/150 1035/1538/173 1034/1555/167 +f 1006/1502/150 1033/1556/171 1000/1557/146 +f 1000/1557/146 1032/1558/168 1001/1546/152 +f 1052/1559/135 1037/1560/5 1044/1561/35 +f 1042/1562/25 1051/1563/139 1043/1564/1 +f 1048/1565/137 1041/1566/2 1040/1567/48 +f 1038/1568/17 1047/1569/12 1039/1570/6 +f 1051/1563/139 1044/1561/35 1043/1564/1 +f 1049/1571/140 1042/1562/25 1041/1566/2 +f 1047/1572/12 1040/1567/48 1039/1573/6 +f 1045/1574/141 1038/1568/17 1037/1560/5 +f 1051/1563/139 1059/1575/142 1052/1559/135 +f 1049/1576/140 1057/1577/143 1050/1578/136 +f 1053/1579/144 1046/1580/138 1045/1581/141 +f 1052/1559/135 1053/1579/144 1045/1581/141 +f 1050/1578/136 1058/1582/8 1051/1563/139 +f 1048/1583/137 1056/1584/149 1049/1576/140 +f 1059/1575/142 1060/1585/146 1053/1579/144 +f 1064/1586/147 1058/1582/8 1057/1577/143 +f 1062/1587/148 1056/1584/149 1055/1588/145 +f 1058/1582/8 1066/1589/150 1059/1575/142 +f 1063/1590/151 1057/1577/143 1056/1584/149 +f 1060/1585/146 1054/1591/153 1053/1579/144 +f 1046/1580/138 1054/1591/153 1047/1592/12 +f 1054/1591/153 1061/1593/152 1047/1592/12 +f 1048/1583/137 1047/1594/12 1055/1588/145 +f 1055/1588/145 1047/1594/12 1062/1587/148 +f 1082/1595/154 1067/1596/2 1074/1597/48 +f 1080/1598/155 1073/1599/6 1072/1600/17 +f 1078/1601/156 1071/1602/5 1070/1603/35 +f 1076/1604/157 1069/1605/1 1068/1606/25 +f 1081/1607/158 1074/1597/48 1073/1599/6 +f 1079/1608/159 1072/1600/17 1071/1602/5 +f 1069/1609/1 1078/1601/156 1070/1603/35 +f 1067/1596/2 1076/1604/157 1068/1606/25 +f 1081/1607/158 1089/1610/160 1082/1595/154 +f 1086/1611/164 1080/1598/155 1079/1612/159 +f 1075/1613/162 1084/1614/163 1076/1615/157 +f 1089/1610/160 1075/1613/162 1082/1595/154 +f 1087/1616/161 1081/1607/158 1080/1598/155 +f 1085/1617/169 1079/1612/159 1078/1618/156 +f 1089/1610/160 1090/1619/165 1083/1620/166 +f 1094/1621/167 1088/1622/14 1087/1616/161 +f 1092/1623/168 1086/1611/164 1085/1617/169 +f 1088/1622/14 1096/1624/170 1089/1610/160 +f 1086/1611/164 1094/1621/167 1087/1616/161 +f 1090/1619/165 1084/1614/163 1083/1620/166 +f 1076/1615/157 1084/1614/163 1077/1625/10 +f 1084/1614/163 1091/1626/172 1077/1625/10 +f 1078/1618/156 1077/1627/10 1085/1617/169 +f 1085/1617/169 1077/1627/10 1092/1623/168 +f 1061/1628/152 1077/1629/10 1047/1630/12 +f 1077/1631/10 1062/1632/148 1047/1633/12 +f 1062/1632/148 1090/1634/165 1063/1635/151 +f 1063/1635/151 1096/1624/170 1064/1586/147 +f 1064/1586/147 1095/1636/173 1065/1637/174 +f 1065/1637/174 1094/1621/167 1066/1589/150 +f 1066/1589/150 1093/1638/171 1060/1639/146 +f 1060/1639/146 1092/1640/168 1061/1628/152 +f 152/293/7 145/309/18 137/294/4 +f 150/296/9 151/305/15 143/297/1 +f 148/299/11 149/306/16 141/300/3 +f 146/302/13 147/1641/17 139/303/6 +f 151/305/15 152/293/7 144/295/8 +f 149/306/16 150/296/9 142/298/10 +f 147/307/17 148/299/11 140/301/12 +f 145/309/18 146/302/13 138/304/14 +f 151/305/15 158/320/25 159/310/19 +f 149/311/16 156/317/22 157/312/20 +f 153/313/21 154/326/31 146/314/13 +f 159/310/19 153/313/21 145/315/18 +f 157/312/20 158/320/25 151/305/15 +f 148/316/11 155/322/27 156/317/22 +f 159/310/19 166/323/28 160/318/23 +f 164/319/24 165/374/54 158/320/25 +f 162/321/26 163/324/29 156/317/22 +f 158/320/25 165/374/54 166/323/28 +f 163/324/29 164/319/24 157/312/20 +f 153/313/21 160/318/23 161/325/30 +f 182/329/32 175/344/37 167/330/3 +f 180/332/33 181/345/38 173/333/6 +f 178/335/34 179/341/36 171/336/4 +f 168/338/10 176/1642/42 177/339/35 +f 173/333/6 181/345/38 182/329/32 +f 179/341/36 180/332/33 172/334/14 +f 177/342/35 178/335/34 170/337/8 +f 175/344/37 176/1642/42 168/338/10 +f 181/345/38 188/358/48 189/346/39 +f 186/347/40 187/352/43 180/332/33 +f 175/349/37 183/356/46 184/350/41 +f 189/346/39 183/356/46 175/349/37 +f 187/352/43 188/358/48 181/345/38 +f 185/353/44 186/347/40 179/348/36 +f 189/346/39 196/360/50 190/355/45 +f 194/357/47 195/373/53 188/358/48 +f 192/359/49 193/361/51 186/347/40 +f 188/358/48 195/373/53 196/360/50 +f 193/361/51 194/357/47 187/352/43 +f 190/355/45 191/363/52 184/350/41 +f 161/365/30 192/377/49 177/366/35 +f 177/368/35 191/1643/52 162/369/26 +f 162/369/26 191/1643/52 190/371/45 +f 163/372/29 190/371/45 196/360/50 +f 164/319/24 196/360/50 195/373/53 +f 165/374/54 195/373/53 194/357/47 +f 166/323/28 194/357/47 193/375/51 +f 160/376/23 193/375/51 192/377/49 +f 212/378/7 205/394/18 197/379/4 +f 210/381/9 211/390/15 203/382/1 +f 208/384/11 209/391/16 201/385/3 +f 206/387/13 207/1644/17 199/388/6 +f 211/390/15 212/378/7 204/380/8 +f 209/391/16 210/381/9 202/383/10 +f 207/392/17 208/384/11 200/386/12 +f 205/394/18 206/387/13 198/389/14 +f 211/390/15 218/405/25 219/395/19 +f 209/396/16 216/402/22 217/397/20 +f 213/398/21 214/411/31 206/399/13 +f 219/395/19 213/398/21 205/400/18 +f 217/397/20 218/405/25 211/390/15 +f 208/401/11 215/407/27 216/402/22 +f 219/395/19 226/408/28 220/403/23 +f 224/404/24 225/459/54 218/405/25 +f 222/406/26 223/409/29 216/402/22 +f 218/405/25 225/459/54 226/408/28 +f 223/409/29 224/404/24 217/397/20 +f 213/398/21 220/403/23 221/410/30 +f 242/414/32 235/430/37 227/415/3 +f 240/417/33 241/426/38 233/418/6 +f 238/420/34 239/427/36 231/421/4 +f 228/423/10 236/1645/42 237/424/35 +f 241/426/38 242/414/32 234/416/12 +f 239/427/36 240/417/33 232/419/14 +f 237/428/35 238/420/34 230/422/8 +f 235/430/37 236/1645/42 228/423/10 +f 241/426/38 248/441/48 249/431/39 +f 239/432/36 246/443/40 247/433/43 +f 243/434/46 244/446/41 236/435/42 +f 249/431/39 243/434/46 235/436/37 +f 247/433/43 248/441/48 241/426/38 +f 245/437/44 246/443/40 239/432/36 +f 249/431/39 256/444/50 250/439/45 +f 254/440/47 255/458/53 248/441/48 +f 252/442/49 253/445/51 246/443/40 +f 248/441/48 255/458/53 256/444/50 +f 253/445/51 254/440/47 247/433/43 +f 250/439/45 251/448/52 244/446/41 +f 221/450/30 252/462/49 237/451/35 +f 237/453/35 251/1646/52 222/454/26 +f 222/454/26 251/1646/52 250/456/45 +f 223/457/29 250/456/45 256/444/50 +f 224/404/24 256/444/50 255/458/53 +f 225/459/54 255/458/53 254/440/47 +f 226/408/28 254/440/47 253/460/51 +f 220/461/23 253/460/51 252/462/49 +f 272/463/7 265/479/18 257/464/4 +f 270/466/9 271/475/15 263/467/1 +f 268/469/11 269/476/16 261/470/3 +f 266/472/13 267/1647/17 259/473/6 +f 271/475/15 272/463/7 264/465/8 +f 269/476/16 270/466/9 262/468/10 +f 267/477/17 268/469/11 260/471/12 +f 265/479/18 266/472/13 258/474/14 +f 271/475/15 278/490/25 279/480/19 +f 269/481/16 276/487/22 277/482/20 +f 273/483/21 274/496/31 266/484/13 +f 279/480/19 273/483/21 265/485/18 +f 277/482/20 278/490/25 271/475/15 +f 268/486/11 275/492/27 276/487/22 +f 279/480/19 286/493/28 280/488/23 +f 284/489/24 285/543/54 278/490/25 +f 282/491/26 283/494/29 276/487/22 +f 278/490/25 285/543/54 286/493/28 +f 283/494/29 284/489/24 277/482/20 +f 273/483/21 280/488/23 281/495/30 +f 302/499/32 295/1648/37 287/500/3 +f 300/502/33 301/511/38 293/503/6 +f 298/505/34 299/512/36 291/506/4 +f 296/508/42 297/1649/35 289/509/1 +f 301/511/38 302/499/32 294/501/12 +f 299/512/36 300/502/33 292/504/14 +f 297/513/35 298/505/34 290/507/8 +f 287/500/3 295/1648/37 296/508/42 +f 301/511/38 308/526/48 309/515/39 +f 306/516/40 307/521/43 300/502/33 +f 303/518/46 304/530/41 296/519/42 +f 309/515/39 303/518/46 295/520/37 +f 307/521/43 308/526/48 301/511/38 +f 305/522/44 306/516/40 299/517/36 +f 309/515/39 316/528/50 310/524/45 +f 314/525/47 315/542/53 308/526/48 +f 312/527/49 313/529/51 306/516/40 +f 308/526/48 315/542/53 316/528/50 +f 313/529/51 314/525/47 307/521/43 +f 310/524/45 311/532/52 304/530/41 +f 281/534/30 312/546/49 297/535/35 +f 297/537/35 311/1650/52 282/538/26 +f 282/538/26 311/1650/52 310/540/45 +f 283/541/29 310/540/45 316/528/50 +f 284/489/24 316/528/50 315/542/53 +f 285/543/54 315/542/53 314/525/47 +f 286/493/28 314/525/47 313/544/51 +f 280/545/23 313/544/51 312/546/49 +f 332/547/7 325/563/18 317/548/4 +f 330/550/9 331/559/15 323/551/1 +f 328/553/11 329/560/16 321/554/3 +f 326/556/13 327/1651/17 319/557/6 +f 331/559/15 332/547/7 324/549/8 +f 329/560/16 330/550/9 322/552/10 +f 327/561/17 328/553/11 320/555/12 +f 325/563/18 326/556/13 318/558/14 +f 331/559/15 338/574/25 339/564/19 +f 329/565/16 336/571/22 337/566/20 +f 333/567/21 334/580/31 326/568/13 +f 339/564/19 333/567/21 325/569/18 +f 337/566/20 338/574/25 331/559/15 +f 328/570/11 335/576/27 336/571/22 +f 339/564/19 346/577/28 340/572/23 +f 344/573/24 345/628/54 338/574/25 +f 342/575/26 343/578/29 336/571/22 +f 338/574/25 345/628/54 346/577/28 +f 343/578/29 344/573/24 337/566/20 +f 333/567/21 340/572/23 341/579/30 +f 362/583/32 355/599/37 347/584/3 +f 360/586/33 361/595/38 353/587/6 +f 358/589/34 359/596/36 351/590/4 +f 348/592/10 356/1652/42 357/593/35 +f 361/595/38 362/583/32 354/585/12 +f 359/596/36 360/586/33 352/588/14 +f 357/597/35 358/589/34 350/591/8 +f 355/599/37 356/1652/42 348/592/10 +f 361/595/38 368/611/48 369/600/39 +f 359/601/36 366/613/40 367/602/43 +f 355/603/37 363/609/46 364/604/41 +f 369/600/39 363/609/46 355/603/37 +f 367/602/43 368/611/48 361/595/38 +f 365/606/44 366/613/40 359/601/36 +f 369/600/39 376/614/50 370/608/45 +f 374/610/47 375/627/53 368/611/48 +f 372/612/49 373/615/51 366/613/40 +f 368/611/48 375/627/53 376/614/50 +f 373/615/51 374/610/47 367/602/43 +f 370/608/45 371/617/52 364/604/41 +f 341/619/30 372/631/49 357/620/35 +f 357/622/35 371/1653/52 342/623/26 +f 342/623/26 371/1653/52 370/625/45 +f 343/626/29 370/625/45 376/614/50 +f 344/573/24 376/614/50 375/627/53 +f 345/628/54 375/627/53 374/610/47 +f 346/577/28 374/610/47 373/629/51 +f 340/630/23 373/629/51 372/631/49 +f 392/632/55 385/648/61 377/633/3 +f 390/635/56 391/644/59 383/636/1 +f 388/638/57 389/645/60 381/639/4 +f 386/641/58 387/1654/48 379/642/6 +f 391/644/59 392/632/55 384/634/10 +f 389/645/60 390/635/56 382/637/8 +f 387/646/48 388/638/57 380/640/14 +f 385/648/61 386/641/58 378/643/12 +f 391/644/59 398/659/35 399/649/62 +f 389/650/60 396/656/65 397/651/63 +f 393/652/64 394/664/72 386/653/58 +f 399/649/62 393/652/64 385/654/61 +f 397/651/63 398/659/35 391/644/59 +f 388/655/57 395/661/69 396/656/65 +f 399/649/62 406/662/70 400/657/66 +f 404/658/67 405/713/94 398/659/35 +f 402/660/68 403/663/71 396/656/65 +f 398/659/35 405/713/94 406/662/70 +f 403/663/71 404/658/67 397/651/63 +f 400/657/66 401/666/73 394/664/72 +f 422/668/74 415/684/80 407/669/4 +f 420/671/75 421/680/78 413/672/6 +f 418/674/76 419/681/79 411/675/3 +f 416/677/77 417/1655/25 409/678/1 +f 421/680/78 422/668/74 414/670/14 +f 419/681/79 420/671/75 412/673/12 +f 417/682/25 418/674/76 410/676/10 +f 415/684/80 416/677/77 408/679/8 +f 421/680/78 428/696/17 429/685/81 +f 419/686/79 426/698/89 427/687/82 +f 415/688/80 423/694/86 424/689/83 +f 429/685/81 423/694/86 415/688/80 +f 427/687/82 428/696/17 421/680/78 +f 425/691/84 426/698/89 419/686/79 +f 429/685/81 436/699/90 430/693/85 +f 434/695/87 435/712/93 428/696/17 +f 432/697/88 433/700/91 426/698/89 +f 428/696/17 435/712/93 436/699/90 +f 433/700/91 434/695/87 427/687/82 +f 430/693/85 431/702/92 424/689/83 +f 401/704/73 432/716/88 417/705/25 +f 417/707/25 431/1656/92 402/708/68 +f 402/708/68 431/1656/92 430/710/85 +f 403/711/71 430/710/85 436/699/90 +f 404/658/67 436/699/90 435/712/93 +f 405/713/94 435/712/93 434/695/87 +f 406/662/70 434/695/87 433/714/91 +f 400/715/66 433/714/91 432/716/88 +f 452/717/55 445/733/61 437/718/3 +f 450/720/56 451/729/59 443/721/1 +f 448/723/57 449/730/60 441/724/4 +f 446/726/58 447/1657/48 439/727/6 +f 451/729/59 452/717/55 444/719/10 +f 449/730/60 450/720/56 442/722/8 +f 447/731/48 448/723/57 440/725/14 +f 445/733/61 446/726/58 438/728/12 +f 451/729/59 458/744/35 459/734/62 +f 456/735/65 457/740/63 450/720/56 +f 453/737/64 454/748/72 446/738/58 +f 459/734/62 453/737/64 445/739/61 +f 457/740/63 458/744/35 451/729/59 +f 448/741/57 455/745/69 456/735/65 +f 459/734/62 466/747/70 460/742/66 +f 464/743/67 465/798/94 458/744/35 +f 455/745/69 462/752/68 463/746/71 +f 458/744/35 465/798/94 466/747/70 +f 463/746/71 464/743/67 457/740/63 +f 460/742/66 461/750/73 454/748/72 +f 482/753/74 475/1658/80 467/754/4 +f 480/756/75 481/765/78 473/757/6 +f 478/759/76 479/766/79 471/760/3 +f 468/762/8 476/769/77 477/763/25 +f 481/765/78 482/753/74 474/755/14 +f 479/766/79 480/756/75 472/758/12 +f 477/767/25 478/759/76 470/761/10 +f 467/754/4 475/1658/80 476/769/77 +f 481/765/78 488/781/17 489/770/81 +f 479/771/79 486/783/89 487/772/82 +f 475/773/80 483/776/86 484/774/83 +f 482/753/74 489/770/81 483/776/86 +f 487/772/82 488/781/17 481/765/78 +f 485/777/84 486/783/89 479/771/79 +f 489/770/81 496/784/90 490/779/85 +f 494/780/87 495/797/93 488/781/17 +f 492/782/88 493/785/91 486/783/89 +f 488/781/17 495/797/93 496/784/90 +f 493/785/91 494/780/87 487/772/82 +f 490/779/85 491/787/92 484/774/83 +f 461/789/73 492/801/88 477/790/25 +f 477/792/25 491/1659/92 462/793/68 +f 462/793/68 491/1659/92 490/795/85 +f 463/796/71 490/795/85 496/784/90 +f 464/743/67 496/784/90 495/797/93 +f 465/798/94 495/797/93 494/780/87 +f 466/747/70 494/780/87 493/799/91 +f 460/800/66 493/799/91 492/801/88 +f 512/802/55 505/818/61 497/803/3 +f 510/805/56 511/814/59 503/806/1 +f 508/808/57 509/815/60 501/809/4 +f 506/811/58 507/1660/48 499/812/6 +f 511/814/59 512/802/55 504/804/10 +f 509/815/60 510/805/56 502/807/8 +f 507/816/48 508/808/57 500/810/14 +f 505/818/61 506/811/58 498/813/12 +f 511/814/59 518/829/35 519/819/62 +f 509/820/60 516/826/65 517/821/63 +f 513/822/64 514/834/72 506/823/58 +f 519/819/62 513/822/64 505/824/61 +f 517/821/63 518/829/35 511/814/59 +f 508/825/57 515/831/69 516/826/65 +f 526/827/70 520/1661/66 513/822/64 +f 524/828/67 525/881/94 518/829/35 +f 522/830/68 523/832/71 516/826/65 +f 518/829/35 525/881/94 526/827/70 +f 523/832/71 524/828/67 517/821/63 +f 513/822/64 520/1661/66 521/833/73 +f 542/837/74 535/853/80 527/838/4 +f 540/840/75 541/849/78 533/841/6 +f 538/843/76 539/850/79 531/844/3 +f 536/846/77 537/1662/25 529/847/1 +f 541/849/78 542/837/74 534/839/14 +f 539/850/79 540/840/75 532/842/12 +f 537/851/25 538/843/76 530/845/10 +f 535/853/80 536/846/77 528/848/8 +f 541/849/78 548/864/17 549/854/81 +f 539/855/79 546/866/89 547/856/82 +f 543/857/86 544/868/83 536/858/77 +f 549/854/81 543/857/86 535/859/80 +f 547/856/82 548/864/17 541/849/78 +f 545/860/84 546/866/89 539/855/79 +f 549/854/81 556/867/90 550/862/85 +f 554/863/87 555/880/93 548/864/17 +f 552/865/88 553/1663/91 546/866/89 +f 548/864/17 555/880/93 556/867/90 +f 546/866/89 553/1663/91 554/863/87 +f 550/862/85 551/870/92 544/868/83 +f 521/872/73 552/884/88 537/873/25 +f 537/875/25 551/1664/92 522/876/68 +f 522/876/68 551/1664/92 550/878/85 +f 523/879/71 550/878/85 556/867/90 +f 524/828/67 556/867/90 555/880/93 +f 525/881/94 555/880/93 554/863/87 +f 526/827/70 554/863/87 553/882/91 +f 520/883/66 553/882/91 552/884/88 +f 572/885/55 565/901/61 557/886/3 +f 570/888/56 571/897/59 563/889/1 +f 568/891/57 569/898/60 561/892/4 +f 566/894/58 567/1665/48 559/895/6 +f 571/897/59 572/885/55 564/887/10 +f 569/898/60 570/888/56 562/890/8 +f 567/899/48 568/891/57 560/893/14 +f 565/901/61 566/894/58 558/896/12 +f 571/897/59 578/912/35 579/902/62 +f 569/903/60 576/909/65 577/904/63 +f 573/905/64 574/916/72 566/906/58 +f 579/902/62 573/905/64 565/907/61 +f 577/904/63 578/912/35 571/897/59 +f 568/908/57 575/914/69 576/909/65 +f 586/910/70 580/915/66 573/905/64 +f 584/911/67 585/964/94 578/912/35 +f 582/913/68 583/1666/71 576/909/65 +f 578/912/35 585/964/94 586/910/70 +f 576/909/65 583/1666/71 584/911/67 +f 580/915/66 581/918/73 574/916/72 +f 602/920/74 595/936/80 587/921/4 +f 600/923/75 601/932/78 593/924/6 +f 598/926/76 599/933/79 591/927/3 +f 588/929/8 596/1667/77 597/930/25 +f 601/932/78 602/920/74 594/922/14 +f 599/933/79 600/923/75 592/925/12 +f 597/934/25 598/926/76 590/928/10 +f 595/936/80 596/1667/77 588/929/8 +f 608/937/17 609/943/81 602/920/74 +f 606/938/89 607/944/82 600/923/75 +f 595/940/80 603/948/86 604/941/83 +f 609/943/81 603/948/86 595/940/80 +f 607/944/82 608/937/17 601/932/78 +f 605/945/84 606/938/89 599/939/79 +f 616/947/90 610/952/85 603/948/86 +f 607/944/82 614/951/87 615/949/93 +f 612/950/88 613/1668/91 606/938/89 +f 615/949/93 616/947/90 609/943/81 +f 606/938/89 613/1668/91 614/951/87 +f 610/952/85 611/954/92 604/941/83 +f 581/956/73 612/967/88 597/957/25 +f 597/959/25 611/1669/92 582/960/68 +f 582/960/68 611/1669/92 610/962/85 +f 583/963/71 610/962/85 616/947/90 +f 584/911/67 616/947/90 615/949/93 +f 585/964/94 615/949/93 614/951/87 +f 586/910/70 614/951/87 613/965/91 +f 580/966/66 613/965/91 612/967/88 +f 632/968/95 625/984/101 617/969/2 +f 630/971/96 631/980/99 623/972/1 +f 628/974/97 629/981/100 621/975/5 +f 626/977/98 627/1670/14 619/978/6 +f 631/980/99 632/968/95 624/970/25 +f 629/981/100 630/971/96 622/973/35 +f 627/982/14 628/974/97 620/976/17 +f 625/984/101 626/977/98 618/979/48 +f 631/980/99 638/991/10 639/985/102 +f 629/986/100 636/993/105 637/987/103 +f 633/988/104 634/1000/112 626/989/98 +f 639/985/102 633/988/104 625/990/101 +f 630/971/96 637/987/103 638/991/10 +f 628/992/97 635/996/108 636/993/105 +f 639/985/102 646/998/110 640/994/106 +f 644/995/107 645/1049/134 638/991/10 +f 635/996/108 642/1003/113 643/997/109 +f 638/991/10 645/1049/134 646/998/110 +f 643/997/109 644/995/107 637/987/103 +f 633/988/104 640/994/106 641/999/111 +f 662/1004/114 655/1671/123 647/1005/5 +f 660/1007/115 661/1020/119 653/1008/6 +f 658/1010/116 659/1016/117 651/1011/2 +f 648/1013/35 656/1019/118 657/1014/8 +f 653/1008/6 661/1020/119 662/1004/114 +f 659/1016/117 660/1007/115 652/1009/48 +f 657/1017/8 658/1010/116 650/1012/25 +f 647/1005/5 655/1671/123 656/1019/118 +f 661/1020/119 668/1032/12 669/1021/120 +f 666/1022/121 667/1027/124 660/1007/115 +f 663/1024/122 664/1036/131 656/1025/118 +f 669/1021/120 663/1024/122 655/1026/123 +f 667/1027/124 668/1032/12 661/1020/119 +f 665/1028/125 666/1022/121 659/1023/117 +f 669/1021/120 676/1034/129 670/1030/126 +f 674/1031/127 675/1048/133 668/1032/12 +f 672/1033/128 673/1035/130 666/1022/121 +f 668/1032/12 675/1048/133 676/1034/129 +f 673/1035/130 674/1031/127 667/1027/124 +f 670/1030/126 671/1038/132 664/1036/131 +f 641/1040/111 672/1052/128 657/1041/8 +f 657/1043/8 671/1672/132 642/1044/113 +f 642/1044/113 671/1672/132 670/1046/126 +f 643/1047/109 670/1046/126 676/1034/129 +f 644/995/107 676/1034/129 675/1048/133 +f 645/1049/134 675/1048/133 674/1031/127 +f 646/998/110 674/1031/127 673/1050/130 +f 640/1051/106 673/1050/130 672/1052/128 +f 692/1053/95 685/1069/101 677/1054/2 +f 690/1056/96 691/1065/99 683/1057/1 +f 688/1059/97 689/1066/100 681/1060/5 +f 686/1062/98 687/1673/14 679/1063/6 +f 691/1065/99 692/1053/95 684/1055/25 +f 689/1066/100 690/1056/96 682/1058/35 +f 687/1067/14 688/1059/97 680/1061/17 +f 685/1069/101 686/1062/98 678/1064/48 +f 691/1065/99 698/1080/10 699/1070/102 +f 689/1071/100 696/1077/105 697/1072/103 +f 693/1073/104 694/1086/112 686/1074/98 +f 699/1070/102 693/1073/104 685/1075/101 +f 697/1072/103 698/1080/10 691/1065/99 +f 688/1076/97 695/1082/108 696/1077/105 +f 699/1070/102 706/1083/110 700/1078/106 +f 704/1079/107 705/1134/134 698/1080/10 +f 702/1081/113 703/1084/109 696/1077/105 +f 698/1080/10 705/1134/134 706/1083/110 +f 703/1084/109 704/1079/107 697/1072/103 +f 693/1073/104 700/1078/106 701/1085/111 +f 722/1089/114 715/1105/123 707/1090/5 +f 720/1092/115 721/1101/119 713/1093/6 +f 718/1095/116 719/1102/117 711/1096/2 +f 708/1098/35 716/1674/118 717/1099/8 +f 721/1101/119 722/1089/114 714/1091/17 +f 719/1102/117 720/1092/115 712/1094/48 +f 717/1103/8 718/1095/116 710/1097/25 +f 715/1105/123 716/1674/118 708/1098/35 +f 721/1101/119 728/1116/12 729/1106/120 +f 719/1107/117 726/1118/121 727/1108/124 +f 723/1109/122 724/1121/131 716/1110/118 +f 729/1106/120 723/1109/122 715/1111/123 +f 727/1108/124 728/1116/12 721/1101/119 +f 725/1112/125 726/1118/121 719/1107/117 +f 729/1106/120 736/1119/129 730/1114/126 +f 734/1115/127 735/1133/133 728/1116/12 +f 732/1117/128 733/1120/130 726/1118/121 +f 728/1116/12 735/1133/133 736/1119/129 +f 733/1120/130 734/1115/127 727/1108/124 +f 730/1114/126 731/1123/132 724/1121/131 +f 701/1125/111 732/1137/128 717/1126/8 +f 717/1128/8 731/1675/132 702/1129/113 +f 702/1129/113 731/1675/132 730/1131/126 +f 703/1132/109 730/1131/126 736/1119/129 +f 704/1079/107 736/1119/129 735/1133/133 +f 705/1134/134 735/1133/133 734/1115/127 +f 706/1083/110 734/1115/127 733/1135/130 +f 700/1136/106 733/1135/130 732/1137/128 +f 752/1138/95 745/1154/101 737/1139/2 +f 750/1141/96 751/1150/99 743/1142/1 +f 748/1144/97 749/1151/100 741/1145/5 +f 746/1147/98 747/1676/14 739/1148/6 +f 751/1150/99 752/1138/95 744/1140/25 +f 749/1151/100 750/1141/96 742/1143/35 +f 747/1152/14 748/1144/97 740/1146/17 +f 745/1154/101 746/1147/98 738/1149/48 +f 751/1150/99 758/1165/10 759/1155/102 +f 749/1156/100 756/1162/105 757/1157/103 +f 753/1158/104 754/1171/112 746/1159/98 +f 759/1155/102 753/1158/104 745/1160/101 +f 757/1157/103 758/1165/10 751/1150/99 +f 748/1161/97 755/1167/108 756/1162/105 +f 759/1155/102 766/1168/110 760/1163/106 +f 764/1164/107 765/1219/134 758/1165/10 +f 762/1166/113 763/1169/109 756/1162/105 +f 758/1165/10 765/1219/134 766/1168/110 +f 763/1169/109 764/1164/107 757/1157/103 +f 753/1158/104 760/1163/106 761/1170/111 +f 782/1174/114 775/1190/123 767/1175/5 +f 780/1177/115 781/1186/119 773/1178/6 +f 778/1180/116 779/1187/117 771/1181/2 +f 776/1183/118 777/1677/8 769/1184/1 +f 781/1186/119 782/1174/114 774/1176/17 +f 779/1187/117 780/1177/115 772/1179/48 +f 777/1188/8 778/1180/116 770/1182/25 +f 775/1190/123 776/1183/118 768/1185/35 +f 781/1186/119 788/1202/12 789/1191/120 +f 779/1192/117 786/1204/121 787/1193/124 +f 775/1194/123 783/1200/122 784/1195/131 +f 789/1191/120 783/1200/122 775/1194/123 +f 787/1193/124 788/1202/12 781/1186/119 +f 785/1197/125 786/1204/121 779/1192/117 +f 789/1191/120 796/1205/129 790/1199/126 +f 794/1201/127 795/1218/133 788/1202/12 +f 792/1203/128 793/1206/130 786/1204/121 +f 788/1202/12 795/1218/133 796/1205/129 +f 793/1206/130 794/1201/127 787/1193/124 +f 783/1200/122 790/1199/126 791/1207/132 +f 761/1210/111 792/1222/128 777/1211/8 +f 777/1213/8 791/1678/132 762/1214/113 +f 762/1214/113 791/1678/132 790/1216/126 +f 763/1217/109 790/1216/126 796/1205/129 +f 764/1164/107 796/1205/129 795/1218/133 +f 766/1168/110 765/1219/134 795/1218/133 +f 766/1168/110 794/1201/127 793/1220/130 +f 760/1221/106 793/1220/130 792/1222/128 +f 812/1223/95 805/1239/101 797/1224/2 +f 810/1226/96 811/1235/99 803/1227/1 +f 808/1229/97 809/1236/100 801/1230/5 +f 806/1232/98 807/1679/14 799/1233/6 +f 811/1235/99 812/1223/95 804/1225/25 +f 809/1236/100 810/1226/96 802/1228/35 +f 807/1237/14 808/1229/97 800/1231/17 +f 805/1239/101 806/1232/98 798/1234/48 +f 811/1235/99 818/1250/10 819/1240/102 +f 809/1241/100 816/1247/105 817/1242/103 +f 813/1243/104 814/1256/112 806/1244/98 +f 819/1240/102 813/1243/104 805/1245/101 +f 817/1242/103 818/1250/10 811/1235/99 +f 808/1246/97 815/1252/108 816/1247/105 +f 819/1240/102 826/1253/110 820/1248/106 +f 824/1249/107 825/1304/134 818/1250/10 +f 822/1251/113 823/1254/109 816/1247/105 +f 818/1250/10 825/1304/134 826/1253/110 +f 823/1254/109 824/1249/107 817/1242/103 +f 813/1243/104 820/1248/106 821/1255/111 +f 842/1259/114 835/1275/123 827/1260/5 +f 840/1262/115 841/1271/119 833/1263/6 +f 838/1265/116 839/1272/117 831/1266/2 +f 828/1268/35 836/1680/118 837/1269/8 +f 841/1271/119 842/1259/114 834/1261/17 +f 839/1272/117 840/1262/115 832/1264/48 +f 837/1273/8 838/1265/116 830/1267/25 +f 835/1275/123 836/1680/118 828/1268/35 +f 841/1271/119 848/1287/12 849/1276/120 +f 839/1277/117 846/1289/121 847/1278/124 +f 835/1279/123 843/1285/122 844/1280/131 +f 849/1276/120 843/1285/122 835/1279/123 +f 847/1278/124 848/1287/12 841/1271/119 +f 845/1282/125 846/1289/121 839/1277/117 +f 849/1276/120 856/1290/129 850/1284/126 +f 854/1286/127 855/1303/133 848/1287/12 +f 845/1282/125 852/1294/128 853/1288/130 +f 848/1287/12 855/1303/133 856/1290/129 +f 853/1288/130 854/1286/127 847/1278/124 +f 850/1284/126 851/1292/132 844/1280/131 +f 821/1295/111 852/1307/128 837/1296/8 +f 837/1298/8 851/1681/132 822/1299/113 +f 822/1299/113 851/1681/132 850/1301/126 +f 823/1302/109 850/1301/126 856/1290/129 +f 824/1249/107 856/1290/129 855/1303/133 +f 826/1253/110 825/1304/134 855/1303/133 +f 826/1253/110 854/1286/127 853/1305/130 +f 820/1306/106 853/1305/130 852/1307/128 +f 872/1308/135 865/1324/141 857/1309/5 +f 870/1311/136 871/1320/139 863/1312/1 +f 868/1314/137 869/1321/140 861/1315/2 +f 866/1317/138 867/1682/12 859/1318/6 +f 871/1320/139 872/1308/135 864/1310/35 +f 869/1321/140 870/1311/136 862/1313/25 +f 867/1322/12 868/1314/137 860/1316/48 +f 865/1324/141 866/1317/138 858/1319/17 +f 871/1320/139 878/1335/8 879/1325/142 +f 869/1326/140 876/1337/149 877/1327/143 +f 873/1328/144 874/1341/153 866/1329/138 +f 879/1325/142 873/1328/144 865/1330/141 +f 877/1327/143 878/1335/8 871/1320/139 +f 875/1331/145 876/1337/149 869/1326/140 +f 879/1325/142 886/1338/150 880/1333/146 +f 884/1334/147 885/1388/174 878/1335/8 +f 882/1336/148 883/1339/151 876/1337/149 +f 878/1335/8 885/1388/174 886/1338/150 +f 883/1339/151 884/1334/147 877/1327/143 +f 873/1328/144 880/1333/146 881/1340/152 +f 902/1344/154 895/1683/162 887/1345/2 +f 900/1347/155 901/1356/158 893/1348/6 +f 898/1350/156 899/1357/159 891/1351/5 +f 896/1353/157 897/1684/10 889/1354/1 +f 901/1356/158 902/1344/154 894/1346/48 +f 899/1357/159 900/1347/155 892/1349/17 +f 897/1358/10 898/1350/156 890/1352/35 +f 887/1345/2 895/1683/162 896/1353/157 +f 901/1356/158 908/1371/14 909/1360/160 +f 899/1361/159 906/1367/164 907/1362/161 +f 895/1363/162 903/1369/166 904/1364/163 +f 909/1360/160 903/1369/166 895/1363/162 +f 907/1362/161 908/1371/14 901/1356/158 +f 898/1366/156 905/1373/169 906/1367/164 +f 909/1360/160 916/1374/170 910/1368/165 +f 914/1370/167 915/1387/173 908/1371/14 +f 912/1372/168 913/1375/171 906/1367/164 +f 908/1371/14 915/1387/173 916/1374/170 +f 913/1375/171 914/1370/167 907/1362/161 +f 910/1368/165 911/1377/172 904/1364/163 +f 881/1379/152 912/1391/168 897/1380/10 +f 897/1382/10 911/1685/172 882/1383/148 +f 882/1383/148 911/1685/172 910/1385/165 +f 883/1386/151 910/1385/165 916/1374/170 +f 884/1334/147 916/1374/170 915/1387/173 +f 885/1388/174 915/1387/173 914/1370/167 +f 880/1389/146 886/1338/150 914/1370/167 +f 880/1389/146 913/1390/171 912/1391/168 +f 932/1392/135 925/1408/141 917/1393/5 +f 930/1395/136 931/1404/139 923/1396/1 +f 928/1398/137 929/1405/140 921/1399/2 +f 926/1401/138 927/1686/12 919/1402/6 +f 931/1404/139 932/1392/135 924/1394/35 +f 929/1405/140 930/1395/136 922/1397/25 +f 927/1406/12 928/1398/137 920/1400/48 +f 925/1408/141 926/1401/138 918/1403/17 +f 931/1404/139 938/1419/8 939/1409/142 +f 929/1410/140 936/1416/149 937/1411/143 +f 933/1412/144 934/1425/153 926/1413/138 +f 939/1409/142 933/1412/144 925/1414/141 +f 937/1411/143 938/1419/8 931/1404/139 +f 928/1415/137 935/1421/145 936/1416/149 +f 939/1409/142 946/1422/150 940/1417/146 +f 944/1418/147 945/1473/174 938/1419/8 +f 942/1420/148 943/1423/151 936/1416/149 +f 938/1419/8 945/1473/174 946/1422/150 +f 943/1423/151 944/1418/147 937/1411/143 +f 933/1412/144 940/1417/146 941/1424/152 +f 962/1428/154 955/1444/162 947/1429/2 +f 960/1431/155 961/1440/158 953/1432/6 +f 958/1434/156 959/1441/159 951/1435/5 +f 948/1437/25 956/1687/157 957/1438/10 +f 961/1440/158 962/1428/154 954/1430/48 +f 959/1441/159 960/1431/155 952/1433/17 +f 957/1442/10 958/1434/156 950/1436/35 +f 955/1444/162 956/1687/157 948/1437/25 +f 961/1440/158 968/1457/14 969/1445/160 +f 966/1446/164 967/1452/161 960/1431/155 +f 955/1448/162 963/1451/166 964/1449/163 +f 962/1428/154 969/1445/160 963/1451/166 +f 967/1452/161 968/1457/14 961/1440/158 +f 965/1453/169 966/1446/164 959/1447/159 +f 969/1445/160 976/1459/170 970/1455/165 +f 974/1456/167 975/1472/173 968/1457/14 +f 972/1458/168 973/1460/171 966/1446/164 +f 968/1457/14 975/1472/173 976/1459/170 +f 973/1460/171 974/1456/167 967/1452/161 +f 970/1455/165 971/1462/172 964/1449/163 +f 941/1464/152 972/1476/168 957/1465/10 +f 957/1467/10 971/1688/172 942/1468/148 +f 942/1468/148 971/1688/172 970/1470/165 +f 943/1471/151 970/1470/165 976/1459/170 +f 944/1418/147 976/1459/170 975/1472/173 +f 945/1473/174 975/1472/173 974/1456/167 +f 946/1422/150 974/1456/167 973/1474/171 +f 940/1475/146 973/1474/171 972/1476/168 +f 984/1477/35 992/1494/135 985/1478/141 +f 990/1480/136 991/1489/139 983/1481/1 +f 988/1483/137 989/1490/140 981/1484/2 +f 986/1486/138 987/1689/12 979/1487/6 +f 991/1489/139 992/1494/135 984/1477/35 +f 989/1490/140 990/1480/136 982/1482/25 +f 987/1491/12 988/1483/137 980/1485/48 +f 985/1478/141 986/1486/138 978/1488/17 +f 991/1489/139 998/1504/8 999/1493/142 +f 989/1495/140 996/1501/149 997/1496/143 +f 993/1497/144 994/1509/153 986/1498/138 +f 999/1493/142 993/1497/144 985/1499/141 +f 997/1496/143 998/1504/8 991/1489/139 +f 988/1500/137 995/1506/145 996/1501/149 +f 1006/1502/150 1000/1690/146 993/1497/144 +f 1004/1503/147 1005/1554/174 998/1504/8 +f 1002/1505/148 1003/1507/151 996/1501/149 +f 998/1504/8 1005/1554/174 1006/1502/150 +f 1003/1507/151 1004/1503/147 997/1496/143 +f 993/1497/144 1000/1690/146 1001/1508/152 +f 1022/1512/154 1015/1526/162 1007/1513/2 +f 1020/1515/155 1021/1527/158 1013/1516/6 +f 1018/1518/156 1019/1524/159 1011/1519/5 +f 1016/1521/157 1017/1691/10 1009/1522/1 +f 1013/1516/6 1021/1527/158 1022/1512/154 +f 1019/1524/159 1020/1515/155 1012/1517/17 +f 1009/1525/1 1017/1692/10 1018/1518/156 +f 1015/1526/162 1016/1521/157 1008/1523/25 +f 1021/1527/158 1028/1539/14 1029/1528/160 +f 1019/1529/159 1026/1541/164 1027/1530/161 +f 1015/1531/162 1023/1537/166 1024/1532/163 +f 1029/1528/160 1023/1537/166 1015/1531/162 +f 1027/1530/161 1028/1539/14 1021/1527/158 +f 1025/1534/169 1026/1541/164 1019/1529/159 +f 1036/1536/170 1030/1693/165 1023/1537/166 +f 1027/1530/161 1034/1555/167 1035/1538/173 +f 1025/1534/169 1032/1545/168 1033/1540/171 +f 1028/1539/14 1035/1538/173 1036/1536/170 +f 1033/1540/171 1034/1555/167 1027/1530/161 +f 1023/1537/166 1030/1693/165 1031/1542/172 +f 1001/1546/152 1032/1558/168 1017/1547/10 +f 1017/1549/10 1031/1694/172 1002/1550/148 +f 1002/1550/148 1031/1694/172 1030/1552/165 +f 1003/1553/151 1030/1552/165 1036/1536/170 +f 1004/1503/147 1036/1536/170 1035/1538/173 +f 1006/1502/150 1005/1554/174 1035/1538/173 +f 1006/1502/150 1034/1555/167 1033/1556/171 +f 1000/1557/146 1033/1556/171 1032/1558/168 +f 1052/1559/135 1045/1574/141 1037/1560/5 +f 1042/1562/25 1050/1578/136 1051/1563/139 +f 1048/1565/137 1049/1571/140 1041/1566/2 +f 1038/1568/17 1046/1695/138 1047/1569/12 +f 1051/1563/139 1052/1559/135 1044/1561/35 +f 1049/1571/140 1050/1578/136 1042/1562/25 +f 1047/1572/12 1048/1565/137 1040/1567/48 +f 1045/1574/141 1046/1695/138 1038/1568/17 +f 1051/1563/139 1058/1582/8 1059/1575/142 +f 1049/1576/140 1056/1584/149 1057/1577/143 +f 1053/1579/144 1054/1591/153 1046/1580/138 +f 1052/1559/135 1059/1575/142 1053/1579/144 +f 1050/1578/136 1057/1577/143 1058/1582/8 +f 1048/1583/137 1055/1588/145 1056/1584/149 +f 1059/1575/142 1066/1589/150 1060/1585/146 +f 1064/1586/147 1065/1637/174 1058/1582/8 +f 1062/1587/148 1063/1590/151 1056/1584/149 +f 1058/1582/8 1065/1637/174 1066/1589/150 +f 1063/1590/151 1064/1586/147 1057/1577/143 +f 1060/1585/146 1061/1593/152 1054/1591/153 +f 1082/1595/154 1075/1696/162 1067/1596/2 +f 1080/1598/155 1081/1607/158 1073/1599/6 +f 1078/1601/156 1079/1608/159 1071/1602/5 +f 1076/1604/157 1077/1697/10 1069/1605/1 +f 1081/1607/158 1082/1595/154 1074/1597/48 +f 1079/1608/159 1080/1598/155 1072/1600/17 +f 1069/1609/1 1077/1698/10 1078/1601/156 +f 1067/1596/2 1075/1696/162 1076/1604/157 +f 1081/1607/158 1088/1622/14 1089/1610/160 +f 1086/1611/164 1087/1616/161 1080/1598/155 +f 1075/1613/162 1083/1620/166 1084/1614/163 +f 1089/1610/160 1083/1620/166 1075/1613/162 +f 1087/1616/161 1088/1622/14 1081/1607/158 +f 1085/1617/169 1086/1611/164 1079/1612/159 +f 1089/1610/160 1096/1624/170 1090/1619/165 +f 1094/1621/167 1095/1636/173 1088/1622/14 +f 1092/1623/168 1093/1699/171 1086/1611/164 +f 1088/1622/14 1095/1636/173 1096/1624/170 +f 1086/1611/164 1093/1699/171 1094/1621/167 +f 1090/1619/165 1091/1626/172 1084/1614/163 +f 1061/1628/152 1092/1640/168 1077/1629/10 +f 1077/1631/10 1091/1700/172 1062/1632/148 +f 1062/1632/148 1091/1700/172 1090/1634/165 +f 1063/1635/151 1090/1634/165 1096/1624/170 +f 1064/1586/147 1096/1624/170 1095/1636/173 +f 1065/1637/174 1095/1636/173 1094/1621/167 +f 1066/1589/150 1094/1621/167 1093/1638/171 +f 1060/1639/146 1093/1638/171 1092/1640/168 diff --git a/src/main/resources/assets/hbm/models/weapons/mas36.obj b/src/main/resources/assets/hbm/models/weapons/mas36.obj new file mode 100644 index 000000000..a6d7e2e54 --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/mas36.obj @@ -0,0 +1,7278 @@ +# Blender v2.79 (sub 0) OBJ File: 'mas36.blend' +# www.blender.org +o Gun +v 0.312500 0.781250 6.187500 +v 0.125000 0.593750 6.187500 +v 0.250000 0.781250 6.187500 +v 0.250000 1.156250 6.187500 +v -0.250000 1.343750 6.187500 +v -0.250000 1.156250 6.187500 +v -0.312500 1.156250 6.187500 +v 0.250000 1.343750 6.187500 +v 0.187500 1.343750 6.187500 +v -0.312500 1.156250 3.875000 +v -0.250000 0.656250 3.875000 +v -0.250000 1.156250 3.875000 +v 0.250000 0.656250 3.875000 +v 0.312500 1.156250 3.875000 +v 0.250000 1.156250 3.875000 +v 0.250000 1.343750 3.875000 +v -0.250000 1.343750 3.875000 +v -0.187500 1.343750 3.875000 +v 0.000000 1.468750 3.875000 +v 0.000000 1.406250 3.875000 +v 0.187500 1.343750 3.875000 +v -0.125000 0.406250 3.875000 +v 0.125000 0.468750 3.875000 +v -0.125000 0.468750 3.875000 +v 0.312500 0.656250 3.875000 +v -0.312500 0.656250 3.875000 +v 0.250000 1.343750 3.562500 +v 0.250000 1.156250 3.562500 +v 0.187500 1.343750 3.562500 +v 0.000000 1.468750 3.562500 +v 0.000000 1.406250 3.562500 +v -0.187500 1.343750 3.562500 +v -0.250000 1.156250 3.562500 +v -0.250000 1.343750 3.562500 +v -0.312500 1.156250 3.562500 +v -0.250000 0.656250 3.562500 +v -0.312500 0.656250 3.562500 +v 0.250000 0.656250 3.562500 +v 0.312500 1.156250 3.562500 +v 0.312500 0.656250 3.562500 +v 0.125000 0.468750 3.562500 +v -0.125000 0.406250 3.562500 +v -0.125000 0.468750 3.562500 +v 0.125000 0.406250 3.562500 +v -0.125000 0.531250 6.187500 +v -0.125000 0.593750 6.187500 +v -0.312500 0.781250 6.187500 +v -0.250000 0.781250 6.187500 +v 0.187500 0.218750 0.375000 +v 0.250000 0.343750 0.312500 +v 0.250000 0.343750 0.375000 +v -0.250000 0.343750 0.312500 +v -0.187500 0.218750 0.375000 +v -0.250000 0.343750 0.375000 +v 0.187500 0.093750 0.125000 +v 0.187500 0.031250 -1.562500 +v 0.187500 0.218750 0.187500 +v 0.250000 0.031250 -1.687500 +v -0.187500 0.031250 -1.562500 +v -0.250000 0.031250 -1.687500 +v 0.250000 -0.093750 -2.937500 +v -0.250000 -0.093750 -2.937500 +v 0.250000 0.843750 0.312500 +v 0.187500 0.781250 0.187500 +v 0.250000 0.843750 -1.687500 +v 0.187500 0.781250 -1.562500 +v 0.250000 0.906250 0.375000 +v 0.250000 0.906250 -3.062500 +v -0.187500 -0.093750 -1.562500 +v -0.187500 0.093750 0.125000 +v -0.187500 0.218750 0.187500 +v 0.187500 -0.093750 -1.562500 +v 0.108253 1.218750 -0.062500 +v 0.000000 1.031250 -0.062500 +v -0.108253 1.218750 -0.062500 +v 0.108253 1.218750 -0.187500 +v 0.093750 1.318630 -0.187500 +v 0.162380 1.250000 -0.187500 +v -0.108253 1.218750 -0.187500 +v -0.187500 1.156250 -0.187500 +v -0.162380 1.250000 -0.187500 +v 0.000000 1.281250 -0.187500 +v -0.093750 1.318630 -0.187500 +v 0.000000 1.343750 -0.187500 +v -0.062500 1.264503 -0.187500 +v 0.162380 1.250000 -1.062500 +v 0.108253 1.218750 -1.062500 +v 0.093750 0.993870 -3.062500 +v 0.187500 1.031250 -3.000000 +v 0.187500 1.031250 -3.062500 +v -0.250000 0.906250 0.375000 +v -0.187500 1.031250 0.375000 +v -0.187500 1.031250 -2.750000 +v -0.062500 1.406250 -1.750000 +v 0.062500 1.406250 -2.750000 +v -0.062500 1.406250 -2.750000 +v -0.125000 1.406250 -1.562500 +v -0.125000 1.281250 -1.687500 +v -0.125000 1.281250 -1.562500 +v 0.125000 1.406250 -1.562500 +v 0.125000 1.281250 -1.687500 +v 0.125000 1.406250 -1.687500 +v -0.125000 1.406250 -1.687500 +v -0.062500 1.343750 -1.750000 +v 0.062500 1.343750 -1.750000 +v -0.062500 1.406250 -1.625000 +v -0.062500 1.406250 -1.562500 +v 0.062500 1.406250 -1.625000 +v 0.062500 1.406250 -1.562500 +v 0.062500 1.406250 -1.750000 +v 0.062500 1.343750 -2.750000 +v -0.062500 1.343750 -2.750000 +v 0.108253 1.218750 -1.750000 +v -0.108253 1.218750 -1.750000 +v 0.000000 1.031250 -1.750000 +v -0.062500 1.264503 -1.625000 +v 0.000000 1.281250 -1.625000 +v -0.062500 1.264503 -1.562500 +v 0.062500 1.264503 -1.562500 +v 0.125000 1.281250 -1.562500 +v -0.108253 1.218750 -1.562500 +v -0.187500 1.156250 -1.562500 +v 0.108253 1.218750 -1.562500 +v 0.187500 1.156250 -1.562500 +v 0.125000 1.156250 -1.562500 +v -0.187500 1.093750 -1.500000 +v -0.187500 1.093750 -0.250000 +v -0.187500 1.156250 0.437500 +v -0.187500 1.156250 -2.750000 +v 0.187500 1.031250 0.375000 +v 0.187500 1.156250 -1.125000 +v 0.187500 1.156250 0.437500 +v 0.187500 1.093750 -1.250000 +v -0.183909 0.781250 -1.561136 +v -0.187500 0.781250 0.187500 +v -0.250000 0.843750 0.312500 +v -0.250000 0.843750 -1.687500 +v -0.250000 0.906250 -3.062500 +v -0.054127 1.125000 7.750000 +v 0.054127 1.125000 7.750000 +v 0.000000 1.218750 7.750000 +v 0.000000 1.281250 8.000000 +v -0.031250 1.210377 8.000000 +v 0.000000 1.218750 8.000000 +v -0.062500 1.264503 8.000000 +v -0.054127 1.187500 8.000000 +v -0.125000 1.156250 8.000000 +v -0.108253 1.218750 8.000000 +v -0.108253 1.093750 8.000000 +v -0.062500 1.156250 8.000000 +v -0.062500 1.047997 8.000000 +v -0.054127 1.125000 8.000000 +v 0.000000 1.031250 8.000000 +v -0.031250 1.102123 8.000000 +v 0.031250 1.102123 8.000000 +v 0.000000 1.093750 8.000000 +v 0.062500 1.047997 8.000000 +v 0.054127 1.125000 8.000000 +v 0.125000 1.156250 8.000000 +v 0.108253 1.093750 8.000000 +v 0.108253 1.218750 8.000000 +v 0.062500 1.156250 8.000000 +v 0.062500 1.264503 8.000000 +v 0.054127 1.187500 8.000000 +v 0.031250 1.210377 8.000000 +v -0.250000 1.156250 6.625000 +v -0.312500 0.781250 6.625000 +v 0.312500 0.781250 6.625000 +v -0.250000 0.265625 -0.049940 +v -0.250000 0.125000 0.031250 +v -0.250000 0.265625 0.112440 +v 0.250000 0.265625 0.112440 +v 0.250000 0.125000 0.031250 +v 0.250000 0.265625 -0.049940 +v -0.125000 -0.156250 -2.687500 +v -0.125000 -0.031250 -2.500000 +v -0.125000 -0.031250 -2.875000 +v -0.125000 0.031250 -1.812500 +v -0.125000 -0.218750 -1.750000 +v -0.125000 0.031250 -1.750000 +v -0.125000 -0.468750 -1.937500 +v -0.125000 -0.468750 -2.437500 +v -0.125000 -0.531250 -2.437500 +v -0.125000 -0.218750 -1.812500 +v -0.125000 -0.343750 -1.812500 +v 0.125000 -0.218750 -1.750000 +v 0.125000 0.031250 -1.812500 +v 0.125000 0.031250 -1.750000 +v -0.125000 -0.406250 -1.937500 +v 0.125000 -0.343750 -1.812500 +v 0.125000 -0.218750 -1.812500 +v 0.125000 -0.406250 -1.937500 +v 0.125000 -0.468750 -1.937500 +v -0.125000 -0.281250 -2.312500 +v -0.125000 -0.406250 -2.312500 +v -0.125000 -0.406250 -2.250000 +v -0.125000 -0.156250 -2.375000 +v -0.125000 -0.281250 -2.375000 +v -0.125000 -0.156250 -2.312500 +v -0.125000 0.031250 -2.437500 +v 0.125000 -0.406250 -2.250000 +v 0.125000 -0.406250 -2.312500 +v 0.125000 -0.281250 -2.312500 +v 0.125000 -0.281250 -2.375000 +v 0.125000 -0.156250 -2.312500 +v 0.125000 -0.156250 -2.375000 +v 0.125000 0.031250 -2.437500 +v -0.125000 1.281250 -2.750000 +v 0.187500 1.156250 -2.875000 +v 0.187500 1.156250 -2.812500 +v 0.093750 0.993870 -3.000000 +v 0.162380 1.062500 -3.000000 +v 0.187500 1.156250 -3.000000 +v 0.108253 1.093750 -2.875000 +v 0.125000 1.156250 -2.875000 +v 0.093750 0.993870 -2.875000 +v 0.162380 1.062500 -2.875000 +v 0.000000 1.031250 -2.875000 +v 0.000000 0.968750 -2.875000 +v -0.093750 0.993870 -2.875000 +v -0.062500 1.047997 -2.750000 +v -0.062500 1.047997 -2.875000 +v 0.125000 1.156250 -2.812500 +v 0.125000 1.156250 -2.750000 +v 0.125000 1.281250 -2.750000 +v 0.000000 0.968750 -3.062500 +v -0.250000 0.218750 -3.062500 +v 0.250000 0.218750 -3.062500 +v -0.125000 -0.343750 -2.625000 +v -0.125000 -0.156250 -2.562500 +v 0.125000 -0.468750 -2.437500 +v 0.125000 -0.031250 -2.500000 +v 0.125000 -0.156250 -2.687500 +v 0.125000 -0.031250 -2.875000 +v 0.125000 -0.156250 -2.562500 +v 0.125000 -0.343750 -2.625000 +v 0.125000 -0.343750 -2.562500 +v 0.125000 -0.531250 -2.437500 +v 0.000000 1.468750 -2.500000 +v -0.044194 1.518306 -2.500000 +v -0.093750 1.468750 -2.500000 +v 0.044194 1.518306 -2.500000 +v 0.093750 1.562500 -2.500000 +v 0.062500 1.562500 -2.500000 +v 0.156250 1.343750 -2.312500 +v -0.156250 1.343750 -2.687500 +v 0.218750 1.343750 -2.687500 +v 0.093750 1.468750 -2.687500 +v 0.093750 1.593750 -2.500000 +v 0.093750 1.593750 -2.687500 +v -0.093750 1.593750 -2.500000 +v -0.093750 1.468750 -2.687500 +v -0.093750 1.593750 -2.687500 +v -0.093750 1.468750 -2.437500 +v 0.044194 1.518306 -2.625000 +v 0.093750 1.562500 -2.625000 +v 0.093750 1.468750 -2.625000 +v 0.062500 1.562500 -2.625000 +v 0.066291 1.628791 -2.625000 +v 0.044194 1.606694 -2.625000 +v 0.000000 1.656250 -2.625000 +v -0.044194 1.606694 -2.625000 +v 0.000000 1.625000 -2.625000 +v -0.062500 1.562500 -2.625000 +v -0.066291 1.628791 -2.625000 +v -0.044194 1.518306 -2.625000 +v -0.093750 1.562500 -2.625000 +v 0.000000 1.468750 -2.625000 +v 0.000000 1.500000 -2.625000 +v 0.066291 1.628791 -2.500000 +v 0.044194 1.606694 -2.500000 +v 0.000000 1.656250 -2.500000 +v 0.000000 1.625000 -2.500000 +v -0.044194 1.606694 -2.500000 +v -0.066291 1.628791 -2.500000 +v -0.062500 1.562500 -2.500000 +v -0.093750 1.562500 -2.500000 +v 0.093750 1.468750 -2.500000 +v -0.156250 1.468750 -2.437500 +v 0.093750 1.468750 -2.437500 +v 0.156250 1.468750 -2.437500 +v 0.218750 1.468750 -2.687500 +v 0.156250 1.468750 -2.687500 +v -0.156250 1.468750 -2.687500 +v 0.250000 1.406250 -2.562500 +v 0.250000 1.343750 -2.625000 +v 0.250000 1.406250 -2.687500 +v 0.156250 1.468750 -2.312500 +v -0.156250 1.343750 -2.312500 +v -0.031250 1.562500 6.250000 +v 0.031250 1.468750 6.250000 +v -0.031250 1.468750 6.250000 +v -0.031250 1.562500 6.312500 +v 0.031250 1.562500 6.250000 +v -0.031250 1.468750 6.375000 +v 0.031250 1.562500 6.312500 +v 0.031250 1.468750 6.375000 +v 0.062500 1.468750 6.187500 +v 0.125000 1.656250 6.437500 +v 0.125000 1.656250 6.187500 +v -0.125000 1.656250 6.437500 +v -0.062500 1.468750 6.187500 +v -0.125000 1.656250 6.187500 +v -0.187500 1.656250 6.187500 +v 0.187500 1.656250 6.187500 +v 0.187500 1.656250 6.437500 +v 0.125000 1.468750 6.187500 +v -0.125000 1.468750 6.187500 +v -0.187500 1.656250 6.437500 +v -0.125000 1.468750 6.437500 +v -0.062500 1.468750 6.437500 +v 0.125000 1.468750 6.437500 +v 0.062500 1.468750 6.437500 +v 0.250000 1.343750 6.437500 +v -0.250000 1.343750 6.437500 +v -0.108253 0.718750 7.187500 +v 0.108253 0.718750 7.187500 +v 0.000000 0.906250 7.187500 +v -0.081190 0.734375 7.812500 +v 0.081190 0.734375 7.812500 +v 0.000000 0.875000 7.812500 +v -0.312500 1.031250 6.625000 +v -0.375000 0.906250 6.625000 +v -0.312500 0.906250 6.625000 +v -0.375000 1.031250 6.250000 +v -0.312500 1.031250 6.187500 +v -0.375000 0.906250 6.250000 +v -0.312500 0.906250 6.187500 +v -0.437500 1.062500 7.437500 +v -0.343750 0.968750 7.437500 +v -0.437500 0.875000 7.437500 +v -0.375000 0.968750 7.500000 +v -0.393306 1.012944 7.500000 +v -0.437500 1.031250 7.500000 +v 0.062500 0.281250 3.687500 +v 0.000000 0.281250 3.750000 +v -0.062500 0.281250 3.687500 +v 0.187500 0.343750 3.500000 +v -0.187500 0.406250 3.500000 +v -0.187500 0.343750 3.500000 +v -0.187500 0.343750 3.625000 +v 0.187500 0.406250 3.625000 +v 0.187500 0.343750 3.625000 +v 0.187500 0.406250 3.500000 +v -0.250000 0.343750 3.687500 +v -0.250000 0.406250 3.437500 +v -0.250000 0.343750 3.437500 +v 0.250000 0.406250 3.437500 +v 0.250000 0.406250 3.687500 +v 0.250000 0.343750 3.437500 +v 0.250000 0.343750 3.687500 +v -0.250000 0.406250 3.687500 +v -0.187500 0.406250 3.625000 +v 0.125000 0.531250 6.187500 +v 0.312500 1.156250 6.187500 +v -0.187500 1.343750 6.187500 +v 0.125000 0.406250 3.875000 +v -0.062500 1.264503 -0.062500 +v 0.000000 1.281250 -0.062500 +v 0.062500 1.264503 -0.062500 +v 0.125000 1.156250 -0.062500 +v 0.108253 1.093750 -0.062500 +v 0.062500 1.047997 -0.062500 +v -0.062500 1.047997 -0.062500 +v -0.108253 1.093750 -0.062500 +v -0.125000 1.156250 -0.062500 +v 0.062500 1.264503 -0.187500 +v -0.125000 1.156250 -0.187500 +v -0.187500 1.031250 -3.062500 +v 0.062500 1.047997 -1.750000 +v 0.108253 1.093750 -1.750000 +v 0.125000 1.156250 -1.750000 +v 0.062500 1.264503 -1.750000 +v 0.000000 1.281250 -1.750000 +v -0.062500 1.264503 -1.750000 +v -0.125000 1.156250 -1.750000 +v -0.108253 1.093750 -1.750000 +v -0.062500 1.047997 -1.750000 +v 0.062500 1.264503 -1.625000 +v -0.125000 1.156250 -1.562500 +v 0.187500 1.093750 -1.437500 +v -0.183909 0.031250 -1.561136 +v -0.031250 1.210377 7.750000 +v -0.054127 1.187500 7.750000 +v -0.062500 1.156250 7.750000 +v -0.031250 1.102123 7.750000 +v 0.000000 1.093750 7.750000 +v 0.031250 1.102123 7.750000 +v 0.062500 1.156250 7.750000 +v 0.054127 1.187500 7.750000 +v 0.031250 1.210377 7.750000 +v -0.125000 0.531250 6.625000 +v 0.125000 0.531250 6.625000 +v 0.312500 1.156250 6.625000 +v 0.250000 1.156250 6.625000 +v 0.216506 1.281250 6.625000 +v 0.125000 1.372756 6.625000 +v 0.000000 1.406250 6.625000 +v -0.125000 1.372756 6.625000 +v -0.216506 1.281250 6.625000 +v -0.312500 1.156250 6.625000 +v -0.250000 0.299940 0.078125 +v -0.250000 0.312500 0.031250 +v -0.250000 0.299940 -0.015625 +v -0.250000 0.218750 -0.062500 +v -0.250000 0.171875 -0.049940 +v -0.250000 0.137560 -0.015625 +v -0.250000 0.137560 0.078125 +v -0.250000 0.171875 0.112440 +v -0.250000 0.218750 0.125000 +v 0.250000 0.299940 -0.015625 +v 0.250000 0.312500 0.031250 +v 0.250000 0.299940 0.078125 +v 0.250000 0.218750 0.125000 +v 0.250000 0.171875 0.112440 +v 0.250000 0.137560 0.078125 +v 0.250000 0.137560 -0.015625 +v 0.250000 0.171875 -0.049940 +v 0.250000 0.218750 -0.062500 +v -0.125000 -0.343750 -1.875000 +v 0.125000 -0.343750 -1.875000 +v -0.125000 0.031250 -2.187500 +v 0.125000 0.031250 -2.187500 +v 0.062500 1.047997 -2.875000 +v -0.093750 0.993870 -2.750000 +v -0.093750 0.993870 -3.062500 +v -0.125000 -0.343750 -2.562500 +v 0.000000 1.500000 -2.500000 +v -0.093750 1.468750 -2.625000 +v 0.250000 1.450444 -2.669194 +v 0.250000 1.468750 -2.625000 +v 0.250000 1.450444 -2.580806 +v 0.250000 1.362056 -2.580806 +v 0.250000 1.362056 -2.669194 +v -0.156250 1.468750 -2.312500 +v -0.312500 1.156250 6.437500 +v 0.312500 1.156250 6.437500 +v -0.062500 0.889503 7.187500 +v -0.108253 0.843750 7.187500 +v -0.125000 0.781250 7.187500 +v -0.062500 0.672997 7.187500 +v 0.000000 0.656250 7.187500 +v 0.062500 0.672997 7.187500 +v 0.125000 0.781250 7.187500 +v 0.108253 0.843750 7.187500 +v 0.062500 0.889503 7.187500 +v -0.046875 0.862440 7.812500 +v -0.081190 0.828125 7.812500 +v -0.093750 0.781250 7.812500 +v -0.046875 0.700060 7.812500 +v 0.000000 0.687500 7.812500 +v 0.046875 0.700060 7.812500 +v 0.093750 0.781250 7.812500 +v 0.081190 0.828125 7.812500 +v 0.046875 0.862440 7.812500 +v -0.375000 1.031250 6.625000 +v -0.531250 0.968750 7.437500 +v -0.503791 1.035041 7.437500 +v -0.371209 1.035041 7.437500 +v -0.371209 0.902459 7.437500 +v -0.503791 0.902459 7.437500 +v -0.481694 1.012944 7.500000 +v -0.500000 0.968750 7.500000 +v -0.481694 0.924556 7.500000 +v -0.437500 0.906250 7.500000 +v -0.393306 0.924556 7.500000 +v -0.044194 0.281250 3.643306 +v 0.000000 0.281250 3.625000 +v 0.044194 0.281250 3.643306 +v 0.044194 0.281250 3.731694 +v -0.044194 0.281250 3.731694 +v 0.000000 1.406250 6.187500 +v -0.187500 1.343750 0.437500 +v 0.000000 1.406250 0.437500 +v 0.187500 1.343750 0.437500 +v 0.093750 1.318630 0.437500 +v -0.093750 1.318630 0.437500 +v 0.000000 1.343750 0.437500 +v -0.162380 1.250000 0.437500 +v 0.125000 1.156250 -1.125000 +v -0.108253 1.093750 -0.250000 +v 0.108253 1.093750 -1.250000 +v 0.108253 1.093750 -1.437500 +v -0.108253 1.093750 -1.500000 +v -0.062500 1.047997 6.625000 +v 0.000000 1.031250 6.625000 +v -0.108253 1.218750 6.625000 +v -0.125000 1.156250 6.625000 +v 0.125000 1.156250 6.625000 +v 0.108253 1.218750 6.625000 +v 0.062500 1.047997 6.625000 +v -0.108253 1.093750 6.625000 +v 0.062500 1.264503 6.625000 +v 0.000000 1.281250 6.625000 +v -0.062500 1.264503 6.625000 +v 0.108253 1.093750 6.625000 +v 0.216506 1.281250 6.437500 +v -0.216506 1.281250 6.437500 +v 0.125000 1.372756 6.437500 +v 0.000000 1.406250 6.437500 +v 0.250000 1.156250 6.437500 +v -0.125000 1.372756 6.437500 +v -0.250000 1.156250 6.437500 +v -0.250000 1.156250 0.437500 +v 0.250000 1.156250 0.437500 +v 0.250000 1.031250 0.375000 +v -0.250000 1.031250 0.375000 +v -0.187500 0.125000 0.031250 +v -0.187500 0.137560 -0.015625 +v -0.187500 0.218750 0.125000 +v -0.187500 0.171875 0.112440 +v -0.187500 0.265625 -0.049940 +v -0.187500 0.299940 -0.015625 +v -0.187500 0.312500 0.031250 +v -0.187500 0.299940 0.078125 +v -0.187500 0.171875 -0.049940 +v -0.187500 0.137560 0.078125 +v -0.187500 0.265625 0.112440 +v -0.187500 0.218750 -0.062500 +v 0.187500 0.125000 0.031250 +v 0.187500 0.137560 0.078125 +v 0.187500 0.218750 -0.062500 +v 0.187500 0.171875 -0.049940 +v 0.187500 0.265625 0.112440 +v 0.187500 0.299940 0.078125 +v 0.187500 0.312500 0.031250 +v 0.187500 0.299940 -0.015625 +v 0.187500 0.171875 0.112440 +v 0.187500 0.137560 -0.015625 +v 0.187500 0.265625 -0.049940 +v 0.187500 0.218750 0.125000 +v 0.156250 1.362056 -2.580806 +v 0.156250 1.343750 -2.625000 +v 0.156250 1.450444 -2.580806 +v 0.156250 1.406250 -2.562500 +v 0.156250 1.450444 -2.669194 +v 0.156250 1.468750 -2.625000 +v 0.156250 1.362056 -2.669194 +v 0.156250 1.406250 -2.687500 +v 0.125000 0.781250 6.625000 +v 0.108253 0.843750 6.625000 +v 0.000000 0.656250 6.625000 +v 0.062500 0.672997 6.625000 +v -0.125000 0.781250 6.625000 +v -0.108253 0.718750 6.625000 +v 0.062500 0.889503 6.625000 +v 0.000000 0.906250 6.625000 +v -0.062500 0.889503 6.625000 +v 0.108253 0.718750 6.625000 +v -0.062500 0.672997 6.625000 +v -0.108253 0.843750 6.625000 +v 0.046875 0.862440 7.187500 +v 0.000000 0.875000 7.187500 +v -0.046875 0.862440 7.187500 +v -0.081190 0.828125 7.187500 +v 0.081190 0.734375 7.187500 +v 0.093750 0.781250 7.187500 +v -0.046875 0.700060 7.187500 +v 0.000000 0.687500 7.187500 +v -0.093750 0.781250 7.187500 +v 0.081190 0.828125 7.187500 +v 0.046875 0.700060 7.187500 +v -0.081190 0.734375 7.187500 +v -0.375000 0.968750 6.500000 +v -0.450444 1.012944 6.549556 +v -0.375000 1.012944 6.518306 +v -0.450444 0.924556 6.549556 +v -0.463388 0.968750 6.536612 +v -0.375000 0.924556 6.606694 +v -0.419194 0.906250 6.580806 +v -0.375000 0.906250 6.562500 +v -0.419194 1.031250 6.580806 +v -0.375000 1.031250 6.562500 +v -0.375000 0.924556 6.518306 +v -0.387944 1.012944 6.612056 +v -0.375000 1.012944 6.606694 +v -0.437500 1.031250 6.625000 +v -0.393306 0.924556 6.625000 +v -0.437500 0.906250 6.625000 +v -0.481694 1.012944 6.625000 +v -0.393306 1.012944 6.625000 +v -0.481694 0.924556 6.625000 +v -0.500000 0.968750 6.625000 +v -0.375000 0.968750 6.625000 +v -0.387944 0.924556 6.612056 +v -0.481694 1.012944 7.437500 +v -0.393306 1.012944 7.437500 +v -0.500000 0.968750 7.437500 +v -0.393306 0.924556 7.437500 +v -0.481694 0.924556 7.437500 +v -0.375000 0.968750 7.437500 +v -0.437500 1.031250 7.437500 +v -0.437500 0.906250 7.437500 +v -0.044194 0.406250 3.731694 +v 0.000000 0.406250 3.750000 +v -0.044194 0.406250 3.643306 +v -0.062500 0.406250 3.687500 +v 0.062500 0.406250 3.687500 +v 0.044194 0.406250 3.643306 +v 0.044194 0.406250 3.731694 +v 0.000000 0.406250 3.625000 +v 0.162380 1.250000 0.437500 +vt 0.784091 0.522727 +vt 0.801136 0.528409 +vt 0.784091 0.528409 +vt 0.750000 0.528409 +vt 0.903409 0.522727 +vt 0.886364 0.528409 +vt 0.886364 0.522727 +vt 0.732955 0.522727 +vt 0.732955 0.528409 +vt 0.579545 0.119318 +vt 0.573864 0.164773 +vt 0.573864 0.119318 +vt 0.573864 0.232955 +vt 0.579545 0.278409 +vt 0.573864 0.278409 +vt 0.579545 0.295455 +vt 0.579545 0.102273 +vt 0.573864 0.102273 +vt 0.556818 0.090909 +vt 0.539773 0.079545 +vt 0.556818 0.085227 +vt 0.573864 0.079545 +vt 0.579545 0.187500 +vt 0.573864 0.210227 +vt 0.573864 0.187500 +vt 0.573864 0.215909 +vt 0.579545 0.232955 +vt 0.573864 0.181818 +vt 0.579545 0.164773 +vt 0.607955 0.295455 +vt 0.613636 0.278409 +vt 0.613636 0.295455 +vt 0.556818 0.079545 +vt 0.539773 0.068182 +vt 0.556818 0.073864 +vt 0.573864 0.068182 +vt 0.613636 0.119318 +vt 0.607955 0.102273 +vt 0.613636 0.102273 +vt 0.607955 0.119318 +vt 0.613636 0.164773 +vt 0.607955 0.164773 +vt 0.613636 0.232955 +vt 0.607955 0.278409 +vt 0.607955 0.232955 +vt 0.613636 0.210227 +vt 0.607955 0.187500 +vt 0.613636 0.187500 +vt 0.613636 0.181818 +vt 0.613636 0.215909 +vt 0.607955 0.210227 +vt 0.806818 0.528409 +vt 0.829545 0.522727 +vt 0.829545 0.528409 +vt 0.852273 0.522727 +vt 0.852273 0.528409 +vt 0.835227 0.528409 +vt 0.005682 0.346591 +vt 0.011364 0.357955 +vt 0.005682 0.357955 +vt 0.670455 0.357955 +vt 0.676136 0.346591 +vt 0.676136 0.357955 +vt 0.028409 0.335227 +vt 0.181818 0.329545 +vt 0.022727 0.346591 +vt 0.318182 0.204545 +vt 0.357955 0.193182 +vt 0.363636 0.204545 +vt 0.318182 0.318182 +vt 0.363636 0.318182 +vt 0.011364 0.403409 +vt 0.022727 0.397727 +vt 0.193182 0.403409 +vt 0.181818 0.397727 +vt 0.193182 0.329545 +vt 0.005682 0.409091 +vt 0.318182 0.409091 +vt 0.357955 0.181818 +vt 0.323864 0.028409 +vt 0.357955 0.028409 +vt 0.323864 0.017045 +vt 0.357955 0.017045 +vt 0.500000 0.329545 +vt 0.653409 0.335227 +vt 0.659091 0.346591 +vt 0.323864 0.181818 +vt 0.323864 0.193182 +vt 0.206068 0.164773 +vt 0.215909 0.147727 +vt 0.225750 0.164773 +vt 0.301136 0.204545 +vt 0.295455 0.210227 +vt 0.295455 0.204545 +vt 0.301136 0.159091 +vt 0.295455 0.164773 +vt 0.295455 0.159091 +vt 0.301136 0.147727 +vt 0.295455 0.153409 +vt 0.295455 0.147727 +vt 0.301136 0.153409 +vt 0.301136 0.215909 +vt 0.295455 0.215909 +vt 0.119318 0.068182 +vt 0.125000 0.147727 +vt 0.119318 0.147727 +vt 0.164773 0.113636 +vt 0.159091 0.119318 +vt 0.159091 0.113636 +vt 0.676136 0.409091 +vt 0.676136 0.420455 +vt 0.392045 0.420455 +vt 0.210227 0.130682 +vt 0.198864 0.039773 +vt 0.210227 0.039773 +vt 0.215909 0.147727 +vt 0.227273 0.136364 +vt 0.227273 0.147727 +vt 0.193182 0.147727 +vt 0.181818 0.136364 +vt 0.193182 0.136364 +vt 0.215909 0.136364 +vt 0.221591 0.130682 +vt 0.187500 0.130682 +vt 0.210227 0.142045 +vt 0.210227 0.147727 +vt 0.198864 0.142045 +vt 0.198864 0.147727 +vt 0.198864 0.130682 +vt 0.193182 0.039773 +vt 0.187500 0.039773 +vt 0.215909 0.039773 +vt 0.221591 0.039773 +vt 0.203023 0.164773 +vt 0.183341 0.164773 +vt 0.193182 0.147727 +vt 0.142045 0.215909 +vt 0.142045 0.203023 +vt 0.147727 0.204545 +vt 0.136364 0.203023 +vt 0.136364 0.215909 +vt 0.153409 0.215909 +vt 0.159091 0.203023 +vt 0.159091 0.215909 +vt 0.130682 0.204545 +vt 0.130682 0.215909 +vt 0.119318 0.204545 +vt 0.113636 0.215909 +vt 0.113636 0.203023 +vt 0.132204 0.198864 +vt 0.125000 0.193182 +vt 0.117796 0.198864 +vt 0.125000 0.193182 +vt 0.119318 0.193182 +vt 0.505682 0.426136 +vt 0.619318 0.426136 +vt 0.625000 0.431818 +vt 0.681818 0.431818 +vt 0.500000 0.431818 +vt 0.392045 0.431818 +vt 0.005682 0.420455 +vt 0.142045 0.431818 +vt -0.000000 0.431818 +vt 0.312500 0.420455 +vt 0.153409 0.426136 +vt 0.500000 0.397727 +vt 0.488636 0.329545 +vt 0.659091 0.397727 +vt 0.670455 0.403409 +vt 0.488636 0.403409 +vt 0.363636 0.409091 +vt 0.591670 0.531250 +vt 0.601512 0.531250 +vt 0.596591 0.539773 +vt 0.619318 0.573864 +vt 0.613636 0.579545 +vt 0.613636 0.573864 +vt 0.619318 0.579545 +vt 0.613636 0.585227 +vt 0.619318 0.590909 +vt 0.619318 0.585227 +vt 0.619318 0.596591 +vt 0.613636 0.590909 +vt 0.619318 0.602273 +vt 0.613636 0.596591 +vt 0.619318 0.607955 +vt 0.613636 0.602273 +vt 0.619318 0.539773 +vt 0.613636 0.545455 +vt 0.613636 0.539773 +vt 0.619318 0.545455 +vt 0.613636 0.551136 +vt 0.619318 0.556818 +vt 0.619318 0.551136 +vt 0.619318 0.562500 +vt 0.613636 0.556818 +vt 0.619318 0.568182 +vt 0.613636 0.562500 +vt 0.613636 0.568182 +vt 0.750000 0.431818 +vt 0.784091 0.426136 +vt 0.784091 0.482955 +vt 0.357955 -0.000000 +vt 0.180676 0.109375 +vt 0.173295 0.096591 +vt 0.165915 0.109375 +vt 0.165915 0.109375 +vt 0.173295 0.096591 +vt 0.180676 0.109375 +vt 0.073864 0.312500 +vt 0.090909 0.323864 +vt 0.056818 0.323864 +vt 0.062500 0.181818 +vt 0.056818 0.204545 +vt 0.056818 0.181818 +vt 0.056818 0.227273 +vt 0.062500 0.272727 +vt 0.056818 0.272727 +vt 0.062500 0.204545 +vt 0.056818 0.215909 +vt 0.034091 0.204545 +vt 0.028409 0.181818 +vt 0.034091 0.181818 +vt 0.062500 0.221591 +vt 0.034091 0.215909 +vt 0.028409 0.204545 +vt 0.028409 0.221591 +vt 0.034091 0.227273 +vt 0.130682 0.261364 +vt 0.136364 0.272727 +vt 0.130682 0.272727 +vt 0.136364 0.250000 +vt 0.136364 0.261364 +vt 0.125000 0.250000 +vt 0.136364 0.232955 +vt 0.130682 0.250000 +vt 0.159091 0.278409 +vt 0.159091 0.272727 +vt 0.164773 0.261364 +vt 0.159091 0.261364 +vt 0.164773 0.250000 +vt 0.159091 0.250000 +vt 0.159091 0.232955 +vt 0.170455 0.250000 +vt 0.164773 0.250000 +vt 0.210227 0.034091 +vt 0.198864 0.034091 +vt 0.215909 0.028409 +vt 0.301136 0.431818 +vt 0.295455 0.431818 +vt 0.318182 0.420455 +vt 0.318182 0.426136 +vt 0.312500 0.431818 +vt 0.153409 0.130682 +vt 0.159091 0.136364 +vt 0.153409 0.136364 +vt 0.164773 0.130682 +vt 0.159091 0.130682 +vt 0.170455 0.136364 +vt 0.170455 0.130682 +vt 0.176136 0.130682 +vt 0.176136 0.136364 +vt 0.170455 0.147727 +vt 0.170455 0.136364 +vt 0.187500 0.017045 +vt 0.193182 0.017045 +vt 0.193182 0.028409 +vt 0.210227 0.007204 +vt 0.340909 0.414768 +vt 0.332388 0.417051 +vt 0.363636 0.346591 +vt 0.318182 0.346591 +vt 0.062500 0.289773 +vt 0.068182 0.306818 +vt 0.056818 0.306818 +vt 0.062500 0.278409 +vt 0.056818 0.289773 +vt 0.090909 0.278409 +vt 0.113636 0.232955 +vt 0.113636 0.278409 +vt 0.000000 0.323864 +vt 0.017045 0.312500 +vt 0.034091 0.323864 +vt 0.022727 0.306818 +vt 0.028409 0.289773 +vt 0.034091 0.306818 +vt 0.028409 0.278409 +vt 0.034091 0.289773 +vt 0.028409 0.289773 +vt 0.028409 0.272727 +vt 0.028409 0.227273 +vt 0.034091 0.272727 +vt 0.252841 0.272729 +vt 0.248824 0.277233 +vt 0.244320 0.272729 +vt 0.256858 0.277233 +vt 0.261362 0.281250 +vt 0.258522 0.281250 +vt 0.284091 0.244318 +vt 0.255682 0.210227 +vt 0.289773 0.210227 +vt 0.221591 0.295455 +vt 0.238636 0.306818 +vt 0.221591 0.306818 +vt 0.238636 0.267045 +vt 0.221591 0.278409 +vt 0.221591 0.267045 +vt 0.244318 0.278409 +vt 0.265870 0.277233 +vt 0.261365 0.281250 +vt 0.261365 0.272729 +vt 0.264206 0.281250 +vt 0.263861 0.287275 +vt 0.265870 0.285267 +vt 0.269886 0.289771 +vt 0.273903 0.285267 +vt 0.269886 0.286931 +vt 0.275567 0.281250 +vt 0.275912 0.287275 +vt 0.273903 0.277233 +vt 0.278407 0.281250 +vt 0.269886 0.272729 +vt 0.269886 0.275569 +vt 0.258866 0.287275 +vt 0.256858 0.285267 +vt 0.252841 0.289771 +vt 0.252841 0.286931 +vt 0.248824 0.285267 +vt 0.246816 0.287275 +vt 0.247160 0.281250 +vt 0.244320 0.281250 +vt 0.261362 0.272729 +vt 0.215909 0.267045 +vt 0.221591 0.278409 +vt 0.215909 0.278409 +vt 0.198864 0.267045 +vt 0.198864 0.278409 +vt 0.193182 0.278409 +vt 0.318182 0.255682 +vt 0.318182 0.244318 +vt 0.198864 0.267045 +vt 0.193182 0.255682 +vt 0.198864 0.255682 +vt 0.215909 0.267045 +vt 0.215909 0.255682 +vt 0.221591 0.255682 +vt 0.244318 0.267045 +vt 0.250000 0.261364 +vt 0.255682 0.267045 +vt 0.187500 0.255682 +vt 0.187500 0.244318 +vt 0.284091 0.255682 +vt 0.255682 0.244318 +vt 0.823864 0.477273 +vt 0.829545 0.482955 +vt 0.823864 0.482955 +vt 0.823864 0.471591 +vt 0.829545 0.477273 +vt 0.823864 0.465909 +vt 0.829545 0.471591 +vt 0.818182 0.477273 +vt 0.835227 0.477273 +vt 0.840909 0.482955 +vt 0.681818 0.522727 +vt 0.698864 0.500000 +vt 0.698864 0.522727 +vt 0.937500 0.500000 +vt 0.954545 0.522727 +vt 0.937500 0.522727 +vt 0.931818 0.522727 +vt 0.704545 0.522727 +vt 0.704545 0.500000 +vt 0.721591 0.522727 +vt 0.914773 0.522727 +vt 0.931818 0.500000 +vt 0.681818 0.528409 +vt 0.954545 0.528409 +vt 0.937500 0.528409 +vt 0.954545 0.494318 +vt 0.954545 0.500000 +vt 0.681818 0.494318 +vt 0.681818 0.500000 +vt 0.840909 0.448864 +vt 0.818182 0.460227 +vt 0.818182 0.448864 +vt 0.818182 0.465909 +vt 0.806818 0.477273 +vt 0.806818 0.471591 +vt 0.852273 0.477273 +vt 0.852273 0.431818 +vt 0.745079 0.531250 +vt 0.754921 0.531250 +vt 0.750000 0.539773 +vt 0.796216 0.531250 +vt 0.806057 0.531250 +vt 0.801136 0.539773 +vt 0.914773 0.443182 +vt 0.909091 0.431818 +vt 0.914773 0.431818 +vt 0.875000 0.443182 +vt 0.909091 0.448864 +vt 0.869318 0.448864 +vt 0.909091 0.426136 +vt 0.875000 0.431818 +vt 0.869318 0.426136 +vt 0.869318 0.443182 +vt 0.869318 0.431818 +vt 0.860795 0.562500 +vt 0.869318 0.553977 +vt 0.860795 0.545455 +vt 0.880682 0.551136 +vt 0.879018 0.555154 +vt 0.875000 0.556818 +vt 0.568182 0.062500 +vt 0.562500 0.068182 +vt 0.556818 0.062500 +vt 0.494318 0.073864 +vt 0.528409 0.068182 +vt 0.528409 0.073864 +vt 0.426136 0.073864 +vt 0.460227 0.068182 +vt 0.460227 0.073864 +vt 0.403409 0.068182 +vt 0.414773 0.073864 +vt 0.403409 0.073864 +vt 0.471591 0.073864 +vt 0.482955 0.068182 +vt 0.482955 0.073864 +vt 0.420455 0.079545 +vt 0.397727 0.085227 +vt 0.397727 0.079545 +vt 0.488636 0.085227 +vt 0.534091 0.079545 +vt 0.534091 0.085227 +vt 0.465909 0.085227 +vt 0.488636 0.079545 +vt 0.465909 0.079545 +vt 0.420455 0.085227 +vt 0.414773 0.090909 +vt 0.403409 0.090909 +vt 0.494318 0.090909 +vt 0.528409 0.090909 +vt 0.471591 0.090909 +vt 0.482955 0.090909 +vt 0.426136 0.090909 +vt 0.460227 0.090909 +vt 0.806818 0.522727 +vt 0.750000 0.522727 +vt 0.903409 0.528409 +vt 0.573864 0.295455 +vt 0.534091 0.079545 +vt 0.579545 0.079545 +vt 0.579545 0.210227 +vt 0.534091 0.068182 +vt 0.579545 0.068182 +vt 0.181818 0.318182 +vt 0.500000 0.318182 +vt 0.221591 0.168932 +vt 0.215909 0.170455 +vt 0.210227 0.168932 +vt 0.204545 0.159091 +vt 0.206068 0.153409 +vt 0.210227 0.149250 +vt 0.221591 0.149250 +vt 0.225750 0.153409 +vt 0.227273 0.159091 +vt 0.301136 0.210227 +vt 0.301136 0.164773 +vt 0.125000 0.068182 +vt 0.164773 0.119318 +vt 0.363636 0.420455 +vt 0.181818 0.147727 +vt 0.215909 0.130682 +vt 0.193182 0.130682 +vt 0.198864 0.149250 +vt 0.203023 0.153409 +vt 0.204545 0.159091 +vt 0.198864 0.168932 +vt 0.193182 0.170455 +vt 0.187500 0.168932 +vt 0.181818 0.159091 +vt 0.183341 0.153409 +vt 0.187500 0.149250 +vt 0.153409 0.203023 +vt 0.119318 0.215909 +vt 0.130682 0.193182 +vt 0.170455 0.426136 +vt 0.500000 0.329545 +vt 0.593750 0.539012 +vt 0.591670 0.536932 +vt 0.590909 0.534091 +vt 0.593750 0.529170 +vt 0.596591 0.528409 +vt 0.599432 0.529170 +vt 0.602273 0.534091 +vt 0.601512 0.536932 +vt 0.599432 0.539012 +vt 0.613636 0.607955 +vt 0.806818 0.443182 +vt 0.806818 0.465909 +vt 0.750000 0.482955 +vt 0.750000 0.477273 +vt 0.738644 0.474222 +vt 0.730327 0.465905 +vt 0.727273 0.454545 +vt 0.730327 0.443181 +vt 0.738644 0.434864 +vt 0.750000 0.426136 +vt 0.323864 -0.000000 +vt 0.169034 0.112495 +vt 0.173295 0.113636 +vt 0.177557 0.112495 +vt 0.181818 0.105114 +vt 0.180676 0.100852 +vt 0.177557 0.097733 +vt 0.169034 0.097733 +vt 0.165915 0.100852 +vt 0.164773 0.105114 +vt 0.177557 0.112495 +vt 0.173295 0.113636 +vt 0.169034 0.112495 +vt 0.164773 0.105114 +vt 0.165915 0.100852 +vt 0.169034 0.097733 +vt 0.177557 0.097733 +vt 0.180676 0.100852 +vt 0.181818 0.105114 +vt 0.085227 0.312500 +vt 0.062500 0.227273 +vt 0.062500 0.215909 +vt 0.028409 0.215909 +vt 0.130682 0.250000 +vt 0.113636 0.232955 +vt 0.136364 0.278409 +vt 0.164773 0.272727 +vt 0.181818 0.232955 +vt 0.181818 0.431818 +vt 0.164773 0.136364 +vt 0.176136 0.136364 +vt 0.176136 0.147727 +vt 0.221591 0.005682 +vt 0.221591 0.017045 +vt 0.213068 0.002841 +vt 0.318182 0.420455 +vt 0.357952 0.420449 +vt 0.349431 0.417051 +vt 0.323866 0.420449 +vt 0.375000 0.318182 +vt 0.306818 0.318182 +vt 0.068182 0.289773 +vt 0.062500 0.289773 +vt 0.090909 0.232955 +vt 0.005682 0.312500 +vt 0.022727 0.289773 +vt 0.252841 0.275569 +vt 0.244318 0.295455 +vt 0.278407 0.272729 +vt 0.254018 0.271063 +vt 0.250000 0.272727 +vt 0.245982 0.271063 +vt 0.245982 0.263028 +vt 0.254018 0.263028 +vt 0.221591 0.244318 +vt 0.255682 0.255682 +vt 0.829545 0.465909 +vt 0.812500 0.482955 +vt 0.721591 0.500000 +vt 0.914773 0.500000 +vt 0.698864 0.528409 +vt 0.937500 0.494318 +vt 0.698864 0.494318 +vt 0.840909 0.460227 +vt 0.806818 0.437500 +vt 0.806818 0.431818 +vt 0.818182 0.443182 +vt 0.869318 0.426136 +vt 0.869318 0.482955 +vt 0.840909 0.465909 +vt 0.840909 0.443182 +vt 0.747159 0.539012 +vt 0.745079 0.536932 +vt 0.744318 0.534091 +vt 0.747159 0.529170 +vt 0.750000 0.528409 +vt 0.752841 0.529170 +vt 0.755682 0.534091 +vt 0.754921 0.536932 +vt 0.752841 0.539012 +vt 0.798295 0.539012 +vt 0.796216 0.536932 +vt 0.795455 0.534091 +vt 0.798295 0.529170 +vt 0.801136 0.528409 +vt 0.803977 0.529170 +vt 0.806818 0.534091 +vt 0.806057 0.536932 +vt 0.803977 0.539012 +vt 0.909091 0.443182 +vt 0.852273 0.553977 +vt 0.854769 0.560004 +vt 0.866822 0.560004 +vt 0.866822 0.547951 +vt 0.854769 0.547951 +vt 0.870982 0.555154 +vt 0.869318 0.551136 +vt 0.870982 0.547119 +vt 0.875000 0.545455 +vt 0.879018 0.547119 +vt 0.558482 0.058482 +vt 0.562500 0.056818 +vt 0.566518 0.058482 +vt 0.566518 0.066518 +vt 0.558482 0.066518 +vt 0.494318 0.068182 +vt 0.426136 0.068182 +vt 0.414773 0.068182 +vt 0.471591 0.068182 +vt 0.573864 0.107955 +vt 0.363636 0.125000 +vt 0.363636 0.107955 +vt 0.363636 0.284091 +vt 0.573864 0.301136 +vt 0.363636 0.301136 +vt 0.573864 0.090909 +vt 0.363636 0.090909 +vt 0.573864 0.318182 +vt 0.363636 0.318182 +vt 0.363636 0.250000 +vt 0.573864 0.284091 +vt 0.363636 0.215909 +vt 0.363636 0.238636 +vt 0.573864 0.238636 +vt 0.886364 0.500000 +vt 0.852273 0.482955 +vt 0.886364 0.482955 +vt 0.829545 0.482955 +vt 0.806818 0.482955 +vt 0.750000 0.500000 +vt 0.607955 0.079545 +vt 0.579545 0.079545 +vt 0.607955 0.318182 +vt 0.579545 0.318182 +vt 0.897727 0.062500 +vt 0.613636 0.079545 +vt 0.613636 0.062500 +vt 0.613636 0.301136 +vt 0.897727 0.318182 +vt 0.613636 0.318182 +vt 0.897727 0.045455 +vt 0.613636 0.045455 +vt 0.613636 0.284091 +vt 0.897727 0.301136 +vt 0.613636 0.170455 +vt 0.903409 0.198864 +vt 0.613636 0.193182 +vt 0.903409 0.210227 +vt 0.613636 0.210227 +vt 0.903409 0.164773 +vt 0.903409 0.153409 +vt 0.613636 0.153409 +vt 0.363636 0.159091 +vt 0.573864 0.125000 +vt 0.573864 0.170455 +vt 0.573864 0.193182 +vt 0.363636 0.170455 +vt 0.363636 0.193182 +vt -0.000000 0.443182 +vt 0.056818 0.437500 +vt 0.056818 0.443182 +vt 0.681818 0.443182 +vt 0.625000 0.448864 +vt 0.625000 0.443182 +vt 0.312500 0.181818 +vt 0.159091 0.176136 +vt 0.312500 0.176136 +vt -0.000000 0.448864 +vt 0.056818 0.448864 +vt 0.681818 0.437500 +vt 0.625000 0.437500 +vt 0.312500 0.187500 +vt 0.159091 0.181818 +vt 0.312500 0.164773 +vt 0.312500 0.159091 +vt 0.221591 0.204545 +vt 0.215909 0.198864 +vt 0.125000 0.073864 +vt 0.130682 0.068182 +vt 0.130682 0.073864 +vt 0.312500 0.170455 +vt 0.312500 0.210227 +vt 0.312500 0.204545 +vt 0.312500 0.153409 +vt 0.312500 0.147727 +vt 0.125000 0.187500 +vt 0.312500 0.215909 +vt 0.119318 0.164773 +vt 0.119318 0.153409 +vt 0.125000 0.164773 +vt 0.125000 0.153409 +vt 0.312500 0.193182 +vt 0.204545 0.193182 +vt 0.125000 0.181818 +vt 0.119318 0.181818 +vt 0.193182 0.443182 +vt 0.500000 0.443182 +vt 0.488636 0.443182 +vt 0.482955 0.448864 +vt 0.392045 0.443182 +vt 0.289773 0.443182 +vt 0.198864 0.448864 +vt 0.159091 0.159091 +vt 0.176136 0.164773 +vt 0.159091 0.164773 +vt 0.159091 0.210227 +vt 0.170455 0.215909 +vt 0.159091 0.215909 +vt 0.159091 0.147727 +vt 0.170455 0.153409 +vt 0.159091 0.153409 +vt 0.159091 0.198864 +vt 0.176136 0.204545 +vt 0.159091 0.204545 +vt 0.170455 0.210227 +vt 0.176136 0.153409 +vt 0.176136 0.159091 +vt 0.130682 0.187500 +vt 0.295455 0.170455 +vt 0.176136 0.198864 +vt 0.159091 0.193182 +vt 0.187500 0.193182 +vt 0.159091 0.170455 +vt 0.147727 0.136364 +vt 0.744318 0.602273 +vt 0.744318 0.607955 +vt 0.744318 0.585227 +vt 0.744318 0.590909 +vt 0.744318 0.556818 +vt 0.744318 0.562500 +vt 0.744318 0.539773 +vt 0.744318 0.545455 +vt 0.744318 0.596591 +vt 0.744318 0.568182 +vt 0.744318 0.573864 +vt 0.744318 0.579545 +vt 0.744318 0.551136 +vt 0.590909 0.573864 +vt 0.590909 0.585227 +vt 0.590909 0.556818 +vt 0.590909 0.607955 +vt 0.590909 0.590909 +vt 0.590909 0.562500 +vt 0.590909 0.545455 +vt 0.590909 0.596591 +vt 0.590909 0.568182 +vt 0.590909 0.579545 +vt 0.590909 0.551136 +vt 0.590909 0.602273 +vt 0.732955 0.500000 +vt 0.721591 0.482955 +vt 0.732955 0.482955 +vt 0.903409 0.500000 +vt 0.892045 0.482955 +vt 0.903409 0.482955 +vt 0.721591 0.500000 +vt 0.710227 0.482955 +vt 0.926136 0.500000 +vt 0.914773 0.482955 +vt 0.926136 0.482955 +vt 0.744318 0.500000 +vt 0.744318 0.482955 +vt 0.914773 0.500000 +vt 0.892045 0.500000 +vt 0.613636 0.125000 +vt 0.897727 0.079545 +vt 0.903409 0.102273 +vt 0.903409 0.261364 +vt 0.897727 0.284091 +vt 0.613636 0.238636 +vt 0.909091 0.272727 +vt 0.903409 0.272727 +vt 0.903409 0.090909 +vt 0.909091 0.090909 +vt 0.903409 0.079545 +vt 0.909091 0.284091 +vt 0.613636 0.045455 +vt 0.607955 0.062500 +vt 0.590909 0.068182 +vt 0.181818 0.096591 +vt 0.176136 0.090909 +vt 0.181818 0.090909 +vt 0.181818 0.045455 +vt 0.176136 0.039773 +vt 0.181818 0.039773 +vt 0.181818 0.073864 +vt 0.176136 0.068182 +vt 0.181818 0.068182 +vt 0.181818 0.062500 +vt 0.176136 0.056818 +vt 0.181818 0.056818 +vt 0.176136 0.085227 +vt 0.181818 0.085227 +vt 0.176136 0.034091 +vt 0.181818 0.034091 +vt 0.176136 0.062500 +vt 0.176136 0.051136 +vt 0.181818 0.051136 +vt 0.176136 0.079545 +vt 0.181818 0.079545 +vt 0.176136 0.028409 +vt 0.181818 0.028409 +vt 0.176136 0.045455 +vt 0.176136 0.073864 +vt 0.176136 0.028409 +vt 0.181818 0.034091 +vt 0.176136 0.034091 +vt 0.176136 0.079545 +vt 0.181818 0.085227 +vt 0.176136 0.085227 +vt 0.176136 0.051136 +vt 0.181818 0.056818 +vt 0.176136 0.056818 +vt 0.176136 0.062500 +vt 0.181818 0.068182 +vt 0.176136 0.068182 +vt 0.181818 0.039773 +vt 0.176136 0.039773 +vt 0.181818 0.090909 +vt 0.176136 0.090909 +vt 0.181818 0.062500 +vt 0.181818 0.073864 +vt 0.176136 0.073864 +vt 0.181818 0.045455 +vt 0.176136 0.045455 +vt 0.181818 0.096591 +vt 0.176136 0.096591 +vt 0.181818 0.079545 +vt 0.181818 0.051136 +vt 0.090909 0.295455 +vt 0.113636 0.312500 +vt 0.090909 0.312500 +vt 0.113636 0.295455 +vt 0.113636 0.193182 +vt 0.090909 0.215909 +vt 0.090909 0.193182 +vt 0.113636 0.227273 +vt 0.090909 0.227273 +vt 0.159091 0.301136 +vt 0.136364 0.318182 +vt 0.136364 0.301136 +vt 0.159091 0.289773 +vt 0.176136 0.113636 +vt 0.170455 0.113636 +vt 0.159091 0.119318 +vt 0.153409 0.119318 +vt 0.181818 0.113636 +vt 0.136364 0.136364 +vt 0.147727 0.130682 +vt 0.113636 0.323864 +vt 0.250000 0.301136 +vt 0.244318 0.289773 +vt 0.250000 0.289773 +vt 0.261364 0.301136 +vt 0.255682 0.289773 +vt 0.261364 0.289773 +vt 0.255682 0.301136 +vt 0.267045 0.301136 +vt 0.267045 0.289773 +vt 0.284091 0.261364 +vt 0.278409 0.272727 +vt 0.278409 0.261364 +vt 0.295455 0.261364 +vt 0.289773 0.272727 +vt 0.289773 0.261364 +vt 0.261364 0.261364 +vt 0.255682 0.272727 +vt 0.255682 0.261364 +vt 0.272727 0.261364 +vt 0.267045 0.272727 +vt 0.267045 0.261364 +vt 0.284091 0.272727 +vt 0.301136 0.261364 +vt 0.295455 0.272727 +vt 0.261364 0.272727 +vt 0.272727 0.272727 +vt 0.244318 0.255682 +vt 0.221591 0.318182 +vt 0.289773 0.261364 +vt 0.284091 0.255682 +vt 0.289773 0.255682 +vt 0.278409 0.261364 +vt 0.272727 0.255682 +vt 0.278409 0.255682 +vt 0.267045 0.261364 +vt 0.261364 0.255682 +vt 0.267045 0.255682 +vt 0.250000 0.261364 +vt 0.244318 0.255682 +vt 0.250000 0.255682 +vt 0.284091 0.261364 +vt 0.272727 0.261364 +vt 0.261364 0.261364 +vt 0.255682 0.255682 +vt 0.255682 0.261364 +vt 0.193182 0.289773 +vt 0.732955 0.500000 +vt 0.903409 0.500000 +vt 0.744318 0.562500 +vt 0.795455 0.556818 +vt 0.795455 0.562500 +vt 0.744318 0.545455 +vt 0.795455 0.539773 +vt 0.795455 0.545455 +vt 0.744318 0.596591 +vt 0.795455 0.590909 +vt 0.795455 0.596591 +vt 0.744318 0.568182 +vt 0.795455 0.568182 +vt 0.744318 0.579545 +vt 0.795455 0.573864 +vt 0.795455 0.579545 +vt 0.744318 0.551136 +vt 0.795455 0.551136 +vt 0.744318 0.602273 +vt 0.795455 0.602273 +vt 0.744318 0.573864 +vt 0.744318 0.585227 +vt 0.795455 0.585227 +vt 0.744318 0.556818 +vt 0.744318 0.607955 +vt 0.795455 0.607955 +vt 0.744318 0.590909 +vt 0.795455 0.573864 +vt 0.852273 0.568182 +vt 0.852273 0.573864 +vt 0.795455 0.585227 +vt 0.852273 0.579545 +vt 0.852273 0.585227 +vt 0.795455 0.556818 +vt 0.852273 0.551136 +vt 0.852273 0.556818 +vt 0.795455 0.607955 +vt 0.852273 0.602273 +vt 0.852273 0.607955 +vt 0.795455 0.590909 +vt 0.852273 0.590909 +vt 0.795455 0.562500 +vt 0.852273 0.562500 +vt 0.795455 0.545455 +vt 0.852273 0.539773 +vt 0.852273 0.545455 +vt 0.795455 0.596591 +vt 0.852273 0.596591 +vt 0.795455 0.568182 +vt 0.795455 0.579545 +vt 0.795455 0.551136 +vt 0.795455 0.602273 +vt 0.852273 0.585227 +vt 0.857955 0.590909 +vt 0.852273 0.590909 +vt 0.857955 0.579545 +vt 0.857955 0.585227 +vt 0.852273 0.568182 +vt 0.857955 0.573864 +vt 0.852273 0.573864 +vt 0.857955 0.596591 +vt 0.852273 0.596591 +vt 0.852273 0.579545 +vt 0.857955 0.602273 +vt 0.852273 0.602273 +vt 0.863636 0.596591 +vt 0.863636 0.568182 +vt 0.863636 0.573864 +vt 0.863636 0.590909 +vt 0.863636 0.602273 +vt 0.863636 0.579545 +vt 0.863636 0.585227 +vt 0.855114 0.607955 +vt 0.860795 0.607955 +vt 0.855114 0.562500 +vt 0.857955 0.568182 +vt 0.860795 0.562500 +vt 0.937500 0.590909 +vt 0.937500 0.602273 +vt 0.937500 0.585227 +vt 0.863636 0.562500 +vt 0.937500 0.568182 +vt 0.937500 0.579545 +vt 0.937500 0.607955 +vt 0.863636 0.607955 +vt 0.937500 0.596591 +vt 0.937500 0.573864 +vt 0.892045 0.556818 +vt 0.886364 0.562500 +vt 0.886364 0.556818 +vt 0.880682 0.562500 +vt 0.880682 0.556818 +vt 0.875000 0.562500 +vt 0.875000 0.556818 +vt 0.869318 0.556818 +vt 0.869318 0.562500 +vt 0.914773 0.556818 +vt 0.909091 0.562500 +vt 0.909091 0.556818 +vt 0.903409 0.562500 +vt 0.903409 0.556818 +vt 0.897727 0.556818 +vt 0.892045 0.562500 +vt 0.897727 0.562500 +vt 0.562500 0.056818 +vt 0.568182 0.045455 +vt 0.568182 0.056818 +vt 0.551136 0.056818 +vt 0.556818 0.045455 +vt 0.556818 0.056818 +vt 0.534091 0.056818 +vt 0.539773 0.045455 +vt 0.539773 0.056818 +vt 0.522727 0.056818 +vt 0.528409 0.045455 +vt 0.528409 0.056818 +vt 0.562500 0.045455 +vt 0.545455 0.056818 +vt 0.551136 0.045455 +vt 0.545455 0.045455 +vt 0.534091 0.045455 +vt -0.000000 0.437500 +vt 0.681818 0.448864 +vt 0.159091 0.187500 +vt 0.312500 0.198864 +vt 0.125000 0.068182 +vt 0.136364 0.437500 +vt 0.181818 0.443182 +vt 0.392045 0.448864 +vt 0.289773 0.448864 +vt 0.170455 0.147727 +vt 0.176136 0.210227 +vt 0.181818 0.170455 +vt 0.590909 0.539773 +vt 0.710227 0.500000 +vt 0.909091 0.079545 +vt 0.903409 0.284091 +vt 0.573864 0.062500 +vt 0.568182 0.045455 +vt 0.176136 0.096591 +vt 0.181818 0.028409 +vt 0.113636 0.215909 +vt 0.159091 0.318182 +vt 0.136364 0.289773 +vt 0.181818 0.142045 +vt 0.176136 0.142045 +vt 0.244318 0.301136 +vt 0.301136 0.272727 +vt 0.244318 0.318182 +vt 0.244318 0.261364 +vt 0.221591 0.289773 +vt 0.744318 0.539773 +vt 0.795455 0.539773 +vt 0.937500 0.562500 +vt 0.914773 0.562500 +vt 0.522727 0.045455 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.8944 -0.4472 -0.0000 +vn -0.8944 -0.4472 -0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 -0.0000 +vn 0.0000 -0.9950 0.0995 +vn 0.8944 0.0000 -0.4472 +vn 0.7071 -0.7071 -0.0000 +vn 0.8944 0.0000 0.4472 +vn 0.0000 -0.9939 0.1104 +vn 0.0000 -0.4472 0.8944 +vn -1.0000 0.0000 0.0000 +vn -0.5000 0.8660 0.0000 +vn -0.3704 0.9289 0.0000 +vn -0.8944 0.4472 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 -0.7071 +vn -0.8944 0.0035 0.4472 +vn -0.8944 0.0000 -0.4472 +vn -0.6857 -0.7279 -0.0014 +vn -1.0000 0.0048 -0.0005 +vn -0.8660 0.5000 0.0000 +vn 0.8944 0.4472 0.0000 +vn 0.0000 0.9923 -0.1240 +vn 0.0000 -0.9923 0.1240 +vn 0.0000 0.4472 0.8944 +vn 0.9864 0.0000 0.1644 +vn 0.0000 0.5547 0.8321 +vn -0.9487 0.3162 0.0000 +vn 0.9487 0.3162 0.0000 +vn 0.9487 -0.3162 0.0000 +vn -0.9487 -0.3162 0.0000 +vn -0.3551 0.0000 0.9348 +vn -0.8861 0.0000 0.4635 +vn -0.7071 -0.7071 0.0000 +vn -1.0000 0.0000 -0.0021 +vn -0.7071 0.7071 0.0000 +vn -0.9871 0.1602 0.0000 +vn 0.9871 0.1602 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.9597 -0.2806 0.0152 +vn 0.4782 -0.8770 0.0474 +vn 0.4647 -0.8842 0.0478 +vn 0.9542 -0.2988 0.0162 +vn -0.9943 0.1066 0.0000 +vn -0.8507 0.5257 0.0000 +vn 0.4472 -0.8944 0.0000 +vn -0.4472 -0.8944 0.0000 +vn 0.8507 0.5257 -0.0000 +vn 0.9943 0.1066 0.0000 +vn -0.7555 0.6552 0.0000 +vn 0.7555 0.6552 0.0000 +vn -0.4775 -0.8755 0.0750 +vn 0.5175 -0.8522 0.0770 +vn 0.4775 -0.8755 0.0750 +vn 0.9689 -0.2458 0.0287 +vn 0.9616 -0.2730 0.0268 +vn -0.5175 -0.8522 0.0770 +vn -0.9689 -0.2458 0.0287 +vn -0.9616 -0.2730 0.0268 +vn -0.9597 -0.2806 0.0152 +vn -0.9542 -0.2988 0.0162 +vn -0.4647 -0.8842 0.0478 +vn -0.4782 -0.8770 0.0474 +vn 0.5000 0.8660 0.0000 +vn 0.9071 0.4210 0.0000 +vn -0.9659 0.2588 0.0000 +vn 0.8660 -0.5000 0.0000 +vn -0.9071 -0.4210 0.0000 +vn -0.9659 -0.2588 0.0000 +vn -0.9898 0.1424 0.0000 +vn -0.0000 0.9239 -0.3827 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.9336 -0.3583 +vn 0.8660 0.5000 0.0000 +vn 0.9986 0.0526 0.0000 +vn -0.5000 -0.8660 0.0000 +vn -0.8660 -0.5000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn 0.0000 0.9239 0.3827 +vn 0.9659 0.2588 0.0000 +vn 0.0000 0.9753 -0.2207 +vn 0.0000 0.8094 -0.5873 +vn 0.0000 0.9732 -0.2298 +vn -0.0524 0.7901 -0.6107 +vn -0.7529 0.6581 0.0000 +vn 0.0000 0.9732 0.2298 +vn 0.0000 0.9753 0.2207 +vn -0.1963 0.5576 -0.8065 +vn -0.2773 0.4804 -0.8321 +vn 0.8587 0.5125 0.0000 +vn -0.8587 0.5125 0.0000 +vn -0.8112 0.5847 0.0000 +vn 0.8223 0.5691 0.0000 +vn 0.5751 -0.8181 0.0000 +vn -0.5751 -0.8181 0.0000 +vn 0.0000 0.8944 0.4472 +vn 0.0000 0.9336 0.3583 +vn 0.0000 0.7071 0.7071 +vn 0.7768 0.6297 0.0000 +vn -0.9976 0.0690 0.0000 +vn 0.0000 0.8507 -0.5257 +vn -0.6088 0.7934 0.0000 +vn 0.6088 0.7934 0.0000 +vn -0.9902 0.1396 0.0000 +vn 0.9902 0.1396 0.0000 +vn 0.0000 0.2693 -0.9631 +vn 0.0000 0.2298 -0.9732 +vn 0.0000 0.4472 -0.8944 +vn 0.0000 -0.8660 -0.5000 +vn 0.0000 -0.5000 0.8660 +vn 0.0000 0.5000 -0.8660 +vn 0.0000 0.8660 -0.5000 +vn 0.0000 0.8660 0.5000 +vn 0.0000 -0.5000 -0.8660 +vn 0.0000 -0.8660 0.5000 +vn 0.0000 0.5000 0.8660 +vn 0.0000 0.3827 0.9239 +vn 0.0000 -0.2298 0.9732 +vn 0.0000 -0.5847 0.8112 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.5847 -0.8112 +vn 0.0000 -0.3162 -0.9487 +vn 0.0000 -0.1602 -0.9871 +vn 0.0000 -0.2298 -0.9732 +vn 0.0000 -0.4472 -0.8944 +vn 0.0000 -0.2898 0.9571 +vn 0.0000 -0.5547 0.8321 +vn 0.0000 0.2298 0.9732 +vn 0.3151 0.9490 0.0000 +vn 0.3337 0.9427 0.0000 +vn 0.3704 0.9289 0.0000 +vn 0.0000 0.8968 -0.4425 +vn -0.4210 0.9071 0.0000 +vn 0.0000 -0.1891 -0.9820 +vn 0.0000 -0.3714 -0.9285 +vn 0.0000 -0.5257 -0.8507 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.6070 -0.7947 +vn 0.0000 -0.8321 -0.5547 +vn 0.9239 0.3827 0.0000 +vn -0.9239 0.3827 0.0000 +vn -0.9925 0.1224 0.0000 +vn 0.5257 0.8507 0.0000 +vn -0.9732 0.2298 0.0000 +vn 0.1931 0.9812 0.0000 +vn -0.3827 -0.0000 -0.9239 +vn -0.5294 0.6630 -0.5294 +vn -0.2962 0.6333 -0.7150 +vn -0.5294 -0.6630 -0.5294 +vn 0.2611 -0.7311 0.6303 +vn -0.0671 -0.9955 -0.0671 +vn -0.0393 -0.9947 -0.0948 +vn -0.0671 0.9955 -0.0671 +vn -0.0393 0.9947 -0.0948 +vn -0.2962 -0.6333 -0.7150 +vn 0.4617 0.7574 0.4617 +vn 0.2611 0.7311 0.6303 +vn -0.0473 0.9987 -0.0196 +vn 0.6737 -0.7263 0.1363 +vn -0.0473 -0.9987 -0.0196 +vn -0.7194 0.6794 -0.1448 +vn 0.6737 0.7263 0.1363 +vn -0.7194 -0.6794 -0.1448 +vn -0.9824 -0.0000 -0.1866 +vn 0.9809 0.0000 0.1944 +vn 0.4617 -0.7574 0.4617 +vn -0.8944 0.0000 0.4472 +vn -0.6325 0.6325 0.4472 +vn 0.6325 0.6325 0.4472 +vn 0.6325 -0.6325 0.4472 +vn -0.0000 -0.8944 0.4472 +vn -0.6325 -0.6325 0.4472 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.2588 0.9659 0.0000 +s off +f 1/1/1 2/2/1 3/3/1 +f 4/4/1 1/1/1 3/3/1 +f 5/5/1 6/6/1 7/7/1 +f 8/8/1 4/4/1 9/9/1 +f 10/10/2 11/11/2 12/12/2 +f 13/13/2 14/14/2 15/15/2 +f 16/16/2 15/15/2 14/14/2 +f 17/17/2 12/12/2 18/18/2 +f 19/19/2 18/20/2 20/21/2 +f 21/22/2 19/19/2 20/21/2 +f 22/23/2 23/24/2 24/25/2 +f 23/26/2 25/27/2 13/13/2 +f 24/28/2 26/29/2 22/23/2 +f 27/30/1 28/31/1 29/32/1 +f 30/33/1 29/34/1 31/35/1 +f 32/36/1 30/33/1 31/35/1 +f 33/37/1 34/38/1 32/39/1 +f 35/40/1 36/41/1 37/42/1 +f 38/43/1 39/44/1 40/45/1 +f 41/46/1 42/47/1 43/48/1 +f 37/42/1 43/49/1 42/47/1 +f 41/50/1 40/45/1 44/51/1 +f 2/52/1 45/53/1 46/54/1 +f 47/55/1 6/6/1 48/56/1 +f 47/55/1 46/57/1 45/53/1 +f 49/58/3 50/59/3 51/60/3 +f 52/61/4 53/62/4 54/63/4 +f 55/64/5 56/65/5 57/66/5 +f 58/67/6 59/68/6 60/69/6 +f 61/70/7 60/69/7 62/71/7 +f 63/72/5 51/60/5 50/59/5 +f 64/73/8 50/59/8 57/66/8 +f 65/74/9 64/73/9 66/75/9 +f 58/76/10 66/75/10 56/65/10 +f 66/75/5 57/66/5 56/65/5 +f 67/77/5 65/74/5 68/78/5 +f 69/79/11 55/80/11 70/81/11 +f 70/81/12 57/82/12 71/83/12 +f 59/84/13 70/85/13 71/86/13 +f 72/87/1 59/68/1 56/88/1 +f 73/89/1 74/90/1 75/91/1 +f 76/92/1 77/93/1 78/94/1 +f 79/95/1 80/96/1 81/97/1 +f 82/98/1 83/99/1 84/100/1 +f 85/101/1 81/97/1 83/99/1 +f 77/93/1 82/102/1 84/103/1 +f 76/104/14 86/105/14 87/106/14 +f 88/107/15 89/108/15 90/109/15 +f 91/110/16 92/111/16 93/112/16 +f 94/113/17 95/114/17 96/115/17 +f 97/116/13 98/117/13 99/118/13 +f 100/119/5 101/120/5 102/121/5 +f 103/122/18 104/123/18 98/117/18 +f 105/124/19 102/121/19 101/120/19 +f 106/125/17 97/116/17 107/126/17 +f 100/119/17 108/127/17 109/128/17 +f 102/121/17 110/129/17 108/127/17 +f 94/113/17 103/122/17 106/125/17 +f 106/125/17 110/129/17 94/113/17 +f 95/130/5 105/124/5 111/131/5 +f 104/123/13 96/132/13 112/133/13 +f 113/134/2 114/135/2 115/136/2 +f 106/137/2 116/138/2 117/139/2 +f 118/140/5 106/137/5 107/141/5 +f 108/142/13 119/143/13 109/144/13 +f 99/145/2 107/141/2 97/146/2 +f 120/147/2 109/148/2 119/149/2 +f 118/140/2 99/145/2 121/150/2 +f 122/151/2 121/150/2 99/145/2 +f 119/149/2 123/152/2 120/147/2 +f 124/153/2 123/152/2 125/154/2 +f 126/155/13 92/111/13 127/156/13 +f 80/157/13 92/111/13 128/158/13 +f 93/112/13 122/159/13 129/160/13 +f 130/161/5 131/162/5 132/163/5 +f 89/164/5 133/165/5 130/161/5 +f 134/166/20 60/167/20 59/84/20 +f 135/168/21 52/61/21 136/169/21 +f 135/168/22 137/170/22 134/166/22 +f 71/86/23 134/166/23 59/84/23 +f 136/169/13 54/63/13 91/110/13 +f 137/170/13 91/110/13 138/171/13 +f 139/172/2 140/173/2 141/174/2 +f 142/175/2 143/176/2 144/177/2 +f 145/178/2 146/179/2 143/176/2 +f 147/180/2 146/179/2 148/181/2 +f 149/182/2 150/183/2 147/180/2 +f 151/184/2 152/185/2 149/182/2 +f 153/186/2 154/187/2 151/184/2 +f 153/188/2 155/189/2 156/190/2 +f 157/191/2 158/192/2 155/189/2 +f 159/193/2 158/192/2 160/194/2 +f 161/195/2 162/196/2 159/193/2 +f 163/197/2 164/198/2 161/195/2 +f 142/175/2 165/199/2 163/197/2 +f 166/200/2 167/201/2 168/202/2 +f 57/82/6 53/203/6 71/83/6 +f 169/204/13 170/205/13 171/206/13 +f 172/207/5 173/208/5 174/209/5 +f 175/210/13 176/211/13 177/212/13 +f 178/213/13 179/214/13 180/215/13 +f 181/216/13 182/217/13 183/218/13 +f 184/219/13 185/220/13 179/214/13 +f 186/221/5 187/222/5 188/223/5 +f 185/220/13 189/224/13 181/216/13 +f 190/225/5 191/226/5 186/221/5 +f 192/227/5 190/225/5 193/228/5 +f 194/229/13 195/230/13 196/231/13 +f 194/229/13 197/232/13 198/233/13 +f 199/234/13 200/235/13 197/236/13 +f 201/237/6 195/230/6 202/238/6 +f 203/239/5 202/238/5 204/240/5 +f 205/241/5 204/240/5 206/242/5 +f 207/243/5 205/244/5 206/245/5 +f 112/246/1 111/247/1 208/248/1 +f 89/164/5 209/249/5 210/250/5 +f 211/251/1 212/252/1 89/164/1 +f 213/253/1 89/164/1 212/252/1 +f 209/254/1 214/255/1 215/256/1 +f 216/257/1 214/255/1 217/258/1 +f 218/259/1 216/257/1 219/260/1 +f 220/261/1 218/259/1 219/260/1 +f 220/262/24 221/263/24 222/264/24 +f 223/265/13 224/266/13 225/267/13 +f 208/248/1 224/266/1 221/268/1 +f 89/164/25 130/161/25 67/77/25 +f 226/269/1 88/270/1 68/78/1 +f 137/170/13 138/171/13 227/271/13 +f 228/272/5 68/78/5 65/74/5 +f 229/273/13 230/274/13 175/275/13 +f 182/276/13 229/277/13 183/218/13 +f 182/278/26 192/279/26 231/280/26 +f 232/281/5 233/282/5 234/283/5 +f 235/284/5 236/285/5 233/286/5 +f 231/287/5 236/288/5 237/289/5 +f 193/228/5 231/290/5 192/291/5 +f 238/292/27 181/216/27 183/218/27 +f 239/293/2 240/294/2 241/295/2 +f 242/296/2 243/297/2 244/298/2 +f 245/299/6 246/300/6 247/301/6 +f 248/302/13 249/303/13 250/304/13 +f 251/305/5 252/306/5 253/307/5 +f 254/308/17 248/302/17 252/306/17 +f 255/309/1 256/310/1 257/311/1 +f 258/312/1 259/313/1 256/310/1 +f 260/314/1 261/315/1 259/313/1 +f 262/316/1 261/315/1 263/317/1 +f 264/318/1 265/319/1 262/316/1 +f 266/320/1 267/321/1 264/318/1 +f 268/322/1 266/320/1 269/323/1 +f 255/309/1 268/322/1 269/323/1 +f 244/298/2 270/324/2 271/325/2 +f 271/325/2 272/326/2 273/327/2 +f 272/326/2 274/328/2 273/327/2 +f 275/329/2 276/330/2 274/328/2 +f 277/331/2 240/294/2 276/330/2 +f 242/296/2 239/293/2 278/332/2 +f 251/333/28 279/334/28 254/335/28 +f 249/336/28 280/337/28 281/338/28 +f 282/339/29 245/299/29 247/340/29 +f 250/341/1 283/342/1 248/343/1 +f 253/344/1 252/345/1 284/346/1 +f 285/347/5 286/348/5 287/349/5 +f 283/342/1 282/350/1 247/351/1 +f 288/352/2 289/353/2 245/299/2 +f 290/354/1 291/355/1 292/356/1 +f 293/357/17 294/358/17 290/354/17 +f 295/359/30 296/360/30 293/357/30 +f 292/356/13 293/361/13 290/354/13 +f 291/355/5 296/362/5 297/363/5 +f 298/364/31 299/365/31 300/366/31 +f 301/367/32 302/368/32 303/369/32 +f 304/370/17 301/367/17 303/369/17 +f 299/365/17 305/371/17 300/366/17 +f 306/372/33 307/373/33 305/371/33 +f 308/374/34 309/375/34 304/370/34 +f 300/366/1 307/376/1 298/364/1 +f 303/369/1 308/377/1 304/378/1 +f 301/367/2 310/379/2 311/380/2 +f 312/381/2 299/365/2 313/382/2 +f 311/383/17 298/384/17 302/385/17 +f 307/386/1 8/387/1 9/388/1 +f 314/389/2 311/383/2 315/390/2 +f 316/391/2 317/392/2 318/393/2 +f 319/394/2 320/395/2 321/396/2 +f 322/397/2 323/398/2 324/399/2 +f 325/400/17 322/401/17 326/402/17 +f 324/403/6 327/404/6 328/405/6 +f 327/404/18 326/406/18 328/407/18 +f 323/398/13 325/400/13 327/404/13 +f 329/408/1 330/409/1 331/410/1 +f 332/411/2 333/412/2 334/413/2 +f 335/414/6 336/415/6 337/416/6 +f 338/417/2 339/418/2 340/419/2 +f 341/420/1 342/421/1 343/422/1 +f 339/423/5 341/424/5 340/425/5 +f 343/426/13 344/427/13 338/428/13 +f 345/429/13 346/430/13 347/431/13 +f 348/432/1 347/433/1 346/434/1 +f 349/435/5 350/436/5 348/432/5 +f 351/437/2 352/438/2 345/429/2 +f 346/430/17 353/439/17 339/440/17 +f 344/441/17 346/434/17 339/442/17 +f 342/443/17 348/432/17 344/444/17 +f 353/445/17 349/435/17 342/446/17 +f 341/424/6 347/431/6 340/425/6 +f 340/419/6 350/436/6 338/417/6 +f 338/428/6 351/437/6 343/426/6 +f 351/437/6 341/420/6 343/422/6 +f 1/1/1 354/447/1 2/2/1 +f 4/4/1 355/448/1 1/1/1 +f 5/5/1 356/449/1 6/6/1 +f 8/8/1 355/448/1 4/4/1 +f 10/10/2 26/29/2 11/11/2 +f 13/13/2 25/27/2 14/14/2 +f 16/16/2 21/450/2 15/15/2 +f 17/17/2 10/10/2 12/12/2 +f 19/19/2 17/451/2 18/20/2 +f 21/22/2 16/452/2 19/19/2 +f 22/23/2 357/453/2 23/24/2 +f 23/26/2 357/453/2 25/27/2 +f 24/28/2 11/11/2 26/29/2 +f 27/30/1 39/44/1 28/31/1 +f 30/33/1 27/454/1 29/34/1 +f 32/36/1 34/455/1 30/33/1 +f 33/37/1 35/40/1 34/38/1 +f 35/40/1 33/37/1 36/41/1 +f 38/43/1 28/31/1 39/44/1 +f 41/46/1 44/51/1 42/47/1 +f 37/42/1 36/41/1 43/49/1 +f 41/50/1 38/43/1 40/45/1 +f 2/52/1 354/447/1 45/53/1 +f 47/55/1 7/7/1 6/6/1 +f 47/55/1 48/56/1 46/57/1 +f 49/58/3 57/66/3 50/59/3 +f 52/61/4 71/86/4 53/62/4 +f 55/64/5 72/456/5 56/65/5 +f 58/67/6 56/88/6 59/68/6 +f 61/70/7 58/67/7 60/69/7 +f 63/72/5 67/77/5 51/60/5 +f 64/73/8 63/72/8 50/59/8 +f 65/74/9 63/72/9 64/73/9 +f 58/76/10 65/74/10 66/75/10 +f 66/75/5 64/73/5 57/66/5 +f 67/77/5 63/72/5 65/74/5 +f 69/79/11 72/87/11 55/80/11 +f 70/81/12 55/80/12 57/82/12 +f 59/84/13 69/457/13 70/85/13 +f 72/87/1 69/79/1 59/68/1 +f 75/91/1 358/458/1 73/89/1 +f 358/458/1 359/459/1 73/89/1 +f 359/459/1 360/460/1 73/89/1 +f 73/89/1 361/461/1 362/462/1 +f 362/462/1 363/463/1 73/89/1 +f 363/463/1 74/90/1 73/89/1 +f 74/90/1 364/464/1 75/91/1 +f 364/464/1 365/465/1 75/91/1 +f 365/465/1 366/466/1 75/91/1 +f 76/92/1 367/467/1 77/93/1 +f 79/95/1 368/468/1 80/96/1 +f 82/98/1 85/101/1 83/99/1 +f 85/101/1 79/95/1 81/97/1 +f 77/93/1 367/467/1 82/102/1 +f 76/104/14 78/469/14 86/105/14 +f 88/107/15 211/470/15 89/108/15 +f 369/471/16 138/171/16 93/112/16 +f 138/171/16 91/110/16 93/112/16 +f 94/113/17 110/129/17 95/114/17 +f 97/116/13 103/122/13 98/117/13 +f 100/119/5 120/472/5 101/120/5 +f 103/122/18 94/473/18 104/123/18 +f 105/124/19 110/474/19 102/121/19 +f 106/125/17 103/122/17 97/116/17 +f 100/119/17 102/121/17 108/127/17 +f 106/125/17 108/127/17 110/129/17 +f 95/130/5 110/474/5 105/124/5 +f 104/123/13 94/473/13 96/132/13 +f 115/136/2 370/475/2 113/134/2 +f 370/475/2 371/476/2 113/134/2 +f 371/476/2 372/477/2 113/134/2 +f 113/134/2 373/478/2 374/479/2 +f 374/479/2 375/480/2 113/134/2 +f 375/480/2 114/135/2 113/134/2 +f 114/135/2 376/481/2 377/482/2 +f 377/482/2 378/483/2 114/135/2 +f 378/483/2 115/136/2 114/135/2 +f 379/484/2 108/142/2 117/139/2 +f 108/142/2 106/137/2 117/139/2 +f 118/140/5 116/138/5 106/137/5 +f 108/142/13 379/484/13 119/143/13 +f 99/145/2 118/140/2 107/141/2 +f 120/147/2 100/485/2 109/148/2 +f 122/151/2 380/486/2 121/150/2 +f 124/153/2 120/147/2 123/152/2 +f 126/155/13 93/112/13 92/111/13 +f 80/157/13 127/156/13 92/111/13 +f 93/112/13 126/155/13 122/159/13 +f 130/161/5 133/165/5 131/162/5 +f 89/164/5 381/487/5 133/165/5 +f 59/84/35 382/488/35 134/166/35 +f 134/166/36 137/170/36 60/167/36 +f 135/168/21 71/86/21 52/61/21 +f 135/168/37 136/169/37 137/170/37 +f 71/86/38 135/168/38 134/166/38 +f 136/169/13 52/61/13 54/63/13 +f 137/170/13 136/169/13 91/110/13 +f 141/174/2 383/489/2 384/490/2 +f 384/490/2 385/491/2 139/172/2 +f 139/172/2 386/492/2 387/493/2 +f 387/493/2 388/494/2 140/173/2 +f 140/173/2 389/495/2 141/174/2 +f 389/495/2 390/496/2 141/174/2 +f 390/496/2 391/497/2 141/174/2 +f 141/174/2 384/490/2 139/172/2 +f 139/172/2 387/493/2 140/173/2 +f 142/175/2 145/178/2 143/176/2 +f 145/178/2 148/181/2 146/179/2 +f 147/180/2 150/183/2 146/179/2 +f 149/182/2 152/185/2 150/183/2 +f 151/184/2 154/187/2 152/185/2 +f 153/186/2 156/498/2 154/187/2 +f 153/188/2 157/191/2 155/189/2 +f 157/191/2 160/194/2 158/192/2 +f 159/193/2 162/196/2 158/192/2 +f 161/195/2 164/198/2 162/196/2 +f 163/197/2 165/199/2 164/198/2 +f 142/175/2 144/177/2 165/199/2 +f 392/499/2 393/500/2 168/202/2 +f 168/202/2 394/501/2 395/502/2 +f 395/502/2 396/503/2 397/504/2 +f 397/504/2 398/505/2 399/506/2 +f 399/506/2 400/507/2 166/200/2 +f 166/200/2 401/508/2 167/201/2 +f 167/201/2 392/499/2 168/202/2 +f 168/202/2 395/502/2 166/200/2 +f 395/502/2 397/504/2 166/200/2 +f 397/504/2 399/506/2 166/200/2 +f 57/82/6 49/509/6 53/203/6 +f 171/206/13 402/510/13 403/511/13 +f 403/511/13 404/512/13 169/204/13 +f 169/204/13 405/513/13 406/514/13 +f 406/514/13 407/515/13 169/204/13 +f 407/515/13 170/205/13 169/204/13 +f 170/205/13 408/516/13 409/517/13 +f 409/517/13 410/518/13 171/206/13 +f 171/206/13 403/511/13 169/204/13 +f 170/205/13 409/517/13 171/206/13 +f 174/209/5 411/519/5 412/520/5 +f 412/520/5 413/521/5 172/207/5 +f 172/207/5 414/522/5 415/523/5 +f 415/523/5 416/524/5 172/207/5 +f 416/524/5 173/208/5 172/207/5 +f 173/208/5 417/525/5 418/526/5 +f 418/526/5 419/527/5 174/209/5 +f 174/209/5 412/520/5 172/207/5 +f 173/208/5 418/526/5 174/209/5 +f 175/210/13 230/528/13 176/211/13 +f 178/213/13 184/219/13 179/214/13 +f 181/216/13 189/529/13 182/217/13 +f 184/219/13 420/530/13 185/220/13 +f 186/221/5 191/226/5 187/222/5 +f 185/220/13 420/530/13 189/224/13 +f 190/225/5 421/531/5 191/226/5 +f 192/227/5 421/531/5 190/225/5 +f 194/229/13 198/233/13 195/230/13 +f 194/229/13 199/532/13 197/232/13 +f 199/234/13 422/533/13 200/235/13 +f 201/237/6 196/534/6 195/230/6 +f 203/239/5 201/535/5 202/238/5 +f 205/241/5 203/239/5 204/240/5 +f 207/243/5 423/536/5 205/244/5 +f 112/246/1 96/115/1 95/114/1 +f 111/247/1 225/267/1 208/248/1 +f 112/246/1 95/114/1 111/247/1 +f 89/164/5 213/253/5 209/249/5 +f 210/250/5 124/537/5 89/164/5 +f 124/537/5 381/487/5 89/164/5 +f 209/254/1 217/258/1 214/255/1 +f 216/257/1 424/538/1 214/255/1 +f 218/259/1 424/538/1 216/257/1 +f 220/261/1 222/539/1 218/259/1 +f 220/262/24 425/540/24 221/263/24 +f 93/541/1 129/542/1 221/268/1 +f 129/542/1 208/248/1 221/268/1 +f 208/248/1 225/267/1 224/266/1 +f 221/268/1 425/543/1 93/541/1 +f 67/77/25 68/78/25 89/164/25 +f 68/78/25 90/544/25 89/164/25 +f 138/171/1 369/545/1 426/546/1 +f 138/171/1 426/546/1 226/269/1 +f 88/270/1 90/547/1 68/78/1 +f 68/78/1 138/171/1 226/269/1 +f 62/548/13 60/167/13 227/271/13 +f 60/167/13 137/170/13 227/271/13 +f 65/74/5 58/76/5 228/272/5 +f 58/76/5 61/549/5 228/272/5 +f 229/273/13 427/550/13 230/274/13 +f 182/276/13 427/551/13 229/277/13 +f 182/278/26 189/552/26 192/279/26 +f 232/281/5 235/553/5 233/282/5 +f 235/284/5 237/554/5 236/285/5 +f 231/287/5 238/292/5 236/288/5 +f 193/228/5 238/292/5 231/290/5 +f 238/292/27 193/228/27 181/216/27 +f 239/293/2 428/555/2 240/294/2 +f 242/296/2 278/332/2 243/297/2 +f 245/299/6 289/353/6 246/300/6 +f 248/302/13 280/556/13 249/303/13 +f 251/305/5 254/308/5 252/306/5 +f 254/308/17 280/556/17 248/302/17 +f 255/309/1 258/312/1 256/310/1 +f 258/312/1 260/314/1 259/313/1 +f 260/314/1 263/317/1 261/315/1 +f 262/316/1 265/319/1 261/315/1 +f 264/318/1 267/321/1 265/319/1 +f 266/320/1 429/557/1 267/321/1 +f 268/322/1 429/557/1 266/320/1 +f 255/309/1 257/311/1 268/322/1 +f 244/298/2 243/297/2 270/324/2 +f 271/325/2 270/324/2 272/326/2 +f 272/326/2 275/329/2 274/328/2 +f 275/329/2 277/331/2 276/330/2 +f 277/331/2 241/295/2 240/294/2 +f 242/296/2 428/555/2 239/293/2 +f 282/339/29 288/352/29 245/299/29 +f 287/349/5 430/558/5 431/559/5 +f 431/559/5 432/560/5 285/347/5 +f 285/347/5 433/561/5 286/348/5 +f 286/348/5 434/562/5 287/349/5 +f 287/349/5 431/559/5 285/347/5 +f 247/351/1 246/563/1 248/343/1 +f 246/563/1 284/346/1 252/345/1 +f 252/345/1 248/343/1 246/563/1 +f 248/343/1 283/342/1 247/351/1 +f 288/352/2 435/564/2 289/353/2 +f 290/354/1 294/358/1 291/355/1 +f 293/357/17 296/360/17 294/358/17 +f 295/359/30 297/565/30 296/360/30 +f 292/356/13 295/566/13 293/361/13 +f 291/355/5 294/358/5 296/362/5 +f 298/364/31 313/382/31 299/365/31 +f 301/367/32 311/380/32 302/368/32 +f 304/370/17 309/375/17 301/367/17 +f 299/365/17 306/372/17 305/371/17 +f 306/372/33 312/567/33 307/373/33 +f 308/374/34 310/568/34 309/375/34 +f 300/366/1 305/569/1 307/376/1 +f 303/369/1 302/368/1 308/377/1 +f 301/367/2 309/570/2 310/379/2 +f 312/381/2 306/571/2 299/365/2 +f 311/383/17 313/572/17 298/384/17 +f 9/388/1 356/573/1 298/384/1 +f 356/573/1 5/574/1 308/575/1 +f 298/384/1 356/573/1 302/385/1 +f 308/575/1 302/385/1 356/573/1 +f 298/384/1 307/386/1 9/388/1 +f 436/576/2 437/577/2 314/389/2 +f 314/389/2 312/578/2 313/572/2 +f 311/383/2 310/579/2 315/390/2 +f 314/389/2 313/572/2 311/383/2 +f 315/390/2 436/576/2 314/389/2 +f 318/393/2 438/580/2 439/581/2 +f 439/581/2 440/582/2 316/391/2 +f 316/391/2 441/583/2 442/584/2 +f 442/584/2 443/585/2 317/392/2 +f 317/392/2 444/586/2 318/393/2 +f 444/586/2 445/587/2 318/393/2 +f 445/587/2 446/588/2 318/393/2 +f 318/393/2 439/581/2 316/391/2 +f 316/391/2 442/584/2 317/392/2 +f 321/396/2 447/589/2 448/590/2 +f 448/590/2 449/591/2 319/394/2 +f 319/394/2 450/592/2 320/395/2 +f 450/592/2 451/593/2 320/395/2 +f 451/593/2 452/594/2 320/395/2 +f 320/395/2 453/595/2 454/596/2 +f 454/596/2 455/597/2 320/395/2 +f 455/597/2 321/396/2 320/395/2 +f 321/396/2 448/590/2 319/394/2 +f 322/397/2 456/598/2 323/398/2 +f 325/400/17 456/598/17 322/401/17 +f 324/403/6 323/398/6 327/404/6 +f 327/404/18 325/400/18 326/406/18 +f 323/398/13 456/598/13 325/400/13 +f 457/599/1 458/600/1 329/408/1 +f 329/408/1 459/601/1 330/409/1 +f 330/409/1 460/602/1 331/410/1 +f 331/410/1 461/603/1 457/599/1 +f 457/599/1 329/408/1 331/410/1 +f 334/413/2 462/604/2 463/605/2 +f 463/605/2 464/606/2 334/413/2 +f 464/606/2 465/607/2 334/413/2 +f 465/607/2 466/608/2 334/413/2 +f 466/608/2 332/411/2 334/413/2 +f 337/416/6 467/609/6 468/610/6 +f 468/610/6 469/611/6 335/414/6 +f 335/414/6 470/612/6 336/415/6 +f 336/415/6 471/613/6 337/416/6 +f 337/416/6 468/610/6 335/414/6 +f 338/417/2 344/614/2 339/418/2 +f 341/420/1 353/615/1 342/421/1 +f 339/423/5 353/616/5 341/424/5 +f 343/426/13 342/617/13 344/427/13 +f 345/429/13 352/438/13 346/430/13 +f 348/432/1 350/436/1 347/433/1 +f 349/435/5 351/437/5 350/436/5 +f 351/437/2 349/435/2 352/438/2 +f 346/430/17 352/438/17 353/439/17 +f 344/441/17 348/432/17 346/434/17 +f 342/443/17 349/435/17 348/432/17 +f 353/445/17 352/438/17 349/435/17 +f 341/424/6 345/429/6 347/431/6 +f 340/419/6 347/433/6 350/436/6 +f 338/428/6 350/436/6 351/437/6 +f 351/437/6 345/429/6 341/420/6 +s 1 +f 18/618/39 6/619/40 356/620/39 +f 4/621/41 21/622/42 9/623/42 +f 20/624/17 356/620/39 472/625/17 +f 9/623/42 20/626/17 472/627/17 +f 3/628/43 15/629/41 4/621/41 +f 2/630/44 23/26/45 3/631/43 +f 13/632/46 3/631/43 23/26/45 +f 436/633/47 5/5/48 7/7/40 +f 167/634/34 401/635/13 436/633/47 +f 168/202/33 354/447/49 1/1/33 +f 392/636/50 47/55/34 45/53/50 +f 393/637/49 45/53/50 354/447/49 +f 8/8/51 437/638/52 355/448/41 +f 437/638/52 394/501/5 168/202/33 +f 30/639/17 17/17/53 19/640/17 +f 35/40/40 26/29/34 10/10/40 +f 16/16/54 30/641/17 19/642/17 +f 34/38/53 10/10/40 17/17/53 +f 357/453/49 40/45/33 25/27/33 +f 42/47/50 357/453/49 22/23/50 +f 25/27/33 39/44/41 14/14/41 +f 37/42/34 22/23/50 26/29/34 +f 14/14/41 27/30/54 16/16/54 +f 473/643/39 33/644/40 32/645/39 +f 29/646/42 474/647/17 31/648/17 +f 474/649/17 32/645/39 31/650/17 +f 28/651/41 475/652/42 29/646/42 +f 43/653/55 49/654/56 41/655/57 +f 49/654/56 51/656/58 41/655/57 +f 41/655/57 51/656/58 38/657/59 +f 53/658/60 43/653/55 54/659/61 +f 43/653/55 36/660/62 54/659/61 +f 48/661/63 12/662/40 11/663/64 +f 24/664/65 48/665/63 11/663/64 +f 48/665/63 24/664/65 46/666/66 +f 23/26/45 46/666/66 24/664/65 +f 476/667/67 78/668/68 77/669/67 +f 477/670/14 84/671/17 83/672/14 +f 74/673/17 378/674/67 364/675/67 +f 478/676/17 77/669/67 84/677/17 +f 479/678/24 83/672/14 81/679/24 +f 363/680/14 115/681/17 74/673/17 +f 128/158/69 81/679/24 80/157/69 +f 366/682/5 79/95/70 75/683/70 +f 76/92/71 87/684/72 480/685/73 +f 127/686/74 368/687/75 481/688/76 +f 365/689/77 368/468/78 366/682/5 +f 360/690/79 76/92/71 73/691/80 +f 358/692/81 82/98/6 359/693/6 +f 481/688/76 126/694/82 127/686/74 +f 359/695/6 367/467/79 360/690/79 +f 75/683/70 85/101/81 358/692/81 +f 78/668/68 132/163/83 131/162/83 +f 482/696/84 480/697/85 133/698/86 +f 131/699/87 133/698/86 480/697/85 +f 362/700/24 480/685/73 482/701/88 +f 482/696/84 381/702/89 483/703/90 +f 480/697/85 87/106/91 131/699/87 +f 131/699/87 87/106/91 86/105/92 +f 101/704/93 124/537/25 210/250/25 +f 122/159/16 99/705/16 98/706/94 +f 104/707/39 208/708/95 98/706/94 +f 225/709/96 105/710/42 101/704/93 +f 363/680/14 362/700/24 482/701/88 +f 114/711/70 380/712/78 376/713/5 +f 373/714/79 117/715/6 374/716/6 +f 374/717/6 116/718/97 375/719/81 +f 372/720/13 123/721/80 113/722/80 +f 379/723/98 113/722/80 123/721/80 +f 116/718/97 118/724/9 121/725/70 +f 124/153/99 125/154/99 381/702/89 +f 381/702/89 125/154/99 483/703/90 +f 126/694/82 484/726/100 122/151/101 +f 122/151/101 484/726/100 380/486/101 +f 481/727/102 365/689/77 364/675/67 +f 125/728/103 371/729/24 483/730/88 +f 380/712/78 377/731/77 376/713/5 +f 223/732/104 209/254/17 215/256/17 +f 153/186/6 485/733/79 486/734/6 +f 147/180/13 487/735/24 488/736/13 +f 161/195/77 489/737/5 490/738/77 +f 157/191/81 486/739/6 491/740/81 +f 149/182/80 488/736/13 492/741/80 +f 163/197/67 490/738/77 493/742/67 +f 145/178/14 494/743/17 495/744/14 +f 160/194/70 491/740/81 496/745/70 +f 151/184/79 492/741/80 485/733/79 +f 142/175/17 493/742/67 494/743/17 +f 148/181/24 495/744/14 487/735/24 +f 159/193/5 496/745/70 489/737/5 +f 141/746/6 165/199/79 144/177/6 +f 384/747/70 143/176/81 146/179/70 +f 389/748/13 158/192/24 162/196/13 +f 387/749/17 154/187/67 156/498/17 +f 385/750/5 146/179/70 150/183/5 +f 390/751/80 162/196/13 164/198/80 +f 388/752/14 156/190/17 155/189/14 +f 139/753/77 150/183/5 152/185/77 +f 391/754/79 164/198/80 165/199/79 +f 383/755/81 144/177/6 143/176/81 +f 140/756/24 155/189/14 158/192/24 +f 386/757/67 152/185/77 154/187/67 +f 497/758/77 397/759/67 396/760/77 +f 498/761/24 166/762/105 400/763/24 +f 499/764/67 398/765/17 397/759/67 +f 500/766/17 399/767/14 398/768/17 +f 501/769/106 396/760/77 395/770/106 +f 502/771/14 400/763/24 399/767/14 +f 401/635/17 503/772/105 436/633/17 +f 437/638/17 395/770/106 394/501/17 +f 36/773/62 504/774/107 91/775/13 +f 67/776/5 505/777/108 38/778/59 +f 67/776/1 130/779/109 506/780/110 +f 91/775/1 507/781/110 92/782/109 +f 504/783/111 92/782/109 507/781/110 +f 132/784/111 506/780/110 130/779/109 +f 504/785/1 473/786/1 474/787/1 +f 508/788/6 407/789/112 509/790/112 +f 510/791/2 409/792/113 511/793/113 +f 512/794/114 404/795/115 513/796/115 +f 514/797/17 402/798/116 515/799/116 +f 509/790/112 406/800/117 516/801/117 +f 511/793/113 408/802/118 517/803/118 +f 513/796/115 403/804/17 514/797/17 +f 515/799/116 171/805/119 518/806/119 +f 516/801/117 405/807/1 519/808/1 +f 517/803/118 170/809/6 508/810/6 +f 518/806/119 410/811/2 510/791/2 +f 519/808/1 169/812/114 512/794/114 +f 520/813/6 416/814/118 521/815/118 +f 522/816/1 418/817/117 523/818/117 +f 524/819/119 413/820/116 525/821/116 +f 526/822/17 411/823/115 527/824/115 +f 521/815/118 415/825/113 528/826/113 +f 523/818/117 417/827/112 529/828/112 +f 525/821/116 412/829/17 526/822/17 +f 527/824/115 174/830/114 530/831/114 +f 528/826/113 414/832/2 531/833/2 +f 529/828/112 173/834/6 520/835/6 +f 530/831/114 419/836/1 522/816/1 +f 531/833/2 172/837/119 524/819/119 +f 427/838/120 235/839/121 230/840/121 +f 185/220/122 186/221/121 179/214/121 +f 182/278/101 237/841/120 427/838/120 +f 181/216/123 190/225/122 185/220/122 +f 187/842/1 184/843/110 178/844/1 +f 186/221/121 180/215/2 179/214/121 +f 184/843/110 421/845/124 420/846/124 +f 420/846/124 192/279/75 189/552/75 +f 207/243/125 197/232/126 200/235/125 +f 204/240/127 195/230/128 198/233/127 +f 205/847/129 422/848/130 199/849/129 +f 199/849/129 203/850/131 205/847/129 +f 198/233/127 206/242/126 204/240/127 +f 203/850/131 196/534/28 201/237/28 +f 426/851/132 219/260/17 226/852/17 +f 212/853/24 209/254/69 213/854/69 +f 220/261/133 426/851/132 369/855/134 +f 225/856/111 210/857/135 223/732/104 +f 211/470/136 226/852/17 219/260/17 +f 68/78/1 227/271/137 138/171/1 +f 62/71/138 228/272/137 61/70/138 +f 216/257/14 212/853/24 211/470/136 +f 229/277/139 238/292/140 183/218/140 +f 236/288/139 175/275/141 233/286/141 +f 177/212/142 233/286/141 175/275/141 +f 230/840/121 232/858/12 176/211/12 +f 270/859/42 256/860/143 259/861/42 +f 275/862/39 261/863/17 265/864/39 +f 272/865/17 259/861/42 261/863/17 +f 277/866/144 265/864/39 267/867/144 +f 260/868/37 273/869/6 263/870/6 +f 255/871/39 244/872/13 258/873/13 +f 266/874/42 428/875/17 269/876/17 +f 262/877/9 276/878/5 264/879/5 +f 258/873/13 271/880/37 260/868/37 +f 269/881/17 242/882/39 255/871/39 +f 264/879/5 240/883/42 266/874/42 +f 263/870/6 274/884/9 262/877/9 +f 289/353/13 435/564/13 279/885/145 +f 249/303/25 283/886/146 250/304/25 +f 284/346/147 251/305/16 253/307/16 +f 281/338/148 282/350/17 283/342/146 +f 286/887/6 532/888/123 533/889/6 +f 285/890/2 534/891/101 535/892/2 +f 431/893/17 536/894/75 537/895/17 +f 434/896/140 533/897/6 538/898/140 +f 433/899/123 535/892/2 532/888/123 +f 432/900/101 537/895/17 534/891/101 +f 430/901/75 539/902/1 536/894/75 +f 287/903/1 538/898/140 539/902/1 +f 288/904/17 280/337/17 254/335/17 +f 307/373/42 314/905/51 8/8/51 +f 315/906/48 308/374/39 5/5/48 +f 445/907/77 540/908/5 541/909/77 +f 443/910/81 542/911/6 543/912/81 +f 316/913/80 544/914/13 545/915/80 +f 446/916/67 541/909/77 546/917/67 +f 438/918/14 547/919/17 548/920/14 +f 317/921/70 543/912/81 549/922/70 +f 441/923/79 545/915/80 550/924/79 +f 318/925/17 546/917/67 547/919/17 +f 439/926/24 548/920/14 551/927/24 +f 444/928/5 549/922/70 540/908/5 +f 442/929/6 550/924/79 542/930/6 +f 440/931/13 551/927/24 544/914/13 +f 321/932/17 552/933/67 553/934/17 +f 448/935/24 554/936/14 555/937/24 +f 453/938/5 556/939/70 557/940/5 +f 451/941/6 558/942/79 559/943/6 +f 449/944/13 555/937/24 560/945/13 +f 454/946/77 557/940/5 561/947/77 +f 452/948/81 559/949/6 562/950/81 +f 319/951/80 560/945/13 563/952/80 +f 455/953/67 561/947/77 552/933/67 +f 447/954/14 553/934/17 554/936/14 +f 320/955/70 562/950/81 556/939/70 +f 450/956/79 563/952/80 558/942/79 +f 564/957/149 565/958/150 566/959/151 +f 564/957/149 567/960/152 568/961/18 +f 569/962/153 570/963/154 571/964/155 +f 566/959/151 572/965/156 573/966/157 +f 571/964/155 567/960/152 574/967/158 +f 573/966/157 575/968/159 576/969/160 +f 565/958/150 577/970/161 572/965/156 +f 570/963/154 578/971/162 579/972/163 +f 568/961/18 580/973/164 565/958/150 +f 572/965/156 581/974/165 575/968/159 +f 568/961/18 582/975/166 583/976/167 +f 570/963/154 582/975/166 567/960/152 +f 576/969/160 575/968/159 584/977/168 +f 575/968/159 581/974/165 584/978/168 +f 584/979/168 585/980/169 569/962/153 +f 585/980/169 584/981/168 578/971/162 +f 583/976/167 586/982/39 580/973/164 +f 577/970/161 587/983/42 581/974/165 +f 582/975/166 588/984/13 583/976/167 +f 584/985/168 589/986/9 578/971/162 +f 579/972/163 590/987/37 582/975/166 +f 581/974/165 591/988/5 584/989/168 +f 580/973/164 592/990/17 577/970/161 +f 578/971/162 593/991/6 579/972/163 +f 457/992/170 462/993/171 458/994/171 +f 458/994/171 334/995/99 329/996/99 +f 329/996/99 333/997/172 459/998/172 +f 330/999/10 333/997/172 332/1000/10 +f 330/1001/10 466/1002/173 460/1003/173 +f 460/1003/173 465/1004/174 331/1005/174 +f 461/1006/175 463/1007/170 457/992/170 +f 461/1006/175 465/1004/174 464/1008/175 +f 594/1009/176 336/1010/2 595/1011/2 +f 596/1012/18 337/1013/13 597/1014/13 +f 598/1015/5 469/1016/19 599/1017/19 +f 595/1018/2 470/1019/177 600/1020/177 +f 597/1014/13 471/1021/176 594/1009/176 +f 601/1022/1 467/1023/18 596/1012/18 +f 599/1017/19 468/1024/1 601/1022/1 +f 600/1020/177 335/1025/5 598/1015/5 +f 18/618/39 12/662/40 6/619/40 +f 4/621/41 15/629/41 21/622/42 +f 20/624/17 18/618/39 356/620/39 +f 9/623/42 21/622/42 20/626/17 +f 3/628/43 13/632/46 15/629/41 +f 436/633/47 315/906/48 5/5/48 +f 7/7/40 47/55/34 436/633/47 +f 47/55/34 167/634/34 436/633/47 +f 168/202/33 393/637/49 354/447/49 +f 392/636/50 167/634/34 47/55/34 +f 393/637/49 392/636/50 45/53/50 +f 8/8/51 314/905/51 437/638/52 +f 168/202/33 1/1/33 437/638/52 +f 1/1/33 355/448/41 437/638/52 +f 30/639/17 34/38/53 17/17/53 +f 35/40/40 37/42/34 26/29/34 +f 16/16/54 27/30/54 30/641/17 +f 34/38/53 35/40/40 10/10/40 +f 357/453/49 44/51/49 40/45/33 +f 42/47/50 44/51/49 357/453/49 +f 25/27/33 40/45/33 39/44/41 +f 37/42/34 42/47/50 22/23/50 +f 14/14/41 39/44/41 27/30/54 +f 473/643/39 504/774/107 33/644/40 +f 29/646/42 475/652/42 474/647/17 +f 474/649/17 473/643/39 32/645/39 +f 28/651/41 505/777/108 475/652/42 +f 43/653/55 53/658/60 49/654/56 +f 48/661/63 6/619/40 12/662/40 +f 23/26/45 2/630/44 46/666/66 +f 476/667/67 602/1026/77 78/668/68 +f 477/670/14 478/1027/17 84/671/17 +f 74/673/17 115/681/17 378/674/67 +f 478/676/17 476/667/67 77/669/67 +f 479/678/24 477/670/14 83/672/14 +f 363/680/14 370/1028/14 115/681/17 +f 128/158/69 479/678/24 81/679/24 +f 366/682/5 368/468/78 79/95/70 +f 480/685/73 361/1029/13 76/92/71 +f 361/1029/13 73/691/80 76/92/71 +f 127/686/74 80/1030/75 368/687/75 +f 365/689/77 481/727/102 368/468/78 +f 360/690/79 367/467/79 76/92/71 +f 358/692/81 85/101/81 82/98/6 +f 481/688/76 484/726/100 126/694/82 +f 359/695/6 82/102/6 367/467/79 +f 75/683/70 79/95/70 85/101/81 +f 131/162/83 86/1031/83 78/668/68 +f 78/668/68 602/1026/77 132/163/83 +f 362/700/24 361/1029/13 480/685/73 +f 482/696/84 133/698/86 381/702/89 +f 210/250/25 225/709/96 101/704/93 +f 101/704/93 120/1032/25 124/537/25 +f 98/706/94 208/708/95 129/160/16 +f 129/160/16 122/159/16 98/706/94 +f 104/707/39 112/1033/39 208/708/95 +f 225/709/96 111/1034/42 105/710/42 +f 371/729/24 370/1028/14 483/730/88 +f 370/1028/14 363/680/14 482/701/88 +f 483/730/88 370/1028/14 482/701/88 +f 114/711/70 121/725/70 380/712/78 +f 373/714/79 379/723/98 117/715/6 +f 374/717/6 117/1035/6 116/718/97 +f 372/720/13 125/728/103 123/721/80 +f 123/721/80 119/1036/37 379/723/98 +f 379/723/98 373/714/79 113/722/80 +f 121/725/70 114/711/70 116/718/97 +f 114/711/70 375/719/81 116/718/97 +f 364/675/67 378/674/67 484/1037/102 +f 378/674/67 377/731/77 484/1037/102 +f 484/1037/102 481/727/102 364/675/67 +f 125/728/103 372/720/13 371/729/24 +f 380/712/78 484/1037/102 377/731/77 +f 223/732/104 210/857/135 209/254/17 +f 153/186/6 151/184/79 485/733/79 +f 147/180/13 148/181/24 487/735/24 +f 161/195/77 159/193/5 489/737/5 +f 157/191/81 153/188/6 486/739/6 +f 149/182/80 147/180/13 488/736/13 +f 163/197/67 161/195/77 490/738/77 +f 145/178/14 142/175/17 494/743/17 +f 160/194/70 157/191/81 491/740/81 +f 151/184/79 149/182/80 492/741/80 +f 142/175/17 163/197/67 493/742/67 +f 148/181/24 145/178/14 495/744/14 +f 159/193/5 160/194/70 496/745/70 +f 141/746/6 391/754/79 165/199/79 +f 384/747/70 383/755/81 143/176/81 +f 389/748/13 140/756/24 158/192/24 +f 387/749/17 386/757/67 154/187/67 +f 385/750/5 384/747/70 146/179/70 +f 390/751/80 389/748/13 162/196/13 +f 388/752/14 387/1038/17 156/190/17 +f 139/753/77 385/750/5 150/183/5 +f 391/754/79 390/751/80 164/198/80 +f 383/755/81 141/746/6 144/177/6 +f 140/756/24 388/752/14 155/189/14 +f 386/757/67 139/753/77 152/185/77 +f 497/758/77 499/764/67 397/759/67 +f 498/761/24 503/772/105 166/762/105 +f 499/764/67 500/1039/17 398/765/17 +f 500/766/17 502/771/14 399/767/14 +f 501/769/106 497/758/77 396/760/77 +f 502/771/14 498/761/24 400/763/24 +f 401/635/17 166/762/105 503/772/105 +f 437/638/17 501/769/106 395/770/106 +f 91/775/13 54/659/61 36/773/62 +f 36/773/62 33/644/40 504/774/107 +f 504/774/107 507/781/13 91/775/13 +f 51/656/58 67/776/5 38/778/59 +f 67/776/5 506/780/5 505/777/108 +f 38/778/59 505/777/108 28/651/41 +f 504/783/111 128/1040/111 92/782/109 +f 132/784/111 505/1041/111 506/780/110 +f 475/1042/1 505/1043/1 474/787/1 +f 505/1043/1 504/785/1 474/787/1 +f 508/788/6 170/1044/6 407/789/112 +f 510/791/2 410/811/2 409/792/113 +f 512/794/114 169/812/114 404/795/115 +f 514/797/17 403/804/17 402/798/116 +f 509/790/112 407/789/112 406/800/117 +f 511/793/113 409/792/113 408/802/118 +f 513/796/115 404/795/115 403/804/17 +f 515/799/116 402/798/116 171/805/119 +f 516/801/117 406/800/117 405/807/1 +f 517/803/118 408/802/118 170/809/6 +f 518/806/119 171/805/119 410/811/2 +f 519/808/1 405/807/1 169/812/114 +f 520/813/6 173/1045/6 416/814/118 +f 522/816/1 419/836/1 418/817/117 +f 524/819/119 172/837/119 413/820/116 +f 526/822/17 412/829/17 411/823/115 +f 521/815/118 416/814/118 415/825/113 +f 523/818/117 418/817/117 417/827/112 +f 525/821/116 413/820/116 412/829/17 +f 527/824/115 411/823/115 174/830/114 +f 528/826/113 415/825/113 414/832/2 +f 529/828/112 417/827/112 173/834/6 +f 530/831/114 174/830/114 419/836/1 +f 531/833/2 414/832/2 172/837/119 +f 427/838/120 237/841/120 235/839/121 +f 185/220/122 190/225/122 186/221/121 +f 182/278/101 231/280/101 237/841/120 +f 181/216/123 193/228/123 190/225/122 +f 187/842/1 191/1046/110 184/843/110 +f 186/221/121 188/223/2 180/215/2 +f 184/843/110 191/1046/110 421/845/124 +f 420/846/124 421/845/124 192/279/75 +f 207/243/125 206/242/126 197/232/126 +f 204/240/127 202/238/128 195/230/128 +f 205/847/129 423/1047/130 422/848/130 +f 199/849/129 194/1048/131 203/850/131 +f 198/233/127 197/232/126 206/242/126 +f 203/850/131 194/1048/131 196/534/28 +f 426/851/132 220/261/133 219/260/17 +f 212/853/24 217/258/24 209/254/69 +f 369/855/134 93/1049/134 220/261/133 +f 93/1049/134 425/1050/134 220/261/133 +f 219/260/17 216/257/14 211/470/136 +f 211/470/136 88/107/178 226/852/17 +f 68/78/1 228/272/137 227/271/137 +f 62/71/138 227/271/137 228/272/137 +f 216/257/14 217/258/24 212/853/24 +f 229/277/139 236/288/139 238/292/140 +f 236/288/139 229/277/139 175/275/141 +f 177/212/142 234/283/142 233/286/141 +f 230/840/121 235/839/121 232/858/12 +f 270/859/42 243/1051/143 256/860/143 +f 275/862/39 272/865/17 261/863/17 +f 272/865/17 270/859/42 259/861/42 +f 277/866/144 275/862/39 265/864/39 +f 260/868/37 271/880/37 273/869/6 +f 255/871/39 242/882/39 244/872/13 +f 266/874/42 240/883/42 428/875/17 +f 262/877/9 274/884/9 276/878/5 +f 258/873/13 244/872/13 271/880/37 +f 269/881/17 428/1052/17 242/882/39 +f 264/879/5 276/878/5 240/883/42 +f 263/870/6 273/869/6 274/884/9 +f 284/346/147 246/563/13 279/885/145 +f 246/563/13 289/353/13 279/885/145 +f 249/303/25 281/1053/148 283/886/146 +f 284/346/147 279/885/145 251/305/16 +f 281/338/148 288/904/17 282/350/17 +f 286/887/6 433/899/123 532/888/123 +f 285/890/2 432/900/101 534/891/101 +f 431/893/17 430/901/75 536/894/75 +f 434/896/140 286/1054/6 533/897/6 +f 433/899/123 285/890/2 535/892/2 +f 432/900/101 431/893/17 537/895/17 +f 430/901/75 287/903/1 539/902/1 +f 287/903/1 434/896/140 538/898/140 +f 279/334/17 435/1055/17 254/335/17 +f 435/1055/17 288/904/17 254/335/17 +f 288/904/17 281/338/148 280/337/17 +f 307/373/42 312/567/42 314/905/51 +f 315/906/48 310/568/39 308/374/39 +f 445/907/77 444/928/5 540/908/5 +f 443/910/81 442/1056/6 542/911/6 +f 316/913/80 440/931/13 544/914/13 +f 446/916/67 445/907/77 541/909/77 +f 438/918/14 318/925/17 547/919/17 +f 317/921/70 443/910/81 543/912/81 +f 441/923/79 316/913/80 545/915/80 +f 318/925/17 446/916/67 546/917/67 +f 439/926/24 438/918/14 548/920/14 +f 444/928/5 317/921/70 549/922/70 +f 442/929/6 441/923/79 550/924/79 +f 440/931/13 439/926/24 551/927/24 +f 321/932/17 455/953/67 552/933/67 +f 448/935/24 447/954/14 554/936/14 +f 453/938/5 320/955/70 556/939/70 +f 451/941/6 450/956/79 558/942/79 +f 449/944/13 448/935/24 555/937/24 +f 454/946/77 453/938/5 557/940/5 +f 452/948/81 451/1057/6 559/949/6 +f 319/951/80 449/944/13 560/945/13 +f 455/953/67 454/946/77 561/947/77 +f 447/954/14 321/932/17 553/934/17 +f 320/955/70 452/948/81 562/950/81 +f 450/956/79 319/951/80 563/952/80 +f 564/957/149 568/961/18 565/958/150 +f 564/957/149 574/967/158 567/960/152 +f 569/962/153 585/980/169 570/963/154 +f 566/959/151 565/958/150 572/965/156 +f 571/964/155 570/963/154 567/960/152 +f 573/966/157 572/965/156 575/968/159 +f 565/958/150 580/973/164 577/970/161 +f 570/963/154 585/980/169 578/971/162 +f 568/961/18 583/976/167 580/973/164 +f 572/965/156 577/970/161 581/974/165 +f 568/961/18 567/960/152 582/975/166 +f 570/963/154 579/972/163 582/975/166 +f 583/976/167 588/984/13 586/982/39 +f 577/970/161 592/990/17 587/983/42 +f 582/975/166 590/987/37 588/984/13 +f 584/985/168 591/1058/5 589/986/9 +f 579/972/163 593/991/6 590/987/37 +f 581/974/165 587/983/42 591/988/5 +f 580/973/164 586/982/39 592/990/17 +f 578/971/162 589/986/9 593/991/6 +f 457/992/170 463/1007/170 462/993/171 +f 458/994/171 462/993/171 334/995/99 +f 329/996/99 334/995/99 333/997/172 +f 330/999/10 459/998/172 333/997/172 +f 330/1001/10 332/1059/10 466/1002/173 +f 460/1003/173 466/1002/173 465/1004/174 +f 461/1006/175 464/1008/175 463/1007/170 +f 461/1006/175 331/1005/174 465/1004/174 +f 594/1009/176 471/1021/176 336/1010/2 +f 596/1012/18 467/1023/18 337/1013/13 +f 598/1015/5 335/1025/5 469/1016/19 +f 595/1018/2 336/1060/2 470/1019/177 +f 597/1014/13 337/1013/13 471/1021/176 +f 601/1022/1 468/1024/1 467/1023/18 +f 599/1017/19 469/1016/19 468/1024/1 +f 600/1020/177 470/1019/177 335/1025/5 +o Bolt +v -0.108253 1.093750 -0.062500 +v 0.108253 1.093750 -0.062500 +v 0.000000 1.281250 -0.062500 +v 0.093750 1.318630 -2.875000 +v 0.000000 1.281250 -2.875000 +v 0.062500 1.264503 -2.875000 +v -0.162380 1.062500 -2.750000 +v -0.108253 1.093750 -2.875000 +v -0.108253 1.093750 -2.750000 +v 0.000000 1.343750 -2.812500 +v 0.000000 1.281250 -2.812500 +v -0.108253 1.218750 -2.750000 +v -0.187500 1.156250 -2.750000 +v -0.125000 1.156250 -2.750000 +v -0.062500 1.264503 -2.750000 +v -0.162380 1.250000 -2.750000 +v 0.162380 1.250000 -2.875000 +v 0.108253 1.218750 -2.875000 +v 0.187500 1.156250 -2.875000 +v 0.125000 1.156250 -2.875000 +v 0.108253 1.093750 -2.875000 +v 0.062500 1.047997 -2.875000 +v 0.162380 1.062500 -2.875000 +v 0.000000 0.968750 -2.875000 +v 0.000000 1.031250 -2.875000 +v -0.062500 1.047997 -2.875000 +v -0.093750 0.993870 -2.875000 +v -0.108253 1.218750 -3.062500 +v -0.187500 1.156250 -3.062500 +v -0.162380 1.250000 -3.062500 +v 0.000000 1.281250 -3.125000 +v 0.108253 1.218750 -3.125000 +v 0.000000 1.031250 -3.125000 +v -0.062500 1.264503 -3.062500 +v -0.093750 1.318630 -3.062500 +v 0.000000 1.343750 -3.062500 +v 0.062500 1.264503 -3.062500 +v 0.093750 1.318630 -3.062500 +v 0.108253 1.218750 -3.062500 +v 0.162380 1.250000 -3.062500 +v 0.187500 1.156250 -3.062500 +v 0.108253 1.093750 -3.062500 +v 0.162380 1.062500 -3.062500 +v 0.062500 1.047997 -3.062500 +v 0.093750 0.993870 -3.062500 +v 0.000000 1.031250 -3.062500 +v 0.000000 0.968750 -3.062500 +v -0.093750 0.993870 -3.062500 +v -0.108253 1.093750 -3.062500 +v -0.162380 1.062500 -3.062500 +v -0.589834 0.899576 -2.627277 +v -0.501673 0.800552 -2.510351 +v -0.542588 0.783848 -2.627277 +v -0.626668 0.952046 -2.488254 +v -0.548918 0.916279 -2.510351 +v -0.532177 0.720591 -2.488254 +v -0.535342 0.786807 -2.429790 +v -0.664418 0.869127 -2.663644 +v -0.681345 0.659693 -2.560987 +v -0.573092 0.703887 -2.605181 +v -0.725426 0.709205 -2.619450 +v -0.617173 0.753399 -2.663644 +v -0.775837 0.891148 -2.560987 +v -0.667583 0.935343 -2.605181 +v -0.690841 0.858340 -2.385596 +v -0.582587 0.902534 -2.429790 +v -0.806341 0.811187 -2.538889 +v -0.772672 0.824933 -2.619450 +v -0.734921 0.907852 -2.444060 +v -0.765425 0.827891 -2.421963 +v -0.643595 0.742613 -2.385596 +v -0.640430 0.676397 -2.444060 +v -0.718180 0.712164 -2.421963 +v -0.759095 0.695460 -2.538889 +v -0.062500 1.264503 -0.062500 +v -0.108253 1.218750 -0.062500 +v -0.125000 1.156250 -0.062500 +v -0.062500 1.047997 -0.062500 +v 0.000000 1.031250 -0.062500 +v 0.062500 1.047997 -0.062500 +v 0.125000 1.156250 -0.062500 +v 0.108253 1.218750 -0.062500 +v 0.062500 1.264503 -0.062500 +v 0.000000 1.343750 -2.875000 +v -0.162380 1.062500 -2.875000 +v -0.093750 1.318630 -2.750000 +v 0.093750 0.993870 -2.875000 +v -0.125000 1.156250 -3.062500 +v -0.108253 1.218750 -3.125000 +v -0.062500 1.264503 -3.125000 +v 0.062500 1.264503 -3.125000 +v 0.125000 1.156250 -3.125000 +v 0.108253 1.093750 -3.125000 +v 0.062500 1.047997 -3.125000 +v -0.062500 1.047997 -3.125000 +v -0.108253 1.093750 -3.125000 +v -0.125000 1.156250 -3.125000 +v 0.000000 1.281250 -3.062500 +v 0.125000 1.156250 -3.062500 +v -0.062500 1.047997 -3.062500 +v -0.125000 1.156250 -2.812500 +v -0.250000 1.112056 -2.830806 +v -0.125000 1.112056 -2.830806 +v -0.125000 1.218750 -2.875000 +v -0.250000 1.200444 -2.830806 +v -0.125000 1.200444 -2.830806 +v -0.125000 1.200444 -2.919194 +v -0.250000 1.218750 -2.875000 +v -0.125000 1.112056 -2.919194 +v -0.250000 1.156250 -2.937500 +v -0.125000 1.156250 -2.937500 +v -0.250000 1.093750 -2.875000 +v -0.125000 1.093750 -2.875000 +v -0.250000 1.156250 -2.812500 +v -0.250000 1.200444 -2.919194 +v -0.250000 1.112056 -2.919194 +v -0.312500 1.188603 -2.907352 +v -0.281250 1.106135 -2.913273 +v -0.281250 1.194523 -2.824885 +v -0.303347 1.208643 -2.864892 +v -0.303347 1.146143 -2.927392 +v -0.259153 1.154516 -2.810766 +v -0.358253 1.156250 -2.875000 +v -0.342400 1.181028 -2.837278 +v -0.342400 1.118528 -2.899778 +v -0.265853 1.149778 -2.806028 +v -0.265853 1.087278 -2.868528 +v -0.304127 1.089959 -2.897097 +v -0.304126 1.178347 -2.808709 +v -0.259153 1.092016 -2.873266 +v -0.468750 0.844143 -2.562893 +v -0.561150 0.913115 -2.569365 +v -0.561150 0.850615 -2.631865 +v -0.484604 0.881865 -2.538115 +v -0.484604 0.819365 -2.600615 +v -0.577003 0.888337 -2.607087 +v -0.522877 0.822046 -2.629184 +v -0.522877 0.910434 -2.540796 +v -0.567850 0.845877 -2.627127 +v -0.523657 0.854251 -2.510501 +v -0.523656 0.791751 -2.573001 +v -0.545753 0.805870 -2.613008 +v -0.545753 0.894258 -2.524620 +v -0.514503 0.811791 -2.530540 +v -0.567851 0.908377 -2.564627 +vt 0.762886 0.914773 +vt 0.782568 0.914773 +vt 0.772727 0.931818 +vt 0.818182 0.960227 +vt 0.812500 0.965909 +vt 0.812500 0.960227 +vt 0.704545 0.892045 +vt 0.698864 0.903409 +vt 0.698864 0.892045 +vt 0.732955 0.903409 +vt 0.727273 0.897727 +vt 0.732955 0.897727 +vt 0.801136 0.977273 +vt 0.806818 0.982955 +vt 0.801136 0.982955 +vt 0.801136 0.971591 +vt 0.806818 0.977273 +vt 0.818182 0.954545 +vt 0.812500 0.954545 +vt 0.818182 0.948864 +vt 0.812500 0.948864 +vt 0.812500 0.943182 +vt 0.812500 0.937500 +vt 0.818182 0.943182 +vt 0.818182 0.931818 +vt 0.812500 0.931818 +vt 0.812500 0.994318 +vt 0.818182 1.000000 +vt 0.812500 1.000000 +vt 0.812500 0.988636 +vt 0.818182 0.994318 +vt 0.801136 0.988636 +vt 0.806818 0.988636 +vt 0.715909 0.926136 +vt 0.710227 0.920455 +vt 0.715909 0.920455 +vt 0.795455 0.931818 +vt 0.785613 0.926136 +vt 0.795455 0.909091 +vt 0.721591 0.926136 +vt 0.721591 0.920455 +vt 0.727273 0.920455 +vt 0.732955 0.926136 +vt 0.732955 0.920455 +vt 0.738636 0.926136 +vt 0.738636 0.920455 +vt 0.744318 0.920455 +vt 0.750000 0.926136 +vt 0.750000 0.920455 +vt 0.755682 0.926136 +vt 0.755682 0.920455 +vt 0.761364 0.926136 +vt 0.761364 0.920455 +vt 0.698864 0.920455 +vt 0.693182 0.926136 +vt 0.693182 0.920455 +vt 0.704545 0.926136 +vt 0.704545 0.920455 +vt 0.642045 0.931818 +vt 0.630682 0.920455 +vt 0.642045 0.920455 +vt 0.664773 0.920455 +vt 0.676136 0.914773 +vt 0.676136 0.920455 +vt 0.630682 0.914773 +vt 0.630682 0.931818 +vt 0.625000 0.920455 +vt 0.647727 0.931818 +vt 0.642045 0.903409 +vt 0.642045 0.914773 +vt 0.647727 0.903409 +vt 0.659091 0.914773 +vt 0.647727 0.914773 +vt 0.664773 0.903409 +vt 0.664773 0.914773 +vt 0.681818 0.903409 +vt 0.693182 0.914773 +vt 0.681818 0.914773 +vt 0.647727 0.897727 +vt 0.642045 0.886364 +vt 0.647727 0.886364 +vt 0.676136 0.903409 +vt 0.630682 0.886364 +vt 0.625000 0.897727 +vt 0.625000 0.886364 +vt 0.676136 0.897727 +vt 0.659091 0.903409 +vt 0.664773 0.897727 +vt 0.630682 0.903409 +vt 0.625000 0.914773 +vt 0.625000 0.903409 +vt 0.647727 0.920455 +vt 0.630682 0.897727 +vt 0.642045 0.897727 +vt 0.767045 0.930296 +vt 0.762886 0.926136 +vt 0.761364 0.920455 +vt 0.767045 0.910613 +vt 0.772727 0.909091 +vt 0.778409 0.910613 +vt 0.784091 0.920455 +vt 0.782568 0.926136 +vt 0.778409 0.930296 +vt 0.818182 0.965909 +vt 0.704545 0.903409 +vt 0.727273 0.903409 +vt 0.806818 0.971591 +vt 0.818182 0.937500 +vt 0.818182 0.988636 +vt 0.710227 0.926136 +vt 0.805296 0.926136 +vt 0.801136 0.930296 +vt 0.789773 0.930296 +vt 0.784091 0.920455 +vt 0.785613 0.914773 +vt 0.789773 0.910613 +vt 0.801136 0.910613 +vt 0.805296 0.914773 +vt 0.806818 0.920455 +vt 0.727273 0.926136 +vt 0.744318 0.926136 +vt 0.698864 0.926136 +vt 0.625000 0.931818 +vt 0.693182 0.903409 +vt 0.556818 0.954545 +vt 0.556818 0.948864 +vt 0.556818 0.937500 +vt 0.556818 0.931818 +vt 0.710227 0.892045 +vt 0.556818 0.960227 +vt 0.556818 0.943182 +vt 0.556818 0.977273 +vt 0.556818 0.971591 +vt 0.556818 1.000000 +vt 0.556818 0.994318 +vt 0.556818 0.982955 +vt 0.806818 0.965909 +vt 0.732955 0.892045 +vt 0.727273 0.892045 +vt 0.556818 0.965909 +vt 0.715909 0.892045 +vt 0.721591 0.892045 +vt 0.698864 0.903409 +vt 0.744318 0.903409 +vt 0.750000 0.903409 +vt 0.693182 0.903409 +vt 0.738636 0.903409 +vt 0.755682 0.903409 +vt 0.761364 0.903409 +vt 0.732955 0.903409 +vt 0.715909 0.931818 +vt 0.744318 0.931818 +vt 0.761364 0.931818 +vt 0.710227 0.931818 +vt 0.738636 0.931818 +vt 0.727273 0.931818 +vt 0.755682 0.931818 +vt 0.704545 0.931818 +vt 0.732955 0.931818 +vt 0.721591 0.931818 +vt 0.750000 0.931818 +vt 0.698864 0.931818 +vt 0.556818 0.988636 +vt 0.625000 0.897727 +vt 0.613636 0.892045 +vt 0.625000 0.892045 +vt 0.625000 0.909091 +vt 0.613636 0.903409 +vt 0.625000 0.903409 +vt 0.625000 0.914773 +vt 0.613636 0.909091 +vt 0.625000 0.926136 +vt 0.613636 0.920455 +vt 0.625000 0.920455 +vt 0.613636 0.886364 +vt 0.625000 0.886364 +vt 0.613636 0.897727 +vt 0.613636 0.914773 +vt 0.625000 0.931818 +vt 0.613636 0.926136 +vt 0.607954 0.914773 +vt 0.613636 0.931818 +vt 0.607954 0.926136 +vt 0.607954 0.903409 +vt 0.607954 0.909091 +vt 0.607954 0.920455 +vt 0.607954 0.897727 +vt 0.602273 0.914773 +vt 0.602273 0.909091 +vt 0.602273 0.920455 +vt 0.602273 0.897727 +vt 0.602273 0.931818 +vt 0.602273 0.926136 +vt 0.602273 0.903409 +vt 0.610795 0.892045 +vt 0.610795 0.886364 +vt 0.607954 0.892045 +vt 0.613636 0.892045 +vt 0.605114 0.886364 +vt 0.602273 0.892045 +vt 0.605114 0.892045 +vt 0.562500 0.892045 +vt 0.602273 0.892045 +vt 0.562500 0.909091 +vt 0.562500 0.920455 +vt 0.562500 0.897727 +vt 0.562500 0.886364 +vt 0.602273 0.886364 +vt 0.562500 0.914773 +vt 0.562500 0.931818 +vt 0.562500 0.926136 +vt 0.562500 0.903409 +vt 0.556818 0.920455 +vt 0.556818 0.897727 +vt 0.556818 0.886364 +vt 0.556818 0.926136 +vt 0.556818 0.903409 +vt 0.556818 0.892045 +vt 0.556818 0.909091 +vt 0.693182 0.931818 +vt 0.607954 0.931818 +vt 0.556818 0.931818 +vn 0.0000 -0.0000 1.0000 +vn 0.5000 -0.8660 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.8660 0.3536 -0.3536 +vn 0.3451 0.9047 -0.2500 +vn 0.8796 -0.4047 -0.2500 +vn 0.8438 0.3445 0.4114 +vn 0.3809 0.1555 -0.9114 +vn 0.3780 -0.9258 0.0000 +vn -0.3273 -0.1336 -0.9354 +vn -0.3780 0.9258 0.0000 +vn 0.3273 0.1336 0.9354 +vn -0.8438 -0.3445 -0.4114 +vn -0.0358 0.7491 0.6614 +vn -0.3809 -0.1555 0.9114 +vn 0.4708 0.8158 0.3359 +vn -0.5292 0.4076 0.7442 +vn 0.0928 0.6615 -0.7442 +vn -0.4987 0.5602 -0.6614 +vn -0.9072 0.2532 -0.3359 +vn -0.8796 0.4047 0.2500 +vn 0.9072 -0.2532 0.3359 +vn 0.4987 -0.5602 0.6614 +vn 0.5292 -0.4075 -0.7442 +vn 0.0358 -0.7491 -0.6614 +vn -0.8660 -0.3536 0.3536 +vn -0.0928 -0.6615 0.7442 +vn -0.4708 -0.8158 -0.3359 +vn -0.3451 -0.9047 0.2500 +vn 0.8796 -0.4046 -0.2500 +vn -0.8660 -0.3536 0.3535 +vn 0.8660 0.5000 0.0000 +vn -0.0000 -1.0000 -0.0000 +vn -1.0000 -0.0000 0.0000 +vn -0.8660 0.5000 0.0000 +vn 0.5000 0.8660 0.0000 +vn 0.8660 -0.5000 -0.0000 +vn -0.4538 0.8911 0.0000 +vn -0.5000 0.8660 0.0000 +vn -0.5000 -0.8660 -0.0000 +vn 0.2588 0.9659 0.0000 +vn 0.1569 0.9876 0.0000 +vn 0.7071 0.0000 0.7071 +vn 0.6293 0.1104 0.7693 +vn 0.5576 0.1963 0.8066 +vn 0.5576 0.1963 0.8065 +vn 0.4804 0.2773 0.8321 +vn -0.0000 1.0000 0.0000 +vn -0.5507 0.8347 -0.0000 +vn -0.8181 -0.5751 -0.0000 +vn -0.0890 0.9960 0.0000 +vn -0.8660 -0.5000 0.0000 +vn -0.9071 -0.4210 0.0000 +vn 0.5000 -0.6124 0.6124 +vn 0.0000 -0.7071 0.7071 +vn -0.0085 0.7292 0.6843 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.7071 -0.7071 +vn -0.0950 0.9953 -0.0202 +vn 0.0000 -0.7071 -0.7071 +vn -0.0951 0.0202 -0.9953 +vn 0.0910 -0.9956 -0.0242 +vn 0.0910 0.0242 0.9956 +vn -0.1266 0.7014 -0.7014 +vn -0.0085 -0.6843 -0.7292 +vn -0.5000 0.6124 -0.6124 +vn -0.0318 -0.6668 -0.7446 +vn -0.0318 0.7446 0.6668 +vn -0.3681 0.9294 0.0278 +vn -0.3681 -0.0277 -0.9294 +vn 0.3362 0.1116 0.9352 +vn -0.7958 0.4282 -0.4282 +vn -0.5743 0.7996 0.1754 +vn -0.5743 -0.1754 -0.7996 +vn 0.5493 0.2113 0.8085 +vn 0.5493 -0.8085 -0.2113 +vn -0.0232 -0.6903 -0.7232 +vn -0.0232 0.7232 0.6903 +vn 0.3362 -0.9352 -0.1116 +vn 0.7958 -0.4282 0.4282 +vn -0.5493 0.8085 0.2113 +vn -0.5493 -0.2113 -0.8085 +vn 0.5743 0.1754 0.7996 +vn 0.5743 -0.7996 -0.1754 +vn -0.8510 0.3713 -0.3713 +vn 0.0232 -0.7232 -0.6903 +vn 0.0232 0.6903 0.7232 +vn -0.4844 -0.1726 -0.8576 +vn 0.5287 0.0957 0.8434 +vn 0.5287 -0.8434 -0.0956 +vn 0.0465 -0.7385 -0.6727 +vn 0.0465 0.6727 0.7385 +vn 0.7071 -0.5000 0.5000 +vn -0.4844 0.8577 0.1725 +vn -0.7071 -0.7071 0.0000 +vn -0.2588 0.9659 0.0000 +vn -0.9659 -0.2588 0.0000 +s off +f 603/1061/179 604/1062/179 605/1063/179 +f 606/1064/179 607/1065/179 608/1066/179 +f 609/1067/180 610/1068/180 611/1069/180 +f 607/1070/181 612/1071/181 613/1072/181 +f 614/1073/179 615/1074/179 616/1075/179 +f 617/1076/179 618/1077/179 614/1073/179 +f 619/1078/179 608/1066/179 620/1079/179 +f 621/1080/179 620/1079/179 622/1081/179 +f 623/1082/179 621/1080/179 622/1081/179 +f 624/1083/179 625/1084/179 623/1082/179 +f 626/1085/179 624/1083/179 627/1086/179 +f 628/1087/179 626/1088/179 627/1089/179 +f 610/1090/179 629/1091/179 628/1087/179 +f 611/1092/179 615/1074/179 609/1093/179 +f 630/1094/182 631/1095/182 632/1096/182 +f 633/1097/182 634/1098/182 635/1099/182 +f 636/1100/182 632/1096/182 637/1101/182 +f 638/1102/182 636/1100/182 637/1101/182 +f 639/1103/182 638/1102/182 640/1104/182 +f 641/1105/182 640/1104/182 642/1106/182 +f 643/1107/182 641/1105/182 642/1106/182 +f 644/1108/182 643/1107/182 645/1109/182 +f 646/1110/182 645/1109/182 647/1111/182 +f 648/1112/182 647/1111/182 649/1113/182 +f 650/1114/182 648/1115/182 649/1116/182 +f 631/1095/182 651/1117/182 652/1118/182 +f 651/1117/182 650/1114/182 652/1118/182 +f 653/1119/183 654/1120/183 655/1121/183 +f 653/1122/184 656/1123/184 657/1124/184 +f 658/1125/185 655/1121/185 654/1120/185 +f 657/1126/186 659/1127/186 654/1120/186 +f 655/1121/187 660/1128/187 653/1119/187 +f 658/1125/188 661/1129/188 662/1130/188 +f 663/1131/189 660/1132/189 664/1133/189 +f 665/1134/190 656/1123/190 666/1135/190 +f 667/1136/191 659/1137/191 668/1138/191 +f 663/1139/192 669/1140/192 670/1141/192 +f 671/1142/193 668/1138/193 656/1123/193 +f 672/1143/194 673/1144/194 667/1145/194 +f 657/1124/195 656/1123/195 668/1138/195 +f 671/1142/196 672/1146/196 667/1136/196 +f 653/1122/197 660/1132/197 666/1135/197 +f 670/1147/198 666/1135/198 660/1132/198 +f 669/1148/199 665/1134/199 670/1147/199 +f 665/1134/200 672/1146/200 671/1142/200 +f 654/1120/201 659/1127/201 658/1125/201 +f 674/1149/202 659/1150/202 673/1151/202 +f 655/1121/203 662/1130/203 664/1152/203 +f 661/1129/204 664/1133/204 662/1130/204 +f 669/1140/205 675/1153/205 672/1143/205 +f 673/1144/206 675/1153/206 674/1149/206 +f 663/1139/207 661/1129/207 676/1154/207 +f 674/1149/208 676/1154/208 661/1129/208 +f 605/1063/179 677/1155/179 678/1156/179 +f 678/1156/179 679/1157/179 605/1063/179 +f 679/1157/179 603/1061/179 605/1063/179 +f 603/1061/179 680/1158/179 604/1062/179 +f 680/1158/179 681/1159/179 604/1062/179 +f 681/1159/179 682/1160/179 604/1062/179 +f 604/1062/179 683/1161/179 605/1063/179 +f 683/1161/179 684/1162/179 605/1063/179 +f 684/1162/179 685/1163/179 605/1063/179 +f 606/1064/179 686/1164/179 607/1065/179 +f 609/1067/180 687/1165/180 610/1068/180 +f 607/1070/181 686/1166/181 612/1071/181 +f 614/1073/179 618/1077/179 615/1074/179 +f 617/1076/179 688/1167/179 618/1077/179 +f 619/1078/179 606/1064/179 608/1066/179 +f 621/1080/179 619/1078/179 620/1079/179 +f 623/1082/179 625/1084/179 621/1080/179 +f 624/1083/179 689/1168/179 625/1084/179 +f 626/1085/179 689/1168/179 624/1083/179 +f 628/1087/179 629/1091/179 626/1088/179 +f 610/1090/179 687/1169/179 629/1091/179 +f 611/1092/179 616/1075/179 615/1074/179 +f 630/1094/182 690/1170/182 631/1095/182 +f 691/1171/182 692/1172/182 633/1097/182 +f 633/1097/182 693/1173/182 634/1098/182 +f 634/1098/182 694/1174/182 695/1175/182 +f 695/1175/182 696/1176/182 634/1098/182 +f 696/1176/182 635/1099/182 634/1098/182 +f 635/1099/182 697/1177/182 691/1171/182 +f 697/1177/182 698/1178/182 691/1171/182 +f 698/1178/182 699/1179/182 691/1171/182 +f 691/1171/182 633/1097/182 635/1099/182 +f 636/1100/182 630/1094/182 632/1096/182 +f 638/1102/182 700/1180/182 636/1100/182 +f 639/1103/182 700/1180/182 638/1102/182 +f 641/1105/182 639/1103/182 640/1104/182 +f 643/1107/182 701/1181/182 641/1105/182 +f 644/1108/182 701/1181/182 643/1107/182 +f 646/1110/182 644/1108/182 645/1109/182 +f 648/1112/182 646/1110/182 647/1111/182 +f 650/1114/182 702/1182/182 648/1115/182 +f 631/1095/182 690/1170/182 651/1117/182 +f 651/1117/182 702/1182/182 650/1114/182 +f 653/1119/183 657/1126/183 654/1120/183 +f 653/1122/184 666/1135/184 656/1123/184 +f 658/1125/209 662/1130/209 655/1121/209 +f 657/1126/186 668/1183/186 659/1127/186 +f 655/1121/187 664/1152/187 660/1128/187 +f 658/1125/188 674/1149/188 661/1129/188 +f 663/1131/189 670/1147/189 660/1132/189 +f 665/1134/190 671/1142/190 656/1123/190 +f 667/1136/191 673/1184/191 659/1137/191 +f 663/1139/192 676/1154/192 669/1140/192 +f 671/1142/193 667/1136/193 668/1138/193 +f 672/1143/194 675/1153/194 673/1144/194 +f 670/1147/198 665/1134/198 666/1135/198 +f 665/1134/200 669/1148/200 672/1146/200 +f 674/1149/202 658/1125/202 659/1150/202 +f 661/1129/204 663/1131/204 664/1133/204 +f 669/1140/210 676/1154/210 675/1153/210 +f 674/1149/208 675/1153/208 676/1154/208 +s 1 +f 622/1081/181 684/1185/211 683/1186/181 +f 627/1086/212 682/1187/180 681/1188/212 +f 615/1189/213 632/1096/214 631/1095/213 +f 620/1079/211 685/1190/215 684/1185/211 +f 624/1083/180 604/1191/216 682/1187/180 +f 617/1076/217 678/1192/214 677/1193/218 +f 623/1082/216 683/1186/181 604/1191/216 +f 628/1087/219 681/1194/212 680/1195/219 +f 614/1073/214 679/1196/213 678/1192/214 +f 608/1066/215 607/1065/220 613/1197/221 +f 613/1072/222 612/1071/223 617/1198/224 +f 617/1198/225 612/1071/223 688/1199/226 +f 605/1200/227 617/1076/217 677/1193/218 +f 637/1101/218 618/1201/214 688/1202/228 +f 611/1092/229 628/1087/219 680/1195/219 +f 688/1202/228 686/1166/230 637/1101/218 +f 652/1118/231 629/1203/219 687/1165/232 +f 645/1109/216 621/1204/181 625/1205/216 +f 650/1114/219 626/1206/212 629/1203/219 +f 643/1107/181 619/1207/211 621/1204/181 +f 649/1113/212 689/1208/180 626/1209/212 +f 619/1207/211 640/1104/215 606/1210/215 +f 647/1111/180 625/1205/216 689/1208/180 +f 640/1104/215 686/1166/230 606/1210/215 +f 631/1095/213 652/1118/231 687/1165/232 +f 691/1211/214 690/1170/213 630/1094/214 +f 694/1212/181 641/1105/211 701/1181/181 +f 635/1213/212 646/1110/180 648/1112/212 +f 699/1214/213 651/1117/231 690/1170/213 +f 634/1215/211 639/1103/215 641/1105/211 +f 633/1216/227 636/1100/218 700/1180/227 +f 696/1217/180 644/1108/216 646/1110/180 +f 698/1218/231 702/1182/219 651/1117/231 +f 693/1219/215 700/1180/227 639/1103/215 +f 692/1220/218 630/1094/214 636/1100/218 +f 695/1221/216 701/1181/181 644/1108/216 +f 697/1222/219 648/1115/212 702/1182/219 +f 679/1196/213 611/1092/229 603/1223/231 +f 703/1224/179 704/1225/233 705/1226/234 +f 706/1227/227 707/1228/235 708/1229/236 +f 709/1230/237 710/1231/238 706/1227/227 +f 711/1232/239 712/1233/240 713/1234/182 +f 705/1226/234 714/1235/241 715/1236/212 +f 708/1229/236 716/1237/242 703/1224/179 +f 713/1234/182 717/1238/243 709/1230/237 +f 715/1239/212 718/1240/244 711/1232/239 +f 712/1233/240 719/1241/245 717/1238/243 +f 714/1242/241 720/1243/246 718/1240/244 +f 710/1231/238 721/1244/247 707/1228/235 +f 717/1238/243 722/1245/248 710/1231/238 +f 712/1233/240 720/1243/246 723/1246/249 +f 707/1228/235 724/1247/250 716/1237/242 +f 722/1245/248 725/1248/251 726/1249/252 +f 720/1243/246 727/1250/253 723/1246/249 +f 721/1244/247 728/1251/254 724/1247/250 +f 723/1246/249 725/1248/251 719/1241/245 +f 720/1243/246 729/1252/255 730/1253/256 +f 721/1244/247 726/1249/252 731/1254/257 +f 716/1237/242 724/1247/250 704/1255/233 +f 704/1256/233 732/1257/258 714/1258/241 +f 732/1257/258 704/1259/233 729/1260/255 +f 724/1247/250 728/1251/254 704/1261/233 +f 728/1251/254 733/1262/259 704/1263/233 +f 725/1248/251 734/1264/260 726/1249/252 +f 730/1253/256 735/1265/261 727/1250/253 +f 731/1254/257 736/1266/262 728/1251/254 +f 704/1263/233 737/1267/263 729/1268/255 +f 727/1250/253 738/1269/264 725/1248/251 +f 730/1253/256 737/1270/263 739/1271/265 +f 726/1249/252 740/1272/266 731/1254/257 +f 739/1271/265 741/1273/267 735/1265/261 +f 740/1272/266 742/1274/268 736/1266/262 +f 733/1262/259 743/1275/269 737/1267/263 +f 737/1270/263 744/1276/270 739/1271/265 +f 734/1264/260 745/1277/271 740/1272/266 +f 736/1266/262 746/1278/272 733/1262/259 +f 738/1269/264 747/1279/273 734/1264/260 +f 735/1265/261 741/1273/267 738/1269/264 +f 622/1081/181 620/1079/211 684/1185/211 +f 627/1086/212 624/1083/180 682/1187/180 +f 615/1189/213 618/1201/214 632/1096/214 +f 620/1079/211 608/1066/215 685/1190/215 +f 624/1083/180 623/1082/216 604/1191/216 +f 617/1076/217 614/1073/214 678/1192/214 +f 623/1082/216 622/1081/181 683/1186/181 +f 628/1087/219 627/1089/212 681/1194/212 +f 614/1073/214 616/1075/213 679/1196/213 +f 613/1197/221 605/1200/227 685/1190/215 +f 685/1190/215 608/1066/215 613/1197/221 +f 605/1200/227 613/1197/221 617/1076/217 +f 637/1101/218 632/1096/214 618/1201/214 +f 680/1195/219 603/1223/231 611/1092/229 +f 611/1092/229 610/1090/274 628/1087/219 +f 612/1071/275 686/1166/230 688/1202/228 +f 686/1166/230 638/1102/227 637/1101/218 +f 652/1118/231 650/1114/219 629/1203/219 +f 645/1109/216 643/1107/181 621/1204/181 +f 650/1114/219 649/1116/212 626/1206/212 +f 643/1107/181 642/1106/211 619/1207/211 +f 649/1113/212 647/1111/180 689/1208/180 +f 619/1207/211 642/1106/211 640/1104/215 +f 647/1111/180 645/1109/216 625/1205/216 +f 640/1104/215 638/1102/227 686/1166/230 +f 687/1165/232 609/1067/276 615/1189/213 +f 615/1189/213 631/1095/213 687/1165/232 +f 691/1211/214 699/1214/213 690/1170/213 +f 694/1212/181 634/1215/211 641/1105/211 +f 635/1213/212 696/1217/180 646/1110/180 +f 699/1214/213 698/1218/231 651/1117/231 +f 634/1215/211 693/1219/215 639/1103/215 +f 633/1216/227 692/1220/218 636/1100/218 +f 696/1217/180 695/1221/216 644/1108/216 +f 698/1218/231 697/1222/219 702/1182/219 +f 693/1219/215 633/1216/227 700/1180/227 +f 692/1220/218 691/1211/214 630/1094/214 +f 695/1221/216 694/1212/181 701/1181/181 +f 697/1222/219 635/1280/212 648/1115/212 +f 679/1196/213 616/1075/213 611/1092/229 +f 703/1224/179 716/1237/242 704/1225/233 +f 706/1227/227 710/1231/238 707/1228/235 +f 709/1230/237 717/1238/243 710/1231/238 +f 711/1232/239 718/1240/244 712/1233/240 +f 705/1226/234 704/1225/233 714/1235/241 +f 708/1229/236 707/1228/235 716/1237/242 +f 713/1234/182 712/1233/240 717/1238/243 +f 715/1239/212 714/1242/241 718/1240/244 +f 712/1233/240 723/1246/249 719/1241/245 +f 714/1242/241 732/1281/258 720/1243/246 +f 710/1231/238 722/1245/248 721/1244/247 +f 717/1238/243 719/1241/245 722/1245/248 +f 712/1233/240 718/1240/244 720/1243/246 +f 707/1228/235 721/1244/247 724/1247/250 +f 722/1245/248 719/1241/245 725/1248/251 +f 720/1243/246 730/1253/256 727/1250/253 +f 721/1244/247 731/1254/257 728/1251/254 +f 723/1246/249 727/1250/253 725/1248/251 +f 720/1243/246 732/1281/258 729/1252/255 +f 721/1244/247 722/1245/248 726/1249/252 +f 728/1251/254 736/1266/262 733/1262/259 +f 725/1248/251 738/1269/264 734/1264/260 +f 730/1253/256 739/1271/265 735/1265/261 +f 731/1254/257 740/1272/266 736/1266/262 +f 704/1263/233 733/1262/259 737/1267/263 +f 727/1250/253 735/1265/261 738/1269/264 +f 730/1253/256 729/1252/255 737/1270/263 +f 726/1249/252 734/1264/260 740/1272/266 +f 739/1271/265 744/1276/270 741/1273/267 +f 740/1272/266 745/1277/271 742/1274/268 +f 733/1262/259 746/1278/272 743/1275/269 +f 737/1270/263 743/1282/269 744/1276/270 +f 734/1264/260 747/1279/273 745/1277/271 +f 736/1266/262 742/1274/268 746/1278/272 +o Stock +v -0.375000 0.393690 -2.078125 +v -0.375000 0.393690 -2.171875 +v -0.375000 0.231310 -2.171875 +v 0.375000 0.393690 -2.171875 +v 0.375000 0.393690 -2.078125 +v 0.375000 0.231310 -2.078125 +v -0.062500 0.218750 -4.125000 +v 0.062500 0.343750 -4.500000 +v 0.062500 0.218750 -4.125000 +v 0.250000 0.718750 -3.062500 +v -0.250000 0.718750 -3.062500 +v -0.375000 0.359375 -2.206190 +v -0.375000 0.312500 -2.218750 +v -0.375000 0.265625 -2.206190 +v -0.375000 0.218750 -2.125000 +v -0.375000 0.231310 -2.078125 +v -0.375000 0.265625 -2.043810 +v -0.375000 0.312500 -2.031250 +v -0.375000 0.359375 -2.043810 +v -0.375000 0.406250 -2.125000 +v 0.375000 0.312500 -2.218750 +v 0.375000 0.359375 -2.206190 +v 0.375000 0.406250 -2.125000 +v 0.375000 0.359375 -2.043810 +v 0.375000 0.312500 -2.031250 +v 0.375000 0.265625 -2.043810 +v 0.375000 0.218750 -2.125000 +v 0.375000 0.231310 -2.171875 +v 0.375000 0.265625 -2.206190 +v -0.062500 0.343750 -4.500000 +v -0.250000 0.531250 -1.750000 +v -0.312500 0.156250 -1.812500 +v -0.250000 0.093750 -1.750000 +v -0.312500 0.656250 -1.875000 +v -0.250000 0.718750 -1.812500 +v -0.250000 0.781250 -2.000000 +v -0.312500 0.718750 -3.062500 +v -0.312500 0.718750 -2.000000 +v -0.250000 -0.031250 -2.937500 +v -0.312500 0.031250 -2.937500 +v -0.312500 -0.156250 -3.437500 +v -0.250000 -0.218750 -3.437500 +v -0.312500 -0.343750 -3.687500 +v -0.250000 -0.406250 -3.687500 +v -0.312500 -0.593750 -3.812500 +v -0.250000 -0.656250 -3.812500 +v -0.312500 -0.718750 -4.562500 +v -0.250000 -0.781250 -4.562500 +v -0.312500 -2.031250 -7.500000 +v -0.250000 -2.093750 -7.500000 +v -0.250000 -2.031250 -7.625000 +v -0.312500 -1.968750 -7.625000 +v 0.312500 0.156250 -1.812500 +v 0.250000 0.531250 -1.750000 +v 0.250000 0.093750 -1.750000 +v 0.312500 0.656250 -1.875000 +v 0.250000 0.718750 -1.812500 +v 0.250000 0.781250 -2.000000 +v 0.312500 0.718750 -3.062500 +v 0.312500 0.718750 -2.000000 +v 0.250000 -0.031250 -2.937500 +v 0.312500 -0.156250 -3.437500 +v 0.250000 -0.218750 -3.437500 +v 0.312500 -0.343750 -3.687500 +v 0.250000 -0.406250 -3.687500 +v 0.312500 -0.593750 -3.812500 +v 0.250000 -0.656250 -3.812500 +v 0.312500 -0.718750 -4.562500 +v 0.250000 -0.781250 -4.562500 +v 0.312500 -2.031250 -7.500000 +v 0.250000 -2.093750 -7.500000 +v 0.250000 -2.031250 -7.625000 +v -0.312500 -0.156250 -7.937500 +v 0.250000 -0.031250 -7.812500 +v 0.312500 -0.156250 -7.937500 +v 0.062500 0.468750 -4.500000 +v -0.250000 -0.031250 -7.812500 +v -0.062500 0.468750 -4.500000 +v 0.062500 0.343750 -4.375000 +v -0.062500 0.343750 -4.375000 +v 0.062500 0.281250 -4.187500 +v -0.062500 0.281250 -4.187500 +v 0.062500 0.281250 -4.125000 +v -0.062500 0.281250 -4.125000 +v 0.187500 0.218750 -4.500000 +v -0.187500 0.218750 -4.500000 +v -0.250000 0.781250 -3.062500 +v -0.187500 0.218750 -4.375000 +v -0.312500 0.031250 -4.187500 +v -0.312500 0.531250 -1.812500 +v -0.312500 0.031250 -4.125000 +v 0.187500 0.218750 -4.375000 +v 0.312500 0.031250 -4.187500 +v 0.250000 0.781250 -3.062500 +v 0.312500 0.031250 -4.125000 +v 0.312500 0.531250 -1.812500 +v 0.312500 0.031250 -2.937500 +v -0.312500 0.468750 -2.125000 +v -0.312500 0.447816 -2.203125 +v -0.312500 0.390625 -2.260316 +v -0.312500 0.312500 -2.281250 +v -0.312500 0.234375 -2.260316 +v -0.312500 0.177184 -2.203125 +v -0.312500 0.156250 -2.125000 +v -0.312500 0.177184 -2.046875 +v -0.312500 0.234375 -1.989684 +v -0.312500 0.312500 -1.968750 +v -0.312500 0.390625 -1.989684 +v -0.312500 0.447816 -2.046875 +v 0.312500 -1.968750 -7.625000 +v 0.250000 -1.968750 -7.625000 +v -0.250000 -1.968750 -7.625000 +v 0.312500 0.468750 -2.125000 +v 0.312500 0.447816 -2.203125 +v 0.312500 0.390625 -2.260316 +v 0.312500 0.312500 -2.281250 +v 0.312500 0.234375 -2.260316 +v 0.312500 0.177184 -2.203125 +v 0.312500 0.156250 -2.125000 +v 0.312500 0.177184 -2.046875 +v 0.312500 0.234375 -1.989684 +v 0.312500 0.312500 -1.968750 +v 0.312500 0.390625 -1.989684 +v 0.312500 0.447816 -2.046875 +v -0.250000 -1.968750 -7.562500 +v 0.250000 -1.968750 -7.562500 +v -0.250000 -0.156250 -7.875000 +v 0.250000 -0.156250 -7.875000 +vt 0.004261 0.532949 +vt 0.012784 0.532949 +vt 0.012784 0.518187 +vt 0.012784 0.532949 +vt 0.004261 0.532949 +vt 0.004261 0.518187 +vt 0.488636 0.562500 +vt 0.454545 0.551136 +vt 0.488636 0.551136 +vt 0.585227 0.534091 +vt 0.585227 0.579545 +vt 0.015904 0.529830 +vt 0.017045 0.525568 +vt 0.015904 0.521307 +vt 0.008523 0.517045 +vt 0.004261 0.518187 +vt 0.001142 0.521307 +vt 0.000000 0.525568 +vt 0.001142 0.529830 +vt 0.008523 0.534091 +vt 0.017045 0.525568 +vt 0.015904 0.529830 +vt 0.008523 0.534091 +vt 0.001142 0.529830 +vt 0.000000 0.525568 +vt 0.001142 0.521307 +vt 0.008523 0.517045 +vt 0.012784 0.518187 +vt 0.015904 0.521307 +vt 0.454545 0.562500 +vt 0.119318 0.613636 +vt 0.153409 0.607955 +vt 0.159091 0.613636 +vt 0.109375 0.607955 +vt 0.107955 0.613636 +vt 0.096591 0.613636 +vt 0.106534 0.607955 +vt 0.000000 0.607955 +vt 0.096591 0.607955 +vt 0.267045 0.613636 +vt 0.164773 0.607955 +vt 0.267045 0.607955 +vt 0.312500 0.607955 +vt 0.312500 0.613636 +vt 0.340909 0.607955 +vt 0.340909 0.613636 +vt 0.363636 0.607955 +vt 0.363636 0.613636 +vt 0.000000 0.607955 +vt 0.068182 0.602273 +vt 0.068182 0.607955 +vt 0.357955 0.602273 +vt 0.357955 0.607955 +vt 0.369318 0.607955 +vt 0.369318 0.602273 +vt 0.153409 0.625000 +vt 0.119318 0.619318 +vt 0.159091 0.619318 +vt 0.109375 0.625000 +vt 0.107955 0.619318 +vt 0.106534 0.625000 +vt 0.096591 0.619318 +vt 0.000000 0.625000 +vt 0.096591 0.625000 +vt 0.267045 0.619318 +vt 0.164773 0.625000 +vt 0.312500 0.625000 +vt 0.312500 0.619318 +vt 0.340909 0.625000 +vt 0.340909 0.619318 +vt 0.363636 0.625000 +vt 0.363636 0.619318 +vt 0.068182 0.619318 +vt 0.000000 0.613636 +vt 0.068182 0.613636 +vt 0.357955 0.619318 +vt 0.357955 0.613636 +vt 0.369318 0.613636 +vt 0.170455 0.454545 +vt 0.181818 0.505682 +vt 0.170455 0.511364 +vt 0.482955 0.488636 +vt 0.181818 0.460227 +vt 0.482955 0.477273 +vt 0.500000 0.488636 +vt 0.500000 0.477273 +vt 0.517045 0.488636 +vt 0.517045 0.477273 +vt 0.522727 0.488636 +vt 0.522727 0.477273 +vt 0.244318 0.977273 +vt 0.244318 0.954545 +vt 0.545455 0.931818 +vt 0.244318 0.977273 +vt 0.545455 0.931818 +vt 0.244318 0.954545 +vt 0.522727 0.460227 +vt 0.630682 0.454545 +vt 0.630682 0.460227 +vt 0.500000 0.460227 +vt 0.517045 0.443182 +vt 0.005682 0.994318 +vt 0.017045 1.000000 +vt 0.000000 0.982955 +vt 0.000000 0.948864 +vt 0.102273 0.937500 +vt 0.113636 1.000000 +vt 0.147727 0.920455 +vt 0.210227 0.937500 +vt 0.170455 0.903409 +vt 0.181818 0.880682 +vt 0.215909 0.937500 +vt 0.250000 0.869318 +vt 0.556818 0.920455 +vt 0.517045 0.750000 +vt 0.528409 0.755682 +vt 0.232955 0.954545 +vt 0.232955 0.954545 +vt 0.500000 0.505682 +vt 0.517045 0.522727 +vt 0.630682 0.505682 +vt 0.630682 0.511364 +vt 0.522727 0.505682 +vt 0.522727 0.539773 +vt 0.522727 0.426136 +vt 0.005682 0.994318 +vt -0.000000 0.982955 +vt 0.017045 1.000000 +vt -0.000000 0.948864 +vt 0.102273 0.937500 +vt 0.113636 1.000000 +vt 0.147727 0.920455 +vt 0.210227 0.937500 +vt 0.170455 0.903409 +vt 0.181818 0.880682 +vt 0.215909 0.937500 +vt 0.556818 0.920455 +vt 0.250000 0.869318 +vt 0.517045 0.750000 +vt 0.056818 0.534091 +vt 0.051136 0.528409 +vt 0.056818 0.528409 +vt 0.062500 0.528409 +vt 0.068182 0.534091 +vt 0.068182 0.528409 +vt 0.073864 0.534091 +vt 0.073864 0.528409 +vt 0.079545 0.534091 +vt 0.079545 0.528409 +vt 0.085227 0.534091 +vt 0.085227 0.528409 +vt 0.022727 0.528409 +vt 0.017045 0.534091 +vt 0.017045 0.528409 +vt 0.028409 0.528409 +vt 0.022727 0.534091 +vt 0.034091 0.528409 +vt 0.028409 0.534091 +vt 0.039773 0.528409 +vt 0.034091 0.534091 +vt 0.051136 0.534091 +vt 0.045455 0.528409 +vt 0.039773 0.534091 +vt 0.005682 0.511364 +vt 0.000000 0.505682 +vt 0.005682 0.505682 +vt 0.005682 0.454545 +vt 0.005682 0.460227 +vt 0.000000 0.460227 +vt 0.051136 0.534091 +vt 0.056818 0.528409 +vt 0.056818 0.534091 +vt 0.062500 0.534091 +vt 0.062500 0.528409 +vt 0.068182 0.528409 +vt 0.068182 0.534091 +vt 0.073864 0.528409 +vt 0.073864 0.534091 +vt 0.079545 0.528409 +vt 0.079545 0.534091 +vt 0.085227 0.528409 +vt 0.085227 0.534091 +vt 0.022727 0.534091 +vt 0.017045 0.528409 +vt 0.022727 0.528409 +vt 0.028409 0.534091 +vt 0.028409 0.528409 +vt 0.034091 0.534091 +vt 0.034091 0.528409 +vt 0.039773 0.534091 +vt 0.039773 0.528409 +vt 0.045455 0.534091 +vt 0.051136 0.528409 +vt 0.045455 0.528409 +vt 0.511364 0.579545 +vt 0.505682 0.579545 +vt 0.511364 0.573864 +vt 0.511364 0.579545 +vt 0.511364 0.573864 +vt 0.505682 0.579545 +vt 0.005682 0.534091 +vt 0.000000 0.579545 +vt 0.000000 0.534091 +vt 0.170455 0.579545 +vt 0.005682 0.579545 +vt 0.590909 0.534091 +vt 0.590909 0.579545 +vt 0.170455 0.534091 +vt 0.005682 0.823864 +vt 0.022727 0.829545 +vt 0.000000 0.806818 +vt 0.119318 0.823864 +vt 0.107955 0.755682 +vt 0.000000 0.767045 +vt 0.176136 0.721591 +vt 0.153409 0.738636 +vt 0.215909 0.778409 +vt 0.187500 0.698864 +vt 0.255682 0.687500 +vt 0.250000 0.789773 +vt 0.534091 0.744318 +vt 0.500000 0.568182 +vt 0.005682 0.823864 +vt 0.000000 0.806818 +vt 0.022727 0.829545 +vt 0.119318 0.823864 +vt 0.119318 0.829545 +vt 0.107955 0.755682 +vt 0.000000 0.767045 +vt 0.153409 0.738636 +vt 0.215909 0.778409 +vt 0.176136 0.721591 +vt 0.187500 0.698864 +vt 0.255682 0.687500 +vt 0.250000 0.789773 +vt 0.534091 0.744318 +vt 0.500000 0.568182 +vt 0.119318 0.607955 +vt 0.117898 0.607955 +vt 0.098011 0.607955 +vt 0.000000 0.613636 +vt 0.000000 0.602273 +vt 0.119318 0.625000 +vt 0.117898 0.625000 +vt 0.098011 0.625000 +vt 0.000000 0.619318 +vt 0.267045 0.625000 +vt 0.000000 0.619318 +vt 0.369318 0.619318 +vt 0.522727 0.443182 +vt 0.522727 0.522727 +vt 0.528409 0.755682 +vt 0.062500 0.534091 +vt 0.045455 0.534091 +vt 0.017045 0.534091 +vt 0.119318 0.829545 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -0.9487 -0.3162 +vn 0.0000 -0.9048 0.4258 +vn -0.7202 0.1292 0.6816 +vn -0.7071 0.0000 0.7071 +vn -0.7863 0.4369 0.4369 +vn -0.8165 0.4082 0.4082 +vn -0.7202 0.6816 0.1292 +vn -0.6870 0.6870 -0.2366 +vn -0.6949 0.6949 0.1848 +vn -0.6969 -0.6951 0.1766 +vn -0.7385 -0.6706 0.0707 +vn -0.6982 -0.6982 0.1581 +vn -0.6650 -0.6650 0.3398 +vn -0.6521 -0.6521 0.3868 +vn -0.5716 -0.5716 0.5886 +vn -0.4925 -0.4925 0.7175 +vn -0.5704 -0.5704 0.5909 +vn -0.6517 -0.6517 0.3881 +vn -0.6932 -0.6932 0.1973 +vn -0.6895 -0.6895 0.2215 +vn -0.7070 -0.7070 -0.0195 +vn -0.7070 -0.7070 -0.0131 +vn -0.6667 -0.6667 -0.3333 +vn 0.7071 0.0000 0.7071 +vn 0.7195 0.2771 0.6368 +vn 0.7863 0.4369 0.4369 +vn 0.8165 0.4082 0.4082 +vn 0.7202 0.6816 0.1292 +vn 0.6870 0.6870 -0.2366 +vn 0.6949 0.6949 0.1848 +vn 0.6969 -0.6951 0.1766 +vn 0.7385 -0.6706 0.0707 +vn 0.7397 -0.6692 0.0704 +vn 0.6650 -0.6650 0.3398 +vn 0.6521 -0.6521 0.3868 +vn 0.5716 -0.5716 0.5886 +vn 0.4925 -0.4925 0.7175 +vn 0.5704 -0.5704 0.5909 +vn 0.6517 -0.6517 0.3881 +vn 0.6932 -0.6932 0.1973 +vn 0.6895 -0.6895 0.2215 +vn 0.7070 -0.7070 -0.0195 +vn 0.7070 -0.7070 -0.0131 +vn 0.6667 -0.6667 -0.3333 +vn 0.0000 0.2421 -0.9702 +vn 0.0000 0.8749 -0.4843 +vn 0.0000 0.9888 -0.1493 +vn 0.0000 0.8507 0.5257 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.9871 0.1602 +vn 0.3731 0.8951 -0.2443 +vn -0.3731 0.8951 -0.2443 +vn 0.8944 0.4472 -0.0130 +vn 0.8728 0.4879 -0.0146 +vn 0.8872 0.4611 -0.0181 +vn -0.8944 0.4472 -0.0130 +vn -0.8872 0.4611 -0.0181 +vn -0.8728 0.4879 -0.0146 +vn -0.4980 0.8162 -0.2930 +vn -0.7017 0.7017 0.1232 +vn -0.6318 0.6318 0.4491 +vn -0.6758 0.6758 0.2944 +vn -0.7053 0.7053 0.0723 +vn -0.9921 0.1254 -0.0045 +vn -0.9854 0.1702 -0.0069 +vn -0.8545 0.5194 0.0000 +vn -0.5774 0.5774 0.5774 +vn 0.8545 0.5194 0.0000 +vn 0.6318 0.6318 0.4491 +vn 0.6758 0.6758 0.2944 +vn 0.5774 0.5774 0.5774 +vn 0.7017 0.7017 0.1232 +vn 0.7053 0.7053 0.0723 +vn 0.4980 0.8162 -0.2930 +vn 0.6953 0.6953 -0.1823 +vn -0.6953 0.6953 -0.1823 +vn 0.9921 0.1254 -0.0045 +vn 0.9854 0.1702 -0.0069 +vn -0.7071 0.6124 -0.3536 +vn -0.7071 0.7071 0.0000 +vn -0.7071 0.3536 -0.6124 +vn -0.7071 0.0000 -0.7071 +vn -0.7071 -0.3536 -0.6124 +vn -0.7071 -0.6124 -0.3536 +vn -0.7071 -0.7071 0.0000 +vn -0.7071 -0.6124 0.3536 +vn -0.7071 -0.3536 0.6124 +vn -0.7071 0.3536 0.6124 +vn -0.7071 0.6124 0.3536 +vn 0.0000 -0.1136 -0.9935 +vn 0.0000 0.0000 -1.0000 +vn 0.7071 0.7071 0.0000 +vn 0.7071 0.6124 -0.3536 +vn 0.7071 0.3536 -0.6124 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 -0.3536 -0.6124 +vn 0.7071 -0.6124 -0.3536 +vn 0.7071 -0.7071 0.0000 +vn 0.7071 -0.6124 0.3536 +vn 0.7071 -0.3536 0.6124 +vn 0.7071 0.3536 0.6124 +vn 0.7071 0.6124 0.3536 +vn 0.0000 -0.6442 0.7648 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.5715 0.8206 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -0.9892 0.1465 +vn -0.9992 -0.0151 0.0379 +vn -0.9811 -0.1672 0.0979 +vn -0.9852 -0.1026 0.1371 +vn -0.9841 -0.1620 0.0733 +vn -0.9906 -0.1366 0.0031 +vn -0.9859 -0.1620 -0.0420 +vn -0.9993 -0.0355 -0.0067 +vn 0.9992 -0.0151 0.0379 +vn 0.9852 -0.1026 0.1371 +vn 0.9841 -0.1620 0.0733 +vn 0.9811 -0.1672 0.0979 +vn 0.9906 -0.1366 0.0031 +vn 0.9859 -0.1620 -0.0420 +vn 0.9993 -0.0355 -0.0067 +vn -0.6949 0.1848 0.6949 +vn -0.7397 -0.6692 0.0704 +vn 0.6667 0.3333 0.6667 +vn 0.6982 -0.6982 0.1581 +s off +f 748/1283/277 749/1284/277 750/1285/277 +f 751/1286/278 752/1287/278 753/1288/278 +f 754/1289/279 755/1290/279 756/1291/279 +f 754/1289/280 757/1292/280 758/1293/280 +f 749/1284/277 759/1294/277 750/1285/277 +f 759/1294/277 760/1295/277 750/1285/277 +f 760/1295/277 761/1296/277 750/1285/277 +f 750/1285/277 762/1297/277 763/1298/277 +f 763/1298/277 764/1299/277 750/1285/277 +f 764/1299/277 765/1300/277 750/1285/277 +f 765/1300/277 766/1301/277 748/1283/277 +f 748/1283/277 767/1302/277 749/1284/277 +f 765/1300/277 748/1283/277 750/1285/277 +f 768/1303/278 769/1304/278 751/1286/278 +f 751/1286/278 770/1305/278 752/1287/278 +f 752/1287/278 771/1306/278 772/1307/278 +f 772/1307/278 773/1308/278 752/1287/278 +f 773/1308/278 753/1288/278 752/1287/278 +f 753/1288/278 774/1309/278 775/1310/278 +f 775/1310/278 776/1311/278 753/1288/278 +f 776/1311/278 768/1303/278 753/1288/278 +f 768/1303/278 751/1286/278 753/1288/278 +f 754/1289/279 777/1312/279 755/1290/279 +f 754/1289/280 756/1291/280 757/1292/280 +s 1 +f 778/1313/281 779/1314/282 780/1315/282 +f 781/1316/283 778/1313/281 782/1317/284 +f 783/1318/285 781/1319/283 782/1317/284 +f 783/1318/285 784/1320/286 785/1321/287 +f 786/1322/288 779/1323/289 787/1324/290 +f 786/1322/288 788/1325/291 789/1326/292 +f 789/1326/292 790/1327/293 791/1328/294 +f 791/1328/294 792/1329/295 793/1330/296 +f 793/1331/296 794/1332/297 795/1333/298 +f 795/1333/298 796/1334/299 797/1335/300 +f 798/1336/301 796/1334/299 799/1337/301 +f 800/1338/302 801/1339/302 802/1340/302 +f 801/1339/303 803/1341/304 804/1342/305 +f 803/1343/304 805/1344/306 804/1342/305 +f 806/1345/307 805/1344/306 807/1346/308 +f 808/1347/309 800/1348/310 802/1340/311 +f 809/1349/312 808/1347/309 810/1350/313 +f 811/1351/314 810/1350/313 812/1352/315 +f 813/1353/316 812/1352/315 814/1354/317 +f 815/1355/318 814/1356/317 816/1357/319 +f 817/1358/320 816/1357/319 818/1359/321 +f 819/1360/322 817/1358/320 818/1359/321 +f 820/1361/323 821/1362/324 822/1363/323 +f 823/1364/325 824/1365/324 825/1366/325 +f 826/1367/326 825/1366/327 827/1368/326 +f 828/1369/328 827/1368/326 829/1370/328 +f 830/1371/329 829/1370/328 831/1372/330 +f 823/1373/331 832/1374/332 821/1375/333 +f 825/1376/334 824/1377/335 833/1378/336 +f 831/1379/330 784/1380/286 834/1381/337 +f 834/1381/337 830/1371/329 831/1372/330 +f 829/1370/338 827/1368/339 835/1382/340 +f 836/1383/341 831/1372/330 829/1370/338 +f 781/1384/277 785/1385/277 837/1386/277 +f 779/1387/277 837/1386/277 787/1388/277 +f 785/1385/277 784/1389/277 837/1386/277 +f 837/1386/277 784/1389/277 787/1388/277 +f 788/1390/277 787/1388/277 784/1389/277 +f 784/1389/277 838/1391/277 788/1390/277 +f 788/1390/277 838/1391/277 790/1392/277 +f 792/1393/277 790/1392/277 838/1391/277 +f 792/1393/277 836/1394/342 794/1395/277 +f 836/1394/342 820/1396/343 794/1395/277 +f 796/1397/277 820/1396/343 799/1398/277 +f 835/1399/344 833/1378/336 836/1394/342 +f 833/1378/336 820/1396/343 836/1394/342 +f 820/1396/343 833/1378/336 824/1377/335 +f 836/1383/341 829/1370/338 835/1382/340 +f 827/1368/339 825/1366/345 835/1382/340 +f 833/1378/336 835/1399/344 825/1376/334 +f 832/1374/332 823/1373/331 839/1400/346 +f 826/1367/347 839/1401/348 823/1364/349 +f 828/1369/350 839/1401/348 826/1367/347 +f 830/1371/329 840/1402/351 828/1369/350 +f 828/1369/350 840/1402/351 839/1401/348 +f 841/1403/352 806/1404/307 830/1405/329 +f 842/1406/353 830/1405/329 806/1404/307 +f 838/1407/354 784/1380/286 831/1379/330 +f 803/1408/278 843/1409/278 807/1410/278 +f 800/1411/278 844/1412/278 843/1409/278 +f 806/1413/278 807/1410/278 843/1409/278 +f 843/1409/278 844/1412/278 806/1413/278 +f 844/1412/278 809/1414/278 806/1413/278 +f 806/1413/278 809/1414/278 842/1415/278 +f 809/1414/278 811/1416/278 842/1415/278 +f 811/1416/278 813/1417/278 842/1415/278 +f 813/1417/278 840/1418/355 842/1415/278 +f 839/1400/346 840/1418/355 832/1374/332 +f 832/1374/332 840/1418/355 822/1419/356 +f 840/1418/355 815/1420/278 822/1419/356 +f 817/1421/278 822/1419/356 815/1420/278 +f 822/1419/356 821/1375/333 832/1374/332 +f 749/1422/357 845/1423/358 846/1424/357 +f 847/1425/359 749/1422/357 846/1424/357 +f 760/1426/360 847/1425/359 848/1427/360 +f 761/1428/361 848/1427/360 849/1429/361 +f 750/1430/362 849/1429/361 850/1431/362 +f 762/1432/363 850/1431/362 851/1433/363 +f 852/1434/364 762/1435/363 851/1436/363 +f 853/1437/365 763/1438/364 852/1434/364 +f 854/1439/282 764/1440/365 853/1437/365 +f 855/1441/366 765/1442/282 854/1439/282 +f 767/1443/358 856/1444/367 845/1423/358 +f 856/1444/367 766/1445/366 855/1441/366 +f 857/1446/368 819/1447/369 858/1448/368 +f 799/1449/368 859/1450/368 798/1451/369 +f 859/1450/368 799/1449/368 820/1361/323 +f 860/1452/370 751/1453/371 861/1454/371 +f 862/1455/372 751/1453/371 769/1456/372 +f 862/1455/372 768/1457/373 863/1458/373 +f 863/1458/373 776/1459/374 864/1460/374 +f 864/1460/374 775/1461/375 865/1462/375 +f 865/1462/375 774/1463/376 866/1464/376 +f 867/1465/377 774/1466/376 753/1467/377 +f 868/1468/378 753/1467/377 773/1469/378 +f 869/1470/302 773/1469/378 772/1471/302 +f 870/1472/379 772/1471/302 771/1473/379 +f 871/1474/380 770/1475/370 860/1452/370 +f 871/1474/380 771/1473/379 752/1476/380 +f 859/1477/278 872/1478/278 798/1479/278 +f 858/1480/277 819/1481/277 873/1482/277 +f 873/1483/381 859/1484/382 858/1485/382 +f 873/1483/381 874/1486/383 872/1487/381 +f 758/1293/384 841/1488/384 834/1489/384 +f 755/1290/385 874/1486/383 875/1490/383 +f 804/1491/277 805/1492/277 801/1493/277 +f 805/1492/277 757/1494/386 801/1493/277 +f 801/1493/277 808/1495/277 802/1496/277 +f 812/1497/387 810/1498/388 756/1499/389 +f 814/1500/277 812/1497/387 816/1501/390 +f 756/1499/389 816/1501/390 812/1497/387 +f 810/1498/388 808/1495/277 757/1494/386 +f 757/1494/386 756/1499/389 810/1498/388 +f 755/1502/391 816/1501/390 756/1499/389 +f 755/1502/391 875/1503/392 816/1501/390 +f 819/1481/277 818/1504/277 873/1482/277 +f 816/1501/390 873/1482/277 818/1504/277 +f 782/1505/278 778/1506/278 783/1507/278 +f 783/1507/278 758/1508/393 834/1509/278 +f 786/1510/278 778/1506/278 780/1511/278 +f 789/1512/394 758/1508/393 786/1510/278 +f 758/1508/393 789/1512/394 754/1513/395 +f 789/1512/394 791/1514/396 754/1513/395 +f 793/1515/278 795/1516/397 791/1514/396 +f 754/1513/395 791/1514/396 795/1516/397 +f 777/1517/398 754/1513/395 795/1516/397 +f 777/1517/398 795/1516/397 874/1518/399 +f 798/1479/278 872/1478/278 797/1519/278 +f 872/1478/278 795/1516/397 797/1519/278 +f 778/1313/281 837/1520/400 779/1314/282 +f 781/1316/283 837/1521/400 778/1313/281 +f 783/1318/285 785/1522/287 781/1319/283 +f 783/1318/285 834/1523/337 784/1320/286 +f 786/1322/288 780/1315/401 779/1323/289 +f 786/1322/288 787/1324/290 788/1325/291 +f 789/1326/292 788/1325/291 790/1327/293 +f 791/1328/294 790/1327/293 792/1329/295 +f 793/1331/296 792/1524/295 794/1332/297 +f 795/1333/298 794/1332/297 796/1334/299 +f 798/1336/301 797/1335/300 796/1334/299 +f 800/1338/302 843/1525/302 801/1339/302 +f 801/1339/303 843/1526/402 803/1341/304 +f 803/1343/304 807/1527/308 805/1344/306 +f 806/1345/307 841/1528/352 805/1344/306 +f 808/1347/309 844/1529/403 800/1348/310 +f 809/1349/312 844/1529/403 808/1347/309 +f 811/1351/314 809/1349/312 810/1350/313 +f 813/1353/316 811/1351/314 812/1352/315 +f 815/1355/318 813/1530/316 814/1356/317 +f 817/1358/320 815/1355/318 816/1357/319 +f 819/1360/322 857/1531/322 817/1358/320 +f 820/1361/323 824/1365/324 821/1362/324 +f 823/1364/325 821/1362/324 824/1365/324 +f 826/1367/326 823/1364/327 825/1366/327 +f 828/1369/328 826/1367/326 827/1368/326 +f 830/1371/329 828/1369/328 829/1370/328 +f 834/1381/337 841/1403/352 830/1371/329 +f 836/1383/341 838/1532/354 831/1372/330 +f 792/1393/277 838/1391/277 836/1394/342 +f 796/1397/277 794/1395/277 820/1396/343 +f 830/1371/329 842/1533/353 840/1402/351 +f 813/1417/278 815/1420/278 840/1418/355 +f 817/1421/278 857/1534/278 822/1419/356 +f 749/1422/357 767/1443/358 845/1423/358 +f 847/1425/359 759/1535/359 749/1422/357 +f 760/1426/360 759/1535/359 847/1425/359 +f 761/1428/361 760/1426/360 848/1427/360 +f 750/1430/362 761/1428/361 849/1429/361 +f 762/1432/363 750/1430/362 850/1431/362 +f 852/1434/364 763/1438/364 762/1435/363 +f 853/1437/365 764/1440/365 763/1438/364 +f 854/1439/282 765/1442/282 764/1440/365 +f 855/1441/366 766/1445/366 765/1442/282 +f 767/1443/358 748/1536/367 856/1444/367 +f 856/1444/367 748/1536/367 766/1445/366 +f 820/1361/323 822/1363/323 858/1448/368 +f 822/1363/323 857/1446/368 858/1448/368 +f 858/1448/368 859/1450/368 820/1361/323 +f 860/1452/370 770/1475/370 751/1453/371 +f 862/1455/372 861/1454/371 751/1453/371 +f 862/1455/372 769/1456/372 768/1457/373 +f 863/1458/373 768/1457/373 776/1459/374 +f 864/1460/374 776/1459/374 775/1461/375 +f 865/1462/375 775/1461/375 774/1463/376 +f 867/1465/377 866/1537/376 774/1466/376 +f 868/1468/378 867/1465/377 753/1467/377 +f 869/1470/302 868/1468/378 773/1469/378 +f 870/1472/379 869/1470/302 772/1471/302 +f 871/1474/380 752/1476/380 770/1475/370 +f 871/1474/380 870/1472/379 771/1473/379 +f 873/1483/381 872/1487/381 859/1484/382 +f 873/1483/381 875/1490/383 874/1486/383 +f 758/1293/384 757/1292/384 841/1488/384 +f 755/1290/385 777/1312/385 874/1486/383 +f 805/1492/277 841/1538/277 757/1494/386 +f 801/1493/277 757/1494/386 808/1495/277 +f 816/1501/390 875/1503/392 873/1482/277 +f 783/1507/278 778/1506/278 758/1508/393 +f 786/1510/278 758/1508/393 778/1506/278 +f 872/1478/278 874/1518/399 795/1516/397 +o Bayonet +v -0.062500 0.781248 12.000000 +v -0.044194 0.825444 8.062500 +v -0.062500 0.781250 8.062500 +v 0.044194 0.825442 12.000000 +v 0.062500 0.781250 8.062500 +v 0.044194 0.825444 8.062500 +v 0.044194 0.737054 12.000000 +v 0.000000 0.718750 8.062500 +v 0.044194 0.737056 8.062500 +v -0.044194 0.737054 12.000000 +v -0.044194 0.737056 8.062500 +v -0.044194 0.825442 12.000000 +v 0.000000 0.843750 8.062500 +v 0.000000 0.843748 12.000000 +v 0.062500 0.781248 12.000000 +v 0.000000 0.718748 12.000000 +v 0.000000 0.812498 12.750000 +v 0.000000 0.749998 12.750000 +v 0.081190 0.734375 7.812500 +v 0.046875 0.700060 7.812500 +v 0.000000 0.687500 7.812500 +v 0.081190 0.828125 7.812500 +v 0.093750 0.781250 7.812500 +v 0.046875 0.862440 7.812500 +v -0.046875 0.700060 7.812500 +v -0.081190 0.734375 7.812500 +v -0.093750 0.781250 7.812500 +v -0.081190 0.828125 7.812500 +v -0.046875 0.862440 7.812500 +v 0.000000 0.875000 7.812500 +vt 0.590909 0.659091 +vt 0.948864 0.664773 +vt 0.948864 0.659091 +vt 0.590909 0.630682 +vt 0.948864 0.625000 +vt 0.948864 0.630682 +vt 0.590909 0.613636 +vt 0.948864 0.607955 +vt 0.948864 0.613636 +vt 0.590909 0.653409 +vt 0.948864 0.653409 +vt 0.590909 0.647727 +vt 0.948864 0.642045 +vt 0.948864 0.647727 +vt 0.590909 0.642045 +vt 0.948864 0.636364 +vt 0.590909 0.625000 +vt 0.948864 0.619318 +vt 0.590909 0.676136 +vt 0.948864 0.670455 +vt 0.948864 0.676136 +vt 0.590909 0.636364 +vt 0.522727 0.642045 +vt 0.522727 0.625000 +vt 0.522727 0.636364 +vt 0.522727 0.630682 +vt 0.590909 0.633523 +vt 0.522727 0.625000 +vt 0.590909 0.619318 +vt 0.590909 0.607955 +vt 0.522727 0.613636 +vt 0.590909 0.670455 +vt 0.522727 0.676136 +vt 0.522727 0.659091 +vt 0.522727 0.647727 +vt 0.522727 0.653409 +vt 0.590909 0.650568 +vt 0.522727 0.659091 +vt 0.590909 0.664773 +vt 0.971591 0.619318 +vt 0.971591 0.613636 +vt 0.971591 0.607955 +vt 0.971591 0.630682 +vt 0.971591 0.625000 +vt 0.971591 0.636364 +vt 0.971591 0.670455 +vt 0.971591 0.664773 +vt 0.971591 0.653409 +vt 0.971591 0.659091 +vt 0.971591 0.664773 +vt 0.971591 0.647727 +vt 0.971591 0.653409 +vt 0.971591 0.642045 +vt 0.971591 0.676136 +vn -0.9995 -0.0000 0.0330 +vn -0.7071 0.7071 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.7093 0.7044 0.0268 +vn 1.0000 -0.0000 -0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.7093 -0.7044 0.0268 +vn -0.0000 -1.0000 -0.0000 +vn 0.7071 -0.7071 -0.0000 +vn -0.7093 -0.7044 0.0268 +vn -0.7071 -0.7071 -0.0000 +vn -0.7093 0.7044 0.0268 +vn 0.0000 1.0000 0.0000 +vn -0.0000 0.9998 0.0207 +vn 0.9995 0.0000 0.0330 +vn 0.0000 -0.9998 0.0207 +vn 0.9953 0.0515 0.0826 +vn 0.9953 -0.0515 0.0826 +vn -0.9953 -0.0515 0.0826 +vn -0.9953 0.0515 0.0826 +vn 0.8610 -0.4941 0.1209 +vn 0.9891 0.0000 0.1474 +vn 0.6993 -0.6993 0.1482 +vn 0.4941 -0.8610 0.1209 +vn 0.0000 -0.9891 0.1474 +vn 0.0000 -0.9923 0.1240 +vn 0.8610 0.4941 0.1209 +vn 0.9923 0.0000 0.1240 +vn 0.4941 0.8610 0.1209 +vn 0.6993 0.6993 0.1482 +vn 0.0000 0.9891 0.1474 +vn -0.4941 -0.8610 0.1209 +vn -0.6993 -0.6993 0.1482 +vn -0.8610 -0.4941 0.1209 +vn -0.9891 0.0000 0.1474 +vn -0.9923 0.0000 0.1240 +vn -0.8610 0.4941 0.1209 +vn -0.6993 0.6993 0.1482 +vn -0.4941 0.8610 0.1209 +vn 0.0000 0.9923 0.1240 +s 1 +f 876/1539/404 877/1540/405 878/1541/406 +f 879/1542/407 880/1543/408 881/1544/409 +f 882/1545/410 883/1546/411 884/1547/412 +f 885/1548/413 878/1541/406 886/1549/414 +f 887/1550/415 888/1551/416 877/1552/405 +f 889/1553/417 881/1554/409 888/1551/416 +f 890/1555/418 884/1556/412 880/1543/408 +f 891/1557/419 886/1558/414 883/1559/411 +f 879/1560/407 889/1553/417 892/1561/420 +f 890/1555/418 879/1542/407 892/1562/420 +f 892/1563/420 893/1564/421 890/1565/418 +f 890/1555/418 893/1566/421 882/1567/410 +f 891/1568/419 882/1545/410 893/1569/421 +f 885/1570/413 891/1557/419 893/1571/422 +f 876/1539/404 885/1548/413 893/1572/422 +f 893/1573/422 892/1574/423 876/1575/404 +f 889/1553/417 887/1550/415 892/1561/423 +f 876/1539/404 892/1576/423 887/1577/415 +f 894/1578/424 880/1543/425 884/1556/426 +f 895/1579/427 894/1578/424 884/1547/426 +f 895/1579/427 883/1546/428 896/1580/429 +f 897/1581/430 880/1543/425 898/1582/431 +f 897/1581/430 899/1583/432 881/1554/433 +f 899/1583/432 888/1551/434 881/1554/433 +f 900/1584/435 883/1559/428 886/1558/436 +f 901/1585/437 900/1584/435 886/1558/436 +f 901/1586/437 878/1541/438 902/1587/439 +f 903/1588/440 878/1541/438 877/1540/441 +f 904/1589/442 903/1590/440 877/1552/441 +f 904/1589/442 888/1551/434 905/1591/443 +f 876/1539/404 887/1577/415 877/1540/405 +f 879/1542/407 890/1555/418 880/1543/408 +f 882/1545/410 891/1568/419 883/1546/411 +f 885/1548/413 876/1539/404 878/1541/406 +f 887/1550/415 889/1553/417 888/1551/416 +f 889/1553/417 879/1560/407 881/1554/409 +f 890/1555/418 882/1567/410 884/1556/412 +f 891/1557/419 885/1570/413 886/1558/414 +f 894/1578/424 898/1582/431 880/1543/425 +f 895/1579/427 884/1547/426 883/1546/428 +f 897/1581/430 881/1544/433 880/1543/425 +f 899/1583/432 905/1591/443 888/1551/434 +f 900/1584/435 896/1592/429 883/1559/428 +f 901/1586/437 886/1549/436 878/1541/438 +f 903/1588/440 902/1587/439 878/1541/438 +f 904/1589/442 877/1552/441 888/1551/434 +o Scope +v 0.312500 1.156250 -1.812500 +v 0.187500 1.156250 -1.812500 +v 0.187500 1.031250 -1.812500 +v 0.312500 0.906250 -1.812500 +v 0.250000 0.906250 -2.937500 +v 0.312500 0.906250 -2.937500 +v 0.187500 1.031250 -2.937500 +v 0.312500 1.156250 -2.937500 +v 0.400120 1.875000 -1.750000 +v 0.724880 1.875000 -1.750000 +v 0.562500 2.156250 -1.750000 +v 0.779006 2.093750 -3.062500 +v 0.562500 1.718750 -3.062500 +v 0.345994 2.093750 -3.062500 +v 0.750000 1.643991 -4.750000 +v 0.375000 1.643991 -4.750000 +v 0.187500 1.968750 -4.750000 +v 0.562500 1.593750 -3.500000 +v 0.887260 1.781250 -3.500000 +v 0.562500 2.343750 -3.500000 +v 0.187500 1.593750 -2.000000 +v 0.187500 1.218750 -1.937500 +v 0.187500 1.593750 -1.937500 +v 0.187500 1.218750 -2.750000 +v 0.250000 1.593750 -2.750000 +v 0.187500 1.593750 -2.750000 +v 0.250000 1.593750 -2.000000 +v 0.187500 1.218750 -2.000000 +v 0.187500 1.218750 -2.812500 +v 0.187500 1.156250 -2.937500 +v 0.375000 1.843750 -1.937500 +v 0.375000 1.593750 -1.937500 +v 0.562500 1.843750 -1.937500 +v 0.375000 1.593750 -2.812500 +v 0.375000 1.843750 -2.812500 +v 0.562500 1.843750 -2.812500 +v 0.375000 1.843750 -2.000000 +v 0.375000 1.843750 -2.750000 +v 0.312500 1.093750 -2.812500 +v 0.312500 1.218750 -2.812500 +v 0.375000 1.218750 -2.812500 +v 0.375000 1.218750 -1.937500 +v 0.312500 1.218750 -1.937500 +v 0.312500 1.093750 -1.937500 +v 0.375000 1.218750 -2.000000 +v 0.312500 1.593750 -2.000000 +v 0.375000 1.593750 -2.000000 +v 0.375000 1.593750 -2.750000 +v 0.500000 1.843750 -2.750000 +v 0.312500 1.593750 -2.750000 +v 0.500000 1.843750 -2.000000 +v 0.562500 1.843750 -2.000000 +v 0.437500 1.843750 -2.000000 +v 0.437500 1.843750 -2.750000 +v 0.250000 1.218750 -2.562500 +v 0.312500 1.218750 -2.187500 +v 0.312500 1.218750 -2.562500 +v 0.312500 1.093750 -2.750000 +v 0.312500 1.093750 -2.000000 +v 0.375000 1.218750 -2.750000 +v 0.427184 2.343750 -2.421875 +v 0.697816 2.343750 -2.421875 +v 0.562500 2.343750 -2.656250 +v 0.250000 1.593750 -2.562500 +v 0.250000 1.593750 -2.187500 +v 0.250000 1.218750 -2.187500 +v 0.312500 1.593750 -2.562500 +v 0.312500 1.593750 -2.187500 +v 0.250000 0.906250 -1.812500 +v 0.468750 2.131130 -1.750000 +v 0.400120 2.062500 -1.750000 +v 0.375000 1.968750 -1.750000 +v 0.468750 1.806370 -1.750000 +v 0.562500 1.781250 -1.750000 +v 0.656250 1.806370 -1.750000 +v 0.750000 1.968750 -1.750000 +v 0.724880 2.062500 -1.750000 +v 0.656250 2.131130 -1.750000 +v 0.437500 2.185256 -3.062500 +v 0.562500 2.218750 -3.062500 +v 0.687500 2.185256 -3.062500 +v 0.812500 1.968750 -3.062500 +v 0.779006 1.843750 -3.062500 +v 0.687500 1.752244 -3.062500 +v 0.437500 1.752244 -3.062500 +v 0.345994 1.843750 -3.062500 +v 0.312500 1.968750 -3.062500 +v 0.237740 2.156250 -4.750000 +v 0.375000 2.293509 -4.750000 +v 0.562500 2.343750 -4.750000 +v 0.750000 2.293509 -4.750000 +v 0.887260 2.156250 -4.750000 +v 0.937500 1.968750 -4.750000 +v 0.887260 1.781250 -4.750000 +v 0.562500 1.593750 -4.750000 +v 0.237740 1.781250 -4.750000 +v 0.375000 2.293509 -3.500000 +v 0.237740 2.156250 -3.500000 +v 0.187500 1.968750 -3.500000 +v 0.237740 1.781250 -3.500000 +v 0.375000 1.643991 -3.500000 +v 0.750000 1.643991 -3.500000 +v 0.937500 1.968750 -3.500000 +v 0.887260 2.156250 -3.500000 +v 0.750000 2.293509 -3.500000 +v 0.250000 1.218750 -2.750000 +v 0.250000 1.218750 -2.000000 +v 0.187500 1.593750 -2.812500 +v 0.562500 1.843750 -2.750000 +v 0.484375 2.343750 -2.635316 +v 0.427184 2.343750 -2.578125 +v 0.406250 2.343750 -2.500000 +v 0.484375 2.343750 -2.364684 +v 0.562500 2.343750 -2.343750 +v 0.640625 2.343750 -2.364684 +v 0.718750 2.343750 -2.500000 +v 0.697816 2.343750 -2.578125 +v 0.640625 2.343750 -2.635316 +v 0.687500 1.752244 -1.687500 +v 0.562500 1.718750 -1.687500 +v 0.779006 1.843750 -1.687500 +v 0.779006 2.093750 -1.687500 +v 0.812500 1.968750 -1.687500 +v 0.687500 2.185256 -1.687500 +v 0.562500 2.218750 -1.687500 +v 0.437500 2.185256 -1.687500 +v 0.312500 1.968750 -1.687500 +v 0.345994 2.093750 -1.687500 +v 0.437500 1.752244 -1.687500 +v 0.345994 1.843750 -1.687500 +v 0.875000 1.968750 -3.187500 +v 0.724880 2.062500 -3.062500 +v 0.750000 1.968750 -3.062500 +v 0.718750 2.239383 -3.187500 +v 0.656250 2.131130 -3.062500 +v 0.562500 2.156250 -3.062500 +v 0.562500 2.281250 -3.187500 +v 0.468750 2.131130 -3.062500 +v 0.291867 2.125000 -3.187500 +v 0.400120 2.062500 -3.062500 +v 0.250000 1.968750 -3.187500 +v 0.375000 1.968750 -3.062500 +v 0.400120 1.875000 -3.062500 +v 0.291867 1.812500 -3.187500 +v 0.468750 1.806370 -3.062500 +v 0.562500 1.656250 -3.187500 +v 0.562500 1.781250 -3.062500 +v 0.718750 1.698117 -3.187500 +v 0.656250 1.806370 -3.062500 +v 0.724880 1.875000 -3.062500 +v 0.833133 1.812500 -3.500000 +v 0.833133 1.812500 -3.187500 +v 0.406250 1.698117 -3.500000 +v 0.406250 1.698117 -3.187500 +v 0.562500 2.281250 -3.500000 +v 0.406250 2.239383 -3.187500 +v 0.291867 2.125000 -3.500000 +v 0.875000 1.968750 -3.500000 +v 0.562500 1.656250 -3.500000 +v 0.250000 1.968750 -3.500000 +v 0.833133 2.125000 -3.500000 +v 0.833133 2.125000 -3.187500 +v 0.718750 1.698117 -3.500000 +v 0.291867 1.812500 -3.500000 +v 0.718750 2.239383 -3.500000 +v 0.406250 2.239383 -3.500000 +v 0.562500 1.593750 -3.937500 +v 0.187500 1.968750 -3.937500 +v 0.887260 2.156250 -3.937500 +v 0.750000 1.643991 -3.937500 +v 0.237740 1.781250 -3.937500 +v 0.750000 2.293509 -3.937500 +v 0.375000 2.293509 -3.937500 +v 0.887260 1.781250 -3.937500 +v 0.375000 1.643991 -3.937500 +v 0.562500 2.343750 -3.937500 +v 0.237740 2.156250 -3.937500 +v 0.937500 1.968750 -3.937500 +v 0.562500 1.531250 -4.000000 +v 0.941386 1.750000 -4.000000 +v 1.000000 1.968750 -4.000000 +v 0.781250 2.347636 -4.000000 +v 0.562500 2.406250 -4.000000 +v 0.343750 2.347636 -4.000000 +v 0.183614 2.187500 -4.000000 +v 0.183614 1.750000 -4.000000 +v 0.343750 1.589864 -4.000000 +v 0.562500 1.593750 -4.062500 +v 0.237740 1.781250 -4.062500 +v 0.187500 1.968750 -4.062500 +v 0.125000 1.968750 -4.000000 +v 0.375000 2.293509 -4.062500 +v 0.562500 2.343750 -4.062500 +v 0.887260 2.156250 -4.062500 +v 0.941386 2.187500 -4.000000 +v 0.887260 1.781250 -4.062500 +v 0.781250 1.589864 -4.000000 +v 0.750000 1.643991 -4.062500 +v 0.750000 2.293509 -4.062500 +v 0.375000 1.643991 -4.062500 +v 0.237740 2.156250 -4.062500 +v 0.937500 1.968750 -4.062500 +v 0.312500 2.401763 -4.812500 +v 0.129487 2.218750 -4.937500 +v 0.129487 2.218750 -4.812500 +v 0.995513 1.718750 -4.812500 +v 1.062500 1.968750 -4.937500 +v 1.062500 1.968750 -4.812500 +v 0.312500 1.535737 -4.812500 +v 0.562500 1.468750 -4.937500 +v 0.562500 1.468750 -4.812500 +v 0.062500 1.968750 -4.937500 +v 0.062500 1.968750 -4.812500 +v 0.995513 2.218750 -4.937500 +v 0.995513 2.218750 -4.812500 +v 0.812500 1.535737 -4.937500 +v 0.812500 1.535737 -4.812500 +v 0.129487 1.718750 -4.937500 +v 0.129487 1.718750 -4.812500 +v 0.812500 2.401763 -4.937500 +v 0.812500 2.401763 -4.812500 +v 0.562500 2.468750 -4.812500 +v 0.312500 2.401763 -4.937500 +v 0.995513 1.718750 -4.937500 +v 0.312500 1.535737 -4.937500 +v 0.562500 2.468750 -4.937500 +v 0.427184 2.093750 -2.578125 +v 0.406250 2.093750 -2.500000 +v 0.718750 2.093750 -2.500000 +v 0.697816 2.093750 -2.578125 +v 0.562500 2.093750 -2.343750 +v 0.640625 2.093750 -2.364684 +v 0.427184 2.093750 -2.421875 +v 0.640625 2.093750 -2.635316 +v 0.562500 2.093750 -2.656250 +v 0.484375 2.093750 -2.635316 +v 0.697816 2.093750 -2.421875 +v 0.484375 2.093750 -2.364684 +vt 0.579545 0.795455 +vt 0.579545 0.806818 +vt 0.568182 0.806818 +vt 0.556818 0.795455 +vt 0.551136 0.693182 +vt 0.556818 0.693182 +vt 0.568182 0.681818 +vt 0.579545 0.693182 +vt 0.564784 0.860795 +vt 0.594307 0.860795 +vt 0.579545 0.886364 +vt 0.554181 0.840909 +vt 0.573864 0.806818 +vt 0.593546 0.840909 +vt 0.789773 0.822749 +vt 0.823864 0.822749 +vt 0.840909 0.852273 +vt 0.806818 0.750000 +vt 0.836342 0.767046 +vt 0.806818 0.818182 +vt 0.727273 0.721591 +vt 0.732955 0.687500 +vt 0.732955 0.721591 +vt 0.647727 0.687500 +vt 0.653409 0.721591 +vt 0.647727 0.721591 +vt 0.721591 0.721591 +vt 0.727273 0.687500 +vt 0.642045 0.687500 +vt 0.590909 0.681818 +vt 0.579545 0.681818 +vt 0.590909 0.806818 +vt 0.732955 0.750000 +vt 0.750000 0.721591 +vt 0.750000 0.750000 +vt 0.625000 0.721591 +vt 0.642045 0.750000 +vt 0.625000 0.750000 +vt 0.727273 0.750000 +vt 0.647727 0.750000 +vt 0.625000 0.676136 +vt 0.630682 0.687500 +vt 0.625000 0.687500 +vt 0.750000 0.687500 +vt 0.744318 0.687500 +vt 0.744318 0.676136 +vt 0.755682 0.687500 +vt 0.761364 0.721591 +vt 0.755682 0.721591 +vt 0.835227 0.721591 +vt 0.829545 0.750000 +vt 0.829545 0.721591 +vt 0.761364 0.750000 +vt 0.755682 0.750000 +vt 0.721591 0.750000 +vt 0.653409 0.750000 +vt 0.670455 0.687500 +vt 0.704545 0.693182 +vt 0.670455 0.693182 +vt 0.840909 0.687500 +vt 0.835227 0.676136 +vt 0.840909 0.676136 +vt 0.755682 0.676136 +vt 0.750000 0.676136 +vt 0.835227 0.687500 +vt 0.829545 0.676136 +vt 0.585227 0.784091 +vt 0.573864 0.784091 +vt 0.585227 0.704545 +vt 0.573864 0.704545 +vt 0.636364 0.676136 +vt 0.738636 0.676136 +vt 0.721591 0.681818 +vt 0.653409 0.681818 +vt 0.600370 0.742898 +vt 0.575767 0.742898 +vt 0.588068 0.721591 +vt 0.812500 0.687500 +vt 0.806818 0.721591 +vt 0.806818 0.687500 +vt 0.784091 0.721591 +vt 0.778409 0.687500 +vt 0.784091 0.687500 +vt 0.704545 0.721591 +vt 0.670455 0.715909 +vt 0.704545 0.715909 +vt 0.556818 0.801136 +vt 0.551136 0.795455 +vt 0.556818 0.687500 +vt 0.571023 0.884080 +vt 0.564784 0.877841 +vt 0.562500 0.869318 +vt 0.571023 0.854556 +vt 0.579545 0.852273 +vt 0.588068 0.854556 +vt 0.596591 0.869318 +vt 0.594307 0.877841 +vt 0.588068 0.884080 +vt 0.585227 0.849228 +vt 0.573864 0.852273 +vt 0.562500 0.849228 +vt 0.551136 0.829545 +vt 0.554181 0.818182 +vt 0.562500 0.809863 +vt 0.585227 0.809863 +vt 0.593546 0.818182 +vt 0.596591 0.829545 +vt 0.836342 0.869318 +vt 0.823864 0.881796 +vt 0.806818 0.886364 +vt 0.789773 0.881796 +vt 0.777295 0.869318 +vt 0.772727 0.852273 +vt 0.777295 0.835227 +vt 0.806818 0.818182 +vt 0.836342 0.835227 +vt 0.789773 0.813615 +vt 0.777295 0.801136 +vt 0.772727 0.784091 +vt 0.777295 0.767046 +vt 0.789773 0.754567 +vt 0.823864 0.754567 +vt 0.840909 0.784091 +vt 0.836342 0.801136 +vt 0.823864 0.813615 +vt 0.653409 0.687500 +vt 0.721591 0.687500 +vt 0.642045 0.721591 +vt 0.590909 0.693182 +vt 0.590909 0.795455 +vt 0.761364 0.676136 +vt 0.835227 0.750000 +vt 0.704545 0.687500 +vt 0.727273 0.681818 +vt 0.647727 0.681818 +vt 0.595170 0.723494 +vt 0.600370 0.728693 +vt 0.602273 0.735795 +vt 0.595170 0.748097 +vt 0.588068 0.750000 +vt 0.580966 0.748097 +vt 0.573864 0.735795 +vt 0.575767 0.728693 +vt 0.580966 0.723494 +vt 0.812500 0.721591 +vt 0.778409 0.721591 +vt 0.670455 0.721591 +vt 0.573864 0.710227 +vt 0.573864 0.778409 +vt 0.602273 0.761364 +vt 0.596591 0.751420 +vt 0.602273 0.750000 +vt 0.602273 0.772727 +vt 0.596591 0.762784 +vt 0.596591 0.782670 +vt 0.596591 0.774148 +vt 0.602273 0.795455 +vt 0.596591 0.785511 +vt 0.602273 0.784091 +vt 0.602273 0.806818 +vt 0.596591 0.796875 +vt 0.602273 0.818182 +vt 0.596591 0.808239 +vt 0.602273 0.829545 +vt 0.596591 0.819602 +vt 0.596591 0.839489 +vt 0.596591 0.830966 +vt 0.602273 0.852273 +vt 0.596591 0.842330 +vt 0.602273 0.840909 +vt 0.596591 0.862216 +vt 0.596591 0.853693 +vt 0.602273 0.875000 +vt 0.596591 0.865057 +vt 0.602273 0.863636 +vt 0.602273 0.886364 +vt 0.596591 0.876420 +vt 0.727273 0.840909 +vt 0.727273 0.784091 +vt 0.727273 0.750000 +vt 0.727273 0.852273 +vt 0.727273 0.795455 +vt 0.727273 0.818182 +vt 0.727273 0.761364 +vt 0.727273 0.863636 +vt 0.727273 0.806818 +vt 0.727273 0.829545 +vt 0.727273 0.772727 +vt 0.727273 0.875000 +vt 0.744318 0.784091 +vt 0.727273 0.792614 +vt 0.727273 0.786932 +vt 0.727273 0.798295 +vt 0.744318 0.806818 +vt 0.727273 0.803977 +vt 0.727273 0.815341 +vt 0.727273 0.809659 +vt 0.744318 0.818182 +vt 0.727273 0.826704 +vt 0.727273 0.821023 +vt 0.727273 0.832386 +vt 0.744318 0.840909 +vt 0.727273 0.838068 +vt 0.727273 0.843750 +vt 0.744318 0.852273 +vt 0.727273 0.849432 +vt 0.727273 0.860795 +vt 0.727273 0.855114 +vt 0.744318 0.863636 +vt 0.727273 0.872159 +vt 0.727273 0.866477 +vt 0.727273 0.877841 +vt 0.744318 0.886364 +vt 0.727273 0.883523 +vt 0.727273 0.752841 +vt 0.744318 0.761364 +vt 0.727273 0.758523 +vt 0.727273 0.775568 +vt 0.727273 0.781250 +vt 0.727273 0.769886 +vt 0.727273 0.764205 +vt 0.772727 0.772727 +vt 0.744318 0.772727 +vt 0.772727 0.875000 +vt 0.744318 0.875000 +vt 0.772727 0.818182 +vt 0.744318 0.829545 +vt 0.772727 0.840909 +vt 0.772727 0.784091 +vt 0.772727 0.886364 +vt 0.772727 0.852273 +vt 0.772727 0.795455 +vt 0.744318 0.795455 +vt 0.744318 0.750000 +vt 0.772727 0.761364 +vt 0.772727 0.863636 +vt 0.772727 0.806818 +vt 0.772727 0.829545 +vt 0.840909 0.869318 +vt 0.880682 0.886364 +vt 0.840909 0.886364 +vt 0.840909 0.818182 +vt 0.880682 0.835227 +vt 0.840909 0.835227 +vt 0.840909 0.732955 +vt 0.880682 0.750000 +vt 0.840909 0.750000 +vt 0.840909 0.681818 +vt 0.880682 0.698864 +vt 0.840909 0.698864 +vt 0.880682 0.852273 +vt 0.840909 0.852273 +vt 0.880682 0.767045 +vt 0.840909 0.767045 +vt 0.840909 0.784091 +vt 0.880682 0.801136 +vt 0.840909 0.801136 +vt 0.880682 0.715909 +vt 0.840909 0.715909 +vt 0.880682 0.869318 +vt 0.880682 0.784091 +vt 0.880682 0.818182 +vt 0.880682 0.732955 +vt 0.886364 0.681818 +vt 0.880682 0.681818 +vt 0.886364 0.715909 +vt 0.886364 0.732955 +vt 0.886364 0.767045 +vt 0.886364 0.784091 +vt 0.886364 0.801136 +vt 0.886364 0.818182 +vt 0.886364 0.852273 +vt 0.886364 0.869318 +vt 0.892045 0.886364 +vt 0.886364 0.886364 +vt 0.892045 0.852273 +vt 0.892045 0.835227 +vt 0.886364 0.835227 +vt 0.892045 0.801136 +vt 0.892045 0.784091 +vt 0.892045 0.750000 +vt 0.886364 0.750000 +vt 0.892045 0.715909 +vt 0.892045 0.681818 +vt 0.886364 0.698864 +vt 0.892045 0.698864 +vt 0.948864 0.698864 +vt 0.948864 0.852273 +vt 0.948864 0.767045 +vt 0.892045 0.767045 +vt 0.948864 0.801136 +vt 0.948864 0.715909 +vt 0.948864 0.869318 +vt 0.892045 0.869318 +vt 0.948864 0.784091 +vt 0.948864 0.818182 +vt 0.892045 0.818182 +vt 0.948864 0.732955 +vt 0.892045 0.732955 +vt 0.948864 0.886364 +vt 0.948864 0.835227 +vt 0.948864 0.750000 +vt 0.965909 0.840909 +vt 0.977273 0.863636 +vt 0.965909 0.863636 +vt 0.965909 0.727273 +vt 0.977273 0.750000 +vt 0.965909 0.750000 +vt 0.965909 0.931818 +vt 0.977273 0.954545 +vt 0.965909 0.954545 +vt 0.977273 0.886364 +vt 0.965909 0.886364 +vt 0.977273 0.772727 +vt 0.965909 0.772727 +vt 0.965909 0.681818 +vt 0.977273 0.704545 +vt 0.965909 0.704545 +vt 0.977273 0.909091 +vt 0.965909 0.909091 +vt 0.977273 0.795455 +vt 0.965909 0.795455 +vt 0.965909 0.818182 +vt 0.977273 0.840909 +vt 0.977273 0.727273 +vt 0.977273 0.931818 +vt 0.977273 0.818182 +vt 0.954545 0.701705 +vt 0.954545 0.684659 +vt 0.954545 0.724432 +vt 0.954545 0.707386 +vt 0.954545 0.747159 +vt 0.954545 0.730114 +vt 0.954545 0.752841 +vt 0.954545 0.769886 +vt 0.954545 0.792614 +vt 0.954545 0.775568 +vt 0.954545 0.798295 +vt 0.954545 0.815341 +vt 0.954545 0.821023 +vt 0.954545 0.838068 +vt 0.954545 0.860795 +vt 0.954545 0.843750 +vt 0.954545 0.883523 +vt 0.954545 0.866477 +vt 0.954545 0.906250 +vt 0.954545 0.889205 +vt 0.954545 0.928977 +vt 0.954545 0.911932 +vt 0.954545 0.951705 +vt 0.954545 0.934659 +vt 0.994318 0.951705 +vt 0.994318 0.934659 +vt 0.994318 0.928977 +vt 0.994318 0.911932 +vt 0.994318 0.906250 +vt 0.994318 0.889205 +vt 0.994318 0.866477 +vt 0.994318 0.883523 +vt 0.994318 0.843750 +vt 0.994318 0.860795 +vt 0.994318 0.838068 +vt 0.994318 0.821023 +vt 0.994318 0.798295 +vt 0.994318 0.815341 +vt 0.994318 0.792614 +vt 0.994318 0.775568 +vt 0.994318 0.769886 +vt 0.994318 0.752841 +vt 0.994318 0.730114 +vt 0.994318 0.747159 +vt 0.994318 0.724432 +vt 0.994318 0.707386 +vt 0.994318 0.684659 +vt 0.994318 0.701705 +vt 0.840909 0.721591 +vt 0.840909 0.750000 +vt 0.602273 0.732955 +vt 0.625000 0.727273 +vt 0.625000 0.732955 +vt 0.602273 0.704545 +vt 0.625000 0.698864 +vt 0.625000 0.704545 +vt 0.602273 0.687500 +vt 0.625000 0.681818 +vt 0.625000 0.687500 +vt 0.602273 0.738636 +vt 0.625000 0.738636 +vt 0.602273 0.710227 +vt 0.625000 0.710227 +vt 0.602273 0.721591 +vt 0.625000 0.715909 +vt 0.625000 0.721591 +vt 0.602273 0.693182 +vt 0.625000 0.693182 +vt 0.602273 0.744318 +vt 0.625000 0.744318 +vt 0.602273 0.715909 +vt 0.602273 0.727273 +vt 0.602273 0.698864 +vt 0.602273 0.750000 +vt 0.625000 0.750000 +vt 0.596591 0.759943 +vt 0.596591 0.771307 +vt 0.596591 0.794034 +vt 0.596591 0.805398 +vt 0.596591 0.816761 +vt 0.596591 0.828125 +vt 0.596591 0.850852 +vt 0.596591 0.873580 +vt 0.596591 0.884943 +vt 0.727273 0.886364 +vt 0.772727 0.750000 +vt 0.948864 0.681818 +vt 0.977273 0.681818 +vt 0.602273 0.681818 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.8944 -0.4472 +vn 0.0000 0.8944 0.4472 +vn -0.8000 0.6000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.8944 -0.4472 0.0000 +vn 1.0000 0.0000 0.0000 +vn -0.3536 0.6124 0.7071 +vn -0.0000 0.7071 0.7071 +vn -0.6124 0.3536 0.7071 +vn -0.7071 -0.0000 0.7071 +vn -0.6124 -0.3536 0.7071 +vn -0.3536 -0.6124 0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.3536 -0.6124 0.7071 +vn 0.6124 -0.3536 0.7071 +vn 0.7071 -0.0000 0.7071 +vn 0.6124 0.3536 0.7071 +vn 0.3536 0.6124 0.7071 +vn -0.8660 0.5000 0.0000 +vn 0.8660 0.5000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn -0.8660 -0.5000 0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.8660 -0.5000 0.0000 +vn -0.5000 -0.8660 0.0000 +vn -0.3536 -0.6124 -0.7071 +vn -0.0000 -0.7071 -0.7071 +vn -0.6124 -0.3536 -0.7071 +vn -0.7071 -0.0000 -0.7071 +vn -0.6124 0.3536 -0.7071 +vn -0.3536 0.6124 -0.7071 +vn 0.0000 0.7071 -0.7071 +vn 0.3536 0.6124 -0.7071 +vn 0.6124 0.3536 -0.7071 +vn 0.7071 -0.0000 -0.7071 +vn 0.6124 -0.3536 -0.7071 +vn 0.3536 -0.6124 -0.7071 +vn -0.4358 0.7548 0.4903 +vn -0.7548 0.4358 0.4903 +vn 0.7548 -0.4358 0.4903 +vn 0.8716 -0.0000 0.4903 +vn -0.4358 -0.7548 0.4903 +vn 0.0000 -0.8716 0.4903 +vn -0.8716 0.0000 0.4903 +vn 0.7548 0.4358 0.4903 +vn 0.4358 -0.7548 0.4903 +vn -0.7548 -0.4358 0.4903 +vn 0.4358 0.7548 0.4903 +vn 0.0000 0.8716 0.4903 +vn 0.2236 -0.3873 0.8944 +vn 0.0000 -0.4472 0.8944 +vn 0.3873 -0.2236 0.8944 +vn 0.4472 -0.0000 0.8944 +vn 0.3873 0.2236 0.8944 +vn 0.2236 0.3873 0.8944 +vn 0.0000 0.4472 0.8944 +vn -0.2236 0.3873 0.8944 +vn -0.3873 0.2236 0.8944 +vn -0.4472 0.0000 0.8944 +vn -0.3873 -0.2236 0.8944 +vn -0.2236 -0.3873 0.8944 +vn 0.0000 0.8320 -0.5547 +vn 0.4160 0.7206 -0.5547 +vn 0.7206 0.4160 -0.5547 +vn 0.8321 0.0000 -0.5547 +vn 0.7206 -0.4160 -0.5547 +vn 0.4160 -0.7206 -0.5547 +vn 0.0000 -0.8320 -0.5547 +vn 0.0000 -0.8321 -0.5547 +vn -0.4160 -0.7206 -0.5547 +vn -0.7206 -0.4160 -0.5547 +vn -0.8321 0.0000 -0.5547 +vn -0.7206 0.4160 -0.5547 +vn -0.4160 0.7206 -0.5547 +vn -0.9080 0.4191 0.0000 +vn 0.9487 -0.3162 0.0000 +vn 0.8000 -0.6000 0.0000 +vn -0.8660 0.0000 -0.5000 +vn 0.8660 0.0000 -0.5000 +vn 0.5000 0.0000 0.8660 +vn -0.8660 0.0000 0.5000 +vn 0.5000 0.0000 -0.8660 +vn -0.5000 0.0000 -0.8660 +vn 0.8660 0.0000 0.5000 +vn -0.5000 0.0000 0.8660 +vn 0.9080 -0.4191 0.0000 +vn -0.9487 0.3162 0.0000 +vn -0.0000 0.8321 -0.5547 +s off +f 906/1593/444 907/1594/444 908/1595/444 +f 909/1596/445 910/1597/445 911/1598/445 +f 911/1598/446 912/1599/446 913/1600/446 +f 914/1601/444 915/1602/444 916/1603/444 +f 917/1604/446 918/1605/446 919/1606/446 +f 920/1607/446 921/1608/446 922/1609/446 +f 923/1610/444 924/1611/444 925/1612/444 +f 926/1613/447 927/1614/447 928/1615/447 +f 929/1616/444 930/1617/444 931/1618/444 +f 932/1619/446 933/1620/446 926/1613/446 +f 931/1618/447 934/1621/447 929/1616/447 +f 934/1622/448 913/1600/448 935/1623/448 +f 906/1593/449 927/1624/449 907/1594/449 +f 936/1625/444 937/1626/444 938/1627/444 +f 939/1628/446 940/1629/446 941/1630/446 +f 928/1615/450 942/1631/450 926/1613/450 +f 940/1629/450 931/1618/450 943/1632/450 +f 944/1633/446 945/1634/446 946/1635/446 +f 939/1628/446 946/1635/446 945/1634/446 +f 947/1636/444 948/1637/444 949/1638/444 +f 948/1637/444 937/1626/444 928/1615/444 +f 950/1639/446 951/1640/446 952/1641/446 +f 953/1642/444 954/1643/444 955/1644/444 +f 952/1641/446 956/1645/446 957/1646/446 +f 932/1619/446 942/1631/446 958/1647/446 +f 943/1632/444 930/1617/444 959/1648/444 +f 960/1649/451 961/1650/451 962/1651/451 +f 946/1652/452 963/1653/452 944/1654/452 +f 964/1655/452 947/1636/452 949/1656/452 +f 965/1657/444 955/1644/444 963/1658/444 +f 948/1659/453 906/1593/453 949/1660/453 +f 945/1661/453 944/1662/453 913/1600/453 +f 935/1663/447 907/1664/447 933/1665/447 +f 960/1649/451 929/1666/451 933/1665/451 +f 966/1667/451 967/1668/451 968/1669/451 +f 962/1670/444 969/1671/444 960/1672/444 +f 970/1673/446 961/1674/446 971/1675/446 +f 970/1676/445 972/1677/445 973/1678/445 +f 949/1660/453 906/1593/453 909/1596/453 +f 908/1595/444 974/1679/444 909/1596/444 +f 909/1596/444 906/1593/444 908/1595/444 +f 909/1596/445 974/1680/445 910/1597/445 +f 910/1681/446 912/1599/446 911/1598/446 +f 912/1599/446 935/1623/446 913/1600/446 +f 916/1603/444 975/1682/444 914/1601/444 +f 975/1682/444 976/1683/444 914/1601/444 +f 976/1683/444 977/1684/444 914/1601/444 +f 914/1601/444 978/1685/444 979/1686/444 +f 979/1686/444 980/1687/444 914/1601/444 +f 980/1687/444 915/1602/444 914/1601/444 +f 915/1602/444 981/1688/444 982/1689/444 +f 982/1689/444 983/1690/444 916/1603/444 +f 915/1602/444 982/1689/444 916/1603/444 +f 919/1606/446 984/1691/446 917/1604/446 +f 984/1691/446 985/1692/446 917/1604/446 +f 985/1692/446 986/1693/446 917/1604/446 +f 917/1604/446 987/1694/446 988/1695/446 +f 988/1695/446 989/1696/446 918/1605/446 +f 918/1605/446 990/1697/446 991/1698/446 +f 991/1698/446 992/1699/446 919/1606/446 +f 917/1604/446 988/1695/446 918/1605/446 +f 918/1605/446 991/1698/446 919/1606/446 +f 922/1609/446 993/1700/446 994/1701/446 +f 994/1701/446 995/1702/446 996/1703/446 +f 996/1703/446 997/1704/446 920/1607/446 +f 997/1704/446 998/1705/446 920/1607/446 +f 998/1705/446 999/1706/446 920/1607/446 +f 920/1607/446 1000/1707/446 921/1608/446 +f 921/1608/446 1001/1708/446 922/1609/446 +f 922/1609/446 994/1701/446 920/1607/446 +f 994/1701/446 996/1703/446 920/1607/446 +f 925/1612/444 1002/1709/444 1003/1710/444 +f 1003/1710/444 1004/1711/444 1005/1712/444 +f 1005/1712/444 1006/1713/444 923/1610/444 +f 923/1610/444 1007/1714/444 924/1611/444 +f 924/1611/444 1008/1715/444 1009/1716/444 +f 1009/1716/444 1010/1717/444 924/1611/444 +f 1010/1717/444 925/1612/444 924/1611/444 +f 925/1612/444 1003/1710/444 1005/1712/444 +f 1005/1712/444 923/1610/444 925/1612/444 +f 926/1613/447 933/1620/447 927/1614/447 +f 929/1616/444 1011/1718/444 930/1617/444 +f 932/1619/446 1012/1719/446 933/1620/446 +f 931/1618/447 1013/1720/447 934/1621/447 +f 934/1622/448 945/1721/448 913/1600/448 +f 906/1593/449 948/1722/449 927/1624/449 +f 936/1625/444 928/1615/444 937/1626/444 +f 939/1628/446 1013/1720/446 940/1629/446 +f 928/1615/450 936/1625/450 942/1631/450 +f 940/1629/450 1013/1720/450 931/1618/450 +f 945/1634/446 934/1621/446 1013/1720/446 +f 1013/1720/446 939/1628/446 945/1634/446 +f 928/1615/444 927/1614/444 948/1637/444 +f 948/1637/444 947/1636/444 937/1626/444 +f 950/1639/446 964/1723/446 951/1640/446 +f 953/1642/444 1014/1724/444 954/1643/444 +f 952/1641/446 951/1640/446 956/1645/446 +f 932/1619/446 926/1613/446 942/1631/446 +f 943/1632/444 931/1618/444 930/1617/444 +f 960/1649/451 971/1725/451 961/1650/451 +f 946/1652/452 965/1657/452 963/1653/452 +f 964/1655/452 950/1639/452 947/1636/452 +f 965/1657/444 953/1642/444 955/1644/444 +f 927/1726/447 933/1665/447 907/1664/447 +f 933/1665/447 929/1666/447 935/1663/447 +f 929/1666/447 934/1727/447 935/1663/447 +f 933/1665/451 1012/1719/451 971/1725/451 +f 960/1649/451 1011/1718/451 929/1666/451 +f 933/1665/451 971/1725/451 960/1649/451 +f 968/1669/451 1015/1728/451 966/1667/451 +f 1015/1728/451 1016/1729/451 966/1667/451 +f 1016/1729/451 1017/1730/451 966/1667/451 +f 966/1667/451 1018/1731/451 1019/1732/451 +f 1019/1732/451 1020/1733/451 966/1667/451 +f 1020/1733/451 967/1668/451 966/1667/451 +f 967/1668/451 1021/1734/451 1022/1735/451 +f 1022/1735/451 1023/1736/451 967/1668/451 +f 1023/1736/451 968/1669/451 967/1668/451 +f 962/1670/444 972/1737/444 969/1671/444 +f 970/1673/446 973/1738/446 961/1674/446 +f 970/1676/445 969/1739/445 972/1677/445 +f 911/1598/453 913/1600/453 944/1662/453 +f 963/1740/453 964/1741/453 911/1598/453 +f 964/1741/453 949/1660/453 909/1596/453 +f 911/1598/453 964/1741/453 909/1596/453 +f 911/1598/453 944/1662/453 963/1740/453 +s 1 +f 1024/1742/454 979/1743/455 1025/1744/455 +f 1026/1745/456 980/1746/454 1024/1742/454 +f 1026/1745/456 981/1747/457 915/1748/456 +f 1027/1749/458 981/1750/457 1028/1751/457 +f 1029/1752/459 982/1753/458 1027/1749/458 +f 1030/1754/460 983/1755/459 1029/1752/459 +f 1031/1756/461 916/1757/460 1030/1754/460 +f 1031/1756/461 976/1758/462 975/1759/461 +f 1032/1760/463 976/1761/462 1033/1762/462 +f 1032/1760/463 914/1763/464 977/1764/463 +f 1034/1765/465 914/1766/464 1035/1767/464 +f 1025/1768/455 978/1769/465 1034/1765/465 +f 919/1770/466 1032/1760/447 1033/1762/466 +f 987/1771/453 1027/1749/467 1028/1751/453 +f 918/1772/445 1024/1742/468 1025/1744/445 +f 992/1773/447 1035/1767/469 1032/1760/447 +f 917/1774/467 1029/1752/470 1027/1749/467 +f 985/1775/451 1031/1756/471 1030/1754/451 +f 989/1776/468 1026/1745/472 1024/1742/468 +f 991/1777/469 1034/1765/473 1035/1767/469 +f 986/1778/470 1030/1754/451 1029/1752/470 +f 984/1779/471 1033/1762/466 1031/1756/471 +f 988/1780/472 1028/1751/453 1026/1745/472 +f 990/1781/473 1025/1768/445 1034/1765/473 +f 1036/1782/463 1037/1783/464 1038/1784/463 +f 1037/1785/464 1039/1786/465 1040/1787/465 +f 1039/1786/465 1041/1788/455 1040/1789/465 +f 1042/1790/455 1043/1791/454 1041/1792/455 +f 1043/1793/454 1044/1794/456 1045/1795/456 +f 1045/1796/456 1046/1797/457 1047/1798/457 +f 1046/1797/457 1048/1799/458 1047/1800/457 +f 1049/1801/458 1050/1802/459 1048/1803/458 +f 1050/1804/459 1051/1805/460 1052/1806/460 +f 1052/1807/460 1053/1808/461 1054/1809/461 +f 1055/1810/462 1036/1782/463 1038/1811/463 +f 1053/1808/461 1055/1812/462 1054/1813/461 +f 1053/1808/468 1056/1814/472 1057/1815/472 +f 1049/1801/469 1058/1816/473 1059/1817/473 +f 1039/1786/470 1060/1818/451 1042/1790/451 +f 1061/1819/471 1062/1820/466 1044/1794/466 +f 1057/1815/472 1063/1821/453 1036/1782/453 +f 1059/1817/473 1064/1822/445 1051/1805/445 +f 1044/1794/466 1065/1823/447 1046/1797/447 +f 1036/1782/453 1066/1824/467 1067/1825/467 +f 1051/1826/445 1068/1827/468 1053/1808/468 +f 1046/1797/447 1069/1828/469 1049/1801/469 +f 1067/1825/467 1070/1829/470 1039/1786/470 +f 1042/1790/451 1071/1830/471 1061/1819/471 +f 1006/1831/473 1072/1832/445 923/1833/445 +f 1003/1834/466 1073/1835/447 1004/1836/447 +f 1008/1837/453 1074/1838/467 1009/1839/467 +f 923/1840/445 1075/1841/468 1007/1842/468 +f 1004/1836/447 1076/1843/469 1005/1844/469 +f 1009/1839/467 1077/1845/470 1010/1846/470 +f 925/1847/451 1078/1848/471 1002/1849/471 +f 1007/1842/468 1079/1850/472 924/1851/472 +f 1005/1844/469 1080/1852/473 1006/1831/473 +f 1010/1846/470 1081/1853/451 925/1847/451 +f 1002/1849/471 1082/1854/466 1003/1834/466 +f 924/1851/472 1083/1855/453 1008/1837/453 +f 1084/1856/460 1075/1841/461 1072/1857/460 +f 1075/1841/461 1085/1858/462 1079/1850/462 +f 1079/1850/462 1086/1859/463 1083/1855/463 +f 1086/1859/463 1074/1838/464 1083/1855/463 +f 1074/1838/464 1087/1860/465 1077/1845/465 +f 1087/1860/465 1081/1853/455 1077/1845/465 +f 1088/1861/455 1078/1848/454 1081/1853/455 +f 1089/1862/454 1082/1854/456 1078/1848/454 +f 1090/1863/456 1073/1835/457 1082/1854/456 +f 1073/1835/457 1091/1864/458 1076/1843/458 +f 1091/1864/458 1080/1852/459 1076/1843/458 +f 1092/1865/459 1072/1832/460 1080/1852/459 +f 1092/1865/474 1093/1866/475 1084/1867/475 +f 1094/1868/476 1092/1865/474 1091/1864/476 +f 1095/1869/477 1091/1864/476 1096/1870/477 +f 1090/1863/478 1095/1869/477 1096/1870/477 +f 1097/1871/479 1090/1863/478 1089/1862/479 +f 1098/1872/480 1089/1862/479 1088/1861/480 +f 1087/1860/481 1098/1872/480 1088/1861/480 +f 1099/1873/482 1087/1860/481 1100/1874/482 +f 1086/1859/483 1099/1873/482 1100/1874/482 +f 1101/1875/484 1086/1859/483 1085/1858/484 +f 1093/1876/475 1102/1877/485 1084/1856/475 +f 1103/1878/485 1085/1858/484 1102/1877/485 +f 1093/1876/445 920/1879/468 1103/1878/468 +f 1095/1869/447 1001/1880/469 1094/1868/469 +f 1099/1873/467 996/1881/470 1104/1882/470 +f 1098/1872/451 994/1883/471 1097/1871/471 +f 1103/1878/468 999/1884/472 1101/1875/472 +f 1094/1868/469 921/1885/473 1105/1886/473 +f 1104/1882/470 995/1887/451 1098/1872/451 +f 1097/1871/471 993/1888/466 1106/1889/466 +f 1101/1875/472 998/1890/453 1107/1891/453 +f 1105/1886/473 1000/1892/445 1093/1866/445 +f 1106/1889/466 922/1893/447 1095/1869/447 +f 1107/1891/453 997/1894/467 1099/1873/467 +f 1108/1895/486 1109/1896/466 1110/1897/487 +f 1111/1898/488 1112/1899/453 1113/1900/489 +f 1114/1901/490 1115/1902/445 1116/1903/491 +f 1110/1897/487 1117/1904/447 1118/1905/492 +f 1113/1900/489 1119/1906/467 1120/1907/493 +f 1116/1908/491 1121/1909/468 1122/1910/494 +f 1118/1905/492 1123/1911/469 1124/1912/495 +f 1120/1907/493 1125/1913/470 1126/1914/496 +f 1127/1915/497 1128/1916/471 1108/1895/486 +f 1122/1910/494 1129/1917/472 1111/1898/488 +f 1124/1912/495 1130/1918/473 1114/1901/490 +f 1126/1914/496 1131/1919/451 1127/1915/497 +f 1116/1908/491 920/1920/498 1000/1921/499 +f 1122/1910/494 999/1922/500 920/1923/498 +f 1111/1898/488 998/1924/501 999/1925/500 +f 998/1926/501 1120/1907/493 997/1927/502 +f 1120/1907/493 996/1928/503 997/1929/502 +f 996/1930/503 1127/1915/497 995/1931/504 +f 995/1932/504 1108/1895/486 994/1933/505 +f 1108/1895/486 993/1934/506 994/1935/505 +f 1110/1897/487 922/1936/507 993/1937/506 +f 1118/1905/492 1001/1938/508 922/1939/507 +f 1124/1912/495 921/1940/509 1001/1941/508 +f 1114/1901/490 1000/1942/499 921/1943/509 +f 1000/1944/510 1130/1918/511 921/1945/511 +f 921/1946/511 1123/1911/512 1001/1947/512 +f 1001/1948/512 1117/1904/513 922/1949/513 +f 1117/1904/513 993/1950/514 922/1951/513 +f 1109/1896/514 994/1952/515 993/1953/514 +f 994/1954/515 1131/1919/516 995/1955/517 +f 1131/1919/516 996/1956/518 995/1957/517 +f 996/1958/518 1119/1906/519 997/1959/519 +f 997/1960/519 1112/1899/520 998/1961/520 +f 1112/1899/520 999/1962/521 998/1963/520 +f 999/1964/521 1121/1909/522 920/1965/522 +f 1121/1909/522 1000/1966/510 920/1967/522 +f 969/1739/523 1011/1718/447 960/1649/447 +f 939/1968/524 965/1657/453 946/1652/453 +f 941/1969/525 953/1642/524 939/1968/524 +f 947/1636/453 952/1641/524 937/1626/524 +f 937/1626/524 957/1646/525 938/1627/525 +f 961/1674/453 951/1640/524 964/1723/453 +f 1017/1970/447 1132/1971/526 1133/1972/447 +f 1022/1973/527 1134/1974/453 1135/1975/527 +f 1020/1976/528 1136/1977/444 1137/1978/528 +f 966/1979/529 1133/1972/447 1138/1980/529 +f 1023/1981/530 1135/1975/527 1139/1982/530 +f 1015/1983/531 1140/1984/446 1141/1985/531 +f 967/1986/532 1137/1978/528 1142/1987/532 +f 1018/1988/533 1138/1980/529 1143/1989/533 +f 968/1990/446 1139/1982/530 1140/1984/446 +f 1016/1991/526 1141/1985/531 1132/1971/526 +f 1021/1992/453 1142/1987/532 1134/1974/453 +f 1019/1993/444 1143/1989/533 1136/1994/444 +f 955/1644/524 962/1670/453 963/1658/453 +f 973/1738/534 972/1737/534 954/1643/525 +f 964/1723/453 962/1670/453 961/1674/453 +f 971/1725/447 932/1619/535 970/1676/523 +f 959/1648/450 969/1739/523 970/1676/523 +f 1024/1742/454 980/1995/454 979/1743/455 +f 1026/1745/456 915/1996/456 980/1746/454 +f 1026/1745/456 1028/1751/457 981/1747/457 +f 1027/1749/458 982/1997/458 981/1750/457 +f 1029/1752/459 983/1998/459 982/1753/458 +f 1030/1754/460 916/1999/460 983/1755/459 +f 1031/1756/461 975/2000/461 916/1757/460 +f 1031/1756/461 1033/1762/462 976/1758/462 +f 1032/1760/463 977/2001/463 976/1761/462 +f 1032/1760/463 1035/1767/464 914/1763/464 +f 1034/1765/465 978/2002/465 914/1766/464 +f 1025/1768/455 979/2003/455 978/1769/465 +f 919/1770/466 992/1773/447 1032/1760/447 +f 987/1771/453 917/1774/467 1027/1749/467 +f 918/1772/445 989/1776/468 1024/1742/468 +f 992/1773/447 991/1777/469 1035/1767/469 +f 917/1774/467 986/1778/470 1029/1752/470 +f 985/1775/451 984/1779/471 1031/1756/471 +f 989/1776/468 988/1780/472 1026/1745/472 +f 991/1777/469 990/1781/473 1034/1765/473 +f 986/1778/470 985/1775/451 1030/1754/451 +f 984/1779/471 919/1770/466 1033/1762/466 +f 988/1780/472 987/1771/453 1028/1751/453 +f 990/1781/473 918/2004/445 1025/1768/445 +f 1036/1782/463 1067/1825/464 1037/1783/464 +f 1037/1785/464 1067/1825/464 1039/1786/465 +f 1039/1786/465 1042/1790/455 1041/1788/455 +f 1042/1790/455 1061/1819/454 1043/1791/454 +f 1043/1793/454 1061/1819/454 1044/1794/456 +f 1045/1796/456 1044/1794/456 1046/1797/457 +f 1046/1797/457 1049/1801/458 1048/1799/458 +f 1049/1801/458 1059/1817/459 1050/1802/459 +f 1050/1804/459 1059/1817/459 1051/1805/460 +f 1052/1807/460 1051/1826/460 1053/1808/461 +f 1055/1810/462 1057/1815/462 1036/1782/463 +f 1053/1808/461 1057/1815/462 1055/1812/462 +f 1053/1808/468 1068/1827/468 1056/1814/472 +f 1049/1801/469 1069/1828/469 1058/1816/473 +f 1039/1786/470 1070/1829/470 1060/1818/451 +f 1061/1819/471 1071/1830/471 1062/1820/466 +f 1057/1815/472 1056/1814/472 1063/1821/453 +f 1059/1817/473 1058/1816/473 1064/1822/445 +f 1044/1794/466 1062/1820/466 1065/1823/447 +f 1036/1782/453 1063/1821/453 1066/1824/467 +f 1051/1826/445 1064/2005/445 1068/1827/468 +f 1046/1797/447 1065/1823/447 1069/1828/469 +f 1067/1825/467 1066/1824/467 1070/1829/470 +f 1042/1790/451 1060/1818/451 1071/1830/471 +f 1006/1831/473 1080/1852/473 1072/1832/445 +f 1003/1834/466 1082/1854/466 1073/1835/447 +f 1008/1837/453 1083/1855/453 1074/1838/467 +f 923/1840/445 1072/1857/445 1075/1841/468 +f 1004/1836/447 1073/1835/447 1076/1843/469 +f 1009/1839/467 1074/1838/467 1077/1845/470 +f 925/1847/451 1081/1853/451 1078/1848/471 +f 1007/1842/468 1075/1841/468 1079/1850/472 +f 1005/1844/469 1076/1843/469 1080/1852/473 +f 1010/1846/470 1077/1845/470 1081/1853/451 +f 1002/1849/471 1078/1848/471 1082/1854/466 +f 924/1851/472 1079/1850/472 1083/1855/453 +f 1084/1856/460 1102/1877/461 1075/1841/461 +f 1075/1841/461 1102/1877/461 1085/1858/462 +f 1079/1850/462 1085/1858/462 1086/1859/463 +f 1086/1859/463 1100/1874/464 1074/1838/464 +f 1074/1838/464 1100/1874/464 1087/1860/465 +f 1087/1860/465 1088/1861/455 1081/1853/455 +f 1088/1861/455 1089/1862/454 1078/1848/454 +f 1089/1862/454 1090/1863/456 1082/1854/456 +f 1090/1863/456 1096/1870/457 1073/1835/457 +f 1073/1835/457 1096/1870/457 1091/1864/458 +f 1091/1864/458 1092/1865/459 1080/1852/459 +f 1092/1865/459 1084/1867/460 1072/1832/460 +f 1092/1865/474 1105/1886/474 1093/1866/475 +f 1094/1868/476 1105/1886/474 1092/1865/474 +f 1095/1869/477 1094/1868/476 1091/1864/476 +f 1090/1863/478 1106/1889/478 1095/1869/477 +f 1097/1871/479 1106/1889/478 1090/1863/478 +f 1098/1872/480 1097/1871/479 1089/1862/479 +f 1087/1860/481 1104/1882/481 1098/1872/480 +f 1099/1873/482 1104/1882/481 1087/1860/481 +f 1086/1859/483 1107/1891/483 1099/1873/482 +f 1101/1875/484 1107/1891/483 1086/1859/483 +f 1093/1876/475 1103/1878/485 1102/1877/485 +f 1103/1878/485 1101/1875/484 1085/1858/484 +f 1093/1876/445 1000/2006/445 920/1879/468 +f 1095/1869/447 922/1893/447 1001/1880/469 +f 1099/1873/467 997/1894/467 996/1881/470 +f 1098/1872/451 995/1887/451 994/1883/471 +f 1103/1878/468 920/1879/468 999/1884/472 +f 1094/1868/469 1001/1880/469 921/1885/473 +f 1104/1882/470 996/1881/470 995/1887/451 +f 1097/1871/471 994/1883/471 993/1888/466 +f 1101/1875/472 999/1884/472 998/1890/453 +f 1105/1886/473 921/1885/473 1000/1892/445 +f 1106/1889/466 993/1888/466 922/1893/447 +f 1107/1891/453 998/1890/453 997/1894/467 +f 1108/1895/486 1128/1916/471 1109/1896/466 +f 1111/1898/488 1129/1917/472 1112/1899/453 +f 1114/1901/490 1130/1918/473 1115/1902/445 +f 1110/1897/487 1109/1896/466 1117/1904/447 +f 1113/1900/489 1112/1899/453 1119/1906/467 +f 1116/1908/491 1115/2007/445 1121/1909/468 +f 1118/1905/492 1117/1904/447 1123/1911/469 +f 1120/1907/493 1119/1906/467 1125/1913/470 +f 1127/1915/497 1131/1919/451 1128/1916/471 +f 1122/1910/494 1121/1909/468 1129/1917/472 +f 1124/1912/495 1123/1911/469 1130/1918/473 +f 1126/1914/496 1125/1913/470 1131/1919/451 +f 1116/1908/491 1122/1910/494 920/1920/498 +f 1122/1910/494 1111/1898/488 999/1922/500 +f 1111/1898/488 1113/1900/489 998/1924/501 +f 998/1926/501 1113/1900/489 1120/1907/493 +f 1120/1907/493 1126/1914/496 996/1928/503 +f 996/1930/503 1126/1914/496 1127/1915/497 +f 995/1932/504 1127/1915/497 1108/1895/486 +f 1108/1895/486 1110/1897/487 993/1934/506 +f 1110/1897/487 1118/1905/492 922/1936/507 +f 1118/1905/492 1124/1912/495 1001/1938/508 +f 1124/1912/495 1114/1901/490 921/1940/509 +f 1114/1901/490 1116/1903/491 1000/1942/499 +f 1000/1944/510 1115/1902/536 1130/1918/511 +f 921/1946/511 1130/1918/511 1123/1911/512 +f 1001/1948/512 1123/1911/512 1117/1904/513 +f 1117/1904/513 1109/1896/514 993/1950/514 +f 1109/1896/514 1128/1916/515 994/1952/515 +f 994/1954/515 1128/1916/515 1131/1919/516 +f 1131/1919/516 1125/1913/518 996/1956/518 +f 996/1958/518 1125/1913/518 1119/1906/519 +f 997/1960/519 1119/1906/519 1112/1899/520 +f 1112/1899/520 1129/1917/521 999/1962/521 +f 999/1964/521 1129/1917/521 1121/1909/522 +f 1121/1909/522 1115/2007/536 1000/1966/510 +f 969/1739/523 930/1617/535 1011/1718/447 +f 939/1968/524 953/1642/524 965/1657/453 +f 941/1969/525 1014/1724/525 953/1642/524 +f 947/1636/453 950/1639/453 952/1641/524 +f 937/1626/524 952/1641/524 957/1646/525 +f 961/1674/453 973/1738/534 951/1640/524 +f 1017/1970/447 1016/1991/526 1132/1971/526 +f 1022/1973/527 1021/1992/453 1134/1974/453 +f 1020/1976/528 1019/2008/444 1136/1977/444 +f 966/1979/529 1017/1970/447 1133/1972/447 +f 1023/1981/530 1022/1973/527 1135/1975/527 +f 1015/1983/531 968/1990/446 1140/1984/446 +f 967/1986/532 1020/1976/528 1137/1978/528 +f 1018/1988/533 966/1979/529 1138/1980/529 +f 968/1990/446 1023/1981/530 1139/1982/530 +f 1016/1991/526 1015/1983/531 1141/1985/531 +f 1021/1992/453 967/1986/532 1142/1987/532 +f 1019/1993/444 1018/1988/533 1143/1989/533 +f 955/1644/524 972/1737/534 962/1670/453 +f 972/1737/534 955/1644/524 954/1643/525 +f 954/1643/525 956/1645/525 973/1738/534 +f 956/1645/525 951/1640/524 973/1738/534 +f 964/1723/453 963/1658/453 962/1670/453 +f 971/1725/447 1012/1719/447 932/1619/535 +f 932/1619/535 958/1647/450 970/1676/523 +f 958/1647/450 959/1648/450 970/1676/523 +f 959/1648/450 930/1617/535 969/1739/523 +o Clip +v -0.062500 0.968750 -1.625003 +v 0.062500 2.281250 -1.625003 +v 0.062500 0.968750 -1.625003 +v -0.125000 0.968750 -1.531253 +v 0.062500 0.968750 -1.562503 +v 0.125000 0.968750 -1.531253 +v -0.062500 2.281250 -1.625003 +v 0.062500 2.281250 -1.562503 +v 0.125000 2.281250 -1.531253 +v -0.062500 2.281250 -1.562503 +v -0.125000 2.281250 -1.531253 +v -0.062500 0.968750 -1.562503 +vt 0.948864 0.965909 +vt 0.829545 0.954545 +vt 0.948864 0.954545 +vt 0.948864 0.977273 +vt 0.954545 0.994318 +vt 0.948864 1.000000 +vt 0.960227 0.982955 +vt 0.960227 0.994318 +vt 0.818182 0.982955 +vt 0.823864 0.994318 +vt 0.818182 0.994318 +vt 0.829545 1.000000 +vt 0.823864 0.982955 +vt 0.829545 0.977273 +vt 0.829545 0.965909 +vt 0.954545 0.982955 +vt 0.829545 0.948864 +vt 0.948864 0.943182 +vt 0.948864 0.948864 +vt 0.829545 0.971591 +vt 0.948864 0.971591 +vt 0.829545 0.943182 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -1.0000 -0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.8507 0.0000 -0.5257 +vn 0.4472 0.0000 -0.8944 +vn 1.0000 0.0000 0.0000 +vn -0.8507 0.0000 -0.5257 +vn -0.4472 0.0000 -0.8944 +vn -1.0000 0.0000 0.0000 +s off +f 1144/2009/537 1145/2010/537 1146/2011/537 +f 1147/2012/538 1148/2013/538 1149/2014/538 +f 1148/2013/538 1144/2015/538 1146/2016/538 +f 1150/2017/539 1151/2018/539 1145/2019/539 +f 1152/2020/540 1147/2012/540 1149/2014/540 +f 1152/2020/539 1153/2021/539 1154/2022/539 +f 1144/2009/537 1150/2023/537 1145/2010/537 +f 1147/2012/538 1155/2024/538 1148/2013/538 +f 1148/2013/538 1155/2024/538 1144/2015/538 +f 1150/2017/539 1153/2021/539 1151/2018/539 +f 1152/2020/540 1154/2022/540 1147/2012/540 +f 1152/2020/539 1151/2018/539 1153/2021/539 +s 1 +f 1151/2025/541 1149/2026/542 1148/2027/541 +f 1145/2010/543 1148/2027/541 1146/2011/543 +f 1153/2028/544 1147/2012/545 1154/2022/545 +f 1155/2029/544 1150/2023/546 1144/2009/546 +f 1151/2025/541 1152/2030/542 1149/2026/542 +f 1145/2010/543 1151/2025/541 1148/2027/541 +f 1153/2028/544 1155/2029/544 1147/2012/545 +f 1155/2029/544 1153/2028/544 1150/2023/546 +o Bullet +v 0.000000 0.904644 -1.526442 +v 0.093750 0.998305 -1.530532 +v 0.000000 1.091966 -1.534621 +v -0.066291 1.064533 -1.533423 +v -0.093750 0.998305 -1.530532 +v -0.066291 0.932077 -1.527640 +v 0.066291 0.932077 -1.527640 +v 0.066291 1.064533 -1.533423 +v 0.000000 0.937359 -0.777156 +v -0.093750 1.031020 -0.781245 +v 0.093750 1.031020 -0.781245 +v 0.066291 1.097248 -0.784137 +v 0.066291 0.964791 -0.778354 +v -0.066291 0.964791 -0.778354 +v -0.066291 1.097248 -0.784137 +v 0.000000 1.124680 -0.785335 +v 0.044194 1.077898 -0.720733 +v 0.000000 1.096186 -0.721531 +v -0.044194 1.077898 -0.720733 +v -0.062500 1.033746 -0.718805 +v -0.044194 0.989594 -0.716877 +v 0.000000 0.971305 -0.716079 +v 0.044194 0.989594 -0.716877 +v 0.062500 1.033746 -0.718805 +v 0.044194 1.086076 -0.533411 +v 0.000000 0.979484 -0.528757 +v 0.044194 0.997772 -0.529556 +v -0.044194 0.997772 -0.529556 +v -0.044194 1.086076 -0.533411 +v 0.000000 1.104365 -0.534210 +v 0.062500 1.041924 -0.531483 +v -0.062500 1.041924 -0.531483 +v -0.022097 1.070806 -0.376581 +v 0.000000 1.079950 -0.376980 +v 0.022097 1.070806 -0.376581 +v 0.031250 1.048730 -0.375617 +v 0.022097 1.026654 -0.374654 +v 0.000000 1.017509 -0.374254 +v -0.031250 1.048730 -0.375617 +v -0.022097 1.026654 -0.374654 +v 0.000000 1.051456 -0.313177 +vt 0.838068 0.886364 +vt 0.838068 0.903409 +vt 0.829545 0.894886 +vt 0.846591 0.894886 +vt 0.844095 0.900913 +vt 0.844095 0.888860 +vt 0.832042 0.888860 +vt 0.832042 0.900913 +vt 0.954545 0.926136 +vt 0.954545 0.931818 +vt 0.886364 0.931818 +vt 0.954545 0.914773 +vt 0.954545 0.920455 +vt 0.886364 0.920455 +vt 0.954545 0.903409 +vt 0.886364 0.903409 +vt 0.886364 0.897727 +vt 0.954545 0.886364 +vt 0.954545 0.892045 +vt 0.886364 0.892045 +vt 0.886364 0.926136 +vt 0.954545 0.909091 +vt 0.886364 0.914773 +vt 0.886364 0.909091 +vt 0.954545 0.897727 +vt 0.880682 0.903409 +vt 0.880682 0.909091 +vt 0.880682 0.914773 +vt 0.880682 0.920455 +vt 0.880682 0.926136 +vt 0.880682 0.886364 +vt 0.886364 0.886364 +vt 0.880682 0.892045 +vt 0.880682 0.897727 +vt 0.863636 0.903409 +vt 0.863636 0.892045 +vt 0.863636 0.886364 +vt 0.863636 0.926136 +vt 0.863636 0.914773 +vt 0.863636 0.909091 +vt 0.863636 0.897727 +vt 0.880682 0.931818 +vt 0.863636 0.931818 +vt 0.863636 0.920455 +vt 0.852273 0.914773 +vt 0.852273 0.909091 +vt 0.852273 0.903409 +vt 0.852273 0.897727 +vt 0.852273 0.892045 +vt 0.852273 0.886364 +vt 0.852273 0.920455 +vt 0.852273 0.926136 +vt 0.852273 0.931818 +vt 0.846591 0.926136 +vt 0.846591 0.914773 +vt 0.846591 0.903409 +vt 0.846591 0.892045 +vn -0.0000 -0.0436 -0.9990 +vn -0.7071 -0.7064 0.0308 +vn -0.0000 -0.9990 0.0436 +vn -0.7071 0.7064 -0.0308 +vn -1.0000 -0.0000 -0.0000 +vn 0.7071 0.7064 -0.0308 +vn 1.0000 0.0000 -0.0000 +vn 0.7071 -0.7064 0.0308 +vn 0.0000 0.9990 -0.0436 +vn 0.6325 0.6514 0.4192 +vn 0.6324 0.6514 0.4192 +vn 0.0000 0.9131 0.4078 +vn -0.6324 0.6514 0.4192 +vn -0.6325 0.6514 0.4192 +vn -0.8944 0.0195 0.4468 +vn -0.6325 -0.6123 0.4744 +vn -0.0000 -0.8741 0.4858 +vn 0.6325 -0.6123 0.4744 +vn 0.8944 0.0195 0.4468 +vn 0.7038 0.7073 0.0656 +vn 0.7038 -0.6989 0.1270 +vn -0.0000 -0.9902 0.1397 +vn -0.7038 -0.6989 0.1270 +vn -0.7038 0.7073 0.0656 +vn -0.0000 0.9986 0.0529 +vn 0.9953 0.0042 0.0963 +vn -0.9953 0.0042 0.0963 +vn -0.6711 0.6842 0.2856 +vn -0.0000 0.9619 0.2734 +vn 0.6711 0.6842 0.2856 +vn 0.9490 0.0137 0.3148 +vn 0.6711 -0.6567 0.3441 +vn -0.0000 -0.9344 0.3562 +vn -0.9490 0.0137 0.3148 +vn -0.6711 -0.6567 0.3441 +vn -0.0000 0.0436 0.9990 +s off +f 1156/2031/547 1158/2032/547 1157/2033/547 +f 1158/2032/547 1160/2034/547 1159/2035/547 +f 1160/2034/547 1156/2031/547 1161/2036/547 +f 1156/2031/547 1157/2033/547 1162/2037/547 +f 1157/2033/547 1158/2032/547 1163/2038/547 +f 1158/2032/547 1156/2031/547 1160/2034/547 +s 1 +f 1161/2039/548 1156/2040/549 1164/2041/549 +f 1159/2042/550 1160/2043/551 1165/2044/551 +f 1163/2045/552 1167/2046/552 1166/2047/553 +f 1156/2048/549 1162/2049/554 1168/2050/554 +f 1160/2043/551 1161/2039/548 1169/2051/548 +f 1158/2052/555 1159/2042/550 1170/2053/550 +f 1163/2045/552 1158/2052/555 1171/2054/555 +f 1162/2049/554 1157/2055/553 1166/2047/553 +f 1172/2056/556 1167/2046/557 1171/2054/558 +f 1173/2057/558 1171/2054/558 1170/2053/559 +f 1174/2058/560 1170/2053/559 1165/2044/561 +f 1175/2059/561 1165/2044/561 1169/2051/562 +f 1176/2060/562 1169/2051/562 1164/2041/563 +f 1177/2061/563 1164/2062/563 1168/2050/564 +f 1178/2063/564 1168/2050/564 1166/2047/565 +f 1179/2064/565 1166/2047/565 1167/2046/557 +f 1179/2064/553 1172/2056/552 1180/2065/566 +f 1178/2063/554 1182/2066/567 1181/2067/568 +f 1175/2059/551 1176/2060/548 1183/2068/569 +f 1173/2057/555 1174/2058/550 1184/2069/570 +f 1172/2056/552 1173/2057/555 1185/2070/571 +f 1178/2063/554 1179/2064/553 1186/2071/572 +f 1176/2060/548 1177/2072/549 1181/2073/568 +f 1174/2058/550 1175/2059/551 1187/2074/573 +f 1188/2075/574 1184/2069/570 1187/2074/573 +f 1189/2076/575 1185/2070/571 1184/2069/570 +f 1190/2077/576 1180/2065/566 1185/2070/571 +f 1191/2078/577 1186/2071/572 1180/2065/566 +f 1192/2079/578 1182/2066/567 1186/2071/572 +f 1193/2080/579 1181/2067/568 1182/2066/567 +f 1194/2081/580 1187/2074/573 1183/2068/569 +f 1195/2082/581 1183/2068/569 1181/2073/568 +f 1195/2082/581 1193/2083/579 1196/2084/582 +f 1194/2081/580 1195/2082/581 1196/2084/582 +f 1188/2075/574 1194/2081/580 1196/2085/582 +f 1189/2076/575 1188/2075/574 1196/2085/582 +f 1190/2077/576 1189/2076/575 1196/2086/582 +f 1191/2078/577 1190/2077/576 1196/2086/582 +f 1193/2080/579 1192/2079/578 1196/2087/582 +f 1192/2079/578 1191/2078/577 1196/2087/582 +f 1161/2039/548 1164/2041/549 1169/2051/548 +f 1159/2042/550 1165/2044/551 1170/2053/550 +f 1163/2045/552 1166/2047/553 1157/2055/553 +f 1156/2048/549 1168/2050/554 1164/2062/549 +f 1160/2043/551 1169/2051/548 1165/2044/551 +f 1158/2052/555 1170/2053/550 1171/2054/555 +f 1163/2045/552 1171/2054/555 1167/2046/552 +f 1162/2049/554 1166/2047/553 1168/2050/554 +f 1172/2056/556 1171/2054/558 1173/2057/558 +f 1173/2057/558 1170/2053/559 1174/2058/560 +f 1174/2058/560 1165/2044/561 1175/2059/561 +f 1175/2059/561 1169/2051/562 1176/2060/562 +f 1176/2060/562 1164/2041/563 1177/2072/563 +f 1177/2061/563 1168/2050/564 1178/2063/564 +f 1178/2063/564 1166/2047/565 1179/2064/565 +f 1179/2064/565 1167/2046/557 1172/2056/556 +f 1179/2064/553 1180/2065/566 1186/2071/572 +f 1178/2063/554 1181/2067/568 1177/2061/549 +f 1175/2059/551 1183/2068/569 1187/2074/573 +f 1173/2057/555 1184/2069/570 1185/2070/571 +f 1172/2056/552 1185/2070/571 1180/2065/566 +f 1178/2063/554 1186/2071/572 1182/2066/567 +f 1176/2060/548 1181/2073/568 1183/2068/569 +f 1174/2058/550 1187/2074/573 1184/2069/570 +f 1188/2075/574 1187/2074/573 1194/2081/580 +f 1189/2076/575 1184/2069/570 1188/2075/574 +f 1190/2077/576 1185/2070/571 1189/2076/575 +f 1191/2078/577 1180/2065/566 1190/2077/576 +f 1192/2079/578 1186/2071/572 1191/2078/577 +f 1193/2080/579 1182/2066/567 1192/2079/578 +f 1194/2081/580 1183/2068/569 1195/2082/581 +f 1195/2082/581 1181/2073/568 1193/2083/579 +o Bullets +v 0.000000 2.093750 -1.531250 +v 0.000000 2.281250 -1.531250 +v 0.093750 2.187500 -1.531250 +v 0.086614 2.035877 -1.531250 +v -0.035877 1.913386 -1.531250 +v 0.035877 2.086614 -1.531250 +v 0.000000 1.718750 -1.531250 +v 0.000000 1.906250 -1.531250 +v 0.093750 1.812500 -1.531250 +v -0.035877 1.538386 -1.531250 +v 0.035877 1.711614 -1.531250 +v 0.086614 1.589123 -1.531250 +v 0.066291 1.503791 -1.531250 +v 0.000000 1.343750 -1.531250 +v 0.000000 1.531250 -1.531250 +v 0.086614 1.285877 -1.531250 +v -0.035877 1.163386 -1.531250 +v 0.035877 1.336614 -1.531250 +v -0.066291 2.253791 -1.531250 +v -0.093750 2.187500 -1.531250 +v -0.066291 2.121209 -1.531250 +v 0.066291 2.121209 -1.531250 +v 0.066291 2.253791 -1.531250 +v -0.035877 2.086614 -1.531250 +v -0.086614 2.035877 -1.531250 +v -0.086614 1.964123 -1.531250 +v 0.086614 1.964123 -1.531250 +v 0.035877 1.913386 -1.531250 +v -0.066291 1.878791 -1.531250 +v -0.093750 1.812500 -1.531250 +v -0.066291 1.746209 -1.531250 +v 0.066291 1.746209 -1.531250 +v 0.066291 1.878791 -1.531250 +v -0.035877 1.711614 -1.531250 +v -0.086614 1.660877 -1.531250 +v -0.086614 1.589123 -1.531250 +v 0.035877 1.538386 -1.531250 +v 0.086614 1.660877 -1.531250 +v -0.066291 1.503791 -1.531250 +v -0.093750 1.437500 -1.531250 +v -0.066291 1.371209 -1.531250 +v 0.093750 1.437500 -1.531250 +v 0.066291 1.371209 -1.531250 +v -0.035877 1.336614 -1.531250 +v -0.086614 1.285877 -1.531250 +v -0.086614 1.214123 -1.531250 +v 0.086614 1.214123 -1.531250 +v 0.035877 1.163386 -1.531250 +v 0.000000 2.093750 -0.781250 +v -0.093750 2.187500 -0.781250 +v 0.066291 2.253791 -0.781250 +v 0.066291 2.121209 -0.781250 +v -0.066291 2.121209 -0.781250 +v -0.066291 2.253791 -0.781250 +v 0.000000 2.281250 -0.781250 +v 0.093750 2.187500 -0.781250 +v 0.044194 2.231694 -0.718750 +v 0.000000 2.250000 -0.718750 +v -0.044194 2.231694 -0.718750 +v -0.062500 2.187500 -0.718750 +v -0.044194 2.143306 -0.718750 +v 0.000000 2.125000 -0.718750 +v 0.044194 2.143306 -0.718750 +v 0.062500 2.187500 -0.718750 +v 0.044194 2.231694 -0.531250 +v 0.044194 2.143306 -0.531250 +v -0.044194 2.143306 -0.531250 +v -0.044194 2.231694 -0.531250 +v 0.000000 2.250000 -0.531250 +v 0.062500 2.187500 -0.531250 +v 0.000000 2.125000 -0.531250 +v -0.062500 2.187500 -0.531250 +v -0.031250 2.187500 -0.375236 +v -0.022097 2.209597 -0.375236 +v 0.022097 2.209597 -0.375236 +v 0.031250 2.187500 -0.375236 +v 0.000000 2.156250 -0.375236 +v -0.022097 2.165403 -0.375236 +v 0.000000 2.187500 -0.312736 +v 0.000000 2.218750 -0.375236 +v 0.022097 2.165403 -0.375236 +v -0.035877 1.913386 -0.781250 +v -0.086614 2.035877 -0.781250 +v 0.086614 2.035877 -0.781250 +v 0.035877 1.913386 -0.781250 +v -0.086614 1.964123 -0.781250 +v -0.035877 2.086614 -0.781250 +v 0.035877 2.086614 -0.781250 +v 0.086614 1.964123 -0.781250 +v 0.057742 2.023918 -0.718750 +v -0.023918 2.057743 -0.718750 +v -0.057742 2.023918 -0.718750 +v -0.057742 1.976082 -0.718750 +v -0.023918 1.942258 -0.718750 +v 0.023918 1.942258 -0.718750 +v 0.057742 1.976082 -0.718750 +v 0.057742 2.023918 -0.531250 +v 0.023918 1.942258 -0.531250 +v -0.057742 1.976082 -0.531250 +v 0.023918 2.057743 -0.718750 +v -0.023918 2.057743 -0.531250 +v 0.023918 2.057743 -0.531250 +v 0.057742 1.976082 -0.531250 +v -0.023918 1.942258 -0.531250 +v -0.057742 2.023918 -0.531250 +v -0.028871 2.011959 -0.375236 +v -0.011959 2.028871 -0.375236 +v 0.028871 2.011959 -0.375236 +v 0.028871 1.988041 -0.375236 +v 0.011959 1.971129 -0.375236 +v -0.028871 1.988041 -0.375236 +v -0.011959 1.971129 -0.375236 +v 0.000000 2.000000 -0.312736 +v 0.011959 2.028871 -0.375236 +v 0.000000 1.718750 -0.781250 +v -0.093750 1.812500 -0.781250 +v 0.066291 1.878791 -0.781250 +v 0.066291 1.746209 -0.781250 +v -0.066291 1.746209 -0.781250 +v -0.066291 1.878791 -0.781250 +v 0.000000 1.906250 -0.781250 +v 0.093750 1.812500 -0.781250 +v 0.044194 1.856694 -0.718750 +v 0.000000 1.875000 -0.718750 +v -0.062500 1.812500 -0.718750 +v -0.044194 1.768306 -0.718750 +v 0.044194 1.768306 -0.718750 +v 0.062500 1.812500 -0.718750 +v 0.044194 1.856694 -0.531250 +v 0.000000 1.750000 -0.718750 +v 0.044194 1.768306 -0.531250 +v -0.044194 1.768306 -0.531250 +v -0.044194 1.856694 -0.718750 +v -0.044194 1.856694 -0.531250 +v 0.000000 1.875000 -0.531250 +v 0.062500 1.812500 -0.531250 +v 0.000000 1.750000 -0.531250 +v -0.062500 1.812500 -0.531250 +v -0.031250 1.812500 -0.375236 +v -0.022097 1.834597 -0.375236 +v 0.022097 1.834597 -0.375236 +v 0.031250 1.812500 -0.375236 +v 0.022097 1.790403 -0.375236 +v -0.022097 1.790403 -0.375236 +v 0.000000 1.781250 -0.375236 +v 0.000000 1.812500 -0.312736 +v 0.000000 1.843750 -0.375236 +v -0.035877 1.538386 -0.781250 +v -0.086614 1.660877 -0.781250 +v 0.086614 1.660877 -0.781250 +v 0.035877 1.538386 -0.781250 +v -0.086614 1.589123 -0.781250 +v -0.035877 1.711614 -0.781250 +v 0.035877 1.711614 -0.781250 +v 0.086614 1.589123 -0.781250 +v 0.023918 1.682742 -0.718750 +v -0.023918 1.682742 -0.718750 +v -0.057742 1.648918 -0.718750 +v -0.057742 1.601082 -0.718750 +v -0.023918 1.567258 -0.718750 +v 0.057743 1.601082 -0.718750 +v 0.057743 1.648918 -0.718750 +v 0.057743 1.648918 -0.531250 +v 0.023918 1.567258 -0.718750 +v 0.023918 1.567258 -0.531250 +v -0.057742 1.601082 -0.531250 +v -0.023918 1.682742 -0.531250 +v 0.023918 1.682742 -0.531250 +v 0.057743 1.601082 -0.531250 +v -0.023918 1.567258 -0.531250 +v -0.057742 1.648918 -0.531250 +v -0.011959 1.653871 -0.375236 +v 0.011959 1.653871 -0.375236 +v 0.028871 1.636959 -0.375236 +v 0.028871 1.613041 -0.375236 +v 0.011959 1.596129 -0.375236 +v -0.011959 1.596129 -0.375236 +v -0.028871 1.636959 -0.375236 +v -0.028871 1.613041 -0.375236 +v 0.000000 1.625000 -0.312736 +v 0.000000 1.343750 -0.781250 +v -0.093750 1.437500 -0.781250 +v 0.066291 1.503791 -0.781250 +v 0.066291 1.371209 -0.781250 +v -0.066291 1.371209 -0.781250 +v -0.066291 1.503791 -0.781250 +v 0.000000 1.531250 -0.781250 +v 0.093750 1.437500 -0.781250 +v 0.044194 1.481694 -0.718750 +v -0.044194 1.481694 -0.718750 +v -0.062500 1.437500 -0.718750 +v -0.044194 1.393306 -0.718750 +v 0.000000 1.375000 -0.718750 +v 0.062500 1.437500 -0.718750 +v 0.044194 1.481694 -0.531250 +v 0.044194 1.393306 -0.718750 +v 0.044194 1.393306 -0.531250 +v -0.044194 1.393306 -0.531250 +v 0.000000 1.500000 -0.718750 +v -0.044194 1.481694 -0.531250 +v 0.000000 1.500000 -0.531250 +v 0.062500 1.437500 -0.531250 +v 0.000000 1.375000 -0.531250 +v -0.062500 1.437500 -0.531250 +v -0.022097 1.459597 -0.375236 +v 0.022097 1.459597 -0.375236 +v 0.022097 1.415403 -0.375236 +v 0.000000 1.406250 -0.375236 +v -0.031250 1.437500 -0.375236 +v -0.022097 1.415403 -0.375236 +v 0.000000 1.437500 -0.312736 +v 0.000000 1.468750 -0.375236 +v 0.031250 1.437500 -0.375236 +v -0.035877 1.163386 -0.781250 +v -0.086614 1.285877 -0.781250 +v 0.086614 1.285877 -0.781250 +v 0.035877 1.163386 -0.781250 +v -0.086614 1.214123 -0.781250 +v -0.035877 1.336614 -0.781250 +v 0.035877 1.336614 -0.781250 +v 0.086614 1.214123 -0.781250 +v 0.057742 1.273918 -0.718750 +v -0.023918 1.307743 -0.718750 +v -0.057742 1.273918 -0.718750 +v -0.057742 1.226082 -0.718750 +v -0.023918 1.192258 -0.718750 +v 0.057742 1.226082 -0.718750 +v 0.057742 1.273918 -0.531250 +v 0.023918 1.192258 -0.718750 +v 0.023918 1.192258 -0.531250 +v -0.057742 1.226082 -0.531250 +v 0.023918 1.307742 -0.718750 +v -0.023918 1.307743 -0.531250 +v 0.023918 1.307742 -0.531250 +v 0.057742 1.226082 -0.531250 +v -0.023918 1.192258 -0.531250 +v -0.057742 1.273918 -0.531250 +v -0.028871 1.261959 -0.375236 +v -0.011959 1.278871 -0.375236 +v 0.028871 1.261959 -0.375236 +v 0.028871 1.238041 -0.375236 +v 0.011959 1.221129 -0.375236 +v -0.011959 1.221129 -0.375236 +v -0.028871 1.238041 -0.375236 +v 0.000000 1.250000 -0.312736 +v 0.011959 1.278871 -0.375236 +v -0.066291 0.996209 -1.531250 +v 0.000000 0.968750 -1.531250 +v 0.000000 0.968750 -0.781250 +v -0.066291 1.128791 -1.531250 +v -0.093750 1.062500 -1.531250 +v -0.093750 1.062500 -0.781250 +v 0.093750 1.062500 -1.531250 +v 0.066291 1.128791 -1.531250 +v 0.066291 1.128791 -0.781250 +v 0.066291 0.996209 -1.531250 +v 0.066291 0.996209 -0.781250 +v -0.066291 0.996209 -0.781250 +v 0.000000 1.156250 -1.531250 +v -0.066291 1.128791 -0.781250 +v 0.000000 1.156250 -0.781250 +v 0.093750 1.062500 -0.781250 +v 0.044194 1.106694 -0.718750 +v -0.044194 1.106694 -0.718750 +v -0.062500 1.062500 -0.718750 +v -0.044194 1.018306 -0.718750 +v 0.044194 1.018306 -0.718750 +v 0.062500 1.062500 -0.718750 +v 0.044194 1.106694 -0.531250 +v 0.000000 1.000000 -0.718750 +v 0.044194 1.018306 -0.531250 +v -0.044194 1.018306 -0.531250 +v 0.000000 1.125000 -0.718750 +v -0.044194 1.106694 -0.531250 +v 0.000000 1.125000 -0.531250 +v 0.062500 1.062500 -0.531250 +v 0.000000 1.000000 -0.531250 +v -0.062500 1.062500 -0.531250 +v -0.022097 1.084597 -0.375236 +v 0.000000 1.093750 -0.375236 +v 0.031250 1.062500 -0.375236 +v 0.022097 1.040403 -0.375236 +v -0.031250 1.062500 -0.375236 +v 0.000000 1.031250 -0.375236 +v -0.022097 1.040403 -0.375236 +v 0.000000 1.062500 -0.312736 +v 0.022097 1.084597 -0.375236 +vt 0.838068 0.886364 +vt 0.838068 0.903409 +vt 0.829545 0.894886 +vt 0.832042 0.900913 +vt 0.838068 0.886364 +vt 0.838068 0.903409 +vt 0.838068 0.886364 +vt 0.838068 0.903409 +vt 0.829545 0.894886 +vt 0.838068 0.886364 +vt 0.838068 0.903409 +vt 0.829545 0.894886 +vt 0.832042 0.900913 +vt 0.838068 0.886364 +vt 0.838068 0.903409 +vt 0.832042 0.900913 +vt 0.838068 0.886364 +vt 0.838068 0.903409 +vt 0.844095 0.900913 +vt 0.846591 0.894886 +vt 0.844095 0.888860 +vt 0.832042 0.888860 +vt 0.832042 0.900913 +vt 0.844095 0.900913 +vt 0.846591 0.894886 +vt 0.844095 0.888860 +vt 0.829545 0.894886 +vt 0.832042 0.888860 +vt 0.844095 0.900913 +vt 0.846591 0.894886 +vt 0.844095 0.888860 +vt 0.832042 0.888860 +vt 0.832042 0.900913 +vt 0.844095 0.900913 +vt 0.846591 0.894886 +vt 0.844095 0.888860 +vt 0.832042 0.888860 +vt 0.832042 0.900913 +vt 0.844095 0.900913 +vt 0.846591 0.894886 +vt 0.844095 0.888860 +vt 0.829545 0.894886 +vt 0.832042 0.888860 +vt 0.844095 0.900913 +vt 0.846591 0.894886 +vt 0.844095 0.888860 +vt 0.829545 0.894886 +vt 0.832042 0.888860 +vt 0.954545 0.926136 +vt 0.954545 0.931818 +vt 0.886364 0.931818 +vt 0.954545 0.914773 +vt 0.954545 0.920455 +vt 0.886364 0.920455 +vt 0.954545 0.897727 +vt 0.954545 0.903409 +vt 0.886364 0.903409 +vt 0.954545 0.886364 +vt 0.954545 0.892045 +vt 0.886364 0.892045 +vt 0.886364 0.926136 +vt 0.954545 0.909091 +vt 0.886364 0.914773 +vt 0.886364 0.909091 +vt 0.886364 0.897727 +vt 0.880682 0.903409 +vt 0.880682 0.909091 +vt 0.880682 0.914773 +vt 0.880682 0.920455 +vt 0.880682 0.926136 +vt 0.880682 0.886364 +vt 0.886364 0.886364 +vt 0.880682 0.892045 +vt 0.880682 0.897727 +vt 0.863636 0.903409 +vt 0.863636 0.892045 +vt 0.863636 0.926136 +vt 0.863636 0.914773 +vt 0.863636 0.909091 +vt 0.863636 0.897727 +vt 0.880682 0.931818 +vt 0.863636 0.931818 +vt 0.863636 0.920455 +vt 0.852273 0.920455 +vt 0.852273 0.914773 +vt 0.852273 0.903409 +vt 0.852273 0.897727 +vt 0.852273 0.886364 +vt 0.863636 0.886364 +vt 0.852273 0.926136 +vt 0.852273 0.931818 +vt 0.846591 0.926136 +vt 0.846591 0.914773 +vt 0.852273 0.909091 +vt 0.846591 0.903409 +vt 0.852273 0.892045 +vt 0.846591 0.892045 +vt 0.954545 0.926136 +vt 0.954545 0.931818 +vt 0.886364 0.931818 +vt 0.954545 0.914773 +vt 0.954545 0.920455 +vt 0.886364 0.920455 +vt 0.954545 0.897727 +vt 0.954545 0.903409 +vt 0.886364 0.903409 +vt 0.954545 0.886364 +vt 0.954545 0.892045 +vt 0.886364 0.892045 +vt 0.886364 0.926136 +vt 0.954545 0.909091 +vt 0.886364 0.914773 +vt 0.886364 0.909091 +vt 0.886364 0.897727 +vt 0.880682 0.903409 +vt 0.880682 0.914773 +vt 0.880682 0.920455 +vt 0.880682 0.926136 +vt 0.880682 0.886364 +vt 0.886364 0.886364 +vt 0.880682 0.892045 +vt 0.880682 0.897727 +vt 0.863636 0.903409 +vt 0.863636 0.892045 +vt 0.863636 0.926136 +vt 0.880682 0.909091 +vt 0.863636 0.914773 +vt 0.863636 0.909091 +vt 0.863636 0.897727 +vt 0.880682 0.931818 +vt 0.863636 0.931818 +vt 0.863636 0.920455 +vt 0.852273 0.920455 +vt 0.852273 0.914773 +vt 0.852273 0.903409 +vt 0.852273 0.897727 +vt 0.852273 0.892045 +vt 0.863636 0.886364 +vt 0.852273 0.926136 +vt 0.852273 0.931818 +vt 0.846591 0.926136 +vt 0.846591 0.914773 +vt 0.852273 0.909091 +vt 0.846591 0.903409 +vt 0.852273 0.886364 +vt 0.846591 0.892045 +vt 0.954545 0.926136 +vt 0.954545 0.931818 +vt 0.886364 0.931818 +vt 0.954545 0.914773 +vt 0.954545 0.920455 +vt 0.886364 0.920455 +vt 0.954545 0.897727 +vt 0.954545 0.903409 +vt 0.886364 0.903409 +vt 0.954545 0.886364 +vt 0.954545 0.892045 +vt 0.886364 0.892045 +vt 0.886364 0.926136 +vt 0.954545 0.909091 +vt 0.886364 0.914773 +vt 0.886364 0.909091 +vt 0.886364 0.897727 +vt 0.880682 0.903409 +vt 0.880682 0.909091 +vt 0.880682 0.920455 +vt 0.880682 0.926136 +vt 0.886364 0.886364 +vt 0.880682 0.892045 +vt 0.880682 0.897727 +vt 0.863636 0.903409 +vt 0.880682 0.886364 +vt 0.863636 0.892045 +vt 0.863636 0.926136 +vt 0.880682 0.914773 +vt 0.863636 0.914773 +vt 0.863636 0.909091 +vt 0.863636 0.897727 +vt 0.880682 0.931818 +vt 0.863636 0.931818 +vt 0.863636 0.920455 +vt 0.852273 0.920455 +vt 0.852273 0.914773 +vt 0.852273 0.903409 +vt 0.852273 0.897727 +vt 0.852273 0.892045 +vt 0.863636 0.886364 +vt 0.852273 0.926136 +vt 0.852273 0.931818 +vt 0.846591 0.926136 +vt 0.846591 0.914773 +vt 0.852273 0.909091 +vt 0.846591 0.903409 +vt 0.852273 0.886364 +vt 0.846591 0.892045 +vt 0.954545 0.926136 +vt 0.954545 0.931818 +vt 0.886364 0.931818 +vt 0.954545 0.914773 +vt 0.954545 0.920455 +vt 0.886364 0.920455 +vt 0.954545 0.897727 +vt 0.954545 0.903409 +vt 0.886364 0.903409 +vt 0.954545 0.886364 +vt 0.954545 0.892045 +vt 0.886364 0.892045 +vt 0.886364 0.926136 +vt 0.954545 0.909091 +vt 0.886364 0.914773 +vt 0.886364 0.909091 +vt 0.886364 0.897727 +vt 0.880682 0.909091 +vt 0.880682 0.914773 +vt 0.880682 0.920455 +vt 0.880682 0.926136 +vt 0.880682 0.886364 +vt 0.886364 0.886364 +vt 0.880682 0.897727 +vt 0.880682 0.903409 +vt 0.863636 0.903409 +vt 0.880682 0.892045 +vt 0.863636 0.892045 +vt 0.863636 0.926136 +vt 0.863636 0.914773 +vt 0.863636 0.909091 +vt 0.863636 0.897727 +vt 0.880682 0.931818 +vt 0.863636 0.931818 +vt 0.863636 0.920455 +vt 0.852273 0.914773 +vt 0.852273 0.909091 +vt 0.852273 0.903409 +vt 0.852273 0.897727 +vt 0.852273 0.892045 +vt 0.852273 0.886364 +vt 0.863636 0.886364 +vt 0.852273 0.920455 +vt 0.852273 0.926136 +vt 0.852273 0.931818 +vt 0.846591 0.926136 +vt 0.846591 0.914773 +vt 0.846591 0.903409 +vt 0.846591 0.892045 +vt 0.954545 0.926136 +vt 0.954545 0.931818 +vt 0.886364 0.931818 +vt 0.954545 0.914773 +vt 0.954545 0.920455 +vt 0.886364 0.920455 +vt 0.954545 0.897727 +vt 0.954545 0.903409 +vt 0.886364 0.903409 +vt 0.954545 0.886364 +vt 0.954545 0.892045 +vt 0.886364 0.892045 +vt 0.886364 0.926136 +vt 0.954545 0.909091 +vt 0.886364 0.914773 +vt 0.886364 0.909091 +vt 0.886364 0.897727 +vt 0.880682 0.903409 +vt 0.880682 0.914773 +vt 0.880682 0.920455 +vt 0.880682 0.926136 +vt 0.880682 0.886364 +vt 0.886364 0.886364 +vt 0.880682 0.897727 +vt 0.863636 0.903409 +vt 0.880682 0.892045 +vt 0.863636 0.892045 +vt 0.863636 0.926136 +vt 0.880682 0.909091 +vt 0.863636 0.914773 +vt 0.863636 0.909091 +vt 0.863636 0.897727 +vt 0.880682 0.931818 +vt 0.863636 0.931818 +vt 0.863636 0.920455 +vt 0.852273 0.914773 +vt 0.852273 0.903409 +vt 0.852273 0.892045 +vt 0.852273 0.886364 +vt 0.863636 0.886364 +vt 0.852273 0.920455 +vt 0.852273 0.931818 +vt 0.852273 0.926136 +vt 0.846591 0.926136 +vt 0.846591 0.914773 +vt 0.852273 0.909091 +vt 0.846591 0.903409 +vt 0.852273 0.897727 +vt 0.846591 0.892045 +vt 0.954545 0.926136 +vt 0.954545 0.931818 +vt 0.886364 0.931818 +vt 0.954545 0.914773 +vt 0.954545 0.920455 +vt 0.886364 0.920455 +vt 0.954545 0.897727 +vt 0.954545 0.903409 +vt 0.886364 0.903409 +vt 0.954545 0.886364 +vt 0.954545 0.892045 +vt 0.886364 0.892045 +vt 0.886364 0.926136 +vt 0.954545 0.909091 +vt 0.886364 0.914773 +vt 0.886364 0.909091 +vt 0.886364 0.897727 +vt 0.880682 0.903409 +vt 0.880682 0.914773 +vt 0.880682 0.920455 +vt 0.880682 0.926136 +vt 0.880682 0.886364 +vt 0.886364 0.886364 +vt 0.880682 0.897727 +vt 0.863636 0.903409 +vt 0.880682 0.892045 +vt 0.863636 0.892045 +vt 0.863636 0.926136 +vt 0.880682 0.909091 +vt 0.863636 0.914773 +vt 0.863636 0.909091 +vt 0.863636 0.897727 +vt 0.880682 0.931818 +vt 0.863636 0.931818 +vt 0.863636 0.920455 +vt 0.852273 0.920455 +vt 0.852273 0.914773 +vt 0.852273 0.903409 +vt 0.852273 0.897727 +vt 0.852273 0.892045 +vt 0.852273 0.886364 +vt 0.863636 0.886364 +vt 0.852273 0.926136 +vt 0.852273 0.931818 +vt 0.846591 0.926136 +vt 0.846591 0.914773 +vt 0.852273 0.909091 +vt 0.846591 0.903409 +vt 0.846591 0.892045 +vt 0.954545 0.926136 +vt 0.954545 0.931818 +vt 0.886364 0.931818 +vt 0.954545 0.914773 +vt 0.954545 0.920455 +vt 0.886364 0.920455 +vt 0.954545 0.897727 +vt 0.954545 0.903409 +vt 0.886364 0.903409 +vt 0.954545 0.886364 +vt 0.954545 0.892045 +vt 0.886364 0.892045 +vt 0.886364 0.926136 +vt 0.954545 0.909091 +vt 0.886364 0.914773 +vt 0.886364 0.909091 +vt 0.886364 0.897727 +vt 0.880682 0.903409 +vt 0.880682 0.914773 +vt 0.880682 0.920455 +vt 0.880682 0.926136 +vt 0.886364 0.886364 +vt 0.880682 0.892045 +vt 0.880682 0.897727 +vt 0.863636 0.903409 +vt 0.880682 0.886364 +vt 0.863636 0.892045 +vt 0.863636 0.926136 +vt 0.880682 0.909091 +vt 0.863636 0.914773 +vt 0.863636 0.909091 +vt 0.863636 0.897727 +vt 0.880682 0.931818 +vt 0.863636 0.931818 +vt 0.863636 0.920455 +vt 0.852273 0.914773 +vt 0.852273 0.909091 +vt 0.852273 0.897727 +vt 0.852273 0.892045 +vt 0.863636 0.886364 +vt 0.852273 0.920455 +vt 0.852273 0.931818 +vt 0.852273 0.926136 +vt 0.846591 0.926136 +vt 0.846591 0.914773 +vt 0.852273 0.903409 +vt 0.846591 0.903409 +vt 0.852273 0.886364 +vt 0.846591 0.892045 +vn 0.0000 0.0000 -1.0000 +vn -0.7071 -0.7071 0.0000 +vn -0.0000 -1.0000 0.0000 +vn -0.7071 0.7071 0.0000 +vn -1.0000 -0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.6325 0.6325 0.4472 +vn 0.0000 0.8944 0.4472 +vn -0.6325 0.6325 0.4472 +vn -0.8944 0.0000 0.4472 +vn -0.6325 -0.6325 0.4472 +vn -0.0000 -0.8944 0.4472 +vn 0.6325 -0.6325 0.4472 +vn 0.8944 0.0000 0.4472 +vn 0.7038 0.7038 0.0964 +vn 0.7038 -0.7038 0.0964 +vn -0.7038 -0.7038 0.0964 +vn -0.7038 0.7038 0.0964 +vn 0.0000 0.9953 0.0964 +vn 0.9953 0.0000 0.0964 +vn 0.0000 -0.9953 0.0964 +vn -0.9953 -0.0000 0.0964 +vn -0.9490 -0.0000 0.3151 +vn -0.6711 0.6711 0.3151 +vn 0.6711 0.6711 0.3151 +vn 0.9490 0.0000 0.3151 +vn 0.0000 -0.9490 0.3151 +vn -0.6711 -0.6711 0.3151 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.9490 0.3151 +vn 0.6711 -0.6711 0.3151 +vn -0.9239 -0.3827 0.0000 +vn -0.3827 -0.9239 -0.0000 +vn -0.3827 0.9239 0.0000 +vn -0.9239 0.3827 0.0000 +vn 0.9239 -0.3827 0.0000 +vn 0.9239 0.3827 0.0000 +vn 0.3827 -0.9239 0.0000 +vn 0.3827 0.9239 0.0000 +vn 0.8263 0.3423 0.4472 +vn 0.3423 0.8263 0.4472 +vn -0.3423 0.8263 0.4472 +vn -0.8263 0.3423 0.4472 +vn -0.8263 -0.3423 0.4472 +vn -0.3423 -0.8263 0.4472 +vn 0.3423 -0.8263 0.4472 +vn 0.8263 -0.3423 0.4472 +vn 0.9196 0.3809 0.0964 +vn 0.3809 -0.9196 0.0964 +vn -0.9196 -0.3809 0.0964 +vn -0.3809 0.9196 0.0964 +vn 0.3809 0.9196 0.0964 +vn 0.9196 -0.3809 0.0964 +vn -0.3809 -0.9196 0.0964 +vn -0.9196 0.3809 0.0964 +vn -0.8768 0.3632 0.3151 +vn -0.3632 0.8768 0.3151 +vn 0.8768 0.3632 0.3151 +vn 0.8768 -0.3632 0.3151 +vn 0.3632 -0.8768 0.3151 +vn -0.8768 -0.3632 0.3151 +vn -0.3632 -0.8768 0.3151 +vn 0.3632 0.8768 0.3151 +s off +f 1197/2088/583 1198/2089/583 1199/2090/583 +f 1200/2091/583 1201/2092/583 1202/2093/583 +f 1203/2094/583 1204/2095/583 1205/2096/583 +f 1206/2097/583 1207/2098/583 1208/2099/583 +f 1209/2100/583 1210/2101/583 1211/2102/583 +f 1212/2103/583 1213/2104/583 1214/2105/583 +f 1198/2089/583 1197/2088/583 1215/2106/583 +f 1215/2106/583 1197/2088/583 1216/2107/583 +f 1216/2107/583 1197/2088/583 1217/2108/583 +f 1197/2088/583 1199/2090/583 1218/2109/583 +f 1199/2090/583 1198/2089/583 1219/2110/583 +f 1202/2093/583 1201/2092/583 1220/2111/583 +f 1220/2111/583 1201/2092/583 1221/2112/583 +f 1221/2112/583 1201/2092/583 1222/2113/583 +f 1201/2092/583 1223/2114/583 1224/2115/583 +f 1223/2114/583 1201/2092/583 1200/2091/583 +f 1204/2095/583 1203/2094/583 1225/2116/583 +f 1225/2116/583 1203/2094/583 1226/2117/583 +f 1226/2117/583 1203/2094/583 1227/2118/583 +f 1203/2094/583 1205/2096/583 1228/2119/583 +f 1205/2096/583 1204/2095/583 1229/2120/583 +f 1207/2098/583 1206/2097/583 1230/2121/583 +f 1230/2121/583 1206/2097/583 1231/2122/583 +f 1231/2122/583 1206/2097/583 1232/2123/583 +f 1206/2097/583 1208/2099/583 1233/2124/583 +f 1208/2099/583 1207/2098/583 1234/2125/583 +f 1211/2102/583 1210/2101/583 1235/2126/583 +f 1235/2126/583 1210/2101/583 1236/2127/583 +f 1236/2127/583 1210/2101/583 1237/2128/583 +f 1210/2101/583 1238/2129/583 1239/2130/583 +f 1238/2129/583 1210/2101/583 1209/2100/583 +f 1214/2105/583 1213/2104/583 1240/2131/583 +f 1240/2131/583 1213/2104/583 1241/2132/583 +f 1241/2132/583 1213/2104/583 1242/2133/583 +f 1213/2104/583 1243/2134/583 1244/2135/583 +f 1243/2134/583 1213/2104/583 1212/2103/583 +s 1 +f 1217/2136/584 1197/2137/585 1245/2138/585 +f 1215/2139/586 1216/2140/587 1246/2141/587 +f 1199/2142/588 1219/2143/589 1247/2144/589 +f 1197/2145/585 1218/2146/590 1248/2147/590 +f 1216/2140/587 1217/2136/584 1249/2148/584 +f 1198/2149/591 1215/2139/586 1250/2150/586 +f 1219/2143/589 1198/2149/591 1251/2151/591 +f 1218/2146/590 1199/2142/588 1252/2152/588 +f 1253/2153/592 1247/2144/592 1251/2151/593 +f 1254/2154/593 1251/2151/593 1250/2150/594 +f 1255/2155/594 1250/2150/594 1246/2141/595 +f 1256/2156/595 1246/2141/595 1249/2148/596 +f 1257/2157/596 1249/2148/596 1245/2138/597 +f 1258/2158/597 1245/2159/597 1248/2147/598 +f 1259/2160/598 1248/2147/598 1252/2152/599 +f 1252/2152/599 1247/2144/592 1253/2153/592 +f 1260/2161/588 1253/2153/589 1261/2162/600 +f 1258/2158/585 1259/2160/590 1262/2163/601 +f 1256/2156/587 1257/2157/584 1263/2164/602 +f 1254/2154/591 1255/2155/586 1264/2165/603 +f 1253/2153/589 1254/2154/591 1265/2166/604 +f 1259/2160/590 1260/2161/588 1266/2167/605 +f 1257/2157/584 1258/2168/585 1267/2169/606 +f 1255/2155/586 1256/2156/587 1268/2170/607 +f 1264/2165/603 1268/2170/607 1269/2171/608 +f 1265/2166/604 1264/2165/603 1270/2172/609 +f 1271/2173/610 1261/2162/600 1265/2166/604 +f 1272/2174/611 1266/2167/605 1261/2162/600 +f 1262/2163/601 1266/2167/605 1272/2174/611 +f 1273/2175/612 1267/2176/606 1262/2163/601 +f 1269/2171/608 1268/2170/607 1263/2164/602 +f 1274/2177/613 1263/2164/602 1267/2169/606 +f 1274/2177/613 1273/2178/612 1275/2179/614 +f 1269/2171/608 1274/2177/613 1275/2179/614 +f 1270/2172/609 1269/2171/608 1275/2180/614 +f 1276/2181/615 1270/2172/609 1275/2180/614 +f 1271/2173/610 1276/2181/615 1275/2182/614 +f 1272/2174/611 1271/2173/610 1275/2182/614 +f 1273/2175/612 1277/2183/616 1275/2184/614 +f 1277/2183/616 1272/2174/611 1275/2184/614 +f 1222/2185/617 1201/2186/618 1278/2187/618 +f 1220/2188/619 1221/2189/620 1279/2190/620 +f 1223/2191/621 1200/2192/622 1280/2193/622 +f 1201/2194/618 1224/2195/623 1281/2196/623 +f 1221/2189/620 1222/2185/617 1282/2197/617 +f 1202/2198/624 1220/2188/619 1283/2199/619 +f 1200/2192/622 1202/2198/624 1284/2200/624 +f 1224/2195/623 1223/2191/621 1285/2201/621 +f 1286/2202/625 1280/2193/625 1284/2200/626 +f 1284/2200/626 1283/2199/627 1287/2203/627 +f 1283/2199/627 1279/2190/628 1288/2204/628 +f 1288/2204/628 1279/2190/628 1282/2197/629 +f 1289/2205/629 1282/2197/629 1278/2187/630 +f 1290/2206/630 1278/2207/630 1281/2196/631 +f 1291/2208/631 1281/2196/631 1285/2201/632 +f 1292/2209/632 1285/2201/632 1280/2193/625 +f 1292/2209/621 1286/2202/622 1293/2210/633 +f 1290/2206/618 1291/2208/623 1294/2211/634 +f 1288/2204/620 1289/2205/617 1295/2212/635 +f 1296/2213/624 1287/2203/619 1297/2214/636 +f 1286/2202/622 1296/2213/624 1298/2215/637 +f 1291/2208/623 1292/2209/621 1299/2216/638 +f 1290/2217/618 1300/2218/639 1295/2212/635 +f 1287/2203/619 1288/2204/620 1301/2219/640 +f 1297/2214/636 1301/2219/640 1302/2220/641 +f 1298/2215/637 1297/2214/636 1303/2221/642 +f 1304/2222/643 1293/2210/633 1298/2215/637 +f 1305/2223/644 1299/2216/638 1293/2210/633 +f 1306/2224/645 1294/2211/634 1299/2216/638 +f 1300/2225/639 1294/2211/634 1306/2224/645 +f 1301/2219/640 1295/2212/635 1307/2226/646 +f 1295/2212/635 1300/2218/639 1308/2227/647 +f 1307/2226/646 1308/2227/647 1309/2228/614 +f 1302/2220/641 1307/2226/646 1309/2228/614 +f 1303/2221/642 1302/2220/641 1309/2229/614 +f 1310/2230/648 1303/2221/642 1309/2229/614 +f 1304/2222/643 1310/2230/648 1309/2231/614 +f 1305/2223/644 1304/2222/643 1309/2231/614 +f 1308/2232/647 1306/2224/645 1309/2233/614 +f 1306/2224/645 1305/2223/644 1309/2233/614 +f 1227/2234/584 1203/2235/585 1311/2236/585 +f 1225/2237/586 1226/2238/587 1312/2239/587 +f 1205/2240/588 1229/2241/589 1313/2242/589 +f 1203/2243/585 1228/2244/590 1314/2245/590 +f 1226/2238/587 1227/2234/584 1315/2246/584 +f 1204/2247/591 1225/2237/586 1316/2248/586 +f 1229/2241/589 1204/2247/591 1317/2249/591 +f 1228/2244/590 1205/2240/588 1318/2250/588 +f 1319/2251/592 1313/2242/592 1317/2249/593 +f 1320/2252/593 1317/2249/593 1316/2248/594 +f 1316/2248/594 1312/2239/595 1321/2253/595 +f 1321/2253/595 1312/2239/595 1315/2246/596 +f 1322/2254/596 1315/2246/596 1311/2236/597 +f 1311/2255/597 1314/2245/598 1323/2256/598 +f 1323/2256/598 1314/2245/598 1318/2250/599 +f 1324/2257/599 1318/2250/599 1313/2242/592 +f 1324/2257/588 1319/2251/589 1325/2258/600 +f 1326/2259/585 1323/2256/590 1327/2260/601 +f 1321/2253/587 1322/2254/584 1328/2261/602 +f 1320/2252/591 1329/2262/586 1330/2263/603 +f 1319/2251/589 1320/2252/591 1331/2264/604 +f 1323/2256/590 1324/2257/588 1332/2265/605 +f 1322/2254/584 1326/2266/585 1333/2267/606 +f 1329/2262/586 1321/2253/587 1334/2268/607 +f 1330/2263/603 1334/2268/607 1335/2269/608 +f 1331/2264/604 1330/2263/603 1336/2270/609 +f 1337/2271/610 1325/2258/600 1331/2264/604 +f 1338/2272/611 1332/2265/605 1325/2258/600 +f 1339/2273/616 1327/2260/601 1332/2265/605 +f 1333/2274/606 1327/2260/601 1339/2273/616 +f 1335/2269/608 1334/2268/607 1328/2261/602 +f 1340/2275/613 1328/2261/602 1333/2267/606 +f 1340/2275/613 1341/2276/612 1342/2277/614 +f 1335/2269/608 1340/2275/613 1342/2277/614 +f 1336/2270/609 1335/2269/608 1342/2278/614 +f 1343/2279/615 1336/2270/609 1342/2278/614 +f 1337/2271/610 1343/2279/615 1342/2280/614 +f 1338/2272/611 1337/2271/610 1342/2280/614 +f 1341/2281/612 1339/2273/616 1342/2282/614 +f 1339/2273/616 1338/2272/611 1342/2282/614 +f 1232/2283/617 1206/2284/618 1344/2285/618 +f 1230/2286/619 1231/2287/620 1345/2288/620 +f 1208/2289/621 1234/2290/622 1346/2291/622 +f 1206/2292/618 1233/2293/623 1347/2294/623 +f 1231/2287/620 1232/2283/617 1348/2295/617 +f 1207/2296/624 1230/2286/619 1349/2297/619 +f 1234/2290/622 1207/2296/624 1350/2298/624 +f 1233/2293/623 1208/2289/621 1351/2299/621 +f 1346/2291/625 1350/2298/626 1352/2300/626 +f 1350/2298/626 1349/2297/627 1353/2301/627 +f 1353/2301/627 1349/2297/627 1345/2288/628 +f 1354/2302/628 1345/2288/628 1348/2295/629 +f 1355/2303/629 1348/2295/629 1344/2285/630 +f 1356/2304/630 1344/2305/630 1347/2294/631 +f 1347/2294/631 1351/2299/632 1357/2306/632 +f 1351/2299/632 1346/2291/625 1358/2307/625 +f 1357/2306/621 1358/2307/622 1359/2308/633 +f 1356/2304/618 1360/2309/623 1361/2310/634 +f 1354/2302/620 1355/2303/617 1362/2311/635 +f 1352/2300/624 1353/2301/619 1363/2312/636 +f 1358/2307/622 1352/2300/624 1364/2313/637 +f 1360/2309/623 1357/2306/621 1365/2314/638 +f 1355/2303/617 1356/2315/618 1366/2316/639 +f 1353/2301/619 1354/2302/620 1367/2317/640 +f 1368/2318/642 1363/2312/636 1367/2317/640 +f 1369/2319/648 1364/2313/637 1363/2312/636 +f 1370/2320/643 1359/2308/633 1364/2313/637 +f 1371/2321/644 1365/2314/638 1359/2308/633 +f 1372/2322/645 1361/2310/634 1365/2314/638 +f 1373/2323/647 1366/2324/639 1361/2310/634 +f 1374/2325/641 1367/2317/640 1362/2311/635 +f 1375/2326/646 1362/2311/635 1366/2316/639 +f 1375/2326/646 1373/2327/647 1376/2328/614 +f 1374/2325/641 1375/2326/646 1376/2328/614 +f 1368/2318/642 1374/2325/641 1376/2329/614 +f 1369/2319/648 1368/2318/642 1376/2329/614 +f 1370/2320/643 1369/2319/648 1376/2330/614 +f 1371/2321/644 1370/2320/643 1376/2330/614 +f 1373/2323/647 1372/2322/645 1376/2331/614 +f 1372/2322/645 1371/2321/644 1376/2331/614 +f 1237/2332/584 1210/2333/585 1377/2334/585 +f 1235/2335/586 1236/2336/587 1378/2337/587 +f 1238/2338/588 1209/2339/589 1379/2340/589 +f 1210/2341/585 1239/2342/590 1380/2343/590 +f 1236/2336/587 1237/2332/584 1381/2344/584 +f 1211/2345/591 1235/2335/586 1382/2346/586 +f 1209/2339/589 1211/2345/591 1383/2347/591 +f 1239/2342/590 1238/2338/588 1384/2348/588 +f 1385/2349/592 1379/2340/592 1383/2347/593 +f 1383/2347/593 1382/2346/594 1386/2350/594 +f 1382/2346/594 1378/2337/595 1387/2351/595 +f 1387/2351/595 1378/2337/595 1381/2344/596 +f 1388/2352/596 1381/2344/596 1377/2334/597 +f 1389/2353/597 1377/2354/597 1380/2343/598 +f 1380/2343/598 1384/2348/599 1390/2355/599 +f 1390/2355/599 1384/2348/599 1379/2340/592 +f 1390/2355/588 1385/2349/589 1391/2356/600 +f 1389/2353/585 1392/2357/590 1393/2358/601 +f 1387/2351/587 1388/2352/584 1394/2359/602 +f 1395/2360/591 1386/2350/586 1396/2361/603 +f 1385/2349/589 1395/2360/591 1397/2362/604 +f 1392/2357/590 1390/2355/588 1398/2363/605 +f 1389/2364/585 1399/2365/606 1394/2359/602 +f 1387/2351/587 1400/2366/607 1396/2361/603 +f 1401/2367/609 1396/2361/603 1400/2366/607 +f 1397/2362/604 1396/2361/603 1401/2367/609 +f 1402/2368/610 1391/2356/600 1397/2362/604 +f 1398/2363/605 1391/2356/600 1402/2368/610 +f 1403/2369/616 1393/2358/601 1398/2363/605 +f 1404/2370/612 1399/2371/606 1393/2358/601 +f 1405/2372/608 1400/2366/607 1394/2359/602 +f 1394/2359/602 1399/2365/606 1404/2373/612 +f 1406/2374/613 1404/2373/612 1407/2375/614 +f 1405/2372/608 1406/2374/613 1407/2375/614 +f 1401/2367/609 1405/2372/608 1407/2376/614 +f 1408/2377/615 1401/2367/609 1407/2376/614 +f 1402/2368/610 1408/2377/615 1407/2378/614 +f 1409/2379/611 1402/2368/610 1407/2378/614 +f 1404/2370/612 1403/2369/616 1407/2380/614 +f 1403/2369/616 1409/2379/611 1407/2380/614 +f 1242/2381/617 1213/2382/618 1410/2383/618 +f 1240/2384/619 1241/2385/620 1411/2386/620 +f 1243/2387/621 1212/2388/622 1412/2389/622 +f 1213/2390/618 1244/2391/623 1413/2392/623 +f 1241/2385/620 1242/2381/617 1414/2393/617 +f 1214/2394/624 1240/2384/619 1415/2395/619 +f 1212/2388/622 1214/2394/624 1416/2396/624 +f 1244/2391/623 1243/2387/621 1417/2397/621 +f 1418/2398/625 1412/2389/625 1416/2396/626 +f 1416/2396/626 1415/2395/627 1419/2399/627 +f 1415/2395/627 1411/2386/628 1420/2400/628 +f 1420/2400/628 1411/2386/628 1414/2393/629 +f 1421/2401/629 1414/2393/629 1410/2383/630 +f 1422/2402/630 1410/2403/630 1413/2392/631 +f 1413/2392/631 1417/2397/632 1423/2404/632 +f 1423/2404/632 1417/2397/632 1412/2389/625 +f 1423/2404/621 1418/2398/622 1424/2405/633 +f 1422/2402/618 1425/2406/623 1426/2407/634 +f 1420/2400/620 1421/2401/617 1427/2408/635 +f 1428/2409/624 1419/2399/619 1429/2410/636 +f 1418/2398/622 1428/2409/624 1430/2411/637 +f 1425/2406/623 1423/2404/621 1431/2412/638 +f 1421/2401/617 1422/2413/618 1432/2414/639 +f 1420/2400/620 1433/2415/640 1429/2410/636 +f 1429/2410/636 1433/2415/640 1434/2416/641 +f 1430/2411/637 1429/2410/636 1435/2417/642 +f 1436/2418/643 1424/2405/633 1430/2411/637 +f 1437/2419/644 1431/2412/638 1424/2405/633 +f 1438/2420/645 1426/2407/634 1431/2412/638 +f 1439/2421/647 1432/2422/639 1426/2407/634 +f 1434/2416/641 1433/2415/640 1427/2408/635 +f 1440/2423/646 1427/2408/635 1432/2414/639 +f 1440/2423/646 1439/2424/647 1441/2425/614 +f 1434/2416/641 1440/2423/646 1441/2425/614 +f 1435/2417/642 1434/2416/641 1441/2426/614 +f 1442/2427/648 1435/2417/642 1441/2426/614 +f 1436/2418/643 1442/2427/648 1441/2428/614 +f 1437/2419/644 1436/2418/643 1441/2428/614 +f 1439/2421/647 1438/2420/645 1441/2429/614 +f 1438/2420/645 1437/2419/644 1441/2429/614 +f 1443/2430/584 1444/2431/585 1445/2432/585 +f 1446/2433/586 1447/2434/587 1448/2435/587 +f 1449/2436/588 1450/2437/589 1451/2438/589 +f 1444/2439/585 1452/2440/590 1453/2441/590 +f 1447/2434/587 1443/2430/584 1454/2442/584 +f 1455/2443/591 1446/2433/586 1456/2444/586 +f 1450/2437/589 1455/2443/591 1457/2445/591 +f 1452/2440/590 1449/2436/588 1458/2446/588 +f 1459/2447/592 1451/2438/592 1457/2445/593 +f 1457/2445/593 1456/2444/594 1460/2448/594 +f 1460/2448/594 1456/2444/594 1448/2435/595 +f 1461/2449/595 1448/2435/595 1454/2442/596 +f 1462/2450/596 1454/2442/596 1445/2432/597 +f 1445/2451/597 1453/2441/598 1463/2452/598 +f 1453/2441/598 1458/2446/599 1464/2453/599 +f 1458/2446/599 1451/2438/592 1459/2447/592 +f 1464/2453/588 1459/2447/589 1465/2454/600 +f 1466/2455/585 1463/2452/590 1467/2456/601 +f 1461/2449/587 1462/2450/584 1468/2457/602 +f 1469/2458/591 1460/2448/586 1470/2459/603 +f 1459/2447/589 1469/2458/591 1471/2460/604 +f 1464/2453/588 1472/2461/605 1467/2456/601 +f 1462/2450/584 1466/2462/585 1473/2463/606 +f 1460/2448/586 1461/2449/587 1474/2464/607 +f 1475/2465/609 1470/2459/603 1474/2464/607 +f 1476/2466/615 1471/2460/604 1470/2459/603 +f 1465/2454/600 1471/2460/604 1476/2466/615 +f 1477/2467/611 1472/2461/605 1465/2454/600 +f 1478/2468/616 1467/2456/601 1472/2461/605 +f 1473/2469/606 1467/2456/601 1478/2468/616 +f 1479/2470/608 1474/2464/607 1468/2457/602 +f 1468/2457/602 1473/2463/606 1480/2471/612 +f 1481/2472/613 1480/2471/612 1482/2473/614 +f 1479/2470/608 1481/2472/613 1482/2473/614 +f 1475/2465/609 1479/2470/608 1482/2474/614 +f 1476/2466/615 1475/2465/609 1482/2474/614 +f 1483/2475/610 1476/2466/615 1482/2476/614 +f 1477/2467/611 1483/2475/610 1482/2476/614 +f 1480/2477/612 1478/2468/616 1482/2478/614 +f 1478/2468/616 1477/2467/611 1482/2478/614 +f 1217/2136/584 1245/2138/585 1249/2148/584 +f 1215/2139/586 1246/2141/587 1250/2150/586 +f 1199/2142/588 1247/2144/589 1252/2152/588 +f 1197/2145/585 1248/2147/590 1245/2159/585 +f 1216/2140/587 1249/2148/584 1246/2141/587 +f 1198/2149/591 1250/2150/586 1251/2151/591 +f 1219/2143/589 1251/2151/591 1247/2144/589 +f 1218/2146/590 1252/2152/588 1248/2147/590 +f 1253/2153/592 1251/2151/593 1254/2154/593 +f 1254/2154/593 1250/2150/594 1255/2155/594 +f 1255/2155/594 1246/2141/595 1256/2156/595 +f 1256/2156/595 1249/2148/596 1257/2157/596 +f 1257/2157/596 1245/2138/597 1258/2168/597 +f 1258/2158/597 1248/2147/598 1259/2160/598 +f 1259/2160/598 1252/2152/599 1260/2161/599 +f 1252/2152/599 1253/2153/592 1260/2161/599 +f 1260/2161/588 1261/2162/600 1266/2167/605 +f 1258/2158/585 1262/2163/601 1267/2176/606 +f 1256/2156/587 1263/2164/602 1268/2170/607 +f 1254/2154/591 1264/2165/603 1265/2166/604 +f 1253/2153/589 1265/2166/604 1261/2162/600 +f 1259/2160/590 1266/2167/605 1262/2163/601 +f 1257/2157/584 1267/2169/606 1263/2164/602 +f 1255/2155/586 1268/2170/607 1264/2165/603 +f 1264/2165/603 1269/2171/608 1270/2172/609 +f 1265/2166/604 1270/2172/609 1276/2181/615 +f 1271/2173/610 1265/2166/604 1276/2181/615 +f 1272/2174/611 1261/2162/600 1271/2173/610 +f 1262/2163/601 1272/2174/611 1277/2183/616 +f 1273/2175/612 1262/2163/601 1277/2183/616 +f 1269/2171/608 1263/2164/602 1274/2177/613 +f 1274/2177/613 1267/2169/606 1273/2178/612 +f 1222/2185/617 1278/2187/618 1282/2197/617 +f 1220/2188/619 1279/2190/620 1283/2199/619 +f 1223/2191/621 1280/2193/622 1285/2201/621 +f 1201/2194/618 1281/2196/623 1278/2207/618 +f 1221/2189/620 1282/2197/617 1279/2190/620 +f 1202/2198/624 1283/2199/619 1284/2200/624 +f 1200/2192/622 1284/2200/624 1280/2193/622 +f 1224/2195/623 1285/2201/621 1281/2196/623 +f 1286/2202/625 1284/2200/626 1296/2213/626 +f 1284/2200/626 1287/2203/627 1296/2213/626 +f 1283/2199/627 1288/2204/628 1287/2203/627 +f 1288/2204/628 1282/2197/629 1289/2205/629 +f 1289/2205/629 1278/2187/630 1290/2217/630 +f 1290/2206/630 1281/2196/631 1291/2208/631 +f 1291/2208/631 1285/2201/632 1292/2209/632 +f 1292/2209/632 1280/2193/625 1286/2202/625 +f 1292/2209/621 1293/2210/633 1299/2216/638 +f 1290/2206/618 1294/2211/634 1300/2225/639 +f 1288/2204/620 1295/2212/635 1301/2219/640 +f 1296/2213/624 1297/2214/636 1298/2215/637 +f 1286/2202/622 1298/2215/637 1293/2210/633 +f 1291/2208/623 1299/2216/638 1294/2211/634 +f 1290/2217/618 1295/2212/635 1289/2205/617 +f 1287/2203/619 1301/2219/640 1297/2214/636 +f 1297/2214/636 1302/2220/641 1303/2221/642 +f 1298/2215/637 1303/2221/642 1310/2230/648 +f 1304/2222/643 1298/2215/637 1310/2230/648 +f 1305/2223/644 1293/2210/633 1304/2222/643 +f 1306/2224/645 1299/2216/638 1305/2223/644 +f 1300/2225/639 1306/2224/645 1308/2232/647 +f 1301/2219/640 1307/2226/646 1302/2220/641 +f 1295/2212/635 1308/2227/647 1307/2226/646 +f 1227/2234/584 1311/2236/585 1315/2246/584 +f 1225/2237/586 1312/2239/587 1316/2248/586 +f 1205/2240/588 1313/2242/589 1318/2250/588 +f 1203/2243/585 1314/2245/590 1311/2255/585 +f 1226/2238/587 1315/2246/584 1312/2239/587 +f 1204/2247/591 1316/2248/586 1317/2249/591 +f 1229/2241/589 1317/2249/591 1313/2242/589 +f 1228/2244/590 1318/2250/588 1314/2245/590 +f 1319/2251/592 1317/2249/593 1320/2252/593 +f 1320/2252/593 1316/2248/594 1329/2262/594 +f 1316/2248/594 1321/2253/595 1329/2262/594 +f 1321/2253/595 1315/2246/596 1322/2254/596 +f 1322/2254/596 1311/2236/597 1326/2266/597 +f 1311/2255/597 1323/2256/598 1326/2259/597 +f 1323/2256/598 1318/2250/599 1324/2257/599 +f 1324/2257/599 1313/2242/592 1319/2251/592 +f 1324/2257/588 1325/2258/600 1332/2265/605 +f 1326/2259/585 1327/2260/601 1333/2274/606 +f 1321/2253/587 1328/2261/602 1334/2268/607 +f 1320/2252/591 1330/2263/603 1331/2264/604 +f 1319/2251/589 1331/2264/604 1325/2258/600 +f 1323/2256/590 1332/2265/605 1327/2260/601 +f 1322/2254/584 1333/2267/606 1328/2261/602 +f 1329/2262/586 1334/2268/607 1330/2263/603 +f 1330/2263/603 1335/2269/608 1336/2270/609 +f 1331/2264/604 1336/2270/609 1343/2279/615 +f 1337/2271/610 1331/2264/604 1343/2279/615 +f 1338/2272/611 1325/2258/600 1337/2271/610 +f 1339/2273/616 1332/2265/605 1338/2272/611 +f 1333/2274/606 1339/2273/616 1341/2281/612 +f 1335/2269/608 1328/2261/602 1340/2275/613 +f 1340/2275/613 1333/2267/606 1341/2276/612 +f 1232/2283/617 1344/2285/618 1348/2295/617 +f 1230/2286/619 1345/2288/620 1349/2297/619 +f 1208/2289/621 1346/2291/622 1351/2299/621 +f 1206/2292/618 1347/2294/623 1344/2305/618 +f 1231/2287/620 1348/2295/617 1345/2288/620 +f 1207/2296/624 1349/2297/619 1350/2298/624 +f 1234/2290/622 1350/2298/624 1346/2291/622 +f 1233/2293/623 1351/2299/621 1347/2294/623 +f 1346/2291/625 1352/2300/626 1358/2307/625 +f 1350/2298/626 1353/2301/627 1352/2300/626 +f 1353/2301/627 1345/2288/628 1354/2302/628 +f 1354/2302/628 1348/2295/629 1355/2303/629 +f 1355/2303/629 1344/2285/630 1356/2315/630 +f 1356/2304/630 1347/2294/631 1360/2309/631 +f 1347/2294/631 1357/2306/632 1360/2309/631 +f 1351/2299/632 1358/2307/625 1357/2306/632 +f 1357/2306/621 1359/2308/633 1365/2314/638 +f 1356/2304/618 1361/2310/634 1366/2324/639 +f 1354/2302/620 1362/2311/635 1367/2317/640 +f 1352/2300/624 1363/2312/636 1364/2313/637 +f 1358/2307/622 1364/2313/637 1359/2308/633 +f 1360/2309/623 1365/2314/638 1361/2310/634 +f 1355/2303/617 1366/2316/639 1362/2311/635 +f 1353/2301/619 1367/2317/640 1363/2312/636 +f 1368/2318/642 1367/2317/640 1374/2325/641 +f 1369/2319/648 1363/2312/636 1368/2318/642 +f 1370/2320/643 1364/2313/637 1369/2319/648 +f 1371/2321/644 1359/2308/633 1370/2320/643 +f 1372/2322/645 1365/2314/638 1371/2321/644 +f 1373/2323/647 1361/2310/634 1372/2322/645 +f 1374/2325/641 1362/2311/635 1375/2326/646 +f 1375/2326/646 1366/2316/639 1373/2327/647 +f 1237/2332/584 1377/2334/585 1381/2344/584 +f 1235/2335/586 1378/2337/587 1382/2346/586 +f 1238/2338/588 1379/2340/589 1384/2348/588 +f 1210/2341/585 1380/2343/590 1377/2354/585 +f 1236/2336/587 1381/2344/584 1378/2337/587 +f 1211/2345/591 1382/2346/586 1383/2347/591 +f 1209/2339/589 1383/2347/591 1379/2340/589 +f 1239/2342/590 1384/2348/588 1380/2343/590 +f 1385/2349/592 1383/2347/593 1395/2360/593 +f 1383/2347/593 1386/2350/594 1395/2360/593 +f 1382/2346/594 1387/2351/595 1386/2350/594 +f 1387/2351/595 1381/2344/596 1388/2352/596 +f 1388/2352/596 1377/2334/597 1389/2364/597 +f 1389/2353/597 1380/2343/598 1392/2357/598 +f 1380/2343/598 1390/2355/599 1392/2357/598 +f 1390/2355/599 1379/2340/592 1385/2349/592 +f 1390/2355/588 1391/2356/600 1398/2363/605 +f 1389/2353/585 1393/2358/601 1399/2371/606 +f 1387/2351/587 1394/2359/602 1400/2366/607 +f 1395/2360/591 1396/2361/603 1397/2362/604 +f 1385/2349/589 1397/2362/604 1391/2356/600 +f 1392/2357/590 1398/2363/605 1393/2358/601 +f 1389/2364/585 1394/2359/602 1388/2352/584 +f 1387/2351/587 1396/2361/603 1386/2350/586 +f 1401/2367/609 1400/2366/607 1405/2372/608 +f 1397/2362/604 1401/2367/609 1408/2377/615 +f 1402/2368/610 1397/2362/604 1408/2377/615 +f 1398/2363/605 1402/2368/610 1409/2379/611 +f 1403/2369/616 1398/2363/605 1409/2379/611 +f 1404/2370/612 1393/2358/601 1403/2369/616 +f 1405/2372/608 1394/2359/602 1406/2374/613 +f 1394/2359/602 1404/2373/612 1406/2374/613 +f 1242/2381/617 1410/2383/618 1414/2393/617 +f 1240/2384/619 1411/2386/620 1415/2395/619 +f 1243/2387/621 1412/2389/622 1417/2397/621 +f 1213/2390/618 1413/2392/623 1410/2403/618 +f 1241/2385/620 1414/2393/617 1411/2386/620 +f 1214/2394/624 1415/2395/619 1416/2396/624 +f 1212/2388/622 1416/2396/624 1412/2389/622 +f 1244/2391/623 1417/2397/621 1413/2392/623 +f 1418/2398/625 1416/2396/626 1428/2409/626 +f 1416/2396/626 1419/2399/627 1428/2409/626 +f 1415/2395/627 1420/2400/628 1419/2399/627 +f 1420/2400/628 1414/2393/629 1421/2401/629 +f 1421/2401/629 1410/2383/630 1422/2413/630 +f 1422/2402/630 1413/2392/631 1425/2406/631 +f 1413/2392/631 1423/2404/632 1425/2406/631 +f 1423/2404/632 1412/2389/625 1418/2398/625 +f 1423/2404/621 1424/2405/633 1431/2412/638 +f 1422/2402/618 1426/2407/634 1432/2422/639 +f 1420/2400/620 1427/2408/635 1433/2415/640 +f 1428/2409/624 1429/2410/636 1430/2411/637 +f 1418/2398/622 1430/2411/637 1424/2405/633 +f 1425/2406/623 1431/2412/638 1426/2407/634 +f 1421/2401/617 1432/2414/639 1427/2408/635 +f 1420/2400/620 1429/2410/636 1419/2399/619 +f 1429/2410/636 1434/2416/641 1435/2417/642 +f 1430/2411/637 1435/2417/642 1442/2427/648 +f 1436/2418/643 1430/2411/637 1442/2427/648 +f 1437/2419/644 1424/2405/633 1436/2418/643 +f 1438/2420/645 1431/2412/638 1437/2419/644 +f 1439/2421/647 1426/2407/634 1438/2420/645 +f 1434/2416/641 1427/2408/635 1440/2423/646 +f 1440/2423/646 1432/2414/639 1439/2424/647 +f 1443/2430/584 1445/2432/585 1454/2442/584 +f 1446/2433/586 1448/2435/587 1456/2444/586 +f 1449/2436/588 1451/2438/589 1458/2446/588 +f 1444/2439/585 1453/2441/590 1445/2451/585 +f 1447/2434/587 1454/2442/584 1448/2435/587 +f 1455/2443/591 1456/2444/586 1457/2445/591 +f 1450/2437/589 1457/2445/591 1451/2438/589 +f 1452/2440/590 1458/2446/588 1453/2441/590 +f 1459/2447/592 1457/2445/593 1469/2458/593 +f 1457/2445/593 1460/2448/594 1469/2458/593 +f 1460/2448/594 1448/2435/595 1461/2449/595 +f 1461/2449/595 1454/2442/596 1462/2450/596 +f 1462/2450/596 1445/2432/597 1466/2462/597 +f 1445/2451/597 1463/2452/598 1466/2455/597 +f 1453/2441/598 1464/2453/599 1463/2452/598 +f 1458/2446/599 1459/2447/592 1464/2453/599 +f 1464/2453/588 1465/2454/600 1472/2461/605 +f 1466/2455/585 1467/2456/601 1473/2469/606 +f 1461/2449/587 1468/2457/602 1474/2464/607 +f 1469/2458/591 1470/2459/603 1471/2460/604 +f 1459/2447/589 1471/2460/604 1465/2454/600 +f 1464/2453/588 1467/2456/601 1463/2452/590 +f 1462/2450/584 1473/2463/606 1468/2457/602 +f 1460/2448/586 1474/2464/607 1470/2459/603 +f 1475/2465/609 1474/2464/607 1479/2470/608 +f 1476/2466/615 1470/2459/603 1475/2465/609 +f 1465/2454/600 1476/2466/615 1483/2475/610 +f 1477/2467/611 1465/2454/600 1483/2475/610 +f 1478/2468/616 1472/2461/605 1477/2467/611 +f 1473/2469/606 1478/2468/616 1480/2477/612 +f 1479/2470/608 1468/2457/602 1481/2472/613 +f 1468/2457/602 1480/2471/612 1481/2472/613 diff --git a/src/main/resources/assets/hbm/structures/crashed-vertibird.nbt b/src/main/resources/assets/hbm/structures/crashed-vertibird.nbt new file mode 100644 index 000000000..93e22b9fb Binary files /dev/null and b/src/main/resources/assets/hbm/structures/crashed-vertibird.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-bale.nbt b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-bale.nbt new file mode 100644 index 000000000..b8f9aee0d Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-bale.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-blank.nbt b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-blank.nbt new file mode 100644 index 000000000..67e460c1e Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-blank.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-block.nbt b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-block.nbt new file mode 100644 index 000000000..53fd15326 Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-block.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-book.nbt b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-book.nbt new file mode 100644 index 000000000..73dd17a40 Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-book.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-crab-tesla.nbt b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-crab-tesla.nbt new file mode 100644 index 000000000..f707d794e Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-crab-tesla.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-crab.nbt b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-crab.nbt new file mode 100644 index 000000000..7891ce8b0 Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-crab.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-crate.nbt b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-crate.nbt new file mode 100644 index 000000000..22c5c2e30 Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-crate.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-dirt.nbt b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-dirt.nbt new file mode 100644 index 000000000..3afc135c2 Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-dirt.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-glow.nbt b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-glow.nbt new file mode 100644 index 000000000..b496b06d9 Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-glow.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-lead.nbt b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-lead.nbt new file mode 100644 index 000000000..8ea4a132b Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-lead.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-mku.nbt b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-mku.nbt new file mode 100644 index 000000000..bbd46c68e Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-mku.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-ooze.nbt b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-ooze.nbt new file mode 100644 index 000000000..27df02e1a Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-ooze.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-pillar.nbt b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-pillar.nbt new file mode 100644 index 000000000..6b13b58f8 Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-pillar.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-star.nbt b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-star.nbt new file mode 100644 index 000000000..336639b2c Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-star.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-statue.nbt b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-statue.nbt new file mode 100644 index 000000000..26b8e7fe3 Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-statue.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-tesla.nbt b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-tesla.nbt new file mode 100644 index 000000000..b5e1c69a2 Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-tesla.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/meteor-core.nbt b/src/main/resources/assets/hbm/structures/meteor/meteor-core.nbt new file mode 100644 index 000000000..9b5444901 Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/meteor-core.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/meteor-corner.nbt b/src/main/resources/assets/hbm/structures/meteor/meteor-corner.nbt new file mode 100644 index 000000000..673b92235 Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/meteor-corner.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/meteor-fallback.nbt b/src/main/resources/assets/hbm/structures/meteor/meteor-fallback.nbt new file mode 100644 index 000000000..fa3e955c7 Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/meteor-fallback.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/meteor-spike.nbt b/src/main/resources/assets/hbm/structures/meteor/meteor-spike.nbt new file mode 100644 index 000000000..a28c2c309 Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/meteor-spike.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/meteor-stairs.nbt b/src/main/resources/assets/hbm/structures/meteor/meteor-stairs.nbt new file mode 100644 index 000000000..fb4e8b865 Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/meteor-stairs.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/meteor-t.nbt b/src/main/resources/assets/hbm/structures/meteor/meteor-t.nbt new file mode 100644 index 000000000..418d2c747 Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/meteor-t.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/room10/headloot/loot-chest.nbt b/src/main/resources/assets/hbm/structures/meteor/room10/headloot/loot-chest.nbt new file mode 100644 index 000000000..b24269fca Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/room10/headloot/loot-chest.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/room10/headloot/loot-crate-crab.nbt b/src/main/resources/assets/hbm/structures/meteor/room10/headloot/loot-crate-crab.nbt new file mode 100644 index 000000000..cb5de6453 Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/room10/headloot/loot-crate-crab.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/room10/headloot/loot-fallback.nbt b/src/main/resources/assets/hbm/structures/meteor/room10/headloot/loot-fallback.nbt new file mode 100644 index 000000000..2ce40e053 Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/room10/headloot/loot-fallback.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/room10/headloot/loot-tesla.nbt b/src/main/resources/assets/hbm/structures/meteor/room10/headloot/loot-tesla.nbt new file mode 100644 index 000000000..5a4e4f802 Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/room10/headloot/loot-tesla.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/room10/headloot/loot-trap.nbt b/src/main/resources/assets/hbm/structures/meteor/room10/headloot/loot-trap.nbt new file mode 100644 index 000000000..c8486d48e Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/room10/headloot/loot-trap.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/room10/room-balcony.nbt b/src/main/resources/assets/hbm/structures/meteor/room10/room-balcony.nbt new file mode 100644 index 000000000..58664191f Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/room10/room-balcony.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/room10/room-base-end.nbt b/src/main/resources/assets/hbm/structures/meteor/room10/room-base-end.nbt new file mode 100644 index 000000000..c77647792 Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/room10/room-base-end.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/room10/room-base-thru.nbt b/src/main/resources/assets/hbm/structures/meteor/room10/room-base-thru.nbt new file mode 100644 index 000000000..efa40eaab Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/room10/room-base-thru.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/room10/room-basic.nbt b/src/main/resources/assets/hbm/structures/meteor/room10/room-basic.nbt new file mode 100644 index 000000000..0eb650e06 Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/room10/room-basic.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/room10/room-dragon.nbt b/src/main/resources/assets/hbm/structures/meteor/room10/room-dragon.nbt new file mode 100644 index 000000000..52e91cfe9 Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/room10/room-dragon.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/room10/room-fallback.nbt b/src/main/resources/assets/hbm/structures/meteor/room10/room-fallback.nbt new file mode 100644 index 000000000..6b0447906 Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/room10/room-fallback.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/room10/room-ladder.nbt b/src/main/resources/assets/hbm/structures/meteor/room10/room-ladder.nbt new file mode 100644 index 000000000..50bfc2523 Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/room10/room-ladder.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/room10/room-ooze.nbt b/src/main/resources/assets/hbm/structures/meteor/room10/room-ooze.nbt new file mode 100644 index 000000000..346cac917 Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/room10/room-ooze.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/room10/room-split.nbt b/src/main/resources/assets/hbm/structures/meteor/room10/room-split.nbt new file mode 100644 index 000000000..9ce05bb0f Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/room10/room-split.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/room10/room-stairs.nbt b/src/main/resources/assets/hbm/structures/meteor/room10/room-stairs.nbt new file mode 100644 index 000000000..7cef44a64 Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/room10/room-stairs.nbt differ diff --git a/src/main/resources/assets/hbm/structures/meteor/room10/room-triple.nbt b/src/main/resources/assets/hbm/structures/meteor/room10/room-triple.nbt new file mode 100644 index 000000000..b1aa16ff4 Binary files /dev/null and b/src/main/resources/assets/hbm/structures/meteor/room10/room-triple.nbt differ diff --git a/src/main/resources/assets/hbm/structures/test-jigsaw-core.nbt b/src/main/resources/assets/hbm/structures/test-jigsaw-core.nbt new file mode 100644 index 000000000..a73962172 Binary files /dev/null and b/src/main/resources/assets/hbm/structures/test-jigsaw-core.nbt differ diff --git a/src/main/resources/assets/hbm/structures/test-jigsaw-hall.nbt b/src/main/resources/assets/hbm/structures/test-jigsaw-hall.nbt new file mode 100644 index 000000000..1676ffa91 Binary files /dev/null and b/src/main/resources/assets/hbm/structures/test-jigsaw-hall.nbt differ diff --git a/src/main/resources/assets/hbm/structures/test-jigsaw.nbt b/src/main/resources/assets/hbm/structures/test-jigsaw.nbt new file mode 100644 index 000000000..aa2bdf7ea Binary files /dev/null and b/src/main/resources/assets/hbm/structures/test-jigsaw.nbt differ diff --git a/src/main/resources/assets/hbm/structures/test-rot.nbt b/src/main/resources/assets/hbm/structures/test-rot.nbt new file mode 100644 index 000000000..7150435df Binary files /dev/null and b/src/main/resources/assets/hbm/structures/test-rot.nbt differ diff --git a/src/main/resources/assets/hbm/structures/vertibird.nbt b/src/main/resources/assets/hbm/structures/vertibird.nbt new file mode 100644 index 000000000..da4bc38d9 Binary files /dev/null and b/src/main/resources/assets/hbm/structures/vertibird.nbt differ diff --git a/src/main/resources/assets/hbm/textures/blocks/ams_base.png b/src/main/resources/assets/hbm/textures/blocks/ams_base.png deleted file mode 100644 index d0d65f51f..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/ams_base.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/ams_emitter.png b/src/main/resources/assets/hbm/textures/blocks/ams_emitter.png deleted file mode 100644 index 1e8db2566..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/ams_emitter.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/ams_limiter.png b/src/main/resources/assets/hbm/textures/blocks/ams_limiter.png deleted file mode 100644 index e55f3b55c..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/ams_limiter.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/block_daffergon.png b/src/main/resources/assets/hbm/textures/blocks/block_daffergon.png deleted file mode 100644 index 48c695c08..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/block_daffergon.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/block_reiium.png b/src/main/resources/assets/hbm/textures/blocks/block_reiium.png deleted file mode 100644 index c992af05a..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/block_reiium.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/block_unobtainium.png b/src/main/resources/assets/hbm/textures/blocks/block_unobtainium.png deleted file mode 100644 index c169d0808..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/block_unobtainium.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/block_verticium.png b/src/main/resources/assets/hbm/textures/blocks/block_verticium.png deleted file mode 100644 index d494cb218..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/block_verticium.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/block_weidanium.png b/src/main/resources/assets/hbm/textures/blocks/block_weidanium.png deleted file mode 100644 index c4a52edcb..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/block_weidanium.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/glass_polarized.png b/src/main/resources/assets/hbm/textures/blocks/glass_polarized.png new file mode 100644 index 000000000..29a0ce9d6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/glass_polarized.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/glass_polarized_ct.png b/src/main/resources/assets/hbm/textures/blocks/glass_polarized_ct.png new file mode 100644 index 000000000..9ba4239ea Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/glass_polarized_ct.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/taint.png b/src/main/resources/assets/hbm/textures/blocks/taint.png new file mode 100644 index 000000000..df93b16d0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/taint.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/taint_0.png b/src/main/resources/assets/hbm/textures/blocks/taint_0.png deleted file mode 100644 index 0bbd12634..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/taint_0.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/taint_1.png b/src/main/resources/assets/hbm/textures/blocks/taint_1.png deleted file mode 100644 index d6dd11a89..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/taint_1.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/taint_10.png b/src/main/resources/assets/hbm/textures/blocks/taint_10.png deleted file mode 100644 index cd84e8bd2..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/taint_10.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/taint_11.png b/src/main/resources/assets/hbm/textures/blocks/taint_11.png deleted file mode 100644 index cf57f7048..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/taint_11.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/taint_12.png b/src/main/resources/assets/hbm/textures/blocks/taint_12.png deleted file mode 100644 index 7be919a34..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/taint_12.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/taint_13.png b/src/main/resources/assets/hbm/textures/blocks/taint_13.png deleted file mode 100644 index 6e0ba09d3..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/taint_13.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/taint_14.png b/src/main/resources/assets/hbm/textures/blocks/taint_14.png deleted file mode 100644 index fe299aaa0..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/taint_14.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/taint_15.png b/src/main/resources/assets/hbm/textures/blocks/taint_15.png deleted file mode 100644 index 9dd944165..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/taint_15.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/taint_2.png b/src/main/resources/assets/hbm/textures/blocks/taint_2.png deleted file mode 100644 index cd64d383f..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/taint_2.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/taint_3.png b/src/main/resources/assets/hbm/textures/blocks/taint_3.png deleted file mode 100644 index b76629017..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/taint_3.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/taint_4.png b/src/main/resources/assets/hbm/textures/blocks/taint_4.png deleted file mode 100644 index dd66e6245..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/taint_4.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/taint_5.png b/src/main/resources/assets/hbm/textures/blocks/taint_5.png deleted file mode 100644 index 90ba3f39c..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/taint_5.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/taint_6.png b/src/main/resources/assets/hbm/textures/blocks/taint_6.png deleted file mode 100644 index 2146fb19c..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/taint_6.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/taint_7.png b/src/main/resources/assets/hbm/textures/blocks/taint_7.png deleted file mode 100644 index 614bee225..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/taint_7.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/taint_8.png b/src/main/resources/assets/hbm/textures/blocks/taint_8.png deleted file mode 100644 index aba944663..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/taint_8.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/taint_9.png b/src/main/resources/assets/hbm/textures/blocks/taint_9.png deleted file mode 100644 index 5a4ed0e18..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/taint_9.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/taint_full.png b/src/main/resources/assets/hbm/textures/blocks/taint_full.png deleted file mode 100644 index fce2c72d0..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/taint_full.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/taint_low.png b/src/main/resources/assets/hbm/textures/blocks/taint_low.png deleted file mode 100644 index 48ee86242..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/taint_low.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/test_bb_bork.png b/src/main/resources/assets/hbm/textures/blocks/test_bb_bork.png deleted file mode 100644 index 411d7960f..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/test_bb_bork.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/test_bb_inf.png b/src/main/resources/assets/hbm/textures/blocks/test_bb_inf.png deleted file mode 100644 index 107de4238..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/test_bb_inf.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/test_bomb.png b/src/main/resources/assets/hbm/textures/blocks/test_bomb.png deleted file mode 100644 index f9b425a24..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/test_bomb.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/test_conductor.png b/src/main/resources/assets/hbm/textures/blocks/test_conductor.png deleted file mode 100644 index c1b14c708..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/test_conductor.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/test_container.png b/src/main/resources/assets/hbm/textures/blocks/test_container.png deleted file mode 100644 index 3d3f7d329..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/test_container.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/test_nuke.png b/src/main/resources/assets/hbm/textures/blocks/test_nuke.png deleted file mode 100644 index af8e35e49..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/test_nuke.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/test_ticker.png b/src/main/resources/assets/hbm/textures/blocks/test_ticker.png deleted file mode 100644 index 4f3c430f9..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/test_ticker.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/wand_air.png b/src/main/resources/assets/hbm/textures/blocks/wand_air.png new file mode 100644 index 000000000..4e5efa1a4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/wand_air.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/wand_jigsaw.png b/src/main/resources/assets/hbm/textures/blocks/wand_jigsaw.png new file mode 100644 index 000000000..2e56150d8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/wand_jigsaw.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/wand_jigsaw_back.png b/src/main/resources/assets/hbm/textures/blocks/wand_jigsaw_back.png new file mode 100644 index 000000000..6f202718b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/wand_jigsaw_back.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/wand_jigsaw_side.png b/src/main/resources/assets/hbm/textures/blocks/wand_jigsaw_side.png new file mode 100644 index 000000000..dc9a78ecb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/wand_jigsaw_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/wand_jigsaw_top.png b/src/main/resources/assets/hbm/textures/blocks/wand_jigsaw_top.png new file mode 100644 index 000000000..2c47fc86b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/wand_jigsaw_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/wand_loot.png b/src/main/resources/assets/hbm/textures/blocks/wand_loot.png new file mode 100644 index 000000000..1dc8a297f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/wand_loot.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/wand_loot_top.png b/src/main/resources/assets/hbm/textures/blocks/wand_loot_top.png new file mode 100644 index 000000000..5378ae691 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/wand_loot_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/waste_earth_side.png b/src/main/resources/assets/hbm/textures/blocks/waste_earth_side.png deleted file mode 100644 index eabad09e5..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/waste_earth_side.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/waste_earth_top.png b/src/main/resources/assets/hbm/textures/blocks/waste_earth_top.png deleted file mode 100644 index 625f45be7..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/waste_earth_top.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/creeper_armor_taint.png b/src/main/resources/assets/hbm/textures/entity/creeper_armor_taint.png index fad613e60..b34023337 100644 Binary files a/src/main/resources/assets/hbm/textures/entity/creeper_armor_taint.png and b/src/main/resources/assets/hbm/textures/entity/creeper_armor_taint.png differ diff --git a/src/main/resources/assets/hbm/textures/entity/creeper_tainted.png b/src/main/resources/assets/hbm/textures/entity/creeper_tainted.png index cd41bc1bb..1daffe305 100644 Binary files a/src/main/resources/assets/hbm/textures/entity/creeper_tainted.png and b/src/main/resources/assets/hbm/textures/entity/creeper_tainted.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/gui_bobmazon.png b/src/main/resources/assets/hbm/textures/gui/gui_bobmazon.png index 33890326a..e9fdfa2cc 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/gui_bobmazon.png and b/src/main/resources/assets/hbm/textures/gui/gui_bobmazon.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/guide_pedestal.png b/src/main/resources/assets/hbm/textures/gui/guide_pedestal.png index 62073a986..0c0e2a6b6 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/guide_pedestal.png and b/src/main/resources/assets/hbm/textures/gui/guide_pedestal.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_oilburner_hp.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_oilburner_hp.png new file mode 100644 index 000000000..e37ef58cc Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/machine/gui_oilburner_hp.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/nei/gui_nei_hadron.png b/src/main/resources/assets/hbm/textures/gui/nei/gui_nei_hadron.png deleted file mode 100644 index ec0b04bbd..000000000 Binary files a/src/main/resources/assets/hbm/textures/gui/nei/gui_nei_hadron.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo.png b/src/main/resources/assets/hbm/textures/items/ammo.png index 4af2d408c..332f97913 100644 Binary files a/src/main/resources/assets/hbm/textures/items/ammo.png and b/src/main/resources/assets/hbm/textures/items/ammo.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_secret.p50_1600.png b/src/main/resources/assets/hbm/textures/items/ammo_secret.p50_1600.png new file mode 100644 index 000000000..c170d1c4d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_secret.p50_1600.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket.png b/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket.png deleted file mode 100644 index 132e23ffe..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket_bones.png b/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket_bones.png deleted file mode 100644 index 307af4045..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket_bones.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket_he.png b/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket_he.png deleted file mode 100644 index 4165c8f4b..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket_he.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket_incendiary.png b/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket_incendiary.png deleted file mode 100644 index 67d55d217..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket_incendiary.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket_nuclear.png b/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket_nuclear.png deleted file mode 100644 index c7752fd92..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket_nuclear.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/bobmazon.png b/src/main/resources/assets/hbm/textures/items/bobmazon.png index 21f69a46e..fb5f3e384 100644 Binary files a/src/main/resources/assets/hbm/textures/items/bobmazon.png and b/src/main/resources/assets/hbm/textures/items/bobmazon.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bobmazon_machines.png b/src/main/resources/assets/hbm/textures/items/bobmazon_machines.png deleted file mode 100644 index 21f69a46e..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/bobmazon_machines.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/bobmazon_materials.png b/src/main/resources/assets/hbm/textures/items/bobmazon_materials.png deleted file mode 100644 index a69e048fe..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/bobmazon_materials.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/bobmazon_tools.png b/src/main/resources/assets/hbm/textures/items/bobmazon_tools.png deleted file mode 100644 index 681bd2b15..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/bobmazon_tools.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/bobmazon_weapons.png b/src/main/resources/assets/hbm/textures/items/bobmazon_weapons.png deleted file mode 100644 index f83187769..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/bobmazon_weapons.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_ar15.png b/src/main/resources/assets/hbm/textures/items/gun_ar15.png deleted file mode 100644 index 032404fcc..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_ar15.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_avenger.png b/src/main/resources/assets/hbm/textures/items/gun_avenger.png deleted file mode 100644 index 004f943ed..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_avenger.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_b93.png b/src/main/resources/assets/hbm/textures/items/gun_b93.png deleted file mode 100644 index 0f6855a44..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_b93.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_bf.png b/src/main/resources/assets/hbm/textures/items/gun_bf.png deleted file mode 100644 index 67bb9a89f..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_bf.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_bio_revolver.png b/src/main/resources/assets/hbm/textures/items/gun_bio_revolver.png deleted file mode 100644 index ed11e32c0..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_bio_revolver.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_bolt_action.png b/src/main/resources/assets/hbm/textures/items/gun_bolt_action.png deleted file mode 100644 index a5e4409af..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_bolt_action.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_bolt_action_green.png b/src/main/resources/assets/hbm/textures/items/gun_bolt_action_green.png deleted file mode 100644 index 652e0dc9a..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_bolt_action_green.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_bolt_action_saturnite.png b/src/main/resources/assets/hbm/textures/items/gun_bolt_action_saturnite.png deleted file mode 100644 index 6c8479461..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_bolt_action_saturnite.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_calamity.png b/src/main/resources/assets/hbm/textures/items/gun_calamity.png deleted file mode 100644 index a5ec308bc..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_calamity.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_calamity_dual.png b/src/main/resources/assets/hbm/textures/items/gun_calamity_dual.png deleted file mode 100644 index 3f6d18f42..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_calamity_dual.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_coilgun.png b/src/main/resources/assets/hbm/textures/items/gun_coilgun.png deleted file mode 100644 index 5c130d109..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_coilgun.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_cryolator.png b/src/main/resources/assets/hbm/textures/items/gun_cryolator.png deleted file mode 100644 index 2bb956205..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_cryolator.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_deagle.png b/src/main/resources/assets/hbm/textures/items/gun_deagle.png deleted file mode 100644 index 93ea0154a..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_deagle.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_defabricator.png b/src/main/resources/assets/hbm/textures/items/gun_defabricator.png deleted file mode 100644 index e4b21e0b6..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_defabricator.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_defabricator_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_defabricator_ammo.png deleted file mode 100644 index 8b4ad03e3..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_defabricator_ammo.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_emp.png b/src/main/resources/assets/hbm/textures/items/gun_emp.png deleted file mode 100644 index b4be7d1f7..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_emp.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_emp_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_emp_ammo.png deleted file mode 100644 index 15ca8e10f..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_emp_ammo.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_euthanasia.png b/src/main/resources/assets/hbm/textures/items/gun_euthanasia.png deleted file mode 100644 index 7d9cc51ef..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_euthanasia.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_euthanasia_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_euthanasia_ammo.png deleted file mode 100644 index 7a26309eb..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_euthanasia_ammo.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_fatman.png b/src/main/resources/assets/hbm/textures/items/gun_fatman.png deleted file mode 100644 index 07bade5d1..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_fatman.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_flamer.png b/src/main/resources/assets/hbm/textures/items/gun_flamer.png deleted file mode 100644 index 6cf5d9530..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_flamer.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_folly.png b/src/main/resources/assets/hbm/textures/items/gun_folly.png deleted file mode 100644 index a62c97a96..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_folly.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_hk69.png b/src/main/resources/assets/hbm/textures/items/gun_hk69.png deleted file mode 100644 index a7dabb154..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_hk69.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_hp.png b/src/main/resources/assets/hbm/textures/items/gun_hp.png deleted file mode 100644 index 9c65ba2e2..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_hp.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_hp_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_hp_ammo.png deleted file mode 100644 index 4c7f3acf5..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_hp_ammo.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_immolator.png b/src/main/resources/assets/hbm/textures/items/gun_immolator.png deleted file mode 100644 index 26e05d4d6..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_immolator.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_immolator_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_immolator_ammo.png deleted file mode 100644 index 33069873c..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_immolator_ammo.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_jack.png b/src/main/resources/assets/hbm/textures/items/gun_jack.png deleted file mode 100644 index 622c17c48..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_jack.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_jack_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_jack_ammo.png deleted file mode 100644 index 1a472ef44..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_jack_ammo.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_karl.png b/src/main/resources/assets/hbm/textures/items/gun_karl.png deleted file mode 100644 index ff1dba93d..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_karl.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_lacunae.png b/src/main/resources/assets/hbm/textures/items/gun_lacunae.png deleted file mode 100644 index 56b58d5be..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_lacunae.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_lever_action.png b/src/main/resources/assets/hbm/textures/items/gun_lever_action.png deleted file mode 100644 index 21ea9298a..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_lever_action.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_lever_action_dark.png b/src/main/resources/assets/hbm/textures/items/gun_lever_action_dark.png deleted file mode 100644 index d07aca793..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_lever_action_dark.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_lever_action_sonata.png b/src/main/resources/assets/hbm/textures/items/gun_lever_action_sonata.png deleted file mode 100644 index a6ae3f94b..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_lever_action_sonata.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_minigun.png b/src/main/resources/assets/hbm/textures/items/gun_minigun.png deleted file mode 100644 index f4db3f240..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_minigun.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_mirv.png b/src/main/resources/assets/hbm/textures/items/gun_mirv.png deleted file mode 100644 index 7c03eff97..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_mirv.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_moist_nugget.png b/src/main/resources/assets/hbm/textures/items/gun_moist_nugget.png deleted file mode 100644 index ae84c07f1..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_moist_nugget.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_mp40.png b/src/main/resources/assets/hbm/textures/items/gun_mp40.png deleted file mode 100644 index 779a68502..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_mp40.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_mymy.png b/src/main/resources/assets/hbm/textures/items/gun_mymy.png deleted file mode 100644 index a255633ba..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_mymy.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_osipr.png b/src/main/resources/assets/hbm/textures/items/gun_osipr.png deleted file mode 100644 index f45a4069d..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_osipr.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_osipr_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_osipr_ammo.png deleted file mode 100644 index 24e644f44..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_osipr_ammo.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_osipr_ammo2.png b/src/main/resources/assets/hbm/textures/items/gun_osipr_ammo2.png deleted file mode 100644 index 313abf556..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_osipr_ammo2.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_panzerschreck.png b/src/main/resources/assets/hbm/textures/items/gun_panzerschreck.png deleted file mode 100644 index d9c5fc51d..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_panzerschreck.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_pm.png b/src/main/resources/assets/hbm/textures/items/gun_pm.png deleted file mode 100644 index a32ee6a14..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_pm.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_pm_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_pm_ammo.png deleted file mode 100644 index 9309fa68f..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_pm_ammo.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_quadro.png b/src/main/resources/assets/hbm/textures/items/gun_quadro.png deleted file mode 100644 index 1e7f41b68..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_quadro.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver.png b/src/main/resources/assets/hbm/textures/items/gun_revolver.png deleted file mode 100644 index f7d550751..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_revolver.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_ammo.png deleted file mode 100644 index 77b64a54e..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_revolver_ammo.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_blackjack.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_blackjack.png deleted file mode 100644 index a3508b1a5..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_revolver_blackjack.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_cursed.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_cursed.png deleted file mode 100644 index f6012329b..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_revolver_cursed.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_cursed_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_cursed_ammo.png deleted file mode 100644 index d55664661..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_revolver_cursed_ammo.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_gold.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_gold.png deleted file mode 100644 index 0e6008a26..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_revolver_gold.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_gold_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_gold_ammo.png deleted file mode 100644 index fe6b25154..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_revolver_gold_ammo.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_inverted.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_inverted.png deleted file mode 100644 index 1c9925700..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_revolver_inverted.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_iron.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_iron.png deleted file mode 100644 index 82974cc4c..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_revolver_iron.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_iron_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_iron_ammo.png deleted file mode 100644 index bc25af3a4..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_revolver_iron_ammo.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_lead.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_lead.png deleted file mode 100644 index 4ecd5014b..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_revolver_lead.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_lead_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_lead_ammo.png deleted file mode 100644 index a123c6987..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_revolver_lead_ammo.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_nightmare.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_nightmare.png deleted file mode 100644 index 8b7241860..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_revolver_nightmare.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_nightmare2.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_nightmare2.png deleted file mode 100644 index 6f440b5b6..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_revolver_nightmare2.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_nightmare2_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_nightmare2_ammo.png deleted file mode 100644 index eb58a2cd7..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_revolver_nightmare2_ammo.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_nightmare_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_nightmare_ammo.png deleted file mode 100644 index 75fc19a3b..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_revolver_nightmare_ammo.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_nopip.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_nopip.png deleted file mode 100644 index f8923e0e1..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_revolver_nopip.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_pip.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_pip.png deleted file mode 100644 index f524b1d6b..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_revolver_pip.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_pip_alt.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_pip_alt.png deleted file mode 100644 index dd888d23b..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_revolver_pip_alt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_red.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_red.png deleted file mode 100644 index ec8267bf9..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_revolver_red.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_saturnite.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_saturnite.png deleted file mode 100644 index 21413411f..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_revolver_saturnite.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_schrabidium.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_schrabidium.png deleted file mode 100644 index a1e4a87ed..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_revolver_schrabidium.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_schrabidium_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_schrabidium_ammo.png deleted file mode 100644 index e3e19703d..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_revolver_schrabidium_ammo.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_silver.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_silver.png deleted file mode 100644 index b9900ddff..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_revolver_silver.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_rpg.png b/src/main/resources/assets/hbm/textures/items/gun_rpg.png deleted file mode 100644 index 70907f359..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_rpg.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_rpg_alt.png b/src/main/resources/assets/hbm/textures/items/gun_rpg_alt.png deleted file mode 100644 index ec5221602..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_rpg_alt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_rpg_new.png b/src/main/resources/assets/hbm/textures/items/gun_rpg_new.png deleted file mode 100644 index f707e5242..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_rpg_new.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_skystinger.png b/src/main/resources/assets/hbm/textures/items/gun_skystinger.png deleted file mode 100644 index ef3ff8c9d..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_skystinger.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_spark.png b/src/main/resources/assets/hbm/textures/items/gun_spark.png deleted file mode 100644 index d308afeef..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_spark.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_spark_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_spark_ammo.png deleted file mode 100644 index 150780fcb..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_spark_ammo.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_spas12.png b/src/main/resources/assets/hbm/textures/items/gun_spas12.png deleted file mode 100644 index b0420f777..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_spas12.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_stinger.png b/src/main/resources/assets/hbm/textures/items/gun_stinger.png deleted file mode 100644 index 4e89b8215..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_stinger.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_super_shotgun.png b/src/main/resources/assets/hbm/textures/items/gun_super_shotgun.png deleted file mode 100644 index c8c8f39cb..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_super_shotgun.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_uboinik.png b/src/main/resources/assets/hbm/textures/items/gun_uboinik.png deleted file mode 100644 index d910cfbad..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_uboinik.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_uzi.png b/src/main/resources/assets/hbm/textures/items/gun_uzi.png deleted file mode 100644 index b35f0502e..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_uzi.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_uzi_saturnite.png b/src/main/resources/assets/hbm/textures/items/gun_uzi_saturnite.png deleted file mode 100644 index 7be46c01c..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_uzi_saturnite.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_uzi_saturnite_silencer.png b/src/main/resources/assets/hbm/textures/items/gun_uzi_saturnite_silencer.png deleted file mode 100644 index 9387b6b68..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_uzi_saturnite_silencer.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_uzi_silencer.png b/src/main/resources/assets/hbm/textures/items/gun_uzi_silencer.png deleted file mode 100644 index 38a60037f..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_uzi_silencer.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_xvl1456.png b/src/main/resources/assets/hbm/textures/items/gun_xvl1456.png deleted file mode 100644 index 6507efa70..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_xvl1456.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_xvl1456_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_xvl1456_ammo.png deleted file mode 100644 index 77ed27a29..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_xvl1456_ammo.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_zomg.png b/src/main/resources/assets/hbm/textures/items/gun_zomg.png deleted file mode 100644 index b0e443d76..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/gun_zomg.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ingot_metal_sheet.png b/src/main/resources/assets/hbm/textures/items/ingot_metal_sheet.png new file mode 100644 index 000000000..27e251a79 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ingot_metal_sheet.png differ diff --git a/src/main/resources/assets/hbm/textures/items/syringe_taint.png b/src/main/resources/assets/hbm/textures/items/syringe_taint.png index 51f837e60..bfa6a581a 100644 Binary files a/src/main/resources/assets/hbm/textures/items/syringe_taint.png and b/src/main/resources/assets/hbm/textures/items/syringe_taint.png differ diff --git a/src/main/resources/assets/hbm/textures/misc/star_bober_what_is_this_please_reveal_all_secrets_to_me.png b/src/main/resources/assets/hbm/textures/misc/star_bober_what_is_this_please_reveal_all_secrets_to_me.png new file mode 100644 index 000000000..eb6de1f3c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/misc/star_bober_what_is_this_please_reveal_all_secrets_to_me.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/oilburner_hp.png b/src/main/resources/assets/hbm/textures/models/machines/oilburner_hp.png new file mode 100644 index 000000000..484ddeaf3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/oilburner_hp.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/refueler.png b/src/main/resources/assets/hbm/textures/models/machines/refueler.png new file mode 100644 index 000000000..856793f73 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/refueler.png differ diff --git a/src/main/resources/assets/hbm/textures/models/trinkets/mellowrpg8_glow.png b/src/main/resources/assets/hbm/textures/models/trinkets/mellowrpg8_glow.png new file mode 100644 index 000000000..84a06adcf Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/trinkets/mellowrpg8_glow.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/mas36.png b/src/main/resources/assets/hbm/textures/models/weapons/mas36.png new file mode 100644 index 000000000..46240552a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/mas36.png differ