diff --git a/README.md b/README.md index 06026e0e02..aab377402d 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ See [CONTRIBUTING](CONTRIBUTING.md). Bleeding-edge live builds are generated automatically for every commit. You can see them [here](https://github.com/Anuken/MindustryBuilds/releases). Old builds might still be on [jenkins](https://jenkins.hellomouse.net/job/mindustry/). If you'd rather compile on your own, follow these instructions. -First, make sure you have [JDK 8](https://adoptopenjdk.net/) installed. Open a terminal in the root directory, `cd` to the Mindustry folder and run the following commands: +First, make sure you have [JDK 14](https://adoptopenjdk.net/) installed. Open a terminal in the root directory, `cd` to the Mindustry folder and run the following commands: #### Windows diff --git a/android/proguard-project.txt b/android/proguard-project.txt deleted file mode 100644 index 5576552446..0000000000 --- a/android/proguard-project.txt +++ /dev/null @@ -1,29 +0,0 @@ -# To enable ProGuard in your project, edit project.properties -# to define the proguard.config property as described in that file. -# -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in ${sdk.dir}/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the ProGuard -# include property in project.properties. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - --verbose --verbose --ignorewarnings --keep class mindustry.game.Rules --keep class mindustry.desktop.DesktopLauncher --keepclasseswithmembers public class * { - public static void main(java.lang.String[]); -} diff --git a/android/project.properties b/android/project.properties deleted file mode 100644 index f13bd4b19c..0000000000 --- a/android/project.properties +++ /dev/null @@ -1,13 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system edit -# "ant.properties", and override values to adapt the script to your -# project structure. -# -# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt -# Project target. -target=android-19 diff --git a/annotations/src/main/java/mindustry/annotations/Annotations.java b/annotations/src/main/java/mindustry/annotations/Annotations.java index 4ccfbf74be..7aae9e1165 100644 --- a/annotations/src/main/java/mindustry/annotations/Annotations.java +++ b/annotations/src/main/java/mindustry/annotations/Annotations.java @@ -227,7 +227,7 @@ public class Annotations{ /** The local locations where this method is called locally, when invoked. */ Loc called() default Loc.none; - /** Whether to forward this packet to all other clients upon recieval. Client only. */ + /** Whether to forward this packet to all other clients upon receival. Client only. */ boolean forward() default false; /** diff --git a/annotations/src/main/java/mindustry/annotations/entity/EntityIO.java b/annotations/src/main/java/mindustry/annotations/entity/EntityIO.java index 7a552ead20..341b26df3a 100644 --- a/annotations/src/main/java/mindustry/annotations/entity/EntityIO.java +++ b/annotations/src/main/java/mindustry/annotations/entity/EntityIO.java @@ -193,7 +193,7 @@ public class EntityIO{ st("$L = $L($T.$L($L, $L, alpha))", name, field.annotation(SyncField.class).clamped() ? "arc.math.Mathf.clamp" : "", Mathf.class, field.annotation(SyncField.class).value() ? "lerp" : "slerp", lastName, targetName); } - ncont("else"); //no meaningful data has arrived yet + ncont("else if(lastUpdated != 0)"); //check if no meaningful data has arrived yet //write values directly to targets for(Svar field : fields){ diff --git a/annotations/src/main/java/mindustry/annotations/entity/EntityProcess.java b/annotations/src/main/java/mindustry/annotations/entity/EntityProcess.java index 97c6fb0b2c..3350d0e226 100644 --- a/annotations/src/main/java/mindustry/annotations/entity/EntityProcess.java +++ b/annotations/src/main/java/mindustry/annotations/entity/EntityProcess.java @@ -566,6 +566,14 @@ public class EntityProcess extends BaseProcessor{ //write the groups groupsBuilder.addMethod(groupInit.build()); + MethodSpec.Builder groupClear = MethodSpec.methodBuilder("clear").addModifiers(Modifier.PUBLIC, Modifier.STATIC); + for(GroupDefinition group : groupDefs){ + groupClear.addStatement("$L.clear()", group.name); + } + + //write clear + groupsBuilder.addMethod(groupClear.build()); + //add method for resizing all necessary groups MethodSpec.Builder groupResize = MethodSpec.methodBuilder("resize") .addParameter(TypeName.FLOAT, "x").addParameter(TypeName.FLOAT, "y").addParameter(TypeName.FLOAT, "w").addParameter(TypeName.FLOAT, "h") diff --git a/annotations/src/main/java/mindustry/annotations/impl/StructProcess.java b/annotations/src/main/java/mindustry/annotations/impl/StructProcess.java index 7eadedb856..975e1dceee 100644 --- a/annotations/src/main/java/mindustry/annotations/impl/StructProcess.java +++ b/annotations/src/main/java/mindustry/annotations/impl/StructProcess.java @@ -1,17 +1,14 @@ package mindustry.annotations.impl; +import arc.struct.*; import com.squareup.javapoet.*; +import mindustry.annotations.Annotations.*; import mindustry.annotations.*; -import mindustry.annotations.Annotations.Struct; -import mindustry.annotations.Annotations.StructField; +import mindustry.annotations.util.*; import javax.annotation.processing.*; import javax.lang.model.element.*; -import javax.lang.model.type.TypeKind; -import javax.lang.model.util.ElementFilter; -import javax.tools.Diagnostic.Kind; -import java.util.List; -import java.util.Set; +import javax.lang.model.type.*; /** * Generates ""value types"" classes that are packed into integer primitives of the most aproppriate size. @@ -24,28 +21,28 @@ public class StructProcess extends BaseProcessor{ @Override public void process(RoundEnvironment env) throws Exception{ - Set elements = ElementFilter.typesIn(env.getElementsAnnotatedWith(Struct.class)); + Seq elements = types(Struct.class); - for(TypeElement elem : elements){ + for(Stype elem : elements){ - if(!elem.getSimpleName().toString().endsWith("Struct")){ - BaseProcessor.err("All classes annotated with @Struct must have their class names end in 'Struct'.", elem); + if(!elem.name().endsWith("Struct")){ + err("All classes annotated with @Struct must have their class names end in 'Struct'.", elem); continue; } - String structName = elem.getSimpleName().toString().substring(0, elem.getSimpleName().toString().length() - "Struct".length()); + String structName = elem.name().substring(0, elem.name().length() - "Struct".length()); String structParam = structName.toLowerCase(); TypeSpec.Builder classBuilder = TypeSpec.classBuilder(structName) .addModifiers(Modifier.FINAL, Modifier.PUBLIC); try{ - List variables = ElementFilter.fieldsIn(elem.getEnclosedElements()); - int structSize = variables.stream().mapToInt(StructProcess::varSize).sum(); + Seq variables = elem.fields(); + int structSize = variables.mapInt(StructProcess::varSize).sum(); int structTotalSize = (structSize <= 8 ? 8 : structSize <= 16 ? 16 : structSize <= 32 ? 32 : 64); - if(variables.size() == 0){ - BaseProcessor.err("making a struct with no fields is utterly pointles.", elem); + if(variables.size == 0){ + err("making a struct with no fields is utterly pointles.", elem); continue; } @@ -62,21 +59,21 @@ public class StructProcess extends BaseProcessor{ doc.append("Bits used: ").append(structSize).append(" / ").append(structTotalSize).append("\n"); int offset = 0; - for(VariableElement var : variables){ + for(Svar var : variables){ int size = varSize(var); - TypeName varType = TypeName.get(var.asType()); - String varName = var.getSimpleName().toString(); + TypeName varType = var.tname(); + String varName = var.name(); //add val param to constructor constructor.addParameter(varType, varName); //[get] field(structType) : fieldType - MethodSpec.Builder getter = MethodSpec.methodBuilder(var.getSimpleName().toString()) + MethodSpec.Builder getter = MethodSpec.methodBuilder(var.name().toString()) .addModifiers(Modifier.STATIC, Modifier.PUBLIC) .returns(varType) .addParameter(structType, structParam); //[set] field(structType, fieldType) : structType - MethodSpec.Builder setter = MethodSpec.methodBuilder(var.getSimpleName().toString()) + MethodSpec.Builder setter = MethodSpec.methodBuilder(var.name().toString()) .addModifiers(Modifier.STATIC, Modifier.PUBLIC) .returns(structType) .addParameter(structType, structParam).addParameter(varType, "value"); @@ -133,7 +130,7 @@ public class StructProcess extends BaseProcessor{ JavaFile.builder(packageName, classBuilder.build()).build().writeTo(BaseProcessor.filer); }catch(IllegalArgumentException e){ e.printStackTrace(); - BaseProcessor.err(e.getMessage(), elem); + err(e.getMessage(), elem); } } @@ -154,21 +151,21 @@ public class StructProcess extends BaseProcessor{ return "0b" + builder.reverse().toString() + "L"; } - static int varSize(VariableElement var) throws IllegalArgumentException{ - if(!var.asType().getKind().isPrimitive()){ + static int varSize(Svar var) throws IllegalArgumentException{ + if(!var.mirror().getKind().isPrimitive()){ throw new IllegalArgumentException("All struct fields must be primitives: " + var); } - StructField an = var.getAnnotation(StructField.class); - if(var.asType().getKind() == TypeKind.BOOLEAN && an != null && an.value() != 1){ + StructField an = var.annotation(StructField.class); + if(var.mirror().getKind() == TypeKind.BOOLEAN && an != null && an.value() != 1){ throw new IllegalArgumentException("Booleans can only be one bit long... why would you do this?"); } - if(var.asType().getKind() == TypeKind.FLOAT && an != null && an.value() != 32){ + if(var.mirror().getKind() == TypeKind.FLOAT && an != null && an.value() != 32){ throw new IllegalArgumentException("Float size can't be changed. Very sad."); } - return an == null ? typeSize(var.asType().getKind()) : an.value(); + return an == null ? typeSize(var.mirror().getKind()) : an.value(); } static Class typeForSize(int size) throws IllegalArgumentException{ diff --git a/annotations/src/main/java/mindustry/annotations/remote/RemoteProcess.java b/annotations/src/main/java/mindustry/annotations/remote/RemoteProcess.java index 9a00d12bfe..c785582157 100644 --- a/annotations/src/main/java/mindustry/annotations/remote/RemoteProcess.java +++ b/annotations/src/main/java/mindustry/annotations/remote/RemoteProcess.java @@ -1,15 +1,15 @@ package mindustry.annotations.remote; +import arc.struct.*; import com.squareup.javapoet.*; -import mindustry.annotations.*; import mindustry.annotations.Annotations.*; +import mindustry.annotations.*; import mindustry.annotations.util.*; import mindustry.annotations.util.TypeIOResolver.*; import javax.annotation.processing.*; import javax.lang.model.element.*; import java.util.*; -import java.util.stream.*; /** The annotation processor for generating remote method call code. */ @@ -33,13 +33,13 @@ public class RemoteProcess extends BaseProcessor{ //class serializers private ClassSerializer serializer; //all elements with the Remote annotation - private Set elements; + private Seq elements; //map of all classes to generate by name private HashMap classMap; //list of all method entries - private ArrayList methods; + private Seq methods; //list of all method entries - private ArrayList classes; + private Seq classes; { rounds = 2; @@ -54,23 +54,23 @@ public class RemoteProcess extends BaseProcessor{ //last method ID used int lastMethodID = 0; //find all elements with the Remote annotation - elements = roundEnv.getElementsAnnotatedWith(Remote.class); + elements = methods(Remote.class); //map of all classes to generate by name classMap = new HashMap<>(); //list of all method entries - methods = new ArrayList<>(); + methods = new Seq<>(); //list of all method entries - classes = new ArrayList<>(); + classes = new Seq<>(); - List orderedElements = new ArrayList<>(elements); - orderedElements.sort(Comparator.comparing(Object::toString)); + Seq orderedElements = elements.copy(); + orderedElements.sortComparing(Object::toString); //create methods - for(Element element : orderedElements){ - Remote annotation = element.getAnnotation(Remote.class); + for(Smethod element : orderedElements){ + Remote annotation = element.annotation(Remote.class); //check for static - if(!element.getModifiers().contains(Modifier.STATIC) || !element.getModifiers().contains(Modifier.PUBLIC)){ + if(!element.is(Modifier.STATIC) || !element.is(Modifier.PUBLIC)){ err("All @Remote methods must be public and static: ", element); } @@ -89,8 +89,8 @@ public class RemoteProcess extends BaseProcessor{ ClassEntry entry = classMap.get(callLocation); //create and add entry - MethodEntry method = new MethodEntry(entry.name, BaseProcessor.getMethodName(element), annotation.targets(), annotation.variants(), - annotation.called(), annotation.unreliable(), annotation.forward(), lastMethodID++, (ExecutableElement)element, annotation.priority()); + MethodEntry method = new MethodEntry(entry.name, BaseProcessor.getMethodName(element.e), annotation.targets(), annotation.variants(), + annotation.called(), annotation.unreliable(), annotation.forward(), lastMethodID++, element.e, annotation.priority()); entry.methods.add(method); methods.add(method); @@ -105,15 +105,15 @@ public class RemoteProcess extends BaseProcessor{ RemoteReadGenerator readgen = new RemoteReadGenerator(serializer); //generate server readers - readgen.generateFor(methods.stream().filter(method -> method.where.isClient).collect(Collectors.toList()), readServerName, packageName, true); + readgen.generateFor(methods.select(method -> method.where.isClient), readServerName, packageName, true); //generate client readers - readgen.generateFor(methods.stream().filter(method -> method.where.isServer).collect(Collectors.toList()), readClientName, packageName, false); + readgen.generateFor(methods.select(method -> method.where.isServer), readClientName, packageName, false); //create class for storing unique method hash TypeSpec.Builder hashBuilder = TypeSpec.classBuilder("MethodHash").addModifiers(Modifier.PUBLIC); hashBuilder.addJavadoc(autogenWarning); hashBuilder.addField(FieldSpec.builder(int.class, "HASH", Modifier.STATIC, Modifier.PUBLIC, Modifier.FINAL) - .initializer("$1L", Objects.hash(methods)).build()); + .initializer("$1L", Arrays.hashCode(methods.map(m -> m.element).toArray())).build()); //build and write resulting hash class TypeSpec spec = hashBuilder.build(); diff --git a/annotations/src/main/java/mindustry/annotations/remote/RemoteReadGenerator.java b/annotations/src/main/java/mindustry/annotations/remote/RemoteReadGenerator.java index 24eb123d34..a8493d5643 100644 --- a/annotations/src/main/java/mindustry/annotations/remote/RemoteReadGenerator.java +++ b/annotations/src/main/java/mindustry/annotations/remote/RemoteReadGenerator.java @@ -1,12 +1,12 @@ package mindustry.annotations.remote; +import arc.struct.*; import arc.util.io.*; import com.squareup.javapoet.*; import mindustry.annotations.*; import mindustry.annotations.util.TypeIOResolver.*; import javax.lang.model.element.*; -import java.util.*; /** Generates code for reading remote invoke packets on the client and server. */ public class RemoteReadGenerator{ @@ -24,7 +24,7 @@ public class RemoteReadGenerator{ * @param packageName Full target package name. * @param needsPlayer Whether this read method requires a reference to the player sender. */ - public void generateFor(List entries, String className, String packageName, boolean needsPlayer) throws Exception{ + public void generateFor(Seq entries, String className, String packageName, boolean needsPlayer) throws Exception{ TypeSpec.Builder classBuilder = TypeSpec.classBuilder(className).addModifiers(Modifier.PUBLIC); classBuilder.addJavadoc(RemoteProcess.autogenWarning); diff --git a/annotations/src/main/java/mindustry/annotations/remote/RemoteWriteGenerator.java b/annotations/src/main/java/mindustry/annotations/remote/RemoteWriteGenerator.java index f048c23d60..606fe513bd 100644 --- a/annotations/src/main/java/mindustry/annotations/remote/RemoteWriteGenerator.java +++ b/annotations/src/main/java/mindustry/annotations/remote/RemoteWriteGenerator.java @@ -9,7 +9,6 @@ import mindustry.annotations.util.TypeIOResolver.*; import javax.lang.model.element.*; import java.io.*; -import java.util.*; /** Generates code for writing remote invoke packets on the client and server. */ public class RemoteWriteGenerator{ @@ -21,7 +20,7 @@ public class RemoteWriteGenerator{ } /** Generates all classes in this list. */ - public void generateFor(List entries, String packageName) throws IOException{ + public void generateFor(Seq entries, String packageName) throws IOException{ for(ClassEntry entry : entries){ //create builder @@ -66,7 +65,7 @@ public class RemoteWriteGenerator{ //create builder MethodSpec.Builder method = MethodSpec.methodBuilder(elem.getSimpleName().toString() + (forwarded ? "__forward" : "")) //add except suffix when forwarding - .addModifiers(Modifier.STATIC, Modifier.SYNCHRONIZED) + .addModifiers(Modifier.STATIC) .returns(void.class); //forwarded methods aren't intended for use, and are not public diff --git a/annotations/src/main/resources/classids.properties b/annotations/src/main/resources/classids.properties index 94542d6270..0920fbaca5 100644 --- a/annotations/src/main/resources/classids.properties +++ b/annotations/src/main/resources/classids.properties @@ -1,10 +1,16 @@ #Maps entity names to IDs. Autogenerated. alpha=0 +arkyid=37 +atrax=38 block=1 +bryde=40 cix=2 draug=3 +flare=36 +horizon=35 mace=4 +mega=28 mindustry.entities.comp.BuildingComp=22 mindustry.entities.comp.Buildingomp=11 mindustry.entities.comp.BulletComp=24 @@ -21,8 +27,16 @@ mindustry.type.Weather.WeatherComp=12 mindustry.type.Weather.WeatherStateComp=26 mindustry.world.blocks.campaign.CoreLauncher.LaunchCoreComp=13 mindustry.world.blocks.campaign.LaunchPad.LaunchPayloadComp=14 +mono=29 +nova=30 oculon=15 phantom=16 +poly=31 +pulsar=34 +quasar=32 +risse=33 +spirit=27 +spiroct=39 tau=17 trident=18 vanguard=19 diff --git a/annotations/src/main/resources/revisions/BlockUnitUnit/1.json b/annotations/src/main/resources/revisions/BlockUnitUnit/1.json new file mode 100644 index 0000000000..dd8fdb2784 --- /dev/null +++ b/annotations/src/main/resources/revisions/BlockUnitUnit/1.json @@ -0,0 +1 @@ +{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/BlockUnitUnit/2.json b/annotations/src/main/resources/revisions/BlockUnitUnit/2.json new file mode 100644 index 0000000000..a73abd7000 --- /dev/null +++ b/annotations/src/main/resources/revisions/BlockUnitUnit/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:deactivated,type:boolean,size:1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/BuilderCommanderMechMinerUnit/1.json b/annotations/src/main/resources/revisions/BuilderCommanderMechMinerUnit/1.json new file mode 100644 index 0000000000..6ed4e60191 --- /dev/null +++ b/annotations/src/main/resources/revisions/BuilderCommanderMechMinerUnit/1.json @@ -0,0 +1 @@ +{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:baseRotation,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mineTile,type:mindustry.world.Tile,size:-1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:plans,type:arc.struct.Queue,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/BuilderCommanderMechMinerUnit/2.json b/annotations/src/main/resources/revisions/BuilderCommanderMechMinerUnit/2.json new file mode 100644 index 0000000000..36a9e50333 --- /dev/null +++ b/annotations/src/main/resources/revisions/BuilderCommanderMechMinerUnit/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:baseRotation,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:deactivated,type:boolean,size:1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mineTile,type:mindustry.world.Tile,size:-1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:plans,type:arc.struct.Queue,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/BuilderLegsUnit/0.json b/annotations/src/main/resources/revisions/BuilderLegsUnit/0.json new file mode 100644 index 0000000000..719d06eac9 --- /dev/null +++ b/annotations/src/main/resources/revisions/BuilderLegsUnit/0.json @@ -0,0 +1 @@ +{fields:[{name:ammo,type:int,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:plans,type:arc.struct.Queue,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/BuilderLegsUnit/1.json b/annotations/src/main/resources/revisions/BuilderLegsUnit/1.json new file mode 100644 index 0000000000..885ef84f29 --- /dev/null +++ b/annotations/src/main/resources/revisions/BuilderLegsUnit/1.json @@ -0,0 +1 @@ +{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:plans,type:arc.struct.Queue,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/BuilderLegsUnit/2.json b/annotations/src/main/resources/revisions/BuilderLegsUnit/2.json new file mode 100644 index 0000000000..f6efa6f663 --- /dev/null +++ b/annotations/src/main/resources/revisions/BuilderLegsUnit/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:deactivated,type:boolean,size:1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:plans,type:arc.struct.Queue,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/BuilderMechUnit/1.json b/annotations/src/main/resources/revisions/BuilderMechUnit/1.json new file mode 100644 index 0000000000..a5d726ded8 --- /dev/null +++ b/annotations/src/main/resources/revisions/BuilderMechUnit/1.json @@ -0,0 +1 @@ +{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:baseRotation,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:plans,type:arc.struct.Queue,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/BuilderMechUnit/2.json b/annotations/src/main/resources/revisions/BuilderMechUnit/2.json new file mode 100644 index 0000000000..08f1b277b3 --- /dev/null +++ b/annotations/src/main/resources/revisions/BuilderMechUnit/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:baseRotation,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:deactivated,type:boolean,size:1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:plans,type:arc.struct.Queue,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/BuilderMinerPayloadUnit/1.json b/annotations/src/main/resources/revisions/BuilderMinerPayloadUnit/1.json new file mode 100644 index 0000000000..de89770ab4 --- /dev/null +++ b/annotations/src/main/resources/revisions/BuilderMinerPayloadUnit/1.json @@ -0,0 +1 @@ +{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mineTile,type:mindustry.world.Tile,size:-1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:payloads,type:arc.struct.Seq,size:-1},{name:plans,type:arc.struct.Queue,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/BuilderMinerPayloadUnit/2.json b/annotations/src/main/resources/revisions/BuilderMinerPayloadUnit/2.json new file mode 100644 index 0000000000..025bfc439c --- /dev/null +++ b/annotations/src/main/resources/revisions/BuilderMinerPayloadUnit/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:deactivated,type:boolean,size:1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mineTile,type:mindustry.world.Tile,size:-1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:payloads,type:arc.struct.Seq,size:-1},{name:plans,type:arc.struct.Queue,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/BuilderMinerTrailUnit/1.json b/annotations/src/main/resources/revisions/BuilderMinerTrailUnit/1.json new file mode 100644 index 0000000000..3a92a12856 --- /dev/null +++ b/annotations/src/main/resources/revisions/BuilderMinerTrailUnit/1.json @@ -0,0 +1 @@ +{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mineTile,type:mindustry.world.Tile,size:-1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:plans,type:arc.struct.Queue,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/BuilderMinerTrailUnit/2.json b/annotations/src/main/resources/revisions/BuilderMinerTrailUnit/2.json new file mode 100644 index 0000000000..d30cd7ad51 --- /dev/null +++ b/annotations/src/main/resources/revisions/BuilderMinerTrailUnit/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:deactivated,type:boolean,size:1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mineTile,type:mindustry.world.Tile,size:-1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:plans,type:arc.struct.Queue,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/BuilderMinerUnit/1.json b/annotations/src/main/resources/revisions/BuilderMinerUnit/1.json new file mode 100644 index 0000000000..3a92a12856 --- /dev/null +++ b/annotations/src/main/resources/revisions/BuilderMinerUnit/1.json @@ -0,0 +1 @@ +{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mineTile,type:mindustry.world.Tile,size:-1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:plans,type:arc.struct.Queue,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/BuilderMinerUnit/2.json b/annotations/src/main/resources/revisions/BuilderMinerUnit/2.json new file mode 100644 index 0000000000..d30cd7ad51 --- /dev/null +++ b/annotations/src/main/resources/revisions/BuilderMinerUnit/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:deactivated,type:boolean,size:1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mineTile,type:mindustry.world.Tile,size:-1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:plans,type:arc.struct.Queue,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/Bullet/0.json b/annotations/src/main/resources/revisions/Bullet/0.json index 4904375b03..f9e8a830d5 100644 --- a/annotations/src/main/resources/revisions/Bullet/0.json +++ b/annotations/src/main/resources/revisions/Bullet/0.json @@ -1 +1 @@ -{fields:[{name:collided,type:arc.struct.IntSeq,size:-1},{name:damage,type:float,size:4},{name:data,type:java.lang.Object,size:-1},{name:lifetime,type:float,size:4},{name:owner,type:Entityc,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:time,type:float,size:4},{name:type,type:mindustry.entities.bullet.BulletType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file +{fields:[{name:collided,type:arc.struct.IntSeq,size:-1},{name:damage,type:float,size:4},{name:data,type:java.lang.Object,size:-1},{name:lifetime,type:float,size:4},{name:owner,type:mindustry.gen.Entityc,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:time,type:float,size:4},{name:type,type:mindustry.entities.bullet.BulletType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/CommanderPayloadUnitWaterMove/0.json b/annotations/src/main/resources/revisions/CommanderPayloadUnitWaterMove/0.json new file mode 100644 index 0000000000..dbb981dfd1 --- /dev/null +++ b/annotations/src/main/resources/revisions/CommanderPayloadUnitWaterMove/0.json @@ -0,0 +1 @@ +{fields:[{name:ammo,type:int,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:payloads,type:arc.struct.Seq,size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/CommanderUnitWaterMove/1.json b/annotations/src/main/resources/revisions/CommanderUnitWaterMove/1.json new file mode 100644 index 0000000000..dd8fdb2784 --- /dev/null +++ b/annotations/src/main/resources/revisions/CommanderUnitWaterMove/1.json @@ -0,0 +1 @@ +{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/CommanderUnitWaterMove/2.json b/annotations/src/main/resources/revisions/CommanderUnitWaterMove/2.json new file mode 100644 index 0000000000..a73abd7000 --- /dev/null +++ b/annotations/src/main/resources/revisions/CommanderUnitWaterMove/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:deactivated,type:boolean,size:1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/EffectState/0.json b/annotations/src/main/resources/revisions/EffectState/0.json index 5ce16bf09c..88eb281607 100644 --- a/annotations/src/main/resources/revisions/EffectState/0.json +++ b/annotations/src/main/resources/revisions/EffectState/0.json @@ -1 +1 @@ -{fields:[{name:color,type:arc.graphics.Color,size:-1},{name:data,type:java.lang.Object,size:-1},{name:effect,type:mindustry.entities.Effect,size:-1},{name:lifetime,type:float,size:4},{name:offsetX,type:float,size:4},{name:offsetY,type:float,size:4},{name:parent,type:Posc,size:-1},{name:rotation,type:float,size:4},{name:time,type:float,size:4},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file +{fields:[{name:color,type:arc.graphics.Color,size:-1},{name:data,type:java.lang.Object,size:-1},{name:effect,type:mindustry.entities.Effect,size:-1},{name:lifetime,type:float,size:4},{name:offsetX,type:float,size:4},{name:offsetY,type:float,size:4},{name:parent,type:mindustry.gen.Posc,size:-1},{name:rotation,type:float,size:4},{name:time,type:float,size:4},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/LegsUnit/1.json b/annotations/src/main/resources/revisions/LegsUnit/1.json new file mode 100644 index 0000000000..dd8fdb2784 --- /dev/null +++ b/annotations/src/main/resources/revisions/LegsUnit/1.json @@ -0,0 +1 @@ +{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/LegsUnit/2.json b/annotations/src/main/resources/revisions/LegsUnit/2.json new file mode 100644 index 0000000000..a73abd7000 --- /dev/null +++ b/annotations/src/main/resources/revisions/LegsUnit/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:deactivated,type:boolean,size:1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/MechUnit/1.json b/annotations/src/main/resources/revisions/MechUnit/1.json new file mode 100644 index 0000000000..66897ee06f --- /dev/null +++ b/annotations/src/main/resources/revisions/MechUnit/1.json @@ -0,0 +1 @@ +{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:baseRotation,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/MechUnit/2.json b/annotations/src/main/resources/revisions/MechUnit/2.json new file mode 100644 index 0000000000..b113f6564d --- /dev/null +++ b/annotations/src/main/resources/revisions/MechUnit/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:baseRotation,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:deactivated,type:boolean,size:1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/MinerUnit/1.json b/annotations/src/main/resources/revisions/MinerUnit/1.json new file mode 100644 index 0000000000..9d58b6775a --- /dev/null +++ b/annotations/src/main/resources/revisions/MinerUnit/1.json @@ -0,0 +1 @@ +{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mineTile,type:mindustry.world.Tile,size:-1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/MinerUnit/2.json b/annotations/src/main/resources/revisions/MinerUnit/2.json new file mode 100644 index 0000000000..048458ea23 --- /dev/null +++ b/annotations/src/main/resources/revisions/MinerUnit/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:deactivated,type:boolean,size:1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mineTile,type:mindustry.world.Tile,size:-1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/UnitEntity/1.json b/annotations/src/main/resources/revisions/UnitEntity/1.json new file mode 100644 index 0000000000..dd8fdb2784 --- /dev/null +++ b/annotations/src/main/resources/revisions/UnitEntity/1.json @@ -0,0 +1 @@ +{version:1,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/annotations/src/main/resources/revisions/UnitEntity/2.json b/annotations/src/main/resources/revisions/UnitEntity/2.json new file mode 100644 index 0000000000..a73abd7000 --- /dev/null +++ b/annotations/src/main/resources/revisions/UnitEntity/2.json @@ -0,0 +1 @@ +{version:2,fields:[{name:ammo,type:float,size:4},{name:armor,type:float,size:4},{name:controller,type:mindustry.entities.units.UnitController,size:-1},{name:deactivated,type:boolean,size:1},{name:elevation,type:float,size:4},{name:health,type:float,size:4},{name:isShooting,type:boolean,size:1},{name:mounts,type:"mindustry.entities.units.WeaponMount[]",size:-1},{name:rotation,type:float,size:4},{name:shield,type:float,size:4},{name:spawnedByCore,type:boolean,size:1},{name:stack,type:mindustry.type.ItemStack,size:-1},{name:statuses,type:arc.struct.Seq,size:-1},{name:team,type:mindustry.game.Team,size:-1},{name:type,type:mindustry.type.UnitType,size:-1},{name:x,type:float,size:4},{name:y,type:float,size:4}]} \ No newline at end of file diff --git a/build.gradle b/build.gradle index c8f6e725a5..a986b4e058 100644 --- a/build.gradle +++ b/build.gradle @@ -325,7 +325,7 @@ project(":tools"){ implementation arcModule("natives:natives-box2d-desktop") implementation arcModule("backends:backend-headless") - implementation "org.reflections:reflections:0.9.12" + implementation "org.reflections:reflections:0.9.11" } } diff --git a/core/assets-raw/sprites/blocks/campaign/launchpod.png b/core/assets-raw/sprites/blocks/campaign/launchpod.png index 1579af96aa..05d80fc878 100644 Binary files a/core/assets-raw/sprites/blocks/campaign/launchpod.png and b/core/assets-raw/sprites/blocks/campaign/launchpod.png differ diff --git a/core/assets-raw/sprites/blocks/defense/parallax.png b/core/assets-raw/sprites/blocks/defense/parallax.png new file mode 100644 index 0000000000..d9224ab066 Binary files /dev/null and b/core/assets-raw/sprites/blocks/defense/parallax.png differ diff --git a/core/assets-raw/sprites/blocks/distribution/block-loader.png b/core/assets-raw/sprites/blocks/distribution/block-loader.png index bfd809c8b1..08c851a0cd 100644 Binary files a/core/assets-raw/sprites/blocks/distribution/block-loader.png and b/core/assets-raw/sprites/blocks/distribution/block-loader.png differ diff --git a/core/assets-raw/sprites/blocks/distribution/mass-driver-base.png b/core/assets-raw/sprites/blocks/distribution/mass-driver-base.png index da1f082874..4e52e7641d 100644 Binary files a/core/assets-raw/sprites/blocks/distribution/mass-driver-base.png and b/core/assets-raw/sprites/blocks/distribution/mass-driver-base.png differ diff --git a/core/assets-raw/sprites/blocks/distribution/mass-driver.png b/core/assets-raw/sprites/blocks/distribution/mass-driver.png index 8f835d1a40..c798c1370d 100644 Binary files a/core/assets-raw/sprites/blocks/distribution/mass-driver.png and b/core/assets-raw/sprites/blocks/distribution/mass-driver.png differ diff --git a/core/assets-raw/sprites/blocks/distribution/phase-conveyor.png b/core/assets-raw/sprites/blocks/distribution/phase-conveyor.png index 5bfa849c46..505269a0d4 100644 Binary files a/core/assets-raw/sprites/blocks/distribution/phase-conveyor.png and b/core/assets-raw/sprites/blocks/distribution/phase-conveyor.png differ diff --git a/core/assets-raw/sprites/blocks/drills/blast-drill-rotator.png b/core/assets-raw/sprites/blocks/drills/blast-drill-rotator.png index eff0a9e325..4f17e71eee 100644 Binary files a/core/assets-raw/sprites/blocks/drills/blast-drill-rotator.png and b/core/assets-raw/sprites/blocks/drills/blast-drill-rotator.png differ diff --git a/core/assets-raw/sprites/blocks/drills/laser-drill.png b/core/assets-raw/sprites/blocks/drills/laser-drill.png index b0069ad9e9..d85cd065f7 100644 Binary files a/core/assets-raw/sprites/blocks/drills/laser-drill.png and b/core/assets-raw/sprites/blocks/drills/laser-drill.png differ diff --git a/core/assets-raw/sprites/blocks/drills/oil-extractor-rotator.png b/core/assets-raw/sprites/blocks/drills/oil-extractor-rotator.png index a076b412c0..c10a7b78ce 100644 Binary files a/core/assets-raw/sprites/blocks/drills/oil-extractor-rotator.png and b/core/assets-raw/sprites/blocks/drills/oil-extractor-rotator.png differ diff --git a/core/assets-raw/sprites/blocks/drills/water-extractor-rotator.png b/core/assets-raw/sprites/blocks/drills/water-extractor-rotator.png index c20a0aea4c..ef62105c64 100644 Binary files a/core/assets-raw/sprites/blocks/drills/water-extractor-rotator.png and b/core/assets-raw/sprites/blocks/drills/water-extractor-rotator.png differ diff --git a/core/assets-raw/sprites/blocks/environment/pine.png b/core/assets-raw/sprites/blocks/environment/pine.png index 23c68c6efc..6c20233959 100644 Binary files a/core/assets-raw/sprites/blocks/environment/pine.png and b/core/assets-raw/sprites/blocks/environment/pine.png differ diff --git a/core/assets-raw/sprites/blocks/environment/snow-pine.png b/core/assets-raw/sprites/blocks/environment/snow-pine.png index 7c417ddcd8..af82f2658c 100644 Binary files a/core/assets-raw/sprites/blocks/environment/snow-pine.png and b/core/assets-raw/sprites/blocks/environment/snow-pine.png differ diff --git a/core/assets-raw/sprites/blocks/environment/spore-pine.png b/core/assets-raw/sprites/blocks/environment/spore-pine.png index b7ad94e20e..c4f0ebfb3e 100644 Binary files a/core/assets-raw/sprites/blocks/environment/spore-pine.png and b/core/assets-raw/sprites/blocks/environment/spore-pine.png differ diff --git a/core/assets-raw/sprites/blocks/liquid/phase-conduit.png b/core/assets-raw/sprites/blocks/liquid/phase-conduit.png index 73e4d9cf79..ec2633c5cc 100644 Binary files a/core/assets-raw/sprites/blocks/liquid/phase-conduit.png and b/core/assets-raw/sprites/blocks/liquid/phase-conduit.png differ diff --git a/core/assets-raw/sprites/blocks/power/power-source.png b/core/assets-raw/sprites/blocks/power/power-source.png index b8f43dbece..1cc73a2ce0 100644 Binary files a/core/assets-raw/sprites/blocks/power/power-source.png and b/core/assets-raw/sprites/blocks/power/power-source.png differ diff --git a/core/assets-raw/sprites/blocks/power/power-void.png b/core/assets-raw/sprites/blocks/power/power-void.png index 6ca39646bb..13aa45569c 100644 Binary files a/core/assets-raw/sprites/blocks/power/power-void.png and b/core/assets-raw/sprites/blocks/power/power-void.png differ diff --git a/core/assets-raw/sprites/blocks/power/rtg-generator.png b/core/assets-raw/sprites/blocks/power/rtg-generator.png index a38888ed7d..0a6766ab69 100644 Binary files a/core/assets-raw/sprites/blocks/power/rtg-generator.png and b/core/assets-raw/sprites/blocks/power/rtg-generator.png differ diff --git a/core/assets-raw/sprites/blocks/power/solar-panel.png b/core/assets-raw/sprites/blocks/power/solar-panel.png index 9b960682a0..7416d3400c 100644 Binary files a/core/assets-raw/sprites/blocks/power/solar-panel.png and b/core/assets-raw/sprites/blocks/power/solar-panel.png differ diff --git a/core/assets-raw/sprites/blocks/power/thorium-reactor.png b/core/assets-raw/sprites/blocks/power/thorium-reactor.png index 902d120898..e3a6656b3f 100644 Binary files a/core/assets-raw/sprites/blocks/power/thorium-reactor.png and b/core/assets-raw/sprites/blocks/power/thorium-reactor.png differ diff --git a/core/assets-raw/sprites/blocks/production/cultivator-top.png b/core/assets-raw/sprites/blocks/production/cultivator-top.png index 07a68428de..b87054124b 100644 Binary files a/core/assets-raw/sprites/blocks/production/cultivator-top.png and b/core/assets-raw/sprites/blocks/production/cultivator-top.png differ diff --git a/core/assets-raw/sprites/blocks/production/pulverizer.png b/core/assets-raw/sprites/blocks/production/pulverizer.png index ff0d2ad330..d10680f33c 100644 Binary files a/core/assets-raw/sprites/blocks/production/pulverizer.png and b/core/assets-raw/sprites/blocks/production/pulverizer.png differ diff --git a/core/assets-raw/sprites/blocks/production/spore-press-frame0.png b/core/assets-raw/sprites/blocks/production/spore-press-frame0.png index 84f6b39c9f..a8b86d93bd 100644 Binary files a/core/assets-raw/sprites/blocks/production/spore-press-frame0.png and b/core/assets-raw/sprites/blocks/production/spore-press-frame0.png differ diff --git a/core/assets-raw/sprites/blocks/production/spore-press-frame1.png b/core/assets-raw/sprites/blocks/production/spore-press-frame1.png index d025f1c00a..9b403cb9ce 100644 Binary files a/core/assets-raw/sprites/blocks/production/spore-press-frame1.png and b/core/assets-raw/sprites/blocks/production/spore-press-frame1.png differ diff --git a/core/assets-raw/sprites/blocks/production/spore-press-frame2.png b/core/assets-raw/sprites/blocks/production/spore-press-frame2.png index 3491c2887f..34f8aad11b 100644 Binary files a/core/assets-raw/sprites/blocks/production/spore-press-frame2.png and b/core/assets-raw/sprites/blocks/production/spore-press-frame2.png differ diff --git a/core/assets-raw/sprites/blocks/production/spore-press.png b/core/assets-raw/sprites/blocks/production/spore-press.png index 3400f9d034..ae5aee87b3 100644 Binary files a/core/assets-raw/sprites/blocks/production/spore-press.png and b/core/assets-raw/sprites/blocks/production/spore-press.png differ diff --git a/core/assets-raw/sprites/blocks/storage/vault.png b/core/assets-raw/sprites/blocks/storage/vault.png index a9021d770a..38f46d97aa 100644 Binary files a/core/assets-raw/sprites/blocks/storage/vault.png and b/core/assets-raw/sprites/blocks/storage/vault.png differ diff --git a/core/assets-raw/sprites/blocks/turrets/swarmer.png b/core/assets-raw/sprites/blocks/turrets/swarmer.png index 8caefc415a..c8c5cd54cf 100644 Binary files a/core/assets-raw/sprites/blocks/turrets/swarmer.png and b/core/assets-raw/sprites/blocks/turrets/swarmer.png differ diff --git a/core/assets-raw/sprites/effects/parallax-laser-end.png b/core/assets-raw/sprites/effects/parallax-laser-end.png new file mode 100644 index 0000000000..f81d8c09e9 Binary files /dev/null and b/core/assets-raw/sprites/effects/parallax-laser-end.png differ diff --git a/core/assets-raw/sprites/effects/parallax-laser.png b/core/assets-raw/sprites/effects/parallax-laser.png new file mode 100644 index 0000000000..8e05d41dcb Binary files /dev/null and b/core/assets-raw/sprites/effects/parallax-laser.png differ diff --git a/core/assets-raw/sprites/ui/button.9.png b/core/assets-raw/sprites/ui/button.9.png index c8fa691c60..8a01a045d1 100644 Binary files a/core/assets-raw/sprites/ui/button.9.png and b/core/assets-raw/sprites/ui/button.9.png differ diff --git a/core/assets-raw/sprites/units/lich-cell.png b/core/assets-raw/sprites/units/antumbra-cell.png similarity index 100% rename from core/assets-raw/sprites/units/lich-cell.png rename to core/assets-raw/sprites/units/antumbra-cell.png diff --git a/core/assets-raw/sprites/units/lich.png b/core/assets-raw/sprites/units/antumbra.png similarity index 100% rename from core/assets-raw/sprites/units/lich.png rename to core/assets-raw/sprites/units/antumbra.png diff --git a/core/assets-raw/sprites/units/cix-cell.png b/core/assets-raw/sprites/units/arkyid-cell.png similarity index 100% rename from core/assets-raw/sprites/units/cix-cell.png rename to core/assets-raw/sprites/units/arkyid-cell.png diff --git a/core/assets-raw/sprites/units/cix-foot.png b/core/assets-raw/sprites/units/arkyid-foot.png similarity index 100% rename from core/assets-raw/sprites/units/cix-foot.png rename to core/assets-raw/sprites/units/arkyid-foot.png diff --git a/core/assets-raw/sprites/units/cix-joint-base.png b/core/assets-raw/sprites/units/arkyid-joint-base.png similarity index 100% rename from core/assets-raw/sprites/units/cix-joint-base.png rename to core/assets-raw/sprites/units/arkyid-joint-base.png diff --git a/core/assets-raw/sprites/units/cix-leg-base.png b/core/assets-raw/sprites/units/arkyid-leg-base.png similarity index 100% rename from core/assets-raw/sprites/units/cix-leg-base.png rename to core/assets-raw/sprites/units/arkyid-leg-base.png diff --git a/core/assets-raw/sprites/units/cix-leg.png b/core/assets-raw/sprites/units/arkyid-leg.png similarity index 100% rename from core/assets-raw/sprites/units/cix-leg.png rename to core/assets-raw/sprites/units/arkyid-leg.png diff --git a/core/assets-raw/sprites/units/cix.png b/core/assets-raw/sprites/units/arkyid.png similarity index 100% rename from core/assets-raw/sprites/units/cix.png rename to core/assets-raw/sprites/units/arkyid.png diff --git a/core/assets-raw/sprites/units/eruptor-base.png b/core/assets-raw/sprites/units/atrax-base.png similarity index 100% rename from core/assets-raw/sprites/units/eruptor-base.png rename to core/assets-raw/sprites/units/atrax-base.png diff --git a/core/assets-raw/sprites/units/atrax-cell.png b/core/assets-raw/sprites/units/atrax-cell.png new file mode 100644 index 0000000000..9b8baf165d Binary files /dev/null and b/core/assets-raw/sprites/units/atrax-cell.png differ diff --git a/core/assets-raw/sprites/units/eruptor-foot.png b/core/assets-raw/sprites/units/atrax-foot.png similarity index 100% rename from core/assets-raw/sprites/units/eruptor-foot.png rename to core/assets-raw/sprites/units/atrax-foot.png diff --git a/core/assets-raw/sprites/units/eruptor-joint.png b/core/assets-raw/sprites/units/atrax-joint.png similarity index 100% rename from core/assets-raw/sprites/units/eruptor-joint.png rename to core/assets-raw/sprites/units/atrax-joint.png diff --git a/core/assets-raw/sprites/units/eruptor-leg-base.png b/core/assets-raw/sprites/units/atrax-leg-base.png similarity index 100% rename from core/assets-raw/sprites/units/eruptor-leg-base.png rename to core/assets-raw/sprites/units/atrax-leg-base.png diff --git a/core/assets-raw/sprites/units/eruptor-leg.png b/core/assets-raw/sprites/units/atrax-leg.png similarity index 100% rename from core/assets-raw/sprites/units/eruptor-leg.png rename to core/assets-raw/sprites/units/atrax-leg.png diff --git a/core/assets-raw/sprites/units/atrax.png b/core/assets-raw/sprites/units/atrax.png new file mode 100644 index 0000000000..b73d3046d0 Binary files /dev/null and b/core/assets-raw/sprites/units/atrax.png differ diff --git a/core/assets-raw/sprites/units/beta-cell.png b/core/assets-raw/sprites/units/beta-cell.png new file mode 100644 index 0000000000..7b53cad13e Binary files /dev/null and b/core/assets-raw/sprites/units/beta-cell.png differ diff --git a/core/assets-raw/sprites/units/beta.png b/core/assets-raw/sprites/units/beta.png new file mode 100644 index 0000000000..b1bca129e6 Binary files /dev/null and b/core/assets-raw/sprites/units/beta.png differ diff --git a/core/assets-raw/sprites/units/bryde-cell.png b/core/assets-raw/sprites/units/bryde-cell.png new file mode 100644 index 0000000000..830aa8ba1e Binary files /dev/null and b/core/assets-raw/sprites/units/bryde-cell.png differ diff --git a/core/assets-raw/sprites/units/bryde.png b/core/assets-raw/sprites/units/bryde.png new file mode 100644 index 0000000000..b362cb5f17 Binary files /dev/null and b/core/assets-raw/sprites/units/bryde.png differ diff --git a/core/assets-raw/sprites/units/cix-old.png b/core/assets-raw/sprites/units/cix-old.png deleted file mode 100644 index 7996cd3aa4..0000000000 Binary files a/core/assets-raw/sprites/units/cix-old.png and /dev/null differ diff --git a/core/assets-raw/sprites/units/crawler.png b/core/assets-raw/sprites/units/crawler.png index 5a60b1de27..0184ad19ba 100644 Binary files a/core/assets-raw/sprites/units/crawler.png and b/core/assets-raw/sprites/units/crawler.png differ diff --git a/core/assets-raw/sprites/units/delta-cell.png b/core/assets-raw/sprites/units/delta-cell.png deleted file mode 100644 index ee7c15a9dd..0000000000 Binary files a/core/assets-raw/sprites/units/delta-cell.png and /dev/null differ diff --git a/core/assets-raw/sprites/units/delta.png b/core/assets-raw/sprites/units/delta.png deleted file mode 100644 index adf85f8795..0000000000 Binary files a/core/assets-raw/sprites/units/delta.png and /dev/null differ diff --git a/core/assets-raw/sprites/units/draug-cell.png b/core/assets-raw/sprites/units/draug-cell.png deleted file mode 100644 index 439d7b8ea3..0000000000 Binary files a/core/assets-raw/sprites/units/draug-cell.png and /dev/null differ diff --git a/core/assets-raw/sprites/units/draug.png b/core/assets-raw/sprites/units/draug.png deleted file mode 100644 index 004e23ea96..0000000000 Binary files a/core/assets-raw/sprites/units/draug.png and /dev/null differ diff --git a/core/assets-raw/sprites/units/reaper-cell.png b/core/assets-raw/sprites/units/eclipse-cell.png similarity index 100% rename from core/assets-raw/sprites/units/reaper-cell.png rename to core/assets-raw/sprites/units/eclipse-cell.png diff --git a/core/assets-raw/sprites/units/reaper.aseprite b/core/assets-raw/sprites/units/eclipse.aseprite similarity index 100% rename from core/assets-raw/sprites/units/reaper.aseprite rename to core/assets-raw/sprites/units/eclipse.aseprite diff --git a/core/assets-raw/sprites/units/eclipse.png b/core/assets-raw/sprites/units/eclipse.png new file mode 100644 index 0000000000..d53b0da185 Binary files /dev/null and b/core/assets-raw/sprites/units/eclipse.png differ diff --git a/core/assets-raw/sprites/units/eruptor-cell.png b/core/assets-raw/sprites/units/eruptor-cell.png deleted file mode 100644 index f98bfd223b..0000000000 Binary files a/core/assets-raw/sprites/units/eruptor-cell.png and /dev/null differ diff --git a/core/assets-raw/sprites/units/eruptor.png b/core/assets-raw/sprites/units/eruptor.png deleted file mode 100644 index 96f255db16..0000000000 Binary files a/core/assets-raw/sprites/units/eruptor.png and /dev/null differ diff --git a/core/assets-raw/sprites/units/wraith.png b/core/assets-raw/sprites/units/flare.png similarity index 100% rename from core/assets-raw/sprites/units/wraith.png rename to core/assets-raw/sprites/units/flare.png diff --git a/core/assets-raw/sprites/units/glaive-cell.png b/core/assets-raw/sprites/units/gamma-cell.png similarity index 100% rename from core/assets-raw/sprites/units/glaive-cell.png rename to core/assets-raw/sprites/units/gamma-cell.png diff --git a/core/assets-raw/sprites/units/gamma.png b/core/assets-raw/sprites/units/gamma.png new file mode 100644 index 0000000000..bbc3c7a57a Binary files /dev/null and b/core/assets-raw/sprites/units/gamma.png differ diff --git a/core/assets-raw/sprites/units/glaive.png b/core/assets-raw/sprites/units/glaive.png deleted file mode 100644 index 4553066c91..0000000000 Binary files a/core/assets-raw/sprites/units/glaive.png and /dev/null differ diff --git a/core/assets-raw/sprites/units/ghoul-cell.png b/core/assets-raw/sprites/units/horizon-cell.png similarity index 100% rename from core/assets-raw/sprites/units/ghoul-cell.png rename to core/assets-raw/sprites/units/horizon-cell.png diff --git a/core/assets-raw/sprites/units/ghoul.png b/core/assets-raw/sprites/units/horizon.png similarity index 100% rename from core/assets-raw/sprites/units/ghoul.png rename to core/assets-raw/sprites/units/horizon.png diff --git a/core/assets-raw/sprites/units/mega-cell.png b/core/assets-raw/sprites/units/mega-cell.png new file mode 100644 index 0000000000..4ea5a1d2e7 Binary files /dev/null and b/core/assets-raw/sprites/units/mega-cell.png differ diff --git a/core/assets-raw/sprites/units/mega.png b/core/assets-raw/sprites/units/mega.png new file mode 100644 index 0000000000..9fdade2d20 Binary files /dev/null and b/core/assets-raw/sprites/units/mega.png differ diff --git a/core/assets-raw/sprites/units/minke-cell.png b/core/assets-raw/sprites/units/minke-cell.png new file mode 100644 index 0000000000..e8194f1819 Binary files /dev/null and b/core/assets-raw/sprites/units/minke-cell.png differ diff --git a/core/assets-raw/sprites/units/minke.png b/core/assets-raw/sprites/units/minke.png new file mode 100644 index 0000000000..99079defd5 Binary files /dev/null and b/core/assets-raw/sprites/units/minke.png differ diff --git a/core/assets-raw/sprites/units/spirit-cell.png b/core/assets-raw/sprites/units/mono-cell.png similarity index 100% rename from core/assets-raw/sprites/units/spirit-cell.png rename to core/assets-raw/sprites/units/mono-cell.png diff --git a/core/assets-raw/sprites/units/mono.png b/core/assets-raw/sprites/units/mono.png new file mode 100644 index 0000000000..573d2d0655 Binary files /dev/null and b/core/assets-raw/sprites/units/mono.png differ diff --git a/core/assets-raw/sprites/units/tau-base.png b/core/assets-raw/sprites/units/nova-base.png similarity index 100% rename from core/assets-raw/sprites/units/tau-base.png rename to core/assets-raw/sprites/units/nova-base.png diff --git a/core/assets-raw/sprites/units/tau-cell.png b/core/assets-raw/sprites/units/nova-cell.png similarity index 100% rename from core/assets-raw/sprites/units/tau-cell.png rename to core/assets-raw/sprites/units/nova-cell.png diff --git a/core/assets-raw/sprites/units/tau-leg.png b/core/assets-raw/sprites/units/nova-leg.png similarity index 100% rename from core/assets-raw/sprites/units/tau-leg.png rename to core/assets-raw/sprites/units/nova-leg.png diff --git a/core/assets-raw/sprites/units/tau.png b/core/assets-raw/sprites/units/nova.png similarity index 100% rename from core/assets-raw/sprites/units/tau.png rename to core/assets-raw/sprites/units/nova.png diff --git a/core/assets-raw/sprites/units/oculon-armor.png b/core/assets-raw/sprites/units/oculon-armor.png deleted file mode 100644 index 47d531379a..0000000000 Binary files a/core/assets-raw/sprites/units/oculon-armor.png and /dev/null differ diff --git a/core/assets-raw/sprites/units/oculon-base-old.png b/core/assets-raw/sprites/units/oculon-base-old.png deleted file mode 100644 index 61fb31cf47..0000000000 Binary files a/core/assets-raw/sprites/units/oculon-base-old.png and /dev/null differ diff --git a/core/assets-raw/sprites/units/oculon-cell-old.png b/core/assets-raw/sprites/units/oculon-cell-old.png deleted file mode 100644 index 8930e79cf5..0000000000 Binary files a/core/assets-raw/sprites/units/oculon-cell-old.png and /dev/null differ diff --git a/core/assets-raw/sprites/units/oculon-cell.png b/core/assets-raw/sprites/units/oculon-cell.png deleted file mode 100644 index 1ee9c9c5fc..0000000000 Binary files a/core/assets-raw/sprites/units/oculon-cell.png and /dev/null differ diff --git a/core/assets-raw/sprites/units/oculon-old.png b/core/assets-raw/sprites/units/oculon-old.png deleted file mode 100644 index 7e1d6cddd2..0000000000 Binary files a/core/assets-raw/sprites/units/oculon-old.png and /dev/null differ diff --git a/core/assets-raw/sprites/units/phantom.png b/core/assets-raw/sprites/units/phantom.png deleted file mode 100644 index 33df9c8438..0000000000 Binary files a/core/assets-raw/sprites/units/phantom.png and /dev/null differ diff --git a/core/assets-raw/sprites/units/phantom-cell.png b/core/assets-raw/sprites/units/poly-cell.png similarity index 100% rename from core/assets-raw/sprites/units/phantom-cell.png rename to core/assets-raw/sprites/units/poly-cell.png diff --git a/core/assets-raw/sprites/units/poly.png b/core/assets-raw/sprites/units/poly.png new file mode 100644 index 0000000000..b6c57ac149 Binary files /dev/null and b/core/assets-raw/sprites/units/poly.png differ diff --git a/core/assets-raw/sprites/units/oculon-leg-old.png b/core/assets-raw/sprites/units/pulsar-base.png similarity index 53% rename from core/assets-raw/sprites/units/oculon-leg-old.png rename to core/assets-raw/sprites/units/pulsar-base.png index d1f2fae6d6..f076436987 100644 Binary files a/core/assets-raw/sprites/units/oculon-leg-old.png and b/core/assets-raw/sprites/units/pulsar-base.png differ diff --git a/core/assets-raw/sprites/units/pulsar-cell.png b/core/assets-raw/sprites/units/pulsar-cell.png new file mode 100644 index 0000000000..9268d38651 Binary files /dev/null and b/core/assets-raw/sprites/units/pulsar-cell.png differ diff --git a/core/assets-raw/sprites/units/pulsar-leg.png b/core/assets-raw/sprites/units/pulsar-leg.png new file mode 100644 index 0000000000..9d3a4ec2af Binary files /dev/null and b/core/assets-raw/sprites/units/pulsar-leg.png differ diff --git a/core/assets-raw/sprites/units/pulsar.png b/core/assets-raw/sprites/units/pulsar.png new file mode 100644 index 0000000000..eb49cd3751 Binary files /dev/null and b/core/assets-raw/sprites/units/pulsar.png differ diff --git a/core/assets-raw/sprites/units/oculon-base.png b/core/assets-raw/sprites/units/quasar-base.png similarity index 100% rename from core/assets-raw/sprites/units/oculon-base.png rename to core/assets-raw/sprites/units/quasar-base.png diff --git a/core/assets-raw/sprites/units/quasar-cell.png b/core/assets-raw/sprites/units/quasar-cell.png new file mode 100644 index 0000000000..d15d720349 Binary files /dev/null and b/core/assets-raw/sprites/units/quasar-cell.png differ diff --git a/core/assets-raw/sprites/units/oculon-leg.png b/core/assets-raw/sprites/units/quasar-leg.png similarity index 100% rename from core/assets-raw/sprites/units/oculon-leg.png rename to core/assets-raw/sprites/units/quasar-leg.png diff --git a/core/assets-raw/sprites/units/oculon.png b/core/assets-raw/sprites/units/quasar.png similarity index 100% rename from core/assets-raw/sprites/units/oculon.png rename to core/assets-raw/sprites/units/quasar.png diff --git a/core/assets-raw/sprites/units/reaper.png b/core/assets-raw/sprites/units/reaper.png deleted file mode 100644 index 649d19545a..0000000000 Binary files a/core/assets-raw/sprites/units/reaper.png and /dev/null differ diff --git a/core/assets-raw/sprites/units/risse-cell.png b/core/assets-raw/sprites/units/risse-cell.png new file mode 100644 index 0000000000..f01db0e5b1 Binary files /dev/null and b/core/assets-raw/sprites/units/risse-cell.png differ diff --git a/core/assets-raw/sprites/units/risse.png b/core/assets-raw/sprites/units/risse.png new file mode 100644 index 0000000000..e063474798 Binary files /dev/null and b/core/assets-raw/sprites/units/risse.png differ diff --git a/core/assets-raw/sprites/units/spirit.png b/core/assets-raw/sprites/units/spirit.png deleted file mode 100644 index 1f9a4e89ec..0000000000 Binary files a/core/assets-raw/sprites/units/spirit.png and /dev/null differ diff --git a/core/assets-raw/sprites/units/spiroct-cell.png b/core/assets-raw/sprites/units/spiroct-cell.png new file mode 100644 index 0000000000..180d3e986b Binary files /dev/null and b/core/assets-raw/sprites/units/spiroct-cell.png differ diff --git a/core/assets-raw/sprites/units/spiroct-foot.png b/core/assets-raw/sprites/units/spiroct-foot.png new file mode 100644 index 0000000000..c501d7843d Binary files /dev/null and b/core/assets-raw/sprites/units/spiroct-foot.png differ diff --git a/core/assets-raw/sprites/units/spiroct-joint.png b/core/assets-raw/sprites/units/spiroct-joint.png new file mode 100644 index 0000000000..1fe4fdbd3e Binary files /dev/null and b/core/assets-raw/sprites/units/spiroct-joint.png differ diff --git a/core/assets-raw/sprites/units/spiroct-leg-base.png b/core/assets-raw/sprites/units/spiroct-leg-base.png new file mode 100644 index 0000000000..0c2a1783e1 Binary files /dev/null and b/core/assets-raw/sprites/units/spiroct-leg-base.png differ diff --git a/core/assets-raw/sprites/units/spiroct-leg.png b/core/assets-raw/sprites/units/spiroct-leg.png new file mode 100644 index 0000000000..cc9081fce9 Binary files /dev/null and b/core/assets-raw/sprites/units/spiroct-leg.png differ diff --git a/core/assets-raw/sprites/units/spiroct.png b/core/assets-raw/sprites/units/spiroct.png new file mode 100644 index 0000000000..a69a0b2657 Binary files /dev/null and b/core/assets-raw/sprites/units/spiroct.png differ diff --git a/core/assets-raw/sprites/units/trident-cell.png b/core/assets-raw/sprites/units/trident-cell.png deleted file mode 100644 index 4badf79a8d..0000000000 Binary files a/core/assets-raw/sprites/units/trident-cell.png and /dev/null differ diff --git a/core/assets-raw/sprites/units/trident.png b/core/assets-raw/sprites/units/trident.png deleted file mode 100644 index 5e8f01284c..0000000000 Binary files a/core/assets-raw/sprites/units/trident.png and /dev/null differ diff --git a/core/assets-raw/sprites/units/weapons/antumbra-missiles.png b/core/assets-raw/sprites/units/weapons/antumbra-missiles.png new file mode 100644 index 0000000000..a37cbfa449 Binary files /dev/null and b/core/assets-raw/sprites/units/weapons/antumbra-missiles.png differ diff --git a/core/assets-raw/sprites/units/weapons/artillery-mount.png b/core/assets-raw/sprites/units/weapons/artillery-mount.png new file mode 100644 index 0000000000..ac6552e539 Binary files /dev/null and b/core/assets-raw/sprites/units/weapons/artillery-mount.png differ diff --git a/core/assets-raw/sprites/units/weapons/artillery.png b/core/assets-raw/sprites/units/weapons/artillery.png index 27572467bf..fe8369d27a 100644 Binary files a/core/assets-raw/sprites/units/weapons/artillery.png and b/core/assets-raw/sprites/units/weapons/artillery.png differ diff --git a/core/assets-raw/sprites/units/weapons/beam-weapon.png b/core/assets-raw/sprites/units/weapons/beam-weapon.png index 0e802877f7..d4784aa69f 100644 Binary files a/core/assets-raw/sprites/units/weapons/beam-weapon.png and b/core/assets-raw/sprites/units/weapons/beam-weapon.png differ diff --git a/core/assets-raw/sprites/units/weapons/chaos.png b/core/assets-raw/sprites/units/weapons/chaos.png index 9c7f91085c..442d5b0417 100644 Binary files a/core/assets-raw/sprites/units/weapons/chaos.png and b/core/assets-raw/sprites/units/weapons/chaos.png differ diff --git a/core/assets-raw/sprites/units/weapons/reaper-weapon.png b/core/assets-raw/sprites/units/weapons/eclipse-weapon.png similarity index 100% rename from core/assets-raw/sprites/units/weapons/reaper-weapon.png rename to core/assets-raw/sprites/units/weapons/eclipse-weapon.png diff --git a/core/assets-raw/sprites/units/weapons/eradication.png b/core/assets-raw/sprites/units/weapons/eradication.png index 15a7748677..231158b058 100644 Binary files a/core/assets-raw/sprites/units/weapons/eradication.png and b/core/assets-raw/sprites/units/weapons/eradication.png differ diff --git a/core/assets-raw/sprites/units/weapons/eruption.png b/core/assets-raw/sprites/units/weapons/eruption.png index d17685fc57..172e9835e6 100644 Binary files a/core/assets-raw/sprites/units/weapons/eruption.png and b/core/assets-raw/sprites/units/weapons/eruption.png differ diff --git a/core/assets-raw/sprites/units/weapons/flakgun.png b/core/assets-raw/sprites/units/weapons/flakgun.png index e73c50aed2..12ee89862f 100644 Binary files a/core/assets-raw/sprites/units/weapons/flakgun.png and b/core/assets-raw/sprites/units/weapons/flakgun.png differ diff --git a/core/assets-raw/sprites/units/weapons/flamethrower.png b/core/assets-raw/sprites/units/weapons/flamethrower.png index 8887f4296d..6aac73acd3 100644 Binary files a/core/assets-raw/sprites/units/weapons/flamethrower.png and b/core/assets-raw/sprites/units/weapons/flamethrower.png differ diff --git a/core/assets-raw/sprites/units/weapons/heal-shotgun-weapon.png b/core/assets-raw/sprites/units/weapons/heal-shotgun-weapon.png new file mode 100644 index 0000000000..5b85b778a7 Binary files /dev/null and b/core/assets-raw/sprites/units/weapons/heal-shotgun-weapon.png differ diff --git a/core/assets-raw/sprites/units/weapons/heal-weapon-mount.png b/core/assets-raw/sprites/units/weapons/heal-weapon-mount.png index cebc522f86..2ff4d59c4a 100644 Binary files a/core/assets-raw/sprites/units/weapons/heal-weapon-mount.png and b/core/assets-raw/sprites/units/weapons/heal-weapon-mount.png differ diff --git a/core/assets-raw/sprites/units/weapons/heal-weapon.png b/core/assets-raw/sprites/units/weapons/heal-weapon.png index e7b61dd884..7ab9309d40 100644 Binary files a/core/assets-raw/sprites/units/weapons/heal-weapon.png and b/core/assets-raw/sprites/units/weapons/heal-weapon.png differ diff --git a/core/assets-raw/sprites/units/weapons/large-artillery.png b/core/assets-raw/sprites/units/weapons/large-artillery.png new file mode 100644 index 0000000000..b5f6577bed Binary files /dev/null and b/core/assets-raw/sprites/units/weapons/large-artillery.png differ diff --git a/core/assets-raw/sprites/units/weapons/large-weapon.png b/core/assets-raw/sprites/units/weapons/large-weapon.png index b93338cfca..426fbfc470 100644 Binary files a/core/assets-raw/sprites/units/weapons/large-weapon.png and b/core/assets-raw/sprites/units/weapons/large-weapon.png differ diff --git a/core/assets-raw/sprites/units/weapons/lich-missiles.png b/core/assets-raw/sprites/units/weapons/lich-missiles.png deleted file mode 100644 index d8fbd8549b..0000000000 Binary files a/core/assets-raw/sprites/units/weapons/lich-missiles.png and /dev/null differ diff --git a/core/assets-raw/sprites/units/weapons/missiles.png b/core/assets-raw/sprites/units/weapons/missiles.png index 89e8713f23..38c0548ca6 100644 Binary files a/core/assets-raw/sprites/units/weapons/missiles.png and b/core/assets-raw/sprites/units/weapons/missiles.png differ diff --git a/core/assets-raw/sprites/units/weapons/mount-purple-weapon.png b/core/assets-raw/sprites/units/weapons/mount-purple-weapon.png new file mode 100644 index 0000000000..d34950accd Binary files /dev/null and b/core/assets-raw/sprites/units/weapons/mount-purple-weapon.png differ diff --git a/core/assets-raw/sprites/units/weapons/mount-weapon.png b/core/assets-raw/sprites/units/weapons/mount-weapon.png index 2af685bf2b..f6176f26ea 100644 Binary files a/core/assets-raw/sprites/units/weapons/mount-weapon.png and b/core/assets-raw/sprites/units/weapons/mount-weapon.png differ diff --git a/core/assets-raw/sprites/units/weapons/revenant-missiles.png b/core/assets-raw/sprites/units/weapons/revenant-missiles.png deleted file mode 100644 index bc7dd1f0a5..0000000000 Binary files a/core/assets-raw/sprites/units/weapons/revenant-missiles.png and /dev/null differ diff --git a/core/assets-raw/sprites/units/weapons/small-basic-weapon.png b/core/assets-raw/sprites/units/weapons/small-basic-weapon.png index a5c7793ff2..e4833342a4 100644 Binary files a/core/assets-raw/sprites/units/weapons/small-basic-weapon.png and b/core/assets-raw/sprites/units/weapons/small-basic-weapon.png differ diff --git a/core/assets-raw/sprites/units/weapons/small-mount-weapon.png b/core/assets-raw/sprites/units/weapons/small-mount-weapon.png new file mode 100644 index 0000000000..f928b890d6 Binary files /dev/null and b/core/assets-raw/sprites/units/weapons/small-mount-weapon.png differ diff --git a/core/assets-raw/sprites/units/weapons/small-weapon.png b/core/assets-raw/sprites/units/weapons/small-weapon.png index 7d1e246dd4..ee4554082e 100644 Binary files a/core/assets-raw/sprites/units/weapons/small-weapon.png and b/core/assets-raw/sprites/units/weapons/small-weapon.png differ diff --git a/core/assets-raw/sprites/units/weapons/spiroct-weapon.png b/core/assets-raw/sprites/units/weapons/spiroct-weapon.png new file mode 100644 index 0000000000..91ff27033e Binary files /dev/null and b/core/assets-raw/sprites/units/weapons/spiroct-weapon.png differ diff --git a/core/assets-raw/sprites/units/weapons/weapon.png b/core/assets-raw/sprites/units/weapons/weapon.png index 277fe2463e..a0c24aa143 100644 Binary files a/core/assets-raw/sprites/units/weapons/weapon.png and b/core/assets-raw/sprites/units/weapons/weapon.png differ diff --git a/core/assets-raw/sprites/units/weapons/zenith-missiles.png b/core/assets-raw/sprites/units/weapons/zenith-missiles.png new file mode 100644 index 0000000000..e482202c65 Binary files /dev/null and b/core/assets-raw/sprites/units/weapons/zenith-missiles.png differ diff --git a/core/assets-raw/sprites/units/revenant-cell.png b/core/assets-raw/sprites/units/zenith-cell.png similarity index 100% rename from core/assets-raw/sprites/units/revenant-cell.png rename to core/assets-raw/sprites/units/zenith-cell.png diff --git a/core/assets-raw/sprites/units/revenant.png b/core/assets-raw/sprites/units/zenith.png similarity index 100% rename from core/assets-raw/sprites/units/revenant.png rename to core/assets-raw/sprites/units/zenith.png diff --git a/core/assets-raw/sprites/weapons/beam-weapon.png b/core/assets-raw/sprites/weapons/beam-weapon.png deleted file mode 100644 index 0e802877f7..0000000000 Binary files a/core/assets-raw/sprites/weapons/beam-weapon.png and /dev/null differ diff --git a/core/assets/baseparts/000.msch b/core/assets/baseparts/000.msch new file mode 100644 index 0000000000..35d2df8e14 Binary files /dev/null and b/core/assets/baseparts/000.msch differ diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 3ea8a674a7..3cceedd082 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -125,6 +125,7 @@ mod.reloadrequired = [scarlet]Restart Required mod.import = Import Mod mod.import.file = Import File mod.import.github = Import From GitHub +mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source! mod.item.remove = This item is part of the[accent] '{0}'[] mod. To remove it, uninstall that mod. mod.remove.confirm = This mod will be deleted. mod.author = [lightgray]Author:[] {0} @@ -197,8 +198,8 @@ server.admins.none = No admins found! server.add = Add Server server.delete = Are you sure you want to delete this server? server.edit = Edit Server -server.outdated = [crimson]Outdated Server![] -server.outdated.client = [crimson]Outdated Client![] +server.outdated = [scarlet]Outdated Server![] +server.outdated.client = [scarlet]Outdated Client![] server.version = [gray]v{0} {1} server.custombuild = [accent]Custom Build confirmban = Are you sure you want to ban "{0}[white]"? @@ -220,7 +221,7 @@ connecting.data = [accent]Loading world data... server.port = Port: server.addressinuse = Address already in use! server.invalidport = Invalid port number! -server.error = [crimson]Error hosting server. +server.error = [scarlet]Error hosting server. save.new = New Save save.overwrite = Are you sure you want to overwrite\nthis save slot? overwrite = Overwrite @@ -230,8 +231,8 @@ save.delete.confirm = Are you sure you want to delete this save? save.delete = Delete save.export = Export Save save.import.invalid = [accent]This save is invalid! -save.import.fail = [crimson]Failed to import save: [accent]{0} -save.export.fail = [crimson]Failed to export save: [accent]{0} +save.import.fail = [scarlet]Failed to import save: [accent]{0} +save.export.fail = [scarlet]Failed to export save: [accent]{0} save.import = Import Save save.newslot = Save name: save.rename = Rename @@ -471,13 +472,14 @@ launch.confirm = This will launch all resources in your core.\nYou will not be a launch.skip.confirm = If you skip now, you will not be able to launch until later waves. uncover = Uncover configure = Configure Loadout +#TODO +loadout = Loadout +resources = Resources bannedblocks = Banned Blocks addall = Add All -configure.locked = [lightgray]Unlock configuring loadout: {0}. configure.invalid = Amount must be a number between 0 and {0}. zone.unlocked = [lightgray]{0} unlocked. zone.requirement.complete = Requirement for {0} completed:[lightgray]\n{1} -zone.config.unlocked = Loadout unlocked:[lightgray]\n{0} zone.resources = [lightgray]Resources Detected: zone.objective = [lightgray]Objective: [accent]{0} zone.objective.survival = Survive @@ -485,7 +487,7 @@ zone.objective.attack = Destroy Enemy Core add = Add... boss.health = Boss Health -connectfail = [crimson]Connection error:\n\n[accent]{0} +connectfail = [scarlet]Connection error:\n\n[accent]{0} error.unreachable = Server unreachable.\nIs the address spelled correctly? error.invalidaddress = Invalid address. error.timedout = Timed out!\nMake sure the host has port forwarding set up, and that the address is correct! @@ -544,7 +546,7 @@ unplaceable.sectorcaptured = [scarlet]Requires captured sector yes = Yes no = No info.title = Info -error.title = [crimson]An error has occured +error.title = [scarlet]An error has occured error.crashtitle = An error has occured unit.nobuild = [scarlet]Unit can't build blocks.input = Input @@ -586,6 +588,8 @@ blocks.reload = Shots/Second blocks.ammo = Ammo bar.drilltierreq = Better Drill Required +bar.noresources = Missing Resources +bar.corereq = Core Base Required bar.drillspeed = Drill Speed: {0}/s bar.pumpspeed = Pump Speed: {0}/s bar.efficiency = Efficiency: {0}% @@ -595,7 +599,8 @@ bar.poweramount = Power: {0} bar.poweroutput = Power Output: {0} bar.items = Items: {0} bar.capacity = Capacity: {0} -bar.units = Units: {0}/{1} +bar.unitcap = {0} {1}/{2} +bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled] bar.liquid = Liquid bar.heat = Heat bar.power = Power @@ -643,6 +648,7 @@ setting.linear.name = Linear Filtering setting.hints.name = Hints setting.flow.name = Display Resource Flow Rate setting.buildautopause.name = Auto-Pause Building +setting.mapcenter.name = Auto Center Map To Player setting.animatedwater.name = Animated Fluids setting.animatedshields.name = Animated Shields setting.antialias.name = Antialias[lightgray] (requires restart)[] @@ -680,6 +686,7 @@ setting.blockselectkeys.name = Show Block Select Keys setting.vsync.name = VSync setting.pixelate.name = Pixelate setting.minimap.name = Show Minimap +setting.coreitems.name = Display Core Items (WIP) setting.position.name = Show Player Position setting.musicvol.name = Music Volume setting.atmosphere.name = Show Planet Atmosphere @@ -705,6 +712,7 @@ keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only category.general.name = General category.view.name = View category.multiplayer.name = Multiplayer +category.blocks.name = Block Select command.attack = Attack command.rally = Rally command.retreat = Retreat @@ -829,7 +837,6 @@ liquid.water.name = Water liquid.slag.name = Slag liquid.oil.name = Oil liquid.cryofluid.name = Cryofluid -item.corestorable = [lightgray]Storable in Core: {0} item.explosiveness = [lightgray]Explosiveness: {0}% item.flammability = [lightgray]Flammability: {0}% item.radioactivity = [lightgray]Radioactivity: {0}% @@ -841,10 +848,37 @@ unit.minespeed = [lightgray]Mining Speed: {0}% unit.minepower = [lightgray]Mining Power: {0} unit.ability = [lightgray]Ability: {0} unit.buildspeed = [lightgray]Building Speed: {0}% + liquid.heatcapacity = [lightgray]Heat Capacity: {0} liquid.viscosity = [lightgray]Viscosity: {0} liquid.temperature = [lightgray]Temperature: {0} +unit.dagger.name = Dagger +unit.mace.name = Mace +unit.fortress.name = Fortress +unit.nova.name = Nova +unit.pulsar.name = Pulsar +unit.quasar.name = Quasar +unit.crawler.name = Crawler +unit.atrax.name = Atrax +unit.spiroct.name = Spiroct +unit.arkyid.name = Arkyid +unit.flare.name = Flare +unit.horizon.name = Horizon +unit.zenith.name = Zenith +unit.antumbra.name = Antumbra +unit.eclipse.name = Eclipse +unit.mono.name = Mono +unit.poly.name = Poly +unit.mega.name = Mega +unit.risse.name = Risse +unit.minke.name = Minke +unit.bryde.name = Bryde +unit.alpha.name = Alpha +unit.beta.name = Beta +unit.gamma.name = Gamma + +block.parallax.name = Parallax block.cliff.name = Cliff block.sand-boulder.name = Sand Boulder block.grass.name = Grass @@ -996,7 +1030,6 @@ block.blast-mixer.name = Blast Mixer block.solar-panel.name = Solar Panel block.solar-panel-large.name = Large Solar Panel block.oil-extractor.name = Oil Extractor -block.command-center.name = Command Center block.repair-point.name = Repair Point block.pulse-conduit.name = Pulse Conduit block.plated-conduit.name = Plated Conduit @@ -1048,21 +1081,7 @@ team.orange.name = orange team.derelict.name = derelict team.green.name = green team.purple.name = purple -unit.spirit.name = Spirit Repair Drone -unit.draug.name = Draug Miner Drone -unit.phantom.name = Phantom Builder Drone -unit.dagger.name = Dagger -unit.crawler.name = Crawler -unit.titan.name = Titan -unit.ghoul.name = Ghoul Bomber -unit.wraith.name = Wraith Fighter -unit.fortress.name = Fortress -unit.revenant.name = Revenant -unit.eruptor.name = Eruptor -unit.chaos-array.name = Chaos Array -unit.eradicator.name = Eradicator -unit.lich.name = Lich -unit.reaper.name = Reaper + tutorial.next = [lightgray] tutorial.intro = You have entered the[scarlet] Mindustry Tutorial.[]\nUse[accent] [[WASD][] to move.\n[accent]Scroll[] to zoom in and out.\nBegin by[accent] mining copper[]. Move close to it, then tap a copper ore vein near your core to do this.\n\n[accent]{0}/{1} copper tutorial.intro.mobile = You have entered the[scarlet] Mindustry Tutorial.[]\nSwipe the screen to move.\n[accent]Pinch with 2 fingers[] to zoom in and out.\nBegin by[accent] mining copper[]. Move close to it, then tap a copper ore vein near your core to do this.\n\n[accent]{0}/{1} copper @@ -1105,17 +1124,7 @@ liquid.water.description = The most useful liquid. Commonly used for cooling mac liquid.slag.description = Various different types of molten metal mixed together. Can be separated into its constituent minerals, or sprayed at enemy units as a weapon. liquid.oil.description = A liquid used in advanced material production. Can be converted into coal as fuel, or sprayed and set on fire as a weapon. liquid.cryofluid.description = An inert, non-corrosive liquid created from water and titanium. Has extremely high heat capacity. Extensively used as coolant. -unit.draug.description = A primitive mining drone. Cheap to produce. Expendable. Automatically mines copper and lead in the vicinity. Delivers mined resources to the closest core. -unit.spirit.description = A modified draug drone, designed for repair instead of mining. Automatically fixes any damaged blocks in the area. -unit.phantom.description = An advanced drone unit. Follows users. Assists in block construction. Rebuilds destroyed blocks. -unit.dagger.description = The most basic ground mech. Cheap to produce. Overwhelming when used in swarms. -unit.crawler.description = A ground unit consisting of a stripped-down frame with high explosives strapped on top. Not particular durable. Explodes on contact with enemies. -unit.titan.description = An advanced, armored ground unit. Attacks both ground and air targets. Equipped with two miniature Scorch-class flamethrowers. -unit.fortress.description = A heavy artillery mech. Equipped with two modified Hail-type cannons for long-range assault on enemy structures and units. -unit.eruptor.description = A heavy mech designed to take down structures. Fires a stream of slag at enemy fortifications, melting them and setting volatiles on fire. -unit.wraith.description = A fast, hit-and-run interceptor unit. Targets power generators. -unit.ghoul.description = A heavy carpet bomber. Rips through enemy structures, targeting critical infrastructure. -unit.revenant.description = A heavy, hovering missile array. + block.message.description = Stores a message. Used for communication between allies. block.graphite-press.description = Compresses chunks of coal into pure sheets of graphite. block.multi-press.description = An upgraded version of the graphite press. Employs water and power to process coal quickly and efficiently. @@ -1226,7 +1235,6 @@ block.ripple.description = An extremely powerful artillery turret. Shoots cluste block.cyclone.description = A large anti-air and anti-ground turret. Fires explosive clumps of flak at nearby units. block.spectre.description = A massive dual-barreled cannon. Shoots large armor-piercing bullets at air and ground targets. block.meltdown.description = A massive laser cannon. Charges and fires a persistent laser beam at nearby enemies. Requires coolant to operate. -block.command-center.description = Issues movement commands to allied units across the map.\nCauses units to rally, attack an enemy core or retreat to the core/factory. When no enemy core is present, units will default to patrolling under the attack command. block.repair-point.description = Continuously heals the closest damaged unit in its vicinity. block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. diff --git a/core/assets/bundles/bundle_be.properties b/core/assets/bundles/bundle_be.properties index 348bea8ad4..f5852ffc02 100644 --- a/core/assets/bundles/bundle_be.properties +++ b/core/assets/bundles/bundle_be.properties @@ -106,6 +106,7 @@ mods.guide = Кіраўніцтва па модам mods.report = Паведаміць пра памылку mods.openfolder = Адкрыць тэчку з мадыфікацыямі mods.reload = Reload +mods.reloadexit = The game will now exit, to reload mods. mod.display = [gray]Мадыфікацыя:[orange] {0} mod.enabled = [lightgray]Уключана mod.disabled = [scarlet]Выключана @@ -124,6 +125,7 @@ mod.reloadrequired = [scarlet]Неабходны перазапуск mod.import = Імпартаваць мадыфікацыю mod.import.file = Import File mod.import.github = Імпартаваць мод з GitHub +mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source! mod.item.remove = Гэты прадмет з’яўляецца часткай мадыфікацыі [accent]«{0}»[]. Каб выдаліць яго, выдаліце саму мадыфікацыю. mod.remove.confirm = Гэтая мадыфікацыя будзе выдалена. mod.author = [lightgray]Аўтар:[] {0} @@ -224,7 +226,6 @@ save.new = Новае захаванне save.overwrite = Вы ўпэўненыя, што жадаеце перазапісаць\nгэты слот для захавання? overwrite = Перазапісаць save.none = Захавання не знойдзены! -saveload = Захаванне… savefail = Не атрымалася захаваць гульню! save.delete.confirm = Вы ўпэўненыя, што хочаце выдаліць гэта захаванне? save.delete = Выдаліць @@ -272,6 +273,7 @@ quit.confirm.tutorial = Вы ўпэўненыя, што ведаеце, што loading = [accent]Загрузка… reloading = [accent]Перазагрузка мадыфікацый... saving = [accent]Захаванне… +respawn = [accent][[{0}][] to respawn in core cancelbuilding = [accent][[{0}][] для ачысткі плана selectschematic = [accent][[{0}][] вылучыць і скапіяваць pausebuilding = [accent][[{0}][] для прыпынення будаўніцтва @@ -328,8 +330,9 @@ waves.never = <ніколі> waves.every = кожны waves.waves = хваля (ы) waves.perspawn = за з’яўленне +waves.shields = shields/wave waves.to = да -waves.boss = Бос +waves.guardian = Guardian waves.preview = Папярэдні прагляд waves.edit = Рэдагавацью... waves.copy = Капіяваць у буфер абмену @@ -460,6 +463,7 @@ requirement.unlock = разблакуюцца {0} resume = Аднавіць зону: \n[lightgray] {0} bestwave = [lightgray]Лепшая хваля: {0} launch = <Запуск> +launch.text = Launch launch.title = Запуск паспяховы launch.next = [lightgray]наступная магчымасць на {0} -той хвалі launch.unable2 = [scarlet]Запуск немагчымы.[] @@ -467,13 +471,13 @@ launch.confirm = Гэта [accent]запусціць[] усе рэсурсы ў launch.skip.confirm = Калі Вы прапусціце цяпер, то Вы не зможаце вырабіць [accent] запуск[] да пазнейшых хваль. uncover = Раскрыць configure = Канфігурацыя выгрузкі +loadout = Loadout +resources = Resources bannedblocks = Забароненыя блокі addall = Дадаць всё -configure.locked = [lightgray] Разблакіроўка выгрузкі рэсурсаў: {0}. configure.invalid = Колькасць павінна быць лікам паміж 0 і {0}. zone.unlocked = Зона «[lightgray] {0}» зараз адмыкнутая. zone.requirement.complete = Умовы для зоны «{0}» выкананы: [lightgray] \n {1} -zone.config.unlocked = Выгрузка рэсурсаў адмыкнутая: [lightgray] \n {0} zone.resources = [lightgray] Выяўленыя рэсурсы: zone.objective = [lightgray] Мэта: [accent] {0} zone.objective.survival = Выжыць @@ -492,35 +496,29 @@ error.io = Сеткавая памылка ўводу-высновы. error.any = Невядомая сеткавая памылка. error.bloom = Не атрымалася ініцыялізаваць свячэнне (Bloom). \nМагчыма, зараз Вашая прылада не падтрымлівае яго. -zone.groundZero.name = Адпраўным пункт -zone.desertWastes.name = Пакінутыя пусткі -zone.craters.name = Кратэры -zone.frozenForest.name = Ледзяны лес -zone.ruinousShores.name = Разбураныя берага -zone.stainedMountains.name = Афарбаваныя горы -zone.desolateRift.name = Пустынны разлом -zone.nuclearComplex.name = Ядзерны вытворчы комплекс -zone.overgrowth.name = Зараснікі -zone.tarFields.name = Дзеграныя палi -zone.saltFlats.name = Саляныя раўніны -zone.impact0078.name = Уздзеянне 0078 -zone.crags.name = Скалы -zone.fungalPass.name = Грыбны перавал +sector.groundZero.name = Ground Zero +sector.craters.name = The Craters +sector.frozenForest.name = Frozen Forest +sector.ruinousShores.name = Ruinous Shores +sector.stainedMountains.name = Stained Mountains +sector.desolateRift.name = Desolate Rift +sector.nuclearComplex.name = Nuclear Production Complex +sector.overgrowth.name = Overgrowth +sector.tarFields.name = Tar Fields +sector.saltFlats.name = Salt Flats +sector.fungalPass.name = Fungal Pass -zone.groundZero.description = Аптымальная лакацыя для паўторных гульняў. Нізкая варожая пагроза. Трохі рэсурсаў. \nСабярыце як мага больш свінцу і медзі. \nДвигайцесь далей. -zone.frozenForest.description = Нават тут, бліжэй да гор, спрэчкі распаўсюдзіліся. Халодныя тэмпературы не могуць стрымліваць іх вечна. \nПачните ўкладвацца ў энергію. Пабудуйце генератары ўнутранага згарання. Навучыцеся карыстацца рэгенератарам. -zone.desertWastes.description = Гэтыя пусткі велізарныя, непрадказальныя і працятыя закінутымі сектаральным структурамі. \nУ рэгіёне прысутнічае вугаль. Спаліце ​​яго для атрымання энергіі, або сінтэзуе графіт. \n[lightgray]Месца пасадкі тут можа не быць гарантаванае. -zone.saltFlats.description = На ўскраіне пустыні ляжаць саляныя раўніны. У гэтай мясцовасці можна знайсці крыху рэсурсаў. \nВорагi ўзвялі тут комплекс захоўвання рэсурсаў. Выкараніць іх ядро. Ня пакіньце каменя на камені. -zone.craters.description = Вада сабралася ў гэтым кратары, рэліквіі часоў старых войнаў. Адновіце вобласць. Збярыце пясок. Выплавьте меташкло. Пампуйце ваду для астуджэння турэляў і бураў. -zone.ruinousShores.description = Міма пустак праходзіць берагавая лінія. Калісьці тут размяшчаўся масіў берагавой абароны. Не так шмат ад яго засталося. Толькі самыя базавыя абарончыя збудаванні засталіся цэлымі, усё астатняе ператварылася ў металалом. \nПродолжайте экспансію па-за. Переоткройте для сябе тэхналогіі. -zone.stainedMountains.description = Далей, углыб мясцовасці, ляжаць горы, яшчэ не заплямленыя спрэчкамі. \nВынямiце багацце тытана ў гэтай галіне. Навучыцеся ім карыстацца. \nВоражскае прысутнасць тут мацней. Не дайце ім часу для адпраўкі сваіх мацнейшых баявых адзінак. -zone.overgrowth.description = Гэтая зарослая вобласць знаходзіцца бліжэй да крыніцы спрэчка. \nВраг арганізаваў тут фарпост. Пабудуйце баявыя адзінкі «Тытан». Зьнішчыце яго. Вярніце тое, што было страчана. -zone.tarFields.description = Ускраіна зоны нафтаздабычы, паміж гарамі і пустыняй. Адзін з нямногіх раёнаў з карыснымі запасамі дзёгцю. \nХотя гэтая вобласць закінутыя, у ёй паблізу прысутнічаюць некаторыя небяспечныя варожыя сілы. Не варта іх недаацэньваць.\n [lightgray] Дасьледуйце тэхналогію перапрацоўкі нафты, калі магчыма. -zone.desolateRift.description = Надзвычай небяспечная зона. Багацце рэсурсаў, але мала месца. Высокі рызыка разбурэння. Эвакуявацца трэба як мага хутчэй. Ня расслабляйцеся падчас вялікіх перапынкаў паміж варожымі нападамі. -zone.nuclearComplex.description = Былы завод па вытворчасці і перапрацоўцы торыя, пераўтвораны ў руіны. \n[lightgray] Дасьледуйце торый і варыянты яго шматлікага прымянення. \nВраг прысутнічае тут у вялікім ліку, пастаянна разведывая нападнікаў. -zone.fungalPass.description = Пераходная вобласць паміж высокімі гарамі і больш нізкімі, пакрытымі спрэчкамі землямі. Тут размешчана невялікая выведвальная база суперніка. \nУничтожьте яе. \nИспользуйте адзінкі «Кінжал» і «Камікадзэ». Дастаньце да абодвух ядраў. -zone.impact0078.description = <ўставіць апісанне тут> -zone.crags.description = <ўставіць апісанне тут> +sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. +sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. +sector.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. +sector.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. +sector.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. +sector.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units. +sector.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build Titan units. Destroy it. Reclaim that which was lost. +sector.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. +sector.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. +sector.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. +sector.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. settings.language = Мова settings.data = Гульнявыя дадзеныя @@ -537,6 +535,7 @@ settings.clearall.confirm = [scarlet] АСЦЯРОЖНА![] \nГэта сатр paused = [accent] <Паўза> clear = Ачысціць banned = [scarlet] Забаронена +unplaceable.sectorcaptured = [scarlet]Requires captured sector yes = Так no = Не info.title = Інфармацыя @@ -582,6 +581,8 @@ blocks.reload = Стрэлы/секунду blocks.ammo = Боепрыпасы bar.drilltierreq = Патрабуецца свідар лепей +bar.noresources = Missing Resources +bar.corereq = Core Base Required bar.drillspeed = Хуткасць бурэння: {0}/с bar.pumpspeed = Хуткасць выкачванне: {0}/с bar.efficiency = Эфектыўнасць: {0}% @@ -591,11 +592,12 @@ bar.poweramount = Энергія: {0} bar.poweroutput = Выхад энергіі: {0} bar.items = Прадметы: {0} bar.capacity = Умяшчальнасць: {0} +bar.unitcap = {0} {1}/{2} +bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled] bar.liquid = Вадкасці bar.heat = Нагрэў bar.power = Энергія bar.progress = Прагрэс будаўніцтва -bar.spawned = Адзінкі: {0}/{1} bar.input = Уваход bar.output = Выхад @@ -639,6 +641,7 @@ setting.linear.name = Лінейная фільтраванне setting.hints.name = Падказкі setting.flow.name = Display Resource Flow Rate[scarlet] (experimental) setting.buildautopause.name = Аўтаматычная прыпыненне будаўніцтва +setting.mapcenter.name = Auto Center Map To Player setting.animatedwater.name = Аніміраваныя вада setting.animatedshields.name = Аніміраваныя шчыты setting.antialias.name = Згладжванне [lightgray] (патрабуе перазапуску)[] @@ -663,7 +666,6 @@ setting.effects.name = Эфекты setting.destroyedblocks.name = Адлюстроўваць знішчаныя блокі setting.blockstatus.name = Display Block Status setting.conveyorpathfinding.name = Пошук шляху для ўстаноўкі канвеераў -setting.coreselect.name = Дазволiць вылучэнне ядраў у схемах setting.sensitivity.name = Адчувальнасць кантролера setting.saveinterval.name = Інтэрвал захавання setting.seconds = {0} секунд @@ -672,12 +674,15 @@ setting.milliseconds = {0} мілісекунд setting.fullscreen.name = Поўнаэкранны рэжым setting.borderlesswindow.name = Безрамочное акно [lightgray] (можа спатрэбіцца перазапуск) setting.fps.name = Паказваць FPS і пінг +setting.smoothcamera.name = Smooth Camera setting.blockselectkeys.name = Паказаць клавішы выбару блока setting.vsync.name = Вертыкальная сінхранізацыя setting.pixelate.name = Пікселізацыя setting.minimap.name = Адлюстроўваць міні-карту +setting.coreitems.name = Display Core Items (WIP) setting.position.name = Адлюстроўваць каардынаты гульца setting.musicvol.name = Гучнасць музыкі +setting.atmosphere.name = Show Planet Atmosphere setting.ambientvol.name = Гучнасць акружэння setting.mutemusic.name = Заглушыць музыку setting.sfxvol.name = Гучнасць эфектаў @@ -700,10 +705,13 @@ keybinds.mobile = [scarlet] Большасць камбінацый клавіш category.general.name = Асноўнае category.view.name = Прагляд category.multiplayer.name = Сеткавая гульня +category.blocks.name = Block Select command.attack = Атакаваць command.rally = Кропка збору command.retreat = Адступіць placement.blockselectkeys = \n[lightgray]Клавіша: [{0}, +keybind.respawn.name = Respawn +keybind.control.name = Control Unit keybind.clear_building.name = Ачысціць план будаўніцтва keybind.press = Націсніце клавішу ... keybind.press.axis = Націсніце восі або клавішу ... @@ -713,7 +721,7 @@ keybind.toggle_block_status.name = Toggle Block Statuses keybind.move_x.name = Рух па восі X keybind.move_y.name = Рух па восі Y keybind.mouse_move.name = наследуе курсорам -keybind.dash.name = Палёт/Паскарэнне +keybind.boost.name = Boost keybind.schematic_select.name = Абраць вобласць keybind.schematic_menu.name = Меню схем keybind.schematic_flip_x.name = Адлюстраваць схему па восі X @@ -775,30 +783,25 @@ rules.wavetimer = Інтэрвал хваляў rules.waves = Хвалі rules.attack = Рэжым атакі rules.enemyCheat = Бясконцыя рэсурсы ІІ (чырвоная каманда) -rules.unitdrops = Рэсурсы за знішчэнне баёў. адз. +rules.blockhealthmultiplier = Множнік здароўя блокаў +rules.blockdamagemultiplier = Block Damage Multiplier rules.unitbuildspeedmultiplier = Множнік хуткасці вытворчасці баёў. адз. rules.unithealthmultiplier = Множнік здароўя баёў. адз. -rules.blockhealthmultiplier = Множнік здароўя блокаў -rules.playerhealthmultiplier = Множнік здароўя гульца -rules.playerdamagemultiplier = Множнік страт гульца rules.unitdamagemultiplier = Множнік страт баёў. адз. rules.enemycorebuildradius = Радыус абароны варожае. ядраў: [lightgray] (блок.) -rules.respawntime = Час адраджэння: [lightgray](сек) rules.wavespacing = Інтэрвал хваль: [lightgray](сек) rules.buildcostmultiplier = Множнік выдаткаў на будаўніцтва rules.buildspeedmultiplier = Множнік хуткасці будаўніцтва rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier rules.waitForWaveToEnd = Хвалі чакаюць ворагаў rules.dropzoneradius = Радыус зоны высадкі ворагаў: [lightgray] (блокаў) -rules.respawns = Макс. кол-у адраджэнняў за хвалю -rules.limitedRespawns = Абмежаванне адраджэнняў +rules.unitammo = Units Require Ammo rules.title.waves = Хвалі -rules.title.respawns = Адраджэнне rules.title.resourcesbuilding = Рэсурсы & будаўніцтва -rules.title.player = Гульцы rules.title.enemy = Ворагі rules.title.unit = Баёў. адз. rules.title.experimental = эксперыментальнай +rules.title.environment = Environment rules.lighting = Асвятленне rules.ambientlight = Навакольны свет rules.solarpowermultiplier = Множнік сонечнай энергіі @@ -827,7 +830,6 @@ liquid.water.name = Вада liquid.slag.name = Шлак liquid.oil.name = Нафта liquid.cryofluid.name = Крыягенная вадкасць -item.corestorable = [lightgray]Можна захоўваць у ядры: {0} item.explosiveness = [lightgray]Выбуханебяспека: {0}% item.flammability = [lightgray]Узгаральнасць: {0}% item.radioactivity = [lightgray]Радыёактыўнасць: {0}% @@ -843,6 +845,32 @@ liquid.heatcapacity = [lightgray]Цеплаёмістасць: {0} liquid.viscosity = [lightgray]Глейкасць: {0} liquid.temperature = [lightgray]Тэмпература: {0} +unit.dagger.name = Кінжал +unit.mace.name = Mace +unit.fortress.name = Крэпасць +unit.nova.name = Nova +unit.pulsar.name = Pulsar +unit.quasar.name = Quasar +unit.crawler.name = Камікадзэ +unit.atrax.name = Atrax +unit.spiroct.name = Spiroct +unit.arkyid.name = Arkyid +unit.flare.name = Flare +unit.horizon.name = Horizon +unit.zenith.name = Zenith +unit.antumbra.name = Antumbra +unit.eclipse.name = Eclipse +unit.mono.name = Mono +unit.poly.name = Poly +unit.mega.name = Mega +unit.risse.name = Risse +unit.minke.name = Minke +unit.bryde.name = Bryde +unit.alpha.name = Alpha +unit.beta.name = Beta +unit.gamma.name = Gamma + +block.parallax.name = Parallax block.cliff.name = Скала block.sand-boulder.name = Пяшчаны валун block.grass.name = Трава @@ -994,17 +1022,6 @@ block.blast-mixer.name = Мяшалка выбуховай сумесі block.solar-panel.name = Сонечная панэль block.solar-panel-large.name = Вялікая сонечная панэль block.oil-extractor.name = Нафтавая вышка -block.command-center.name = Камандны цэнтр -block.draug-factory.name = Завод здабываючых Дронаў «Драугр» -block.spirit-factory.name = Завод рамонтных Дронаў «Дух» -block.phantom-factory.name = Завод будаўнічых Дронаў «Фантом» -block.wraith-factory.name = Завод знішчальнікаў «Прывід» -block.ghoul-factory.name = Завод бамбавікоў «Гуль» -block.dagger-factory.name = Завод мяхоў «Кінжал» -block.crawler-factory.name = Завод гусенічных ботаў «Камікадзэ» -block.titan-factory.name = Завод мяхоў «Тытан» -block.fortress-factory.name = Завод мяхоў «Крэпасць» -block.revenant-factory.name = Завод крэйсераў «Мсціўца» block.repair-point.name = Рамонтны пункт block.pulse-conduit.name = Імпульсны трубаправод block.plated-conduit.name = Умацаваны трубаправод @@ -1036,6 +1053,19 @@ block.meltdown.name = Іспепяліцель block.container.name = Кантэйнер block.launch-pad.name = Пускавая пляцоўка block.launch-pad-large.name = Вялікая пускавая пляцоўка +block.segment.name = Segment +block.ground-factory.name = Ground Factory +block.air-factory.name = Air Factory +block.naval-factory.name = Naval Factory +block.additive-reconstructor.name = Additive Reconstructor +block.multiplicative-reconstructor.name = Multiplicative Reconstructor +block.exponential-reconstructor.name = Exponential Reconstructor +block.tetrative-reconstructor.name = Tetrative Reconstructor +block.mass-conveyor.name = Mass Conveyor +block.payload-router.name = Payload Router +block.disassembler.name = Disassembler +block.silicon-crucible.name = Silicon Crucible +block.large-overdrive-projector.name = Large Overdrive Projector team.blue.name = Сіняя team.crux.name = Чырвоная team.sharded.name = Аскепакавая @@ -1043,21 +1073,7 @@ team.orange.name = Аранжавая team.derelict.name = Пакінутая team.green.name = Зелёная team.purple.name = Фіялетавая -unit.spirit.name = Рамонтны робат «Дух» -unit.draug.name = Здабываўнiчы робат «Драугр» -unit.phantom.name = Будаўнічы робат «Фантом» -unit.dagger.name = Кінжал -unit.crawler.name = Камікадзэ -unit.titan.name = Тытан -unit.ghoul.name = Гуль -unit.wraith.name = Прывід -unit.fortress.name = Крэпасць -unit.revenant.name = Мсціўца -unit.eruptor.name = Вывяргальнік -unit.chaos-array.name = Масіў хаосу -unit.eradicator.name = Выкараняльнік -unit.lich.name = Ліч -unit.reaper.name = Жнец + tutorial.next = [lightgray]<Націсніце для працягу> tutorial.intro = Вы пачалі[scarlet] навучанне па Mindustry.[]\nВыкарыстоўвайце кнопкі[accent] [[WASD][] для перамяшчэння.\n[accent]Пакруціце кола мышы[] для набліжэння або аддалення камеры.\nПачнiце з [accent] здабычы медзі[]. Наблізьцеся да яе, затым націсніце на медную жылу каля Вашага ядра, каб зрабіць гэта.\n[accent] {0}/{1} медзі tutorial.intro.mobile = Вы пачалі[scarlet] навучанне па Mindustry.[]\nПравядзiце па экране, каб рухацца. \n[accent]зведзены або развядзіце 2 пальца[] для змены маштабу. \nПачнiце з [accent] здабычы медзі[]. Наблізьцеся да яе, затым націсніце на медную жылу каля Вашага ядра, каб зрабіць гэта.\n [accent]{0}/{1} медзі @@ -1100,17 +1116,7 @@ liquid.water.description = Самая карысная вадкасць. Звы liquid.slag.description = разнастайныя розныя тыпы расплаўленага металу, змешаныя разам. Можа быць падзелены на складнікі яго мінералы або распылён на варожых баявыя адзінкі ў якасці зброі. liquid.oil.description = Вадкасць, якая выкарыстоўваецца ў вытворчасці сучасных матэрыялаў. Можа быць пераўтвораная ў вугаль для выкарыстання ў якасці паліва або распыленая і падпаленыя як зброя. liquid.cryofluid.description = Інэртная, неедкая вадкасць, створаная з вады і тытана. Валодае надзвычай высокай цеплаёмістасцю. Шырока выкарыстоўваецца ў якасці астуджальнай вадкасці. -unit.draug.description = Прымітыўны здабываючы робат. Танны ў вытворчасці. Выдаткоўванай. Аўтаматычна здабывае медзь і свінец ў непасрэднай блізкасці. Пастаўляе здабытыя рэсурсы ў бліжэйшы ядро. -unit.spirit.description = Мадыфікаваны «Драугр», прызначаны для рамонту замест здабычы рэсурсаў. Аўтаматычна рамантуе любыя пашкоджаныя блокі ў вобласці. -unit.phantom.description = Прасунуты робат. Ідзе за карыстальнікамі. Дапамагае ў будаўніцтве блокаў. -unit.dagger.description = Самы асноўны наземны мех. Танны ў вытворчасці. Вельмі моцны пры выкарыстанні натоўпамі. -unit.crawler.description = Наземная адзінка, якая складаецца з зрэзанай рамы з прымацаваны зверху магутнай выбухоўкай. Не асоба трывалая. Выбухае пры кантакце з ворагамі. -unit.titan.description = Прасунуты, браніраваны наземны юніт. Атакуе як наземныя, так і паветраныя мэты. Абсталяваны двума мініяцюрнымі агнямётамі класа «Обжигатель». -unit.fortress.description = Цяжкі артылерыйскі мех. Абсталяваны двума мадыфікаванымі гарматамі тыпу «Град» для штурму далёкіх аб'ектаў і падраздзяленняў суперніка. -unit.eruptor.description = Цяжкі мех, прызначаны для разбурэння будынкаў. Выстрэльвае струмень дзындры па варожых ўмацаванняў, плавіць іх і падпальвае лятучыя рэчывы. -unit.wraith.description = Хуткі перахопнік. Накіраваны на генератары энергіі. -unit.ghoul.description = Цяжкі дывановы бамбавік. Пранікае праз варожыя структуры, нацэльваючыся на крытычную інфраструктуру. -unit.revenant.description = Цяжкая лятаючая сістэма рэактыўнага залпавага агню. + block.message.description = Захоўвае паведамленне. Выкарыстоўваецца для сувязі паміж саюзьнікамі. block.graphite-press.description = Сціскае кавалкі вугалю ў чыстыя лісты графіту. block.multi-press.description = Абноўленая версія графітавага прэса. Выкарыстоўвае ваду і энергію для хуткай і эфектыўнай апрацоўкі вугалю. @@ -1221,15 +1227,5 @@ block.ripple.description = Вельмі магутная артылерыйск block.cyclone.description = Вялікая турэль, якая можа весці агонь па паветраных і наземных мэтах. Страляе разрыўнымі снарадамі па бліжэйшых ворагам. block.spectre.description = Масіўная двуствольное гармата. Страляе буйнымі бранябойнымі кулямі па паветраных і наземных мэтах. block.meltdown.description = Масіўная лазерная гармата. Зараджае і страляе пастаянным лазерным прамянём ў бліжэйшых ворагаў. Патрабуецца астуджальная вадкасць для працы. -block.command-center.description = Камандуе перасоўваннямі баявых адзінак па ўсёй карце. \nУказывает падраздзяленням [accent] збірацца[] вакол каманднага цэнтра, [accent] атакаваць[] варожае ядро ​​або [accent] адступаць[] да ядра/фабрыцы. Калі варожае ядро ​​адсутнічае, адзінкі будуць патруляваць пры камандзе [accent] атакі[]. -block.draug-factory.description = Вырабляе здабываюць Дронов «Драугр». -block.spirit-factory.description = Вырабляе Дронов «Дух», якія рамантуюць пабудовы. -block.phantom-factory.description = Вырабляе палепшаных Дронов, якія дапамагаюць у будаўніцтве. -block.wraith-factory.description = Вырабляе хуткія і лётаюць баявыя адзінкі. -block.ghoul-factory.description = Вырабляе цяжкія дывановыя бамбавікі. -block.revenant-factory.description = Вырабляе цяжкія якія лётаюць баявыя адзінкі, узброеныя ракетамі. -block.dagger-factory.description = Вырабляе асноўныя наземныя баявыя адзінкі. -block.crawler-factory.description = Вырабляе хуткія саморазрушающиеся баявыя адзінкі. -block.titan-factory.description = Вырабляе прасунутыя браняваныя баявыя адзінкі. -block.fortress-factory.description = Вырабляе цяжкія артылерыйскія баявыя адзінкі. block.repair-point.description = Бесперапынна лечыць бліжэйшую пашкоджаную баявую адзінку або мех у сваім радыусе. +block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. diff --git a/core/assets/bundles/bundle_cs.properties b/core/assets/bundles/bundle_cs.properties index 3e3f552169..179484d7a8 100644 --- a/core/assets/bundles/bundle_cs.properties +++ b/core/assets/bundles/bundle_cs.properties @@ -105,12 +105,13 @@ mods.none = [lightgray]Modifikace nebyly nalezeny.[] mods.guide = Průvodce modifikacemi mods.report = Nahlásit závadu mods.openfolder = Otevřít složku s modifikacemi -mods.reload = Reload +mods.reload = Znovu načíst +mods.reloadexit = The game will now exit, to reload mods. mod.display = [gray]Modifikace:[][orange] {0}[] mod.enabled = [lightgray]Povoleno[] mod.disabled = [scarlet]Zakázáno[] mod.disable = Zakázat -mod.content = Content: +mod.content = Obsah: mod.delete.error = Nebylo možnost smazat modifikaci. Soubor může být používán. mod.requiresversion = [scarlet]Minimální požadovaná verze hry: [accent]{0}[] mod.missingdependencies = [scarlet]Chybějící závislosti: {0}[] @@ -122,15 +123,16 @@ mod.enable = Povolit mod.requiresrestart = Hra bude ukončena, aby bylo možné nasadit modifikace. mod.reloadrequired = [scarlet]Je vyžadováno znovuspuštění hry. mod.import = Importovat modifikaci -mod.import.file = Import File -mod.import.github = Import modifikaci z GitHubu +mod.import.file = Importovat soubor +mod.import.github = Import modifikace z GitHubu +mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source! mod.item.remove = Tato položka je součástí [accent]'{0}'[] modifikace. Pokud ji chcete odstranit, odinstalujte tuto modifikaci. mod.remove.confirm = Tato modifikace bude odstraněna. mod.author = [lightgray]Autor:[] {0} mod.missing = Toto uložení hra obsahuje modifikace, které byly nedávno aktualizovány, nebo již nejsou nainstalovány. Použití tohoto uložení může vést k chybám. Jsi si jist, že chceš nahrát toto uložení hry?\n[lightgray]Modifikace:\n{0} mod.preview.missing = Než vystavíš svou modifikaci ve Workshopu na Steamu, musíš přidat obrázek pro náhled.\nUmísti obrázek pojmenovaný [accent]preview.png[] do složky modifikace a zkus to znovu. mod.folder.missing = Ve Workshopu na Steamu mohou být vystaveny pouze modifikace ve formě složky.\nAbys převedl modifikaci na formu složky, jednoduše rozbal zip soubor do složky a smaž starý zip soubor. Potom znovu spusť hru nebo znovu načti modifikace. -mod.scripts.disable = Your device does not support mods with scripts. You must disable these mods to play the game. +mod.scripts.disable = Tvoje zařízení nepodporuje skripty. Musíš zakázat tyto modifikace, abys mohl hrát hru. about.button = O hře name = Jméno: @@ -200,12 +202,12 @@ server.outdated = [crimson]Zastaralá verze serveru![] server.outdated.client = [crimson]Zastaralá verze klienta![] server.version = [gray]Verze: {0} {1}[] server.custombuild = [accent]Upravená verze hry[] -confirmban = Jsi si jistý, že chceš zakázat tohoto hráče? -confirmkick = Jsi si jistý, že chceš vykopnout tohoto hráče? -confirmvotekick = Jsi si jistý, že chceš hlasovat pro vykopnutí tohoto hráče? +confirmban = Jsi si jistý, že chceš zakázat hráče "{0}[white]"?[] +confirmkick = Jsi si jistý, že chceš vykopnout hráče "{0}[white]"?[] +confirmvotekick = Jsi si jistý, že chceš hlasovat pro vykopnutí hráče "{0}[white]"?[] confirmunban = Jsi si jistý, že chceš zrušit zákaz pro tohoto hráče? -confirmadmin = Jsi si jistý, že chceš tohoto hráče povýšit na admina? -confirmunadmin = Jsi si jistý, že chceš odebrat správcovská práva tomuto hráči? +confirmadmin = Jsi si jistý, že chceš hráče "{0}[white]" povýšit na správce?[] +confirmunadmin = Jsi si jistý, že chceš odebrat hráči "{0}[white]" roli správce?[] joingame.title = Připojit se ke hře joingame.ip = Adresa IP: disconnect = Odpojeno. @@ -224,7 +226,6 @@ save.new = Nové uložení hry save.overwrite = Jsi si jistý, že chceš přepsat\ntuto pozici pro uložení hry? overwrite = Přepsat save.none = Žádné uložené pozice nebyly nalezeny. -saveload = Ukládám... savefail = Nepodařilo se uložit hru! save.delete.confirm = Jsi si jistý, že chceš smazat toto uložení hry? save.delete = Smazat @@ -272,6 +273,7 @@ quit.confirm.tutorial = Jsi si jistý?Výuku je možné znovu spustit v [accent] loading = [accent]Načítám... reloading = [accent]Načítám modifikace... saving = [accent]Ukládám... +respawn = [accent][[{0}][] k znovyzrození v jádře cancelbuilding = [accent][[{0}][] vyčistí plán šablony selectschematic = [accent][[{0}][] provede výběr a zkopírování pausebuilding = [accent][[{0}][] zastaví stavění @@ -328,8 +330,9 @@ waves.never = waves.every = každých waves.waves = vln(y) waves.perspawn = za zrození +waves.shields = štítů/vlnu waves.to = do -waves.boss = Záporák +waves.guardian = Guardian waves.preview = Náhled waves.edit = Upravit.... waves.copy = Uložit do schránky @@ -380,7 +383,7 @@ editor.unsaved = [scarlet]Máš neuložené změny![]\nPřesto chceš odejít z editor.resizemap = Změnit velikost mapy editor.mapname = Jméno mapy: editor.overwrite = [accent]Varování!\nToto přepíše již existující mapu.[] -editor.overwrite.confirm = [scarlet]Varování![] Mapa s tímto jménem již existuje. Jsi si jistý, že ji chceš přepsat? +editor.overwrite.confirm = [scarlet]Varování![] Mapa s tímto jménem již existuje. Jsi si jistý, že ji chceš přepsat?\n"[accent]{0}[]" editor.exists = Mapa s tímto jménem již existuje. editor.selectmap = Vyber mapu k načtení: @@ -460,6 +463,7 @@ requirement.unlock = Odemknuto {0} resume = Zpět do mapy:\n[lightgray]{0}[] bestwave = [lightgray]Nejvyšší vlna: {0} launch = Vyslat do této mapy Tvé jádro +launch.text = Launch launch.title = Vyslání bylo úspěšné launch.next = [lightgray]další možnost bude až ve vlně {0}[] launch.unable2 = [scarlet]Není možno se vyslat.[] @@ -467,19 +471,19 @@ launch.confirm = Toto vyšle veškeré suroviny ve Tvém jádře zpět.\nJiž se launch.skip.confirm = Jestli teď zůstaneš, budeš moci odejít až po několika dalších vlnách. uncover = Odkrýt mapu configure = Přizpůsobit vybavení +loadout = Loadout +resources = Resources bannedblocks = Zakázané bloky addall = Přidat vše -configure.locked = [lightgray]{0},\naby sis mohl přizpůsobit vybavení pro mapu.[] configure.invalid = Hodnota musí být číslo mezi 0 a {0}. zone.unlocked = [lightgray]Mapa {0} byla odemknuta.[] zone.requirement.complete = Bylo dosaženo vlny {0},\nčímž byla splněna podmínka pro mapu {1}. -zone.config.unlocked = Odemknuto přizpůsobení vybavení pro mapu:[lightgray]\n{0}[] zone.resources = [lightgray]Byly detekovány tyto suroviny:[] zone.objective = [lightgray]Úkol: [][accent]{0}[] zone.objective.survival = Přežij zone.objective.attack = Znič nepřátelské jádro add = Přidat... -boss.health = Životy Záporáka +boss.health = Životy Strážce connectfail = [crimson]Nepovedlo se připojení k serveru:\n\n[accent]{0}[] error.unreachable = Server je nedostupný.\nJe IP adresa napsaná správně (XXX.XXX.XXX.XXX)? @@ -492,35 +496,29 @@ error.io = Vstupně/výstupní (I/O) chyba sítě. error.any = Ueznámá chyba sítě. error.bloom = Chyba inicializace filtru Bloom.\nTvé zařízení ho nejspíš nepodporuje. -zone.groundZero.name = Základní tábor -zone.desertWastes.name = Pouštní pustiny -zone.craters.name = Krátery -zone.frozenForest.name = Zamrzlý les -zone.ruinousShores.name = Zničené pobřeží -zone.stainedMountains.name = Skvrnité pohoří -zone.desolateRift.name = Bezútěšná trhlina -zone.nuclearComplex.name = Komplex jaderné výroby -zone.overgrowth.name = Džungle -zone.tarFields.name = Dehtová pole -zone.saltFlats.name = Solné nížiny -zone.impact0078.name = Zóna dopadu 0078 -zone.crags.name = Skalní útesy -zone.fungalPass.name = Plísňový průsmyk +sector.groundZero.name = Základní tábor +sector.craters.name = Krátery +sector.frozenForest.name = Zamrzlý les +sector.ruinousShores.name = Zničené pobřeží +sector.stainedMountains.name = Skvrnité pohoří +sector.desolateRift.name = Bezútěšná trhlina +sector.nuclearComplex.name = Komplex jaderné výroby +sector.overgrowth.name = Džungle +sector.tarFields.name = Dehtová pole +sector.saltFlats.name = Solné nížiny +sector.fungalPass.name = Plísňový průsmyk -zone.groundZero.description = Optimální místo, kde znovu začít. Nízký výskyt nepřátel. Několik málo surovin.\nPosbírej co nejvíce olova a mědi.\nBěž dál. -zone.frozenForest.description = Dokonce až sem, blízko hor, se dokázaly spóry rozrůst. Mráz je však nemůže zadržet navěky.\n\nPusť se do práce za pomocí energie. Stav spalovací generátory. Nauč se, jak používat opravovací věže. -zone.desertWastes.description = Tyto pustiny jsou rozsáhlé, nepředvídatelné a skrz naskrz se hemží opuštěnými budovami.\nV této oblasti nalezneš uhlí. Spal ho v generátorech na energii nebo syntetizuj na grafit.\n\n[lightgray]Toto místo přistání nelze zaručit.[] -zone.saltFlats.description = Na okraji pouště leží Solné nížiny. V této lokaci se nachází jen několik málo surovin.\n\nNepřítel zde vybudoval zásobovací komplex. Znič jádro v jeho základně. Nenechej kámen na kameni. -zone.craters.description = V těchto relikviích starých válek se nahromadilo velké množství vody. Znovu získej tuto oblast. Sbírej písek. Vyrob z něj metasklo. Použij vodu k chlazení svých vrtů a střílen. -zone.ruinousShores.description = Za pustinou se nachází pobřeží. Kdysi zde stál obranný pobřežní systém. Moc z něj už dneska nezbylo. Jen základní stavby zůstaly ušetřeny, zbytek se rozpadl na šrot.\nPokračuj ve své expanzi hlouběji. Objev ztracenou technologii. -zone.stainedMountains.description = Dále ve vnitrozemí leží hory, dosud neposkvrněny spórami.\nVytěž titan, kterým tato oblast oplývá. Nauč se jej používat.\n\nPřítomnost nepřátelských jednotek je zde větší. Radši jim nedej moc času na vyslání jejich nejsilnějších jednotech. -zone.overgrowth.description = Tato přerostlá džungle se nachází blíže ke zdroji spór.\nNepřítel zde zbudoval předsunutou hlídku. Stav jednotky Dýka a znič s jejich pomocí jádro základny. Získej znovu to, co bylo již dávno ztraceno. -zone.tarFields.description = Rozhraní produkční naftové oblasti mezi horami a pouští. Jedna z mála oblastí, kde se stále nachází dehet.\nAčkoliv je oblast opuštěná, stále se v jejím okolí nachází nebezpečné nepřátelské síly. Není radno je podcenit.\n\n[lightgray]Vyzkoumej technologii na zpracování nafty.[] -zone.desolateRift.description = Extrémně nebezpečná mapa. Na úkor prostoru se zde nachází přehršel surovin. Vysoká pravděpodobnost zničení. Opusť tuto oblast co nejdříve to půjde. Nenech se zmást dlouhými prodlevami mezi vlnami nepřátel. -zone.nuclearComplex.description = Bývalá továrna na zpracování thoria, dnes v troskách.\n[lightgray]Objev thorium a jeho široké využití.[]\n\nNepřátelské jednotky se zde nacházejí v hojném počtu, a neustále prohledávají oblast. -zone.fungalPass.description = Přechodová oblast mezi vysokými horami a spórami nasycenou zemí. Nachází se zde malá průzkumná základna Tvého nepřítele.\nZnič ji.\nPoužij mechy Dýka a Slídil. Znič obě nepřátelské jádra. -zone.impact0078.description = -zone.crags.description = +sector.groundZero.description = Optimální místo, kde znovu začít. Nízký výskyt nepřátel. Několik málo surovin.\nPosbírej co nejvíce olova a mědi.\nBěž dál. +sector.frozenForest.description = Dokonce až sem, blízko hor, se dokázaly spóry rozrůst. Mráz je však nemůže zadržet navěky.\n\nPusť se do práce za pomocí energie. Stav spalovací generátory. Nauč se, jak používat opravovací věže. +sector.saltFlats.description = Na okraji pouště leží Solné nížiny. V této lokaci se nachází jen několik málo surovin.\n\nNepřítel zde vybudoval zásobovací komplex. Znič jádro v jeho základně. Nenechej kámen na kameni. +sector.craters.description = V těchto relikviích starých válek se nahromadilo velké množství vody. Znovu získej tuto oblast. Sbírej písek. Vyrob z něj metasklo. Použij vodu k chlazení svých vrtů a střílen. +sector.ruinousShores.description = Za pustinou se nachází pobřeží. Kdysi zde stál obranný pobřežní systém. Moc z něj už dneska nezbylo. Jen základní stavby zůstaly ušetřeny, zbytek se rozpadl na šrot.\nPokračuj ve své expanzi hlouběji. Objev ztracenou technologii. +sector.stainedMountains.description = Dále ve vnitrozemí leží hory, dosud neposkvrněny spórami.\nVytěž titan, kterým tato oblast oplývá. Nauč se jej používat.\n\nPřítomnost nepřátelských jednotek je zde větší. Radši jim nedej moc času na vyslání jejich nejsilnějších jednotech. +sector.overgrowth.description = Tato přerostlá džungle se nachází blíže ke zdroji spór.\nNepřítel zde zbudoval předsunutou hlídku. Stav jednotky Dýka a znič s jejich pomocí jádro základny. Získej znovu to, co bylo již dávno ztraceno. +sector.tarFields.description = Rozhraní produkční naftové oblasti mezi horami a pouští. Jedna z mála oblastí, kde se stále nachází dehet.\nAčkoliv je oblast opuštěná, stále se v jejím okolí nachází nebezpečné nepřátelské síly. Není radno je podcenit.\n\n[lightgray]Vyzkoumej technologii na zpracování nafty.[] +sector.desolateRift.description = Extrémně nebezpečná mapa. Na úkor prostoru se zde nachází přehršel surovin. Vysoká pravděpodobnost zničení. Opusť tuto oblast co nejdříve to půjde. Nenech se zmást dlouhými prodlevami mezi vlnami nepřátel. +sector.nuclearComplex.description = Bývalá továrna na zpracování thoria, dnes v troskách.\n[lightgray]Objev thorium a jeho široké využití.[]\n\nNepřátelské jednotky se zde nacházejí v hojném počtu, a neustále prohledávají oblast. +sector.fungalPass.description = Přechodová oblast mezi vysokými horami a spórami nasycenou zemí. Nachází se zde malá průzkumná základna Tvého nepřítele.\nZnič ji.\nPoužij mechy Dýka a Slídil. Znič obě nepřátelské jádra. settings.language = Jazyk settings.data = Data hry @@ -537,12 +535,13 @@ settings.clearall.confirm = [scarlet]Varování![]\nToto vyresetuje všechna Tv paused = [accent]< Pozastaveno >[] clear = Vyčistit banned = [scarlet]Zakázán[] +unplaceable.sectorcaptured = [scarlet]Vyžaduje polapený sektor[] yes = Ano no = Ne info.title = Informace error.title = [crimson]Objevila se chyba[] error.crashtitle = Objevila se chyba -unit.nobuild = [scarlet]Unit can't build +unit.nobuild = [scarlet]Jednotka nemůže stavět blocks.input = Vstup blocks.output = Výstup blocks.booster = Posilovač @@ -582,6 +581,8 @@ blocks.reload = Střel za 1s blocks.ammo = Střelivo bar.drilltierreq = Je vyžadován lepší vrt +bar.noresources = Missing Resources +bar.corereq = Core Base Required bar.drillspeed = Rychlost vrtu: {0}/s bar.pumpspeed = Rychlost pumpy: {0}/s bar.efficiency = Účinnost: {0}% @@ -591,11 +592,12 @@ bar.poweramount = Energie celkem: {0} bar.poweroutput = Výstup energie: {0} bar.items = Předměty: {0} bar.capacity = Kapacita: {0} +bar.unitcap = {0} {1}/{2} +bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled] bar.liquid = Chlazení bar.heat = Teplo bar.power = Energie bar.progress = Stavba v průběhu -bar.spawned = Jednotek: {0}/{1} bar.input = Vstup bar.output = Výstup @@ -637,20 +639,21 @@ setting.shadows.name = Stíny setting.blockreplace.name = Automatický návrh bloků setting.linear.name = Lineární filtrování setting.hints.name = Rady a tipy -setting.flow.name = Display Resource Flow Rate[scarlet] (experimental) +setting.flow.name = Zobrazit rychlost toku zdroje [scarlet](experimentální)[] setting.buildautopause.name = Automaticky pozastavit stavění -setting.animatedwater.name = Animovaná voda +setting.mapcenter.name = Auto Center Map To Player +setting.animatedwater.name = Animované tekutiny setting.animatedshields.name = Animované štíty setting.antialias.name = Použít antialias [lightgray](vyžaduje restart)[] -setting.playerindicators.name = Player Indicators -setting.indicators.name = Indikátor pro spojence/nepřátele +setting.playerindicators.name = Indikátor pro hráče +setting.indicators.name = Indikátor pro nepřátele setting.autotarget.name = Automaticky zaměřovat setting.keyboard.name = Ovládání myší a klávesnicí setting.touchscreen.name = Ovládání dotykovým displejem setting.fpscap.name = Strop FPS (snímků/s) setting.fpscap.none = Žádný setting.fpscap.text = {0} FPS -setting.uiscale.name = Škálování uživatelského rozhraní[lightgray] (vyžaduje restart)[] +setting.uiscale.name = Škálování uživatelského rozhraní[lightgray] (je vyžadován restart)[] setting.swapdiagonal.name = Vždy pokládat úhlopříčně setting.difficulty.training = Zácviková setting.difficulty.easy = Lehká @@ -663,21 +666,23 @@ setting.effects.name = Zobrazit efekty setting.destroyedblocks.name = Zobrazit zničené bloky setting.blockstatus.name = Display Block Status setting.conveyorpathfinding.name = Hledat cestu při umisťování pásu -setting.coreselect.name = Povolit jádra v šablonách setting.sensitivity.name = Citlivost ovladače setting.saveinterval.name = Interval automatického ukládání setting.seconds = {0} sekund setting.blockselecttimeout.name = Časový limit pro výběr bloku setting.milliseconds = {0} milisekund setting.fullscreen.name = Celá obrazovka -setting.borderlesswindow.name = Bezokrajové okno[lightgray] (může vyžadovat restart)[] +setting.borderlesswindow.name = Bezokrajové okno[lightgray] (může výt vyžadován restart)[] setting.fps.name = Ukázat FPS a ping +setting.smoothcamera.name = Plynulá kamera setting.blockselectkeys.name = Ukázat klávesy při práci s blokem setting.vsync.name = Vertikální synchronizace setting.pixelate.name = Rozpixlovat setting.minimap.name = Ukázat mapičku +setting.coreitems.name = Display Core Items (WIP) setting.position.name = Ukázat pozici hráče setting.musicvol.name = Hlasitost hudby +setting.atmosphere.name = Ukázat atmosféru planety setting.ambientvol.name = Hlasitost prostředí setting.mutemusic.name = Ztišit hudbu setting.sfxvol.name = Hlasitost efektů @@ -700,10 +705,13 @@ keybinds.mobile = [scarlet]Většina kláves nefunguje v mobilní verzi hry. Je category.general.name = Všeobecné category.view.name = Pohled category.multiplayer.name = Hra více hráčů +category.blocks.name = Block Select command.attack = Útok command.rally = Shromáždění command.retreat = Ústup placement.blockselectkeys = \n[lightgray]Klávesa:[] [{0}, +keybind.respawn.name = Znovuzrození +keybind.control.name = Ovládací jednotka keybind.clear_building.name = Vyčistit stavění keybind.press = Stiskni klávesu... keybind.press.axis = Stiskni osu ovladače nebo klávesu... @@ -713,7 +721,7 @@ keybind.toggle_block_status.name = Toggle Block Statuses keybind.move_x.name = Pohyb vodorovně keybind.move_y.name = Pohyb svisle keybind.mouse_move.name = Následovat myš -keybind.dash.name = Sprintovat +keybind.boost.name = Boost keybind.schematic_select.name = Vybrat oblast keybind.schematic_menu.name = Nabídka šablon keybind.schematic_flip_x.name = Překlopit šablona podle svislé osy @@ -775,30 +783,25 @@ rules.wavetimer = Časovač vln rules.waves = Vlny rules.attack = Režim útoku rules.enemyCheat = Neomezeně surovin pro umělou inteligenci -rules.unitdrops = Sesílání jednotek +rules.blockhealthmultiplier = Násobek zdraví bloků +rules.blockdamagemultiplier = Násobek poškození bloků rules.unitbuildspeedmultiplier = Násobek rychlosti výroby jednotek rules.unithealthmultiplier = Násobek zdraví jednotek -rules.blockhealthmultiplier = Násobek zdraví bloků -rules.playerhealthmultiplier = Násobek zdraví hráče -rules.playerdamagemultiplier = Násobek útoku hráče rules.unitdamagemultiplier = Násobek poškození jednotkami rules.enemycorebuildradius = Poloměr, ve kterém se okolo nepřátelského jádra nesmí stavět: [lightgray](dlaždic)[] -rules.respawntime = Čas znovuzrození: [lightgray](vteřin)[] rules.wavespacing = Čas rozestupu mezi vlnami: [lightgray](vteřin)[] rules.buildcostmultiplier = Násobek ceny stavění rules.buildspeedmultiplier = Násobek rychlosti stavění rules.deconstructrefundmultiplier = Násobek vratky při rozebrání rules.waitForWaveToEnd = Vlny čekají na nepřátele rules.dropzoneradius = Poloměr oblasti pro vylíhnutí: [lightgray](dlaždic)[] -rules.respawns = Maximální počet znovuvylíhnutí za vlnu -rules.limitedRespawns = Maximální počet znovuzrození +rules.unitammo = Jednotky vyžadují munici rules.title.waves = Vlny -rules.title.respawns = Znovuzrození rules.title.resourcesbuilding = Suroviny a stavění -rules.title.player = Hráči rules.title.enemy = Nepřátelé rules.title.unit = Jednotky rules.title.experimental = Experimentální +rules.title.environment = Environmentální rules.lighting = Světlo rules.ambientlight = Světlo prostředí rules.solarpowermultiplier = Násobek sluneční energie @@ -827,22 +830,47 @@ liquid.water.name = Voda liquid.slag.name = Roztavený kov liquid.oil.name = Nafta liquid.cryofluid.name = Chladící kapalina -item.corestorable = [lightgray]Úložné místo v jídře: {0}[] item.explosiveness = [lightgray]Výbušnost: {0}%[] item.flammability = [lightgray]Zápalnost: {0}%[] item.radioactivity = [lightgray]Radioaktivita: {0}%[] unit.health = [lightgray]Životy: {0}[] unit.speed = [lightgray]Rychlost: {0}[] -unit.weapon = [lightgray]Weapon: {0} -unit.itemcapacity = [lightgray]Item Capacity: {0} -unit.minespeed = [lightgray]Mining Speed: {0}% -unit.minepower = [lightgray]Mining Power: {0} -unit.ability = [lightgray]Ability: {0} -unit.buildspeed = [lightgray]Building Speed: {0}% +unit.weapon = [lightgray]Zbraň: {0} +unit.itemcapacity = [lightgray]Kapacita: {0} +unit.minespeed = [lightgray]Rychlost těžení: {0}% +unit.minepower = [lightgray]Těžební síla: {0} +unit.ability = [lightgray]Schopnost: {0} +unit.buildspeed = [lightgray]Rychlost stavění: {0}% liquid.heatcapacity = [lightgray]Teplotní kapacita: {0}[] liquid.viscosity = [lightgray]Viskozita: {0}[] liquid.temperature = [lightgray]Teplota: {0}[] +unit.dagger.name = Mech Dýka +unit.mace.name = Mace +unit.fortress.name = Mech Pevnost +unit.nova.name = Nova +unit.pulsar.name = Pulsar +unit.quasar.name = Quasar +unit.crawler.name = Mech Slídil +unit.atrax.name = Atrax +unit.spiroct.name = Spiroct +unit.arkyid.name = Arkyid +unit.flare.name = Flare +unit.horizon.name = Horizon +unit.zenith.name = Zenith +unit.antumbra.name = Antumbra +unit.eclipse.name = Eclipse +unit.mono.name = Mono +unit.poly.name = Poly +unit.mega.name = Mega +unit.risse.name = Risse +unit.minke.name = Minke +unit.bryde.name = Bryde +unit.alpha.name = Alpha +unit.beta.name = Beta +unit.gamma.name = Gamma + +block.parallax.name = Parallax block.cliff.name = Cliff block.sand-boulder.name = Pískovec block.grass.name = Tráva @@ -928,7 +956,7 @@ block.thorium-wall.name = Thoriová zeď block.thorium-wall-large.name = Velká thoriová zeď block.door.name = Dveře block.door-large.name = Velké dveře -block.duo.name = Střálna Duo +block.duo.name = Střílna Duo block.scorch.name = Palivec block.scatter.name = Rozsévač block.hail.name = Kroupomet @@ -994,17 +1022,6 @@ block.blast-mixer.name = Míchačka na výbušninu block.solar-panel.name = Solární panel block.solar-panel-large.name = Velký solární panel block.oil-extractor.name = Vrt na naftu -block.command-center.name = Řídící středisko -block.draug-factory.name = Továrna na těžící drony Dragoun -block.spirit-factory.name = Továrna na opravovací drony Spirit -block.phantom-factory.name = Továrna na stavící drony Fantóm -block.wraith-factory.name = Továrna na stíhačky Přízrak -block.ghoul-factory.name = Továrna na bombardéry Ghúl -block.dagger-factory.name = Továrna na mechy Dýka -block.crawler-factory.name = Továrna na mechy Slídil -block.titan-factory.name = Továrna na mechy Titán -block.fortress-factory.name = Továrna na mechy Pevnost -block.revenant-factory.name = Továrna na stíhačky Mstitel block.repair-point.name = Opravovací bod block.pulse-conduit.name = Pulzní potrubí block.plated-conduit.name = Plátované potrubí @@ -1036,6 +1053,19 @@ block.meltdown.name = Meltdown block.container.name = Kontejnér block.launch-pad.name = Vysílací plošina block.launch-pad-large.name = Velká vysílací plošina +block.segment.name = Úsek +block.ground-factory.name = Pozemní továrna +block.air-factory.name = Letecká továrna +block.naval-factory.name = Námořní továrna +block.additive-reconstructor.name = Přídavný přestavbovač +block.multiplicative-reconstructor.name = Násobný přestavbovač +block.exponential-reconstructor.name = Exponenciální přestavbovač +block.tetrative-reconstructor.name = Umocňující přestavbovač +block.mass-conveyor.name = Hromadný dopravník +block.payload-router.name = Směřovač nákladu +block.disassembler.name = Rozebírač +block.silicon-crucible.name = Křemíková nádoba +block.large-overdrive-projector.name = Velký urychlující projektor team.blue.name = modrý team.crux.name = červený team.sharded.name = oranžový @@ -1043,21 +1073,7 @@ team.orange.name = oranžový team.derelict.name = opuštěný team.green.name = zelený team.purple.name = fialový -unit.spirit.name = Opravovací dron Spirit -unit.draug.name = Těžící dron Dragoun -unit.phantom.name = Stavící drom Fantóm -unit.dagger.name = Mech Dýka -unit.crawler.name = Mech Slídil -unit.titan.name = Mech Titán -unit.ghoul.name = Bombardér Ghúl -unit.wraith.name = Stíhačka Přízrak -unit.fortress.name = Mech Pevnost -unit.revenant.name = Stíhačka Mstitel -unit.eruptor.name = Lávovec -unit.chaos-array.name = Čirý chaos -unit.eradicator.name = Likvidátor -unit.lich.name = Kostěj nesmrtelný -unit.reaper.name = Rozparovač + tutorial.next = [lightgray] tutorial.intro = Vítej ve [scarlet]výuce Mindustry[]. Zde se dozvíš základy hraní.\nPoznámka: výuka předpokládá [accent]výchozí klávesy[] v nastavení, pokud jsi je změnil, bude třeba to vzít v potaz.\nPoužij [accent][[WASD][] pro pohyb a [accent]kolečko myši[] pro přibližování a oddalování.\nZačni [accent]těžením mědi[]. Přibliž se k měděné žíle u Tvého jádra a klikni na ni pro zahájení těžby.\n\n[accent]{0}/{1} mědi[] tutorial.intro.mobile = Vítej ve [scarlet]výuce Mindustry[].\nPohybuj se táhnutím prstem do strany.\nPřibližuj a oddaluj mapu [accent]2 prsty[].\nZačni [accent] těžením mědi[]. Přibliž se k měděné žíle u Tvého jádra a ťupni na ni pro zahájení těžby.\n\n[accent]{0}/{1} mědi[] @@ -1100,17 +1116,7 @@ liquid.water.description = Nejužitečnější kapalina. Hojně využívaná jak liquid.slag.description = Různé různé druhy roztaveného kovu smíchané dohromady. Lze je rozdělit na jednotlivé minerály, nebo se tato slitina dá použít jako munice při střílení na nepřátelské jednotky. liquid.oil.description = Kapalina použitá při pokročilé výrobě materiálů. Může být přeměněna na uhlí, nebo při rozprášení a zapálení použita jako zbraň. liquid.cryofluid.description = Netečná, nereznoucí kapalina, vytvořená z vody a titanu. Má extrémně vysokou tepelnou kapacitu. Hojně se používá jako chladicí kapalina. -unit.draug.description = Jednoduchý těžící dron. Levný a postradatelný. Automaticky těží měď a olovo ve své blízkosti. Natěžené suroviny donese do nejbližšího jádra. -unit.spirit.description = Modifikovaný dron Dragoun, upravený pro opravu staveb, namísto těžení. Automaticky opravuje poškozené bloky v oblasti svého působení. -unit.phantom.description = Pokročilý dron. Následuje uživatele. Pomáhá při stavění. Znovu staví zničené bloky. -unit.dagger.description = Základní pozemní jednotka. Levná výroba. Zdrcující ve velkém houfu. -unit.crawler.description = Pozemní jednotka sestávající z oholené železné kostry s přilepenými výbušninami. Vydrží málo a exploduje při kontaktu s nepřáteli. -unit.titan.description = Vyspělá obrněná pozemní jednotka. Útočí jak na pozemní, tak vzdušné nepřátelské cíle. Je vybavena dvěma změnšenými plamenomety třídy Palivec. -unit.fortress.description = Těžký dělostřelecký mech. Je vybaven dvěma upravenými kanóny typu Kroupomet pro útok dalekého dosahu proti nepřátelským jednotkám a stavbám. -unit.eruptor.description = Těžký mech navržený na ničení budov. Pálí proudy rozžhaveného kovu na nepřátelská opevnění. Taví a zapaluje vše v cestě. -unit.wraith.description = Rychlá stíhačka pro bleskové útoky. Cílí na generátory energie. -unit.ghoul.description = Těžký bombardér pro kobercový nálet. Trhá nepřátelské struktury, cílí na kritickou infrastrukturu. -unit.revenant.description = Těžký vznášející se mrak raket. + block.message.description = Ukládá zprávu. Používá se pro komunikaci mezi spojenci. block.graphite-press.description = Přeměňuje neforemné kusy uhlí do ušlechtilých výlisků grafitu. block.multi-press.description = Vylepšená verze lisu na grafit. Využívá vodu a energii k rychlejšímu a efektivnějšímu zpracování uhlí. @@ -1155,7 +1161,7 @@ block.force-projector.description = Vytvoří okolo sebe šestihrané silové po block.shock-mine.description = Působí poškození nepřátelským jednotkám při sešlápnutí. Takřka neviditelné pro nepřátele (a i v nabídce bloků :) ). block.conveyor.description = Základní blok pro přepravu předmětů. Unáší předměty kupředu a automaticky plní vhodná úložiště (budovy, kontejnery, jádro), které po cestě potká. Lze jej otáčet dle potřeby. block.titanium-conveyor.description = Pokročilý blok pro přepravu předmětů. Přenáší předměty rychleji, než základní dopravník. -block.plastanium-conveyor.description = Moves items in batches.\nAccepts items at the back, and unloads them in three directions at the front. +block.plastanium-conveyor.description = Přesouvá položky v dávkích.\nPřijímá položky zezadu, a vykládá je do tří směrů vepředu. block.junction.description = Chová se jako most pro dva křížící se pásy dopravníků. Užitečný při situaci, kdy dva rozdílné dopravníky dopravují dva rozdílné materiály přes jedno pole. block.bridge-conveyor.description = Pokročilý blok pro přepravu předmětů. Dovoluje transport předmětů až přes tři pole, a to přes jakýkoliv terén nebo budovu. block.phase-conveyor.description = Pokročilý blok pro přepravu předmětů. Využívá energii k teleportaci předmětů na vzdálenost několika dlaždic mezi jiným propojeným fázovým dopravníkem. @@ -1216,20 +1222,10 @@ block.lancer.description = Středně velká střílna proti pozemním jednotkám block.arc.description = Malá energetická střílna. Pálí výboje po nepřátelských jednotkách. block.swarmer.description = Středně velká střílna s raketami. Útočí na pozemní i vzdušné cíle. Pálí samonaváděcí střely. block.salvo.description = Větší, pokročilejší verze střílny Duo. Pálí na nepřátele rychlé dávky střel. -block.fuse.description = Velká střílna s krátkým dosahem. Pálí trojice energetických paprsků blízké nepřátele. +block.fuse.description = Velká střílna s krátkým dosahem. Pálí trojici pronikavých výbuchů na blízké nepřátele. block.ripple.description = Extrémně silná dělostřelecká střílna. Pálí na dálku shluky střel na nepřátelské jednotky. block.cyclone.description = Velká protiletecká a protipozemní střílna. Pálí explodující dávky na nepřítele v okolí. block.spectre.description = Velká střílna s kanónem s dvěma hlavněmi. Střílí velké náboje, které pronikají brněním jak pozemních, tak vzdušných nepřátelských cílů. block.meltdown.description = Masivní laserový kanón. Nabije se a pak pálí nepřetržitý laserový paprsek na nepřátele v okolí. Vyžaduje ke své funkci chlazení. -block.command-center.description = Vydává příkazy spojeneckým jednotkám na mapě.\nInstruuje jednotky k útoku na nepřátelské jádro, návratu do jádra nebo továrny a ke shromáždění se. Pokud se na mapě nepřátelské jádro nenachází, jednotky budou v útočném režimu držet hlídku. -block.draug-factory.description = Vyrábí těžící drony Dragoun. -block.spirit-factory.description = Vyrábí drony, které opravují budovy. -block.phantom-factory.description = Vyrábí drony s pokročilou konstrukcí. -block.wraith-factory.description = Produkuje rychlé stíhače pro bleskový útok. -block.ghoul-factory.description = Vyrábí těžké bombardéry pro kobercové nálety. -block.revenant-factory.description = Vyrábí těžké jednotky na bázi raket. -block.dagger-factory.description = Vyrábí základní pozemní jednotky. -block.crawler-factory.description = Vyrábí roje rychlých sebezničujících jednotek. -block.titan-factory.description = Vyrábí pokročilé obrněné pozemní jednotky. -block.fortress-factory.description = Vyrábí těžké dělostřelecké pozemní jednotky. block.repair-point.description = Nepřetržitě léčí nejbližší poškozenou jednotku v poli své působnosti. +block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. diff --git a/core/assets/bundles/bundle_da.properties b/core/assets/bundles/bundle_da.properties new file mode 100644 index 0000000000..5472e33070 --- /dev/null +++ b/core/assets/bundles/bundle_da.properties @@ -0,0 +1,1231 @@ +credits.text = Lavet af [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[] +credits = Credits +contributors = Oversættere og Bidragsyder +discord = Tilmeld dig Mindustry Discord! +link.discord.description = Det officielle Mindustry Discord chatrum +link.reddit.description = Mindustry subreddit +link.github.description = Spillets source code +link.changelog.description = Liste over opdateringer +link.dev-builds.description = Ustabile development builds +link.trello.description = Det officielle Trello board for planlagte udvidelser +link.itch.io.description = itch.io side med PC downloads +link.google-play.description = Google Play store +link.f-droid.description = F-Droid katalog +link.wiki.description = Det officielle Mindustry wiki +link.feathub.description = Foreslå nye ændringer +linkfail = Kunne ikke åbne link!\n Linkets URL er kopieret til din udklipsholder. +screenshot = Screenshot gemt i {0} +screenshot.invalid = Banen er for stor, der er ikke nok hukommelse til screenshot. +gameover = Game Over +gameover.pvp = [accent] {0}[] hold har vundet! +highscore = [accent]Ny highscore! +copied = kopieret. + +load.sound = Lyd +load.map = Bane +load.image = Billeder +load.content = Indhold +load.system = System +load.mod = Mods +load.scripts = Scripts + +be.update = En ny Bleeding Edge version er tilgængelig: +be.update.confirm = Download den og genstart nu? +be.updating = Opdatere... +be.ignore = Ignorer +be.noupdates = Ingen opdateringer fundet +be.check = Søg efter opdateringer + +schematic = Skabelon +schematic.add = Gem skabelon... +schematics = Skabeloner +schematic.replace = En skabelon med det navn eksistere allerede. Vil du erstatte den? +schematic.exists = A schematic by that name already exists. +schematic.import = Importer skabelon... +schematic.exportfile = Exporter Fil +schematic.importfile = Importer Fil +schematic.browseworkshop = Søg i Workshop +schematic.copy = Kopier til udklipsholder +schematic.copy.import = Importer fra udklipsholder +schematic.shareworkshop = Del på Workshop +schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Vend skabelon +schematic.saved = Skabelon gemt. +schematic.delete.confirm = Denne skabelon vil være væk for altid. +schematic.rename = Omdøb skabelon +schematic.info = {0}x{1}, {2} blokke + +stat.wave = Invasionsbølger nedslået:[accent] {0} +stat.enemiesDestroyed = Fjender nedlagt:[accent] {0} +stat.built = Bygninger opført:[accent] {0} +stat.destroyed = Bygninger ødelagt:[accent] {0} +stat.deconstructed = Bygninger nedrevet:[accent] {0} +stat.delivered = Ressourcer afsendt: +stat.playtime = Spilletid:[accent] {0} +stat.rank = Endelig Rang: [accent]{0} + +launcheditems = [accent]Afsendte genstande +launchinfo = [unlaunched][[LAUNCH] din kerne for at modtage genstandene vist i blå. +map.delete = Er du sikker på at du vil slette banen"[accent]{0}[]"? +level.highscore = High Score: [accent]{0} +level.select = Vælg bane +level.mode = Spiltilstand: +coreattack = < Kerne er under angreb!! > +nearpoint = [[ [scarlet]FORLAD INVASIONSZONE OMGÅENDE[] ]\n Fare for udslettelse +database = Kerne database +savegame = Gem spil +loadgame = Hent spil +joingame = Deltag i spil +customgame = Bregerdefineret spil +newgame = Nyt spil +none = +minimap = Kort +position = Position +close = Luk +website = Webside +quit = Afslut +save.quit = Gem & afslut +maps = Baner +maps.browse = Søg i baner +continue = Fortsæt +maps.none = [lightgray]Ingen baner fundet! +invalid = Ugyldig +pickcolor = Vælg farve +preparingconfig = Klargører konfiguration +preparingcontent = Klargører indhold +uploadingcontent = Uploading indhold +uploadingpreviewfile = Uploading Forhåndsvisnings File +committingchanges = Sender ændringer +done = Færdig +feature.unsupported = Din enhed understøtter ikke denne funktion + +mods.alphainfo = Vær opmærksom på at mods ikke er færdigudviklet.[scarlet]De kan indeholde mange fejl[].\n Hvis du oplever fejl can du reportére dem på Mindustry GitHub eller Discord. +mods.alpha = [accent](Alpha) +mods = Mods +mods.none = [LIGHT_GRAY]Ingen mods fundet! +mods.guide = Modding guide +mods.report = Reportér fejl +mods.openfolder = Åben mod mappe +mods.reload = Reload +mods.reloadexit = The game will now exit, to reload mods. +mod.display = [gray]Mod:[orange] {0} +mod.enabled = [lightgray]Aktiveret +mod.disabled = [scarlet]Deaktiveret +mod.disable = Deaktiver +mod.content = Content: +mod.delete.error = Kan ikke slette mod. Filer er muligvis i brug. +mod.requiresversion = [scarlet]Behøver minimal spil version: [accent]{0} +mod.missingdependencies = [scarlet]Mangler afhængigheder: {0} +mod.erroredcontent = [scarlet]Indholds fejl +mod.errors = Fejl ved afhentning af indhold. +mod.noerrorplay = [scarlet]Du har mods med fejl.[] Deaktiver det eller løs fejl før du starter spillet. +mod.nowdisabled = [scarlet]Mod '{0}' mangler afhængigheder:[accent] {1}\n[lightgray]Disse mods skal hentes først.\nDette mod vil blive deaktiver automatisk. +mod.enable = Aktiver +mod.requiresrestart = Spillet vil nu lukke for at tilføje mod ændringerne +mod.reloadrequired = [scarlet]Genindlæsning påkrævet +mod.import = Importer Mod +mod.import.file = Import File +mod.import.github = Importer GitHub Mod +mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source! +mod.item.remove = Denne genstand er tilføjet af [accent] '{0}'[] mod. Afinstaller mod for at fjerne den. +mod.remove.confirm = Dette mod vil blive slettet. +mod.author = [LIGHT_GRAY]Forfatter:[] {0} +mod.missing = Dette spil benytter mods som ikke er tilgængelige. Er du sikker på at du vil hente det? Dette kan medfører fejl i spillet\n[lightgray]Mods:\n{0} +mod.preview.missing = Før du offentliggøre dette mod i workshoppen, skal du tilføje et billede.\nPlacer billedet i moddets mappe under navnet [accent] preview.png[] og forsøg igen. +mod.folder.missing = Kun mods i mappe-form kan offentliggøres til workshoppen.\nFor at konverter etvært mod til en mappe, udpak .zip-filen i en mappe and slet den herefter, genstart efterfølgende dit spil eller genindlæs dine mods. +mod.scripts.disable = Your device does not support mods with scripts. You must disable these mods to play the game. + +about.button = Om +name = Navn: +noname = Vælg et[accent] spiller navn[] først. +filename = Fil navn: +unlocked = Nyt indhold tilgængeligt! +completed = [accent]Færdiggjort +techtree = Teknologi træ +research.list = [lightgray]Forskning: +research = Udforsk +researched = [lightgray]{0} Udforsket. +players = {0} spillere +players.single = {0} spiller +players.search = search +players.notfound = [gray]no players found +server.closing = [accent]Lukker server... +server.kicked.kick = Du er blevet kicked fra serveren! +server.kicked.whitelist = Du er ikke whitelisted her. +server.kicked.serverClose = Server lukket. +server.kicked.vote = Du er blevet vote-kicked. Farvel. +server.kicked.clientOutdated = Forældet client! Opdater dit spil! +server.kicked.serverOutdated = Forældet server! Få værten til at opdatere! +server.kicked.banned = Du er banned på denne server. +server.kicked.typeMismatch = Denne server er ikke kompatibel med din version. +server.kicked.playerLimit = Denne server are fuld. Vent på en ledig plads. +server.kicked.recentKick = Du er blevet kicked for nylig.\nVent før du forsøger at forbinde igen. +server.kicked.nameInUse = Der er allerede nogen med dette navn\npå denne server. +server.kicked.nameEmpty = Det valgte navn er ugyldigt. +server.kicked.idInUse = Du er allered på denne server! Det er ikke tilladt er forbinde med flere konti. +server.kicked.customClient = Denne server understøtter ikke brugerdefineret versioner. Download en officiel version. +server.kicked.gameover = Game over! +server.kicked.serverRestarting = Server genstarter. +server.versions = Din version:[accent] {0}[]\nServer version:[accent] {1}[] +host.info = [accent]Afhold[] knappen starter en server på port [scarlet]6567[]. Enhver på samme [lightgray]wifi elle lokalt netværk[] burde kunne se din server i deres server liste.\n\n[accent]Port forwarding[]er påkrævet. Hvis du ønsker at spillere fra hele verden skal kunne forbinde med IP\n\n[lightgray]Note: Hvis nogen har problemer med at forbinde til din LAN server, sørg for at you har tilladt Mindustry adgang til dit lokale netværk i dine firewall indstillinger. +join.info = Her kan du forbinde til en [accent]server IP[], eller finde [accent]lokal netværk[] servers.\nBåde LAN og WAN multiplayer understøttes.\n\n[lightgray]Note: Der er ingen automatisk global server liste; Hvis du ønsker at forbinde til nogen med IP, skal du spørge værten om serverens IP. +hostserver = Afhold Multiplayer Spil +invitefriends = Inviter venner +hostserver.mobile = Afhold\nspil +host = Afhold +hosting = [accent]Starter server... +hosts.refresh = Genindlæs +hosts.discovering = Finder LAN spil +hosts.discovering.any = Discovering games +server.refreshing = Genindlæser server +hosts.none = [lightgray]Ingen lokale spil fundet! +host.invalid = [scarlet]Kan ikke forbinde til vært. + +servers.local = Lokale Servere +servers.remote = Afsides Servere +servers.global = Globale Servere + +trace = Følg spiller +trace.playername = Spiller navn: [accent]{0} +trace.ip = IP: [accent]{0} +trace.id = Unik ID: [accent]{0} +trace.mobile = Mobil client: [accent]{0} +trace.modclient = Brugerdefineret client: [accent]{0} +invalidid = Ugyldig client ID! Indsend en fejlrapport. +server.bans = Bans +server.bans.none = Ingen banned Spillere fundet! +server.admins = Admins +server.admins.none = Ingen admins fundet! +server.add = Tilføj server +server.delete = Er du sikker på at du ønsker at slette denne server? +server.edit = Rediger server +server.outdated = [crimson]Forældet server![] +server.outdated.client = [crimson]Forældet client![] +server.version = [gray]v{0} {1} +server.custombuild = [accent]Brugerdefineret version +confirmban = Er du sikker på at du ønsker at banne denne spiller? +confirmkick = Er du sikker på at du ønsker at kicke denne spiller? +confirmvotekick = Er du sikker på at du ønsker at vote-kicke denne spiller? +confirmunban = Er du sikker på at du ønsker at unbanne denne spiller? +confirmadmin = Er du sikker på at du ønsker at gøre denne spiller til admin? +confirmunadmin = Er du sikker på at du ønsker at fjerne admin status fra denne spiller? +joingame.title = Deltag i spil +joingame.ip = Addresse: +disconnect = Afbryd forbindelse +disconnect.error = Forbindelses fejl. +disconnect.closed = Forbindelse afbrudt. +disconnect.timeout = Maksimal ventetid overskredet. +disconnect.data = Failed to load world data! +cantconnect = Unable to join game ([accent]{0}[]). +connecting = [accent]Connecting... +connecting.data = [accent]Loading world data... +server.port = Port: +server.addressinuse = Address already in use! +server.invalidport = Invalid port number! +server.error = [crimson]Error hosting server. +save.new = New Save +save.overwrite = Are you sure you want to overwrite\nthis save slot? +overwrite = Overwrite +save.none = No saves found! +savefail = Failed to save game! +save.delete.confirm = Are you sure you want to delete this save? +save.delete = Delete +save.export = Export Save +save.import.invalid = [accent]This save is invalid! +save.import.fail = [crimson]Failed to import save: [accent]{0} +save.export.fail = [crimson]Failed to export save: [accent]{0} +save.import = Import Save +save.newslot = Save name: +save.rename = Rename +save.rename.text = New name: +selectslot = Select a save. +slot = [accent]Slot {0} +editmessage = Edit Message +save.corrupted = Save file corrupted or invalid! +empty = +on = On +off = Off +save.autosave = Autosave: {0} +save.map = Map: {0} +save.wave = Wave {0} +save.mode = Gamemode: {0} +save.date = Last Saved: {0} +save.playtime = Playtime: {0} +warning = Warning. +confirm = Confirm +delete = Delete +view.workshop = View In Workshop +workshop.listing = Edit Workshop Listing +ok = OK +open = Open +customize = Customize Rules +cancel = Cancel +openlink = Open Link +copylink = Copy Link +back = Back +data.export = Export Data +data.import = Import Data +data.openfolder = Open Data Folder +data.exported = Data exported. +data.invalid = This isn't valid game data. +data.import.confirm = Importing external data will overwrite[scarlet] all[] your current game data.\n[accent]This cannot be undone![]\n\nOnce the data is imported, your game will exit immediately. +quit.confirm = Are you sure you want to quit? +quit.confirm.tutorial = Are you sure you know what you're doing?\nThe tutorial can be re-taken in[accent] Settings->Game->Re-Take Tutorial.[] +loading = [accent]Loading... +reloading = [accent]Reloading Mods... +saving = [accent]Saving... +respawn = [accent][[{0}][] to respawn in core +cancelbuilding = [accent][[{0}][] to clear plan +selectschematic = [accent][[{0}][] to select+copy +pausebuilding = [accent][[{0}][] to pause building +resumebuilding = [scarlet][[{0}][] to resume building +wave = [accent]Wave {0} +wave.waiting = [lightgray]Wave in {0} +wave.waveInProgress = [lightgray]Wave in progress +waiting = [lightgray]Waiting... +waiting.players = Waiting for players... +wave.enemies = [lightgray]{0} Enemies Remaining +wave.enemy = [lightgray]{0} Enemy Remaining +loadimage = Load Image +saveimage = Save Image +unknown = Unknown +custom = Custom +builtin = Built-In +map.delete.confirm = Are you sure you want to delete this map? This action cannot be undone! +map.random = [accent]Random Map +map.nospawn = This map does not have any cores for the player to spawn in! Add a[accent] orange[] core to this map in the editor. +map.nospawn.pvp = This map does not have any enemy cores for player to spawn into! Add[SCARLET] non-orange[] cores to this map in the editor. +map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor. +map.invalid = Error loading map: corrupted or invalid map file. +workshop.update = Update Item +workshop.error = Error fetching workshop details: {0} +map.publish.confirm = Are you sure you want to publish this map?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your maps will not show up! +workshop.menu = Select what you would like to do with this item. +workshop.info = Item Info +changelog = Changelog (optional): +eula = Steam EULA +missing = This item has been deleted or moved.\n[lightgray]The workshop listing has now been automatically un-linked. +publishing = [accent]Publishing... +publish.confirm = Are you sure you want to publish this?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your items will not show up! +publish.error = Error publishing item: {0} +steam.error = Failed to initialize Steam services.\nError: {0} + +editor.brush = Brush +editor.openin = Open In Editor +editor.oregen = Ore Generation +editor.oregen.info = Ore Generation: +editor.mapinfo = Map Info +editor.author = Author: +editor.description = Description: +editor.nodescription = A map must have a description of at least 4 characters before being published. +editor.waves = Waves: +editor.rules = Rules: +editor.generation = Generation: +editor.ingame = Edit In-Game +editor.publish.workshop = Publish On Workshop +editor.newmap = New Map +workshop = Workshop +waves.title = Waves +waves.remove = Remove +waves.never = +waves.every = every +waves.waves = wave(s) +waves.perspawn = per spawn +waves.shields = shields/wave +waves.to = to +waves.guardian = Guardian +waves.preview = Preview +waves.edit = Edit... +waves.copy = Copy to Clipboard +waves.load = Load from Clipboard +waves.invalid = Invalid waves in clipboard. +waves.copied = Waves copied. +waves.none = No enemies defined.\nNote that empty wave layouts will automatically be replaced with the default layout. +editor.default = [lightgray] +details = Details... +edit = Edit... +editor.name = Name: +editor.spawn = Spawn Unit +editor.removeunit = Remove Unit +editor.teams = Teams +editor.errorload = Error loading file. +editor.errorsave = Error saving file. +editor.errorimage = That's an image, not a map.\n\nIf you want to import a 3.5/build 40 map, use the 'Import Legacy Map' button in the editor. +editor.errorlegacy = This map is too old, and uses a legacy map format that is no longer supported. +editor.errornot = This is not a map file. +editor.errorheader = This map file is either not valid or corrupt. +editor.errorname = Map has no name defined. Are you trying to load a save file? +editor.update = Update +editor.randomize = Randomize +editor.apply = Apply +editor.generate = Generate +editor.resize = Resize +editor.loadmap = Load Map +editor.savemap = Save Map +editor.saved = Saved! +editor.save.noname = Your map does not have a name! Set one in the 'map info' menu. +editor.save.overwrite = Your map overwrites a built-in map! Pick a different name in the 'map info' menu. +editor.import.exists = [scarlet]Unable to import:[] a built-in map named '{0}' already exists! +editor.import = Import... +editor.importmap = Import Map +editor.importmap.description = Import an already existing map +editor.importfile = Import File +editor.importfile.description = Import an external map file +editor.importimage = Import Legacy Map +editor.importimage.description = Import an external map image file +editor.export = Export... +editor.exportfile = Export File +editor.exportfile.description = Export a map file +editor.exportimage = Export Terrain Image +editor.exportimage.description = Export a map image file +editor.loadimage = Import Terrain +editor.saveimage = Export Terrain +editor.unsaved = [scarlet]You have unsaved changes![]\nAre you sure you want to exit? +editor.resizemap = Resize Map +editor.mapname = Map Name: +editor.overwrite = [accent]Warning!\nThis overwrites an existing map. +editor.overwrite.confirm = [scarlet]Warning![] A map with this name already exists. Are you sure you want to overwrite it? +editor.exists = A map with this name already exists. +editor.selectmap = Select a map to load: + +toolmode.replace = Replace +toolmode.replace.description = Draws only on solid blocks. +toolmode.replaceall = Replace All +toolmode.replaceall.description = Replace all blocks in map. +toolmode.orthogonal = Orthogonal +toolmode.orthogonal.description = Draws only orthogonal lines. +toolmode.square = Square +toolmode.square.description = Square brush. +toolmode.eraseores = Erase Ores +toolmode.eraseores.description = Erase only ores. +toolmode.fillteams = Fill Teams +toolmode.fillteams.description = Fill teams instead of blocks. +toolmode.drawteams = Draw Teams +toolmode.drawteams.description = Draw teams instead of blocks. + +filters.empty = [lightgray]No filters! Add one with the button below. +filter.distort = Distort +filter.noise = Noise +filter.enemyspawn = Enemy Spawn Select +filter.corespawn = Core Select +filter.median = Median +filter.oremedian = Ore Median +filter.blend = Blend +filter.defaultores = Default Ores +filter.ore = Ore +filter.rivernoise = River Noise +filter.mirror = Mirror +filter.clear = Clear +filter.option.ignore = Ignore +filter.scatter = Scatter +filter.terrain = Terrain +filter.option.scale = Scale +filter.option.chance = Chance +filter.option.mag = Magnitude +filter.option.threshold = Threshold +filter.option.circle-scale = Circle Scale +filter.option.octaves = Octaves +filter.option.falloff = Falloff +filter.option.angle = Angle +filter.option.amount = Amount +filter.option.block = Block +filter.option.floor = Floor +filter.option.flooronto = Target Floor +filter.option.wall = Wall +filter.option.ore = Ore +filter.option.floor2 = Secondary Floor +filter.option.threshold2 = Secondary Threshold +filter.option.radius = Radius +filter.option.percentile = Percentile + +width = Width: +height = Height: +menu = Menu +play = Play +campaign = Campaign +load = Load +save = Save +fps = FPS: {0} +ping = Ping: {0}ms +language.restart = Please restart your game for the language settings to take effect. +settings = Settings +tutorial = Tutorial +tutorial.retake = Re-Take Tutorial +editor = Editor +mapeditor = Map Editor + +abandon = Abandon +abandon.text = This zone and all its resources will be lost to the enemy. +locked = Locked +complete = [lightgray]Complete: +requirement.wave = Reach Wave {0} in {1} +requirement.core = Destroy Enemy Core in {0} +requirement.unlock = Unlock {0} +resume = Resume Zone:\n[lightgray]{0} +bestwave = [lightgray]Best Wave: {0} +launch = < LAUNCH > +launch.text = Launch +launch.title = Launch Successful +launch.next = [lightgray]next opportunity at wave {0} +launch.unable2 = [scarlet]Unable to LAUNCH.[] +launch.confirm = This will launch all resources in your core.\nYou will not be able to return to this base. +launch.skip.confirm = If you skip now, you will not be able to launch until later waves. +uncover = Uncover +configure = Configure Loadout +loadout = Loadout +resources = Resources +bannedblocks = Banned Blocks +addall = Add All +configure.invalid = Amount must be a number between 0 and {0}. +zone.unlocked = [lightgray]{0} unlocked. +zone.requirement.complete = Requirement for {0} completed:[lightgray]\n{1} +zone.resources = [lightgray]Resources Detected: +zone.objective = [lightgray]Objective: [accent]{0} +zone.objective.survival = Survive +zone.objective.attack = Destroy Enemy Core +add = Add... +boss.health = Boss Health + +connectfail = [crimson]Connection error:\n\n[accent]{0} +error.unreachable = Server unreachable.\nIs the address spelled correctly? +error.invalidaddress = Invalid address. +error.timedout = Timed out!\nMake sure the host has port forwarding set up, and that the address is correct! +error.mismatch = Packet error:\npossible client/server version mismatch.\nMake sure you and the host have the latest version of Mindustry! +error.alreadyconnected = Already connected. +error.mapnotfound = Map file not found! +error.io = Network I/O error. +error.any = Unknown network error. +error.bloom = Failed to initialize bloom.\nYour device may not support it. + +sector.groundZero.name = Ground Zero +sector.craters.name = The Craters +sector.frozenForest.name = Frozen Forest +sector.ruinousShores.name = Ruinous Shores +sector.stainedMountains.name = Stained Mountains +sector.desolateRift.name = Desolate Rift +sector.nuclearComplex.name = Nuclear Production Complex +sector.overgrowth.name = Overgrowth +sector.tarFields.name = Tar Fields +sector.saltFlats.name = Salt Flats +sector.fungalPass.name = Fungal Pass + +sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. +sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. +sector.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. +sector.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. +sector.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. +sector.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units. +sector.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build Titan units. Destroy it. Reclaim that which was lost. +sector.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. +sector.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. +sector.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. +sector.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. + +settings.language = Language +settings.data = Game Data +settings.reset = Reset to Defaults +settings.rebind = Rebind +settings.resetKey = Reset +settings.controls = Controls +settings.game = Game +settings.sound = Sound +settings.graphics = Graphics +settings.cleardata = Clear Game Data... +settings.clear.confirm = Are you sure you want to clear this data?\nWhat is done cannot be undone! +settings.clearall.confirm = [scarlet]WARNING![]\nThis will clear all data, including saves, maps, unlocks and keybinds.\nOnce you press 'ok' the game will wipe all data and automatically exit. +paused = [accent]< Paused > +clear = Clear +banned = [scarlet]Banned +unplaceable.sectorcaptured = [scarlet]Requires captured sector +yes = Yes +no = No +info.title = Info +error.title = [crimson]An error has occured +error.crashtitle = An error has occured +unit.nobuild = [scarlet]Unit can't build +blocks.input = Input +blocks.output = Output +blocks.booster = Booster +blocks.tiles = Required Tiles +blocks.affinities = Affinities +block.unknown = [lightgray]??? +blocks.powercapacity = Power Capacity +blocks.powershot = Power/Shot +blocks.damage = Damage +blocks.targetsair = Targets Air +blocks.targetsground = Targets Ground +blocks.itemsmoved = Move Speed +blocks.launchtime = Time Between Launches +blocks.shootrange = Range +blocks.size = Size +blocks.liquidcapacity = Liquid Capacity +blocks.powerrange = Power Range +blocks.powerconnections = Max Connections +blocks.poweruse = Power Use +blocks.powerdamage = Power/Damage +blocks.itemcapacity = Item Capacity +blocks.basepowergeneration = Base Power Generation +blocks.productiontime = Production Time +blocks.repairtime = Block Full Repair Time +blocks.speedincrease = Speed Increase +blocks.range = Range +blocks.drilltier = Drillables +blocks.drillspeed = Base Drill Speed +blocks.boosteffect = Boost Effect +blocks.maxunits = Max Active Units +blocks.health = Health +blocks.buildtime = Build Time +blocks.buildcost = Build Cost +blocks.inaccuracy = Inaccuracy +blocks.shots = Shots +blocks.reload = Shots/Second +blocks.ammo = Ammo + +bar.drilltierreq = Better Drill Required +bar.noresources = Missing Resources +bar.corereq = Core Base Required +bar.drillspeed = Drill Speed: {0}/s +bar.pumpspeed = Pump Speed: {0}/s +bar.efficiency = Efficiency: {0}% +bar.powerbalance = Power: {0}/s +bar.powerstored = Stored: {0}/{1} +bar.poweramount = Power: {0} +bar.poweroutput = Power Output: {0} +bar.items = Items: {0} +bar.capacity = Capacity: {0} +bar.unitcap = {0} {1}/{2} +bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled] +bar.liquid = Liquid +bar.heat = Heat +bar.power = Power +bar.progress = Build Progress +bar.input = Input +bar.output = Output + +bullet.damage = [stat]{0}[lightgray] damage +bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles +bullet.incendiary = [stat]incendiary +bullet.homing = [stat]homing +bullet.shock = [stat]shock +bullet.frag = [stat]frag +bullet.knockback = [stat]{0}[lightgray] knockback +bullet.freezing = [stat]freezing +bullet.tarred = [stat]tarred +bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier +bullet.reload = [stat]{0}[lightgray]x fire rate + +unit.blocks = blocks +unit.powersecond = power units/second +unit.liquidsecond = liquid units/second +unit.itemssecond = items/second +unit.liquidunits = liquid units +unit.powerunits = power units +unit.degrees = degrees +unit.seconds = seconds +unit.persecond = /sec +unit.timesspeed = x speed +unit.percent = % +unit.items = items +unit.thousands = k +unit.millions = mil +category.general = General +category.power = Power +category.liquids = Liquids +category.items = Items +category.crafting = Input/Output +category.shooting = Shooting +category.optional = Optional Enhancements +setting.landscape.name = Lock Landscape +setting.shadows.name = Shadows +setting.blockreplace.name = Automatic Block Suggestions +setting.linear.name = Linear Filtering +setting.hints.name = Hints +setting.flow.name = Display Resource Flow Rate +setting.buildautopause.name = Auto-Pause Building +setting.mapcenter.name = Auto Center Map To Player +setting.animatedwater.name = Animated Water +setting.animatedshields.name = Animated Shields +setting.antialias.name = Antialias[lightgray] (requires restart)[] +setting.playerindicators.name = Player Indicators +setting.indicators.name = Enemy/Ally Indicators +setting.autotarget.name = Auto-Target +setting.keyboard.name = Mouse+Keyboard Controls +setting.touchscreen.name = Touchscreen Controls +setting.fpscap.name = Max FPS +setting.fpscap.none = None +setting.fpscap.text = {0} FPS +setting.uiscale.name = UI Scaling[lightgray] (require restart)[] +setting.swapdiagonal.name = Always Diagonal Placement +setting.difficulty.training = Training +setting.difficulty.easy = Easy +setting.difficulty.normal = Normal +setting.difficulty.hard = Hard +setting.difficulty.insane = Insane +setting.difficulty.name = Difficulty: +setting.screenshake.name = Screen Shake +setting.effects.name = Display Effects +setting.destroyedblocks.name = Display Destroyed Blocks +setting.blockstatus.name = Display Block Status +setting.conveyorpathfinding.name = Conveyor Placement Pathfinding +setting.sensitivity.name = Controller Sensitivity +setting.saveinterval.name = Save Interval +setting.seconds = {0} seconds +setting.blockselecttimeout.name = Block Select Timeout +setting.milliseconds = {0} milliseconds +setting.fullscreen.name = Fullscreen +setting.borderlesswindow.name = Borderless Window[lightgray] (may require restart) +setting.fps.name = Show FPS & Ping +setting.smoothcamera.name = Smooth Camera +setting.blockselectkeys.name = Show Block Select Keys +setting.vsync.name = VSync +setting.pixelate.name = Pixelate +setting.minimap.name = Show Minimap +setting.coreitems.name = Display Core Items (WIP) +setting.position.name = Show Player Position +setting.musicvol.name = Music Volume +setting.atmosphere.name = Show Planet Atmosphere +setting.ambientvol.name = Ambient Volume +setting.mutemusic.name = Mute Music +setting.sfxvol.name = SFX Volume +setting.mutesound.name = Mute Sound +setting.crashreport.name = Send Anonymous Crash Reports +setting.savecreate.name = Auto-Create Saves +setting.publichost.name = Public Game Visibility +setting.playerlimit.name = Player Limit +setting.chatopacity.name = Chat Opacity +setting.lasersopacity.name = Power Laser Opacity +setting.bridgeopacity.name = Bridge Opacity +setting.playerchat.name = Display Player Bubble Chat +public.confirm = Do you want to make your game public?\n[accent]Anyone will be able to join your games.\n[lightgray]This can be changed later in Settings->Game->Public Game Visibility. +public.beta = Note that beta versions of the game cannot make public lobbies. +uiscale.reset = UI scale has been changed.\nPress "OK" to confirm this scale.\n[scarlet]Reverting and exiting in[accent] {0}[] seconds... +uiscale.cancel = Cancel & Exit +setting.bloom.name = Bloom +keybind.title = Rebind Keys +keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only basic movement is supported. +category.general.name = General +category.view.name = View +category.multiplayer.name = Multiplayer +category.blocks.name = Block Select +command.attack = Attack +command.rally = Rally +command.retreat = Retreat +placement.blockselectkeys = \n[lightgray]Key: [{0}, +keybind.respawn.name = Respawn +keybind.control.name = Control Unit +keybind.clear_building.name = Clear Building +keybind.press = Press a key... +keybind.press.axis = Press an axis or key... +keybind.screenshot.name = Map Screenshot +keybind.toggle_power_lines.name = Toggle Power Lasers +keybind.toggle_block_status.name = Toggle Block Statuses +keybind.move_x.name = Move X +keybind.move_y.name = Move Y +keybind.mouse_move.name = Follow Mouse +keybind.boost.name = Boost +keybind.schematic_select.name = Select Region +keybind.schematic_menu.name = Schematic Menu +keybind.schematic_flip_x.name = Flip Schematic X +keybind.schematic_flip_y.name = Flip Schematic Y +keybind.category_prev.name = Previous Category +keybind.category_next.name = Next Category +keybind.block_select_left.name = Block Select Left +keybind.block_select_right.name = Block Select Right +keybind.block_select_up.name = Block Select Up +keybind.block_select_down.name = Block Select Down +keybind.block_select_01.name = Category/Block Select 1 +keybind.block_select_02.name = Category/Block Select 2 +keybind.block_select_03.name = Category/Block Select 3 +keybind.block_select_04.name = Category/Block Select 4 +keybind.block_select_05.name = Category/Block Select 5 +keybind.block_select_06.name = Category/Block Select 6 +keybind.block_select_07.name = Category/Block Select 7 +keybind.block_select_08.name = Category/Block Select 8 +keybind.block_select_09.name = Category/Block Select 9 +keybind.block_select_10.name = Category/Block Select 10 +keybind.fullscreen.name = Toggle Fullscreen +keybind.select.name = Select/Shoot +keybind.diagonal_placement.name = Diagonal Placement +keybind.pick.name = Pick Block +keybind.break_block.name = Break Block +keybind.deselect.name = Deselect +keybind.shoot.name = Shoot +keybind.zoom.name = Zoom +keybind.menu.name = Menu +keybind.pause.name = Pause +keybind.pause_building.name = Pause/Resume Building +keybind.minimap.name = Minimap +keybind.chat.name = Chat +keybind.player_list.name = Player List +keybind.console.name = Console +keybind.rotate.name = Rotate +keybind.rotateplaced.name = Rotate Existing (Hold) +keybind.toggle_menus.name = Toggle Menus +keybind.chat_history_prev.name = Chat History Prev +keybind.chat_history_next.name = Chat History Next +keybind.chat_scroll.name = Chat Scroll +keybind.drop_unit.name = Drop Unit +keybind.zoom_minimap.name = Zoom Minimap +mode.help.title = Description of modes +mode.survival.name = Survival +mode.survival.description = The normal mode. Limited resources and automatic incoming waves.\n[gray]Requires enemy spawns in the map to play. +mode.sandbox.name = Sandbox +mode.sandbox.description = Infinite resources and no timer for waves. +mode.editor.name = Editor +mode.pvp.name = PvP +mode.pvp.description = Fight against other players locally.\n[gray]Requires at least 2 differently-colored cores in the map to play. +mode.attack.name = Attack +mode.attack.description = Destroy the enemy's base. \n[gray]Requires a red core in the map to play. +mode.custom = Custom Rules + +rules.infiniteresources = Infinite Resources +rules.reactorexplosions = Reactor Explosions +rules.wavetimer = Wave Timer +rules.waves = Waves +rules.attack = Attack Mode +rules.enemyCheat = Infinite AI (Red Team) Resources +rules.blockhealthmultiplier = Block Health Multiplier +rules.blockdamagemultiplier = Block Damage Multiplier +rules.unitbuildspeedmultiplier = Unit Production Speed Multiplier +rules.unithealthmultiplier = Unit Health Multiplier +rules.unitdamagemultiplier = Unit Damage Multiplier +rules.enemycorebuildradius = Enemy Core No-Build Radius:[lightgray] (tiles) +rules.wavespacing = Wave Spacing:[lightgray] (sec) +rules.buildcostmultiplier = Build Cost Multiplier +rules.buildspeedmultiplier = Build Speed Multiplier +rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier +rules.waitForWaveToEnd = Waves Wait for Enemies +rules.dropzoneradius = Drop Zone Radius:[lightgray] (tiles) +rules.unitammo = Units Require Ammo +rules.title.waves = Waves +rules.title.resourcesbuilding = Resources & Building +rules.title.enemy = Enemies +rules.title.unit = Units +rules.title.experimental = Experimental +rules.title.environment = Environment +rules.lighting = Lighting +rules.ambientlight = Ambient Light +rules.solarpowermultiplier = Solar Power Multiplier + +content.item.name = Items +content.liquid.name = Liquids +content.unit.name = Units +content.block.name = Blocks +item.copper.name = Copper +item.lead.name = Lead +item.coal.name = Coal +item.graphite.name = Graphite +item.titanium.name = Titanium +item.thorium.name = Thorium +item.silicon.name = Silicon +item.plastanium.name = Plastanium +item.phase-fabric.name = Phase Fabric +item.surge-alloy.name = Surge Alloy +item.spore-pod.name = Spore Pod +item.sand.name = Sand +item.blast-compound.name = Blast Compound +item.pyratite.name = Pyratite +item.metaglass.name = Metaglass +item.scrap.name = Scrap +liquid.water.name = Water +liquid.slag.name = Slag +liquid.oil.name = Oil +liquid.cryofluid.name = Cryofluid +item.explosiveness = [lightgray]Explosiveness: {0}% +item.flammability = [lightgray]Flammability: {0}% +item.radioactivity = [lightgray]Radioactivity: {0}% +unit.health = [lightgray]Health: {0} +unit.speed = [lightgray]Speed: {0} +unit.weapon = [lightgray]Weapon: {0} +unit.itemcapacity = [lightgray]Item Capacity: {0} +unit.minespeed = [lightgray]Mining Speed: {0}% +unit.minepower = [lightgray]Mining Power: {0} +unit.ability = [lightgray]Ability: {0} +unit.buildspeed = [lightgray]Building Speed: {0}% +liquid.heatcapacity = [lightgray]Heat Capacity: {0} +liquid.viscosity = [lightgray]Viscosity: {0} +liquid.temperature = [lightgray]Temperature: {0} + +unit.dagger.name = Dagger +unit.mace.name = Mace +unit.fortress.name = Fortress +unit.nova.name = Nova +unit.pulsar.name = Pulsar +unit.quasar.name = Quasar +unit.crawler.name = Crawler +unit.atrax.name = Atrax +unit.spiroct.name = Spiroct +unit.arkyid.name = Arkyid +unit.flare.name = Flare +unit.horizon.name = Horizon +unit.zenith.name = Zenith +unit.antumbra.name = Antumbra +unit.eclipse.name = Eclipse +unit.mono.name = Mono +unit.poly.name = Poly +unit.mega.name = Mega +unit.risse.name = Risse +unit.minke.name = Minke +unit.bryde.name = Bryde +unit.alpha.name = Alpha +unit.beta.name = Beta +unit.gamma.name = Gamma + +block.parallax.name = Parallax +block.cliff.name = Cliff +block.sand-boulder.name = Sand Boulder +block.grass.name = Grass +block.slag.name = Slag +block.salt.name = Salt +block.saltrocks.name = Salt Rocks +block.pebbles.name = Pebbles +block.tendrils.name = Tendrils +block.sandrocks.name = Sand Rocks +block.spore-pine.name = Spore Pine +block.sporerocks.name = Spore Rocks +block.rock.name = Rock +block.snowrock.name = Snow Rock +block.snow-pine.name = Snow Pine +block.shale.name = Shale +block.shale-boulder.name = Shale Boulder +block.moss.name = Moss +block.shrubs.name = Shrubs +block.spore-moss.name = Spore Moss +block.shalerocks.name = Shale Rocks +block.scrap-wall.name = Scrap Wall +block.scrap-wall-large.name = Large Scrap Wall +block.scrap-wall-huge.name = Huge Scrap Wall +block.scrap-wall-gigantic.name = Gigantic Scrap Wall +block.thruster.name = Thruster +block.kiln.name = Kiln +block.graphite-press.name = Graphite Press +block.multi-press.name = Multi-Press +block.constructing = {0} [lightgray](Constructing) +block.spawn.name = Enemy Spawn +block.core-shard.name = Core: Shard +block.core-foundation.name = Core: Foundation +block.core-nucleus.name = Core: Nucleus +block.deepwater.name = Deep Water +block.water.name = Water +block.tainted-water.name = Tainted Water +block.darksand-tainted-water.name = Dark Sand Tainted Water +block.tar.name = Tar +block.stone.name = Stone +block.sand.name = Sand +block.darksand.name = Dark Sand +block.ice.name = Ice +block.snow.name = Snow +block.craters.name = Craters +block.sand-water.name = Sand water +block.darksand-water.name = Dark Sand Water +block.char.name = Char +block.holostone.name = Holo stone +block.ice-snow.name = Ice Snow +block.rocks.name = Rocks +block.icerocks.name = Ice rocks +block.snowrocks.name = Snow Rocks +block.dunerocks.name = Dune Rocks +block.pine.name = Pine +block.white-tree-dead.name = White Tree Dead +block.white-tree.name = White Tree +block.spore-cluster.name = Spore Cluster +block.metal-floor.name = Metal Floor 1 +block.metal-floor-2.name = Metal Floor 2 +block.metal-floor-3.name = Metal Floor 3 +block.metal-floor-5.name = Metal Floor 4 +block.metal-floor-damaged.name = Metal Floor Damaged +block.dark-panel-1.name = Dark Panel 1 +block.dark-panel-2.name = Dark Panel 2 +block.dark-panel-3.name = Dark Panel 3 +block.dark-panel-4.name = Dark Panel 4 +block.dark-panel-5.name = Dark Panel 5 +block.dark-panel-6.name = Dark Panel 6 +block.dark-metal.name = Dark Metal +block.ignarock.name = Igna Rock +block.hotrock.name = Hot Rock +block.magmarock.name = Magma Rock +block.cliffs.name = Cliffs +block.copper-wall.name = Copper Wall +block.copper-wall-large.name = Large Copper Wall +block.titanium-wall.name = Titanium Wall +block.titanium-wall-large.name = Large Titanium Wall +block.plastanium-wall.name = Plastanium Wall +block.plastanium-wall-large.name = Large Plastanium Wall +block.phase-wall.name = Phase Wall +block.phase-wall-large.name = Large Phase Wall +block.thorium-wall.name = Thorium Wall +block.thorium-wall-large.name = Large Thorium Wall +block.door.name = Door +block.door-large.name = Large Door +block.duo.name = Duo +block.scorch.name = Scorch +block.scatter.name = Scatter +block.hail.name = Hail +block.lancer.name = Lancer +block.conveyor.name = Conveyor +block.titanium-conveyor.name = Titanium Conveyor +block.plastanium-conveyor.name = Plastanium Conveyor +block.armored-conveyor.name = Armored Conveyor +block.armored-conveyor.description = Moves items at the same speed as titanium conveyors, but possesses more armor. Does not accept inputs from the sides from anything but other conveyor belts. +block.junction.name = Junction +block.router.name = Router +block.distributor.name = Distributor +block.sorter.name = Sorter +block.inverted-sorter.name = Inverted Sorter +block.message.name = Message +block.illuminator.name = Illuminator +block.illuminator.description = A small, compact, configurable light source. Requires power to function. +block.overflow-gate.name = Overflow Gate +block.underflow-gate.name = Underflow Gate +block.silicon-smelter.name = Silicon Smelter +block.phase-weaver.name = Phase Weaver +block.pulverizer.name = Pulverizer +block.cryofluidmixer.name = Cryofluid Mixer +block.melter.name = Melter +block.incinerator.name = Incinerator +block.spore-press.name = Spore Press +block.separator.name = Separator +block.coal-centrifuge.name = Coal Centrifuge +block.power-node.name = Power Node +block.power-node-large.name = Large Power Node +block.surge-tower.name = Surge Tower +block.diode.name = Battery Diode +block.battery.name = Battery +block.battery-large.name = Large Battery +block.combustion-generator.name = Combustion Generator +block.turbine-generator.name = Steam Generator +block.differential-generator.name = Differential Generator +block.impact-reactor.name = Impact Reactor +block.mechanical-drill.name = Mechanical Drill +block.pneumatic-drill.name = Pneumatic Drill +block.laser-drill.name = Laser Drill +block.water-extractor.name = Water Extractor +block.cultivator.name = Cultivator +block.conduit.name = Conduit +block.mechanical-pump.name = Mechanical Pump +block.item-source.name = Item Source +block.item-void.name = Item Void +block.liquid-source.name = Liquid Source +block.liquid-void.name = Liquid Void +block.power-void.name = Power Void +block.power-source.name = Power Infinite +block.unloader.name = Unloader +block.vault.name = Vault +block.wave.name = Wave +block.swarmer.name = Swarmer +block.salvo.name = Salvo +block.ripple.name = Ripple +block.phase-conveyor.name = Phase Conveyor +block.bridge-conveyor.name = Bridge Conveyor +block.plastanium-compressor.name = Plastanium Compressor +block.pyratite-mixer.name = Pyratite Mixer +block.blast-mixer.name = Blast Mixer +block.solar-panel.name = Solar Panel +block.solar-panel-large.name = Large Solar Panel +block.oil-extractor.name = Oil Extractor +block.repair-point.name = Repair Point +block.pulse-conduit.name = Pulse Conduit +block.plated-conduit.name = Plated Conduit +block.phase-conduit.name = Phase Conduit +block.liquid-router.name = Liquid Router +block.liquid-tank.name = Liquid Tank +block.liquid-junction.name = Liquid Junction +block.bridge-conduit.name = Bridge Conduit +block.rotary-pump.name = Rotary Pump +block.thorium-reactor.name = Thorium Reactor +block.mass-driver.name = Mass Driver +block.blast-drill.name = Airblast Drill +block.thermal-pump.name = Thermal Pump +block.thermal-generator.name = Thermal Generator +block.alloy-smelter.name = Alloy Smelter +block.mender.name = Mender +block.mend-projector.name = Mend Projector +block.surge-wall.name = Surge Wall +block.surge-wall-large.name = Large Surge Wall +block.cyclone.name = Cyclone +block.fuse.name = Fuse +block.shock-mine.name = Shock Mine +block.overdrive-projector.name = Overdrive Projector +block.force-projector.name = Force Projector +block.arc.name = Arc +block.rtg-generator.name = RTG Generator +block.spectre.name = Spectre +block.meltdown.name = Meltdown +block.container.name = Container +block.launch-pad.name = Launch Pad +block.launch-pad-large.name = Large Launch Pad +block.segment.name = Segment +block.ground-factory.name = Ground Factory +block.air-factory.name = Air Factory +block.naval-factory.name = Naval Factory +block.additive-reconstructor.name = Additive Reconstructor +block.multiplicative-reconstructor.name = Multiplicative Reconstructor +block.exponential-reconstructor.name = Exponential Reconstructor +block.tetrative-reconstructor.name = Tetrative Reconstructor +block.mass-conveyor.name = Mass Conveyor +block.payload-router.name = Payload Router +block.disassembler.name = Disassembler +block.silicon-crucible.name = Silicon Crucible +block.large-overdrive-projector.name = Large Overdrive Projector +team.blue.name = blue +team.crux.name = red +team.sharded.name = orange +team.orange.name = orange +team.derelict.name = derelict +team.green.name = green +team.purple.name = purple + +tutorial.next = [lightgray] +tutorial.intro = You have entered the[scarlet] Mindustry Tutorial.[]\nUse[accent] [[WASD][] to move.\n[accent]Scroll[] to zoom in and out.\nBegin by[accent] mining copper[]. Move close to it, then tap a copper ore vein near your core to do this.\n\n[accent]{0}/{1} copper +tutorial.intro.mobile = You have entered the[scarlet] Mindustry Tutorial.[]\nSwipe the screen to move.\n[accent]Pinch with 2 fingers[] to zoom in and out.\nBegin by[accent] mining copper[]. Move close to it, then tap a copper ore vein near your core to do this.\n\n[accent]{0}/{1} copper +tutorial.drill = Mining manually is inefficient.\n[accent]Drills[] can mine automatically.\nClick the drill tab in the bottom right.\nSelect the[accent] mechanical drill[]. Place it on a copper vein by clicking.\nYou can also select the drill by tapping [accent][[2][] then [accent][[1][] quickly, regardless of which tab is open.\n[accent]Right-click[] to stop building. +tutorial.drill.mobile = Mining manually is inefficient.\n[accent]Drills[] can mine automatically.\nTap the drill tab in the bottom right.\nSelect the[accent] mechanical drill[].\nPlace it on a copper vein by tapping, then press the[accent] checkmark[] below to confirm your selection.\nPress the[accent] X button[] to cancel placement. +tutorial.blockinfo = Each block has different stats. Each drill can only mine certain ores.\nTo check a block's info and stats,[accent] tap the "?" button while selecting it in the build menu.[]\n\n[accent]Access the Mechanical Drill's stats now.[] +tutorial.conveyor = [accent]Conveyors[] are used to transport items to the core.\nMake a line of conveyors from the drill to the core.\n[accent]Hold down the mouse to place in a line.[]\nHold[accent] CTRL[] while selecting a line to place diagonally.\nUse the scrollwheel to rotate blocks before placing them.\n[accent]Place 2 conveyors with the line tool, then deliver an item into the core. +tutorial.conveyor.mobile = [accent]Conveyors[] are used to transport items to the core.\nMake a line of conveyors from the drill to the core.\n[accent] Place in a line by holding down your finger for a few seconds[] and dragging in a direction.\n\n[accent]Place 2 conveyors with the line tool, then deliver an item into the core. +tutorial.turret = Once an item enters your core, it can be used for building.\nKeep in mind that not all items can be used for building.\nItems that are not used for building, such as[accent] coal[] or[accent] scrap[], cannot be put into the core.\nDefensive structures must be built to repel the[lightgray] enemy[].\nBuild a[accent] duo turret[] near your base. +tutorial.drillturret = Duo turrets require[accent] copper ammo[] to shoot.\nPlace a drill near the turret.\nLead conveyors into the turret to supply it with copper.\n\n[accent]Ammo delivered: 0/1 +tutorial.pause = During battle, you are able to[accent] pause the game.[]\nYou may queue buildings while paused.\n\n[accent]Press space to pause. +tutorial.pause.mobile = During battle, you are able to[accent] pause the game.[]\nYou may queue buildings while paused.\n\n[accent]Press this button in the top left to pause. +tutorial.unpause = Now press space again to unpause. +tutorial.unpause.mobile = Now press it again to unpause. +tutorial.breaking = Blocks frequently need to be destroyed.\n[accent]Hold down right-click[] to destroy all blocks in a selection.[]\n\n[accent]Destroy all the scrap blocks to the left of your core using area selection. +tutorial.breaking.mobile = Blocks frequently need to be destroyed.\n[accent]Select deconstruction mode[], then tap a block to begin breaking it.\nDestroy an area by holding down your finger for a few seconds[] and dragging in a direction.\nPress the checkmark button to confirm breaking.\n\n[accent]Destroy all the scrap blocks to the left of your core using area selection. +tutorial.withdraw = In some situations, taking items directly from blocks is necessary.\nTo do this, [accent]tap a block[] with items in it, then [accent]tap the item[] in the inventory.\nMultiple items can be withdrawn by [accent]tapping and holding[].\n\n[accent]Withdraw some copper from the core.[] +tutorial.deposit = Deposit items into blocks by dragging from your ship to the destination block.\n\n[accent]Deposit your copper back into the core.[] +tutorial.waves = The[lightgray] enemy[] approaches.\n\nDefend the core for 2 waves.[accent] Click[] to shoot.\nBuild more turrets and drills. Mine more copper. +tutorial.waves.mobile = The[lightgray] enemy[] approaches.\n\nDefend the core for 2 waves. Your ship will automatically fire at enemies.\nBuild more turrets and drills. Mine more copper. +tutorial.launch = Once you reach a specific wave, you are able to[accent] launch the core[], leaving your defenses behind and[accent] obtaining all the resources in your core.[]\nThese obtained resources can then be used to research new technology.\n\n[accent]Press the launch button. + +item.copper.description = The most basic structural material. Used extensively in all types of blocks. +item.lead.description = A basic starter material. Used extensively in electronics and liquid transportation blocks. +item.metaglass.description = A super-tough glass compound. Extensively used for liquid distribution and storage. +item.graphite.description = Mineralized carbon, used for ammunition and electrical components. +item.sand.description = A common material that is used extensively in smelting, both in alloying and as a flux. +item.coal.description = Fossilized plant matter, formed long before the seeding event. Used extensively for fuel and resource production. +item.titanium.description = A rare super-light metal used extensively in liquid transportation, drills and aircraft. +item.thorium.description = A dense, radioactive metal used as structural support and nuclear fuel. +item.scrap.description = Leftover remnants of old structures and units. Contains trace amounts of many different metals. +item.silicon.description = An extremely useful semiconductor. Applications in solar panels, complex electronics and homing turret ammunition. +item.plastanium.description = A light, ductile material used in advanced aircraft and fragmentation ammunition. +item.phase-fabric.description = A near-weightless substance used in advanced electronics and self-repairing technology. +item.surge-alloy.description = An advanced alloy with unique electrical properties. +item.spore-pod.description = A pod of synthetic spores, synthesized from atmospheric concentrations for industrial purposes. Used for conversion into oil, explosives and fuel. +item.blast-compound.description = An unstable compound used in bombs and explosives. Synthesized from spore pods and other volatile substances. Use as fuel is not advised. +item.pyratite.description = An extremely flammable substance used in incendiary weapons. +liquid.water.description = The most useful liquid. Commonly used for cooling machines and waste processing. +liquid.slag.description = Various different types of molten metal mixed together. Can be separated into its constituent minerals, or sprayed at enemy units as a weapon. +liquid.oil.description = A liquid used in advanced material production. Can be converted into coal as fuel, or sprayed and set on fire as a weapon. +liquid.cryofluid.description = An inert, non-corrosive liquid created from water and titanium. Has extremely high heat capacity. Extensively used as coolant. + +block.message.description = Stores a message. Used for communication between allies. +block.graphite-press.description = Compresses chunks of coal into pure sheets of graphite. +block.multi-press.description = An upgraded version of the graphite press. Employs water and power to process coal quickly and efficiently. +block.silicon-smelter.description = Reduces sand with pure coal. Produces silicon. +block.kiln.description = Smelts sand and lead into the compound known as metaglass. Requires small amounts of power to run. +block.plastanium-compressor.description = Produces plastanium from oil and titanium. +block.phase-weaver.description = Synthesizes phase fabric from radioactive thorium and sand. Requires massive amounts of power to function. +block.alloy-smelter.description = Combines titanium, lead, silicon and copper to produce surge alloy. +block.cryofluidmixer.description = Mixes water and fine titanium powder into cryofluid. Essential for thorium reactor usage. +block.blast-mixer.description = Crushes and mixes clusters of spores with pyratite to produce blast compound. +block.pyratite-mixer.description = Mixes coal, lead and sand into highly flammable pyratite. +block.melter.description = Melts down scrap into slag for further processing or usage in wave turrets. +block.separator.description = Separates slag into its mineral components. Outputs the cooled result. +block.spore-press.description = Compresses spore pods under extreme pressure to synthesize oil. +block.pulverizer.description = Crushes scrap into fine sand. +block.coal-centrifuge.description = Solidifes oil into chunks of coal. +block.incinerator.description = Vaporizes any excess item or liquid it receives. +block.power-void.description = Voids all power inputted into it. Sandbox only. +block.power-source.description = Infinitely outputs power. Sandbox only. +block.item-source.description = Infinitely outputs items. Sandbox only. +block.item-void.description = Destroys any items. Sandbox only. +block.liquid-source.description = Infinitely outputs liquids. Sandbox only. +block.liquid-void.description = Removes any liquids. Sandbox only. +block.copper-wall.description = A cheap defensive block.\nUseful for protecting the core and turrets in the first few waves. +block.copper-wall-large.description = A cheap defensive block.\nUseful for protecting the core and turrets in the first few waves.\nSpans multiple tiles. +block.titanium-wall.description = A moderately strong defensive block.\nProvides moderate protection from enemies. +block.titanium-wall-large.description = A moderately strong defensive block.\nProvides moderate protection from enemies.\nSpans multiple tiles. +block.plastanium-wall.description = A special type of wall that absorbs electric arcs and blocks automatic power node connections. +block.plastanium-wall-large.description = A special type of wall that absorbs electric arcs and blocks automatic power node connections.\nSpans multiple tiles. +block.thorium-wall.description = A strong defensive block.\nDecent protection from enemies. +block.thorium-wall-large.description = A strong defensive block.\nDecent protection from enemies.\nSpans multiple tiles. +block.phase-wall.description = A wall coated with special phase-based reflective compound. Deflects most bullets upon impact. +block.phase-wall-large.description = A wall coated with special phase-based reflective compound. Deflects most bullets upon impact.\nSpans multiple tiles. +block.surge-wall.description = An extremely durable defensive block.\nBuilds up charge on bullet contact, releasing it randomly. +block.surge-wall-large.description = An extremely durable defensive block.\nBuilds up charge on bullet contact, releasing it randomly.\nSpans multiple tiles. +block.door.description = A small door. Can be opened or closed by tapping. +block.door-large.description = A large door. Can be opened and closed by tapping.\nSpans multiple tiles. +block.mender.description = Periodically repairs blocks in its vicinity. Keeps defenses repaired in-between waves.\nOptionally uses silicon to boost range and efficiency. +block.mend-projector.description = An upgraded version of the Mender. Repairs blocks in its vicinity.\nOptionally uses phase fabric to boost range and efficiency. +block.overdrive-projector.description = Increases the speed of nearby buildings.\nOptionally uses phase fabric to boost range and efficiency. +block.force-projector.description = Creates a hexagonal force field around itself, protecting buildings and units inside from damage.\nOverheats if too much damage is sustained. Optionally uses coolant to prevent overheating. Phase fabric can be used to increase shield size. +block.shock-mine.description = Damages enemies stepping on the mine. Nearly invisible to the enemy. +block.conveyor.description = Basic item transport block. Moves items forward and automatically deposits them into blocks. Rotatable. +block.titanium-conveyor.description = Advanced item transport block. Moves items faster than standard conveyors. +block.plastanium-conveyor.description = Moves items in batches.\nAccepts items at the back, and unloads them in three directions at the front. +block.junction.description = Acts as a bridge for two crossing conveyor belts. Useful in situations with two different conveyors carrying different materials to different locations. +block.bridge-conveyor.description = Advanced item transport block. Allows transporting items over up to 3 tiles of any terrain or building. +block.phase-conveyor.description = Advanced item transport block. Uses power to teleport items to a connected phase conveyor over several tiles. +block.sorter.description = Sorts items. If an item matches the selection, it is allowed to pass. Otherwise, the item is outputted to the left and right. +block.inverted-sorter.description = Processes items like a standard sorter, but outputs selected items to the sides instead. +block.router.description = Accepts items, then outputs them to up to 3 other directions equally. Useful for splitting the materials from one source to multiple targets.\n\n[scarlet]Never use next to production inputs, as they will get clogged by output.[] +block.distributor.description = An advanced router. Splits items to up to 7 other directions equally. +block.overflow-gate.description = Only outputs to the left and right if the front path is blocked. +block.underflow-gate.description = The opposite of an overflow gate. Outputs to the front if the left and right paths are blocked. +block.mass-driver.description = The ultimate item transport block. Collects several items and then shoots them to another mass driver over a long range. Requires power to operate. +block.mechanical-pump.description = A cheap pump with slow output, but no power consumption. +block.rotary-pump.description = An advanced pump. Pumps more liquid, but requires power. +block.thermal-pump.description = The ultimate pump. +block.conduit.description = Basic liquid transport block. Moves liquids forward. Used in conjunction with pumps and other conduits. +block.pulse-conduit.description = An advanced liquid transport block. Transports liquids faster and stores more than standard conduits. +block.plated-conduit.description = Moves liquids at the same rate as pulse conduits, but possesses more armor. Does not accept fluids from the sides by anything other than conduits.\nLeaks less. +block.liquid-router.description = Accepts liquids from one direction and outputs them to up to 3 other directions equally. Can also store a certain amount of liquid. Useful for splitting the liquids from one source to multiple targets. +block.liquid-tank.description = Stores a large amount of liquids. Use for creating buffers in situations with non-constant demand of materials or as a safeguard for cooling vital blocks. +block.liquid-junction.description = Acts as a bridge for two crossing conduits. Useful in situations with two different conduits carrying different liquids to different locations. +block.bridge-conduit.description = Advanced liquid transport block. Allows transporting liquids over up to 3 tiles of any terrain or building. +block.phase-conduit.description = Advanced liquid transport block. Uses power to teleport liquids to a connected phase conduit over several tiles. +block.power-node.description = Transmits power to connected nodes. The node will receive power from or supply power to any adjacent blocks. +block.power-node-large.description = An advanced power node with greater range. +block.surge-tower.description = An extremely long-range power node with fewer available connections. +block.diode.description = Battery power can flow through this block in only one direction, but only if the other side has less power stored. +block.battery.description = Stores power as a buffer in times of surplus energy. Outputs power in times of deficit. +block.battery-large.description = Stores much more power than a regular battery. +block.combustion-generator.description = Generates power by burning flammable materials, such as coal. +block.thermal-generator.description = Generates power when placed in hot locations. +block.turbine-generator.description = An advanced combustion generator. More efficient, but requires additional water for generating steam. +block.differential-generator.description = Generates large amounts of energy. Utilizes the temperature difference between cryofluid and burning pyratite. +block.rtg-generator.description = A simple, reliable generator. Uses the heat of decaying radioactive compounds to produce energy at a slow rate. +block.solar-panel.description = Provides a small amount of power from the sun. +block.solar-panel-large.description = A significantly more efficient version of the standard solar panel. +block.thorium-reactor.description = Generates significant amounts of power from thorium. Requires constant cooling. Will explode violently if insufficient amounts of coolant are supplied. Power output depends on fullness, with base power generated at full capacity. +block.impact-reactor.description = An advanced generator, capable of creating massive amounts of power at peak efficiency. Requires a significant power input to kickstart the process. +block.mechanical-drill.description = A cheap drill. When placed on appropriate tiles, outputs items at a slow pace indefinitely. Only capable of mining basic resources. +block.pneumatic-drill.description = An improved drill, capable of mining titanium. Mines at a faster pace than a mechanical drill. +block.laser-drill.description = Allows drilling even faster through laser technology, but requires power. Capable of mining thorium. +block.blast-drill.description = The ultimate drill. Requires large amounts of power. +block.water-extractor.description = Extracts groundwater. Used in locations with no surface water available. +block.cultivator.description = Cultivates tiny concentrations of spores in the atmosphere into industry-ready pods. +block.oil-extractor.description = Uses large amounts of power, sand and water to drill for oil. +block.core-shard.description = The first iteration of the core capsule. Once destroyed, all contact to the region is lost. Do not let this happen. +block.core-foundation.description = The second version of the core. Better armored. Stores more resources. +block.core-nucleus.description = The third and final iteration of the core capsule. Extremely well armored. Stores massive amounts of resources. +block.vault.description = Stores a large amount of items of each type. An unloader block can be used to retrieve items from the vault. +block.container.description = Stores a small amount of items of each type. An unloader block can be used to retrieve items from the container. +block.unloader.description = Unloads items from any nearby non-transportation block. The type of item to be unloaded can be changed by tapping. +block.launch-pad.description = Launches batches of items without any need for a core launch. +block.launch-pad-large.description = An improved version of the launch pad. Stores more items. Launches more frequently. +block.duo.description = A small, cheap turret. Useful against ground units. +block.scatter.description = An essential anti-air turret. Sprays clumps of lead or scrap flak at enemy units. +block.scorch.description = Burns any ground enemies close to it. Highly effective at close range. +block.hail.description = A small, long-range artillery turret. +block.wave.description = A medium-sized turret. Shoots streams of liquid at enemies. Automatically extinguishes fires when supplied with water. +block.lancer.description = A medium-sized anti-ground laser turret. Charges and fires powerful beams of energy. +block.arc.description = A small close-range electric turret. Fires arcs of electricity at enemies. +block.swarmer.description = A medium-sized missile turret. Attacks both air and ground enemies. Fires homing missiles. +block.salvo.description = A larger, more advanced version of the Duo turret. Fires quick salvos of bullets at the enemy. +block.fuse.description = A large, close-range energy turret. Fires three piercing beams at nearby enemies. +block.ripple.description = An extremely powerful artillery turret. Shoots clusters of shells at enemies over long distances. +block.cyclone.description = A large anti-air and anti-ground turret. Fires explosive clumps of flak at nearby units. +block.spectre.description = A massive dual-barreled cannon. Shoots large armor-piercing bullets at air and ground targets. +block.meltdown.description = A massive laser cannon. Charges and fires a persistent laser beam at nearby enemies. Requires coolant to operate. +block.repair-point.description = Continuously heals the closest damaged unit in its vicinity. +block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. diff --git a/core/assets/bundles/bundle_de.properties b/core/assets/bundles/bundle_de.properties index ec25aa579a..c99718a795 100644 --- a/core/assets/bundles/bundle_de.properties +++ b/core/assets/bundles/bundle_de.properties @@ -2,7 +2,7 @@ credits.text = Entwickelt von [royal]Anuken[] - [sky]anukendev@gmail.com[]\n\n[g credits = Danksagungen contributors = Übersetzer und Mitwirkende discord = Tritt dem Mindustry-Discord bei! -link.discord.description = Der offizielle Mindustry Discord-Chatroom +link.discord.description = Der offizielle Mindustry Discord Server link.reddit.description = Der Mindustry Subreddit link.github.description = Quellcode des Spiels link.changelog.description = Liste der Änderungen @@ -40,7 +40,7 @@ schematic = Entwurf schematic.add = Entwurf speichern... schematics = Entwürfe schematic.replace = Ein anderer Entwurf hat bereits diesen Namen. Diesen ersetzen? -schematic.exists = A schematic by that name already exists. +schematic.exists = Es gibt schon einen Entwurf mit diesem Namen. schematic.import = Entwurf importieren... schematic.exportfile = Datei exportieren schematic.importfile = Datei importieren @@ -105,7 +105,8 @@ mods.none = [lightgray]Keine Mods gefunden! mods.guide = Modding-Anleitung mods.report = Problem melden mods.openfolder = Mod-Verzeichnis öffnen -mods.reload = Reload +mods.reload = Neu laden +mods.reloadexit = The game will now exit, to reload mods. mod.display = [gray]Mod:[orange] {0} mod.enabled = [lightgray]Aktiviert mod.disabled = [scarlet]Deaktiviert @@ -124,13 +125,14 @@ mod.reloadrequired = [scarlet]Neuladen benötigt mod.import = Mod importieren mod.import.file = Import File mod.import.github = GitHub-Mod importieren +mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source! mod.item.remove = This item is part of the[accent] '{0}'[] mod. To remove it, uninstall that mod. mod.remove.confirm = Dieser Mod wird gelöscht. mod.author = [lightgray]Autor:[] {0} mod.missing = Dieser Spielstand enthält Mods, welche nicht mehr vorhanden oder aktualisiert wurden. Spielstandfehler könnten passieren. Bist du dir sicher, das du ihn laden möchtest?\n[lightgray]Mods:\n{0} mod.preview.missing = Bevor du diesen Mod hochladen kannst, musst du eine Bildvorschau einbinden.\nLade ein Bild namens[accent] preview.png[] in den Modordner und versuche es nochmal. mod.folder.missing = Nur Mods in Ordnerform können in den Workshop hochgeladen werden.\nUm einen Mod in einen Ordner zu konvertieren, extrahiere das Archiv und lösche das alte Archiv danach. Starte dann das Spiel neu oder lade die Mods neu. -mod.scripts.disable = Your device does not support mods with scripts. You must disable these mods to play the game. +mod.scripts.disable = Ihr Gerät unterstüzt keine Mods mit Scripts. Du musst diese Mods deaktivieren, um spielen zu können. about.button = Info name = Name: @@ -224,7 +226,6 @@ save.new = Neuer Spielstand save.overwrite = Möchtest du diesen Spielstand wirklich überschreiben? overwrite = Überschreiben save.none = Keine Spielstände gefunden! -saveload = [accent]Speichern... savefail = Fehler beim Speichern des Spiels! save.delete.confirm = Möchtest du diesen Spielstand wirklich löschen? save.delete = Löschen @@ -272,6 +273,7 @@ quit.confirm.tutorial = Weißt du, was du tust?\nDu kannst das Tutorial unter[ac loading = [accent]Wird geladen... reloading = [accent]Lade Mods neu... saving = [accent]Speichere... +respawn = [accent][[{0}][] to respawn in core cancelbuilding = [accent][[{0}][] um den Plan zu leeren selectschematic = [accent][[{0}][] zum Auswählen+Kopieren pausebuilding = [accent][[{0}][] um das Bauen zu pausieren @@ -328,8 +330,9 @@ waves.never = waves.every = alle waves.waves = Welle(n) waves.perspawn = per Spawn +waves.shields = shields/wave waves.to = bis -waves.boss = Boss +waves.guardian = Guardian waves.preview = Vorschau waves.edit = Bearbeiten... waves.copy = Aus der Zwischenablage kopieren @@ -460,6 +463,7 @@ requirement.unlock = Schalte {0} frei resume = Zu Zone zurückkehren:\n[lightgray]{0} bestwave = [lightgray]Beste Welle: {0} launch = Starten +launch.text = Launch launch.title = Start erfolgreich launch.next = [lightgray]Nächste Möglichkeit bei Welle {0} launch.unable2 = [scarlet]START nicht möglich.[] @@ -467,13 +471,13 @@ launch.confirm = Dies wird alle Ressourcen in deinen Kern übertragen.\nDu kanns launch.skip.confirm = Wenn du die Wartezeit überspringst, kannst du den Kern bis zu einer späteren Welle nicht mehr starten. uncover = Freischalten configure = Startitems festlegen +loadout = Loadout +resources = Resources bannedblocks = Gesperrte Blöcke addall = Alle hinzufügen -configure.locked = [lightgray]Festlegen von Startitems freischalten: {0}. configure.invalid = Anzahl muss eine Zahl zwischen 0 und {0} sein. zone.unlocked = [lightgray]{0} freigeschaltet. zone.requirement.complete = Welle {0} erreicht:\n{1} Anforderungen der Zone erfüllt. -zone.config.unlocked = Konfiguration:[lightgray]\n{0} zone.resources = Ressourcen entdeckt: zone.objective = [lightgray]Ziel: [accent]{0} zone.objective.survival = Überlebe @@ -492,35 +496,29 @@ error.io = Netzwerk-I/O-Fehler. error.any = Unbekannter Netzwerkfehler. error.bloom = Bloom konnte nicht initialisiert werden.\nEs kann sein, dass dein Gerät es nicht unterstützt. -zone.groundZero.name = Ground Zero -zone.desertWastes.name = Schrottwüste -zone.craters.name = Krater -zone.frozenForest.name = Gefrorener Wald -zone.ruinousShores.name = Verfallene Ufer -zone.stainedMountains.name = Gefleckte Berge -zone.desolateRift.name = Trostloser Riss -zone.nuclearComplex.name = Kernkraftwerk -zone.overgrowth.name = Überwucherung -zone.tarFields.name = Teerfelder -zone.saltFlats.name = Salzebenen -zone.impact0078.name = Einschlagspunkt 0078 -zone.crags.name = Die Klippen -zone.fungalPass.name = Sporenpass +sector.groundZero.name = Ground Zero +sector.craters.name = The Craters +sector.frozenForest.name = Frozen Forest +sector.ruinousShores.name = Ruinous Shores +sector.stainedMountains.name = Stained Mountains +sector.desolateRift.name = Desolate Rift +sector.nuclearComplex.name = Nuclear Production Complex +sector.overgrowth.name = Overgrowth +sector.tarFields.name = Tar Fields +sector.saltFlats.name = Salt Flats +sector.fungalPass.name = Fungal Pass -zone.groundZero.description = Der optimale Ort, um neu anzufangen. Niedrige Bedrohung durch Gegner. Wenige Ressourcen.\nSammle so viel Kupfer und Blei wie möglich.\nMach weiter! -zone.frozenForest.description = Sogar hier, näher an den Bergen, haben sich die Sporen verbreitet. Die kalten Temperaturen können sie nicht für immer im Schach halten.\n\nStarte das Wagnis in Strom. Baue Verbrennungsgeneratoren. Lerne Reparateure zu benutzen. -zone.desertWastes.description = Diese Abfälle sind riesig, unberechenbar, und durchzogen von verfallenen Sektorstrukturen.\nKohle ist in dieser Region vorhanden. Verbrenne es für Strom, oder synthetisiere Graphit.\n\n[lightgray]Dieser Landeort kann nicht garantiert werden. -zone.saltFlats.description = Am Rande der Wüste liegen die Salzebenen. In dieser Gegend sind Ressourcen nur spärlich vorhanden.\n\nDer Feind hat hier einen Ressourcenspeicherkomplex errichtet. Zerstöre ihren Kern. Lass nichts stehen. -zone.craters.description = Wasser hat sich in diesem Krater angesammelt, ein Relikt von den alten Kriegen. Gewinne dieses Gebiet zurück. Sammle Sand. Schmelze Metaglass. Pumpe Wasser, um Geschütztürme und Bohrer zu kühlen. -zone.ruinousShores.description = Vorbei an der Wüste liegt die Küste. An diesem Ort befand sich einst eine Küstenverteidigungsanlage, davon ist aber nicht mehr viel übrig. Lediglich einfache Verteidigungsstrukturen sind unversehrt, alles andere ist nur noch Schrott.\nSetze die Ausbreitung nach außen fort. Wiederentdecke die Technologie. -zone.stainedMountains.description = Weiter im Landesinneren liegen die Berge, sie sind noch nicht von Sporen befleckt.\nExtrahiere das reichlich vorhandene Titan in diesem Bereich und erlerne es zu benutzen.\n\nDie feindliche Präsenz ist größer hier. Gib ihnen nicht die Zeit, ihre stärksten Einheiten zu schicken. -zone.overgrowth.description = Dieser Bereich ist verwachsen, näher an der Quelle der Sporen.\nDer Feind hat hier einen Außenposten errichtet. Baue Dagger-Einheiten und zerstöre ihn. Gewinne zurück, was verloren gegangen ist. -zone.tarFields.description = Der Rand einer Ölförderzone, zwischen Bergen und Wüste. Eine der wenigen Plätze mit nutzbaren Teer-Reserven.\nObwohl es aufgegeben wurde, befinden sich in diesem Gebiet gefährliche feindliche Kräfte. Unterschätze sie nicht.\n\n[lightgray]Wenn möglich, erforsche Technologien zur Ölverarbeitung. -zone.desolateRift.description = Eine extrem gefährliche Zone. Reichlich Ressourcen, aber wenig Platz. Hohe Gefahr von Zerstörung. Verlasse es so schnell wie möglich. Lass dich nicht von den großen Abständen zwischen feindlichen Angriffen täuschen. -zone.nuclearComplex.description = Eine ehemalige Anlage zur Herstellung und Verarbeitung von Thorium, die in Trümmern liegt.\n[lightgray]Erforsche das Thorium und seine vielen Verwendungsmöglichkeiten.\n\nDer Feind ist hier in großer Zahl präsent und sucht ständig nach Angreifern. -zone.fungalPass.description = Ein Übergangsgebiet zwischen hohen Bergen und niedrigeren, sporenverseuchten Landschaften. Ein kleiner feindlicher Außenposten wurde hier entdeckt.\nZerstöre ihn.\nNutze Dagger und Crawler-Einheiten. Zerstöre die zwei Kerne. -zone.impact0078.description = -zone.crags.description = +sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. +sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. +sector.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. +sector.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. +sector.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. +sector.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units. +sector.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build Titan units. Destroy it. Reclaim that which was lost. +sector.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. +sector.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. +sector.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. +sector.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. settings.language = Sprache settings.data = Spieldaten @@ -537,12 +535,13 @@ settings.clearall.confirm = [scarlet]WARNUNG![]\nDas wird jegliche Spieldaten zu paused = [accent]< Pausiert > clear = Leeren banned = [scarlet]Verbannt +unplaceable.sectorcaptured = [scarlet]Requires captured sector yes = Ja no = Nein info.title = Info error.title = [crimson]Ein Fehler ist aufgetreten error.crashtitle = Ein Fehler ist aufgetreten! -unit.nobuild = [scarlet]Unit can't build +unit.nobuild = [scarlet]Einheit kann nicht bauen! blocks.input = Eingang blocks.output = Ausgang blocks.booster = Verstärkung @@ -582,6 +581,8 @@ blocks.reload = Schüsse/Sekunde blocks.ammo = Munition bar.drilltierreq = Besserer Bohrer Benötigt +bar.noresources = Missing Resources +bar.corereq = Core Base Required bar.drillspeed = Bohrgeschwindigkeit: {0}/s bar.pumpspeed = Pump Speed: {0}/s bar.efficiency = Effizienz: {0}% @@ -591,11 +592,12 @@ bar.poweramount = Strom: {0} bar.poweroutput = Stromgenerierung: {0} bar.items = Items: {0} bar.capacity = Kapazität: {0} +bar.unitcap = {0} {1}/{2} +bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled] bar.liquid = Flüssigkeit bar.heat = Hitze bar.power = Strom bar.progress = Baufortschritt -bar.spawned = Einheiten: {0}/{1} bar.input = Input bar.output = Output @@ -639,6 +641,7 @@ setting.linear.name = Lineare Filterung setting.hints.name = Tipps setting.flow.name = Display Resource Flow Rate[scarlet] (experimental) setting.buildautopause.name = Bauen automatisch pausieren +setting.mapcenter.name = Auto Center Map To Player setting.animatedwater.name = Animiertes Wasser setting.animatedshields.name = Animierte Schilde setting.antialias.name = Antialias[lightgray] (Neustart erforderlich)[] @@ -663,7 +666,6 @@ setting.effects.name = Effekte anzeigen setting.destroyedblocks.name = Zerstörte Blöcke anzeigen setting.blockstatus.name = Display Block Status setting.conveyorpathfinding.name = Automatische Wegfindung beim Bau von Förderbändern -setting.coreselect.name = Allow Schematic Cores setting.sensitivity.name = Controller-Empfindlichkeit setting.saveinterval.name = Autosave-Häufigkeit setting.seconds = {0} Sekunden @@ -672,12 +674,15 @@ setting.milliseconds = {0} Millisekunden setting.fullscreen.name = Vollbild setting.borderlesswindow.name = Randloses Fenster [lightgray](Neustart vielleicht erforderlich) setting.fps.name = FPS zeigen +setting.smoothcamera.name = Smooth Camera setting.blockselectkeys.name = Block Shortcuts anzeigen setting.vsync.name = VSync setting.pixelate.name = Verpixeln [lightgray](Könnte die Leistung beeinträchtigen) setting.minimap.name = Zeige die Minimap +setting.coreitems.name = Display Core Items (WIP) setting.position.name = Spieler-Position anzeigen setting.musicvol.name = Musiklautstärke +setting.atmosphere.name = Show Planet Atmosphere setting.ambientvol.name = Ambient-Lautstärke setting.mutemusic.name = Musik stummschalten setting.sfxvol.name = Audioeffekt-Lautstärke @@ -700,10 +705,13 @@ keybinds.mobile = [scarlet]Die meisten Tastenzuweisungen hier funktionieren auf category.general.name = Allgemein category.view.name = Ansicht category.multiplayer.name = Mehrspieler +category.blocks.name = Block Select command.attack = Angreifen command.rally = Patrouillieren command.retreat = Rückzug placement.blockselectkeys = \n[lightgray]Taste: [{0}, +keybind.respawn.name = Respawn +keybind.control.name = Control Unit keybind.clear_building.name = Bauplan löschen keybind.press = Drücke eine Taste... keybind.press.axis = Drücke eine Taste oder bewege eine Achse... @@ -713,7 +721,7 @@ keybind.toggle_block_status.name = Toggle Block Statuses keybind.move_x.name = X-Achse keybind.move_y.name = Y-Achse keybind.mouse_move.name = Der Maus folgen -keybind.dash.name = Sprinten +keybind.boost.name = Boost keybind.schematic_select.name = Bereich auswählen keybind.schematic_menu.name = Entwurfsmenü keybind.schematic_flip_x.name = Entwurf umdrehen X @@ -775,30 +783,25 @@ rules.wavetimer = Wellen-Timer rules.waves = Wellen rules.attack = Angriff-Modus rules.enemyCheat = Unbegrenzte Ressourcen für die KI (Rotes Team) -rules.unitdrops = Einheiten-Abwürfe +rules.blockhealthmultiplier = Block Health Multiplier +rules.blockdamagemultiplier = Block Damage Multiplier rules.unitbuildspeedmultiplier = Baugeschwindigkeit-Einheit Multiplikator rules.unithealthmultiplier = Lebenspunkte-Einheit Multiplikator -rules.blockhealthmultiplier = Block Health Multiplier -rules.playerhealthmultiplier = Spieler-Lebenspunkte Multiplikator -rules.playerdamagemultiplier = Spieler-Schaden Multiplikator rules.unitdamagemultiplier = Schaden-Einheit Multiplikator rules.enemycorebuildradius = Bauverbot Radius druch feindlichen Kern:[lightgray] (Kacheln) -rules.respawntime = Respawn-Zeit:[lightgray] (Sek) rules.wavespacing = Wellen-Abstand:[lightgray] (Sek) rules.buildcostmultiplier = Bau-Kosten Multiplikator rules.buildspeedmultiplier = Bau-Schnelligkeit Multiplikator rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier rules.waitForWaveToEnd = Warten bis Welle endet rules.dropzoneradius = Drop-Zonen-Radius:[lightgray] (Kacheln) -rules.respawns = Max. Wiederbelebungen pro Welle -rules.limitedRespawns = Wiederbelebungslimit +rules.unitammo = Units Require Ammo rules.title.waves = Wellen -rules.title.respawns = Wiederbelebungen rules.title.resourcesbuilding = Ressourcen & Gebäude -rules.title.player = Spieler rules.title.enemy = Gegner rules.title.unit = Einheiten rules.title.experimental = Experimentell +rules.title.environment = Environment rules.lighting = Lighting rules.ambientlight = Ambient Light rules.solarpowermultiplier = Solar Power Multiplier @@ -827,7 +830,6 @@ liquid.water.name = Wasser liquid.slag.name = Schlacke liquid.oil.name = Öl liquid.cryofluid.name = Kryoflüssigkeit -item.corestorable = [lightgray]Im Kern speicherbar: {0} item.explosiveness = [lightgray]Explosivität: {0} item.flammability = [lightgray]Entflammbarkeit: {0} item.radioactivity = [lightgray]Radioaktivität: {0} @@ -843,6 +845,32 @@ liquid.heatcapacity = [lightgray]Wärmekapazität: {0} liquid.viscosity = [lightgray]Viskosität: {0} liquid.temperature = [lightgray]Temperatur: {0} +unit.dagger.name = Dagger +unit.mace.name = Mace +unit.fortress.name = Fortress +unit.nova.name = Nova +unit.pulsar.name = Pulsar +unit.quasar.name = Quasar +unit.crawler.name = Crawler +unit.atrax.name = Atrax +unit.spiroct.name = Spiroct +unit.arkyid.name = Arkyid +unit.flare.name = Flare +unit.horizon.name = Horizon +unit.zenith.name = Zenith +unit.antumbra.name = Antumbra +unit.eclipse.name = Eclipse +unit.mono.name = Mono +unit.poly.name = Poly +unit.mega.name = Mega +unit.risse.name = Risse +unit.minke.name = Minke +unit.bryde.name = Bryde +unit.alpha.name = Alpha +unit.beta.name = Beta +unit.gamma.name = Gamma + +block.parallax.name = Parallax block.cliff.name = Cliff block.sand-boulder.name = Sandbrocken block.grass.name = Gras @@ -935,14 +963,14 @@ block.hail.name = Hail block.lancer.name = Lancer block.conveyor.name = Förderband block.titanium-conveyor.name = Titan-Förderband -block.plastanium-conveyor.name = Plastanium Conveyor +block.plastanium-conveyor.name = Plastanium Förderband block.armored-conveyor.name = Gepanzertes Förderband block.armored-conveyor.description = Bewegt Gegenstände genauso schnell wie das Titan-Förderband, ist aber besser gepanzert. Akzeptiert nur Verbindungen mit anderen Förderbändern. block.junction.name = Kreuzung block.router.name = Verteiler block.distributor.name = Großer Verteiler block.sorter.name = Sortierer -block.inverted-sorter.name = Invertierter Sorter +block.inverted-sorter.name = Invertierter Sortierer block.message.name = Nachricht block.illuminator.name = Illuminierer block.illuminator.description = Eine kleine, kompakte, konfigurierbare Lichtquelle. Benötigt Strom. @@ -994,20 +1022,9 @@ block.blast-mixer.name = Sprengmixer block.solar-panel.name = Solarpanel block.solar-panel-large.name = Großes Solarpanel block.oil-extractor.name = Öl-Extraktor -block.command-center.name = Kommandozentrale -block.draug-factory.name = Draug-Miner-Dronenfabrik -block.spirit-factory.name = Spirit-Drohnenfabrik -block.phantom-factory.name = Phantom-Drohnenfabrik -block.wraith-factory.name = Wraith-Fighter-Fabrik -block.ghoul-factory.name = Ghoul-Bomber-Fabrik -block.dagger-factory.name = Dagger-Mech-Fabrik -block.crawler-factory.name = Crawler-Mech-Fabrik -block.titan-factory.name = Titan-Mech-Fabrik -block.fortress-factory.name = Fortress-Mech-Fabrik -block.revenant-factory.name = Revenant-Fighter-Fabrik block.repair-point.name = Reparaturpunkt block.pulse-conduit.name = Impulskanal -block.plated-conduit.name = Plated Conduit +block.plated-conduit.name = Gepanzerter Kanal block.phase-conduit.name = Phasenkanal block.liquid-router.name = Flüssigkeits-Verteiler block.liquid-tank.name = Flüssigkeitstank @@ -1036,6 +1053,19 @@ block.meltdown.name = Meltdown block.container.name = Container block.launch-pad.name = Launchpad block.launch-pad-large.name = Großes Launchpad +block.segment.name = Segment +block.ground-factory.name = Ground Factory +block.air-factory.name = Air Factory +block.naval-factory.name = Naval Factory +block.additive-reconstructor.name = Additive Reconstructor +block.multiplicative-reconstructor.name = Multiplicative Reconstructor +block.exponential-reconstructor.name = Exponential Reconstructor +block.tetrative-reconstructor.name = Tetrative Reconstructor +block.mass-conveyor.name = Mass Conveyor +block.payload-router.name = Payload Router +block.disassembler.name = Disassembler +block.silicon-crucible.name = Silicon Crucible +block.large-overdrive-projector.name = Large Overdrive Projector team.blue.name = Blau team.crux.name = Rot team.sharded.name = Orange @@ -1043,21 +1073,7 @@ team.orange.name = Orange team.derelict.name = Derelict team.green.name = Grün team.purple.name = Lila -unit.spirit.name = Spirit-Drohne -unit.draug.name = Draug-Miner-Drone -unit.phantom.name = Phantom-Drohne -unit.dagger.name = Dagger -unit.crawler.name = Crawler -unit.titan.name = Titan -unit.ghoul.name = Ghoul-Bomber -unit.wraith.name = Wraith-Fighter -unit.fortress.name = Fortress -unit.revenant.name = Revenant -unit.eruptor.name = Eruptor -unit.chaos-array.name = Chaos Array -unit.eradicator.name = Eradicator -unit.lich.name = Lich -unit.reaper.name = Reaper + tutorial.next = [lightgray] tutorial.intro = Du befindest dich im[scarlet] Mindustry-Tutorial.[]\nBeginne, indem du[accent] Kupfer abbaust[]. Tippe dazu auf ein Kupfervorkommen in der Nähe deiner Basis.\n\n[accent]{0}/{1} Kupfer tutorial.intro.mobile = Du befindest dich im [scarlet]Mindustry Tutorial.[]\nWische über den Bildschirm, um dich zu bewegen.\n[accent]Benutze zwei Finger[] um heran- und hinauszuzoomen.\nBeginne, indem du [accent]Kupfer abbaust[]. Bewege dich zu einem Kupfervorkommen und tippe anschließend darauf.\n\n[accent]{0}/{1} Kupfer @@ -1076,8 +1092,8 @@ tutorial.breaking = Oft kommt es vor, dass Blöcke zerstört werden müssen.\n[a tutorial.breaking.mobile = Oft kommt es vor, dass Blöcke zerstört werden müssen.\n[accent]Wähle den Abbau-Modus[], dann wähle einen Block um ihn zu zerstören.\nZerstöre eine Fläche, indem du deinen Finger einige Sekunden gedrückt hältst[] und in eine beliebige Richtung ziehst.\nTippe auf das Häkchen um den Rückbau zu bestätigen.\n\n[accent]Zerstöre all Schrott-Blöcke links des Kerns mithilfe der Flächenauswahl. tutorial.withdraw = Einige Situationen erfordern, dass Materialien direkt aus den Blöcken aufgenommen werden.\nUm dies zu tun, [accent]tippe auf einen Block[] mit Materialien dann [accent]tippe auf das Material[] in diesem Block.\nUm mehrere Materialien zu entnehmen [accent]tippe darauf und halte die Maustaste gedrückt[].\n\n[accent]Entnimm etwas Kupfer vom Kern.[] tutorial.deposit = Materialien können in Blöcke abgelegt werden, indem du die linke Maustaste drückst und von deinem Schiff dorthin ziehst.\n\n[accent]Lege das Kupfer zurück in den Kern.[] -tutorial.waves = Der [lightgray]Gegner[] greift an.\n\nVerteidige deinen Kern 2 Wellen lang. Baue mehr Türme. -tutorial.waves.mobile = Der[lightgray] Gegner[] greift an.\n\nVerteidige deinen Kern 2 Wellen lang. Dein Schiff feuert automatisch auf Gegner.\nBaue mehr Geschütztürme und Bohrer. Baue mehr Kupfer ab. +tutorial.waves = Der [lightgray]Gegner[] greift an.\n\nVerteidige deinen Kern 2 Wellen lang. Baue mehr Geschütze. +tutorial.waves.mobile = Der[lightgray] Gegner[] greift an.\n\nVerteidige deinen Kern 2 Wellen lang. Dein Schiff feuert automatisch auf Gegner.\nBaue mehr Geschütze und Bohrer. Baue mehr Kupfer ab. tutorial.launch = Sobald du eine bestimmte Welle erreicht hast, kannst du die [accent]Mission abschließen[]. Dadurch lässt du deine Basis zurück[accent] und überträgst alle Ressourcen in deinen Kern.[]\nDiese Ressourcen können zur Erforschung neuer Technologien eingesetzt werden.\n\n[accent]Drücke nun den Abschluss-Button. item.copper.description = Ein nützliches Material. Wird in allen Arten von Blöcken verwendet. @@ -1100,17 +1116,7 @@ liquid.water.description = Wird üblicherweise zum Kühlen von Maschinen und zur liquid.slag.description = Ein Gemisch aus verschiedenen Arten von Metall, welche miteinander vermischt wurden. Kann in seine Bestandteile getrennt oder als Waffe auf feindliche Einheiten gesprüht werden. liquid.oil.description = Kann verbrannt, zum Explodieren gebracht, oder zur Kühlung verwendet werden. liquid.cryofluid.description = Die Flüssigkeit, die Dinge am effizientesten herunterkühlen kann. -unit.draug.description = Eine primitive Bergbaudrohne. Günstig herzustellen. Entbehrlich. Baut automatisch Kupfer und Blei in der Nähe ab. Bringt abgebaute Ressourcen zum nächstgelegenen Kern. -unit.spirit.description = Die anfängliche Drohne. Sie baut gewöhnlich in der Basis Erz ab, sammelt Materialien und repariert Blöcke. -unit.phantom.description = Eine fortgeschrittene Drohne. Baut automatisch Erz ab, sammelt Materialien und repariert Blöcke. Deutlich effizienter als die Standard-Drohne. -unit.dagger.description = Eine Standard-Bodeneinheit. Nützlich in Schwärmen. -unit.crawler.description = Eine Bodeneinheit, die aus einem abgespeckten Rahmen mit hochexplosiven Sprengstoffen besteht. Nicht besonders haltbar. Explodiert bei Kontakt mit Gegnern. -unit.titan.description = Eine fortgeschrittene gepanzerte Bodeneinheit. Greift sowohl Boden- als auch Luftziele an. -unit.fortress.description = Eine schwere Artillerie-Bodeneinheit. -unit.eruptor.description = Ein schwerer Mech, der Strukturen abbaut. Feuert einen Schlackenstrom auf feindliche Befestigungen ab, welcher flüchtige Stoffe in Brand steckt. -unit.wraith.description = Eine schneller Abfangjäger. -unit.ghoul.description = Ein schwerer Flächenbomber. -unit.revenant.description = Eine schwere, schwebende Raketengruppe. + block.message.description = Speichert eine Nachricht. Wird genutzt, um mit Verbündeten zu kommunizieren. block.graphite-press.description = Komprimiert Kohlestücke zu reinen Graphitplatten. block.multi-press.description = Eine aktualisierte Version der Graphitpresse. Setzt Wasser und Strom ein, um Kohle schnell und effizient zu verarbeiten. @@ -1155,32 +1161,32 @@ block.force-projector.description = Erzeugt ein sechseckiges Kraftfeld um sich h block.shock-mine.description = Beschädigt Gegner, die auf die Mine laufen. Für Gegener schwer zu sehen. block.conveyor.description = Basis-Transportblock. Bewegt Materialien vorwärts und lädt sie automatisch in Geschütztürme oder Verarbeitungsanlagen. Rotierbar. block.titanium-conveyor.description = Verbesserter Transportblock. Bewegt Materialien schneller als Standard-Förderbänder. -block.plastanium-conveyor.description = Moves items in batches.\nAccepts items at the back, and unloads them in three directions at the front. +block.plastanium-conveyor.description = Bewegt Materialen in Gruppen.\nNimmt hinten Materialien an und gibt sie vorne in drei Richtungen aus. block.junction.description = Fungiert als Brücke zwischen zwei kreuzenden Förderbändern. Nützlich, wenn zwei verschiedene Förderbänder sich kreuzen, aber unterschiedliche Materialien verwenden. block.bridge-conveyor.description = Verbesserter Transportblock. Erlaubt es, Materialien über bis zu 3 Kacheln beliebigen Terrains oder Inhalts zu transportieren. block.phase-conveyor.description = Verbesserter Transportblock. Verwendet Strom, um Materialien zu einem verbundenen Phasen-Förderband über mehrere Kacheln zu teleportieren. block.sorter.description = Sortiert Materialien. Wenn ein Gegenstand der Auswahl entspricht, darf er vorbei. Andernfalls wird er links oder rechts ausgegeben. -block.inverted-sorter.description = Processes items like a standard sorter, but outputs selected items to the sides instead. +block.inverted-sorter.description = Funktioniert wie ein normaler Sortierer, aber gibt das ausgewählte Material seitwärts aus. block.router.description = Akzeptiert Materialien aus einer Richtung und leitet sie gleichmäßig in bis zu drei andere Richtungen weiter. Nützlich, wenn die Materialien aus einer Richtung an mehrere Empfänger verteilt werden sollen. block.distributor.description = Ein weiterentwickelter Verteiler, der Materialien in bis zu sieben Richtungen gleichmäßig verteilt. block.overflow-gate.description = Ein Verteiler, der nur Materialien nach links oder rechts ausgibt, falls der Weg gerade aus blockiert ist. -block.underflow-gate.description = The opposite of an overflow gate. Outputs to the front if the left and right paths are blocked. +block.underflow-gate.description = Das Gegenteil eines Überlauftors. Gibt Materialen nur nach vorne aus, wenn der Weg rechts und links blockiert ist. block.mass-driver.description = Ultimativer Transportblock. Sammelt mehrere Materialien und schießt sie zu einem verbundenen Massenbeschleuniger über eine große Reichweite. block.mechanical-pump.description = Eine günstige, langsame Pumpe, die keinen Strom benötigt. block.rotary-pump.description = Eine fortgeschrittene Pumpe, die mithilfe von Strom doppelt so schnell pumpt. block.thermal-pump.description = Die ultimative Pumpe, dreimal so schnell wie eine mechanische Pumpe und die einzige Pumpe, die Lava fördern kann. block.conduit.description = Standard Flüssigkeits-Transportblock. Funktioniert wie ein Förderband, nur für Flüssigkeiten. Wird am Besten mit Extraktoren, Pumpen oder anderen Kanälen benutzt. block.pulse-conduit.description = Verbesserter Flüssigkeits-Transportblock. Transportiert Flüssigkeiten schneller und speichert mehr als Standard Kanäle. -block.plated-conduit.description = Moves liquids at the same rate as pulse conduits, but possesses more armor. Does not accept fluids from the sides by anything other than conduits.\nLeaks less. +block.plated-conduit.description = Bewegt Flüssigkeiten genauso schnell wie ein Impulskanal, ist aber besser gepanzert. Akzeptiert nur Verbindungen mit anderen Kanälen.\nVerliert weniger Flüssigkeit. block.liquid-router.description = Akzeptiert Flüssigkeiten aus einer Richtung und verteilt sie an bis zu drei andere Richtungen weiter. Nützlich, um Flüssigkeiten aus einer Quelle an mehrere Empfänger zu verteilen. block.liquid-tank.description = Speichert eine große Menge an Flüssigkeiten. Verwende es als Puffer, wenn Angebot und Nachfrage an einer Flüssigkeit schwanken. block.liquid-junction.description = Fungiert als Brücke über zwei kreuzende Kanäle. Nützlich in Situationen, in denen sich zwei Kanäle mit verschiedenen Flüssigkeiten kreuzen. block.bridge-conduit.description = Verbesserter Flüssigkeits-Transportblock. Erlaubt es, Flüssigkeiten über bis zu 3 Kacheln beliebigen Terrains oder Inhalts zu transportieren. block.phase-conduit.description = Verbesserter Flüssigkeits-Transportblock. Verwendet Strom, um Flüssigkeiten zu einem verbundenen Phasenkanal zu teleportieren. -block.power-node.description = Überträgt Strom zu verbundenen Knoten. Bis zu vier Stromquellen, -verbraucher oder -knoten können verbunden werden. Der Knoten erhält Strom von benachbarten Knoten und gibt Strom an benachbarte Blöcke weiter. -block.power-node-large.description = Hat einen größeren Radius als der normale Stromknoten und verbindet bis zu sechs Stromquellen, -verbraucher oder -knoten. +block.power-node.description = Überträgt Strom zu verbundenen Knoten. Bis zu zwanzig Stromquellen, -verbraucher oder -knoten können verbunden werden. Der Knoten erhält Strom von benachbarten Knoten und gibt Strom an benachbarte Blöcke weiter. +block.power-node-large.description = Hat einen größeren Radius als der normale Stromknoten und verbindet bis zu dreißig Stromquellen, -verbraucher oder -knoten. block.surge-tower.description = Ein extrem weitreichender Netzknoten mit weniger verfügbaren Verbindungen. -block.diode.description = Battery power can flow through this block in only one direction, but only if the other side has less power stored. +block.diode.description = Batteriestrom kann nur in eine Richtung durch diesen Block fließen, aber nur wenn die andere Seite weniger Strom in Batterien hat. block.battery.description = Speichert Strom, solange ein Überschuss besteht, und gibt ihn bei Knappheit ab, solange Kapazität vorhanden ist. block.battery-large.description = Speichert sehr viel mehr Strom als eine normale Batterie. block.combustion-generator.description = Generiert Strom, indem Öl oder entzündliche Materialien verbrannt werden. @@ -1221,15 +1227,5 @@ block.ripple.description = Ein großer Artillerie-Geschützturm, der mehrere Sch block.cyclone.description = Ein großer Schnellfeuer-Geschützturm. block.spectre.description = Ein großer Geschützturm, der zwei starke Schüsse gleichzeitig abfeuert. block.meltdown.description = Ein großer Geschützturm, der starke Strahlen mit großer Reichweite abfeuert. -block.command-center.description = Erteilt allen verbündeten Einheiten auf der Karte Bewegungsbefehle. \nBringt Einheiten zum Patrouillieren, Angreifen eines feindlichen Kerns oder Rückzug zur Fabrik/ zum Kern. Wenn es keinen feindlichen Kern gibt, patrouillieren die Einheiten bei einem Angriffsbefehl. -block.draug-factory.description = Produziert Draug-Mining-Drohnen. -block.spirit-factory.description = Produziert leichte Drohnen, die Erz abbauen und Blöcke reparieren können. -block.phantom-factory.description = Produziert erweiterte Drohnen, die deutlich effizienter sind als Spirit-Drohnen. -block.wraith-factory.description = Produziert schnelle Abfangjäger. -block.ghoul-factory.description = Produziert schwere Flächenbomber. -block.revenant-factory.description = Produziert schwere Raketen-basierte Flugeinheiten. -block.dagger-factory.description = Produziert Standard-Bodeneinheiten. -block.crawler-factory.description = Produziert schnelle, selbstzerstörende Schwarmeinheiten. -block.titan-factory.description = Produziert fortgeschrittene, gepanzerte Bodeneinheiten. -block.fortress-factory.description = Produziert schwere Artillerie-Bodeneinheiten. block.repair-point.description = Heilt durchgehend die nächste befreundete, beschädigte Einheit in der Umgebung. +block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 2536c7d461..622e4405a8 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -106,6 +106,7 @@ mods.guide = Guia de Modding mods.report = Reportar Error mods.openfolder = Abrir carpeta de mods mods.reload = Reload +mods.reloadexit = The game will now exit, to reload mods. mod.display = [gray]Mod:[orange] {0} mod.enabled = [lightgray]Activado mod.disabled = [scarlet]Desactivado @@ -124,6 +125,7 @@ mod.reloadrequired = [scarlet]Se requiere actualizar mod.import = Importar mod mod.import.file = Import File mod.import.github = Importar Mod de Github +mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source! mod.item.remove = Este objeto es parte del[accent] '{0}'[] mod. Para eliminarlo, desinstala ese mod. mod.remove.confirm = Este mod va a ser eliminado.\n¿Quieres continuar? mod.author = [lightgray]Autor:[] {0} @@ -224,7 +226,6 @@ save.new = Nuevo Punto de Guardado save.overwrite = ¿Estás seguro de querer sobrescribir\neste punto de guardado? overwrite = Sobrescribir save.none = ¡No se ha encontrado ningún punto de guardado! -saveload = [accent]Guardando... savefail = ¡No se ha podido guardar la partida! save.delete.confirm = ¿Estás seguro de querer borrar este punto de guardado? save.delete = Borrar @@ -272,6 +273,7 @@ quit.confirm.tutorial = ¿Estás seguro de que sabes qué estas haciendo?\nSe pu loading = [accent]Cargando... reloading = [accent]Recargando mods... saving = [accent]Guardando... +respawn = [accent][[{0}][] to respawn in core cancelbuilding = [accent][[{0}][] para limpiar el plan selectschematic = [accent][[{0}][] para seleccionar+copiar pausebuilding = [accent][[{0}][] para pausar la construcción @@ -328,8 +330,9 @@ waves.never = waves.every = cada waves.waves = oleada(s) waves.perspawn = por lugar de aparición +waves.shields = escudo/oleadas waves.to = hasta -waves.boss = Jefe +waves.guardian = Guardián waves.preview = Vista previa waves.edit = Editar... waves.copy = Copiar al Portapapeles @@ -460,6 +463,7 @@ requirement.unlock = Desbloquear {0} resume = Continuar Zona:\n[lightgray]{0} bestwave = [lightgray]Récord: {0} launch = Lanzar +launch.text = Launch launch.title = Lanzamiento Exitoso launch.next = [lightgray]próxima oportunidad en la oleada {0} launch.unable2 = [scarlet]No se puede LANZAR.[] @@ -467,13 +471,13 @@ launch.confirm = Esto lanzará todos los recursos al núcleo.\nNo podrás volver launch.skip.confirm = Si saltas la oleada ahora, no podrás lanzar recursos hasta unas oleadas después. uncover = Descubrir configure = Configurar carga inicial +loadout = Loadout +resources = Resources bannedblocks = Bloques prohibidos addall = Añadir todo -configure.locked = [lightgray]Para configurar la carga inicial: {0}. configure.invalid = La cantidad debe estar entre 0 y {0}. zone.unlocked = [lightgray]{0} desbloqueado. zone.requirement.complete = Oleada {0} alcanzada:\nrequerimientos de la zona {1} cumplidos. -zone.config.unlocked = Carga desbloqueada:[lightgray]\n{0} zone.resources = Recursos Detectados: zone.objective = [lightgray]Objetivo: [accent]{0} zone.objective.survival = Sobrevivir @@ -492,35 +496,29 @@ error.io = Error I/O de conexión. error.any = Error de red desconocido. error.bloom = Error al cargar el bloom.\nPuede que tu dispositivo no soporte esta característica. -zone.groundZero.name = Terreno Cero -zone.desertWastes.name = Ruinas del Desierto -zone.craters.name = Los Cráteres -zone.frozenForest.name = Bosque Congelado -zone.ruinousShores.name = Costas Ruinosas -zone.stainedMountains.name = Montañas Manchadas -zone.desolateRift.name = Grieta Desolada -zone.nuclearComplex.name = Complejo de Producción Nuclear -zone.overgrowth.name = Crecimiento Excesivo -zone.tarFields.name = Campos de Alquitrán -zone.saltFlats.name = Salinas -zone.impact0078.name = Impacto 0078 -zone.crags.name = Riscos -zone.fungalPass.name = Pasillo de hongos +sector.groundZero.name = Ground Zero +sector.craters.name = The Craters +sector.frozenForest.name = Frozen Forest +sector.ruinousShores.name = Ruinous Shores +sector.stainedMountains.name = Stained Mountains +sector.desolateRift.name = Desolate Rift +sector.nuclearComplex.name = Nuclear Production Complex +sector.overgrowth.name = Overgrowth +sector.tarFields.name = Tar Fields +sector.saltFlats.name = Salt Flats +sector.fungalPass.name = Fungal Pass -zone.groundZero.description = La zona óptima para empezar una vez más. Riesgo bajo de los enemigos. Pocos recursos.\nConsigue tanto plomo y cobre como puedas.\nSigue avanzando. -zone.frozenForest.description = Incluso aquí, cerca de las montañas, las esporas se han expandido. Las temperaturas gélidas no pueden contenerlas para siempre.\n\nEmpieza a investigar sobre energía. Cnstruye generadores de combustión. Aprende a usar reparadores. -zone.desertWastes.description = Estas ruinas son vastas, impredecibles y entrecruzadas con sectores de estructuras abandonadas.\nHay carbñon presente en la región. Quémalo para energía, o sintetiza grafito.\n\n[lightgray]La zona de aparición no puede ser garantizada. -zone.saltFlats.description = A las afueras del desierto se encuentran las Salinas. Pocos recursos pueden ser encontrados en esta ubicación.\n\nEl enemigo ha erigido un complejo de almacén de recursos aquí. Erradica su núcleo. No dejes nada. -zone.craters.description = Se ha acumulado agua en este cráter, reliquia de las guerraas antiguas. Reconquista la zona. Obtén arena. Funde metacristal. Bombea agua para refrigerar torres y taladros. -zone.ruinousShores.description = Después de las ruinas viene la costa. Una vez este lugar hospedaba a una defensa de cosa. No queda mucho de ella. Solo las estructuras defensivas más básicas se han mantenido intactas, tolo lo demás ha sido reducido a chatarra. Continúa la expansión hacia fuera. Redescubre la tecnología. -zone.stainedMountains.description = Más hacia dentro están las montañas, todavía sin esporas. Extrae el abundante titanio en esta zona. Aprende cómo usarlo.\n\nLa presencia de enemigos es mayor aquí. No les dejes tiempo a que envíen sus unidades más fuertes. -zone.overgrowth.description = Este área está cubierta, más cerca de la fuente de esporas.\nEl enemigo ha establecido un puesto aquí. Construye unidades daga. Destrúyelo. Reconquista lo que se perdió. -zone.tarFields.description = Las afueras de una zona de producción de petróleo, entre las montañas y el desierto. Una de las pocas zonas con reservas utilizables de alquitrán natural.\nAunque abandonada, esta zona tiene esta zona tiene algunas fuerzas enemigas peligrosas. No las subestimes.\n\n[lightgray]Investiga tecnología de procesamiento de petróleo si es posible. -zone.desolateRift.description = Una zona extremadamente peligrosa. Tiene muchos recursos pero poco espacio. Riesgo alto de destrucción. Abandona lo antes posible. No te dejes engañar por la gran separación de tiempo entre oleadas enemigas. -zone.nuclearComplex.description = Una antigua facilidad para la producción y el procesamiento del torio reducido a ruinas.\n[lightgray]Investiga el torio y sus diversos usos.\n\nEl enemigo está presente en números grandes, constantemente buscando atacantes. -zone.fungalPass.description = Una zona transitoria entre alta montaña y zonas más bajas con esporas. Una base enemiga pequeña de reconocimiento se ubica aquí.\nDestrúyela.nUsa Dagas y Orugas. Destruye los dos núcleos. -zone.impact0078.description = -zone.crags.description = +sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. +sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. +sector.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. +sector.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. +sector.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. +sector.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units. +sector.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build Titan units. Destroy it. Reclaim that which was lost. +sector.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. +sector.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. +sector.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. +sector.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. settings.language = Idioma settings.data = Datos del Juego @@ -537,6 +535,7 @@ settings.clearall.confirm = [scarlet]ADVERTENCIA![]\nEsto va a eliminar todos tu paused = [accent] < Pausado > clear = Limpiar banned = [scarlet]Baneado +unplaceable.sectorcaptured = [scarlet]Requires captured sector yes = Sí no = No info.title = [accent]Información @@ -582,6 +581,8 @@ blocks.reload = Recarga blocks.ammo = Munición bar.drilltierreq = Se requiere un mejor taladro. +bar.noresources = Missing Resources +bar.corereq = Core Base Required bar.drillspeed = Velocidad del Taladro: {0}/s bar.pumpspeed = Velocidad de bombeado: {0}/s bar.efficiency = Eficiencia: {0}% @@ -591,11 +592,12 @@ bar.poweramount = Energía: {0} bar.poweroutput = Salida de Energía: {0} bar.items = Objetos: {0} bar.capacity = Capacidad: {0} +bar.unitcap = {0} {1}/{2} +bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled] bar.liquid = Líquido bar.heat = Calor bar.power = Energía bar.progress = Progreso de construcción -bar.spawned = Unidades: {0}/{1} bar.input = Entrada bar.output = Salida @@ -639,6 +641,7 @@ setting.linear.name = Filtrado Lineal setting.hints.name = Pistas setting.flow.name = Display Resource Flow Rate[scarlet] (experimental) setting.buildautopause.name = Auto-pausar construcción +setting.mapcenter.name = Auto Center Map To Player setting.animatedwater.name = Agua Animada setting.animatedshields.name = Escudos Animados setting.antialias.name = Antialias[lightgray] (necesita reiniciar)[] @@ -663,7 +666,6 @@ setting.effects.name = Mostrar Efectos setting.destroyedblocks.name = Mostrar bloques destruidos setting.blockstatus.name = Display Block Status setting.conveyorpathfinding.name = Colocación del transportador en búsqueda de caminos -setting.coreselect.name = Permitir núcleos esquemáticos setting.sensitivity.name = Sensibilidad del Control setting.saveinterval.name = Intervalo del Autoguardado setting.seconds = {0} Segundos @@ -672,12 +674,15 @@ setting.milliseconds = {0} milisegundos setting.fullscreen.name = Pantalla Completa setting.borderlesswindow.name = Ventana sin Bordes[lightgray] (podría requerir un reinicio) setting.fps.name = Mostrar FPS +setting.smoothcamera.name = Smooth Camera setting.blockselectkeys.name = Mostrar teclas de selección de bloque setting.vsync.name = Vsync (Limita los fps a los Hz de tu pantalla) setting.pixelate.name = Pixelar [lightgray](podría reducir el rendimiento) setting.minimap.name = Mostrar Minimapa +setting.coreitems.name = Display Core Items (WIP) setting.position.name = Mostrar posición del jugador. setting.musicvol.name = Volumen de la Música +setting.atmosphere.name = Show Planet Atmosphere setting.ambientvol.name = Volumen del Ambiente setting.mutemusic.name = Silenciar Musica setting.sfxvol.name = Volumen de los efectos de sonido @@ -700,10 +705,13 @@ keybinds.mobile = [scarlet]Los accesos del teclado aquí mostrados no estan disp category.general.name = General category.view.name = Visión category.multiplayer.name = Multijugador +category.blocks.name = Block Select command.attack = Atacar command.rally = Patrullar command.retreat = Retirarse placement.blockselectkeys = \n[lightgray]Key: [{0}, +keybind.respawn.name = Respawn +keybind.control.name = Control Unit keybind.clear_building.name = Eliminar construcción keybind.press = Presiona una tecla... keybind.press.axis = Pulsa un eje o botón... @@ -713,7 +721,7 @@ keybind.toggle_block_status.name = Toggle Block Statuses keybind.move_x.name = Mover x keybind.move_y.name = Mover y keybind.mouse_move.name = Seguír al ratón -keybind.dash.name = Correr +keybind.boost.name = Boost keybind.schematic_select.name = Seleccionar región keybind.schematic_menu.name = Menu de esquématicos keybind.schematic_flip_x.name = Girar esquemático desde X @@ -775,30 +783,25 @@ rules.wavetimer = Temportzador de Oleadas rules.waves = Oleadas rules.attack = Modo de Ataque rules.enemyCheat = Recursos infinitos de la IA -rules.unitdrops = REcursos de las Unidades +rules.blockhealthmultiplier = Multiplicador de salud de bloque +rules.blockdamagemultiplier = Block Damage Multiplier rules.unitbuildspeedmultiplier = Multiplicador de velocidad de creación de unidades rules.unithealthmultiplier = Multiplicador de la vida de las unidades -rules.blockhealthmultiplier = Multiplicador de salud de bloque -rules.playerhealthmultiplier = Multiplicador de la vida del jugador -rules.playerdamagemultiplier = Multiplicador del daño del jugador rules.unitdamagemultiplier = Multiplicador del daño de unidades rules.enemycorebuildradius = Radio de No-Construcción del Núcleo Enemigo:[lightgray] (casillas) -rules.respawntime = Tiempo de reaparición:[lightgray] (seg) rules.wavespacing = Tiempo entre oleadas:[lightgray] (seg) rules.buildcostmultiplier = Multiplicador de coste de construcción rules.buildspeedmultiplier = Multiplicador de velocidad de construcción rules.deconstructrefundmultiplier = Multiplicador de Devolución de Desconstrucción rules.waitForWaveToEnd = Las oleadas esperan a los enemigos rules.dropzoneradius = Radio de zona de caída:[lightgray] (casillas) -rules.respawns = Reapariciones máximas por oleada -rules.limitedRespawns = Límite de reapariciones +rules.unitammo = Units Require Ammo rules.title.waves = Oleadas -rules.title.respawns = Reapariciones rules.title.resourcesbuilding = Recursos y Construcción -rules.title.player = Jugadores rules.title.enemy = Enemigos rules.title.unit = Unidades rules.title.experimental = Experimental +rules.title.environment = Environment rules.lighting = Iluminación rules.ambientlight = Iluminación ambiental rules.solarpowermultiplier = Multiplicador de Potencia de Panel Solar @@ -827,7 +830,6 @@ liquid.water.name = Agua liquid.slag.name = Fundido liquid.oil.name = Petróleo liquid.cryofluid.name = Criogénico -item.corestorable = [lightgray]Guardable en el núcleo: {0} item.explosiveness = [lightgray]Explosividad: {0} item.flammability = [lightgray]Inflamabilidad: {0} item.radioactivity = [lightgray]Radioactividad: {0} @@ -843,6 +845,32 @@ liquid.heatcapacity = [lightgray]Capacidad Térmica: {0} liquid.viscosity = [lightgray]Viscosidad: {0} liquid.temperature = [lightgray]Temperatura: {0} +unit.dagger.name = Daga +unit.mace.name = Mace +unit.fortress.name = Fortaleza +unit.nova.name = Nova +unit.pulsar.name = Pulsar +unit.quasar.name = Quasar +unit.crawler.name = Oruga +unit.atrax.name = Atrax +unit.spiroct.name = Spiroct +unit.arkyid.name = Arkyid +unit.flare.name = Flare +unit.horizon.name = Horizon +unit.zenith.name = Zenith +unit.antumbra.name = Antumbra +unit.eclipse.name = Eclipse +unit.mono.name = Mono +unit.poly.name = Poly +unit.mega.name = Mega +unit.risse.name = Risse +unit.minke.name = Minke +unit.bryde.name = Bryde +unit.alpha.name = Alpha +unit.beta.name = Beta +unit.gamma.name = Gamma + +block.parallax.name = Parallax block.cliff.name = Cliff block.sand-boulder.name = Piedra de Arena block.grass.name = Hierba @@ -937,6 +965,7 @@ block.conveyor.name = Cinta Transportadora block.titanium-conveyor.name = Cinta Transportadora de Titanio block.plastanium-conveyor.name = Cinta Transportadora de Titanio block.armored-conveyor.name = Cinta Transportadora Acorazada +block.armored-conveyor.description = Mueve items a la misma veolcidad que una cinta de titanio, pero tiene mas defensa. No acepta entradas por los lados a menos que sean lineas transportadoras. block.junction.name = Cruce block.router.name = Enrutador block.distributor.name = Distribuidor @@ -993,17 +1022,6 @@ block.blast-mixer.name = Mezclador de Explosivos block.solar-panel.name = Panel Solar block.solar-panel-large.name = Panel Solar Grande block.oil-extractor.name = Extractor de Petróleo -block.command-center.name = Centro de Comando -block.draug-factory.name = Fábrica de Drones Mineros Primitivos -block.spirit-factory.name = Fábrica de Drones Espíritu -block.phantom-factory.name = Fábrica de Drones Fantasmales -block.wraith-factory.name = Fábrica de Peleador Infernal -block.ghoul-factory.name = Fábrica de Bombardero Fantasmal -block.dagger-factory.name = Fábrica de Mecanoide Daga -block.crawler-factory.name = Fábrica de Mecanoide Oruga -block.titan-factory.name = Fábrica de Mecanoide Titán -block.fortress-factory.name = Fábrica de Mecanoide Fortress -block.revenant-factory.name = Fábrica de Peleador Revenante block.repair-point.name = Punto de Reparación block.pulse-conduit.name = Conducto de Pulso block.plated-conduit.name = Conducto Chapado @@ -1035,6 +1053,19 @@ block.meltdown.name = Fusión de Reactor block.container.name = Contenedor block.launch-pad.name = Pad de Lanzamiento block.launch-pad-large.name = Pad de Lanzamiento Grande +block.segment.name = Segment +block.ground-factory.name = Ground Factory +block.air-factory.name = Air Factory +block.naval-factory.name = Naval Factory +block.additive-reconstructor.name = Additive Reconstructor +block.multiplicative-reconstructor.name = Multiplicative Reconstructor +block.exponential-reconstructor.name = Exponential Reconstructor +block.tetrative-reconstructor.name = Tetrative Reconstructor +block.mass-conveyor.name = Mass Conveyor +block.payload-router.name = Payload Router +block.disassembler.name = Disassembler +block.silicon-crucible.name = Silicon Crucible +block.large-overdrive-projector.name = Large Overdrive Projector team.blue.name = Azul team.crux.name = rojo team.sharded.name = naranja @@ -1042,21 +1073,7 @@ team.orange.name = Naranja team.derelict.name = derelict team.green.name = Verde team.purple.name = Púrpura -unit.spirit.name = Dron Espíritu -unit.draug.name = Dron Minero Primitivo -unit.phantom.name = Dron Fantasmal -unit.dagger.name = Daga -unit.crawler.name = Oruga -unit.titan.name = Titán -unit.ghoul.name = Bombardero Fantasmal -unit.wraith.name = Peleador Infernal -unit.fortress.name = Fortaleza -unit.revenant.name = Revenante -unit.eruptor.name = Erupcionador -unit.chaos-array.name = Matriz del caos -unit.eradicator.name = Erradicador -unit.lich.name = Exánime -unit.reaper.name = Segador + tutorial.next = [lightgray] tutorial.intro = Has entrado en el[scarlet]Tutorial de Mindustry.[]\nComienza[accent]minando cobre[]. Toca en una veta de cobre cercana al núcleo para hacer esto.\n\n[accent]{0}/{1} cobre tutorial.intro.mobile = Has entrado en el[scarlet] Tutorial de Mindustry.[]\nArrastra la pantalla para moverte.\n[accent]Pellizca con 2 dedos [] para alejar y acercar la vista.\nComienza por[accent] minar cobre[]. Muevete cerca de el, luego toca una veta de mineral de cobre cerca de su núcleo para hacer esto.\n\n[accent]{0}/{1} cobre @@ -1099,17 +1116,7 @@ liquid.water.description = Usada comúnmente para enfriar máquinas y para proce liquid.slag.description = Diferentes tipos de metales fundidos mezclados. Puede ser separado en sus minerales constituyentes, o expulsado a unidades enemigas como arma. liquid.oil.description = Puede ser quemado, explotado o como un enfriador. liquid.cryofluid.description = El líquido más eficiente pra enfriar las cosas. -unit.draug.description = Un dron minero primitivo. Barato de producir. Reciclable. Mina cobre y plomo cercanos automáticamente. Transporta los recursos minados al núcleo más cercano. -unit.spirit.description = Un dron minero primitivo modificado, diseñado para reparar en vez de minar. Repara automáticamente cualquier bloque dañado en la zona. -unit.phantom.description = Un dron avanzado. Mina automáticamente minerales, recoge objetos y repra bloques. Bastante más efectivo que un dron normal. -unit.dagger.description = Una unidad terrestre. Útil con enjambres. -unit.crawler.description = Una unidad terrestre que consiste en un marco desmontado con una gran cantidad de explosivos en la parte superior. No es muy duradero. Explota en contacto enemigo. -unit.titan.description = Una unidad terrestre blindada avanzada. Ataca objetivos aéreos y terrestres. -unit.fortress.description = Una unidad terrestre pesada de artillería. -unit.eruptor.description = Un mecanoide pesado diseñado para destruir estructuras. Dispara un líquido a las fortificaciones enemigas, fundiéndolas y quemando materiales volátiles. -unit.wraith.description = Una unidad interceptora rápida. -unit.ghoul.description = Una unidad bombardera pesada. Usa compuesto explosivo o pirotita como munición. -unit.revenant.description = Una unidad aérea pesada equipada con misiles. + block.message.description = Almacena un mensaje. Puedes usarlo para comunicarte con aliados o dejar recordatorios. block.graphite-press.description = Comprime carbón en piezas de grafito puro. block.multi-press.description = Una versión mejorada de la prensa de grafito. Utiliza agua y energía para procesar carbón rápida y eficientemente. @@ -1155,7 +1162,6 @@ block.shock-mine.description = Daña enemigos que pisan a mina. Casi invisible a block.conveyor.description = Bloque de transporte básico. Mueve objetos hacia adelante y los deposita automáticamente en torres o fábricas. Rotable. block.titanium-conveyor.description = Bloque de transporte avanzado. Mueve objetos más rápido que los transportadores estándar. block.plastanium-conveyor.description = Mueve ítems por lotes.\nAcepta ítems por detrás, y los descarga en tres direcciones hacia el frente, como un enrutador. -block.armored-conveyor.description = Mueve items a la misma veolcidad que una cinta de titanio, pero tiene mas defensa. No acepta entradas por los lados a menos que sean lineas transportadoras. block.junction.description = Actúa como puente para dos transportadores que se cruzan. Útil en situaciones con dos diferentes transportadores transportando diferentes materiales a diferentes lugares. block.bridge-conveyor.description = Bloque avanzado de transporte. Puede transportar objetos por encima hasta 3 casillas de cualquier terreno o construcción. block.phase-conveyor.description = Bloque de transporte avanzado. Usa energía para transportar objetos a otro transportador de fase conectado a través de varias casillas. @@ -1221,15 +1227,5 @@ block.ripple.description = Una extramadamente poderosa torre. Dispara conjuntos block.cyclone.description = Una torre grande anti-aérea y anti-terrestre. Dispara conjuntos explosivos de Flak a enemigos cercanos. block.spectre.description = Un cañon masivo de dos barriles. Dispara balas perforantes a objetivos de aire y tierra. block.meltdown.description = Un cañon láser masivo. Carga y dispara un rayo láser constante a enemigos cercanos. Requiere enfriamiento para operar. -block.command-center.description = Emite comandos de movimiento a las unidades aliadas en el mapa.\nHace que las unidades patrullen, ataquen un núcleo enemigo o se retiren al núcleo / fábrica. When no enemy core is present, units will default to patrolling under the attack command. -block.draug-factory.description = Produce drones mineros primitivos. -block.spirit-factory.description = Produce drones ligeros que reparan bloques. -block.phantom-factory.description = Produce drones avanzados de construcción. -block.wraith-factory.description = Produce unidades aéreas rápidas e interceptoras. -block.ghoul-factory.description = Produce unidades bombarderas pesadas. -block.revenant-factory.description = Produce unidades aéreas lanzamisiles pesadas. -block.dagger-factory.description = Produce unidades terrestres básicas. -block.crawler-factory.description = Produce unidades rápidas terrestres explosivas. -block.titan-factory.description = Produce unidades terrestres avanzadas con armadura. -block.fortress-factory.description = Produce unidades terrestres de artillería pesada. block.repair-point.description = Repara la unidad dañada más cercana a su alrededor. +block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. diff --git a/core/assets/bundles/bundle_et.properties b/core/assets/bundles/bundle_et.properties index c002a01a5f..57c45642bc 100644 --- a/core/assets/bundles/bundle_et.properties +++ b/core/assets/bundles/bundle_et.properties @@ -106,6 +106,7 @@ mods.guide = Modding Guide mods.report = Report Bug mods.openfolder = Open Mod Folder mods.reload = Reload +mods.reloadexit = The game will now exit, to reload mods. mod.display = [gray]Mod:[orange] {0} mod.enabled = [lightgray]Enabled mod.disabled = [scarlet]Disabled @@ -124,6 +125,7 @@ mod.reloadrequired = [scarlet]Reload Required mod.import = Import Mod mod.import.file = Import File mod.import.github = Import GitHub Mod +mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source! mod.item.remove = This item is part of the[accent] '{0}'[] mod. To remove it, uninstall that mod. mod.remove.confirm = This mod will be deleted. mod.author = [lightgray]Author:[] {0} @@ -224,7 +226,6 @@ save.new = Uus salvestis save.overwrite = Oled kindel, et soovid selle salvestise asendada? overwrite = Asenda save.none = Salvestisi ei leitud! -saveload = [accent]Salvestamine... savefail = Salvestamine ebaõnnestus! save.delete.confirm = Oled kindel, et soovid selle salvestise kustutada? save.delete = Kustuta @@ -272,6 +273,7 @@ quit.confirm.tutorial = Oled kindel, et soovid õpetuse lõpetada?\nÕpetust saa loading = [accent]Laadimine... reloading = [accent]Reloading Mods... saving = [accent]Salvestamine... +respawn = [accent][[{0}][] to respawn in core cancelbuilding = [accent][[{0}][] to clear plan selectschematic = [accent][[{0}][] to select+copy pausebuilding = [accent][[{0}][] to pause building @@ -328,8 +330,9 @@ waves.never = -- waves.every = iga waves.waves = laine järel waves.perspawn = laine kohta +waves.shields = shields/wave waves.to = kuni -waves.boss = Boss +waves.guardian = Guardian waves.preview = Eelvaade waves.edit = Muuda... waves.copy = Kopeeri puhvrisse @@ -460,6 +463,7 @@ requirement.unlock = Unlock {0} resume = Jätka piirkonnas:\n[lightgray]{0} bestwave = [lightgray]Parim lahingulaine: {0} launch = < LENDUTÕUS > +launch.text = Launch launch.title = Lendutõus launch.next = [lightgray]Järgmine võimalus on {0}. laine järel launch.unable2 = [scarlet]Ei saa LENDU TÕUSTA.[] @@ -467,13 +471,13 @@ launch.confirm = Lendu tõusmisel võetakse kaasa\nkõik tuumikus olevad ressurs launch.skip.confirm = Kui jätad praegu lendu tõusmata, siis saad seda teha alles hilisemate lahingulainete järel. uncover = Ava configure = Muuda varustust +loadout = Loadout +resources = Resources bannedblocks = Banned Blocks addall = Add All -configure.locked = [lightgray]Varustuse muutmine avaneb\n {0}. lahingulaine järel. configure.invalid = Arv peab olema 0 ja {0} vahel. zone.unlocked = [lightgray]{0} avatud. zone.requirement.complete = Jõudsid lahingulaineni {0}:\nPiirkonna "{1}" nõuded täidetud. -zone.config.unlocked = Loadout unlocked:[lightgray]\n{0} zone.resources = Ressursid: zone.objective = [lightgray]Eesmärk: [accent]{0} zone.objective.survival = Ellujäämine @@ -492,35 +496,29 @@ error.io = Võrgu sisend-väljundi viga. error.any = Teadmata viga võrgus. error.bloom = Bloom-efekti lähtestamine ebaõnnestus.\nSinu seade ei pruugi seda efekti toetada. -zone.groundZero.name = Nullpunkt -zone.desertWastes.name = Kõrbestunud tühermaa -zone.craters.name = Kraatrid -zone.frozenForest.name = Jäätunud mets -zone.ruinousShores.name = Rüüstatud kaldad -zone.stainedMountains.name = Rikutud mägismaa -zone.desolateRift.name = Mahajäetud rift -zone.nuclearComplex.name = Tuumajõujaam -zone.overgrowth.name = Kinnikasvanud võsa -zone.tarFields.name = Tõrvaväljad -zone.saltFlats.name = Soolaväljad -zone.impact0078.name = Kokkupõrge 0078 -zone.crags.name = Kaljurünkad -zone.fungalPass.name = Seenekuru +sector.groundZero.name = Ground Zero +sector.craters.name = The Craters +sector.frozenForest.name = Frozen Forest +sector.ruinousShores.name = Ruinous Shores +sector.stainedMountains.name = Stained Mountains +sector.desolateRift.name = Desolate Rift +sector.nuclearComplex.name = Nuclear Production Complex +sector.overgrowth.name = Overgrowth +sector.tarFields.name = Tar Fields +sector.saltFlats.name = Salt Flats +sector.fungalPass.name = Fungal Pass -zone.groundZero.description = Optimaalne asukoht alustamiseks.\nMadal ohutase. Vähesel määral ressursse.\nKogu kokku nii palju vaske ja pliid kui võimalik. -zone.frozenForest.description = Spoorid on levinud isegi mägede lähedale. Jäised temperatuurid ei suuda neid igavesti eemal hoida.\n\nAlusta esimeste katsetustega energia tootmises. Ehita põlemisgeneraatoreid.\nÕpi oma ehitisi parandama. -zone.desertWastes.description = Need tühermaad on üüratud ja ettearvamatud. Siin-seal leidub mahajäetud ja räsitud tööstushooneid.\n\nSelles piirkonnas leidub sütt. Töötle seda grafiidiks või põleta energia saamiseks.\n\n[lightgray]Maandumispaik ei ole kindlaks määratud. -zone.saltFlats.description = Kõrbe äärealadel laiuvad soolaväljad. Sellel alal leidub üksikuid ressursse.\n\nVaenlased on ehitanud siia ressursside hoidla. Hävita nende tuumik. Tee kõik maatasa. -zone.craters.description = Kunagiste sõdade käigus tekkinud kraatrisse on nüüdseks kogunenud vesi. Taasta see piirkond. Kogu liiva. Sulata see metaklaasiks. Kahurite ja puuride jahutamiseks pumpa vett. -zone.ruinousShores.description = Peale tühermaad algab rannajoon. Kunagi asus siin rannakaitsekompleks. Sellest ei ole palju alles. Kõigest põhilisemad kaitseehitised on jäänud puutumata. Teistest hoonetest on alles vaid varemed.\nJätka kaugemale arenemist. Taasavasta tehnoloogiaid. -zone.stainedMountains.description = Kaugemal sisemaal laiuvad mäed, mis on veel spooridest puutumata.\nKaevanda selles piirkonnas külluslikult leiduvat titaani. Õpi seda kasutama.\n\nVaenlasi on siin üpris palju. Ära anna neile aega oma tugevaimate väeüksuste teele saatmiseks. -zone.overgrowth.description = See ala on võsastunud ja asub spooride allika lähedal.\nVaenlased on siin eelpostil. Hävita see. Ehita kalevite väeüksuseid. Taasta see, mis läks kunagi kaduma. -zone.tarFields.description = Mägede ja kõrbe vahel asuvad naftatootmistsooni äärealad. Üks väheseid tõrvavarude piirkondi.\nEhkki see koht on mahajäetud, leidub selle läheduses ohtlikke vaenlasi. Ära alahinda neid.\n\n[lightgray]Võimaluse korral uuri nafta töötlemise tehnoloogiaid. -zone.desolateRift.description = Äärmiselt ohtlik piirkond. Külluslikult ressursse, kuid vähe ruumi. Suur hävinemisoht. Lahku võimalikult kiiresti. Vaenlaste rünnakute vaheline pikk aeg on petlik! -zone.nuclearComplex.description = Endine tooriumi tootmise ja töötlemise rajatis, millest on nüüdseks alles vaid varemed.\n[lightgray]Uuri tooriumit ja selle laialdaseid kasutusvõimalusi.\n\nVaenlaseid on siin palju ning nad jälgivad pidevalt sissetungijaid. -zone.fungalPass.description = Üleminekuala kõrgete mägede ja madalamate, spooridega ülekülvatud maade vahel. Siin asub väike vaenlaste luurebaas.\nHävita see.\nKasuta soldatite ja plahvatajate väeüksuseid. Hävita kaks vaenlaste tuumikut. -zone.impact0078.description = -zone.crags.description = +sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. +sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. +sector.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. +sector.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. +sector.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. +sector.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units. +sector.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build Titan units. Destroy it. Reclaim that which was lost. +sector.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. +sector.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. +sector.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. +sector.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. settings.language = Keel settings.data = Mänguandmed @@ -537,6 +535,7 @@ settings.clearall.confirm = [scarlet]HOIATUS![]\nKustutatakse kõik andmed, seal paused = [accent]< Paus > clear = Clear banned = [scarlet]Banned +unplaceable.sectorcaptured = [scarlet]Requires captured sector yes = Jah no = Ei info.title = Info @@ -582,6 +581,8 @@ blocks.reload = Lasku/s blocks.ammo = Laskemoon bar.drilltierreq = Nõuab paremat puuri +bar.noresources = Missing Resources +bar.corereq = Core Base Required bar.drillspeed = Puurimise kiirus: {0}/s bar.pumpspeed = Pump Speed: {0}/s bar.efficiency = Kasutegur: {0}% @@ -591,11 +592,12 @@ bar.poweramount = Laeng: {0} bar.poweroutput = Tootlus: {0} bar.items = Ressursse: {0} bar.capacity = Mahutavus: {0} +bar.unitcap = {0} {1}/{2} +bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled] bar.liquid = Vedelik bar.heat = Kuumus bar.power = Energia bar.progress = Edenemine -bar.spawned = Väeüksuseid: {0}/{1} bar.input = Input bar.output = Output @@ -639,6 +641,7 @@ setting.linear.name = Lineaarne tekstuurivastendus setting.hints.name = Hints setting.flow.name = Display Resource Flow Rate[scarlet] (experimental) setting.buildautopause.name = Auto-Pause Building +setting.mapcenter.name = Auto Center Map To Player setting.animatedwater.name = Animeeritud vesi setting.animatedshields.name = Animeeritud kilbid setting.antialias.name = Sakitõrje[lightgray] (vajab mängu taaskäivitamist)[] @@ -663,7 +666,6 @@ setting.effects.name = Näita visuaalefekte setting.destroyedblocks.name = Display Destroyed Blocks setting.blockstatus.name = Display Block Status setting.conveyorpathfinding.name = Conveyor Placement Pathfinding -setting.coreselect.name = Allow Schematic Cores setting.sensitivity.name = Kontrolleri tundlikkus setting.saveinterval.name = Salvestamise intervall setting.seconds = {0} sekundit @@ -672,12 +674,15 @@ setting.milliseconds = {0} milliseconds setting.fullscreen.name = Täisekraan setting.borderlesswindow.name = Äärteta ekraan[lightgray] (võib vajada mängu taaskäivitamist) setting.fps.name = Näita kaadrite arvu sekundis +setting.smoothcamera.name = Smooth Camera setting.blockselectkeys.name = Show Block Select Keys setting.vsync.name = Vertikaalne sünkroonimine setting.pixelate.name = Piksel-efekt[lightgray] (lülitab animatsioonid välja) setting.minimap.name = Näita kaarti +setting.coreitems.name = Display Core Items (WIP) setting.position.name = Show Player Position setting.musicvol.name = Muusika helitugevus +setting.atmosphere.name = Show Planet Atmosphere setting.ambientvol.name = Taustahelide tugevus setting.mutemusic.name = Vaigista muusika setting.sfxvol.name = Heliefektide tugevus @@ -700,10 +705,13 @@ keybinds.mobile = [scarlet]Enamik kuvatud juhtnuppudest ei ole kasutusel mobiils category.general.name = Mäng category.view.name = Kaamera ja kasutajaliides category.multiplayer.name = Mitmikmäng +category.blocks.name = Block Select command.attack = Ründa command.rally = Patrulli command.retreat = Põgene placement.blockselectkeys = \n[lightgray]Key: [{0}, +keybind.respawn.name = Respawn +keybind.control.name = Control Unit keybind.clear_building.name = Clear Building keybind.press = Vajuta klahvi... keybind.press.axis = Liiguta juhtkangi või vajuta klahvi... @@ -713,7 +721,7 @@ keybind.toggle_block_status.name = Toggle Block Statuses keybind.move_x.name = Liigu X-teljel keybind.move_y.name = Liigu Y-teljel keybind.mouse_move.name = Follow Mouse -keybind.dash.name = Söösta +keybind.boost.name = Boost keybind.schematic_select.name = Select Region keybind.schematic_menu.name = Schematic Menu keybind.schematic_flip_x.name = Flip Schematic X @@ -775,30 +783,25 @@ rules.wavetimer = Kasuta taimerit rules.waves = Kasuta lahingulaineid rules.attack = Mänguviis "Rünnak" rules.enemyCheat = [scarlet]Vaenlastel[] on lõputult ressursse -rules.unitdrops = Väeüksuste heitmine lubatud +rules.blockhealthmultiplier = Block Health Multiplier +rules.blockdamagemultiplier = Block Damage Multiplier rules.unitbuildspeedmultiplier = Väeüksuste tootmiskiiruse kordaja rules.unithealthmultiplier = Väeüksuste elude kordaja -rules.blockhealthmultiplier = Block Health Multiplier -rules.playerhealthmultiplier = Mängija elude kordaja -rules.playerdamagemultiplier = Mängija hävitusvõime kordaja rules.unitdamagemultiplier = Väeüksuste hävitusvõime kordaja rules.enemycorebuildradius = Vaenlaste tuumiku ehitistevaba ala raadius:[lightgray] (ühik) -rules.respawntime = Elluärkamise aeg:[lightgray] (sekund) rules.wavespacing = Aeg lainete vahel:[lightgray] (sekund) rules.buildcostmultiplier = Ehitamise maksumuse kordaja rules.buildspeedmultiplier = Ehitamise kiiruse kordaja rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier rules.waitForWaveToEnd = Järgmine laine ootab eelmise laine lõpuni rules.dropzoneradius = Maandumisala raadius:[lightgray] (ühik) -rules.respawns = Maks. arv elluärkamisi laine kohta -rules.limitedRespawns = Piira elluärkamisi +rules.unitammo = Units Require Ammo rules.title.waves = Lahingulained -rules.title.respawns = Elluärkamised rules.title.resourcesbuilding = Ressursid ja ehitamine -rules.title.player = Mängijad rules.title.enemy = Vaenlased rules.title.unit = Väeüksused rules.title.experimental = Experimental +rules.title.environment = Environment rules.lighting = Lighting rules.ambientlight = Ambient Light rules.solarpowermultiplier = Solar Power Multiplier @@ -827,7 +830,6 @@ liquid.water.name = Vesi liquid.slag.name = Räbu liquid.oil.name = Nafta liquid.cryofluid.name = Krüovedelik -item.corestorable = [lightgray]Storable in Core: {0} item.explosiveness = [lightgray]Plahvatusohtlikkus: {0}% item.flammability = [lightgray]Tuleohtlikkus: {0}% item.radioactivity = [lightgray]Radioaktiivsus: {0}% @@ -843,6 +845,32 @@ liquid.heatcapacity = [lightgray]Soojusmahtuvus: {0} liquid.viscosity = [lightgray]Viskoossus: {0} liquid.temperature = [lightgray]Temperatuur: {0} +unit.dagger.name = Soldat +unit.mace.name = Mace +unit.fortress.name = Koljat +unit.nova.name = Nova +unit.pulsar.name = Pulsar +unit.quasar.name = Quasar +unit.crawler.name = Plahvataja +unit.atrax.name = Atrax +unit.spiroct.name = Spiroct +unit.arkyid.name = Arkyid +unit.flare.name = Flare +unit.horizon.name = Horizon +unit.zenith.name = Zenith +unit.antumbra.name = Antumbra +unit.eclipse.name = Eclipse +unit.mono.name = Mono +unit.poly.name = Poly +unit.mega.name = Mega +unit.risse.name = Risse +unit.minke.name = Minke +unit.bryde.name = Bryde +unit.alpha.name = Alpha +unit.beta.name = Beta +unit.gamma.name = Gamma + +block.parallax.name = Parallax block.cliff.name = Cliff block.sand-boulder.name = Liivakamakas block.grass.name = Rohi @@ -994,17 +1022,6 @@ block.blast-mixer.name = Lõhkeainete segisti block.solar-panel.name = Päikesepaneel block.solar-panel-large.name = Suur päikesepaneel block.oil-extractor.name = Naftapuur -block.command-center.name = Juhtimiskeskus -block.draug-factory.name = Kaevandusdroonide tehas -block.spirit-factory.name = Parandusdroonide tehas -block.phantom-factory.name = Ehitusdroonide tehas -block.wraith-factory.name = Hävitajate tehas -block.ghoul-factory.name = Pommitajate tehas -block.dagger-factory.name = Soldatite tehas -block.crawler-factory.name = Plahvatajate tehas -block.titan-factory.name = Kalevite tehas -block.fortress-factory.name = Koljatite tehas -block.revenant-factory.name = Ülestõusnute tehas block.repair-point.name = Parandusjaam block.pulse-conduit.name = Titaantoru block.plated-conduit.name = Plated Conduit @@ -1036,6 +1053,19 @@ block.meltdown.name = Valguskiir block.container.name = Hoidla block.launch-pad.name = Stardiplatvorm block.launch-pad-large.name = Suur stardiplatvorm +block.segment.name = Segment +block.ground-factory.name = Ground Factory +block.air-factory.name = Air Factory +block.naval-factory.name = Naval Factory +block.additive-reconstructor.name = Additive Reconstructor +block.multiplicative-reconstructor.name = Multiplicative Reconstructor +block.exponential-reconstructor.name = Exponential Reconstructor +block.tetrative-reconstructor.name = Tetrative Reconstructor +block.mass-conveyor.name = Mass Conveyor +block.payload-router.name = Payload Router +block.disassembler.name = Disassembler +block.silicon-crucible.name = Silicon Crucible +block.large-overdrive-projector.name = Large Overdrive Projector team.blue.name = sinine team.crux.name = punane team.sharded.name = killustunud @@ -1043,21 +1073,7 @@ team.orange.name = oranž team.derelict.name = unustatud team.green.name = roheline team.purple.name = lilla -unit.spirit.name = Parandusdroon -unit.draug.name = Kaevandusdroon -unit.phantom.name = Ehitusdroon -unit.dagger.name = Soldat -unit.crawler.name = Plahvataja -unit.titan.name = Kalev -unit.ghoul.name = Pommitaja -unit.wraith.name = Hävitaja -unit.fortress.name = Koljat -unit.revenant.name = Ülestõusnu -unit.eruptor.name = Tulesülgaja -unit.chaos-array.name = Peninukk -unit.eradicator.name = Luupainaja -unit.lich.name = Tulihänd -unit.reaper.name = Vanapagan + tutorial.next = [lightgray] tutorial.intro = Alustasid[accent] Mindustry mänguõpetusega[].\n[accent]Tuumikust[] väljub sinu [accent]lendmehhaan Ahti[]. Alusta[accent] vase kaevandamisest[]. Selleks liigu tuumiku lähedal asuva vasemaagi juurde ja vajuta sellele.\n\n[accent]{0}/{1} vaske kaevandatud tutorial.intro.mobile = You have entered the[scarlet] Mindustry Tutorial.[]\nSwipe the screen to move.\n[accent]Pinch with 2 fingers [] to zoom in and out.\nBegin by[accent] mining copper[]. Move close to it, then tap a copper ore vein near your core to do this.\n\n[accent]{0}/{1} copper @@ -1100,17 +1116,7 @@ liquid.water.description = Kõige kasulikum vedelik, mida kasutatakse masinate j liquid.slag.description = Erinevate sulametallide segu. Võimalik eraldada koostisesse kuuluvateks mineraalideks või kasutada relvana, pihustades seda vaenlase väeüksustele. liquid.oil.description = Keerukate materjalide tootmisel kasutatav vedelik. Võimalik muundada söeks või kasutada relvana, pihustades seda vaenlase väeüksustele. liquid.cryofluid.description = Inertne mittesöövitav vedelik, mis saadakse veest ja titaanist. Suure soojusmahtuvusega. Kasutatakse masinate jahutamiseks. -unit.draug.description = Algeline droon, mis on mõeldud kaevandamiseks. Odav toota, kuid kulukas ülal pidada. Kaevandab automaatselt vaske ja pliid ning transpordib ressursse lähimasse tuumikusse. -unit.spirit.description = Modifitseeritud kaevandusdroon, mis on mõeldud ehitiste automaatseks parandamiseks. -unit.phantom.description = Täiustatud droon, mis järgneb oma liitlastele ja abistab konstruktsioonide ehitamisel. -unit.dagger.description = Kõige elementaarsem maapealne väeüksus, mida on odav toota. Suured parved käivad vaenlastele üle jõu. -unit.crawler.description = Maapealne väeüksus, mis koosneb lihtsast kerest, millele on kinnitatud lõhkeained. Pole eriti vastupidav. Plahvatab kokkupuutel vaenlasega. -unit.titan.description = Täiustatud ja soomustatud maapealne väeüksus. Ründab nii maapealseid kui ka õhus olevaid sihtmärke. Varustatud kahe miniatuurse leegiheitjaga. -unit.fortress.description = Tugev maapealne väeüksus, mis on relvastatud kahe modifitseeritud kauglaskuriga. Need võimaldavad hõlpsasti rünnata kaugel asuvaid vaenlasi ja nende väeüksusi. -unit.eruptor.description = Tugev maapealne väeüksus, mis on loodud konstruktsioonide hävitamiseks. Pritsib vaenlase ehitisi kuuma räbuga, mis sulatab need ning süütab ümbritsevad lenduvad osakesed. -unit.wraith.description = Kiiresti lendav väeüksus, mis sihib generaatoreid. -unit.ghoul.description = Tugev ja lendav lauspommitav väeüksus. Sööstab vaenlaste ja nende ehitiste kohal, sihtides infrastruktuuri kõige olulisemaid osi. -unit.revenant.description = Vastupidav ja lendav väeüksus raketimassiiviga. + block.message.description = Hoiab endas liitlastele olulist sõnumit. block.graphite-press.description = Surub söekamakaid õhukesteks grafiidilehtedeks. block.multi-press.description = Grafiidipressi täiustatud versioon, mis kasutab vett ja energiat kiiremaks ja tõhusamaks töötlemiseks. @@ -1221,15 +1227,5 @@ block.ripple.description = Äärmiselt võimas kahur, mis tulistab mürske kobar block.cyclone.description = Suur lendavate ja maapealsete väeüksuste vastane kahur, mis tulistab plahvatavaid mürske. block.spectre.description = Massiivne kaheraudne kahur, mis tulistab soomuskatteid läbistavaid mürske nii lendavate kui ka maapealsete väeüksuste pihta. block.meltdown.description = Massiivne laserkahur, mis tekitab püsiva energiakiire. Vajab töötamiseks jahutusvedelikku. -block.command-center.description = Jagab liitlaste väeüksustele käske. Kohustab väeüksusi vaenlase tuumikut ründama, põgenema või patrullima. Kui vaenlaste tuumikut ei ole, siis vaikimisi antakse väeüksustele käsk oodata vaenlaste väeüksuste lähenemist ja rünnata. -block.draug-factory.description = Toodab kaevandusdroone. Kaevandusdroonid on mõeldud baasressursside automaatseks kaevandamiseks. -block.spirit-factory.description = Toodab parandusdroone. Parandusdroonid on mõeldud ehitiste automaatseks parandamiseks. -block.phantom-factory.description = Toodab ehitusdroone. Ehitusdroonid järgnevad oma liitlastele ja abistavad konstruktsioonide ehitamisel. -block.wraith-factory.description = Toodab hävitajate väeüksuseid. Hävitajad on kiiresti lendavad väeüksused. -block.ghoul-factory.description = Toodab pommitajate väeüksuseid. Pommitajad on tugevad ja lendavad lauspommitavad väeüksused. -block.revenant-factory.description = Toodab ülestõusnute väeüksuseid. Ülestõusnud on vastupidavad ja lendavad väeüksused raketimassiiviga. -block.dagger-factory.description = Toodab soldatite väeüksuseid. Soldatid on kõige elementaarsemad maapealsed väeüksused. -block.crawler-factory.description = Toodab plahvatajate väeüksuseid. Plahvatajad on maapealsed väeüksused, mis koosnevad lihtsast kerest, millele on kinnitatud lõhkeained. -block.titan-factory.description = Toodab kalevite väeüksuseid. Kalevid on maapealsed väeüksused, mis on relvastatud kahe miniatuurse leegiheitjaga. -block.fortress-factory.description = Toodab koljatite väeüksuseid. Koljatid on tugevad maapealsed väeüksused, mis on relvastatud kahe modifitseeritud kauglaskuriga. block.repair-point.description = Parandab kõige lähemal asuvat liitlaste väeüksust. +block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. diff --git a/core/assets/bundles/bundle_eu.properties b/core/assets/bundles/bundle_eu.properties index d2bf23c503..27faf063a5 100644 --- a/core/assets/bundles/bundle_eu.properties +++ b/core/assets/bundles/bundle_eu.properties @@ -106,6 +106,7 @@ mods.guide = Mod-ak sortzeko gida mods.report = Eman akatsaren berri mods.openfolder = Ireki Mod-en karpeta mods.reload = Reload +mods.reloadexit = The game will now exit, to reload mods. mod.display = [gray]Mod:[orange] {0} mod.enabled = [lightgray]Gaituta mod.disabled = [scarlet]Desgaituta @@ -124,6 +125,7 @@ mod.reloadrequired = [scarlet]Birkargatu behar da mod.import = Importatu Mod-a mod.import.file = Import File mod.import.github = Inportatu GitHub Mod-a +mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source! mod.item.remove = This item is part of the[accent] '{0}'[] mod. To remove it, uninstall that mod. mod.remove.confirm = Mod hau ezabatuko da. mod.author = [lightgray]Egilea:[] {0} @@ -224,7 +226,6 @@ save.new = Gordetako partida berria save.overwrite = Ziur gordetzeko tarte hau gainidatzi nahi duzula? overwrite = Gainidatzi save.none = Ez da gordetako partidarik aurkitu! -saveload = Gordetzen... savefail = Huts egin du partida gordetzean! save.delete.confirm = Ziur gordetako partida hau ezabatu nahi duzula? save.delete = Ezabatu @@ -272,6 +273,7 @@ quit.confirm.tutorial = Ziur al zaude irten nahi duzula?\nTutoriala berriro hasi loading = [accent]Kargatzen... reloading = [accent]Mod-ak birkargatzen... saving = [accent]Gordetzen... +respawn = [accent][[{0}][] to respawn in core cancelbuilding = [accent][[{0}][] plan bat ezabatzeko selectschematic = [accent][[{0}][] hautatu+kopiatzeko pausebuilding = [accent][[{0}][] eraikiketa eteteko @@ -328,8 +330,9 @@ waves.never = waves.every = maiztasuna waves.waves = bolada waves.perspawn = sorrerako +waves.shields = shields/wave waves.to = - -waves.boss = Nagusia +waves.guardian = Guardian waves.preview = Aurrebista waves.edit = Editatu... waves.copy = Kopiatu arbelera @@ -460,6 +463,7 @@ requirement.unlock = Desblokeatu {0} resume = Berrekin:\n[lightgray]{0} bestwave = [lightgray]Bolada onena: {0} launch = < EGOTZI > +launch.text = Launch launch.title = Ongi egotzi da launch.next = [lightgray]hurrengo aukera\n {0}. boladan launch.unable2 = [scarlet]Ezin da EGOTZI.[] @@ -467,13 +471,13 @@ launch.confirm = Honek zure muinean dauden baliabide guztiak egotziko ditu.\nEzi launch.skip.confirm = Orain ez eginez gero, geroagoko beste bolada batera itxaron beharko duzu. uncover = Estalgabetu configure = Konfiguratu zuzkidura +loadout = Loadout +resources = Resources bannedblocks = Debekatutako blokeak addall = Gehitu denak -configure.locked = [lightgray]Zuzkiduraren konfigurazioa desblokeatzeko: {0} bolada. configure.invalid = Kopurua 0 eta {0} bitarteko zenbaki bat izan behar da. zone.unlocked = [lightgray]{0} desblokeatuta. zone.requirement.complete = {0}. boladara iritsia:\n{1} Eremuaren betebeharra beteta. -zone.config.unlocked = Deskarga desblokeatuta:[lightgray]\n{0} zone.resources = [lightgray]Antzemandako baliabideak: zone.objective = [lightgray]Helburua: [accent]{0} zone.objective.survival = Biziraupena @@ -492,35 +496,29 @@ error.io = Sareko irteera/sarrera errorea. error.any = Sareko errore ezezaguna. error.bloom = Ezin izan da distira hasieratu.\nAgian zure gailuak ez du onartzen. -zone.groundZero.name = Zero eremua -zone.desertWastes.name = Basamortuak -zone.craters.name = Kraterrak -zone.frozenForest.name = Oihan izoztua -zone.ruinousShores.name = Hondamenaren itsasertza -zone.stainedMountains.name = Kutsatutako mendiak -zone.desolateRift.name = Arraila ospela -zone.nuclearComplex.name = Konplexu nuklearra -zone.overgrowth.name = Gehiegizko hazkundea -zone.tarFields.name = Mundrun larreak -zone.saltFlats.name = Gatz zelaiak -zone.impact0078.name = 0078 talka -zone.crags.name = Harkaitzak -zone.fungalPass.name = Onddo mendatea +sector.groundZero.name = Ground Zero +sector.craters.name = The Craters +sector.frozenForest.name = Frozen Forest +sector.ruinousShores.name = Ruinous Shores +sector.stainedMountains.name = Stained Mountains +sector.desolateRift.name = Desolate Rift +sector.nuclearComplex.name = Nuclear Production Complex +sector.overgrowth.name = Overgrowth +sector.tarFields.name = Tar Fields +sector.saltFlats.name = Salt Flats +sector.fungalPass.name = Fungal Pass -zone.groundZero.description = Berriro hasteko kokaleku egokiena.\nBaliabide gutxi daude baina etsaien mehatxua ere txikia da.\nEskuratu ahal beste berun eta kobre.\nSegi aurrera. -zone.frozenForest.description = Hemen ere, mendietatik hurbil, esporak sakabanatu dira. Tenperatura hotzek ez dituzte betirako geldiaraziko.\n\nHasi energia eskuratzeko abentura. Eraiki errekuntza sorgailuak. Ikasi konpontzaileak erabiltzen. -zone.desertWastes.description = Basamortu hauen zabalak dira, ezustekoak, eta abandonaturiko sektore estrukturekin marratuak.\nBadago ikatza eskualde honetan. Erre energiarako, edo grafitoa sintetizatzeko.\n\n[lightgray]Ezin da lurreratze tokia bermatu. -zone.saltFlats.description = Basamortuaren ertza gatz lautadetan datza. Baliabide gutxi aurkitu daitezke hemen.\n\nEtsaiak baliabideen biltegi konplexu bat eraiki du hemen. Suntsitu beraien muina. Ez utzi ezer zutunik. -zone.craters.description = Ura pilatu da krater honetan, gerra zaharren oroigarri bat. Zureganatu eremu hau. Bildu hondarra. Galdatu metabeira. Ponpatu ura dorreak eta zulagailuak hozteko. -zone.ruinousShores.description = Basamortuetatik haratago, itsasertza dago. Aspaldi, kostaldearen defentsarako konplexu bat zegoen hemen. Ez da askorik geratzen. Defentsarako estrukturak oinarrizkoenak besterik ez dira geratu dira salbu, beste guztia txatarrara txikitua dago.\nJarraitu kanporako zabalkundea. Berraurkitu teknologia. -zone.stainedMountains.description = Barnealderantz mendiak daude, esporek oraindik kutsatu gabeak.\nErauzi titanio ugari eremu honetatik. Ikasi nola erabili.\n\nHemen etsaiaren presentzia handiagoa da. Ez eman bere unitate sendoenak bidaltzeko denborarik. -zone.overgrowth.description = Eremu honetan gehiegizko hazkundea dago, esporen sorlekutik hurbilago.\nEtsaiak base aitzindari bat ezarri du hemen. Eraiki titaniozko unitateak eta suntsitu ezazu. Berreskuratu galdu zena. -zone.tarFields.description = Olioa ekoizteko eremu baten kanpoaldea, mendiak eta basamortuen artean. Mundrun erreserba erabilgarriak dituen eremu bakarrenetako bat.\nAbandonatuta badago ere, inguru honetatik hurbil indar etsai arriskutsuak daude. Ez itzazu gutxietsi.\n\n[lightgray]Ikertu olio prozesaketarako teknologia ahal izanez gero. -zone.desolateRift.description = Oso inguru arriskutsua. Baliabide ugari, baina toki gutxi. Suntsitua izateko arrisku handia. Irten ahal bezain laster. Ez zaitzala engainatu etsaien erasoen arteko tarte luzea. -zone.nuclearComplex.description = Torioa ekoiztu eta prozesatzeko instalazio ohiak, hondakinetara txikitua.\n[lightgray]Ikertu torioa eta bere erabilera anitzak.\n\nEtsai ugari daude inguruan, etengabe miatzen erasotzaileen bila. -zone.fungalPass.description = Mendi garaiak eta esporez jositako behe lautaden arteko transizio eremua. Etsaien araketa-base txiki bat dago hemen.\nSuntsitu ezazu.\nErabili Daga eta Ibilkari unitateak. Akabatu bi muinak. -zone.impact0078.description = -zone.crags.description = +sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. +sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. +sector.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. +sector.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. +sector.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. +sector.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units. +sector.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build Titan units. Destroy it. Reclaim that which was lost. +sector.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. +sector.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. +sector.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. +sector.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. settings.language = Hizkuntza settings.data = Jolasaren datuak @@ -537,6 +535,7 @@ settings.clearall.confirm = [scarlet]ABISUA![]\nHonek datu guztiak garbituko dit paused = [accent]< Pausatuta > clear = Garbitu banned = [scarlet]Debekatuta +unplaceable.sectorcaptured = [scarlet]Requires captured sector yes = Bai no = Ez info.title = Informazioa @@ -582,6 +581,8 @@ blocks.reload = Tiroak/segundoko blocks.ammo = Munizioa bar.drilltierreq = Zulagailu hobea behar da +bar.noresources = Missing Resources +bar.corereq = Core Base Required bar.drillspeed = Ustiatze-abiadura: {0}/s bar.pumpspeed = Ponpatze abiadura: {0}/s bar.efficiency = Eraginkortasuna: {0}% @@ -591,11 +592,12 @@ bar.poweramount = Energia: {0} bar.poweroutput = Energia irteera: {0} bar.items = Elementuak: {0} bar.capacity = Edukiera: {0} +bar.unitcap = {0} {1}/{2} +bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled] bar.liquid = Likidoa bar.heat = Beroa bar.power = Energia bar.progress = Eraikitze egoera -bar.spawned = Unitateak: {0}/{1} bar.input = Input bar.output = Output @@ -639,6 +641,7 @@ setting.linear.name = Iragazte lineala setting.hints.name = Pistak setting.flow.name = Display Resource Flow Rate[scarlet] (experimental) setting.buildautopause.name = Auto-Pause Building +setting.mapcenter.name = Auto Center Map To Player setting.animatedwater.name = Animatutako ura setting.animatedshields.name = Animatutako ezkutuak setting.antialias.name = Antialias[lightgray] (berrabiarazi behar da)[] @@ -663,7 +666,6 @@ setting.effects.name = Bistaratze-efektuak setting.destroyedblocks.name = Erakutsi suntsitutako blokeak setting.blockstatus.name = Display Block Status setting.conveyorpathfinding.name = Garraio-zintak kokatzeko bide-bilaketa -setting.coreselect.name = Allow Schematic Cores setting.sensitivity.name = Kontrolagailuaren sentikortasuna setting.saveinterval.name = Gordetzeko tartea setting.seconds = {0} segundo @@ -672,12 +674,15 @@ setting.milliseconds = {0} milliseconds setting.fullscreen.name = Pantaila osoa setting.borderlesswindow.name = Ertzik gabeko leihoa[lightgray] (berrabiaraztea behar lezake) setting.fps.name = Erakutsi FPS +setting.smoothcamera.name = Smooth Camera setting.blockselectkeys.name = Show Block Select Keys setting.vsync.name = VSync setting.pixelate.name = Pixelatu[lightgray] (animazioak desgaitzen ditu) setting.minimap.name = Erakutsi mapatxoa +setting.coreitems.name = Display Core Items (WIP) setting.position.name = Erakutsi jokalariaren kokalekua setting.musicvol.name = Musikaren bolumena +setting.atmosphere.name = Show Planet Atmosphere setting.ambientvol.name = Giroaren bolumena setting.mutemusic.name = Isilarazi musika setting.sfxvol.name = Efektuen bolumena @@ -700,10 +705,13 @@ keybinds.mobile = [scarlet]Tekla konfigurazio gehienak ez dabiltza mugikorrean. category.general.name = Orokorra category.view.name = Bistaratzea category.multiplayer.name = Hainbat jokalari +category.blocks.name = Block Select command.attack = Eraso command.rally = Batu command.retreat = Erretreta placement.blockselectkeys = \n[lightgray]Key: [{0}, +keybind.respawn.name = Respawn +keybind.control.name = Control Unit keybind.clear_building.name = Garrbitu eraikina keybind.press = Sakatu tekla bat... keybind.press.axis = Sakatu ardatza edo tekla... @@ -713,7 +721,7 @@ keybind.toggle_block_status.name = Toggle Block Statuses keybind.move_x.name = Mugitu x keybind.move_y.name = Mugitu y keybind.mouse_move.name = Follow Mouse -keybind.dash.name = Arrapalada +keybind.boost.name = Boost keybind.schematic_select.name = Hautatu eskualdea keybind.schematic_menu.name = Eskema menua keybind.schematic_flip_x.name = Itzulbiratu X @@ -775,30 +783,25 @@ rules.wavetimer = Boladen denboragailua rules.waves = Boladak rules.attack = Eraso modua rules.enemyCheat = IA-k (talde gorriak) baliabide amaigabeak ditu -rules.unitdrops = Unitate-sorrerak +rules.blockhealthmultiplier = Block Health Multiplier +rules.blockdamagemultiplier = Block Damage Multiplier rules.unitbuildspeedmultiplier = Unitateen sorrerarako abiadura-biderkatzailea rules.unithealthmultiplier = Unitateen osasun-biderkatzailea -rules.blockhealthmultiplier = Block Health Multiplier -rules.playerhealthmultiplier = Jokalariaren osasun-biderkatzailea -rules.playerdamagemultiplier = Jokalariaren kalte-biderkatzailea rules.unitdamagemultiplier = Unitateen kalte-biderkatzailea rules.enemycorebuildradius = Etsaien muinaren ez-eraikitze erradioa:[lightgray] (lauzak) -rules.respawntime = Birsortze denbora:[lightgray] (seg) rules.wavespacing = Boladen tartea:[lightgray] (seg) rules.buildcostmultiplier = Eraikitze kostu-biderkatzailea rules.buildspeedmultiplier = Eraikitze abiadura-biderkatzailea rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier rules.waitForWaveToEnd = Atzeratu bolada etsairik geratzen bada rules.dropzoneradius = Erruntze puntuaren erradioa:[lightgray] (lauzak) -rules.respawns = Gehieneko birsortzeak boladako -rules.limitedRespawns = Mugatu birsortzeak +rules.unitammo = Units Require Ammo rules.title.waves = Boladak -rules.title.respawns = Birsortzeak rules.title.resourcesbuilding = Baliabideak eta eraikuntza -rules.title.player = Jokalariak rules.title.enemy = Etsaiak rules.title.unit = Unitateak rules.title.experimental = Experimental +rules.title.environment = Environment rules.lighting = Lighting rules.ambientlight = Ambient Light rules.solarpowermultiplier = Solar Power Multiplier @@ -827,7 +830,6 @@ liquid.water.name = Ura liquid.slag.name = Zepa liquid.oil.name = Olioa liquid.cryofluid.name = Krio-isurkaria -item.corestorable = [lightgray]Storable in Core: {0} item.explosiveness = [lightgray]Lehergarritasuna: {0}% item.flammability = [lightgray]Sukoitasuna: {0}% item.radioactivity = [lightgray]Erradioaktibitatea: {0}% @@ -843,6 +845,32 @@ liquid.heatcapacity = [lightgray]Bero edukiera: {0} liquid.viscosity = [lightgray]Likatasuna: {0} liquid.temperature = [lightgray]Tenperatura: {0} +unit.dagger.name = Daga +unit.mace.name = Mace +unit.fortress.name = Gotorleku +unit.nova.name = Nova +unit.pulsar.name = Pulsar +unit.quasar.name = Quasar +unit.crawler.name = Ibilkaria +unit.atrax.name = Atrax +unit.spiroct.name = Spiroct +unit.arkyid.name = Arkyid +unit.flare.name = Flare +unit.horizon.name = Horizon +unit.zenith.name = Zenith +unit.antumbra.name = Antumbra +unit.eclipse.name = Eclipse +unit.mono.name = Mono +unit.poly.name = Poly +unit.mega.name = Mega +unit.risse.name = Risse +unit.minke.name = Minke +unit.bryde.name = Bryde +unit.alpha.name = Alpha +unit.beta.name = Beta +unit.gamma.name = Gamma + +block.parallax.name = Parallax block.cliff.name = Cliff block.sand-boulder.name = Hondar harkaitza block.grass.name = Belarra @@ -994,17 +1022,6 @@ block.blast-mixer.name = Lehergai nahasgailua block.solar-panel.name = Panel fotovoltaikoa block.solar-panel-large.name = Panel fotovoltaiko handia block.oil-extractor.name = Olio erauzgailua -block.command-center.name = Agindu zentroa -block.draug-factory.name = Daratulu dron zulagailu faktoria -block.spirit-factory.name = Arima dron konpontzaile faktoria -block.phantom-factory.name = Itzala dron eraikitzaile faktoria -block.wraith-factory.name = Iratxo ehiza-hegazkin faktoria -block.ghoul-factory.name = Hilotz-jale bonbaketari faktoria -block.dagger-factory.name = Daga meka faktoria -block.crawler-factory.name = Ibilkari meka faktoria -block.titan-factory.name = Zentoi meka faktoria -block.fortress-factory.name = Gotorleku meka faktoria -block.revenant-factory.name = Mamu ehiza-hegazkin faktoria block.repair-point.name = Konponketa puntua block.pulse-conduit.name = Pultsu hodia block.plated-conduit.name = Plated Conduit @@ -1036,6 +1053,19 @@ block.meltdown.name = Nukleofusio block.container.name = Edukiontzia block.launch-pad.name = Egozketa-plataforma block.launch-pad-large.name = Egozketa-plataforma handia +block.segment.name = Segment +block.ground-factory.name = Ground Factory +block.air-factory.name = Air Factory +block.naval-factory.name = Naval Factory +block.additive-reconstructor.name = Additive Reconstructor +block.multiplicative-reconstructor.name = Multiplicative Reconstructor +block.exponential-reconstructor.name = Exponential Reconstructor +block.tetrative-reconstructor.name = Tetrative Reconstructor +block.mass-conveyor.name = Mass Conveyor +block.payload-router.name = Payload Router +block.disassembler.name = Disassembler +block.silicon-crucible.name = Silicon Crucible +block.large-overdrive-projector.name = Large Overdrive Projector team.blue.name = urdina team.crux.name = gorria team.sharded.name = laranja @@ -1043,21 +1073,7 @@ team.orange.name = laranja team.derelict.name = abandonatua team.green.name = berdea team.purple.name = morea -unit.spirit.name = Arima dron konpontzailea -unit.draug.name = Daratulu dron zulagailua -unit.phantom.name = Itzala dron eraikitzailea -unit.dagger.name = Daga -unit.crawler.name = Ibilkaria -unit.titan.name = Zentoia -unit.ghoul.name = Hilotz-jale bonbaketaria -unit.wraith.name = Iratxo ehiza-hegazkina -unit.fortress.name = Gotorleku -unit.revenant.name = Mamu -unit.eruptor.name = Sumendi -unit.chaos-array.name = Kaos -unit.eradicator.name = Ezerezle -unit.lich.name = Litxe -unit.reaper.name = Segalaria + tutorial.next = [lightgray] tutorial.intro = Hau [scarlet]Mindustry tutoriala[] da.\nHasi [accent]kobrea ustiatzen[]. Horretarako, sakatu zure muinetik hurbil dagoen kobre-mea bat.\n\n[accent]{0}/{1} kobre tutorial.intro.mobile = [scarlet] Mindustry Tutorialean[] sartu zara\nPasatu hatza mugitzeko.\n[accent]Egin atximurkada bi hatzekin [] zooma hurbildu edo urruntzeko.\nHasi[accent] kobrea ustiatuz[]. Hurbildu kobrera, gero sakatu zure muinetik hurbil dagoen kobre mea bat.\n\n[accent]{0}/{1} kobre @@ -1100,17 +1116,7 @@ liquid.water.description = Likido erabilgarriena. Makinen hozgarri gisa eta hond liquid.slag.description = Urtutako mineral desberdinen batura. Bere jatorrizko mineraletara banatu daiteke, edo munizio gisa etsaiei ihinztatu. liquid.oil.description = Material aurreratuen ekoizpenean erabilitako likidoa. Ikatz bihurtu daiteke erregai gisa erabiltzeko, edo arma gisa ihinztatu eta su emanda. liquid.cryofluid.description = Ur eta titanioz egindako likido bizigabe eta ez korrosiboa. Beroa xurgatzeko gaitasun handia du. Hozgarri gisa maiz erabilia. -unit.draug.description = Dron zulagailu traketsa. Ekoizteko merkea. Erabili eta bota daitekeena. Inguruko kobrea eta beruna automatikoki ustiatzen du. Erauzitako baliabideak muin hurbilenera daramatza. -unit.spirit.description = Moldatutako daratulu dron bat, mehatzako ordez konponketak egiteko diseinatua. Inguruko kaltetutako blokeak konpontzen ditu automatikoki. -unit.phantom.description = Dron unitate aurreratu bat. Erabiltzaile jarraitzen du. Eraikuntzan laguntzen du. -unit.dagger.description = Lurreko meka oinarrizkoena. Ekoizteko merkea. Samaldatan erabilia eutsi ezinezkoa. -unit.crawler.description = Gainean lehergailuak daramatzan armazoi biluzi batez osatutako lurreko unitatea. Ez du askorik irauten. Etsaiekin talka egitean eztanda egiten du. -unit.titan.description = Blindatutako lurreko unitate aurreratua. Lurreko zein aireko xedeak erasotzen ditu. Kiskalgarri klaseko bi su-isurle daramatza. -unit.fortress.description = Kanoiteria meka astuna. Moldatutako Txingor motako bi kanoi daramatza etsaiaren azpiegitura eta unitateen irismen luzeko erasoetarako. -unit.eruptor.description = Estrukturak behera botatzeko diseinatutako meka astuna. Zepa jario bat tirokatzen du etsaiaren babesetara, hauek urtuz eta lurrinkorrak sutan jarriz. -unit.wraith.description = Jo eta iheseko unitate harrapari azkarra. Energia sorgailuak ditu xede. -unit.ghoul.description = Azal bonbaketari astuna. Etsaiaren estrukturak urratzen ditu, azpiegitura kritikoa xede duela. -unit.revenant.description = Misil planeatzailedun tramankulu astuna. + block.message.description = Mezu bat gordetzen du. Aliatuen arteko komunikaziorako erabilia. block.graphite-press.description = Ikatz puskak zanpatzen ditu grafito hutsezko xaflak sortuz. block.multi-press.description = Grafito prentsaren bertsio hobetu bat. Ura eta energia behar ditu ikatza azkar eta eraginkorki prozesatzeko. @@ -1221,15 +1227,5 @@ block.ripple.description = Kanoiteria dorre izugarri indartsua. Obus sortak jaur block.cyclone.description = Aire zein lurreko defentsarako dorre handia. Torpedo lehergarrien sortak jaurtitzen dizkie inguruko unitateei. block.spectre.description = Kanoi bikoitz erraldoia. Blindajea zulatu dezaketen bala handiak tirokatzen ditu aireko zein lurreko xedeei. block.meltdown.description = Laser kanoi erraldoia. Etengabeko laser izpi bat kargatu eta jauritzen die inguruko etsaiei. Hozgarria behar du jarduteko. -block.command-center.description = Mugimendu aginduak ematen dizkie mapa osoko unitate aliatuei.\nUnitateei patruilatzea, etsaien muin bat erasotzea edo bere muin edo faktoriara atzera egitea agintzen die. Etsairik ez badago, unitateek lehenetsita patruilatu egingo dute eraso agindupean badaude. -block.draug-factory.description = Daratulu dron zulagailuak ekoizten ditu. -block.spirit-factory.description = Arima konponketarako dron estrukturalak ekoizten ditu. -block.phantom-factory.description = Eraikuntza dron aurreratuak ekoizten ditu. -block.wraith-factory.description = Jo eta iheseko unitate harrapari azkarrak ekoizten ditu. -block.ghoul-factory.description = Azal bonbaketari astunak ekoizten ditu. -block.revenant-factory.description = Misilezko unitate astunak ekoizten ditu. -block.dagger-factory.description = Lurreko oinarrizko unitateak ekoizten ditu. -block.crawler-factory.description = Ibilkari unitate auto-suntsitzaileak ekoizten ditu. -block.titan-factory.description = Lurreko unitate blindatu aurreratuak ekoizten ditu. -block.fortress-factory.description = Lurreko kanoiteria unitate astunak ekoizten ditu. block.repair-point.description = Etengabe konpontzen du inguruko kaltetutako unitate hurbilena. +block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. diff --git a/core/assets/bundles/bundle_fi.properties b/core/assets/bundles/bundle_fi.properties index f9d4f0ce64..65e099623a 100644 --- a/core/assets/bundles/bundle_fi.properties +++ b/core/assets/bundles/bundle_fi.properties @@ -106,11 +106,12 @@ mods.guide = Modaamisopas mods.report = Raportoi ohjelmistovirhe mods.openfolder = Avaa modikansio mods.reload = Reload +mods.reloadexit = The game will now exit, to reload mods. mod.display = [gray]Mod:[orange] {0} mod.enabled = [lightgray]Käytössä mod.disabled = [scarlet]Pois käytöstä mod.disable = Poista käytössä -mod.content = Content: +mod.content = Sisältö: mod.delete.error = Modia ei pystytty poistamaan. Tiedosto voi olla käytössä. mod.requiresversion = [scarlet]Tarvitsee vähintään pelin version: [accent]{0} mod.missingdependencies = [scarlet]Tarvitsee nämä modit: {0} @@ -122,15 +123,16 @@ mod.enable = Käytä mod.requiresrestart = Peli suljetaan jotta muutokset voisivat toteutua. mod.reloadrequired = [scarlet]Vaatii Uudelleenkäynnistystä mod.import = Tuo modi -mod.import.file = Import File +mod.import.file = Tuo tiedosto mod.import.github = Tuo GitHub Modi +mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source! mod.item.remove = Tämä esine on osa[accent] '{0}'[] modia. Poistaaksesi sen, sinun tulee poistaa tuon modin vasennus mod.remove.confirm = Tämä modi poistetaan. -mod.author = [lightgray]Author:[] {0} +mod.author = [lightgray]Tekijä:[] {0} mod.missing = This save contains mods that you have recently updated or no longer have installed. Save corruption may occur. Are you sure you want to load it?\n[lightgray]Mods:\n{0} mod.preview.missing = Before publishing this mod in the workshop, you must add an image preview.\nPlace an image named[accent] preview.png[] into the mod's folder and try again. mod.folder.missing = Only mods in folder form can be published on the workshop.\nTo convert any mod into a folder, simply unzip its file into a folder and delete the old zip, then restart your game or reload your mods. -mod.scripts.disable = Your device does not support mods with scripts. You must disable these mods to play the game. +mod.scripts.disable = Laitteesi ei tue modeja skripteillä. Sinun on sammutettava nämä modit pelataksesi peliä. about.button = Tietoa name = Nimi: @@ -144,13 +146,13 @@ research = Tutki researched = [lightgray]{0} tutkittu. players = {0} pelaajaa paikalla players.single = {0} pelaaja paikalla -players.search = search -players.notfound = [gray]no players found +players.search = etsiä +players.notfound = [gray]pelaajia ei löytynyt. server.closing = [accent]Suljetaan palvelinta... server.kicked.kick = Sinut on potkittu palvelimelta! server.kicked.whitelist = Sinua ei ole lisätty sallittujen luetteloon tällä palvelimella. server.kicked.serverClose = Palvelin suljettu. -server.kicked.vote = Sinut on äänetetty pois. Hyvästi. +server.kicked.vote = Sinut on äänestetty pois. Hyvästi. server.kicked.clientOutdated = Pelisi on vanhentunut! Päivitä se! server.kicked.serverOutdated = Vanhentunut palvelin! Pyydä isäntää päivittämään! server.kicked.banned = Sinulla on portikielto tälle palvelimelle. @@ -168,8 +170,8 @@ host.info = The [accent]host[] button hosts a server on port [scarlet]6567[]. \n join.info = Here, you can enter a [accent]server IP[] to connect to, or discover [accent]local network[] servers to connect to.\nBoth LAN and WAN multiplayer is supported.\n\n[lightgray]Note: There is no automatic global server list; if you want to connect to someone by IP, you would need to ask the host for their IP. hostserver = Pidä yllä monipelaaja peliä invitefriends = Pyydä Ystäviä -hostserver.mobile = Host\nGame -host = Host +hostserver.mobile = Isäntä\nPeli +host = Isäntä hosting = [accent]Avataan palvelinta... hosts.refresh = Päivitä hosts.discovering = Etsitään LAN pelejä @@ -178,9 +180,9 @@ server.refreshing = Päivitetään palvelimen tietoja hosts.none = [lightgray]Paikallisia pelejä ei löytynyt! host.invalid = [scarlet]Isäntään ei voitu yhdistää. -servers.local = Local Servers -servers.remote = Remote Servers -servers.global = Community Servers +servers.local = Paikalliset palvelimet +servers.remote = Etäpalvelimet +servers.global = Yhteisön palvelimet trace = Seuraa pelaajaa trace.playername = Pelaajanimi: [accent]{0} @@ -212,19 +214,18 @@ disconnect = Yhteys katkaistu. disconnect.error = Yhteysvirhe. disconnect.closed = Yhteys poistettu. disconnect.timeout = Yhteys aikakatkaistiin. -disconnect.data = Failed to load world data! -cantconnect = Unable to join game ([accent]{0}[]). -connecting = [accent]Connecting... -connecting.data = [accent]Loading world data... +disconnect.data = Maailman tietojen lataaminen epäonnistui! +cantconnect = Peliin ei voitu liittyä ([accent]{0}[]). +connecting = [accent]Yhdistetään... +connecting.data = [accent]Ladataan maailman tietoja... server.port = Portti: -server.addressinuse = Address already in use! +server.addressinuse = Osoite on jo käytössä! server.invalidport = Invalid port number! server.error = [crimson]Error hosting server: [accent]{0} save.new = Uusi tallennus -save.overwrite = Are you sure you want to overwrite\nthis save slot? -overwrite = Overwrite -save.none = No saves found! -saveload = Tallennetaan... +save.overwrite = Haluatko varmasti korvata \ntämän tallennuspaikan?? +overwrite = Korvata +save.none = Tallennuksia ei löytynyt! savefail = Pelin tallentaminen epäonnistui! save.delete.confirm = Oletko varma että haluat poistaa tämän tallennuksen? save.delete = Poista @@ -263,15 +264,16 @@ copylink = Kopioi linkki back = Takaisin data.export = Vie data data.import = Tuo data -data.openfolder = Open Data Folder +data.openfolder = Avaa datakansio data.exported = Data viety. data.invalid = This isn't valid game data. data.import.confirm = Importing external data will overwrite[scarlet] all[] your current game data.\n[accent]This cannot be undone![]\n\nOnce the data is imported, your game will exit immediately. quit.confirm = Oletko varma että haluat poistua? quit.confirm.tutorial = Are you sure you know what you're doing?\nThe tutorial can be re-taken in[accent] Settings->Game->Re-Take Tutorial.[] loading = [accent]Ladataan... -reloading = [accent]Reloading Mods... +reloading = [accent]Ladataan Modeja... saving = [accent]Tallennetaan... +respawn = [accent][[{0}][] to respawn in core cancelbuilding = [accent][[{0}][] to clear plan selectschematic = [accent][[{0}][] to select+copy pausebuilding = [accent][[{0}][] to pause building @@ -298,19 +300,19 @@ workshop.update = Update Item workshop.error = Error fetching workshop details: {0} map.publish.confirm = Are you sure you want to publish this map?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your maps will not show up! workshop.menu = Select what you would like to do with this item. -workshop.info = Item Info -changelog = Changelog (optional): +workshop.info = Kohteen Tiedot +changelog = Muutosloki (valinnainen): eula = Steam EULA missing = This item has been deleted or moved.\n[lightgray]The workshop listing has now been automatically un-linked. publishing = [accent]Publishing... publish.confirm = Are you sure you want to publish this?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your items will not show up! -publish.error = Error publishing item: {0} +publish.error = Virhe julkaisussa: {0} steam.error = Failed to initialize Steam services.\nError: {0} editor.brush = Sivellin editor.openin = Avaa editorissa -editor.oregen = Ore Generation -editor.oregen.info = Ore Generation: +editor.oregen = Malmien generaatio +editor.oregen.info = Malmien generaatio: editor.mapinfo = Kartan tiedot editor.author = Tekijä: editor.description = Kuvaus: @@ -321,15 +323,16 @@ editor.generation = Generaatio: editor.ingame = Muokka pelin sisällä editor.publish.workshop = Julkaise Workshoppiin editor.newmap = Uusi kartta -workshop = Workshop +workshop = Työpaja waves.title = Tasot waves.remove = Poista waves.never = -waves.every = every -waves.waves = wave(s) +waves.every = jokainen +waves.waves = tasot waves.perspawn = per syntymispiste -waves.to = to -waves.boss = Pomo +waves.shields = shields/wave +waves.to = jotta +waves.guardian = Guardian waves.preview = Esikatselu waves.edit = Muokkaa... waves.copy = Kopioi leikepöydälle @@ -361,7 +364,7 @@ editor.savemap = Tallenna kartta editor.saved = Tallennettu! editor.save.noname = Kartallasi ei ole nimeä! Aseta sellainen 'Kartan tiedot' valikossa. editor.save.overwrite = Your map overwrites a built-in map! Pick a different name in the 'map info' menu. -editor.import.exists = [scarlet]Unable to import:[] a built-in map named '{0}' already exists! +editor.import.exists = [scarlet]Unable to import:[] sisäänrakennettu kartta nimellä '{0}' on jo olemassa! editor.import = Tuo... editor.importmap = Tuo kartta editor.importmap.description = Import an already existing map @@ -374,8 +377,8 @@ editor.exportfile = Vie tiedosto editor.exportfile.description = Export a map file editor.exportimage = Export Terrain Image editor.exportimage.description = Export a map image file -editor.loadimage = Import Terrain -editor.saveimage = Export Terrain +editor.loadimage = Tuoda Maasto +editor.saveimage = Vie Maasto editor.unsaved = [scarlet]Sinulla on tallentamattomia muutoksia![]\nOletko varma että haluat poistua? editor.resizemap = Resize Map editor.mapname = Kartan nimi: @@ -400,31 +403,31 @@ toolmode.drawteams = Draw Teams toolmode.drawteams.description = Draw teams instead of blocks. filters.empty = [lightgray]No filters! Add one with the button below. -filter.distort = Distort -filter.noise = Noise +filter.distort = Vääristää +filter.noise = Melu filter.enemyspawn = Enemy Spawn Select -filter.corespawn = Core Select -filter.median = Median -filter.oremedian = Ore Median -filter.blend = Blend -filter.defaultores = Default Ores -filter.ore = Ore -filter.rivernoise = River Noise -filter.mirror = Mirror -filter.clear = Clear -filter.option.ignore = Ignore +filter.corespawn = Valitse Ydin +filter.median = Mediaani +filter.oremedian = Malmin mediaani +filter.blend = Sekoitus +filter.defaultores = Oletuksena malmit +filter.ore = Malmi +filter.rivernoise = Jokien melu +filter.mirror = Peili +filter.clear = Selkeä +filter.option.ignore = Ohittaa filter.scatter = Scatter -filter.terrain = Terrain -filter.option.scale = Scale -filter.option.chance = Chance -filter.option.mag = Magnitude -filter.option.threshold = Threshold +filter.terrain = Maasto +filter.option.scale = Mittakaava +filter.option.chance = Mahdollisuus +filter.option.mag = Suuruus +filter.option.threshold = Raja filter.option.circle-scale = Circle Scale -filter.option.octaves = Octaves +filter.option.octaves = Oktaavi filter.option.falloff = Falloff -filter.option.angle = Angle -filter.option.amount = Amount -filter.option.block = Block +filter.option.angle = Kulma +filter.option.amount = Määrä +filter.option.block = Estää filter.option.floor = Lattia filter.option.flooronto = Target Floor filter.option.wall = Seinä @@ -443,7 +446,7 @@ load = Lataa save = Tallenna fps = FPS: {0} ping = Ping: {0}ms -language.restart = Please restart your game for the language settings to take effect. +language.restart = Käynnista peli uudelleen, jotta saat kieliasetukset toimimaan. settings = Asetukset tutorial = Perehdytys tutorial.retake = Pelaa perehdytys uudelleen @@ -459,7 +462,8 @@ requirement.core = Tuhoa vihollisen ydin kartassa {0} requirement.unlock = Avaa {0} resume = Resume Zone:\n[lightgray]{0} bestwave = [lightgray]Paras taso: {0} -launch = < LAUNCH > +launch = < LAUKAISE > +launch.text = Launch launch.title = Onnistunut laukaisu launch.next = [lightgray]seuraava mahdollisuus tasolla {0} launch.unable2 = [scarlet]Unable to LAUNCH.[] @@ -467,13 +471,13 @@ launch.confirm = Tämä laukaisee kaikki resurssit ytimestäsi.\nEt voi enää p launch.skip.confirm = Jos ohitat nyt, voit laukaista vasta myöhemmillä tasoilla. uncover = Paljasta configure = Configure Loadout +loadout = Loadout +resources = Resources bannedblocks = Kielletyt Palikat addall = Lisää kaikki -configure.locked = [lightgray]Unlock configuring loadout: Wave {0}. configure.invalid = Amount must be a number between 0 and {0}. zone.unlocked = [lightgray]{0} unlocked. zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met. -zone.config.unlocked = Loadout unlocked:[lightgray]\n{0} zone.resources = [lightgray]Resoursseja havaittu: zone.objective = [lightgray]Objectiivi: [accent]{0} zone.objective.survival = Selviydy @@ -492,35 +496,29 @@ error.io = Network I/O error. error.any = Unknown network error. error.bloom = Failed to initialize bloom.\nYour device may not support it. -zone.groundZero.name = Nollapiste -zone.desertWastes.name = Karu autiomaa -zone.craters.name = Kraatterit -zone.frozenForest.name = Jäätynyt metsä -zone.ruinousShores.name = Tuhoisa ranta -zone.stainedMountains.name = Tahravuoret -zone.desolateRift.name = Autio syvänne -zone.nuclearComplex.name = Ydinvoimakompleksi -zone.overgrowth.name = Liikakasvu -zone.tarFields.name = Tervakentät -zone.saltFlats.name = Suolatasangot -zone.impact0078.name = Törmäys 0078 -zone.crags.name = Kalliot -zone.fungalPass.name = Sienilaakso +sector.groundZero.name = Ground Zero +sector.craters.name = The Craters +sector.frozenForest.name = Frozen Forest +sector.ruinousShores.name = Ruinous Shores +sector.stainedMountains.name = Stained Mountains +sector.desolateRift.name = Desolate Rift +sector.nuclearComplex.name = Nuclear Production Complex +sector.overgrowth.name = Overgrowth +sector.tarFields.name = Tar Fields +sector.saltFlats.name = Salt Flats +sector.fungalPass.name = Fungal Pass -zone.groundZero.description = Suotuisa alue aloittaa peli. Matala vaarataso. Vähän resoursseja.\nKerää mahdollisimman paljon kuparia ja lyijyä.\nJatka eteenpäin. -zone.frozenForest.description = Jopa täällä, lähellä vuoria, asustaa itiöitä. Mutta ne eivöt voi elää ikuisesti jäätävässä ilmastossa.\n\nAloita matkasi energiaan. Rakenna polttogeneraattoreita. Opettele korjaajien käyttö. -zone.desertWastes.description = Valtavia määriä jätteitä ränsityneiden rakennuksien seassa.\nVoit löytää hiiltä. Polta se energiaksi, tai tiivistä siitä grafiittia.\n\n[lightgray]Laskeutumiskohta on epävarma. -zone.saltFlats.description = Aavikoiden reunoilla on suolainen tasanne. Vain vähän resoursse on saatavilla.\n\nVihollinen on rakentanut resurssi hankinnan. Hävitä vihollisen ydin. Älä jätä mitään jäljelle. -zone.craters.description = Vettä on kertynyt tähän kraatteriin vanhojen sotien jäänteinä. Ota alue itsellesi. Kerää hiekkaa. Sulata metallilasia. Pumppaa vettä jäähdyttääksesi kaivausporia ja tykkejä. -zone.ruinousShores.description = Jätteiden takaa, löydät rantaviivan. Kerran täma paikka asutti sotilasjoukkoja. Paljoa jäljella ei ole. Vain perus puolustus rekenteet ovat vahingoittumattomia, kaakki muu on romua.\nJatka laajentamista eteenpäin. Tutki teknologiaa. -zone.stainedMountains.description = Alankoa vuroien sisämaassa, löydät paljon itiöelämää.\nOta talteen runsas titaani jota täältä löytyy. Opi käyttämään sitä.\n\nVihollinen on läasnäoleva. Älä anna heille liikaa aikaa lähettää heidän vahvimpia aseitaan. -zone.overgrowth.description = Tämä alue on ylikasvanut, lähempänä itiöiden pesäkettä.\nVihollinen on muodostanut etuvartion. Rakenna titaani yksikköjä. Tuhoa vihollinen. Hanki se alue joka joskus on menetetty. -zone.tarFields.description = Öljytuotannon laitamia, vuorien ja aavikkojen välissä. Yksi ainoista paikosta joissa on tervalähde.\nLöydät vaarallisia vihollis joukkoja täältä hylätystä paikasta. Älä aliarvio niitä.\n\n[lightgray]Tutki öljyprosessointi mekanismeja jos mahdollista. -zone.desolateRift.description = Extremaalisen vaarallinen alue. Runsaasti resursseja, mutta vain vähän tilaa. Korke riski eliminaatiolle. Lähde mahdollisimman nopeasti. Älä tule huijatuksi pitkien taukojen vihollisten hyökkäyksien vällillä. -zone.nuclearComplex.description = Entinen laitos tehty toriumin tuotantoa ja prosessointia varten, nykyään vain rauniota.\n[lightgray]Tutki toriumin monia hyödyllisiä käyttötarkoituksia.\n\nVihollinen on läsnä isoin joukkoin kokoajan partioimassa tunkeilijoilta. -zone.fungalPass.description = Siirtymis alue korkeiden ja matalien vuorien välillä, itiöiden peitossa. Pieni vihollis tiedustelu tukikohta on täällä. Tuhoa se.\nKäytä Dagger- ja Crawler yksikköjä. Tuhoa kaksi vihollisydintä. -zone.impact0078.description = -zone.crags.description = +sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. +sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. +sector.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. +sector.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. +sector.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. +sector.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units. +sector.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build Titan units. Destroy it. Reclaim that which was lost. +sector.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. +sector.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. +sector.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. +sector.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. settings.language = Kieli settings.data = Peli Data @@ -537,6 +535,7 @@ settings.clearall.confirm = [scarlet]WARNING![]\nTämä poistaa kaiken datan, mu paused = [accent]< Pysäytetty > clear = Tyhjä banned = [scarlet]Kielletty +unplaceable.sectorcaptured = [scarlet]Requires captured sector yes = Kyllä no = Ei info.title = Informaatio @@ -582,6 +581,8 @@ blocks.reload = Ammusta/sekunnissa blocks.ammo = Ammus bar.drilltierreq = Parempi pora vaadittu +bar.noresources = Missing Resources +bar.corereq = Core Base Required bar.drillspeed = Poran nopeus: {0}/s bar.pumpspeed = Pumpun nopeus: {0}/s bar.efficiency = Tehokkuus: {0}% @@ -591,11 +592,12 @@ bar.poweramount = Energia: {0} bar.poweroutput = Energiantuotto: {0} bar.items = Tavaroita: {0} bar.capacity = Kapasiteetti: {0} +bar.unitcap = {0} {1}/{2} +bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled] bar.liquid = Neste bar.heat = Lämpö bar.power = Energia bar.progress = Rakennuksen edistys -bar.spawned = Yksikköjä: {0}/{1} bar.input = Sisääntulo bar.output = Ulostulo @@ -639,6 +641,7 @@ setting.linear.name = Lineaarinen suodatus setting.hints.name = Vihjeet setting.flow.name = Display Resource Flow Rate[scarlet] (experimental) setting.buildautopause.name = Automaattisest Pysäytä Rakentaessa +setting.mapcenter.name = Auto Center Map To Player setting.animatedwater.name = Animoitu vesi setting.animatedshields.name = Animoidut kilvet setting.antialias.name = Antialiaasi[lightgray] (vaatii uudelleenkäynnistyksen)[] @@ -663,7 +666,6 @@ setting.effects.name = Naytön Efektit setting.destroyedblocks.name = Näytä tuhoutuneet palikat setting.blockstatus.name = Display Block Status setting.conveyorpathfinding.name = Conveyor Placement Pathfinding -setting.coreselect.name = Allow Schematic Cores setting.sensitivity.name = Ohjauksen herkkyys setting.saveinterval.name = Tallennuksen Aikaväli setting.seconds = {0} Sekunttia @@ -672,12 +674,15 @@ setting.milliseconds = {0} millisekunttia setting.fullscreen.name = Fullscreen setting.borderlesswindow.name = Borderless Window[lightgray] (vaatii uudelleenkäynnistyksen) setting.fps.name = Näytä FPS +setting.smoothcamera.name = Smooth Camera setting.blockselectkeys.name = Näytä palikan valintaohjaimet setting.vsync.name = VSync setting.pixelate.name = Pixeloi[lightgray] (poistaa animaation käytöstä) setting.minimap.name = Näytä pienoiskartta +setting.coreitems.name = Display Core Items (WIP) setting.position.name = Näytä pelaajan sijainti setting.musicvol.name = Musiikin äänenvoimakkuus +setting.atmosphere.name = Show Planet Atmosphere setting.ambientvol.name = Taustaäänet setting.mutemusic.name = Mykistä musiikki setting.sfxvol.name = SFX-voimakkuus @@ -700,10 +705,13 @@ keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only category.general.name = General category.view.name = View category.multiplayer.name = Moninpeli +category.blocks.name = Block Select command.attack = Hyökkäys command.rally = Kokoontuminen command.retreat = Perääntyminen placement.blockselectkeys = \n[lightgray]Key: [{0}, +keybind.respawn.name = Respawn +keybind.control.name = Control Unit keybind.clear_building.name = Clear Building keybind.press = Press a key... keybind.press.axis = Press an axis or key... @@ -713,7 +721,7 @@ keybind.toggle_block_status.name = Toggle Block Statuses keybind.move_x.name = Move x keybind.move_y.name = Move y keybind.mouse_move.name = Follow Mouse -keybind.dash.name = Dash +keybind.boost.name = Boost keybind.schematic_select.name = Valitse alue keybind.schematic_menu.name = Kaavio Valikko keybind.schematic_flip_x.name = Flip Schematic X @@ -775,30 +783,25 @@ rules.wavetimer = Tasojen aikaraja rules.waves = Tasot rules.attack = Hyökkäystila rules.enemyCheat = Infinite AI (Red Team) Resources -rules.unitdrops = Unit Drops +rules.blockhealthmultiplier = Block Health Multiplier +rules.blockdamagemultiplier = Block Damage Multiplier rules.unitbuildspeedmultiplier = Unit Production Speed Multiplier rules.unithealthmultiplier = Unit Health Multiplier -rules.blockhealthmultiplier = Block Health Multiplier -rules.playerhealthmultiplier = Pelaajan elämäpisteiden kerroin -rules.playerdamagemultiplier = Pelaajan vahingon kerroin rules.unitdamagemultiplier = Unit Damage Multiplier rules.enemycorebuildradius = Enemy Core No-Build Radius:[lightgray] (tiles) -rules.respawntime = Respawn Time:[lightgray] (sec) rules.wavespacing = Wave Spacing:[lightgray] (sec) rules.buildcostmultiplier = Build Cost Multiplier rules.buildspeedmultiplier = Build Speed Multiplier rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier rules.waitForWaveToEnd = Waves wait for enemies rules.dropzoneradius = Drop Zone Radius:[lightgray] (tiles) -rules.respawns = Max respawns per wave -rules.limitedRespawns = Limit Respawns +rules.unitammo = Units Require Ammo rules.title.waves = Waves -rules.title.respawns = Respawns rules.title.resourcesbuilding = Resources & Building -rules.title.player = Players rules.title.enemy = Enemies rules.title.unit = Units rules.title.experimental = Experimental +rules.title.environment = Environment rules.lighting = Lighting rules.ambientlight = Ambient Light rules.solarpowermultiplier = Solar Power Multiplier @@ -827,14 +830,13 @@ liquid.water.name = Vesi liquid.slag.name = Kuona liquid.oil.name = Öljy liquid.cryofluid.name = Kryoneste -item.corestorable = [lightgray]Säilöttävissä ytimeen: {0} item.explosiveness = [lightgray]Räjädysmäisyys: {0}% item.flammability = [lightgray]Syttyvyys: {0}% item.radioactivity = [lightgray]Radioaktiivisuus: {0}% unit.health = [lightgray]Elämäpisteet: {0} unit.speed = [lightgray]Nopeus: {0} unit.weapon = [lightgray]Ammuksia: {0} -unit.itemcapacity = [lightgray]Item Capacity: {0} +unit.itemcapacity = [lightgray]Esine kapasiteetti: {0} unit.minespeed = [lightgray]Mining Speed: {0}% unit.minepower = [lightgray]Mining Power: {0} unit.ability = [lightgray]Ability: {0} @@ -843,6 +845,32 @@ liquid.heatcapacity = [lightgray]Lämpökapasiteetti: {0} liquid.viscosity = [lightgray]Tahmeus: {0} liquid.temperature = [lightgray]Lämpö: {0} +unit.dagger.name = Tikari +unit.mace.name = Mace +unit.fortress.name = Linnoitus +unit.nova.name = Nova +unit.pulsar.name = Pulsar +unit.quasar.name = Quasar +unit.crawler.name = Indeksointirobotti +unit.atrax.name = Atrax +unit.spiroct.name = Spiroct +unit.arkyid.name = Arkyid +unit.flare.name = Flare +unit.horizon.name = Horizon +unit.zenith.name = Zenith +unit.antumbra.name = Antumbra +unit.eclipse.name = Eclipse +unit.mono.name = Mono +unit.poly.name = Poly +unit.mega.name = Mega +unit.risse.name = Risse +unit.minke.name = Minke +unit.bryde.name = Bryde +unit.alpha.name = Alpha +unit.beta.name = Beta +unit.gamma.name = Gamma + +block.parallax.name = Parallax block.cliff.name = Vuoren block.sand-boulder.name = Hiekkalohkare block.grass.name = Ruoho @@ -924,8 +952,8 @@ block.plastanium-wall.name = Plastaniumiseinä block.plastanium-wall-large.name = Suuri plastaniumiseinä block.phase-wall.name = Phase Wall block.phase-wall-large.name = Large Phase Wall -block.thorium-wall.name = Thorium Wall -block.thorium-wall-large.name = Large Thorium Wall +block.thorium-wall.name = Toriumiseinä +block.thorium-wall-large.name = Suuri toriumiseinä block.door.name = Ovi block.door-large.name = Suuri ovi block.duo.name = Duo @@ -994,17 +1022,6 @@ block.blast-mixer.name = Blast Mixer block.solar-panel.name = Aurinkopaneeli block.solar-panel-large.name = Suuri aurinkopaneeli block.oil-extractor.name = Oil Extractor -block.command-center.name = Command Center -block.draug-factory.name = Draug Miner Drone Factory -block.spirit-factory.name = Spirit Repair Drone Factory -block.phantom-factory.name = Phantom Builder Drone Factory -block.wraith-factory.name = Wraith Fighter Factory -block.ghoul-factory.name = Ghoul Bomber Factory -block.dagger-factory.name = Dagger Mech Factory -block.crawler-factory.name = Crawler Mech Factory -block.titan-factory.name = Titan Mech Factory -block.fortress-factory.name = Fortress Mech Factory -block.revenant-factory.name = Revenant Fighter Factory block.repair-point.name = Repair Point block.pulse-conduit.name = Pulse Conduit block.plated-conduit.name = Plated Conduit @@ -1036,6 +1053,19 @@ block.meltdown.name = Sulamispiste block.container.name = Container block.launch-pad.name = Launch Pad block.launch-pad-large.name = Large Launch Pad +block.segment.name = Segment +block.ground-factory.name = Ground Factory +block.air-factory.name = Air Factory +block.naval-factory.name = Naval Factory +block.additive-reconstructor.name = Additive Reconstructor +block.multiplicative-reconstructor.name = Multiplicative Reconstructor +block.exponential-reconstructor.name = Exponential Reconstructor +block.tetrative-reconstructor.name = Tetrative Reconstructor +block.mass-conveyor.name = Mass Conveyor +block.payload-router.name = Payload Router +block.disassembler.name = Disassembler +block.silicon-crucible.name = Silicon Crucible +block.large-overdrive-projector.name = Large Overdrive Projector team.blue.name = sininen team.crux.name = punainen team.sharded.name = orange @@ -1043,21 +1073,7 @@ team.orange.name = oranssi team.derelict.name = derelict team.green.name = vihreä team.purple.name = violetti -unit.spirit.name = Henki-korjausdrooni -unit.draug.name = Kummitus-louhintadrooni -unit.phantom.name = Aave-rakennusdrooni -unit.dagger.name = Tikari -unit.crawler.name = Indeksointirobotti -unit.titan.name = Titan -unit.ghoul.name = Ghoul-pommittaja -unit.wraith.name = Haamu-taistelija -unit.fortress.name = Linnoitus -unit.revenant.name = Revenant -unit.eruptor.name = Eruptor -unit.chaos-array.name = Chaos Array -unit.eradicator.name = Eradicator -unit.lich.name = Lich -unit.reaper.name = Reaper + tutorial.next = [lightgray] tutorial.intro = You have entered the[scarlet] Mindustry Tutorial.[]\nBegin by[accent] mining copper[]. Tap a copper ore vein near your core to do this.\n\n[accent]{0}/{1} copper tutorial.intro.mobile = You have entered the[scarlet] Mindustry Tutorial.[]\nSwipe the screen to move.\n[accent]Pinch with 2 fingers[] to zoom in and out.\nBegin by[accent] mining copper[]. Move close to it, then tap a copper ore vein near your core to do this.\n\n[accent]{0}/{1} copper @@ -1100,17 +1116,7 @@ liquid.water.description = The most useful liquid. Commonly used for cooling mac liquid.slag.description = Various different types of molten metal mixed together. Can be separated into its constituent minerals, or sprayed at enemy units as a weapon. liquid.oil.description = A liquid used in advanced material production. Can be converted into coal as fuel, or sprayed and set on fire as a weapon. liquid.cryofluid.description = An inert, non-corrosive liquid created from water and titanium. Has extremely high heat capacity. Extensively used as coolant. -unit.draug.description = A primitive mining drone. Cheap to produce. Expendable. Automatically mines copper and lead in the vicinity. Delivers mined resources to the closest core. -unit.spirit.description = A modified draug drone, designed for repair instead of mining. Automatically fixes any damaged blocks in the area. -unit.phantom.description = An advanced drone unit. Follows users. Assists in block construction. -unit.dagger.description = The most basic ground mech. Cheap to produce. Overwhelming when used in swarms. -unit.crawler.description = A ground unit consisting of a stripped-down frame with high explosives strapped on top. Not particular durable. Explodes on contact with enemies. -unit.titan.description = An advanced, armored ground unit. Attacks both ground and air targets. Equipped with two miniature Scorch-class flamethrowers. -unit.fortress.description = A heavy artillery mech. Equipped with two modified Hail-type cannons for long-range assault on enemy structures and units. -unit.eruptor.description = A heavy mech designed to take down structures. Fires a stream of slag at enemy fortifications, melting them and setting volatiles on fire. -unit.wraith.description = A fast, hit-and-run interceptor unit. Targets power generators. -unit.ghoul.description = A heavy carpet bomber. Rips through enemy structures, targeting critical infrastructure. -unit.revenant.description = A heavy, hovering missile array. + block.message.description = Stores a message. Used for communication between allies. block.graphite-press.description = Compresses chunks of coal into pure sheets of graphite. block.multi-press.description = An upgraded version of the graphite press. Employs water and power to process coal quickly and efficiently. @@ -1221,15 +1227,5 @@ block.ripple.description = An extremely powerful artillery turret. Shoots cluste block.cyclone.description = A large anti-air and anti-ground turret. Fires explosive clumps of flak at nearby units. block.spectre.description = A massive dual-barreled cannon. Shoots large armor-piercing bullets at air and ground targets. block.meltdown.description = A massive laser cannon. Charges and fires a persistent laser beam at nearby enemies. Requires coolant to operate. -block.command-center.description = Issues movement commands to allied units across the map.\nCauses units to rally, attack an enemy core or retreat to the core/factory. When no enemy core is present, units will default to patrolling under the attack command. -block.draug-factory.description = Produces Draug mining drones. -block.spirit-factory.description = Produces Spirit structural repair drones. -block.phantom-factory.description = Produces advanced construction drones. -block.wraith-factory.description = Produces fast, hit-and-run interceptor units. -block.ghoul-factory.description = Produces heavy carpet bombers. -block.revenant-factory.description = Produces heavy missile-based units. -block.dagger-factory.description = Produces basic ground units. -block.crawler-factory.description = Produces fast self-destructing swarm units. -block.titan-factory.description = Produces advanced, armored ground units. -block.fortress-factory.description = Produces heavy artillery ground units. block.repair-point.description = Continuously heals the closest damaged unit in its vicinity. +block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. diff --git a/core/assets/bundles/bundle_fr.properties b/core/assets/bundles/bundle_fr.properties index 184489dd3b..6fc36fb093 100644 --- a/core/assets/bundles/bundle_fr.properties +++ b/core/assets/bundles/bundle_fr.properties @@ -30,8 +30,8 @@ load.mod = Mods load.scripts = Scripts be.update = Une nouvelle version en développement est disponible: -be.update.confirm = Téléchargez-la et redémarrez maintenant ? -be.updating = Mise à jour... +be.update.confirm = Télécharger et Redémarrer le jeu maintenenant ? +be.updating = Mise à jour en cours... be.ignore = Ignorer be.noupdates = Aucune mise à jour trouvée. be.check = Vérifiez les mises à jour @@ -39,15 +39,15 @@ be.check = Vérifiez les mises à jour schematic = Schéma schematic.add = Sauvegarder le schéma... schematics = Schémas -schematic.replace = Un schéma avec ce nom existe déjà. Remplacer? +schematic.replace = Un schéma avec ce nom existe déjà. Le remplacer? schematic.exists = Un schéma avec ce nom existe déjà. schematic.import = Importer un schéma... schematic.exportfile = Exporter le fichier schematic.importfile = Importer un fichier -schematic.browseworkshop = Consulter le workshop +schematic.browseworkshop = Consulter le Steam Workshop schematic.copy = Copier au presse-papier schematic.copy.import = Importer du presse-papier -schematic.shareworkshop = Partager sur le workshop +schematic.shareworkshop = Partager sur le Steam Workshop schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Retourner le schéma schematic.saved = Schéma sauvegardé. schematic.delete.confirm = Ce schéma sera supprimé définitivement. @@ -69,7 +69,7 @@ map.delete = Êtes-vous certain(e) de vouloir supprimer la carte "[accent]{0}[]" level.highscore = Meilleur score: [accent]{0} level.select = Sélection du niveau level.mode = Mode de jeu: -coreattack = [scarlet] +coreattack = [scarlet]< Le noyau est attaquée! > nearpoint = [[ [scarlet]QUITTEZ LE POINT D'APPARITION ENNEMI IMMÉDIATEMENT[] ]\nannihilation imminente database = Base de données savegame = Sauvegarder la partie @@ -105,32 +105,34 @@ mods.none = [lightgray]Aucun mod trouvé! mods.guide = Guide de Modding mods.report = Signaler un Bug mods.openfolder = Ouvrir le dossier des mods -mods.reload = Reload +mods.reload = Rafraichir +mods.reloadexit = The game will now exit, to reload mods. mod.display = [gray]Mod:[orange] {0} mod.enabled = [lightgray]Activé mod.disabled = [scarlet]Désactivé mod.disable = Désactiver -mod.content = Content: +mod.content = Contenu: mod.delete.error = Impossible de supprimer le mod. Le fichier est probablement en cours d'utilisation. mod.requiresversion = [scarlet]Version du jeu requise : [accent]{0} mod.missingdependencies = [scarlet]Dépendances manquantes: {0} mod.erroredcontent = [scarlet]Erreurs de contenu mod.errors = Des erreurs se sont produites lors du chargement du contenu. -mod.noerrorplay = [scarlet]Vous avez des mods avec erreurs.[] Désactivez les mods concernés ou corrigez les erreurs avant de jouer. +mod.noerrorplay = [scarlet]Vous avez des mods avec des erreurs.[] Désactivez les mods concernés ou corrigez les erreurs avant de jouer. mod.nowdisabled = [scarlet]Le mod '{0}' a des dépendances manquantes:[accent] {1}\n[lightgray]Ces mods doivent d'abord être téléchargés.\nCe mod sera automatiquement désactivé. mod.enable = Activer -mod.requiresrestart = Le jeu va maintenant s'arrêter pour appliquer les modifications du mod. +mod.requiresrestart = Le jeu va maintenant se fermer pour appliquer les modifications du mod. mod.reloadrequired = [scarlet]Rechargement requis mod.import = Importer un mod -mod.import.file = Import File +mod.import.file = Importer un fichier mod.import.github = Importer un mod GitHub +mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source! mod.item.remove = Cet objet fait partie du mod[accent] '{0}'[]. Pour le supprimer, désinstallez le mod en question. mod.remove.confirm = Ce mod sera supprimé. mod.author = [lightgray]Auteur:[] {0} mod.missing = Cette sauvegarde contient des mods que vous avez récemment mis à jour ou que vous avez désinstallés. Votre sauvegarde risque d'être corrompue. Êtes-vous sûr(e) de vouloir l'importer?\n[lightgray]Mods:\n{0} -mod.preview.missing = Avant de publier ce mod dans le workshop, vous devez ajouter une image servant d'aperçu.\nPlacez une image nommée[accent] preview.png[] dans le dossier du mod et réessayez. -mod.folder.missing = Seuls les mods sous forme de dossiers peuvent être publiés sur le Workshop.\nPour convertir n'importe quel mod en un dossier, dézippez-le tout simplement dans un dossier et supprimez l'ancien zip, puis redémarrez votre jeu ou rechargez vos mods. -mod.scripts.disable = Your device does not support mods with scripts. You must disable these mods to play the game. +mod.preview.missing = Avant de publier ce mod dans le Steam Workshop, vous devez ajouter une image servant d'aperçu.\nPlacez une image nommée[accent] preview.png[] dans le dossier du mod et réessayez. +mod.folder.missing = Seuls les mods sous forme de dossiers peuvent être publiés sur le Steam Workshop.\nPour convertir n'importe quel mod en un dossier, dézippez-le tout simplement dans un dossier et supprimez l'ancien zip, puis redémarrez votre jeu ou rechargez vos mods. +mod.scripts.disable = Votre appareil ne supporte pas les mods avec des scripts. Vous devez désactiver ces mods pour jouer. about.button = À propos name = Nom: @@ -151,7 +153,7 @@ server.kicked.kick = Vous avez été expulsé du serveur! server.kicked.whitelist = Vous n'êtes pas sur liste blanche ici. server.kicked.serverClose = Serveur fermé. server.kicked.vote = Vous avez été expulsé suite à un vote. Au revoir. -server.kicked.clientOutdated = Client obsolète! Mettez à votre jeu à jour! +server.kicked.clientOutdated = Client obsolète! Mettez votre jeu à jour! server.kicked.serverOutdated = Serveur obsolète! Demandez à l'hôte de le mettre à jour! server.kicked.banned = Vous avez été banni de ce serveur. server.kicked.typeMismatch = Ce serveur n'est pas compatible avec votre version du jeu. @@ -164,8 +166,8 @@ server.kicked.customClient = Ce serveur ne supporte pas les versions personnalis server.kicked.gameover = Game over! server.kicked.serverRestarting = Le serveur est en train de redémarrer. server.versions = Votre version:[accent] {0}[]\nVersion du serveur:[accent] {1}[] -host.info = Le bouton [accent]Héberger[] héberge un serveur sur le port [scarlet]6567[]. \nN'importe qui sur le même [lightgray]wifi ou réseau local []devrait voir votre serveur sur sa liste des serveurs.\n\nSi vous voulez que les gens puissent s'y connecter de partout à l'aide de votre IP, [accent]le transfert de port (port forwarding)[] est requis.\n\n[lightgray]Note: Si quelqu'un a des problèmes de connexion à votre partie LAN, vérifiez que vous avez autorisé l'accès à Mindustry sur votre réseau local dans les paramètres de votre pare-feu. -join.info = Ici vous pouvez entrer [accent]l'adresse IP d'un serveur []pour s'y connecter, ou découvrir un serveur en [accent]réseau local[].\nLe multijoueur en LAN ainsi qu'en WAN est supporté.\n\n[lightgray]Note: Il n'y a pas de liste de serveurs globaux automatiques; Si vous voulez vous connecter à quelqu'un par IP, il faudra d'abord demander à l'hébergeur leur IP. +host.info = Le bouton [accent]Héberger[] héberge un serveur sur le port [scarlet]6567[]. \nN'importe qui sur le même [lightgray]wifi ou réseau local []devrait voir votre serveur sur sa liste de serveurs.\n\nSi vous voulez que les gens puissent s'y connecter de partout à l'aide de votre IP, [accent]le transfert de port (port forwarding)[] est requis.\n\n[lightgray]Note: Si quelqu'un a des problèmes de connexion à votre partie LAN, vérifiez que vous avez autorisé l'accès à Mindustry sur votre réseau local dans les paramètres de votre pare-feu. +join.info = Ici, vous pouvez entrer [accent]l'adresse IP d'un serveur []pour s'y connecter, ou découvrir un serveur en [accent]réseau local[].\nLe multijoueur en LAN ainsi qu'en WAN est supporté.\n\n[lightgray]Note: Il n'y a pas de liste de serveurs globaux automatiques; Si vous voulez vous connecter à quelqu'un par IP, il faudra d'abord demander à l'hébergeur leur IP. hostserver = Héberger une partie invitefriends = Inviter des Amis hostserver.mobile = Héberger\nune partie @@ -189,7 +191,7 @@ trace.id = ID Unique : [accent]{0} trace.mobile = Client mobile: [accent]{0} trace.modclient = Client personnalisé: [accent]{0} invalidid = ID du client invalide! Veuillez soumettre un rapport d'erreur. -server.bans = Bannis +server.bans = Joueurs Bannis server.bans.none = Aucun joueur banni trouvé! server.admins = Administrateurs server.admins.none = Aucun administrateur trouvé! @@ -224,7 +226,6 @@ save.new = Nouvelle sauvegarde save.overwrite = Êtes-vous sûr de vouloir\n écraser cette sauvegarde ? overwrite = Écraser save.none = Aucune sauvegarde trouvée ! -saveload = Sauvegarde en cours... savefail = Échec de la sauvegarde! save.delete.confirm = Êtes-vous sûr(e) de vouloir supprimer cette sauvegarde? save.delete = Supprimer @@ -252,11 +253,11 @@ save.playtime = Temps de jeu: {0} warning = Avertissement. confirm = Confirmer delete = Supprimer -view.workshop = Voir dans le Workshop -workshop.listing = Éditer le listing du Workshop +view.workshop = Voir dans le Steam Workshop +workshop.listing = Éditer le listing du Steam Workshop ok = OK -open = Ouverture -customize = Personnaliser +open = Ouvrir +customize = Personnaliser les règles cancel = Annuler openlink = Ouvrir le lien copylink = Copier le lien @@ -266,12 +267,13 @@ data.import = Importer les données data.openfolder = Ouvrir le dossier de données data.exported = Données exportées. data.invalid = Ce ne sont pas des données de jeu valides. -data.import.confirm = L'importation des données externes va effacer[scarlet] toutes[] vos actuelles données de jeu.\n[accent]Ceci ne pourra pas être annulé![]\n\nUne fois les données importées, le jeu se fermera immédiatement. +data.import.confirm = L'importation des données externes va effacer[scarlet] toutes[] vos données de jeu actuelles.\n[accent]Ceci ne pourra pas être annulé![]\n\nUne fois les données importées, le jeu se fermera immédiatement. quit.confirm = Êtes-vous sûr de vouloir quitter? -quit.confirm.tutorial = Êtes-vous sur de ce que vous faites?\nLe tutoriel peut être repris dans [accent]Paramètres->Jeu->Reprendre le tutoriel.[] +quit.confirm.tutorial = Êtes-vous sur de ce que vous faites?\nLe tutoriel peut être repris dans [accent]Paramètres->Jeu->Refaire le Tutoriel.[] loading = [accent]Chargement... reloading = [accent]Rechargement des Mods... saving = [accent]Sauvegarde... +respawn = [accent][[{0}][] pour réapparaitre dans le noyau cancelbuilding = [accent][[{0}][] pour effacer le plan selectschematic = [accent][[{0}][] pour sélectionner et copier pausebuilding = [accent][[{0}][] pour mettre la construction en pause @@ -288,24 +290,24 @@ saveimage = Sauvegarder l'image unknown = Inconnu custom = Personnalisé builtin = Intégré -map.delete.confirm = Voulez-vous vraiment supprimer cette carte? Cette action ne peut pas être annulée! +map.delete.confirm = Voulez-vous vraiment supprimer cette carte? Il n'y aura plus de retour en arrière! map.random = [accent]Carte aléatoire map.nospawn = Cette carte n'a pas de base pour qu'un joueur puisse y apparaître! Ajoutez une base[accent] orange[] sur cette carte dans l'éditeur. map.nospawn.pvp = Cette carte n'a pas de base ennemie pour qu'un joueur ennemi puisse y apparaître! Ajoutez au moins une base [scarlet] non-orange[] dans l'éditeur. map.nospawn.attack = Cette carte n'a aucune base ennemie à attaquer! Veuillez ajouter une base[scarlet] rouge[] sur cette carte dans l'éditeur. map.invalid = Erreur lors du chargement de la carte: carte corrompue ou invalide. workshop.update = Mettre à jour -workshop.error = Erreur lors de la récupération des détails du Workshop: {0} -map.publish.confirm = Êtes-vous sûr(e) de vouloir publier cette carte?\n\n[lightgray]Assurez-vous d’accepter d’abord les CGU du Workshop, sinon vos cartes ne seront pas affichées! +workshop.error = Erreur lors de la récupération des détails du Steam Workshop: {0} +map.publish.confirm = Êtes-vous sûr(e) de vouloir publier cette carte?\n\n[lightgray]Assurez-vous d’accepter d’abord les CGU du Steam Workshop, sinon vos cartes ne seront pas affichées! workshop.menu = Sélectionnez ce que vous souhaitez faire avec cet élément. workshop.info = Infos sur l'élément changelog = Journal des changements (optionnel): eula = CGU de Steam -missing = Cet élément a été supprimé ou déplacé.\n[lightgray]Le listing du workshop a maintenant été automatiquement dissocié. +missing = Cet élément a été supprimé ou déplacé.\n[lightgray]Le listing du Steam Workshop a maintenant été automatiquement dissocié. publishing = [accent]Publication... publish.confirm = Êtes-vous sûr de vouloir publier ceci ?\n\n[lightgray]Assurez-vous d'être d'abord d'accord avec les CGU du workshop, sinon vos éléments n'apparaîtront pas ! publish.error = Erreur de publication de l'élément: {0} -steam.error = Echec d'initialisation des services Steam.\nError: {0} +steam.error = Échec d'initialisation des services Steam.\nError: {0} editor.brush = Pinceau editor.openin = Ouvrir dans l'éditeur @@ -321,15 +323,16 @@ editor.generation = Génération: editor.ingame = Éditer dans le jeu editor.publish.workshop = Publier sur le Workshop editor.newmap = Nouvelle carte -workshop = Workshop +workshop = Steam Workshop waves.title = Vagues waves.remove = Supprimer waves.never = waves.every = tous les waves.waves = vague(s) waves.perspawn = par apparition +waves.shields = boucliers/vague waves.to = à -waves.boss = Boss +waves.guardian = Gardien waves.preview = Prévisualiser waves.edit = Modifier... waves.copy = Copier dans le presse-papiers @@ -350,7 +353,7 @@ editor.errorimage = Ceci est une image, et non une carte.\n\nSi vous voulez impo editor.errorlegacy = Cette carte est trop ancienne, et utilise un format de carte qui n'est plus supporté. editor.errornot = Ceci n'est pas un fichier de carte. editor.errorheader = Le fichier de carte est invalide ou corrompu. -editor.errorname = La carte n'a pas de nom, essayez-vous de charger une sauvegarde? +editor.errorname = La carte n'a pas de nom. Essayez-vous de charger une sauvegarde? editor.update = Mettre à jour editor.randomize = Rendre aléatoire editor.apply = Appliquer @@ -386,7 +389,7 @@ editor.selectmap = Sélectionnez une carte: toolmode.replace = Remplacer toolmode.replace.description = Dessiner seulement sur les blocs solides. -toolmode.replaceall = Tout remplacer +toolmode.replaceall = Tout Remplacer toolmode.replaceall.description = Remplace tous les blocs de la carte. toolmode.orthogonal = Orthogonal toolmode.orthogonal.description = Dessine seulement des lignes orthogonales. @@ -402,8 +405,8 @@ toolmode.drawteams.description = Dessine les équipes au lieu de blocs. filters.empty = [lightgray]Aucun filtre! Ajoutez-en un avec les boutons ci-dessous. filter.distort = Déformation filter.noise = Bruit -filter.enemyspawn = Enemy Spawn Select -filter.corespawn = Core Select +filter.enemyspawn = Zone d'apparition enemi +filter.corespawn = Zone d'apparition du noyau filter.median = Médian filter.oremedian = Minerai Médian filter.blend = Fusion @@ -423,7 +426,7 @@ filter.option.circle-scale = Gamme du cercle filter.option.octaves = Octaves filter.option.falloff = Diminution filter.option.angle = Angle -filter.option.amount = Amount +filter.option.amount = Quantité filter.option.block = Bloc filter.option.floor = Sol filter.option.flooronto = Sol en question @@ -459,21 +462,22 @@ requirement.core = Détruire le Noyau ennemi dans {0} requirement.unlock = Débloque {0} resume = Reprendre la partie:\n[lightgray]{0} bestwave = [lightgray]Meilleur: {0} -launch = < Lancement > -launch.title = Lancement réussi -launch.next = [lightgray]Prochaine opportunité à la vague {0} -launch.unable2 = [scarlet]Lancement impossible.[] +launch = < LANCEMENT > +launch.text = Launch +launch.title = Lancement Réussi +launch.next = [lightgray]prochaine opportunité à la vague {0} +launch.unable2 = [scarlet]LANCEMENT impossible.[] launch.confirm = Cela va transférer toutes les ressources de votre noyau.\nVous ne pourrez plus retourner à cette base. launch.skip.confirm = Si vous passez à la vague suivante, vous ne pourrez pas effectuer le lancement avant les prochaines vagues. uncover = Découvrir -configure = Modifier les ressources emportées. -bannedblocks = Blocs bannis -addall = Ajouter tous -configure.locked = [lightgray]Déloquer la configuration des ressources emportées: {0}. +configure = Modifier les ressources à emporter +loadout = Loadout +resources = Resources +bannedblocks = Blocs Bannis +addall = Ajouter TOUS configure.invalid = Le montant doit être un nombre compris entre 0 et {0}. -zone.unlocked = [lightgray]{0} Débloquée. +zone.unlocked = [lightgray]{0} débloquée. zone.requirement.complete = Exigences pour {0} complétées:[lightgray]\n{1} -zone.config.unlocked = Configuration des ressources à emporter débloquée:[lightgray]\n{0} zone.resources = [lightgray]Ressources détectées: zone.objective = [lightgray]Objectif: [accent]{0} zone.objective.survival = Survivre @@ -484,43 +488,37 @@ boss.health = Santé du Boss connectfail = [crimson]Échec de la connexion au serveur :\n\n[accent]{0} error.unreachable = Serveur injoignable.\nL'adresse IP est-elle correcte? error.invalidaddress = Adresse invalide. -error.timedout = Délai de connexion dépassé!\nAssurez-vous que l'hôte a autorisé l'accès au port (port forwarding), et que l'adresse est correcte! +error.timedout = Délai de connexion expiré!\nAssurez-vous que l'hôte a autorisé l'accès au port (port forwarding) et que l'adresse est correcte! error.mismatch = Erreur de paquet:\nPossible différence de version entre le client et le serveur .\nVérifiez que vous et l'hôte avez la version de Mindustry la plus récente! -error.alreadyconnected = Déjà connecté. +error.alreadyconnected = Déjà connecté(e). error.mapnotfound = Carte introuvable! error.io = Erreur de Réseau (I/O) error.any = Erreur réseau inconnue error.bloom = Échec de l'initialisation du flou lumineux.\nVotre appareil peut ne pas le supporter. -zone.groundZero.name = Première Bataille -zone.desertWastes.name = Désert Sauvage -zone.craters.name = Cratères -zone.frozenForest.name = Forêt Glaciale -zone.ruinousShores.name = Rives en Ruine -zone.stainedMountains.name = Montagnes Tachetées -zone.desolateRift.name = Ravin Abandonné -zone.nuclearComplex.name = Complexe Nucléaire -zone.overgrowth.name = Friche Végétale -zone.tarFields.name = Champs de Pétrole -zone.saltFlats.name = Marais Salants -zone.impact0078.name = Impact 0078 -zone.crags.name = Rochers -zone.fungalPass.name = Passe Fongique +sector.groundZero.name = Ground Zero +sector.craters.name = The Craters +sector.frozenForest.name = Frozen Forest +sector.ruinousShores.name = Ruinous Shores +sector.stainedMountains.name = Stained Mountains +sector.desolateRift.name = Desolate Rift +sector.nuclearComplex.name = Nuclear Production Complex +sector.overgrowth.name = Overgrowth +sector.tarFields.name = Tar Fields +sector.saltFlats.name = Salt Flats +sector.fungalPass.name = Fungal Pass -zone.groundZero.description = L'emplacement optimal pour débuter. Faible menace ennemie. Peu de ressources. \nRecueillez autant de plomb et de cuivre que possible.\nRien d'autre à signaler. -zone.frozenForest.description = Même ici, plus près des montagnes, les spores se sont propagées. Les températures glaciales ne pourront pas les contenir pour toujours.\n\nFamiliarisez vous avec l'Énergie. Construisez des générateurs à combustion. Apprenez à utiliser les réparateurs. -zone.desertWastes.description = Cette étendue désertique est immense, imprévisible. On y croise des structures abandonnées.\nLe charbon est présent dans la région. Brûlez-le pour générer de l'Énergie ou synthétisez-le en graphite.\n\n[lightgray]Ce lieu d'atterrisage est imprévisible. -zone.saltFlats.description = Aux abords du désert se trouvent les Marais Salants. Peu de ressources peuvent être trouvées à cet endroit.\n\nL'ennemi y a érigé un stockage de ressources. Éradiquez leur présence. -zone.craters.description = L'eau s'est accumulée dans ce cratère, vestige des guerres anciennes. Récupérez la zone. Recueillez du sable pour le transformer en verre trempé. Pompez de l'eau pour refroidir les tourelles et les foreuses. -zone.ruinousShores.description = Passé les contrées désertiques, c'est le rivage. Auparavant, cet endroit a abrité un réseau de défense côtière. Il n'en reste pas grand chose. Seules les structures de défense les plus élémentaires sont restées indemnes, tout le reste ayant été réduit à néant.\nÉtendez vous. Redécouvrez la technologie. -zone.stainedMountains.description = A l'intérieur des terres se trouvent des montagnes, épargnées par les spores. Extrayez le titane qui abonde dans cette région. Apprenez à vous en servir. La menace ennemie se fait plus présente ici. Ne leur donnez pas le temps de rallier leurs puissantes unités. -zone.overgrowth.description = Cette zone est envahie par la végétation, et proche de la source des spores.\nL’ennemi a établi une base ici. Construisez des unités Titan pour le détruire. Reprenez ce qui a été perdu. -zone.tarFields.description = La périphérie d'une zone de puits pétroliers, entre montagnes et désert. Une des rares zones disposant de réserves de pétrole utilisables. Bien qu'abandonnée, cette zone compte des forces ennemies dangereuses à proximité. Ne les sous-estimez pas.\n\n[lightgray]Si possible, recherchez les technologies de traitement du pétrole. -zone.desolateRift.description = Une zone extrêmement dangereuse. Ressources abondantes, mais peu d'espace. Fort risque de destruction. Repartez le plus vite possible. Ne vous laissez pas berner par l'espacement des vagues ennemies... -zone.nuclearComplex.description = Une ancienne installation de production et traitement de thorium réduite en ruines.\n[lightgray]Faites des recherches sur le thorium et ses nombreuses utilisations.\n\nL'ennemi est présent ici en grand nombre, constamment à l'affût. -zone.fungalPass.description = Une zone de transition entre les hautes montagnes et les basses régions infestées de spores. Une petite base de reconnaissance ennemie s'y trouve.\nDétruisez-la.\nUtilisez les unités Poignards et Rampeurs. Détruisez les deux noyaux. -zone.impact0078.description = -zone.crags.description = +sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. +sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. +sector.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. +sector.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. +sector.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. +sector.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units. +sector.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build Titan units. Destroy it. Reclaim that which was lost. +sector.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. +sector.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. +sector.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. +sector.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. settings.language = Langue settings.data = Données du Jeu @@ -537,12 +535,13 @@ settings.clearall.confirm = [scarlet]ATTENTION![]\nCette action effacera toutes paused = [accent]< Pause > clear = Effacer banned = [scarlet]Bannis +unplaceable.sectorcaptured = [scarlet]Nécessite la capture du secteur yes = Oui no = Non info.title = Info error.title = [crimson]Une erreur s'est produite error.crashtitle = Une erreur s'est produite -unit.nobuild = [scarlet]Unit can't build +unit.nobuild = [scarlet]Cette unité ne peut construire blocks.input = Entrée blocks.output = Sortie blocks.booster = Booster @@ -564,7 +563,7 @@ blocks.powerconnections = Nombre maximal de connections blocks.poweruse = Énergie utilisée blocks.powerdamage = Dégâts d'énergie blocks.itemcapacity = Stockage -blocks.basepowergeneration = Taux d'énergie normale +blocks.basepowergeneration = Production d'énergie blocks.productiontime = Durée de production blocks.repairtime = Durée de réparation complète du Bloc blocks.speedincrease = Accélération @@ -581,7 +580,9 @@ blocks.shots = Tirs blocks.reload = Tirs/Seconde blocks.ammo = Munitions -bar.drilltierreq = Foreuse Améliorée Requise +bar.drilltierreq = Meilleure Foreuse Requise +bar.noresources = Missing Resources +bar.corereq = Core Base Required bar.drillspeed = Vitesse de Forage: {0}/s bar.pumpspeed = Vitesse de Pompage: {0}/s bar.efficiency = Efficacité: {0}% @@ -591,11 +592,12 @@ bar.poweramount = Énergie: {0} bar.poweroutput = Énergie Produite: {0} bar.items = Objets: {0} bar.capacity = Capacité: {0} +bar.unitcap = {0} {1}/{2} +bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled] bar.liquid = Liquide bar.heat = Chaleur bar.power = Énergie bar.progress = Progression de la construction -bar.spawned = Unités: {0}/{1} bar.input = Entrée bar.output = Sortie @@ -604,7 +606,7 @@ bullet.splashdamage = [stat]{0}[lightgray] dégâts de zone ~[stat] {1}[lightgra bullet.incendiary = [stat]incendiaire bullet.homing = [stat]autoguidé bullet.shock = [stat]choc électrique -bullet.frag = [stat]explose +bullet.frag = [stat]explosif bullet.knockback = [stat]{0}[lightgray] recul bullet.freezing = [stat]gel bullet.tarred = [stat]goudronné @@ -630,20 +632,21 @@ category.power = Énergie category.liquids = Liquides category.items = Objets category.crafting = Fabrication -category.shooting = Défense +category.shooting = Puissance de feu category.optional = Améliorations optionnelles setting.landscape.name = Verrouiller en rotation paysage setting.shadows.name = Ombres -setting.blockreplace.name = Suggestions automatiques de blocs +setting.blockreplace.name = Suggestions Automatiques de Blocs setting.linear.name = Filtrage Linéaire setting.hints.name = Astuces -setting.flow.name = Display Resource Flow Rate[scarlet] (experimental) -setting.buildautopause.name = Pause Automatique de la Construction +setting.flow.name = Afficher le Débit des Ressources +setting.buildautopause.name = Confirmation avant la construction +setting.mapcenter.name = Auto Center Map To Player setting.animatedwater.name = Eau animée setting.animatedshields.name = Boucliers Animés -setting.antialias.name = Antialias[lightgray] (redémarrage du jeu nécessaire)[] -setting.playerindicators.name = Player Indicators -setting.indicators.name = Indicateurs Alliés/Ennemis +setting.antialias.name = Anticrénelage[lightgray] (redémarrage du jeu nécessaire)[] +setting.playerindicators.name = Indicateurs des Joueurs +setting.indicators.name = Indicateurs des Ennemis setting.autotarget.name = Visée automatique setting.keyboard.name = Contrôles Souris+Clavier setting.touchscreen.name = Commandes d'écran tactile @@ -658,41 +661,43 @@ setting.difficulty.normal = Normal setting.difficulty.hard = Difficile setting.difficulty.insane = Extrême setting.difficulty.name = Difficulté: -setting.screenshake.name = Tremblement de l'écran -setting.effects.name = Afficher les effets -setting.destroyedblocks.name = Afficher les blocs détruits -setting.blockstatus.name = Display Block Status -setting.conveyorpathfinding.name = Recherche de chemin pour le placement de convoyeurs -setting.coreselect.name = Autoriser les schémas contenant des Noyaux +setting.screenshake.name = Tremblement de l'Écran +setting.effects.name = Afficher les Effets +setting.destroyedblocks.name = Afficher les Blocs Détruits +setting.blockstatus.name = Afficher le Statut des Blocs +setting.conveyorpathfinding.name = Auto-placement Intelligent des Convoyeurs setting.sensitivity.name = Sensibilité de la manette -setting.saveinterval.name = Intervalle des sauvegardes automatiques +setting.saveinterval.name = Intervalle des Sauvegardes Automatiques setting.seconds = {0} secondes setting.blockselecttimeout.name = Délai d'Attente de Sélection de Bloc setting.milliseconds = {0} millisecondes setting.fullscreen.name = Plein Écran setting.borderlesswindow.name = Fenêtre sans bords (Borderless)[lightgray] (peut nécessiter le redémarrage du jeu) -setting.fps.name = Afficher FPS -setting.blockselectkeys.name = Afficher les Touches de Sélection de Bloc +setting.fps.name = Afficher FPS et Ping +setting.smoothcamera.name = Lissage de la Caméra +setting.blockselectkeys.name = Afficher les Touches pour Sélectionner les Blocs avec un Clavier setting.vsync.name = VSync setting.pixelate.name = Pixeliser[lightgray] (désactive les animations) setting.minimap.name = Afficher la Minimap +setting.coreitems.name = Display Core Items (WIP) setting.position.name = Afficher la position du joueur setting.musicvol.name = Volume Musique +setting.atmosphere.name = Son atmosphérique de la planète setting.ambientvol.name = Volume Ambiant setting.mutemusic.name = Couper la Musique setting.sfxvol.name = Volume des Effets Spéciaux -setting.mutesound.name = Couper les Effets Spéciaux Sonores -setting.crashreport.name = Envoyer un Rapport de Crash Anonyme +setting.mutesound.name = Couper le son des Effets Spéciaux +setting.crashreport.name = Envoyer des Rapports de Crash anonymes setting.savecreate.name = Sauvegardes Automatiques setting.publichost.name = Visibilité de la Partie Publique -setting.playerlimit.name = Limite de joueurs +setting.playerlimit.name = Limite de Joueurs setting.chatopacity.name = Opacité du Chat setting.lasersopacity.name = Opacité des Connections Laser -setting.bridgeopacity.name = Bridge Opacity -setting.playerchat.name = Montrer le Chat -public.confirm = Voulez-vous rendre votre partie publique?\n[accent]N'importe qui pourra rejoindre vos parties.\n[lightgray]Ce paramètre peut être changé plus tard dans Paramètres->Jeu->Visibilité de la Partie Publique +setting.bridgeopacity.name = Opacité des ponts +setting.playerchat.name = Montrer les bulles de discussion des joueurs +public.confirm = Voulez-vous rendre votre partie publique?\n[accent]N'importe qui pourrait rejoindre vos parties.\n[lightgray]Ce paramètre peut être changé plus tard dans Paramètres->Jeu->Visibilité de la Partie Publique public.beta = Notez que les versions bêta du jeu ne peuvent pas créer des salons publics. -uiscale.reset = L'échelle de l'interface a été modifiée.\nAppuyez sur "OK" pour confirmer.\n[scarlet]Rétablissement aux paramètres d'avant et fermeture dans [accent] {0}[]... +uiscale.reset = L'échelle de l'interface a été modifiée.\nAppuyez sur "OK" pour confirmer.\n[scarlet]Rétablissement des paramètres d'avant et fermeture dans [accent] {0}[]... uiscale.cancel = Annuler & Quitter setting.bloom.name = Flou lumineux keybind.title = Raccourcis Clavier @@ -700,24 +705,27 @@ keybinds.mobile = [scarlet]La plupart des raccourcis clavier ne sont pas fonctio category.general.name = Général category.view.name = Voir category.multiplayer.name = Multijoueur +category.blocks.name = Block Select command.attack = Attaque command.rally = Rassembler command.retreat = Retraite placement.blockselectkeys = \n[lightgray]Touche: [{0}, +keybind.respawn.name = Réapparaitre +keybind.control.name = Controler une Unité keybind.clear_building.name = Effacer les constructions -keybind.press = Appuyer sur une touche... -keybind.press.axis = Appuyer sur un axe ou une touche... +keybind.press = Appuyez sur une touche... +keybind.press.axis = Appuyez sur un axe ou une touche... keybind.screenshot.name = Capture d'écran -keybind.toggle_power_lines.name = Montrer/Cacher les connections d'Énergie -keybind.toggle_block_status.name = Toggle Block Statuses +keybind.toggle_power_lines.name = Montrer/Cacher les Connections d'Énergie +keybind.toggle_block_status.name = Montrer/Cacher les Status des Blocs keybind.move_x.name = Mouvement X keybind.move_y.name = Mouvement Y keybind.mouse_move.name = Suivre la Souris -keybind.dash.name = Sprint -keybind.schematic_select.name = Sélectionner une région +keybind.boost.name = Boost +keybind.schematic_select.name = Sélectionner une Région keybind.schematic_menu.name = Menu des schémas -keybind.schematic_flip_x.name = Retourner le schéma sur l'axe X -keybind.schematic_flip_y.name = Retourner le schéma sur l'axe Y +keybind.schematic_flip_x.name = Retourner le schéma sur l'axe des X +keybind.schematic_flip_y.name = Retourner le schéma sur l'axe des Y keybind.category_prev.name = Catégorie Précédente keybind.category_next.name = Catégorie Suivante keybind.block_select_left.name = Sélectionner Bloc de Gauche @@ -741,7 +749,7 @@ keybind.pick.name = Choisir un bloc keybind.break_block.name = Supprimer un bloc keybind.deselect.name = Désélectionner keybind.shoot.name = Tirer -keybind.zoom.name = Zoom +keybind.zoom.name = Zoomer keybind.menu.name = Menu keybind.pause.name = Pause keybind.pause_building.name = Pauser/Reprendre la construction @@ -750,7 +758,7 @@ keybind.chat.name = Chat keybind.player_list.name = Liste des Joueurs keybind.console.name = Console keybind.rotate.name = Tourner -keybind.rotateplaced.name = Tourner existant (maintenir) +keybind.rotateplaced.name = Tourner un bloc existant (maintenir) keybind.toggle_menus.name = Cacher/Afficher les Menus keybind.chat_history_prev.name = Remonter l'Historique du Chat keybind.chat_history_next.name = Descendre l'Historique du Chat @@ -759,10 +767,10 @@ keybind.drop_unit.name = Larguer l'unité keybind.zoom_minimap.name = Zoom Minimap mode.help.title = Description des modes de jeu mode.survival.name = Survie -mode.survival.description = Le mode normal. Ressources limitées et vagues automatiques.\n[gray]Nécessite un point d'apparition pour les ennemis. +mode.survival.description = Le mode normal. Ressources limitées et vagues d'Ennemis automatiques.\n[gray]Nécessite un point d'apparition ennemi pour y jouer. mode.sandbox.name = Bac à sable mode.sandbox.description = Ressources infinies et pas de minuterie pour les vagues. -mode.editor.name = Editeur +mode.editor.name = Éditeur mode.pvp.name = PvP mode.pvp.description = Battez-vous contre d'autres joueurs en local.\n[gray]Requiert aux moins 2 noyaux de couleurs différentes dans la carte pour y jouer. mode.attack.name = Attaque @@ -773,35 +781,30 @@ rules.infiniteresources = Ressources infinies rules.reactorexplosions = Explosion des Réacteurs rules.wavetimer = Minuterie pour les vagues rules.waves = Vagues -rules.attack = Mode d'Attaque -rules.enemyCheat = Ressources infinies pour l'IA -rules.unitdrops = Drops des unités +rules.attack = Mode « Attaque » +rules.enemyCheat = Ressources infinies pour l'IA (équipe rouge) +rules.blockhealthmultiplier = Multiplicateur de Santé des Blocs +rules.blockdamagemultiplier = Multiplicateur de Dégât des Blocs rules.unitbuildspeedmultiplier = Multiplicateur de Vitesse de Construction d'Unités rules.unithealthmultiplier = Multiplicateur de Santé des Unités -rules.blockhealthmultiplier = Multiplicateur de Santé de Bloc -rules.playerhealthmultiplier = Multiplicateur de Santé des Joueurs -rules.playerdamagemultiplier = Multiplicateur des Dégâts Joueurs -rules.unitdamagemultiplier = Multiplicateur des dégâts Unité -rules.enemycorebuildradius = Périmètre de non-construction du noyau ennemi:[lightgray] (blocs) -rules.respawntime = Durée de réapparition:[lightgray] (sec) +rules.unitdamagemultiplier = Multiplicateur de Dégât des Unités +rules.enemycorebuildradius = Périmètre de non-construction autour du noyau ennemi:[lightgray] (blocs) rules.wavespacing = Espacement des vagues:[lightgray] (sec) rules.buildcostmultiplier = Multiplicateur du prix de construction rules.buildspeedmultiplier = Multiplicateur du temps de construction rules.deconstructrefundmultiplier = Multiplicateur du remboursement lors de la déconstruction -rules.waitForWaveToEnd = Les vagues attendent la mort des ennemis -rules.dropzoneradius = Rayon d'apparition des ennemis:[lightgray] (tuiles) -rules.respawns = Réapparitions max par vagues -rules.limitedRespawns = Limiter les réapparitions +rules.waitForWaveToEnd = Les Vagues Attendent la Mort des Ennemis +rules.dropzoneradius = Rayon d'Apparition des Ennemis:[lightgray] (tuiles) +rules.unitammo = Les Unités Nécessitent des Munitions rules.title.waves = Vagues -rules.title.respawns = Réapparitions rules.title.resourcesbuilding = Ressources & Construction -rules.title.player = Joueurs rules.title.enemy = Ennemis rules.title.unit = Unités rules.title.experimental = Expérimental +rules.title.environment = Environment rules.lighting = Éclairage rules.ambientlight = Éclairage Ambiant -rules.solarpowermultiplier = Multiplicateur d'énergie solaire +rules.solarpowermultiplier = Multiplicateur d'Énergie Solaire content.item.name = Objets content.liquid.name = Liquides @@ -827,32 +830,57 @@ liquid.water.name = Eau liquid.slag.name = Scories liquid.oil.name = Pétrole liquid.cryofluid.name = Liquide Cryogénique -item.corestorable = [lightgray]Stockable dans le Noyau: {0} item.explosiveness = [lightgray]Explosivité: {0} item.flammability = [lightgray]Inflammabilité: {0} item.radioactivity = [lightgray]Radioactivité: {0} unit.health = [lightgray]Santé: {0} -unit.speed = [lightgray]Rapidité: {0} -unit.weapon = [lightgray]Weapon: {0} -unit.itemcapacity = [lightgray]Item Capacity: {0} -unit.minespeed = [lightgray]Mining Speed: {0}% -unit.minepower = [lightgray]Mining Power: {0} -unit.ability = [lightgray]Ability: {0} -unit.buildspeed = [lightgray]Building Speed: {0}% +unit.speed = [lightgray]Vitesse: {0} +unit.weapon = [lightgray]Arme: {0} +unit.itemcapacity = [lightgray]Stockage: {0} +unit.minespeed = [lightgray]Vitesse de Minage: {0}% +unit.minepower = [lightgray]Puissance de Minage: {0} +unit.ability = [lightgray]Abilité: {0} +unit.buildspeed = [lightgray]Vitesse de Construction: {0}% liquid.heatcapacity = [lightgray]Capacité Thermique: {0} liquid.viscosity = [lightgray]Viscosité: {0} liquid.temperature = [lightgray]Température: {0} -block.cliff.name = Cliff +unit.dagger.name = Poignard +unit.mace.name = Mace +unit.fortress.name = Forteresse +unit.nova.name = Nova +unit.pulsar.name = Pulsar +unit.quasar.name = Quasar +unit.crawler.name = Rampeur +unit.atrax.name = Atrax +unit.spiroct.name = Spiroct +unit.arkyid.name = Arkyid +unit.flare.name = Flare +unit.horizon.name = Horizon +unit.zenith.name = Zenith +unit.antumbra.name = Antumbra +unit.eclipse.name = Eclipse +unit.mono.name = Mono +unit.poly.name = Poly +unit.mega.name = Mega +unit.risse.name = Risse +unit.minke.name = Minke +unit.bryde.name = Bryde +unit.alpha.name = Alpha +unit.beta.name = Beta +unit.gamma.name = Gamma + +block.parallax.name = Parallax +block.cliff.name = Falaise block.sand-boulder.name = Bloc de Sable block.grass.name = Herbe -block.slag.name = Slag +block.slag.name = Scories block.salt.name = Sel block.saltrocks.name = Roches de sel block.pebbles.name = Cailloux block.tendrils.name = Vrilles block.sandrocks.name = Roches de sable -block.spore-pine.name = Pin Sporifié +block.spore-pine.name = Pin Sporeux block.sporerocks.name = Roche Sporeuse block.rock.name = Roche block.snowrock.name = Roches enneigées @@ -864,9 +892,9 @@ block.shrubs.name = Arbustes block.spore-moss.name = Mousse Sporeuse block.shalerocks.name = Rochers de Schiste Argileux block.scrap-wall.name = Mur de Ferraille -block.scrap-wall-large.name = Mur de Ferraille Large -block.scrap-wall-huge.name = Mur de Ferraille Énorme -block.scrap-wall-gigantic.name = Mur de Ferraille Gigantesque +block.scrap-wall-large.name = Grand Mur de Ferraille +block.scrap-wall-huge.name = Énorme Mur de Ferraille +block.scrap-wall-gigantic.name = Gigantesque Mur de Ferraille block.thruster.name = Propulseur block.kiln.name = Four block.graphite-press.name = Presse à Graphite @@ -879,23 +907,23 @@ block.core-nucleus.name = Noyau: Épicentre block.deepwater.name = Eau profonde block.water.name = Eau block.tainted-water.name = Eau Contaminée -block.darksand-tainted-water.name = Sable Sombre humide Contaminé -block.tar.name = Pétrole +block.darksand-tainted-water.name = Eau Contaminée avec fond de Sable Sombre +block.tar.name = Goudron block.stone.name = Roche block.sand.name = Sable block.darksand.name = Sable Sombre block.ice.name = Glace block.snow.name = Neige block.craters.name = Cratères -block.sand-water.name = Sable humide -block.darksand-water.name = Sable Sombre humide +block.sand-water.name = Eau avec fond de Sable +block.darksand-water.name = Eau avec fond de Sable Sombre block.char.name = Cendre block.holostone.name = Pierre Holographique -block.ice-snow.name = Neige Gelée -block.rocks.name = Roches -block.icerocks.name = Roches de Glace -block.snowrocks.name = Roches des Neiges -block.dunerocks.name = Roches des Dunes +block.ice-snow.name = Neige et Glace +block.rocks.name = Rochers +block.icerocks.name = Rochers de Glace +block.snowrocks.name = Rochers de Neige +block.dunerocks.name = Rochers de Sable block.pine.name = Pin block.white-tree-dead.name = Arbre Blanc Mort block.white-tree.name = Arbre Blanc @@ -903,7 +931,7 @@ block.spore-cluster.name = Grappe de Spores block.metal-floor.name = Plancher Métallique 1 block.metal-floor-2.name = Plancher Métallique 2 block.metal-floor-3.name = Plancher Métallique 3 -block.metal-floor-5.name = Plancher Métallique 5 +block.metal-floor-5.name = Plancher Métallique 4 block.metal-floor-damaged.name = Plancher Métallique Endommagé block.dark-panel-1.name = Panneau Sombre 1 block.dark-panel-2.name = Panneau Sombre 2 @@ -935,9 +963,9 @@ block.hail.name = Grêle block.lancer.name = Lancier block.conveyor.name = Convoyeur block.titanium-conveyor.name = Convoyeur en Titane -block.plastanium-conveyor.name = Plastanium Conveyor +block.plastanium-conveyor.name = Convoyeur en Plastanium block.armored-conveyor.name = Convoyeur Cuirassé -block.armored-conveyor.description = Déplace les objets à la même vitesse que les convoyeurs en titane, mais est plus résistant. Seulement d'autres convoyeurs peuvent faire rentrer des ressources par ses côtés. +block.armored-conveyor.description = Déplace les objets à la même vitesse que les convoyeurs en titane, mais est plus résistant. Seulement d'autres convoyeurs peuvent faire entrer des ressources par ses côtés. block.junction.name = Jonction block.router.name = Routeur block.distributor.name = Distributeur @@ -946,7 +974,7 @@ block.inverted-sorter.name = Trieur Inversé block.message.name = Message block.illuminator.name = Illuminateur block.illuminator.description = Une petite source lumineuse compacte et configurable. Nécessite de l'énergie pour fonctionner. -block.overflow-gate.name = Barrière de Débordement +block.overflow-gate.name = Barrière de Débordement block.underflow-gate.name = Barrière de Refoulement block.silicon-smelter.name = Fonderie de Silicium block.phase-weaver.name = Tisseur à Phase @@ -960,7 +988,7 @@ block.coal-centrifuge.name = Centrifugeuse à Charbon block.power-node.name = Transmetteur Énergétique block.power-node-large.name = Grand Transmetteur Énergétique block.surge-tower.name = Tour de Surtension -block.diode.name = Diode de Batterie +block.diode.name = Diode block.battery.name = Batterie block.battery-large.name = Grande Batterie block.combustion-generator.name = Générateur à Combustion @@ -979,7 +1007,7 @@ block.item-void.name = Destructeur de Ressources block.liquid-source.name = Source de Liquide block.liquid-void.name = Vaporisateur de Liquide block.power-void.name = Absorbeur Énergétique -block.power-source.name = Énergie Infinie +block.power-source.name = Source d'Énergie block.unloader.name = Déchargeur block.vault.name = Coffre-Fort block.wave.name = Onde @@ -994,17 +1022,6 @@ block.blast-mixer.name = Mixeur à Explosion block.solar-panel.name = Panneau Solaire block.solar-panel-large.name = Grand Panneau Solaire block.oil-extractor.name = Extracteur de Pétrole -block.command-center.name = Centre de Commandement -block.draug-factory.name = Usine de Drones Mineurs spirituels -block.spirit-factory.name = Usine de Drones Réparateurs spirituels -block.phantom-factory.name = Usine de Drones Constructeurs spirituels -block.wraith-factory.name = Usine de Chasseurs Mirages -block.ghoul-factory.name = Usine de Bombardiers Goules -block.dagger-factory.name = Usine de Méchas Poignards -block.crawler-factory.name = Usine de Méchas Rampeurs -block.titan-factory.name = Usine de Méchas Titans -block.fortress-factory.name = Usine de Méchas Forteresses -block.revenant-factory.name = Usine de Chasseurs Revenants block.repair-point.name = Point de Réparation block.pulse-conduit.name = Conduit à Impulsion block.plated-conduit.name = Conduit Plaqué @@ -1023,10 +1040,10 @@ block.alloy-smelter.name = Fonderie d'Alliage Superchargé block.mender.name = Réparateur block.mend-projector.name = Projecteur Soignant block.surge-wall.name = Mur Superchargé -block.surge-wall-large.name = Grand mur Superchargé +block.surge-wall-large.name = Grand Mur Superchargé block.cyclone.name = Cyclone block.fuse.name = Fusible -block.shock-mine.name = Mine à Chocs +block.shock-mine.name = Mine block.overdrive-projector.name = Projecteur Surmultiplicateur block.force-projector.name = Champ de Force block.arc.name = Arc @@ -1036,6 +1053,19 @@ block.meltdown.name = Fusion block.container.name = Conteneur block.launch-pad.name = Plateforme de Lancement block.launch-pad-large.name = Grande Plateforme de Lancement +block.segment.name = Diviseur +block.ground-factory.name = Usine d'Unité Terrestre +block.air-factory.name = Usine d'Unité Aérienne +block.naval-factory.name = Usine d'Unité Navale +block.additive-reconstructor.name = Reconstructeur Additif +block.multiplicative-reconstructor.name = Reconstructeur Multiplicatif +block.exponential-reconstructor.name = Reconstructeur Exponentiel +block.tetrative-reconstructor.name = Reconstructeur Tétratif +block.mass-conveyor.name = Convoyeur de Masse +block.payload-router.name = Routeur de Charge Utile +block.disassembler.name = Disassembler +block.silicon-crucible.name = Creuset de Silicium +block.large-overdrive-projector.name = Large Overdrive Projector team.blue.name = bleu team.crux.name = rouge team.sharded.name = jaune @@ -1043,96 +1073,72 @@ team.orange.name = orange team.derelict.name = abandonné team.green.name = vert team.purple.name = violet -unit.spirit.name = Drone Réparateur spirituel -unit.draug.name = Drone Mineur spirituel -unit.phantom.name = Drone Constructeur spirituel -unit.dagger.name = Poignard -unit.crawler.name = Rampeur -unit.titan.name = Titan -unit.ghoul.name = Goule -unit.wraith.name = Mirage -unit.fortress.name = Forteresse -unit.revenant.name = Revenant -unit.eruptor.name = Érupteur -unit.chaos-array.name = Soldat du chaos -unit.eradicator.name = Éradicateur -unit.lich.name = Liche -unit.reaper.name = Faucheur + tutorial.next = [lightgray] -tutorial.intro = Vous venez de commencer le [scarlet]Tutoriel de Mindustry.[]\nUtilisez [accent][[ZQSD][] pour vous déplacer.\n[accent]Maintenez [[Ctrl] tout en faisant rouler la molette de la souris[] pour zoomer et dézoomer.\nCommencez en minant du [accent]cuivre[]. Pour cela, rapprochez-vous de l'affleurement de minerai de cuivre près de votre noyau et faites un clic gauche dessus.\n\n[accent]{0}/{1} cuivre -tutorial.intro.mobile = Vous venez de commencer le [scarlet]Tutoriel de Mindustry.[]\nBalayez l'écran pour vous déplacer.\n[accent] Pincez avec deux doigts [] afin d'agrandir et rétrécir la perspective.\nCommencez en[accent] minant du cuivre[]. Pour cela, appuyez sur un affleurement de minerai de cuivre près de votre noyau.\n\n[accent]{0}/{1} cuivre -tutorial.drill = Miner manuellement est inefficace.\n[accent]Les foreuses []peuvent miner pour vous.\nCliquez sur l'onglet des foreuses en bas à droite.\nSélectionnez la [accent]foreuse mécanique[]. Placez-la sur un affleurement de cuivre en cliquant.\n[accent]Faites un clic-droit[] pour arrêter la construction. -tutorial.drill.mobile = Miner manuellement est inefficace.\n[accent]Les foreuses []peuvent miner pour vous.\nAppuyez sur l'onglet des foreuses en bas à droite.\nSélectionnez la [accent]foreuse mécanique[].\nPlacez-la sur un affleurement de cuivre en appuyant dessus, puis en touchant la[accent] coche[] pour confirmer votre placement.\nAppuyez sur le [accent]bouton en forme de croix[] pour annuler le placement. -tutorial.blockinfo = Chaque bloc a des statistiques différentes. Chaque foreuse ne peut miner que certains minerais.\nPour vérifier les informations et les statistiques d'un bloc, appuyez sur le [accent]bouton "?" tout en le sélectionnant dans le menu de construction.[]\n\n[accent]Maintenant, accédez aux statistiques de la foreuse mécanique.[] -tutorial.conveyor = [accent]Les convoyeurs[] sont utilisés pour transporter des objets au noyau.\nFaites une ligne de convoyeurs de la foreuse jusqu'au noyau.\n[accent]Maintenez votre souris pour les placer en ligne.[]\nGardez la touche[accent] CTRL[] enfoncée pour pouvoir les placer en diagonale.\n\nPlacez 2 convoyeurs avec l'outil ligne puis livrez une ressource à la base. -tutorial.conveyor.mobile = [accent]Les convoyeurs[] sont utilisés pour transporter des objets au noyau.\nFaites une ligne de convoyeurs de la foreuse jusqu'au noyau.\n[accent] Maintenez votre doigt enfoncé[] et déplacez-le pour former une ligne.\n\nPlacez 2 convoyeurs avec l'outil ligne puis livrez une ressource à la base. -tutorial.turret = Une fois qu'une ressource entre dans votre noyau, elle peut être utilisée pour la construction.\nGardez à l'esprit que certaines ressources ne peuvent pas être utilisées pour la construction.\nCes ressources, telles que[accent] le charbon[],[accent] le sable[] ou[accent] la ferraille[], ne peuvent pas rentrer dans votre noyau.\nDes structures défensives doivent être construites pour repousser l'[lightgray] ennemi[].\nConstruisez une [accent]tourelle Duo[] non loin de votre noyau. -tutorial.drillturret = Les tourelles Duo ont besoin de[accent] munitions en cuivre []pour tirer.\nPlacez une foreuse près de la tourelle.\nA l'aide de convoyeurs, alimentez la tourelle en cuivre.\n\n[accent]Munitions livrées: 0/1 -tutorial.pause = Pendant les batailles, vous pouvez mettre [accent]le jeu en pause.[]\nVous pouvez placer des bâtiments à construire tout en étant en pause.\n\n[accent]Appuyez sur la barre espace pour mettre en pause. -tutorial.pause.mobile = Pendant les batailles, vous pouvez mettre [accent]le jeu en pause.[]\nVous pouvez placer des bâtiments à construire tout en étant en pause.\n\n[accent]Appuyez sur ce bouton en haut à gauche pour mettre en pause. -tutorial.unpause = Maintenant, appuyez à nouveau sur espace pour continuer à jouer. -tutorial.unpause.mobile = Appuyez à nouveau dessus pour continuer à jouer. -tutorial.breaking = Les blocs doivent souvent être détruits.\n[accent]Gardez enfoncé le bouton droit de votre souris[] pour détruire tous les blocs en une sélection.[]\n\n[accent]Détruisez tous les blocs de ferraille situés à gauche de votre noyau à l'aide de la sélection de zone. -tutorial.breaking.mobile = Les blocs doivent souvent être détruits.\n[accent]Sélectionnez le mode de déconstruction[], puis appuyez sur un bloc pour commencer à le détruire.\nDétruisez une zone en maintenant votre doigt appuyé pendant quelques secondes[] et en le déplaçant dans une direction.\nAppuyez sur le bouton coche pour confirmer.\n\n[accent]Détruisez tous les blocs de ferraille situés à gauche de votre noyau à l'aide de la sélection de zone. -tutorial.withdraw = Dans certaines situations, il est nécessaire de prendre des éléments directement à partir de blocs.\nPour faire cela, [accent]appuyez sur un bloc[] qui contient des ressources, puis [accent]appuyez sur une ressource[] dans son inventaire.\nPlusieurs objets d'une même ressource peuvent être retirées en [accent]appuyant pendant quelques secondes[].\n\n[accent]Retirez du cuivre du noyau.[] -tutorial.deposit = Déposez des ressources dans des blocs en les faisant glisser de votre vaisseau vers le bloc de destination.\n\n[accent]Déposez le cuivre récupéré précédemment dans le noyau.[] +tutorial.intro = Bienvenue sur le [scarlet]Tutoriel de Mindustry![]\nUtilisez [accent][[ZQSD ou WASD][] pour vous déplacer.\nFaites [accent]rouler[] la molette de la souris pour zoomer et dézoomer.\nCommencez en minant du [accent]cuivre[]. Pour cela, allez près de votre noyau, puis faites un clic gauche sur un minerai de cuivre.\n\n[accent]{0}/{1} cuivre +tutorial.intro.mobile = Bienvenue sur le [scarlet]Tutoriel de Mindustry![]\nBalayez l'écran pour vous déplacer.\n[accent] Pincez avec deux doigts [] pour zoomer et dézoomer.\nCommencez en[accent] minant du cuivre[]. Pour cela, allez près de votre noyau, puis appuyez sur un minerai de cuivre.\n\n[accent]{0}/{1} cuivre +tutorial.drill = Miner manuellement est inefficace.\nLes [accent]foreuses []peuvent miner pour vous.\nCliquez sur l'onglet des foreuses en bas à droite.\nSélectionnez la [accent]foreuse mécanique[]. Placez-la ensuite sur des minerais de cuivre avec un clic-gauche.\nVous pouvez aussi sélectionner la foreuse en appuyant sur [accent][[2][] et [accent][[1][] rapidement, peu importe l'onglet ouvert.\n[accent]Faites un clic-droit[] pour arrêter la construction. +tutorial.drill.mobile = Miner manuellement est inefficace.\n[accent]Les foreuses []peuvent miner pour vous.\nAppuyez sur l'onglet des foreuses en bas à droite.\nSélectionnez la [accent]foreuse mécanique[].\nPlacez-la sur des minerais de cuivre en appuyant dessus, puis en touchant la[accent] coche[] pour confirmer votre placement.\nAppuyez sur le [accent]bouton X[] pour annuler le placement. +tutorial.blockinfo = Chaque bloc a des statistiques différentes. Chaque foreuse ne peut miner que certains minerais.\nPour vérifier les informations et les statistiques d'un bloc, appuyez sur le [accent]bouton "?" tout en le sélectionnant dans le menu de construction.[]\n\n[accent]Maintenant, essayez d'accéder aux statistiques de la foreuse mécanique.[] +tutorial.conveyor = [accent]Les convoyeurs[] sont utilisés pour transporter des objets au noyau.\nFaites une ligne de convoyeurs de la foreuse jusqu'au noyau.\n[accent]Maintenez votre souris pour les placer en ligne.[]\nGardez la touche[accent] CTRL[] enfoncée pour pouvoir les placer en diagonale.\n\nPlacez 2 convoyeurs en ligne, puis livrez un minerai au noyau. +tutorial.conveyor.mobile = [accent]Les convoyeurs[] sont utilisés pour transporter des objets au noyau.\nFaites une ligne de convoyeurs de la foreuse jusqu'au noyau.\n[accent] Maintenez votre doigt enfoncé[] et déplacez-le pour former une ligne.\n\nPlacez 2 convoyeurs en ligne, puis livrez un minerai au noyau. +tutorial.turret = Une fois qu'une ressource entre dans votre noyau, elle peut être utilisée pour la construction.\nGardez à l'esprit que certaines ressources ne peuvent pas être utilisées pour la construction.\nCes ressources, telles que[accent] le charbon[],[accent] le sable[] ou[accent] la ferraille[], ne peuvent pas entrer dans votre noyau.\nDes structures défensives doivent être construites pour repousser l'[lightgray] ennemi[].\nConstruisez une [accent]tourelle Duo[] près de votre noyau. +tutorial.drillturret = Les tourelles Duo ont besoin de[accent] munitions en cuivre []pour tirer.\nPlacez une foreuse près de la tourelle.\nÀ l'aide de convoyeurs, alimentez la tourelle en cuivre.\n\n[accent]Munitions livrées: 0/1 +tutorial.pause = Pendant les batailles, vous pouvez mettre [accent]le jeu en pause.[]\nVous pouvez planifier la construction de bâtiments tout en étant en pause.\n\n[accent]Appuyez sur la barre espace pour mettre en pause. +tutorial.pause.mobile = Pendant les batailles, vous pouvez mettre [accent]le jeu en pause.[]\nVous pouvez planifier la construction de bâtiments tout en étant en pause.\n\n[accent]Appuyez sur ce bouton en haut à gauche pour mettre en pause. +tutorial.unpause = Maintenant, appuyez à nouveau sur espace pour reprendre. +tutorial.unpause.mobile = Appuyez à nouveau dessus pour reprendre. +tutorial.breaking = Les blocs ou bâtiments doivent souvent être détruits.\n[accent]Gardez enfoncé le bouton droit de votre souris[] pour détruire tous les blocs en une sélection.[]\n\n[accent]Détruisez tous les blocs de ferraille situés à la gauche de votre noyau à l'aide de la sélection de zone. +tutorial.breaking.mobile = Les blocs ou bâtiments doivent souvent être détruits.\n[accent]Sélectionnez le mode de déconstruction[], puis appuyez sur un bloc pour commencer à le détruire.\nDétruisez une zone en maintenant votre doigt appuyé pendant quelques secondes[] et en le déplaçant dans une direction.\nAppuyez sur le bouton coche pour confirmer.\n\n[accent]Détruisez tous les blocs de ferraille situés à la gauche de votre noyau à l'aide de la sélection de zone. +tutorial.withdraw = Dans certaines situations, il est nécessaire de prendre des ressources directement à partir des bâtiments.\nPour faire cela, [accent]appuyez sur un bloc[] qui contient des ressources, puis [accent]appuyez sur une ressource[] dans son inventaire.\nPlusieurs objets d'une même ressource peuvent être retirées en [accent]appuyant pendant quelques secondes[].\n\n[accent]Retirez du cuivre du noyau.[] +tutorial.deposit = Vous pouvez déposer des ressources dans des bâtiments en les faisant glisser de votre vaisseau vers le bâtiment de destination.\n\n[accent]Déposez le cuivre récupéré précédemment dans le noyau.[] tutorial.waves = L'[lightgray] ennemi[] approche.\n\nDéfendez le noyau pendant 2 vagues.[accent] Cliquez[] pour tirer.\nConstruisez plus de tourelles et de foreuses. Minez plus de cuivre. tutorial.waves.mobile = L'[lightgray] ennemi[] approche.\n\nDéfendez le noyau pendant 2 vagues. Votre vaisseau tirera automatiquement sur les ennemis.\nConstruisez plus de tourelles et de foreuses. Minez plus de cuivre. -tutorial.launch = Une fois que vous aurez atteint une vague spécifique, vous aurez la possibilité de[accent] faire décoller le noyau[], abandonnant vos défenses mais [accent]sécurisant toutes les ressources stockées dans votre noyau.[]\nCes ressources peuvent ensuite être utilisées pour rechercher de nouvelles technologies.\n\n[accent]Appuyez sur le bouton de lancement. +tutorial.launch = Une fois que vous aurez atteint une vague spécifique, vous aurez la possibilité de[accent] faire décoller le noyau[], abandonnant vos défenses, mais [accent]sécurisant toutes les ressources stockées dans votre noyau.[]\nCes ressources peuvent ensuite être utilisées pour rechercher de nouvelles technologies.\n\n[accent]Appuyez sur le bouton de lancement. -item.copper.description = Le matériau structurel de base. Utilisé intensivement dans tous les blocs. -item.lead.description = Un matériau de départ. Utilisé intensivement en électronique et dans les blocs de transport de liquides. -item.metaglass.description = Un composé de verre super-résistant. Utilisé largement pour le transport et le stockage de liquides. -item.graphite.description = Du carbone minéralisé, utilisé pour les munitions et l’isolation électrique. -item.sand.description = Un matériau commun utilisé largement dans la fonte, à la fois dans l'alliage et comme un flux. -item.coal.description = De la matière végétale fossilisée, formée bien avant l’ensemencement. Utilisé intensivement pour la production de carburant et de ressources. -item.titanium.description = Un métal rare super-léger largement utilisé dans le transport de liquides et d'objets ainsi que dans les foreuses de haut-niveau et l'aviation. +item.copper.description = Le matériau structurel de base. Utilisation très répandue dans tous les types de blocs. +item.lead.description = Un matériau de départ. Utilisation très répandue en électronique et dans les blocs de transport de liquides. +item.metaglass.description = Un composé de verre super-résistant. Utilisation très répandue pour le transport et le stockage de liquides. +item.graphite.description = Du carbone minéralisé utilisé pour les munitions et l’isolation électrique. +item.sand.description = Un matériau commun largement utilisé dans la fonte, à la fois dans l'alliage et comme un flux. +item.coal.description = De la matière végétale fossilisée, formée bien avant l’ensemencement de ce monde. Utilisation très répandue pour la production de carburant et de ressources. +item.titanium.description = Un métal rare et super-léger largement utilisé dans le transport de liquides, dans les foreuses de hauts niveaux et dans l'aviation. item.thorium.description = Un métal dense et radioactif utilisé comme support structurel et comme carburant nucléaire. -item.scrap.description = Restes de vieilles structures et unités. Contient des traces de nombreux métaux différents. -item.silicon.description = Un matériau semi-conducteur extrêmement utile, avec des utilisations dans les panneaux solaires et dans beaucoup d'autres composants électroniques complexes. +item.scrap.description = Un mix de métaux provenant des restes de vieilles structures et d'unités. Contient des traces de nombreux métaux différents. +item.silicon.description = Un matériau semi-conducteur extrêmement pratique utilisé dans les panneaux solaires, dans les munitions autoguidées et dans beaucoup d'autres composants électroniques complexes. item.plastanium.description = Un matériau léger et ductile utilisé dans l'aviation avancée et dans les munitions à fragmentation. -item.phase-fabric.description = Une substance au poids quasiment inexistant utilisé pour l'électronique avancée et la technologie auto-réparatrice. +item.phase-fabric.description = Une substance au poids quasiment inexistant utilisée pour l'électronique avancée et la technologie auto-réparatrice. item.surge-alloy.description = Un alliage avancé avec des propriétés électriques uniques. -item.spore-pod.description = Une glande de spores synthétiques, synthétisées à partir de concentrations atmosphériques à des fins industrielles. Utilisé pour la conversion en pétrole, explosifs et carburant. -item.blast-compound.description = Un composé volatile utilisé dans les bombes et les explosifs. Bien qu'il puisse être utilisé comme carburant, ce n'est pas conseillé. +item.spore-pod.description = Une glande de spores synthétisées à partir de concentrations atmosphériques à des fins industrielles et utilisé pour la conversion en pétrole, en explosifs et en carburant. +item.blast-compound.description = Un composé instable synthétisé à partir de glandes de spores ou bien d'autres composés volatils et utilisé dans les bombes ainsi que dans les autres explosifs. Bien qu'il puisse être utilisé comme carburant, ce n'est pas conseillé. item.pyratite.description = Une substance extrêmement inflammable utilisée dans les armes incendiaires. liquid.water.description = Le liquide le plus utile. Couramment utilisé pour le refroidissement et le traitement des déchets. liquid.slag.description = Différents types de métaux en fusion mélangés. Peut être séparé en ses minéraux constitutifs ou tout simplement pulvérisé sur les unités ennemies. -liquid.oil.description = Un liquide utilisé dans la production de matériaux avancés. Peut être transformé en charbon ou pulvérisé sur les ennemis puis enflammé. -liquid.cryofluid.description = Un liquide inerte, non corrosif, créé à partir d’eau et de titane. A une capacité d'absorption de chaleur extrêmement élevée. Utilisé intensivement comme liquide de refroidissement. -unit.draug.description = Un drone de minage primitif pas cher à produire. Sacrifiable. Mine automatiquement le cuivre et le plomb dans les environs. Fournit les ressources minées au noyau le plus proche. -unit.spirit.description = Un drone de minage modifié, conçu pour réparer au lieu d’exploiter. Répare automatiquement tous les blocs endommagés dans la zone. -unit.phantom.description = Un drone avancé qui vous suit et vous aide à construire. Reconstruit aussi les bâtiments détruits par les ennemis -unit.dagger.description = L'unité terrestre de base. Coûte peu cher à produire. Implacable lorsqu'il est utilisé en essaims. -unit.crawler.description = Une unité terrestre composée d’un cadre dépouillé sur lequel sont fixés des explosifs puissants. Pas particulièrement durable. Explose au contact des ennemis. -unit.titan.description = Une unité terrestre avancée et blindée. Attaque les cibles aériennes et terrestres. Équipé de deux lance-flammes miniatures de type Brûleur. -unit.fortress.description = Une unité d'artillerie lourde. Équipé de deux canons de type Grêle modifiés pour l'assaut à longue portée contre les structures et les unités ennemies. -unit.eruptor.description = Une unité lourde conçue pour détruire les structures. Tire un flot de scories sur les fortifications ennemies, les faisant fondre et brûler. -unit.wraith.description = Une unité d'interception rapide et de harcèlement. Cible les générateurs d'énergie. -unit.ghoul.description = Un bombardier lourd de barrage. Fend à travers les lignes ennemies, ciblant les infrastructures critiques. -unit.revenant.description = Une plateforme aérienne lançant des missiles lourds. +liquid.oil.description = Un liquide utilisé dans la production de matériaux avancés. Peut être transformé en charbon ou pulvérisé sur les ennemis, puis enflammé. +liquid.cryofluid.description = Un liquide inerte, non corrosif, créé à partir d’eau et de titane. Possède une capacité d'absorption de chaleur extrêmement élevée. Largement utilisé comme liquide de refroidissement. + block.message.description = Enregistre un message. Utilisé pour la communication entre alliés. block.graphite-press.description = Compresse des morceaux de charbon en feuilles de graphite pur. block.multi-press.description = Une version améliorée de la presse à graphite. Utilise de l'eau et de l'électricité pour traiter le charbon rapidement et efficacement. block.silicon-smelter.description = Réduit le sable avec du charbon pur. Produit du silicium. -block.kiln.description = Fait fondre le sable et le plomb en verre trempé. Nécessite de petites quantités d'énergie. +block.kiln.description = Fait fondre le sable et le plomb en verre trempé. Nécessite une petite quantité d'énergie. block.plastanium-compressor.description = Produit du plastanium à partir de pétrole et de titane. -block.phase-weaver.description = Produit du tissu phasé à partir de thorium et de grandes quantités de sable. Nécessite des quantités massives d'énergie pour fonctionner. +block.phase-weaver.description = Produit du tissu phasé à partir de thoriums et de grandes quantités de sable. Nécessite une quantité massive d'énergie pour fonctionner. block.alloy-smelter.description = Produit un alliage superchargé à l'aide de titane, de plomb, de silicium et de cuivre. -block.cryofluidmixer.description = Mélange de l’eau et de la fine poudre de titane pour former du liquide cryogénique. Indispensable pour l'utilisation des réacteurs au thorium et à impact. +block.cryofluidmixer.description = Mélange de l’eau et de la fine poudre de titane pour former du liquide cryogénique. Indispensable lors de l'utilisation de réacteurs aux thoriums. block.blast-mixer.description = Écrase et mélange les amas de spores avec de la pyratite pour produire un mélange explosif. block.pyratite-mixer.description = Mélange le charbon, le plomb et le sable en pyratite hautement inflammable. -block.melter.description = Fait fondre la ferraille en scories pour un traitement ultérieur ou une utilisation dans des tourelles Onde. -block.separator.description = Expose la scorie à de l'eau sous pression afin d'obtenir différents minéraux qu'elle contient. +block.melter.description = Fait fondre la ferraille en scories pour un traitement ultérieur ou une utilisation dans les tourelles « Onde ». +block.separator.description = Expose la scorie à de l'eau sous pression afin d'obtenir les différents minéraux qu'elle contient. block.spore-press.description = Compresse les glandes de spore sous une pression extrême pour synthétiser du pétrole. block.pulverizer.description = Écrase la ferraille pour en faire du sable. Utile quand il y a un manque de sable naturel. block.coal-centrifuge.description = Solidifie le pétrole en blocs de charbon. block.incinerator.description = Permet de se débarrasser de n'importe quel objet ou liquide en excès. -block.power-void.description = Supprime toute l'énergie allant à l'intérieur. Bac à sable uniquement. +block.power-void.description = Absorbe toute l'énergie qui va à l'intérieur. Bac à sable uniquement. block.power-source.description = Produit de l'énergie à l'infini. Bac à sable uniquement. block.item-source.description = Produit des objets à l'infini. Bac à sable uniquement . -block.item-void.description = Désintègre n'importe quel objet qui va à l'intérieur sans utiliser d'énergie. Bac à sable uniquement. -block.liquid-source.description = Source de liquide infinie . Bac à sable uniquement. +block.item-void.description = Désintègre n'importe quel objet qui va à l'intérieur. Bac à sable uniquement. +block.liquid-source.description = Source de liquide infinie. Bac à sable uniquement. block.liquid-void.description = Détruit n'importe quel liquide. Bac à sable uniquement. block.copper-wall.description = Un bloc défensif à faible coût.\nUtile pour protéger la base et les tourelles lors des premières vagues. block.copper-wall-large.description = Un bloc défensif à faible coût.\nUtile pour protéger la base et les tourelles lors des premières vagues.\n2 x 2. @@ -1207,29 +1213,19 @@ block.container.description = Stocke un petit nombre d'objets. Utile pour régul block.unloader.description = Décharge des objets depuis des conteneurs, coffres-forts ou d'un noyau sur un convoyeur ou directement dans un bloc adjacent. Le type d'objet peut être changé en appuyant sur le déchargeur. block.launch-pad.description = Permet de transférer des ressources sans attendre le lancement du noyau. block.launch-pad-large.description = Une version améliorée de la plateforme de lancement. Stocke plus de ressources et les envoie plus fréquemment. -block.duo.description = Une petite tourelle avec un coût faible. -block.scatter.description = Une tourelle anti-aérienne de taille moyenne. Mitraille les ennemis de débris de plomb ou de ferraille. -block.scorch.description = Brûle les ennemis au sol proche de lui. Très efficace à courte portée. -block.hail.description = Une petite tourelle d'artillerie. -block.wave.description = Une tourelle de taille moyenne tirant rapidement des bulles de liquide. Peut éteindre les incendies à portée si de l'eau est disponible. -block.lancer.description = Une tourelle de taille moyenne tirant des rayons chargés en électricité. -block.arc.description = Une petite tourelle tirant des arcs électriques vers les ennemis. +block.duo.description = Une petite tourelle à faible coût. Fonctionne bien contre les ennemis terrestres. +block.scatter.description = Une tourelle anti-aérienne essentielle. Mitraille les ennemis de débris de plomb, de ferraille ou de verre trempé. +block.scorch.description = Brûle les ennemis terrestres près de lui. Très efficace à courte portée. +block.hail.description = Une petite tourelle d'artillerie. Efficace à longue portée. +block.wave.description = Une tourelle de taille moyenne tirant rapidement des jets de liquide. Peut éteindre les incendies si elle est alimentée en eau. +block.lancer.description = Une tourelle de taille moyenne chargeant et tirant de puissants lasers aux ennemis terrestres. +block.arc.description = Une petite tourelle de petite portée tirant des arcs électriques sur les ennemis. block.swarmer.description = Une tourelle de taille moyenne attaquant les ennemis terrestres et aériens à l'aide de missiles autoguidés. -block.salvo.description = Une tourelle de taille moyenne qui tire par salves. -block.fuse.description = Une grande tourelle qui tire de puissants rayons chargés d'électricité avec une faible portée mais sur un angle large. -block.ripple.description = Une grande tourelle d'artillerie qui tire plusieurs salves simultanément. -block.cyclone.description = Une grande tourelle tirant rapidement... très rapidement. -block.spectre.description = Une grande tourelle qui tire deux puissantes balles perce-blindage simultanément. -block.meltdown.description = Une grande tourelle tirant de puissants rayons lasers avec une grande portée. -block.command-center.description = Permet de donner des ordres aux unités alliées sur la carte.\nIndique aux unités de se rallier, d'attaquer un noyau ennemi ou de battre en retraite vers le noyau/l'usine. En l'absence de noyau adverse, les unités patrouilleront par défaut en fonction de l'ordre donné. -block.draug-factory.description = Produit des drones mineurs. -block.spirit-factory.description = Produit des drones qui réparent les bâtiments endommagés. -block.phantom-factory.description = Produit des drones de construction avancés. -block.wraith-factory.description = Produit des intercepteurs rapides qui harcèlent l'ennemi. -block.ghoul-factory.description = Produit des bombardiers lourds. -block.revenant-factory.description = Produit des unités aériennes lourdes tirant des missiles. -block.dagger-factory.description = Produit des unités terrestres basiques. -block.crawler-factory.description = Produit des unités terrestres kamikazes rapides. -block.titan-factory.description = Produit des unités terrestres avancées et cuirassées. -block.fortress-factory.description = Produit des unités terrestres d'artillerie lourde. +block.salvo.description = Une version plus grande et améliorée de la tourelle Duo. Tire par salves. +block.fuse.description = Une tourelle de grande taille et de petite portée. Elle perce les lignées ennemis avec ses trois tirs de sharpnel. +block.ripple.description = Une grande tourelle d'artillerie qui tire plusieurs salves simultanément sur de très longues distances. +block.cyclone.description = Une grande tourelle qui tire rapidement des débris explosifs aux ennemis terrestres et aériens. +block.spectre.description = Une tourelle massive à double cannon et qui tire de puissantes balles perce-blindages simultanément. +block.meltdown.description = Une tourelle massive chargeant et tirant de puissants rayons lasers. Nécessite un liquide de refroidissement. block.repair-point.description = Soigne en permanence l'unité endommagée la plus proche à proximité. +block.segment.description = Endommage et détruit les tirs ennemis. Cependant, les lasers ne peuvent pas être ciblés. diff --git a/core/assets/bundles/bundle_fr_BE.properties b/core/assets/bundles/bundle_fr_BE.properties index fcf8f417fe..71534db931 100644 --- a/core/assets/bundles/bundle_fr_BE.properties +++ b/core/assets/bundles/bundle_fr_BE.properties @@ -106,6 +106,7 @@ mods.guide = Modding Guide mods.report = Report Bug mods.openfolder = Open Mod Folder mods.reload = Reload +mods.reloadexit = The game will now exit, to reload mods. mod.display = [gray]Mod:[orange] {0} mod.enabled = [lightgray]Enabled mod.disabled = [scarlet]Disabled @@ -124,6 +125,7 @@ mod.reloadrequired = [scarlet]Reload Required mod.import = Import Mod mod.import.file = Import File mod.import.github = Import GitHub Mod +mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source! mod.item.remove = This item is part of the[accent] '{0}'[] mod. To remove it, uninstall that mod. mod.remove.confirm = This mod will be deleted. mod.author = [lightgray]Author:[] {0} @@ -224,7 +226,6 @@ save.new = Nouvelle sauvegarde save.overwrite = Êtes-vous sûr de vouloir\nécraser cette sauvegarde ? overwrite = Écraser save.none = Aucune sauvegarde trouvée ! -saveload = [accent]Sauvegarde... savefail = Échec de la sauvegarde ! save.delete.confirm = Êtes-vous sûr de supprimer cette sauvegarde ? save.delete = Supprimer @@ -272,6 +273,7 @@ quit.confirm.tutorial = Are you sure you know what you're doing?\nThe tutorial c loading = [accent]Chargement... reloading = [accent]Reloading Mods... saving = [accent]Sauvegarde... +respawn = [accent][[{0}][] to respawn in core cancelbuilding = [accent][[{0}][] to clear plan selectschematic = [accent][[{0}][] to select+copy pausebuilding = [accent][[{0}][] to pause building @@ -328,8 +330,9 @@ waves.never = waves.every = tous les waves.waves = vague(s) waves.perspawn = par apparition +waves.shields = shields/wave waves.to = à -waves.boss = Boss +waves.guardian = Guardian waves.preview = Prévisualiser waves.edit = Modifier... waves.copy = Copier dans le Presse-papiers @@ -460,6 +463,7 @@ requirement.unlock = Unlock {0} resume = Reprendre la partie en cours:\n[lightgray]{0} bestwave = [lightgray]Meilleur: {0} launch = Lancement +launch.text = Launch launch.title = Lancement réussi launch.next = [lightgray]Prochaine opportunité à la vague {0} launch.unable2 = [scarlet]Unable to LAUNCH.[] @@ -467,13 +471,13 @@ launch.confirm = Cela lancera toutes les ressources dans votre noyau.\nVous ne p launch.skip.confirm = If you skip now, you will not be able to launch until later waves. uncover = Découvrir configure = Configurer le transfert des ressources. +loadout = Loadout +resources = Resources bannedblocks = Banned Blocks addall = Add All -configure.locked = [lightgray]Atteigner la vague {0}\npour configurer le transfert des ressources. configure.invalid = Amount must be a number between 0 and {0}. zone.unlocked = [lightgray]{0} Débloquée. zone.requirement.complete = Vague {0} atteinte:\n{1} Exigences de la zone complétées -zone.config.unlocked = Loadout unlocked:[lightgray]\n{0} zone.resources = Ressources détectées: zone.objective = [lightgray]Objective: [accent]{0} zone.objective.survival = Survive @@ -492,35 +496,29 @@ error.io = Network I/O error. error.any = Erreur réseau inconnue. error.bloom = Échec d'initialisation du flou lumineux.\nVotre appareil peut ne pas le supporter. -zone.groundZero.name = Première Bataille -zone.desertWastes.name = Déchets du désert -zone.craters.name = Les Cratères -zone.frozenForest.name = Forêt Glaciale -zone.ruinousShores.name = Rives en Ruine -zone.stainedMountains.name = Montagnes Tâchetées -zone.desolateRift.name = Fissure abandonnée -zone.nuclearComplex.name = Complexe nucléaire -zone.overgrowth.name = Surcroissance -zone.tarFields.name = Champs de goudron -zone.saltFlats.name = Salière -zone.impact0078.name = Impact 0078 -zone.crags.name = Crags -zone.fungalPass.name = Fungal Pass +sector.groundZero.name = Ground Zero +sector.craters.name = The Craters +sector.frozenForest.name = Frozen Forest +sector.ruinousShores.name = Ruinous Shores +sector.stainedMountains.name = Stained Mountains +sector.desolateRift.name = Desolate Rift +sector.nuclearComplex.name = Nuclear Production Complex +sector.overgrowth.name = Overgrowth +sector.tarFields.name = Tar Fields +sector.saltFlats.name = Salt Flats +sector.fungalPass.name = Fungal Pass -zone.groundZero.description = L'emplacement optimal pour recommencer. Faible menace ennemie. Peu de ressources.\nRassemblez autant de plomb et de cuivre que possible.\nAllons-y -zone.frozenForest.description = Même ici, plus près des montagnes, les spores se sont propagées. Les températures glaciales ne peuvent pas les contenir pour toujours.\n\nCommencez l'aventure au pouvoir. Construire des générateurs de combustion. Apprenez à utiliser les réparations. -zone.desertWastes.description = Ces déchets sont vastes, imprévisibles, et sillonné de structures du secteur désaffectés.\nLe charbon est présent dans la région. Brulez-le pour obtenir de l'énergie ou synthétisez du graphite.\n\n[lightgray]Ce lieu d'atterrissage ne peut être garanti. -zone.saltFlats.description = Aux abords du désert se trouvent les marais salants. Peu de ressources peuvent être trouvées à cet endroit.\n\nL'ennemi a érigé un complexe de stockage de ressources ici. Éradiquer leur base. Ne laisser rien debout. -zone.craters.description = L'eau s'est accumulée dans ce cratère, vestige des guerres anciennes. Récupérer la zone. Recueillir du sable. Créé du Métaverre. Pomper de l'eau pour refroidir les tourelles et les perceuses. -zone.ruinousShores.description = Passé les déchets, c'est le rivage. Une fois, cet endroit a abrité un réseau de défense côtière. Il n'en reste pas beaucoup. Seules les structures de défense les plus élémentaires restent indemnes, tout le reste étant réduit à néant.\nContinuer l'expansion vers l'extérieur. Redécouvrez la technologie. -zone.stainedMountains.description = Plus à l'intérieur des terres se trouvent les montagnes, non polluées par les spores.\nExtraire le titane abondant dans cette zone. Et apprennez comment l'utiliser.\n\nLa présence de l'ennemi est plus grande ici. Ne leur donnez pas le temps d'envoyer leurs unités les plus fortes. -zone.overgrowth.description = Cette zone est envahie par la végétation, plus proche de la source des spores.\nL'ennemi a établi un avant-poste ici. Construire des unités de poignard. Detruis-le. Et repprennez ce qui a été perdu ! -zone.tarFields.description = La périphérie d'une zone de production de pétrole, entre les montagnes et le désert. Une des rares zones avec des réserves de goudron utilisables.\nBien qu'abandonnée, cette zone a des forces ennemies dangereuses à proximité. Ne les sous-estimez pas.\n\n[lightgray]Rechercher la technologie de traitement de pétrole si possible. -zone.desolateRift.description = Une zone extrêmement dangereuse. Ressources abondantes, mais peu d'espace. Risque élevé de destruction. Pars le plus vite possible.\nNe vous laissez pas berner par le long espacement entre les attaques ennemies. -zone.nuclearComplex.description = Une ancienne installation de production et de traitement de thorium, réduite à néant.\n[lightgray]Recherche sur le thorium et ses nombreuses utilisations.\n\nL'ennemi est présent ici en grand nombre, recherchant constamment des assaillants. -zone.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. -zone.impact0078.description = -zone.crags.description = +sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. +sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. +sector.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. +sector.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. +sector.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. +sector.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units. +sector.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build Titan units. Destroy it. Reclaim that which was lost. +sector.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. +sector.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. +sector.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. +sector.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. settings.language = Langage settings.data = Game Data @@ -537,6 +535,7 @@ settings.clearall.confirm = [scarlet]ATTENTION![]\nCet action effacera toutes le paused = En pause clear = Clear banned = [scarlet]Banned +unplaceable.sectorcaptured = [scarlet]Requires captured sector yes = Oui no = Non info.title = Info @@ -582,6 +581,8 @@ blocks.reload = Tirs/Seconde blocks.ammo = Munition bar.drilltierreq = Better Drill Required +bar.noresources = Missing Resources +bar.corereq = Core Base Required bar.drillspeed = Vitesse de forage: {0}/s bar.pumpspeed = Pump Speed: {0}/s bar.efficiency = Efficacité: {0}% @@ -591,11 +592,12 @@ bar.poweramount = Énergie: {0} bar.poweroutput = Énergie en sortie: {0} bar.items = Objets: {0} bar.capacity = Capacity: {0} +bar.unitcap = {0} {1}/{2} +bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled] bar.liquid = Liquide bar.heat = Chaleur bar.power = Énergie bar.progress = Progression de la construction -bar.spawned = Unités: {0}/{1} bar.input = Input bar.output = Output @@ -639,6 +641,7 @@ setting.linear.name = Filtrage linéaire setting.hints.name = Hints setting.flow.name = Display Resource Flow Rate[scarlet] (experimental) setting.buildautopause.name = Auto-Pause Building +setting.mapcenter.name = Auto Center Map To Player setting.animatedwater.name = Eau animée setting.animatedshields.name = Boucliers Animés setting.antialias.name = Antialias[lightgray] (demande le redémarrage de l'appareil)[] @@ -663,7 +666,6 @@ setting.effects.name = Montrer les effets setting.destroyedblocks.name = Display Destroyed Blocks setting.blockstatus.name = Display Block Status setting.conveyorpathfinding.name = Conveyor Placement Pathfinding -setting.coreselect.name = Allow Schematic Cores setting.sensitivity.name = Contôle de la sensibilité setting.saveinterval.name = Intervalle des sauvegardes auto setting.seconds = {0} Secondes @@ -672,12 +674,15 @@ setting.milliseconds = {0} milliseconds setting.fullscreen.name = Plein écran setting.borderlesswindow.name = Fenêtre sans bordure[lightgray] (peut nécessiter un redémarrage) setting.fps.name = Afficher FPS +setting.smoothcamera.name = Smooth Camera setting.blockselectkeys.name = Show Block Select Keys setting.vsync.name = VSync setting.pixelate.name = Pixélisé [lightgray](peut diminuer les performances)[] setting.minimap.name = Montrer la minimap +setting.coreitems.name = Display Core Items (WIP) setting.position.name = Show Player Position setting.musicvol.name = Volume de la musique +setting.atmosphere.name = Show Planet Atmosphere setting.ambientvol.name = Ambient Volume setting.mutemusic.name = Couper la musique setting.sfxvol.name = Volume des SFX @@ -700,10 +705,13 @@ keybinds.mobile = [scarlet]La plupart des raccourcis clavier ne sont pas fonctio category.general.name = Général category.view.name = Voir category.multiplayer.name = Multijoueur +category.blocks.name = Block Select command.attack = Attaquer command.rally = Rally command.retreat = Retraite placement.blockselectkeys = \n[lightgray]Key: [{0}, +keybind.respawn.name = Respawn +keybind.control.name = Control Unit keybind.clear_building.name = Clear Building keybind.press = Appuyez sur une touche ... keybind.press.axis = Appuyez sur un axe ou une touche... @@ -713,7 +721,7 @@ keybind.toggle_block_status.name = Toggle Block Statuses keybind.move_x.name = Mouvement X keybind.move_y.name = Mouvement Y keybind.mouse_move.name = Follow Mouse -keybind.dash.name = Sprint +keybind.boost.name = Boost keybind.schematic_select.name = Select Region keybind.schematic_menu.name = Schematic Menu keybind.schematic_flip_x.name = Flip Schematic X @@ -775,30 +783,25 @@ rules.wavetimer = Temps de vague rules.waves = Vague rules.attack = Mode attaque rules.enemyCheat = Ressources infinies pour l'IA -rules.unitdrops = Uniter Drops +rules.blockhealthmultiplier = Block Health Multiplier +rules.blockdamagemultiplier = Block Damage Multiplier rules.unitbuildspeedmultiplier = Multiplicateur de vitesse de création d'unités rules.unithealthmultiplier = Multiplicateur de la santé des unités -rules.blockhealthmultiplier = Block Health Multiplier -rules.playerhealthmultiplier = Multiplicateur de la santé des joueurs -rules.playerdamagemultiplier = Multiplicateur de dégât des joueurs rules.unitdamagemultiplier = Multiplicateur de dégât des unités rules.enemycorebuildradius = Rayon de non-construction autour de la base ennemi:[lightgray] (tuiles) -rules.respawntime = Temps de réapparition:[lightgray] (sec) rules.wavespacing = Espacement des vagues:[lightgray] (sec) rules.buildcostmultiplier = Multiplicateur de coût de construction rules.buildspeedmultiplier = Multiplicateur de vitesse de construction rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier rules.waitForWaveToEnd = Les vagues attendent les ennemis rules.dropzoneradius = Rayon de la zone de largage:[lightgray] (tuiles) -rules.respawns = Max d'apparition par vague -rules.limitedRespawns = Limite d'apparition +rules.unitammo = Units Require Ammo rules.title.waves = Vagues -rules.title.respawns = Apparition rules.title.resourcesbuilding = Ressources & Bâtiment -rules.title.player = Joueurs rules.title.enemy = Ennemis rules.title.unit = Unités rules.title.experimental = Experimental +rules.title.environment = Environment rules.lighting = Lighting rules.ambientlight = Ambient Light rules.solarpowermultiplier = Solar Power Multiplier @@ -827,7 +830,6 @@ liquid.water.name = Eau liquid.slag.name = Scorie liquid.oil.name = Pétrole liquid.cryofluid.name = Liquide Cryogénique -item.corestorable = [lightgray]Storable in Core: {0} item.explosiveness = [lightgray]Explosivité: {0} item.flammability = [lightgray]Inflammabilité: {0} item.radioactivity = [lightgray]Radioactivité: {0} @@ -843,6 +845,32 @@ liquid.heatcapacity = [lightgray]Capacité Thermique {0} liquid.viscosity = [lightgray]Viscosité: {0} liquid.temperature = [lightgray]Température: {0} +unit.dagger.name = Poignard +unit.mace.name = Mace +unit.fortress.name = Forteresse +unit.nova.name = Nova +unit.pulsar.name = Pulsar +unit.quasar.name = Quasar +unit.crawler.name = Chenille +unit.atrax.name = Atrax +unit.spiroct.name = Spiroct +unit.arkyid.name = Arkyid +unit.flare.name = Flare +unit.horizon.name = Horizon +unit.zenith.name = Zenith +unit.antumbra.name = Antumbra +unit.eclipse.name = Eclipse +unit.mono.name = Mono +unit.poly.name = Poly +unit.mega.name = Mega +unit.risse.name = Risse +unit.minke.name = Minke +unit.bryde.name = Bryde +unit.alpha.name = Alpha +unit.beta.name = Beta +unit.gamma.name = Gamma + +block.parallax.name = Parallax block.cliff.name = Cliff block.sand-boulder.name = Sable rocheux block.grass.name = Herbe @@ -994,17 +1022,6 @@ block.blast-mixer.name = Mixeur à explosion block.solar-panel.name = Panneau solaire block.solar-panel-large.name = Grand panneau solaire block.oil-extractor.name = Extracteur de pétrol -block.command-center.name = Centre de commandement -block.draug-factory.name = Usine de "Drones draug miner" -block.spirit-factory.name = Usine de "Drones spirituels" -block.phantom-factory.name = Usine de "Drones fantômes" -block.wraith-factory.name = Usine de "Combattants spectraux" -block.ghoul-factory.name = Usine de "Bombardiers goules" -block.dagger-factory.name = Usine de "Poignards" -block.crawler-factory.name = Usine de "Chenille" -block.titan-factory.name = Usine de "Titans" -block.fortress-factory.name = Usine de "Forteresse" -block.revenant-factory.name = Usine de "Revenants" block.repair-point.name = Point de Réparation block.pulse-conduit.name = Conduit à Impulsion block.plated-conduit.name = Plated Conduit @@ -1036,6 +1053,19 @@ block.meltdown.name = Meltdown block.container.name = Conteneur block.launch-pad.name = Rampe de lancement block.launch-pad-large.name = Grande rampe de lancement +block.segment.name = Segment +block.ground-factory.name = Ground Factory +block.air-factory.name = Air Factory +block.naval-factory.name = Naval Factory +block.additive-reconstructor.name = Additive Reconstructor +block.multiplicative-reconstructor.name = Multiplicative Reconstructor +block.exponential-reconstructor.name = Exponential Reconstructor +block.tetrative-reconstructor.name = Tetrative Reconstructor +block.mass-conveyor.name = Mass Conveyor +block.payload-router.name = Payload Router +block.disassembler.name = Disassembler +block.silicon-crucible.name = Silicon Crucible +block.large-overdrive-projector.name = Large Overdrive Projector team.blue.name = Bleu team.crux.name = red team.sharded.name = orange @@ -1043,21 +1073,7 @@ team.orange.name = Orange team.derelict.name = derelict team.green.name = Vert team.purple.name = Violet -unit.spirit.name = Drone spirituel -unit.draug.name = Drone draug miner -unit.phantom.name = Drone Fantôme -unit.dagger.name = Poignard -unit.crawler.name = Chenille -unit.titan.name = Titan -unit.ghoul.name = Bombardier goule -unit.wraith.name = Combattant spectral -unit.fortress.name = Forteresse -unit.revenant.name = Revenant -unit.eruptor.name = Eruptor -unit.chaos-array.name = Chaos Array -unit.eradicator.name = Eradicator -unit.lich.name = Lich -unit.reaper.name = Reaper + tutorial.next = [lightgray] tutorial.intro = Vous êtes entré dans le[scarlet] Tutoriel de Mindustry.[]\nCommencez par[accent] miner du cuivre[]. Appuyez ou cliquez sur une veine de minerai de cuivre près de votre base pour commencer à miner.\n\n[accent]{0}/{1} cuivre tutorial.intro.mobile = You have entered the[scarlet] Mindustry Tutorial.[]\nSwipe the screen to move.\n[accent]Pinch with 2 fingers [] to zoom in and out.\nBegin by[accent] mining copper[]. Move close to it, then tap a copper ore vein near your core to do this.\n\n[accent]{0}/{1} copper @@ -1100,17 +1116,7 @@ liquid.water.description = Couramment utilisé pour les machines de refroidissem liquid.slag.description = Différents types de métaux en fusion mélangés. Peut être séparé en ses minéraux constitutifs ou pulvérisé sur les unités ennemies comme une arme. liquid.oil.description = Peut être brûlé, explosé ou utilisé comme liquide de refroidissement. liquid.cryofluid.description = Le liquide de refroidissement le plus efficace. -unit.draug.description = Un drone minier primitif. Pas cher à produire. Consommable. Extraction automatique de cuivre et de plomb dans les environs. Fournit les ressources minées à la base la plus proche. -unit.spirit.description = L'unité de soutien de départ. Apparaît dans la base par défaut. Mine automatiquement les minerais, récupère les objets au sol et répare les blocs. -unit.phantom.description = Une unité de soutien avancée. Mine automatiquement les minerais, récupère les objets au sol et répare les blocs. Bien plus efficace qu'un drone spirituel. -unit.dagger.description = Une unité terrestre de base. Utile en essaims. -unit.crawler.description = Unité au sol composée d’un cadre dépouillé sur lequel sont fixés des explosifs puissants. Pas particulièrement durable. Explose au contact des ennemis. -unit.titan.description = Une unité terrestre cuirassée avancée. Utilise de l'alliage lourd pour munition. Attaque les unités aérinnes comme terrestres. -unit.fortress.description = Une unité terrestre d'artillerie lourde. -unit.eruptor.description = Un mech lourd conçu pour abattre des structures. Tire un flot de scories sur les fortifications ennemies, les fait fondre et met en feu les volatiles. -unit.wraith.description = Une unité volante rapide harcelant les ennemis. Utilise du plomb comme munitions. -unit.ghoul.description = Un bombardier lourd. Utilise de la pyratite ou des explosifs comme munitions. -unit.revenant.description = Un arsenal de missiles lourd et planant. + block.message.description = Stores a message. Used for communication between allies. block.graphite-press.description = Compresse des morceaux de charbon en feuilles de graphite. block.multi-press.description = Une version améliorée de la presse à graphite. Utilise de l'eau et de l'électricité pour traiter le charbon rapidement et efficacement. @@ -1221,15 +1227,5 @@ block.ripple.description = Une grande tourelle d'artillerie qui tire plusieurs c block.cyclone.description = Une grande tourelle à tir rapide. block.spectre.description = Une grande tourelle qui tire deux balles puissantes à la fois. block.meltdown.description = Une grande tourelle qui tire de puissants faisceaux à longue portée. -block.command-center.description = Donne des ordres aux unités alliées sur la carte.\nPermet aux unités de patrouiller, d’attaquer un noyau ennemi ou de se retirer dans le noyau/l’usine. En l'absence de base ennemi, les unités patrouillent par défaut autour du centre de commandement. -block.draug-factory.description = Produces Draug mining drones. -block.spirit-factory.description = Produit des drones légers qui extraient du minerai et réparent des blocs. -block.phantom-factory.description = Produit des drones avancés qui sont bien plus efficaces que les drones spirituels. -block.wraith-factory.description = Produit des intercepteurs rapides qui harcèlent l'ennemi. -block.ghoul-factory.description = Produit des bombardiers lourds. -block.revenant-factory.description = Produit des unités terrestres lourdes avec des lasers. -block.dagger-factory.description = Produit des unités terrestres basiques. -block.crawler-factory.description = Produit des unités autodestructrices rapides. -block.titan-factory.description = Produit des unités terrestres avancées et blindées. -block.fortress-factory.description = Produit des unités terrestres d'artillerie lourde. block.repair-point.description = Soigne en permanence l'unité endommagée la plus proche à proximité. +block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. diff --git a/core/assets/bundles/bundle_hu.properties b/core/assets/bundles/bundle_hu.properties new file mode 100644 index 0000000000..fd5c0da4ef --- /dev/null +++ b/core/assets/bundles/bundle_hu.properties @@ -0,0 +1,1231 @@ +credits.text = Készítette [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[] +credits = Credits +contributors = Fordítók és készítők +discord = Csatlakozz a Mindustry Discord-hoz! +link.discord.description = A hivatalos Mindustry Discord chatroom +link.reddit.description = A Mindustry subreddit +link.github.description = A játék forráskódja +link.changelog.description = Frissítési változások listája +link.dev-builds.description = Instabil fejlesztői build-ek +link.trello.description = Hivatalos Trello tábla a tervezett funkcióknak +link.itch.io.description = itch.io oldal PC letöltésekkel +link.google-play.description = Google Play áruház listázás +link.f-droid.description = F-Droid katalógus listázás +link.wiki.description = Hivatalos Mindustry wiki +link.feathub.description = Új funkciók ajánlása +linkfail = Nem sikerült megnyitni a linket!\nAz URL a vágólapra lett másolva. +screenshot = Képernyőkép mentve ide: {0} +screenshot.invalid = Túl nagy a térkép, nincsen elég memória a képernyőképhez. +gameover = Vége a játéknak +gameover.pvp = A[accent] {0}[] csapat nyert! +highscore = [accent]Új rekord! +copied = Másolva. + +load.sound = Hangok +load.map = Térképek +load.image = Képek +load.content = Tartalom +load.system = Rendszer +load.mod = Modok +load.scripts = Szkriptek + +be.update = Egy új Bleeding Edge build érhető el: +be.update.confirm = Letöltés és újraindítás?? +be.updating = Frissítés... +be.ignore = Figyelmen kívül hagyás +be.noupdates = Nincsen új frissítés. +be.check = Frissítések keresése + +schematic = Schematic +schematic.add = Schematic mentése... +schematics = Schematicok +schematic.replace = Már van ilyen nevű schematic. Csere? +schematic.exists = Már van ilyen nevű schematic. +schematic.import = Schematic importálása... +schematic.exportfile = Exportálás fájlba +schematic.importfile = Importálás fájlba +schematic.browseworkshop = Workshop megtekintése +schematic.copy = Másolás a vágólapra +schematic.copy.import = Importálás a vágólapról +schematic.shareworkshop = Megosztás a Workshopon +schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Schematic tükrözése +schematic.saved = Schematic mentve. +schematic.delete.confirm = Ez a Schematic törölve lesz. +schematic.rename = Schematic átnevezése +schematic.info = {0}x{1}, {2} blokk + +stat.wave = Hullámok kivédve:[accent] {0} +stat.enemiesDestroyed = Ellenségek kivédve:[accent] {0} +stat.built = Épített épületek:[accent] {0} +stat.destroyed = Ledöntött épületek:[accent] {0} +stat.deconstructed = Törölt épületek:[accent] {0} +stat.delivered = Elindított erőforrások: +stat.playtime = Játékidő:[accent] {0} +stat.rank = Végső értékelés: [accent]{0} + +launcheditems = [accent]Elindított elemek +launchinfo = [unlaunched][[INDÍTSD EL] a magot hogy megszerezd a kékkel jelölt erőforrásokat. +map.delete = Biztos, hogy törölni akarod a "[accent]{0}[]" térképet? +level.highscore = Rekord: [accent]{0} +level.select = Pálya választása +level.mode = Játékmód: +coreattack = < A mag támadás alatt van! > +nearpoint = [[ [scarlet]AZONNAL HAGYD EL A LEDOBÁSI PONTOT[] ]\nveszélyes zóna +database = Mag adatbázis +savegame = Játék mentése +loadgame = Játék betöltése +joingame = Csatlakozás játékhoz +customgame = Speciális játék +newgame = Új játék +none = +minimap = Minitérkép +position = Pozíció +close = Bezárás +website = Weboldal +quit = Kilépés +save.quit = Mentés és kilépés +maps = Térképek +maps.browse = Térképek böngészése +continue = Folytatás +maps.none = [lightgray]Nincsen térkép! +invalid = Érvénytelen +pickcolor = Szín kiválasztása +preparingconfig = Konfiguráció előkészítése +preparingcontent = Tartalom előkészítése +uploadingcontent = Tartalom feltöltése +uploadingpreviewfile = Előnézet feltöltése +committingchanges = Változások mentése +done = Kész +feature.unsupported = Az eszköz nem támogatja a funkciót. + +mods.alphainfo = Figyelem! a modok alfa állapotban vannak, és[scarlet] nagyon sok lehet benne a hiba[].\nJelentsd be az esetleges hibákat a Mindustry GitHubon vagy a Discordon. +mods.alpha = [accent](Alfa) +mods = Modok +mods.none = [LIGHT_GRAY]Nincsen Mod! +mods.guide = Mod készítési útmutató +mods.report = Hiba bejelentése +mods.openfolder = Mod mappa +mods.reload = Reload +mods.reloadexit = The game will now exit, to reload mods. +mod.display = [gray]Mod:[orange] {0} +mod.enabled = [lightgray]Aktív +mod.disabled = [scarlet]Inaktív +mod.disable = Letiltás +mod.content = Content: +mod.delete.error = Nem lehet törölni a Modot. Lehet, hogy egy másik folyamat használja. +mod.requiresversion = [scarlet]Minimális játék verzió: [accent]{0} +mod.missingdependencies = [scarlet]Hiányzó függőségek: {0} +mod.erroredcontent = [scarlet]Tartalom hiba +mod.errors = Hiba történt a tartalom betöltése közben. +mod.noerrorplay = [scarlet]Vannak hibás Modok.[] Töröld le vagy javítsd ki a játék előtt. +mod.nowdisabled = [scarlet]A '{0}' Modnak nincsen megfelelő függősége:[accent] {1}\n[lightgray]Ezeket előbb le kell tölteni.\nEz a Mod automatikusan törölve lesz. +mod.enable = Engedélyezés +mod.requiresrestart = A játék kilép a módosítások alkalmazásához. +mod.reloadrequired = [scarlet]Újratöltés szükséges +mod.import = Mod importálása +mod.import.file = Import File +mod.import.github = GitHub Mod importálása +mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source! +mod.item.remove = Ez az elem része a [accent] '{0}'[] Modnak. A törléshez távolítsd el a Modot. +mod.remove.confirm = Ez a Mod törölve lesz. +mod.author = [LIGHT_GRAY]Készítő:[] {0} +mod.missing = Ez a mentés nemrég törölt vagy frissített Modokat tartalmaz. Elképzelhető, hogy nem fog működni. Biztosan betöltöd?\n[lightgray]Modok:\n{0} +mod.preview.missing = Mielőtt publikálod ezt a modot a workshopra, adj hozzá egy borítóképet.\nKészíts egy[accent] preview.png[] nevű képet a mod mappájába, majd próbáld újra. +mod.folder.missing = Csak mappa formában lehet feltölteni a workshopra.\nHogy átalakítsd, csomagold ki a ZIP-et egy mappába és töröld le a régit, Majd indítsd újra a játékot vagy töltsd újra a modot. +mod.scripts.disable = Your device does not support mods with scripts. You must disable these mods to play the game. + +about.button = Közreműködők +name = Név: +noname = Válassz egy[accent] nevet[] előbb. +filename = Fájl név: +unlocked = Új tartalom kinyitva! +completed = [accent]Kész +techtree = Tech Tree +research.list = [lightgray]Fedezd fel: +research = Felfedezés +researched = [lightgray]{0} felfedezve. +players = {0} játékos +players.single = {0} játékos +players.search = keresés +players.notfound = [gray]nincsen játékos +server.closing = [accent]Szerver bezárása... +server.kicked.kick = Ki lettél rúgva a szerverről! +server.kicked.whitelist = Nem vagy a fehérlistán. +server.kicked.serverClose = A szerver be lett zárva. +server.kicked.vote = Le lettél szavazva. Viszlát. +server.kicked.clientOutdated = Elavult verziót használsz! Frissítsd a játékot! +server.kicked.serverOutdated = Elavult a szerver! Kérd meg a tulajdonost, hogy frissítse! +server.kicked.banned = Ki vagy tiltva a szerverről. +server.kicked.typeMismatch = Ez a szerver nem kompatibilis a jelenlegi verzióddal. +server.kicked.playerLimit = Ez a szerver tele van. Várd ki a sorodat. +server.kicked.recentKick = Nemrég ki lettél rúgva.\nVárj egy kicsit. +server.kicked.nameInUse = Már van egy ilyen nevű játékos. +server.kicked.nameEmpty = A kiválasztott név érvénytelen. +server.kicked.idInUse = Már csatlakozva vagy erre a szerverre! Nem lehet egyszerre két fiókot használni. +server.kicked.customClient = Ez a szerver nem támogatja a saját készítésű buildeket. Használj egy hivatalos változatot. +server.kicked.gameover = Vége a játéknak! +server.kicked.serverRestarting = Ez a szerver újraindul. +server.versions = Te verziód:[accent] {0}[]\nSzerver verzió:[accent] {1}[] +host.info = The [accent]host[] button hosts a server on port [scarlet]6567[]. \nAnybody on the same [lightgray]wifi or local network[] should be able to see your server in their server list.\n\nIf you want people to be able to connect from anywhere by IP, [accent]port forwarding[] is required.\n\n[lightgray]Note: If someone is experiencing trouble connecting to your LAN game, make sure you have allowed Mindustry access to your local network in your firewall settings. Note that public networks sometimes do not allow server discovery. +join.info = Here, you can enter a [accent]server IP[] to connect to, or discover [accent]local network[] or [accent]global[] servers to connect to.\nBoth LAN and WAN multiplayer is supported.\n\n[lightgray]If you want to connect to someone by IP, you would need to ask the host for their IP, which can be found by googling "my ip" from their device. +hostserver = Másik játékos meghívása +invitefriends = Barátok meghívása +hostserver.mobile = JátékosMeghívása +host = meghívás +hosting = [accent]Szerver megnyitása... +hosts.refresh = Frissítés +hosts.discovering = LAN játék keresése +hosts.discovering.any = Játék keresése +server.refreshing = Szerver frissítése +hosts.none = [lightgray]Nincsen helyi játék! +host.invalid = [scarlet]Nem sikerült csatlakozni. + +servers.local = Lokális Szerverek +servers.remote = Távoli Szerverek +servers.global = Közösségi szerverek + +trace = Játékos követése +trace.playername = Játékos neve: [accent]{0} +trace.ip = IP: [accent]{0} +trace.id = Azonosító: [accent]{0} +trace.mobile = Mobil kliens: [accent]{0} +trace.modclient = Nemhivatalos kliens: [accent]{0} +invalidid = Érvénytelen kliens ID! Submit a bug report. +server.bans = Tiltások +server.bans.none = Nincsenek tiltott játékosok! +server.admins = Adminok +server.admins.none = Nincsen admin! +server.add = Szerver hozzáadása +server.delete = Biztosan törlöd ezt a szervert? +server.edit = Szerver szerkesztése +server.outdated = [crimson]Elavult szerver![] +server.outdated.client = [crimson]Elavult kliens![] +server.version = [gray]v{0} {1} +server.custombuild = [accent]Saját Build +confirmban = Biztosan tiltod ezt a játékost? +confirmkick = Biztosan kirúgod ezt a játékost? +confirmvotekick = Biztosan ki akarod rúgatni ezt a játékost? +confirmunban = Biztosan újra engedélyezed ezt a játékost? +confirmadmin = Biztosan hozzá akarod adni ezt a játékost az adminokhoz? +confirmunadmin = Biztosan meg akarod szűntetni ennek a játékosnak az admin szátuszát? +joingame.title = Csatlakozás +joingame.ip = Cím: +disconnect = Leválasztva. +disconnect.error = Csatlakozási hiba. +disconnect.closed = Csatlakozás bezárva. +disconnect.timeout = Időtúllépés. +disconnect.data = Nem sikerült betölteni az adatokat! +cantconnect = Nem sikerült csatlakozni ehhez: ([accent]{0}[]). +connecting = [accent]Csatlakozás... +connecting.data = [accent]Betöltés... +server.port = Port: +server.addressinuse = Már van ilyen cím! +server.invalidport = Érvénytelen port! +server.error = [crimson]Nem sikerült megnyitni a szervert. +save.new = Új mentés +save.overwrite = Biztosan felülírod\nezt a mentést? +overwrite = Felülírás +save.none = Nem található mentés! +savefail = Nem sikerült menteni! +save.delete.confirm = Biztosan törlöd ezt a mentést? +save.delete = Törlés +save.export = Exportálás +save.import.invalid = [accent]Ez a mentés érvénytelen! +save.import.fail = [crimson]Nem sikerült importálni a[accent]{0}[] mentést +save.export.fail = [crimson]Nem sikerült exportálni a[accent]{0}[] mentést +save.import = Importálás +save.newslot = Név: +save.rename = Átnevezés +save.rename.text = Új név: +selectslot = Válassz ki egy mentést. +slot = [accent]Slot {0} +editmessage = Üzenet szerkesztése +save.corrupted = Érvénytelen fájl! +empty = <üres> +on = Be +off = Ki +save.autosave = Automatikus mentés: {0} +save.map = Térkép: {0} +save.wave = Hullám: {0} +save.mode = Mód: {0} +save.date = Utolsó Mentés: {0} +save.playtime = Játékidő: {0} +warning = Figyelmeztetés. +confirm = Rendben +delete = Törlés +view.workshop = Megtekintés a Workshopban +workshop.listing = Workshop Listázás szerkesztése +ok = OK +open = Megnyitás +customize = Szabályok módosítása +cancel = Mégse +openlink = Link megnyitása +copylink = Link másolása +back = Vissza +data.export = Adatok Exportálása +data.import = Adatok Importálása +data.openfolder = Adat mappa megnyitása +data.exported = Adat exportálva. +data.invalid = Érvénytelen adatok. +data.import.confirm = Külső adat importálása felülírja[scarlet] minden[] jelenlegi állapotodat.\n[accent]Nem lehet visszavonni![]\n\nAmint kész az importálás, kilép a játék. +quit.confirm = Biztos kilépsz? +quit.confirm.tutorial = Biztosan tudod, mit csinálsz?\nA bevezetőt megtalálod itt:[accent] Beállítások->Játék->Bevezető újrajátszása[] +loading = [accent]Betöltés... +reloading = [accent]Reloading Mods... +saving = [accent]Saving... +respawn = [accent][[{0}][] to respawn in core +cancelbuilding = [accent][[{0}][] to clear plan +selectschematic = [accent][[{0}][] to select+copy +pausebuilding = [accent][[{0}][] to pause building +resumebuilding = [scarlet][[{0}][] to resume building +wave = [accent]{0}. hullám +wave.waiting = [lightgray]Következő hullám: {0} +wave.waveInProgress = [lightgray]Wave in progress +waiting = [lightgray]Várakozás... +waiting.players = Waiting for players... +wave.enemies = [lightgray]{0} ellenség maradt +wave.enemy = [lightgray]{0} ellenség maradt +loadimage = Load Image +saveimage = Save Image +unknown = Unknown +custom = Custom +builtin = Built-In +map.delete.confirm = Are you sure you want to delete this map? This action cannot be undone! +map.random = [accent]Random Map +map.nospawn = This map does not have any cores for the player to spawn in! Add a[accent] orange[] core to this map in the editor. +map.nospawn.pvp = This map does not have any enemy cores for player to spawn into! Add[SCARLET] non-orange[] cores to this map in the editor. +map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor. +map.invalid = Error loading map: corrupted or invalid map file. +workshop.update = Update Item +workshop.error = Error fetching workshop details: {0} +map.publish.confirm = Are you sure you want to publish this map?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your maps will not show up! +workshop.menu = Select what you would like to do with this item. +workshop.info = Item Info +changelog = Changelog (optional): +eula = Steam EULA +missing = This item has been deleted or moved.\n[lightgray]The workshop listing has now been automatically un-linked. +publishing = [accent]Publishing... +publish.confirm = Are you sure you want to publish this?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your items will not show up! +publish.error = Error publishing item: {0} +steam.error = Failed to initialize Steam services.\nError: {0} + +editor.brush = Brush +editor.openin = Open In Editor +editor.oregen = Ore Generation +editor.oregen.info = Ore Generation: +editor.mapinfo = Map Info +editor.author = Author: +editor.description = Description: +editor.nodescription = A map must have a description of at least 4 characters before being published. +editor.waves = Waves: +editor.rules = Rules: +editor.generation = Generation: +editor.ingame = Edit In-Game +editor.publish.workshop = Publish On Workshop +editor.newmap = New Map +workshop = Workshop +waves.title = Waves +waves.remove = Remove +waves.never = +waves.every = every +waves.waves = wave(s) +waves.perspawn = per spawn +waves.shields = shields/wave +waves.to = to +waves.guardian = Guardian +waves.preview = Preview +waves.edit = Edit... +waves.copy = Copy to Clipboard +waves.load = Load from Clipboard +waves.invalid = Invalid waves in clipboard. +waves.copied = Waves copied. +waves.none = No enemies defined.\nNote that empty wave layouts will automatically be replaced with the default layout. +editor.default = [lightgray] +details = Details... +edit = Edit... +editor.name = Name: +editor.spawn = Spawn Unit +editor.removeunit = Remove Unit +editor.teams = Teams +editor.errorload = Error loading file. +editor.errorsave = Error saving file. +editor.errorimage = That's an image, not a map.\n\nIf you want to import a 3.5/build 40 map, use the 'Import Legacy Map' button in the editor. +editor.errorlegacy = This map is too old, and uses a legacy map format that is no longer supported. +editor.errornot = This is not a map file. +editor.errorheader = This map file is either not valid or corrupt. +editor.errorname = Map has no name defined. Are you trying to load a save file? +editor.update = Update +editor.randomize = Randomize +editor.apply = Apply +editor.generate = Generate +editor.resize = Resize +editor.loadmap = Load Map +editor.savemap = Save Map +editor.saved = Saved! +editor.save.noname = Your map does not have a name! Set one in the 'map info' menu. +editor.save.overwrite = Your map overwrites a built-in map! Pick a different name in the 'map info' menu. +editor.import.exists = [scarlet]Unable to import:[] a built-in map named '{0}' already exists! +editor.import = Import... +editor.importmap = Import Map +editor.importmap.description = Import an already existing map +editor.importfile = Import File +editor.importfile.description = Import an external map file +editor.importimage = Import Legacy Map +editor.importimage.description = Import an external map image file +editor.export = Export... +editor.exportfile = Export File +editor.exportfile.description = Export a map file +editor.exportimage = Export Terrain Image +editor.exportimage.description = Export a map image file +editor.loadimage = Import Terrain +editor.saveimage = Export Terrain +editor.unsaved = [scarlet]You have unsaved changes![]\nAre you sure you want to exit? +editor.resizemap = Resize Map +editor.mapname = Map Name: +editor.overwrite = [accent]Warning!\nThis overwrites an existing map. +editor.overwrite.confirm = [scarlet]Warning![] A map with this name already exists. Are you sure you want to overwrite it? +editor.exists = A map with this name already exists. +editor.selectmap = Select a map to load: + +toolmode.replace = Replace +toolmode.replace.description = Draws only on solid blocks. +toolmode.replaceall = Replace All +toolmode.replaceall.description = Replace all blocks in map. +toolmode.orthogonal = Orthogonal +toolmode.orthogonal.description = Draws only orthogonal lines. +toolmode.square = Square +toolmode.square.description = Square brush. +toolmode.eraseores = Erase Ores +toolmode.eraseores.description = Erase only ores. +toolmode.fillteams = Fill Teams +toolmode.fillteams.description = Fill teams instead of blocks. +toolmode.drawteams = Draw Teams +toolmode.drawteams.description = Draw teams instead of blocks. + +filters.empty = [lightgray]No filters! Add one with the button below. +filter.distort = Distort +filter.noise = Noise +filter.enemyspawn = Enemy Spawn Select +filter.corespawn = Core Select +filter.median = Median +filter.oremedian = Ore Median +filter.blend = Blend +filter.defaultores = Default Ores +filter.ore = Ore +filter.rivernoise = River Noise +filter.mirror = Mirror +filter.clear = Clear +filter.option.ignore = Ignore +filter.scatter = Scatter +filter.terrain = Terrain +filter.option.scale = Scale +filter.option.chance = Chance +filter.option.mag = Magnitude +filter.option.threshold = Threshold +filter.option.circle-scale = Circle Scale +filter.option.octaves = Octaves +filter.option.falloff = Falloff +filter.option.angle = Angle +filter.option.amount = Amount +filter.option.block = Block +filter.option.floor = Floor +filter.option.flooronto = Target Floor +filter.option.wall = Wall +filter.option.ore = Ore +filter.option.floor2 = Secondary Floor +filter.option.threshold2 = Secondary Threshold +filter.option.radius = Radius +filter.option.percentile = Percentile + +width = Szélesség: +height = Magasság: +menu = Menü +play = Indítás +campaign = Campaign +load = Load +save = Save +fps = FPS: {0} +ping = Ping: {0}ms +language.restart = Please restart your game for the language settings to take effect. +settings = Beállítások +tutorial = Bevezető +tutorial.retake = Bevezető újrajátszása +editor = Szerkesztő +mapeditor = Térképszerkesztő + +abandon = Elhagyás +abandon.text = Ez a zóna és minden tartalma el lesz hagyva. +locked = Zárva +complete = [lightgray]Complete: +requirement.wave = Reach Wave {0} in {1} +requirement.core = Destroy Enemy Core in {0} +requirement.unlock = Unlock {0} +resume = Resume Zone:\n[lightgray]{0} +bestwave = [lightgray]Best Wave: {0} +launch = < INDÍTÁS > +launch.text = Launch +launch.title = Indítás sikeres +launch.next = [lightgray]következő lehetőség a {0}. hullámnál +launch.unable2 = [scarlet]Nem lehet ELINDÍTANI.[] +launch.confirm = This will launch all resources in your core.\nYou will not be able to return to this base. +launch.skip.confirm = If you skip now, you will not be able to launch until later waves. +uncover = Uncover +configure = Configure Loadout +loadout = Loadout +resources = Resources +bannedblocks = Banned Blocks +addall = Add All +configure.invalid = Amount must be a number between 0 and {0}. +zone.unlocked = [lightgray]{0} unlocked. +zone.requirement.complete = Requirement for {0} completed:[lightgray]\n{1} +zone.resources = [lightgray]Resources Detected: +zone.objective = [lightgray]Objective: [accent]{0} +zone.objective.survival = Survive +zone.objective.attack = Destroy Enemy Core +add = Add... +boss.health = Boss Health + +connectfail = [crimson]Connection error:\n\n[accent]{0} +error.unreachable = Server unreachable.\nIs the address spelled correctly? +error.invalidaddress = Invalid address. +error.timedout = Timed out!\nMake sure the host has port forwarding set up, and that the address is correct! +error.mismatch = Packet error:\npossible client/server version mismatch.\nMake sure you and the host have the latest version of Mindustry! +error.alreadyconnected = Already connected. +error.mapnotfound = Map file not found! +error.io = Network I/O error. +error.any = Unknown network error. +error.bloom = Failed to initialize bloom.\nYour device may not support it. + +sector.groundZero.name = Ground Zero +sector.craters.name = The Craters +sector.frozenForest.name = Frozen Forest +sector.ruinousShores.name = Ruinous Shores +sector.stainedMountains.name = Stained Mountains +sector.desolateRift.name = Desolate Rift +sector.nuclearComplex.name = Nuclear Production Complex +sector.overgrowth.name = Overgrowth +sector.tarFields.name = Tar Fields +sector.saltFlats.name = Salt Flats +sector.fungalPass.name = Fungal Pass + +sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. +sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. +sector.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. +sector.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. +sector.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. +sector.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units. +sector.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build Titan units. Destroy it. Reclaim that which was lost. +sector.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. +sector.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. +sector.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. +sector.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. + +settings.language = Language +settings.data = Game Data +settings.reset = Reset to Defaults +settings.rebind = Rebind +settings.resetKey = Reset +settings.controls = Controls +settings.game = Game +settings.sound = Sound +settings.graphics = Graphics +settings.cleardata = Clear Game Data... +settings.clear.confirm = Are you sure you want to clear this data?\nWhat is done cannot be undone! +settings.clearall.confirm = [scarlet]WARNING![]\nThis will clear all data, including saves, maps, unlocks and keybinds.\nOnce you press 'ok' the game will wipe all data and automatically exit. +paused = [accent]< Paused > +clear = Clear +banned = [scarlet]Banned +unplaceable.sectorcaptured = [scarlet]Requires captured sector +yes = Yes +no = No +info.title = Info +error.title = [crimson]An error has occured +error.crashtitle = An error has occured +unit.nobuild = [scarlet]Unit can't build +blocks.input = Input +blocks.output = Output +blocks.booster = Booster +blocks.tiles = Required Tiles +blocks.affinities = Affinities +block.unknown = [lightgray]??? +blocks.powercapacity = Power Capacity +blocks.powershot = Power/Shot +blocks.damage = Damage +blocks.targetsair = Targets Air +blocks.targetsground = Targets Ground +blocks.itemsmoved = Move Speed +blocks.launchtime = Time Between Launches +blocks.shootrange = Range +blocks.size = Size +blocks.liquidcapacity = Liquid Capacity +blocks.powerrange = Power Range +blocks.powerconnections = Max Connections +blocks.poweruse = Power Use +blocks.powerdamage = Power/Damage +blocks.itemcapacity = Item Capacity +blocks.basepowergeneration = Base Power Generation +blocks.productiontime = Production Time +blocks.repairtime = Block Full Repair Time +blocks.speedincrease = Speed Increase +blocks.range = Range +blocks.drilltier = Drillables +blocks.drillspeed = Base Drill Speed +blocks.boosteffect = Boost Effect +blocks.maxunits = Max Active Units +blocks.health = Health +blocks.buildtime = Build Time +blocks.buildcost = Build Cost +blocks.inaccuracy = Inaccuracy +blocks.shots = Shots +blocks.reload = Shots/Second +blocks.ammo = Ammo + +bar.drilltierreq = Better Drill Required +bar.noresources = Missing Resources +bar.corereq = Core Base Required +bar.drillspeed = Drill Speed: {0}/s +bar.pumpspeed = Pump Speed: {0}/s +bar.efficiency = Efficiency: {0}% +bar.powerbalance = Power: {0}/s +bar.powerstored = Stored: {0}/{1} +bar.poweramount = Power: {0} +bar.poweroutput = Power Output: {0} +bar.items = Items: {0} +bar.capacity = Capacity: {0} +bar.unitcap = {0} {1}/{2} +bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled] +bar.liquid = Liquid +bar.heat = Heat +bar.power = Power +bar.progress = Build Progress +bar.input = Input +bar.output = Output + +bullet.damage = [stat]{0}[lightgray] damage +bullet.splashdamage = [stat]{0}[lightgray] area dmg ~[stat] {1}[lightgray] tiles +bullet.incendiary = [stat]incendiary +bullet.homing = [stat]homing +bullet.shock = [stat]shock +bullet.frag = [stat]frag +bullet.knockback = [stat]{0}[lightgray] knockback +bullet.freezing = [stat]freezing +bullet.tarred = [stat]tarred +bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier +bullet.reload = [stat]{0}[lightgray]x fire rate + +unit.blocks = blocks +unit.powersecond = power units/second +unit.liquidsecond = liquid units/second +unit.itemssecond = items/second +unit.liquidunits = liquid units +unit.powerunits = power units +unit.degrees = degrees +unit.seconds = seconds +unit.persecond = /sec +unit.timesspeed = x speed +unit.percent = % +unit.items = items +unit.thousands = k +unit.millions = mil +category.general = General +category.power = Power +category.liquids = Liquids +category.items = Items +category.crafting = Input/Output +category.shooting = Shooting +category.optional = Optional Enhancements +setting.landscape.name = Lock Landscape +setting.shadows.name = Shadows +setting.blockreplace.name = Automatic Block Suggestions +setting.linear.name = Linear Filtering +setting.hints.name = Hints +setting.flow.name = Display Resource Flow Rate +setting.buildautopause.name = Auto-Pause Building +setting.mapcenter.name = Auto Center Map To Player +setting.animatedwater.name = Animated Water +setting.animatedshields.name = Animated Shields +setting.antialias.name = Antialias[lightgray] (requires restart)[] +setting.playerindicators.name = Player Indicators +setting.indicators.name = Enemy/Ally Indicators +setting.autotarget.name = Auto-Target +setting.keyboard.name = Mouse+Keyboard Controls +setting.touchscreen.name = Touchscreen Controls +setting.fpscap.name = Max FPS +setting.fpscap.none = None +setting.fpscap.text = {0} FPS +setting.uiscale.name = UI Scaling[lightgray] (require restart)[] +setting.swapdiagonal.name = Always Diagonal Placement +setting.difficulty.training = Training +setting.difficulty.easy = Easy +setting.difficulty.normal = Normal +setting.difficulty.hard = Hard +setting.difficulty.insane = Insane +setting.difficulty.name = Difficulty: +setting.screenshake.name = Screen Shake +setting.effects.name = Display Effects +setting.destroyedblocks.name = Display Destroyed Blocks +setting.blockstatus.name = Display Block Status +setting.conveyorpathfinding.name = Conveyor Placement Pathfinding +setting.sensitivity.name = Controller Sensitivity +setting.saveinterval.name = Save Interval +setting.seconds = {0} seconds +setting.blockselecttimeout.name = Block Select Timeout +setting.milliseconds = {0} milliseconds +setting.fullscreen.name = Fullscreen +setting.borderlesswindow.name = Borderless Window[lightgray] (may require restart) +setting.fps.name = Show FPS & Ping +setting.smoothcamera.name = Smooth Camera +setting.blockselectkeys.name = Show Block Select Keys +setting.vsync.name = VSync +setting.pixelate.name = Pixelate +setting.minimap.name = Show Minimap +setting.coreitems.name = Display Core Items (WIP) +setting.position.name = Show Player Position +setting.musicvol.name = Music Volume +setting.atmosphere.name = Show Planet Atmosphere +setting.ambientvol.name = Ambient Volume +setting.mutemusic.name = Mute Music +setting.sfxvol.name = SFX Volume +setting.mutesound.name = Mute Sound +setting.crashreport.name = Send Anonymous Crash Reports +setting.savecreate.name = Auto-Create Saves +setting.publichost.name = Public Game Visibility +setting.playerlimit.name = Player Limit +setting.chatopacity.name = Chat Opacity +setting.lasersopacity.name = Power Laser Opacity +setting.bridgeopacity.name = Bridge Opacity +setting.playerchat.name = Display Player Bubble Chat +public.confirm = Do you want to make your game public?\n[accent]Anyone will be able to join your games.\n[lightgray]This can be changed later in Settings->Game->Public Game Visibility. +public.beta = Note that beta versions of the game cannot make public lobbies. +uiscale.reset = UI scale has been changed.\nPress "OK" to confirm this scale.\n[scarlet]Reverting and exiting in[accent] {0}[] seconds... +uiscale.cancel = Cancel & Exit +setting.bloom.name = Bloom +keybind.title = Rebind Keys +keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only basic movement is supported. +category.general.name = General +category.view.name = View +category.multiplayer.name = Multiplayer +category.blocks.name = Block Select +command.attack = Attack +command.rally = Rally +command.retreat = Retreat +placement.blockselectkeys = \n[lightgray]Key: [{0}, +keybind.respawn.name = Respawn +keybind.control.name = Control Unit +keybind.clear_building.name = Clear Building +keybind.press = Press a key... +keybind.press.axis = Press an axis or key... +keybind.screenshot.name = Map Screenshot +keybind.toggle_power_lines.name = Toggle Power Lasers +keybind.toggle_block_status.name = Toggle Block Statuses +keybind.move_x.name = Move X +keybind.move_y.name = Move Y +keybind.mouse_move.name = Follow Mouse +keybind.boost.name = Boost +keybind.schematic_select.name = Select Region +keybind.schematic_menu.name = Schematic Menu +keybind.schematic_flip_x.name = Flip Schematic X +keybind.schematic_flip_y.name = Flip Schematic Y +keybind.category_prev.name = Previous Category +keybind.category_next.name = Next Category +keybind.block_select_left.name = Block Select Left +keybind.block_select_right.name = Block Select Right +keybind.block_select_up.name = Block Select Up +keybind.block_select_down.name = Block Select Down +keybind.block_select_01.name = Category/Block Select 1 +keybind.block_select_02.name = Category/Block Select 2 +keybind.block_select_03.name = Category/Block Select 3 +keybind.block_select_04.name = Category/Block Select 4 +keybind.block_select_05.name = Category/Block Select 5 +keybind.block_select_06.name = Category/Block Select 6 +keybind.block_select_07.name = Category/Block Select 7 +keybind.block_select_08.name = Category/Block Select 8 +keybind.block_select_09.name = Category/Block Select 9 +keybind.block_select_10.name = Category/Block Select 10 +keybind.fullscreen.name = Toggle Fullscreen +keybind.select.name = Select/Shoot +keybind.diagonal_placement.name = Diagonal Placement +keybind.pick.name = Pick Block +keybind.break_block.name = Break Block +keybind.deselect.name = Deselect +keybind.shoot.name = Shoot +keybind.zoom.name = Zoom +keybind.menu.name = Menu +keybind.pause.name = Pause +keybind.pause_building.name = Pause/Resume Building +keybind.minimap.name = Minimap +keybind.chat.name = Chat +keybind.player_list.name = Player List +keybind.console.name = Console +keybind.rotate.name = Rotate +keybind.rotateplaced.name = Rotate Existing (Hold) +keybind.toggle_menus.name = Toggle Menus +keybind.chat_history_prev.name = Chat History Prev +keybind.chat_history_next.name = Chat History Next +keybind.chat_scroll.name = Chat Scroll +keybind.drop_unit.name = Drop Unit +keybind.zoom_minimap.name = Zoom Minimap +mode.help.title = Description of modes +mode.survival.name = Túlélő +mode.survival.description = The normal mode. Limited resources and automatic incoming waves.\n[gray]Requires enemy spawns in the map to play. +mode.sandbox.name = Homokozó +mode.sandbox.description = Infinite resources and no timer for waves. +mode.editor.name = Editor +mode.pvp.name = PvP +mode.pvp.description = Fight against other players locally.\n[gray]Requires at least 2 differently-colored cores in the map to play. +mode.attack.name = Támadás +mode.attack.description = Destroy the enemy's base. \n[gray]Requires a red core in the map to play. +mode.custom = Custom Rules + +rules.infiniteresources = Infinite Resources +rules.reactorexplosions = Reactor Explosions +rules.wavetimer = Wave Timer +rules.waves = Waves +rules.attack = Attack Mode +rules.enemyCheat = Infinite AI (Red Team) Resources +rules.blockhealthmultiplier = Block Health Multiplier +rules.blockdamagemultiplier = Block Damage Multiplier +rules.unitbuildspeedmultiplier = Unit Production Speed Multiplier +rules.unithealthmultiplier = Unit Health Multiplier +rules.unitdamagemultiplier = Unit Damage Multiplier +rules.enemycorebuildradius = Enemy Core No-Build Radius:[lightgray] (tiles) +rules.wavespacing = Wave Spacing:[lightgray] (sec) +rules.buildcostmultiplier = Build Cost Multiplier +rules.buildspeedmultiplier = Build Speed Multiplier +rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier +rules.waitForWaveToEnd = Waves Wait for Enemies +rules.dropzoneradius = Drop Zone Radius:[lightgray] (tiles) +rules.unitammo = Units Require Ammo +rules.title.waves = Waves +rules.title.resourcesbuilding = Resources & Building +rules.title.enemy = Enemies +rules.title.unit = Units +rules.title.experimental = Experimental +rules.title.environment = Environment +rules.lighting = Lighting +rules.ambientlight = Ambient Light +rules.solarpowermultiplier = Solar Power Multiplier + +content.item.name = Items +content.liquid.name = Liquids +content.unit.name = Units +content.block.name = Blocks +item.copper.name = Copper +item.lead.name = Lead +item.coal.name = Coal +item.graphite.name = Graphite +item.titanium.name = Titanium +item.thorium.name = Thorium +item.silicon.name = Silicon +item.plastanium.name = Plastanium +item.phase-fabric.name = Phase Fabric +item.surge-alloy.name = Surge Alloy +item.spore-pod.name = Spore Pod +item.sand.name = Sand +item.blast-compound.name = Blast Compound +item.pyratite.name = Pyratite +item.metaglass.name = Metaglass +item.scrap.name = Scrap +liquid.water.name = Water +liquid.slag.name = Slag +liquid.oil.name = Oil +liquid.cryofluid.name = Cryofluid +item.explosiveness = [lightgray]Robbanékonyság: {0}% +item.flammability = [lightgray]Gyúlékonyság: {0}% +item.radioactivity = [lightgray]Radioaktivitás: {0}% +unit.health = [lightgray]Health: {0} +unit.speed = [lightgray]Sebesség: {0} +unit.weapon = [lightgray]Weapon: {0} +unit.itemcapacity = [lightgray]Item Capacity: {0} +unit.minespeed = [lightgray]Mining Speed: {0}% +unit.minepower = [lightgray]Mining Power: {0} +unit.ability = [lightgray]Ability: {0} +unit.buildspeed = [lightgray]Building Speed: {0}% +liquid.heatcapacity = [lightgray]Hő hapacitás: {0} +liquid.viscosity = [lightgray]Viszkozitás: {0} +liquid.temperature = [lightgray]Hőmérséklet: {0} + +unit.dagger.name = Dagger +unit.mace.name = Mace +unit.fortress.name = Fortress +unit.nova.name = Nova +unit.pulsar.name = Pulsar +unit.quasar.name = Quasar +unit.crawler.name = Crawler +unit.atrax.name = Atrax +unit.spiroct.name = Spiroct +unit.arkyid.name = Arkyid +unit.flare.name = Flare +unit.horizon.name = Horizon +unit.zenith.name = Zenith +unit.antumbra.name = Antumbra +unit.eclipse.name = Eclipse +unit.mono.name = Mono +unit.poly.name = Poly +unit.mega.name = Mega +unit.risse.name = Risse +unit.minke.name = Minke +unit.bryde.name = Bryde +unit.alpha.name = Alpha +unit.beta.name = Beta +unit.gamma.name = Gamma + +block.parallax.name = Parallax +block.cliff.name = Cliff +block.sand-boulder.name = Sand Boulder +block.grass.name = Grass +block.slag.name = Slag +block.salt.name = Salt +block.saltrocks.name = Salt Rocks +block.pebbles.name = Pebbles +block.tendrils.name = Tendrils +block.sandrocks.name = Sand Rocks +block.spore-pine.name = Spore Pine +block.sporerocks.name = Spore Rocks +block.rock.name = Rock +block.snowrock.name = Snow Rock +block.snow-pine.name = Snow Pine +block.shale.name = Shale +block.shale-boulder.name = Shale Boulder +block.moss.name = Moss +block.shrubs.name = Shrubs +block.spore-moss.name = Spore Moss +block.shalerocks.name = Shale Rocks +block.scrap-wall.name = Scrap Wall +block.scrap-wall-large.name = Large Scrap Wall +block.scrap-wall-huge.name = Huge Scrap Wall +block.scrap-wall-gigantic.name = Gigantic Scrap Wall +block.thruster.name = Thruster +block.kiln.name = Kiln +block.graphite-press.name = Graphite Press +block.multi-press.name = Multi-Press +block.constructing = {0} [lightgray](Constructing) +block.spawn.name = Enemy Spawn +block.core-shard.name = Core: Shard +block.core-foundation.name = Core: Foundation +block.core-nucleus.name = Core: Nucleus +block.deepwater.name = Deep Water +block.water.name = Water +block.tainted-water.name = Tainted Water +block.darksand-tainted-water.name = Dark Sand Tainted Water +block.tar.name = Tar +block.stone.name = Stone +block.sand.name = Sand +block.darksand.name = Dark Sand +block.ice.name = Ice +block.snow.name = Snow +block.craters.name = Craters +block.sand-water.name = Sand water +block.darksand-water.name = Dark Sand Water +block.char.name = Char +block.holostone.name = Holo stone +block.ice-snow.name = Ice Snow +block.rocks.name = Rocks +block.icerocks.name = Ice rocks +block.snowrocks.name = Snow Rocks +block.dunerocks.name = Dune Rocks +block.pine.name = Pine +block.white-tree-dead.name = White Tree Dead +block.white-tree.name = White Tree +block.spore-cluster.name = Spore Cluster +block.metal-floor.name = Metal Floor 1 +block.metal-floor-2.name = Metal Floor 2 +block.metal-floor-3.name = Metal Floor 3 +block.metal-floor-5.name = Metal Floor 4 +block.metal-floor-damaged.name = Metal Floor Damaged +block.dark-panel-1.name = Dark Panel 1 +block.dark-panel-2.name = Dark Panel 2 +block.dark-panel-3.name = Dark Panel 3 +block.dark-panel-4.name = Dark Panel 4 +block.dark-panel-5.name = Dark Panel 5 +block.dark-panel-6.name = Dark Panel 6 +block.dark-metal.name = Dark Metal +block.ignarock.name = Igna Rock +block.hotrock.name = Hot Rock +block.magmarock.name = Magma Rock +block.cliffs.name = Cliffs +block.copper-wall.name = Copper Wall +block.copper-wall-large.name = Large Copper Wall +block.titanium-wall.name = Titanium Wall +block.titanium-wall-large.name = Large Titanium Wall +block.plastanium-wall.name = Plastanium Wall +block.plastanium-wall-large.name = Large Plastanium Wall +block.phase-wall.name = Phase Wall +block.phase-wall-large.name = Large Phase Wall +block.thorium-wall.name = Thorium Wall +block.thorium-wall-large.name = Large Thorium Wall +block.door.name = Door +block.door-large.name = Large Door +block.duo.name = Duo +block.scorch.name = Scorch +block.scatter.name = Scatter +block.hail.name = Hail +block.lancer.name = Lancer +block.conveyor.name = Conveyor +block.titanium-conveyor.name = Titanium Conveyor +block.plastanium-conveyor.name = Plastanium Conveyor +block.armored-conveyor.name = Armored Conveyor +block.armored-conveyor.description = Moves items at the same speed as titanium conveyors, but possesses more armor. Does not accept inputs from the sides from anything but other conveyor belts. +block.junction.name = Junction +block.router.name = Router +block.distributor.name = Distributor +block.sorter.name = Sorter +block.inverted-sorter.name = Inverted Sorter +block.message.name = Message +block.illuminator.name = Illuminator +block.illuminator.description = A small, compact, configurable light source. Requires power to function. +block.overflow-gate.name = Overflow Gate +block.underflow-gate.name = Underflow Gate +block.silicon-smelter.name = Silicon Smelter +block.phase-weaver.name = Phase Weaver +block.pulverizer.name = Pulverizer +block.cryofluidmixer.name = Cryofluid Mixer +block.melter.name = Melter +block.incinerator.name = Incinerator +block.spore-press.name = Spore Press +block.separator.name = Separator +block.coal-centrifuge.name = Coal Centrifuge +block.power-node.name = Power Node +block.power-node-large.name = Large Power Node +block.surge-tower.name = Surge Tower +block.diode.name = Battery Diode +block.battery.name = Battery +block.battery-large.name = Large Battery +block.combustion-generator.name = Combustion Generator +block.turbine-generator.name = Steam Generator +block.differential-generator.name = Differential Generator +block.impact-reactor.name = Impact Reactor +block.mechanical-drill.name = Mechanical Drill +block.pneumatic-drill.name = Pneumatic Drill +block.laser-drill.name = Laser Drill +block.water-extractor.name = Water Extractor +block.cultivator.name = Cultivator +block.conduit.name = Conduit +block.mechanical-pump.name = Mechanical Pump +block.item-source.name = Item Source +block.item-void.name = Item Void +block.liquid-source.name = Liquid Source +block.liquid-void.name = Liquid Void +block.power-void.name = Power Void +block.power-source.name = Power Infinite +block.unloader.name = Unloader +block.vault.name = Vault +block.wave.name = Wave +block.swarmer.name = Swarmer +block.salvo.name = Salvo +block.ripple.name = Ripple +block.phase-conveyor.name = Phase Conveyor +block.bridge-conveyor.name = Bridge Conveyor +block.plastanium-compressor.name = Plastanium Compressor +block.pyratite-mixer.name = Pyratite Mixer +block.blast-mixer.name = Blast Mixer +block.solar-panel.name = Solar Panel +block.solar-panel-large.name = Large Solar Panel +block.oil-extractor.name = Oil Extractor +block.repair-point.name = Repair Point +block.pulse-conduit.name = Pulse Conduit +block.plated-conduit.name = Plated Conduit +block.phase-conduit.name = Phase Conduit +block.liquid-router.name = Liquid Router +block.liquid-tank.name = Liquid Tank +block.liquid-junction.name = Liquid Junction +block.bridge-conduit.name = Bridge Conduit +block.rotary-pump.name = Rotary Pump +block.thorium-reactor.name = Thorium Reactor +block.mass-driver.name = Mass Driver +block.blast-drill.name = Airblast Drill +block.thermal-pump.name = Thermal Pump +block.thermal-generator.name = Thermal Generator +block.alloy-smelter.name = Alloy Smelter +block.mender.name = Mender +block.mend-projector.name = Mend Projector +block.surge-wall.name = Surge Wall +block.surge-wall-large.name = Large Surge Wall +block.cyclone.name = Cyclone +block.fuse.name = Fuse +block.shock-mine.name = Shock Mine +block.overdrive-projector.name = Overdrive Projector +block.force-projector.name = Force Projector +block.arc.name = Arc +block.rtg-generator.name = RTG Generator +block.spectre.name = Spectre +block.meltdown.name = Meltdown +block.container.name = Container +block.launch-pad.name = Launch Pad +block.launch-pad-large.name = Large Launch Pad +block.segment.name = Segment +block.ground-factory.name = Ground Factory +block.air-factory.name = Air Factory +block.naval-factory.name = Naval Factory +block.additive-reconstructor.name = Additive Reconstructor +block.multiplicative-reconstructor.name = Multiplicative Reconstructor +block.exponential-reconstructor.name = Exponential Reconstructor +block.tetrative-reconstructor.name = Tetrative Reconstructor +block.mass-conveyor.name = Mass Conveyor +block.payload-router.name = Payload Router +block.disassembler.name = Disassembler +block.silicon-crucible.name = Silicon Crucible +block.large-overdrive-projector.name = Large Overdrive Projector +team.blue.name = blue +team.crux.name = red +team.sharded.name = orange +team.orange.name = orange +team.derelict.name = derelict +team.green.name = green +team.purple.name = purple + +tutorial.next = [lightgray] +tutorial.intro = You have entered the[scarlet] Mindustry Tutorial.[]\nUse[accent] [[WASD][] to move.\n[accent]Scroll[] to zoom in and out.\nBegin by[accent] mining copper[]. Move close to it, then tap a copper ore vein near your core to do this.\n\n[accent]{0}/{1} copper +tutorial.intro.mobile = You have entered the[scarlet] Mindustry Tutorial.[]\nSwipe the screen to move.\n[accent]Pinch with 2 fingers[] to zoom in and out.\nBegin by[accent] mining copper[]. Move close to it, then tap a copper ore vein near your core to do this.\n\n[accent]{0}/{1} copper +tutorial.drill = Mining manually is inefficient.\n[accent]Drills[] can mine automatically.\nClick the drill tab in the bottom right.\nSelect the[accent] mechanical drill[]. Place it on a copper vein by clicking.\nYou can also select the drill by tapping [accent][[2][] then [accent][[1][] quickly, regardless of which tab is open.\n[accent]Right-click[] to stop building. +tutorial.drill.mobile = Mining manually is inefficient.\n[accent]Drills[] can mine automatically.\nTap the drill tab in the bottom right.\nSelect the[accent] mechanical drill[].\nPlace it on a copper vein by tapping, then press the[accent] checkmark[] below to confirm your selection.\nPress the[accent] X button[] to cancel placement. +tutorial.blockinfo = Each block has different stats. Each drill can only mine certain ores.\nTo check a block's info and stats,[accent] tap the "?" button while selecting it in the build menu.[]\n\n[accent]Access the Mechanical Drill's stats now.[] +tutorial.conveyor = [accent]Conveyors[] are used to transport items to the core.\nMake a line of conveyors from the drill to the core.\n[accent]Hold down the mouse to place in a line.[]\nHold[accent] CTRL[] while selecting a line to place diagonally.\nUse the scrollwheel to rotate blocks before placing them.\n[accent]Place 2 conveyors with the line tool, then deliver an item into the core. +tutorial.conveyor.mobile = [accent]Conveyors[] are used to transport items to the core.\nMake a line of conveyors from the drill to the core.\n[accent] Place in a line by holding down your finger for a few seconds[] and dragging in a direction.\n\n[accent]Place 2 conveyors with the line tool, then deliver an item into the core. +tutorial.turret = Once an item enters your core, it can be used for building.\nKeep in mind that not all items can be used for building.\nItems that are not used for building, such as[accent] coal[] or[accent] scrap[], cannot be put into the core.\nDefensive structures must be built to repel the[lightgray] enemy[].\nBuild a[accent] duo turret[] near your base. +tutorial.drillturret = Duo turrets require[accent] copper ammo[] to shoot.\nPlace a drill near the turret.\nLead conveyors into the turret to supply it with copper.\n\n[accent]Ammo delivered: 0/1 +tutorial.pause = During battle, you are able to[accent] pause the game.[]\nYou may queue buildings while paused.\n\n[accent]Press space to pause. +tutorial.pause.mobile = During battle, you are able to[accent] pause the game.[]\nYou may queue buildings while paused.\n\n[accent]Press this button in the top left to pause. +tutorial.unpause = Now press space again to unpause. +tutorial.unpause.mobile = Now press it again to unpause. +tutorial.breaking = Blocks frequently need to be destroyed.\n[accent]Hold down right-click[] to destroy all blocks in a selection.[]\n\n[accent]Destroy all the scrap blocks to the left of your core using area selection. +tutorial.breaking.mobile = Blocks frequently need to be destroyed.\n[accent]Select deconstruction mode[], then tap a block to begin breaking it.\nDestroy an area by holding down your finger for a few seconds[] and dragging in a direction.\nPress the checkmark button to confirm breaking.\n\n[accent]Destroy all the scrap blocks to the left of your core using area selection. +tutorial.withdraw = In some situations, taking items directly from blocks is necessary.\nTo do this, [accent]tap a block[] with items in it, then [accent]tap the item[] in the inventory.\nMultiple items can be withdrawn by [accent]tapping and holding[].\n\n[accent]Withdraw some copper from the core.[] +tutorial.deposit = Deposit items into blocks by dragging from your ship to the destination block.\n\n[accent]Deposit your copper back into the core.[] +tutorial.waves = The[lightgray] enemy[] approaches.\n\nDefend the core for 2 waves.[accent] Click[] to shoot.\nBuild more turrets and drills. Mine more copper. +tutorial.waves.mobile = The[lightgray] enemy[] approaches.\n\nDefend the core for 2 waves. Your ship will automatically fire at enemies.\nBuild more turrets and drills. Mine more copper. +tutorial.launch = Once you reach a specific wave, you are able to[accent] launch the core[], leaving your defenses behind and[accent] obtaining all the resources in your core.[]\nThese obtained resources can then be used to research new technology.\n\n[accent]Press the launch button. + +item.copper.description = The most basic structural material. Used extensively in all types of blocks. +item.lead.description = A basic starter material. Used extensively in electronics and liquid transportation blocks. +item.metaglass.description = A super-tough glass compound. Extensively used for liquid distribution and storage. +item.graphite.description = Mineralized carbon, used for ammunition and electrical components. +item.sand.description = A common material that is used extensively in smelting, both in alloying and as a flux. +item.coal.description = Fossilized plant matter, formed long before the seeding event. Used extensively for fuel and resource production. +item.titanium.description = A rare super-light metal used extensively in liquid transportation, drills and aircraft. +item.thorium.description = A dense, radioactive metal used as structural support and nuclear fuel. +item.scrap.description = Leftover remnants of old structures and units. Contains trace amounts of many different metals. +item.silicon.description = An extremely useful semiconductor. Applications in solar panels, complex electronics and homing turret ammunition. +item.plastanium.description = A light, ductile material used in advanced aircraft and fragmentation ammunition. +item.phase-fabric.description = A near-weightless substance used in advanced electronics and self-repairing technology. +item.surge-alloy.description = An advanced alloy with unique electrical properties. +item.spore-pod.description = A pod of synthetic spores, synthesized from atmospheric concentrations for industrial purposes. Used for conversion into oil, explosives and fuel. +item.blast-compound.description = An unstable compound used in bombs and explosives. Synthesized from spore pods and other volatile substances. Use as fuel is not advised. +item.pyratite.description = An extremely flammable substance used in incendiary weapons. +liquid.water.description = The most useful liquid. Commonly used for cooling machines and waste processing. +liquid.slag.description = Various different types of molten metal mixed together. Can be separated into its constituent minerals, or sprayed at enemy units as a weapon. +liquid.oil.description = A liquid used in advanced material production. Can be converted into coal as fuel, or sprayed and set on fire as a weapon. +liquid.cryofluid.description = An inert, non-corrosive liquid created from water and titanium. Has extremely high heat capacity. Extensively used as coolant. + +block.message.description = Stores a message. Used for communication between allies. +block.graphite-press.description = Compresses chunks of coal into pure sheets of graphite. +block.multi-press.description = An upgraded version of the graphite press. Employs water and power to process coal quickly and efficiently. +block.silicon-smelter.description = Reduces sand with pure coal. Produces silicon. +block.kiln.description = Smelts sand and lead into the compound known as metaglass. Requires small amounts of power to run. +block.plastanium-compressor.description = Produces plastanium from oil and titanium. +block.phase-weaver.description = Synthesizes phase fabric from radioactive thorium and sand. Requires massive amounts of power to function. +block.alloy-smelter.description = Combines titanium, lead, silicon and copper to produce surge alloy. +block.cryofluidmixer.description = Mixes water and fine titanium powder into cryofluid. Essential for thorium reactor usage. +block.blast-mixer.description = Crushes and mixes clusters of spores with pyratite to produce blast compound. +block.pyratite-mixer.description = Mixes coal, lead and sand into highly flammable pyratite. +block.melter.description = Melts down scrap into slag for further processing or usage in wave turrets. +block.separator.description = Separates slag into its mineral components. Outputs the cooled result. +block.spore-press.description = Compresses spore pods under extreme pressure to synthesize oil. +block.pulverizer.description = Crushes scrap into fine sand. +block.coal-centrifuge.description = Solidifes oil into chunks of coal. +block.incinerator.description = Vaporizes any excess item or liquid it receives. +block.power-void.description = Voids all power inputted into it. Sandbox only. +block.power-source.description = Infinitely outputs power. Sandbox only. +block.item-source.description = Infinitely outputs items. Sandbox only. +block.item-void.description = Destroys any items. Sandbox only. +block.liquid-source.description = Infinitely outputs liquids. Sandbox only. +block.liquid-void.description = Removes any liquids. Sandbox only. +block.copper-wall.description = A cheap defensive block.\nUseful for protecting the core and turrets in the first few waves. +block.copper-wall-large.description = A cheap defensive block.\nUseful for protecting the core and turrets in the first few waves.\nSpans multiple tiles. +block.titanium-wall.description = A moderately strong defensive block.\nProvides moderate protection from enemies. +block.titanium-wall-large.description = A moderately strong defensive block.\nProvides moderate protection from enemies.\nSpans multiple tiles. +block.plastanium-wall.description = A special type of wall that absorbs electric arcs and blocks automatic power node connections. +block.plastanium-wall-large.description = A special type of wall that absorbs electric arcs and blocks automatic power node connections.\nSpans multiple tiles. +block.thorium-wall.description = A strong defensive block.\nDecent protection from enemies. +block.thorium-wall-large.description = A strong defensive block.\nDecent protection from enemies.\nSpans multiple tiles. +block.phase-wall.description = A wall coated with special phase-based reflective compound. Deflects most bullets upon impact. +block.phase-wall-large.description = A wall coated with special phase-based reflective compound. Deflects most bullets upon impact.\nSpans multiple tiles. +block.surge-wall.description = An extremely durable defensive block.\nBuilds up charge on bullet contact, releasing it randomly. +block.surge-wall-large.description = An extremely durable defensive block.\nBuilds up charge on bullet contact, releasing it randomly.\nSpans multiple tiles. +block.door.description = A small door. Can be opened or closed by tapping. +block.door-large.description = A large door. Can be opened and closed by tapping.\nSpans multiple tiles. +block.mender.description = Periodically repairs blocks in its vicinity. Keeps defenses repaired in-between waves.\nOptionally uses silicon to boost range and efficiency. +block.mend-projector.description = An upgraded version of the Mender. Repairs blocks in its vicinity.\nOptionally uses phase fabric to boost range and efficiency. +block.overdrive-projector.description = Increases the speed of nearby buildings.\nOptionally uses phase fabric to boost range and efficiency. +block.force-projector.description = Creates a hexagonal force field around itself, protecting buildings and units inside from damage.\nOverheats if too much damage is sustained. Optionally uses coolant to prevent overheating. Phase fabric can be used to increase shield size. +block.shock-mine.description = Damages enemies stepping on the mine. Nearly invisible to the enemy. +block.conveyor.description = Basic item transport block. Moves items forward and automatically deposits them into blocks. Rotatable. +block.titanium-conveyor.description = Advanced item transport block. Moves items faster than standard conveyors. +block.plastanium-conveyor.description = Moves items in batches.\nAccepts items at the back, and unloads them in three directions at the front. +block.junction.description = Acts as a bridge for two crossing conveyor belts. Useful in situations with two different conveyors carrying different materials to different locations. +block.bridge-conveyor.description = Advanced item transport block. Allows transporting items over up to 3 tiles of any terrain or building. +block.phase-conveyor.description = Advanced item transport block. Uses power to teleport items to a connected phase conveyor over several tiles. +block.sorter.description = Sorts items. If an item matches the selection, it is allowed to pass. Otherwise, the item is outputted to the left and right. +block.inverted-sorter.description = Processes items like a standard sorter, but outputs selected items to the sides instead. +block.router.description = Accepts items, then outputs them to up to 3 other directions equally. Useful for splitting the materials from one source to multiple targets.\n\n[scarlet]Never use next to production inputs, as they will get clogged by output.[] +block.distributor.description = An advanced router. Splits items to up to 7 other directions equally. +block.overflow-gate.description = Only outputs to the left and right if the front path is blocked. +block.underflow-gate.description = The opposite of an overflow gate. Outputs to the front if the left and right paths are blocked. +block.mass-driver.description = The ultimate item transport block. Collects several items and then shoots them to another mass driver over a long range. Requires power to operate. +block.mechanical-pump.description = A cheap pump with slow output, but no power consumption. +block.rotary-pump.description = An advanced pump. Pumps more liquid, but requires power. +block.thermal-pump.description = The ultimate pump. +block.conduit.description = Basic liquid transport block. Moves liquids forward. Used in conjunction with pumps and other conduits. +block.pulse-conduit.description = An advanced liquid transport block. Transports liquids faster and stores more than standard conduits. +block.plated-conduit.description = Moves liquids at the same rate as pulse conduits, but possesses more armor. Does not accept fluids from the sides by anything other than conduits.\nLeaks less. +block.liquid-router.description = Accepts liquids from one direction and outputs them to up to 3 other directions equally. Can also store a certain amount of liquid. Useful for splitting the liquids from one source to multiple targets. +block.liquid-tank.description = Stores a large amount of liquids. Use for creating buffers in situations with non-constant demand of materials or as a safeguard for cooling vital blocks. +block.liquid-junction.description = Acts as a bridge for two crossing conduits. Useful in situations with two different conduits carrying different liquids to different locations. +block.bridge-conduit.description = Advanced liquid transport block. Allows transporting liquids over up to 3 tiles of any terrain or building. +block.phase-conduit.description = Advanced liquid transport block. Uses power to teleport liquids to a connected phase conduit over several tiles. +block.power-node.description = Transmits power to connected nodes. The node will receive power from or supply power to any adjacent blocks. +block.power-node-large.description = An advanced power node with greater range. +block.surge-tower.description = An extremely long-range power node with fewer available connections. +block.diode.description = Battery power can flow through this block in only one direction, but only if the other side has less power stored. +block.battery.description = Stores power as a buffer in times of surplus energy. Outputs power in times of deficit. +block.battery-large.description = Stores much more power than a regular battery. +block.combustion-generator.description = Generates power by burning flammable materials, such as coal. +block.thermal-generator.description = Generates power when placed in hot locations. +block.turbine-generator.description = An advanced combustion generator. More efficient, but requires additional water for generating steam. +block.differential-generator.description = Generates large amounts of energy. Utilizes the temperature difference between cryofluid and burning pyratite. +block.rtg-generator.description = A simple, reliable generator. Uses the heat of decaying radioactive compounds to produce energy at a slow rate. +block.solar-panel.description = Provides a small amount of power from the sun. +block.solar-panel-large.description = A significantly more efficient version of the standard solar panel. +block.thorium-reactor.description = Generates significant amounts of power from thorium. Requires constant cooling. Will explode violently if insufficient amounts of coolant are supplied. Power output depends on fullness, with base power generated at full capacity. +block.impact-reactor.description = An advanced generator, capable of creating massive amounts of power at peak efficiency. Requires a significant power input to kickstart the process. +block.mechanical-drill.description = A cheap drill. When placed on appropriate tiles, outputs items at a slow pace indefinitely. Only capable of mining basic resources. +block.pneumatic-drill.description = An improved drill, capable of mining titanium. Mines at a faster pace than a mechanical drill. +block.laser-drill.description = Allows drilling even faster through laser technology, but requires power. Capable of mining thorium. +block.blast-drill.description = The ultimate drill. Requires large amounts of power. +block.water-extractor.description = Extracts groundwater. Used in locations with no surface water available. +block.cultivator.description = Cultivates tiny concentrations of spores in the atmosphere into industry-ready pods. +block.oil-extractor.description = Uses large amounts of power, sand and water to drill for oil. +block.core-shard.description = The first iteration of the core capsule. Once destroyed, all contact to the region is lost. Do not let this happen. +block.core-foundation.description = The second version of the core. Better armored. Stores more resources. +block.core-nucleus.description = The third and final iteration of the core capsule. Extremely well armored. Stores massive amounts of resources. +block.vault.description = Stores a large amount of items of each type. An unloader block can be used to retrieve items from the vault. +block.container.description = Stores a small amount of items of each type. An unloader block can be used to retrieve items from the container. +block.unloader.description = Unloads items from any nearby non-transportation block. The type of item to be unloaded can be changed by tapping. +block.launch-pad.description = Launches batches of items without any need for a core launch. +block.launch-pad-large.description = An improved version of the launch pad. Stores more items. Launches more frequently. +block.duo.description = A small, cheap turret. Useful against ground units. +block.scatter.description = An essential anti-air turret. Sprays clumps of lead, scrap or metaglass flak at enemy units. +block.scorch.description = Burns any ground enemies close to it. Highly effective at close range. +block.hail.description = A small, long-range artillery turret. +block.wave.description = A medium-sized turret. Shoots streams of liquid at enemies. Automatically extinguishes fires when supplied with water. +block.lancer.description = A medium-sized anti-ground laser turret. Charges and fires powerful beams of energy. +block.arc.description = A small close-range electric turret. Fires arcs of electricity at enemies. +block.swarmer.description = A medium-sized missile turret. Attacks both air and ground enemies. Fires homing missiles. +block.salvo.description = A larger, more advanced version of the Duo turret. Fires quick salvos of bullets at the enemy. +block.fuse.description = A large, close-range energy turret. Fires three piercing beams at nearby enemies. +block.ripple.description = An extremely powerful artillery turret. Shoots clusters of shells at enemies over long distances. +block.cyclone.description = A large anti-air and anti-ground turret. Fires explosive clumps of flak at nearby units. +block.spectre.description = A massive dual-barreled cannon. Shoots large armor-piercing bullets at air and ground targets. +block.meltdown.description = A massive laser cannon. Charges and fires a persistent laser beam at nearby enemies. Requires coolant to operate. +block.repair-point.description = Continuously heals the closest damaged unit in its vicinity. +block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. diff --git a/core/assets/bundles/bundle_in_ID.properties b/core/assets/bundles/bundle_in_ID.properties index ad6c00f00b..c4cc41033f 100644 --- a/core/assets/bundles/bundle_in_ID.properties +++ b/core/assets/bundles/bundle_in_ID.properties @@ -106,6 +106,7 @@ mods.guide = Panduan Modding mods.report = Lapor Kesalahan mods.openfolder = Buka Folder Mod mods.reload = Reload +mods.reloadexit = The game will now exit, to reload mods. mod.display = [gray]Mod:[orange] {0} mod.enabled = [lightgray]Aktif mod.disabled = [scarlet]Nonaktif @@ -124,6 +125,7 @@ mod.reloadrequired = [scarlet]Dibutuhkan untuk memuat ulang mod.import = Impor Mod mod.import.file = Import File mod.import.github = Impor Mod GitHub +mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source! mod.item.remove = Item ini merupakan bagian dari mod[accent] '{0}'[] mod. Untuk dihilangkan, hapus mod ini. mod.remove.confirm = Mod ini akan dihapus. mod.author = [lightgray]Pencipta:[] {0} @@ -224,7 +226,6 @@ save.new = Simpanan Baru save.overwrite = Anda yakin ingin menindih \ntempat simpanan ini? overwrite = Tindih save.none = Tidak ada simpanan! -saveload = [accent]Menyimpan... savefail = Gagal menyimpan permainan! save.delete.confirm = Anda yakin ingin menghapus simpanan ini? save.delete = Hapus @@ -272,6 +273,7 @@ quit.confirm.tutorial = Apakah Anda tahu apa yang dilakukan?\nTutorial dapat diu loading = [accent]Memuat... reloading = [accent]Memuat Ulang Mod... saving = [accent]Menyimpan... +respawn = [accent][[{0}][] to respawn in core cancelbuilding = [accent][[{0}][] untuk menghapus rencana selectschematic = [accent][[{0}][] untuk memilih+salin pausebuilding = [accent][[{0}][] untuk berhenti membangun @@ -328,8 +330,9 @@ waves.never = waves.every = setiap waves.waves = gelombang waves.perspawn = per muncul +waves.shields = shields/wave waves.to = sampai -waves.boss = Bos +waves.guardian = Guardian waves.preview = Pratinjau waves.edit = Sunting... waves.copy = Salin ke Papan klip @@ -460,6 +463,7 @@ requirement.unlock = Buka {0} resume = Lanjutkan Zona:\n[lightgray]{0} bestwave = [lightgray]Gelombang Terbaik: {0} launch = < MELUNCUR > +launch.text = Launch launch.title = Berhasil Meluncur launch.next = [lightgray]kesempatan berikutnya di gelombang {0} launch.unable2 = [scarlet]Tidak dapat MELUNCUR.[] @@ -467,13 +471,13 @@ launch.confirm = Ini akan meluncurkan semua sumber daya di inti.\nAnda tidak bis launch.skip.confirm = Jika Anda lewati sekarang, Anda tidak akan dapat meluncur hingga gelombang berikutnya. uncover = Buka configure = Konfigurasi Muatan +loadout = Loadout +resources = Resources bannedblocks = Balok yang dilarang addall = Tambah Semu -configure.locked = [lightgray]Buka konfigurasi muatan: Gelombang {0}. configure.invalid = Jumlah harua berupa angka diantara 0 dan {0}. zone.unlocked = [lightgray]{0} terbuka. zone.requirement.complete = Gelombang {0} terselesaikan:\nPersyaratan zona {1} tercapai. -zone.config.unlocked = Permuatan terbuka:[lightgray]\n{0} zone.resources = Sumber Daya Terdeteksi: zone.objective = [lightgray]Objektif: [accent]{0} zone.objective.survival = Bertahan @@ -492,35 +496,29 @@ error.io = Terjadi kesalahan jaringan I/O. error.any = Terjadi kesalahan Jaringan tidak diketahui. error.bloom = Gagal untuk menginisialisasi bloom.\nPerangkat Anda mungkin tidak mendukung fitur ini. -zone.groundZero.name = Titik Nol -zone.desertWastes.name = Gurun Gersang -zone.craters.name = Kawah -zone.frozenForest.name = Hutan Beku -zone.ruinousShores.name = Pantai Hancur -zone.stainedMountains.name = Gunung Bernoda -zone.desolateRift.name = Retakan Terpencil -zone.nuclearComplex.name = Kompleks Produksi Nuklir -zone.overgrowth.name = Pertumbuhan -zone.tarFields.name = Lahan Tar -zone.saltFlats.name = Dataran Garam -zone.impact0078.name = Impact 0078 -zone.crags.name = Tebing -zone.fungalPass.name = Lintasan Jamur +sector.groundZero.name = Ground Zero +sector.craters.name = The Craters +sector.frozenForest.name = Frozen Forest +sector.ruinousShores.name = Ruinous Shores +sector.stainedMountains.name = Stained Mountains +sector.desolateRift.name = Desolate Rift +sector.nuclearComplex.name = Nuclear Production Complex +sector.overgrowth.name = Overgrowth +sector.tarFields.name = Tar Fields +sector.saltFlats.name = Salt Flats +sector.fungalPass.name = Fungal Pass -zone.groundZero.description = Lokasi optimal untuk memulai sekali lagi. Ancaman musuh rendah. Sumber daya sedikit.\nKumpulkan Tembaga dan Timah sebanyak - banyaknya.\nJalan terus. -zone.frozenForest.description = Disini juga, dekat dengan pegunungan, spora telah menyebar. Suhu yang dingin tidak dapat menahan mereka selamanya.\n\nMulai jelajahi tenaga. Bangun generator pembakaran. Pelajari cara memakai mender. -zone.desertWastes.description = Daerah limbah ini luas, sulit diprediksi, dan bersilangan dengan struktur bangunan terlantar.\nTerdapat batu bara di daerah ini. Bakar untuk membuat tenaga, atau membuat grafit.\n\n[lightgray]Lokasi pendaratan tidak dapat dijamin. -zone.saltFlats.description = Di pinggiran gurun terdapat Dataran Garam. Sedikit sumber daya alam ditemukan di lokasi ini.\n\nPihak musuh telah mendirikan tempat penyimpanan disini. Hancurkan inti mereka. Jangan biarkan apapun berdiri. -zone.craters.description = Air terakumulasi di kawah ini, peninggalan perang dahulu. Peroleh kembali area ini. Kumpulkan pasir. Buat metaglass. Pompa air untuk mendinginkan turret dan bor. -zone.ruinousShores.description = Setelah daerah limbah, terdapat garis pantai. Dulunya, lokasi ini menjadi tempat jajaran pertahanan. Tidak banyak yang tersisa. Hanya struktur dasar pertahanan yang masih tidak rusak, yang lain hancur menjadi keping.\nLanjutkan ekspansi ke luar. Temukan kembali teknologinya. -zone.stainedMountains.description = Lebih dalam terdapat pegunungan, masih murni dari spora.\nGali titanium yang melimpah di area ini. Pelajari bagaimana menggunakannya.\n\nKehadiran musuh lebih besar di sini. Jangan beri mereka waktu untuk mengirim unit terbaik mereka. -zone.overgrowth.description = Area ini sangat rimbun, dekat dengan sumber spora.\nPihak musuh telah mendirikan pos kawalan di sini. Bangun unit dagger. Hancurkan inti mereka. Peroleh kembali apa yang telah hilang. -zone.tarFields.description = Tempat produksi minyak di pinggiran, diantara pegunungan dan gurun. Salah satu dari sedikit area yang menjadi cadangan tar.\nMeskipun ditinggalkan, terdapat musuh yang kuat dekat daerah ini. Jangan meremehkan mereka.\n\n[lightgray]Telaah teknologi pengolahan minyak jika bisa. -zone.desolateRift.description = Zona yang sangat berbahaya. Banyak sekali sumber daya alam, tetapi ruang yang sempit. Resiko tinggi untuk kerusakan. Pergi secepat mungkin. Jangan dibodohi karena jarak yang panjang antar serangan musuh. -zone.nuclearComplex.description = Sebuah bekas fasilitas yang membuat dan mengolah thorium, hancur menjadi reruntuhan.\n[lightgray]Lakukan penelitian terhadap thorium dan fungsinya.\n\nMusuh terdapat di sini dengan jumlah yang sangat banyak, terus mencari penyerang. -zone.fungalPass.description = Sebuah area transisi dari pegunungan tinggi ke rendah, dataran penuh spora. Sebuah tempat pengintaian milik musuh terletak disini.\nHancurkan.\nGunakan unit Dagger dan Crawler. Hancurkan kedua inti mereka. -zone.impact0078.description = -zone.crags.description = +sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. +sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. +sector.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. +sector.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. +sector.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. +sector.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units. +sector.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build Titan units. Destroy it. Reclaim that which was lost. +sector.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. +sector.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. +sector.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. +sector.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. settings.language = Bahasa settings.data = Game Data @@ -537,6 +535,7 @@ settings.clearall.confirm = [scarlet]PERINGATAN![]\nIni akan menghapus semua dat paused = [accent]< Jeda > clear = Bersih banned = [scarlet]Dilarang +unplaceable.sectorcaptured = [scarlet]Requires captured sector yes = Ya no = Tidak info.title = Info @@ -582,6 +581,8 @@ blocks.reload = Tembakan/Detik blocks.ammo = Amunisi bar.drilltierreq = Membutuhkan Bor yang Lebih Baik +bar.noresources = Missing Resources +bar.corereq = Core Base Required bar.drillspeed = Kecepatan Bor: {0}/s bar.pumpspeed = Kecepatan Pompa: {0}/s bar.efficiency = Daya Guna: {0}% @@ -591,11 +592,12 @@ bar.poweramount = Tenaga: {0} bar.poweroutput = Pengeluaran Tenaga: {0} bar.items = Item: {0} bar.capacity = Kapasitas: {0} +bar.unitcap = {0} {1}/{2} +bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled] bar.liquid = Zat Cair bar.heat = Panas bar.power = Tenaga bar.progress = Perkembangan Pembangunan -bar.spawned = Unit: {0}/{1} bar.input = Masukan bar.output = Keluaran @@ -639,6 +641,7 @@ setting.linear.name = Filter Bergaris setting.hints.name = Petunjuk setting.flow.name = Display Resource Flow Rate[scarlet] (experimental) setting.buildautopause.name = Jeda Otomatis saat Membangun +setting.mapcenter.name = Auto Center Map To Player setting.animatedwater.name = Animasi Perairan setting.animatedshields.name = Animasi Pelindung setting.antialias.name = Antialiasi[lightgray] (membutuhkan restart)[] @@ -663,7 +666,6 @@ setting.effects.name = Munculkan Efek setting.destroyedblocks.name = Tunjukkan Blok yang Telah Hancur setting.blockstatus.name = Display Block Status setting.conveyorpathfinding.name = Navigasi Pengantar Otomatis -setting.coreselect.name = Izinkan Skema Inti setting.sensitivity.name = Sensitivitas Kontroler setting.saveinterval.name = Jarak Menyimpan setting.seconds = {0} Sekon @@ -672,12 +674,15 @@ setting.milliseconds = {0} milisekon setting.fullscreen.name = Layar Penuh setting.borderlesswindow.name = Jendela tak Berbatas[lightgray] (mungkin memerlukan mengulang kembali) setting.fps.name = Tunjukkan FPS +setting.smoothcamera.name = Smooth Camera setting.blockselectkeys.name = Tunjukkan Kunci Pilih Blok setting.vsync.name = VSync setting.pixelate.name = Mode Pixel[lightgray] (menonaktifkan animasi) setting.minimap.name = Tunjukkan Peta Kecil +setting.coreitems.name = Display Core Items (WIP) setting.position.name = Tunjukkan Posisi Pemain setting.musicvol.name = Volume Musik +setting.atmosphere.name = Show Planet Atmosphere setting.ambientvol.name = Volume Sekeliling setting.mutemusic.name = Diamkan Musik setting.sfxvol.name = Volume Efek Suara @@ -700,10 +705,13 @@ keybinds.mobile = [scarlet]Mayoritas kunci tidak mendukung mobile. Hanya gerakan category.general.name = Umum category.view.name = Melihat category.multiplayer.name = Bermain Bersama +category.blocks.name = Block Select command.attack = Serang command.rally = Kumpul/Patroli command.retreat = Mundur placement.blockselectkeys = \n[lightgray]Kunci: [{0}, +keybind.respawn.name = Respawn +keybind.control.name = Control Unit keybind.clear_building.name = Hapus Bangunan keybind.press = Tekan kunci... keybind.press.axis = Tekan sumbu atau kunci... @@ -713,7 +721,7 @@ keybind.toggle_block_status.name = Toggle Block Statuses keybind.move_x.name = Pindah x keybind.move_y.name = Pindah y keybind.mouse_move.name = Ikut Mouse -keybind.dash.name = Terbang +keybind.boost.name = Boost keybind.schematic_select.name = Pilih Daerah keybind.schematic_menu.name = Menu Skema keybind.schematic_flip_x.name = Balik Skema X @@ -775,30 +783,25 @@ rules.wavetimer = Pengaturan Waktu Gelombang rules.waves = Gelombang rules.attack = Mode Penyerangan rules.enemyCheat = Sumber Daya A.I Musuh (Tim Merah) Tak Terbatas -rules.unitdrops = Munculnya Unit +rules.blockhealthmultiplier = Multiplikasi Darah Blok +rules.blockdamagemultiplier = Block Damage Multiplier rules.unitbuildspeedmultiplier = Multiplikasi Kecepatan Munculnya Unit rules.unithealthmultiplier = Multiplikasi Darah Unit -rules.blockhealthmultiplier = Multiplikasi Darah Blok -rules.playerhealthmultiplier = Multiplikasi Darah Pemain -rules.playerdamagemultiplier = Multiplikasi Kekuatan Pemain rules.unitdamagemultiplier = Multiplikasi Kekuatan Unit rules.enemycorebuildradius = Dilarang Membangun Radius Inti Musuh :[lightgray] (blok) -rules.respawntime = Waktu Respawn:[lightgray] (detik) rules.wavespacing = Jarak Gelombang:[lightgray] (detik) rules.buildcostmultiplier = Multiplikasi Harga Bangunan rules.buildspeedmultiplier = Multiplikasi Waktu Pembuatan Bangunan rules.deconstructrefundmultiplier = Penggembalian Dana Mendekonstraksi Blok rules.waitForWaveToEnd = Gelombang menunggu musuh rules.dropzoneradius = Radius Titik Muncul:[lightgray] (Blok) -rules.respawns = Maksimal muncul kembali setiap gelombang -rules.limitedRespawns = Batas Muncul Kembali +rules.unitammo = Units Require Ammo rules.title.waves = Gelombang -rules.title.respawns = Muncul Kembali rules.title.resourcesbuilding = Sumber Daya & Bangunan -rules.title.player = Pemain rules.title.enemy = Musuh rules.title.unit = Unit rules.title.experimental = Eksperimental +rules.title.environment = Environment rules.lighting = Penerangan rules.ambientlight = Sinar Disekeliling rules.solarpowermultiplier = Kekuatan Panel Surya (kali) @@ -827,7 +830,6 @@ liquid.water.name = Air liquid.slag.name = Terak liquid.oil.name = Minyak liquid.cryofluid.name = Cairan Dingin -item.corestorable = [lightgray]Yang dapat disimpan di Inti: {0} item.explosiveness = [lightgray]Tingkat Keledakan: {0}% item.flammability = [lightgray]Tingkat Kebakaran: {0}% item.radioactivity = [lightgray]Tingkat Radioaktif: {0}% @@ -843,6 +845,32 @@ liquid.heatcapacity = [lightgray]Kapasitas Panas: {0} liquid.viscosity = [lightgray]Kelekatan: {0} liquid.temperature = [lightgray]Suhu: {0} +unit.dagger.name = Dagger +unit.mace.name = Mace +unit.fortress.name = Fortress +unit.nova.name = Nova +unit.pulsar.name = Pulsar +unit.quasar.name = Quasar +unit.crawler.name = Crawler +unit.atrax.name = Atrax +unit.spiroct.name = Spiroct +unit.arkyid.name = Arkyid +unit.flare.name = Flare +unit.horizon.name = Horizon +unit.zenith.name = Zenith +unit.antumbra.name = Antumbra +unit.eclipse.name = Eclipse +unit.mono.name = Mono +unit.poly.name = Poly +unit.mega.name = Mega +unit.risse.name = Risse +unit.minke.name = Minke +unit.bryde.name = Bryde +unit.alpha.name = Alpha +unit.beta.name = Beta +unit.gamma.name = Gamma + +block.parallax.name = Parallax block.cliff.name = Cliff block.sand-boulder.name = Batu Pasir block.grass.name = Rumput @@ -994,17 +1022,6 @@ block.blast-mixer.name = Penyampur Peledak block.solar-panel.name = Panel Surya block.solar-panel-large.name = Panel Surya Besar block.oil-extractor.name = Penggali Minyak -block.command-center.name = Pusat Perintah -block.draug-factory.name = Pabrik Drone Penambang Draug -block.spirit-factory.name = Pabrik Drone Spirit -block.phantom-factory.name = Pabrik Drone Phantom -block.wraith-factory.name = Pabrik Penyerang Wraith -block.ghoul-factory.name = Pabrik Pengebom Ghoul -block.dagger-factory.name = Pabrik Robot Dagger -block.crawler-factory.name = Pabrik Robot Crawler -block.titan-factory.name = Pabrik Robot Titan -block.fortress-factory.name = Pabrik Robot Fortress -block.revenant-factory.name = Pabrik Penyerang Revenant block.repair-point.name = Tempat Perbaikan block.pulse-conduit.name = Selang Denyut block.plated-conduit.name = Pipa Terlapis @@ -1036,6 +1053,19 @@ block.meltdown.name = Pelebur block.container.name = Kontainer block.launch-pad.name = Alas Peluncur block.launch-pad-large.name = Alas Peluncur Besar +block.segment.name = Segment +block.ground-factory.name = Ground Factory +block.air-factory.name = Air Factory +block.naval-factory.name = Naval Factory +block.additive-reconstructor.name = Additive Reconstructor +block.multiplicative-reconstructor.name = Multiplicative Reconstructor +block.exponential-reconstructor.name = Exponential Reconstructor +block.tetrative-reconstructor.name = Tetrative Reconstructor +block.mass-conveyor.name = Mass Conveyor +block.payload-router.name = Payload Router +block.disassembler.name = Disassembler +block.silicon-crucible.name = Silicon Crucible +block.large-overdrive-projector.name = Large Overdrive Projector team.blue.name = biru team.crux.name = merah team.sharded.name = oranye @@ -1043,21 +1073,7 @@ team.orange.name = jingga team.derelict.name = derelict team.green.name = hijau team.purple.name = ungu -unit.spirit.name = Robot Spirit -unit.draug.name = Robot Penambang Draug -unit.phantom.name = Robot Phantom -unit.dagger.name = Dagger -unit.crawler.name = Crawler -unit.titan.name = Titan -unit.ghoul.name = Pengebom Ghoul -unit.wraith.name = Penyerang Wraith -unit.fortress.name = Fortress -unit.revenant.name = Revenant -unit.eruptor.name = Peletus -unit.chaos-array.name = Satuan Kekacauan -unit.eradicator.name = Pemusnah -unit.lich.name = Lich -unit.reaper.name = Reaper + tutorial.next = [lightgray] tutorial.intro = Kamu telah memasuki[scarlet] Tutorial Mindustry.[]\nMulai dengan[accent] menambang tembaga[]. Tekan bijih tembaga dekat intimu.\n\n[accent]{0}/{1} tembaga tutorial.intro.mobile = Kamu telah memasuki[scarlet] Tutorial Mindustry.[]\nGesek layar untuk bergerak.\n[accent]Gunakan 2 jari [] untuk mengecilkan dan membesarkan gambar.\nMulai dengan[accent] menambang tembaga[]. Dekati tembaganya, kemudian tekan bijih tembaga untuk mulai menambang.\n\n[accent]{0}/{1} tembaga @@ -1100,17 +1116,7 @@ liquid.water.description = Umumnya digunakan untuk mendinginkan mesin-mesin dan liquid.slag.description = Berbagai tipe logam yang meleleh. Dapat dipisahkan menjadi mineral masing-masing, atau disemprokat ke musuh dijadikn senjata. liquid.oil.description = Bisa dibakar, diledakkan atau sebagai pendigin. liquid.cryofluid.description = Zat cair paling efisien untuk mendinginkan hal-hal. -unit.draug.description = Drone penambang primitif. Murah untuk diproduksi. Dapat diperluas. Menambang tembaga dan timah secara otomatis. Mengirim hasil tambang menuju inti terdekat. -unit.spirit.description = Unit pemulaan. muncul di inti secara standar. Menambang sumber daya dan memperbaiki blok. -unit.phantom.description = Unit canggih. Menambang sumber daya dan memperbaiki blok. Lebih efektif dari drone spirit. -unit.dagger.description = Unit darat dasar. Berguna dalam satu gerombolan. -unit.crawler.description = Unit yang memiliki bom diletakkan di bagian atas. Tidak tahan lama. Meledak saat kontak dengan musuh. -unit.titan.description = Unit darat berbaja yang canggih ini menyerang target darat dan udara. -unit.fortress.description = Unit meriam darat kelas berat. -unit.eruptor.description = Unit kelas berat didesain untuk menghancurkan struktur musuh. Menembak aliran terak ke tempat musuh, melelehkan dan membakar yang terkena. -unit.wraith.description = Unit tabrak-lari yang cepat. -unit.ghoul.description = Pengebom kelas berat. -unit.revenant.description = Jajaran roket kelas berat. + block.message.description = Menyimpan pesan. Digunakan untuk komunikasi antar sekutu. block.graphite-press.description = Memadatkan bongkahan batu bara menjadi lempengan grafit murni. block.multi-press.description = Versi pemadat grafit yang lebih bagus. Membutuhkan air dan tenaga untuk memproses batu bara lebih cepat dan efisien. @@ -1221,15 +1227,5 @@ block.ripple.description = Menara meriam besar yang menembak beberapa peluru sek block.cyclone.description = Menara penembak beruntun besar. block.spectre.description = Menara besar yang menembak dua peluru kuat sekaligus. block.meltdown.description = Menara besar ini menembak sinar panjang yang kuat. -block.command-center.description = Memberi perintah kepada unit sekutu.\nMembuat unit untuk berpatroli, serang inti musuh atau mundur ke inti sekutu/pabrik. Jika tidak ada inti musuh, unit secara standar akan berpatroli disaat perintah serang. -block.draug-factory.description = Memproduksi drone penambang draug. -block.spirit-factory.description = Memproduksi drone ringan yang menambang sumber daya dan memulih blok. -block.phantom-factory.description = Memproduksi drone canggih yang lebih efektif dibandingkan drone spirit. -block.wraith-factory.description = Memproduksi unit tabrak-lari yang cepat. -block.ghoul-factory.description = Memproduksi pengebom kelas berat. -block.revenant-factory.description = Memproduksi unit laser udara kelas berat. -block.dagger-factory.description = Memproduksi unit darat dasar. -block.crawler-factory.description = Memproduksi unit dengan bom bunuh diri. -block.titan-factory.description = Memproduksi unit darat canggih. -block.fortress-factory.description = Memproduksi unit meriam darat kelas berat. block.repair-point.description = Terus menerus memulihkan unit terluka disekitar. +block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. diff --git a/core/assets/bundles/bundle_it.properties b/core/assets/bundles/bundle_it.properties index 98a3bfacfc..ad178aa06c 100644 --- a/core/assets/bundles/bundle_it.properties +++ b/core/assets/bundles/bundle_it.properties @@ -1,4 +1,4 @@ -credits.text = Creato da [royal]Anuken[] - [sky]anukendev@gmail.com[] +credits.text = Creato da [royal]Anuken[] - [sky]anukendev@gmail.com[]\n\nVersione Italiana:[lightgray]\nDeltaRays\nGioIacca9[] credits = Crediti contributors = Traduttori e Contributori discord = Entra nel server Discord di Mindustry! @@ -44,7 +44,7 @@ schematic.exists = Esiste già una schematica con questo nome. schematic.import = Importa schematica schematic.exportfile = Esporta File schematic.importfile = Importa File -schematic.browseworkshop = Naviga nel Workshop +schematic.browseworkshop = Sfoglia il Workshop schematic.copy = Copia negli Appunti schematic.copy.import = Importa dagli Appunti schematic.shareworkshop = Condividi nel Workshop @@ -98,7 +98,7 @@ committingchanges = Applico le Modifiche done = Fatto feature.unsupported = Il tuo dispositivo non supporta questa funzione. -mods.alphainfo = Tieni a mente che queste mods sono in alpha e[scarlet] possono contenere molti bug[].Segnala tutti i problemi che trovi su GitHub o Discord di Mindustry. +mods.alphainfo = Tieni a mente che queste mods sono in alpha e[scarlet] possono contenere molti bug[]. Segnala tutti i problemi che trovi sulla pagina GitHub o sul server Discord di Mindustry. mods.alpha = [accent](Alpha) mods = Mods mods.none = [lightgray]Nessuna mod trovata! @@ -106,6 +106,7 @@ mods.guide = Guida per il modding mods.report = Segnala un Bug mods.openfolder = Apri Cartella mods.reload = Ricarica +mods.reloadexit = The game will now exit, to reload mods. mod.display = [gray]Mod:[orange] {0} mod.enabled = [lightgray]Abilitato mod.disabled = [scarlet]Disabilitato @@ -124,6 +125,7 @@ mod.reloadrequired = [scarlet]Riavvio necessario mod.import = Importa Mod mod.import.file = Importa File mod.import.github = Importa Mod da GitHub +mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source! mod.item.remove = Questo item fa parte della mod[accent] '{0}'[]. Per rimuoverlo, disinstalla questa mod. mod.remove.confirm = Questa mod verrà eliminata. mod.author = [lightgray]Autore:[] {0} @@ -224,7 +226,6 @@ save.new = Nuovo Salvataggio save.overwrite = Sei sicuro di voler sovrascrivere questo salvataggio? overwrite = Sovrascrivi save.none = Nessun salvataggio trovato! -saveload = Salvataggio in corso... savefail = Salvataggio del gioco non riuscito! save.delete.confirm = Sei sicuro di voler eliminare questo salvataggio? save.delete = Elimina @@ -272,6 +273,7 @@ quit.confirm.tutorial = Sei sicuro di sapere cosa stai facendo? Il tutorial può loading = [accent]Caricamento in Corso... reloading = [accent]Ricaricamento delle mods... saving = [accent]Salvataggio in corso... +respawn = [accent][[{0}][] to respawn in core cancelbuilding = [accent][[{0}][] per pulire la selezione selectschematic = [accent][[{0}][] per selezionare+copiare pausebuilding = [accent][[{0}][] per smettere di costruire @@ -328,8 +330,9 @@ waves.never = waves.every = sempre waves.waves = ondata/e waves.perspawn = per spawn +waves.shields = shields/wave waves.to = a -waves.boss = Boss +waves.guardian = Guardian waves.preview = Anteprima waves.edit = Modifica... waves.copy = Copia negli Appunti @@ -460,6 +463,7 @@ requirement.unlock = Sblocca {0} resume = Riprendi Zona:\n[lightgray]{0} bestwave = [lightgray]Ondata Migliore: {0} launch = < DECOLLARE > +launch.text = Launch launch.title = Decollo Riuscito! launch.next = [lightgray]nuova opportunità all'ondata {0} launch.unable2 = [scarlet]IMPOSSIBILE DECOLLARE![] @@ -467,13 +471,13 @@ launch.confirm = Questo trasporterà tutte le risorse nel tuo Nucleo.\nNon riusc launch.skip.confirm = Se salti adesso non riuscirai a decollare fino alle ondate successive uncover = Scopri configure = Configura Equipaggiamento +loadout = Loadout +resources = Resources bannedblocks = Blocchi Banditi addall = Aggiungi Tutti -configure.locked = [lightgray]Sblocca configurazione equipaggiamento: {0}. configure.invalid = Il valore dev'essere un numero compresto tra 0 e {0}. zone.unlocked = [lightgray]{0} sbloccata. zone.requirement.complete = Ondata {0} raggiunta:\n[lightgray]{1}[] requisiti di zona soddisfatti. -zone.config.unlocked = Equipaggiamento sbloccato:[lightgray]\n{0} zone.resources = [lightgray]Risorse Trovate: zone.objective = [lightgray]Obiettivo: [accent]{0} zone.objective.survival = Sopravvivere @@ -492,35 +496,29 @@ error.io = Errore I/O di rete. error.any = Errore di rete sconosciuto. error.bloom = Errore dell'avvio delle shaders.\nIl tuo dispositivo potrebbe non supportarle. -zone.groundZero.name = Terreno Zero -zone.desertWastes.name = Rifiuti Desertici -zone.craters.name = Crateri -zone.frozenForest.name = Foresta Ghiacciata -zone.ruinousShores.name = Spiaggie in Rovina -zone.stainedMountains.name = Montagne Macchiate -zone.desolateRift.name = Spaccatura Desolata -zone.nuclearComplex.name = Complesso di Produzione Nucleare -zone.overgrowth.name = Crescita Eccessiva -zone.tarFields.name = Campi di Catrame -zone.saltFlats.name = Saline -zone.impact0078.name = Impatto 0078 -zone.crags.name = Dirupi -zone.fungalPass.name = Passaggio Fungoso +sector.groundZero.name = Ground Zero +sector.craters.name = The Craters +sector.frozenForest.name = Frozen Forest +sector.ruinousShores.name = Ruinous Shores +sector.stainedMountains.name = Stained Mountains +sector.desolateRift.name = Desolate Rift +sector.nuclearComplex.name = Nuclear Production Complex +sector.overgrowth.name = Overgrowth +sector.tarFields.name = Tar Fields +sector.saltFlats.name = Salt Flats +sector.fungalPass.name = Fungal Pass -zone.groundZero.description = La posizione ottimale per cominciare. Bassa minaccia nemica. Poche risorse.\nRaccogli quanto più piombo e rame possibile.\nProcedi. -zone.frozenForest.description = Anche qui, più vicino alle montagne, le spore si sono diffuse. Le temperature rigide non possono contenerle per sempre.\nInizia la scoperta dell'energia. Costruisci generatori a combustione. Impara a usare i riparatori. -zone.desertWastes.description = Questi rifiuti sono vasti, imprevedibili ed attraversati da strutture settoriali abbandonate.\n\nIl carbone è presente nella regione. Bruciatelo per ottenere energia o sintetizzate la grafite.\n\n[lightgray]Questa posizione di atterraggio non può essere garantita. -zone.saltFlats.description = Alle periferie del deserto si trovano le saline. Poche risorse possono essere trovate in questa posizione.\n\nIl nemico ha eretto un complesso di archiviazione delle risorse qui. Sradicare il loro Nucleo. Non lasciare nulla in piedi. -zone.craters.description = L'acqua si è accumulata in questo cratere, reliquia delle vecchie guerre. Recupera l'area. Raccogli la sabbia. Fondi il vetro metallico. Pompa l'acqua per raffreddare torrette e trivelle. -zone.ruinousShores.description = Oltre i rifiuti, c'è il litorale. Una volta, questa posizione ospitava una schiera di difesa costiera. Non rimane molto. Solo le strutture di difesa più elementari sono rimaste incolume, tutto il resto ridotto a rottami.\nContinua l'espansione verso l'esterno. Riscopri la tecnologia. -zone.stainedMountains.description = Più nell'entroterra si trovano le montagne, non ancora contaminate da spore.\nEstrai l'abbondante titanio in questa zona. Scopri come usarlo.\n\nLa presenza del nemico è maggiore qui. Non dare loro il tempo di inviare le loro unità più forti. -zone.overgrowth.description = Quest'area è invasa, più vicina alla fonte delle spore.\nIl nemico ha stabilito qui un avamposto. Costruisci unità col pugnale. Distruggilo. Riprenditi ciò che è stato perso. -zone.tarFields.description = La periferia di una zona di produzione di petrolio, tra le montagne e il deserto. Una delle poche aree con riserve di catrame utilizzabili.\nAnche se abbandonata, questa zona ha alcune pericolose forze nemiche nelle vicinanze. Non sottovalutarlo.\n\n[lightgray]Ricerca la tecnologia di lavorazione del petrolio, se possibile. -zone.desolateRift.description = Una zona estremamente pericolosa. Risorse abbondanti, ma poco spazio. Alto rischio di distruzione. Lascia il prima possibile. Non lasciarti ingannare dalla lunga distanza tra gli attacchi nemici. -zone.nuclearComplex.description = Un ex impianto per la produzione e la lavorazione del torio, ridotto in rovina.\n[lightgray]Ricerca il torio ed i suoi numerosi usi.\n\nIl nemico è presente qui in gran numero, alla costante ricerca di aggressori. -zone.fungalPass.description = Un'area di transizione tra alte montagne e terre più basse, piene di spore. Qui si trova una piccola base di ricognizione nemica.\nDistruggila.\nUsa le unità Pugnale e Strisciatore. Elimina i due nuclei. -zone.impact0078.description = -zone.crags.description = +sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. +sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. +sector.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. +sector.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. +sector.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. +sector.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units. +sector.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build Titan units. Destroy it. Reclaim that which was lost. +sector.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. +sector.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. +sector.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. +sector.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. settings.language = Lingua settings.data = Dati di Gioco @@ -537,6 +535,7 @@ settings.clearall.confirm = [scarlet]ATTENZIONE![]\nQuesto cancellerà tutti i d paused = [accent]< In Pausa > clear = Pulisci banned = [scarlet]Bandito +unplaceable.sectorcaptured = [scarlet]Requires captured sector yes = Si no = No info.title = Info @@ -582,6 +581,8 @@ blocks.reload = Ricarica blocks.ammo = Munizioni bar.drilltierreq = Miglior Trivella Richiesta +bar.noresources = Missing Resources +bar.corereq = Core Base Required bar.drillspeed = Velocità Scavo: {0}/s bar.pumpspeed = Velocità di Pompaggio: {0}/s bar.efficiency = Efficienza: {0}% @@ -591,11 +592,12 @@ bar.poweramount = Energia: {0} bar.poweroutput = Energia in Uscita: {0} bar.items = Oggetti: {0} bar.capacity = Capacità: {0} +bar.unitcap = {0} {1}/{2} +bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled] bar.liquid = Liquido bar.heat = Calore bar.power = Energia bar.progress = Progresso Costruzione -bar.spawned = Unità: {0}/{1} bar.input = Entrata bar.output = Uscita @@ -637,8 +639,9 @@ setting.shadows.name = Ombre setting.blockreplace.name = Suggerimento Blocchi Automatico setting.linear.name = Filtro Lineare setting.hints.name = Suggerimenti -setting.flow.name = Visualizza Portata Nastri/Condotti[scarlet] (sperimentale) -setting.buildautopause.name = Pausa automatica nella costruzione +setting.flow.name = Visualizza Portata Nastri/Condotti +setting.buildautopause.name = Pausa Automatica nella Costruzione +setting.mapcenter.name = Auto Center Map To Player setting.animatedwater.name = Fluidi Animati setting.animatedshields.name = Scudi Animati setting.antialias.name = Antialias[lightgray] (richiede riavvio)[] @@ -650,7 +653,7 @@ setting.touchscreen.name = Controlli Touchscreen setting.fpscap.name = Limite FPS setting.fpscap.none = Niente setting.fpscap.text = {0} FPS -setting.uiscale.name = Ridimensionamento Interfaccia[lightgray] (richiede riavvio)[] +setting.uiscale.name = Ridimensionamento Interfaccia[lightgray] (richiede il riavvio)[] setting.swapdiagonal.name = Posizionamento Sempre Diagonale setting.difficulty.training = Allenamento setting.difficulty.easy = Facile @@ -663,27 +666,29 @@ setting.effects.name = Visualizza Effetti setting.destroyedblocks.name = Visualizza Blocchi Distrutti setting.blockstatus.name = Visualizza Stato Blocchi setting.conveyorpathfinding.name = Posizionamento Nastri Trasportatori Intelligente -setting.coreselect.name = Consenti Schematiche dei Nuclei setting.sensitivity.name = Sensibilità del Controller setting.saveinterval.name = Intervallo di Salvataggio Automatico setting.seconds = {0} secondi setting.blockselecttimeout.name = Tempo di Selezione del Blocco setting.milliseconds = {0} millisecondi setting.fullscreen.name = Schermo Intero -setting.borderlesswindow.name = Finestra Senza Bordi[lightgray] (potrebbe richiedere riavvio) +setting.borderlesswindow.name = Finestra Senza Bordi[lightgray] (potrebbe richiedere il riavvio) setting.fps.name = Mostra FPS e Ping +setting.smoothcamera.name = Smooth Camera setting.blockselectkeys.name = Mostra Tasto di Selezione del Blocco setting.vsync.name = VSync setting.pixelate.name = Effetto Pixel[lightgray] (disabilita le animazioni) setting.minimap.name = Mostra Minimappa +setting.coreitems.name = Display Core Items (WIP) setting.position.name = Mostra Posizione Giocatori setting.musicvol.name = Volume Musica +setting.atmosphere.name = Mostra Atmosfera Pianeta setting.ambientvol.name = Volume Ambiente setting.mutemusic.name = Silenzia Musica setting.sfxvol.name = Volume Effetti setting.mutesound.name = Silenzia Suoni setting.crashreport.name = Invia rapporti anonimi sugli arresti anomali -setting.savecreate.name = Salvataggio Automatico +setting.savecreate.name = Salvataggi Automatici setting.publichost.name = Gioco Visibile Pubblicamente setting.playerlimit.name = Limite Giocatori setting.chatopacity.name = Opacità Chat @@ -700,20 +705,23 @@ keybinds.mobile = [scarlet]La maggior parte dei controlli qui non sono funzionan category.general.name = Generale category.view.name = Visualizzazione category.multiplayer.name = Multigiocatore +category.blocks.name = Block Select command.attack = Attacca command.rally = Guardia command.retreat = Ritirata placement.blockselectkeys = \n[lightgray]Tasto: [{0}, +keybind.respawn.name = Respawn +keybind.control.name = Control Unit keybind.clear_building.name = Pulisci Costruzione keybind.press = Premi un tasto... keybind.press.axis = Premi un'asse o un tasto... keybind.screenshot.name = Screenshot della Mappa keybind.toggle_power_lines.name = Attiva/Disattiva Laser d'Energia -keybind.toggle_block_status.name = Attiva/Disattiva Stati dei Blocchi +keybind.toggle_block_status.name = Attiva/Disattiva Stato Blocchi keybind.move_x.name = Muovi Orizzontalmente keybind.move_y.name = Muovi Verticalmente keybind.mouse_move.name = Segui il Mouse -keybind.dash.name = Scatto +keybind.boost.name = Scatto keybind.schematic_select.name = Seleziona Regione keybind.schematic_menu.name = Menu Schematica keybind.schematic_flip_x.name = Ruota Schematica Orizzontalmente @@ -736,7 +744,7 @@ keybind.block_select_09.name = Seleziona Categoria/Blocco 9 keybind.block_select_10.name = Seleziona Categoria/Blocco 10 keybind.fullscreen.name = Schermo Intero keybind.select.name = Seleziona/Spara -keybind.diagonal_placement.name = Posizionamento Diagonale +keybind.diagonal_placement.name = Posiziona Diagonalmente keybind.pick.name = Scegli Blocco keybind.break_block.name = Rompi Blocco keybind.deselect.name = Deseleziona @@ -744,7 +752,7 @@ keybind.shoot.name = Spara keybind.zoom.name = Zoom keybind.menu.name = Menu keybind.pause.name = Pausa -keybind.pause_building.name = Pausa/Riprendi Costruzione +keybind.pause_building.name = Interrompi/Riprendi Costruzione keybind.minimap.name = Minimappa keybind.chat.name = Chat keybind.player_list.name = Lista dei Giocatori @@ -775,30 +783,25 @@ rules.wavetimer = Timer Ondate rules.waves = Ondate rules.attack = Modalità Attacco rules.enemyCheat = Risorse AI Infinite -rules.unitdrops = Generazione Unità +rules.blockhealthmultiplier = Moltiplicatore Danno Blocco +rules.blockdamagemultiplier = Block Damage Multiplier rules.unitbuildspeedmultiplier = Moltiplicatore Velocità Costruzione Unità rules.unithealthmultiplier = Moltiplicatore Vita Unità -rules.blockhealthmultiplier = Moltiplicatore Danno Blocco -rules.playerhealthmultiplier = Moltiplicatore Vita Giocatore -rules.playerdamagemultiplier = Moltiplicatore Danno Giocatore rules.unitdamagemultiplier = Moltiplicatore Danno Unità rules.enemycorebuildradius = Raggio di protezione del Nucleo Nemico dalle costruzioni:[lightgray] (blocchi) -rules.respawntime = Tempo di Rigeneratione:[lightgray] (secondi) rules.wavespacing = Tempo fra Ondate:[lightgray] (secondi) rules.buildcostmultiplier = Moltiplicatore Costo Costruzione rules.buildspeedmultiplier = Moltiplicatore Velocità Costruzione rules.deconstructrefundmultiplier = Moltiplicatore Rimborso di Smantellamento rules.waitForWaveToEnd = Le ondate aspettano fino a quando l'ondata precedente finisce rules.dropzoneradius = Raggio di Generazione:[lightgray] (blocchi) -rules.respawns = Rigenerazioni per ondata max -rules.limitedRespawns = Limite Rigenerazioni +rules.unitammo = Units Require Ammo rules.title.waves = Ondate -rules.title.respawns = Rigenerazioni rules.title.resourcesbuilding = Risorse e Costruzioni -rules.title.player = Giocatori rules.title.enemy = Nemici rules.title.unit = Unità rules.title.experimental = Sperimentale +rules.title.environment = Environment rules.lighting = Illuminazione rules.ambientlight = Illuminazione\nAmbientale rules.solarpowermultiplier = Moltiplicatore Energia Solare @@ -827,7 +830,6 @@ liquid.water.name = Acqua liquid.slag.name = Scoria liquid.oil.name = Petrolio liquid.cryofluid.name = Criofluido -item.corestorable = [lightgray]Immagazzinabili nel Nucleo: {0} item.explosiveness = [lightgray]Esplosività: {0} item.flammability = [lightgray]Infiammabilità: {0} item.radioactivity = [lightgray]Radioattività: {0} @@ -843,6 +845,32 @@ liquid.heatcapacity = [lightgray]Capacità Termica: {0} liquid.viscosity = [lightgray]Viscosità: {0} liquid.temperature = [lightgray]Temperatura: {0} +unit.dagger.name = Drone Pugnalatore +unit.mace.name = Mace +unit.fortress.name = Fortezza +unit.nova.name = Nova +unit.pulsar.name = Pulsar +unit.quasar.name = Quasar +unit.crawler.name = Strisciatore +unit.atrax.name = Atrax +unit.spiroct.name = Spiroct +unit.arkyid.name = Arkyid +unit.flare.name = Flare +unit.horizon.name = Horizon +unit.zenith.name = Zenith +unit.antumbra.name = Antumbra +unit.eclipse.name = Eclipse +unit.mono.name = Mono +unit.poly.name = Poly +unit.mega.name = Mega +unit.risse.name = Risse +unit.minke.name = Minke +unit.bryde.name = Bryde +unit.alpha.name = Alpha +unit.beta.name = Beta +unit.gamma.name = Gamma + +block.parallax.name = Parallax block.cliff.name = Scogliera block.sand-boulder.name = Masso di Sabbia block.grass.name = Erba @@ -994,17 +1022,6 @@ block.blast-mixer.name = Miscelatore d'Esplosivi block.solar-panel.name = Pannello Solare block.solar-panel-large.name = Pannello Solare Grande block.oil-extractor.name = Estrattore di Petrolio -block.command-center.name = Centro di Comando -block.draug-factory.name = Fabbrica Droni Minatori -block.spirit-factory.name = Fabbrica Droni Riparatori -block.phantom-factory.name = Fabbrica Droni Fantasma -block.wraith-factory.name = Fabbrica Combattenti Spettro -block.ghoul-factory.name = Fabbrica Bombardieri Demoniaci -block.dagger-factory.name = Fabbrica Droni Pugnalatori -block.crawler-factory.name = Fabbrica Mech Strisciatore -block.titan-factory.name = Fabbrica Mech Titano -block.fortress-factory.name = Fabbrica Mech Fortezza -block.revenant-factory.name = Fabbrica Combattenti Superstiti block.repair-point.name = Punto di Riparazione block.pulse-conduit.name = Condotto a Impulsi block.plated-conduit.name = Condotto Placcato @@ -1036,6 +1053,19 @@ block.meltdown.name = Fusione block.container.name = Contenitore block.launch-pad.name = Ascensore Spaziale block.launch-pad-large.name = Ascensore Spaziale Avanzato +block.segment.name = Segment +block.ground-factory.name = Ground Factory +block.air-factory.name = Air Factory +block.naval-factory.name = Naval Factory +block.additive-reconstructor.name = Additive Reconstructor +block.multiplicative-reconstructor.name = Multiplicative Reconstructor +block.exponential-reconstructor.name = Exponential Reconstructor +block.tetrative-reconstructor.name = Tetrative Reconstructor +block.mass-conveyor.name = Mass Conveyor +block.payload-router.name = Payload Router +block.disassembler.name = Disassembler +block.silicon-crucible.name = Silicon Crucible +block.large-overdrive-projector.name = Large Overdrive Projector team.blue.name = blu team.crux.name = rosso team.sharded.name = arancione @@ -1043,21 +1073,7 @@ team.orange.name = arancione team.derelict.name = abbandonato team.green.name = verde team.purple.name = viola -unit.spirit.name = Drone Spirito -unit.draug.name = Drone Minatore -unit.phantom.name = Drone Fantasma -unit.dagger.name = Drone Pugnalatore -unit.crawler.name = Strisciatore -unit.titan.name = Titano -unit.ghoul.name = Bombardiere Demoniaco -unit.wraith.name = Combattente Spettro -unit.fortress.name = Fortezza -unit.revenant.name = Superstite -unit.eruptor.name = Incandescente -unit.chaos-array.name = Matrice del Caos -unit.eradicator.name = Estirpatore -unit.lich.name = Lich -unit.reaper.name = Mietitore + tutorial.next = [lightgray] tutorial.intro = Sei entrato nel[scarlet] Tutorial di Mindustry.[]\nUsa[accent] [[WASD][] per muoverti.\n[accent]Scorri[] per eseguire lo zoom.\nInizia[accent] minando il rame[]. Per farlo, posizionati sulla vena di rame vicina al tuo Nucleo e clicca su di essa.\n\n[accent]{0}/{1} rame tutorial.intro.mobile = Sei entrato nel[scarlet] Tutorial di Mindustry.[]\nScorri sullo schermo per muoverti.\n[accent]Avvicina due dita[] per eseguire lo zoom in/out.\nInizia [accent] scavando del rame[]. Clicca un minerale di rame vicino al tuo Nucleo per farlo.\n\n[accent]{0}/{1} rame @@ -1100,17 +1116,7 @@ liquid.water.description = Il liquido più utile. Comunemente usato per il raffr liquid.slag.description = Diversi tipi di metalli fusi, mescolati insieme. Può essere separato nei suoi minerali costituenti o spruzzato sulle unità nemiche come un'arma. liquid.oil.description = Un liquido usato nella produzione avanzata.\nPuò essere convertito in carbone per uso combustibile o spruzzato ed incendiato come arma. liquid.cryofluid.description = Un liquido inerte e non corrosivo creato da acqua e titanio.\nÈ il liquido più efficiente per il raffreddamento. -unit.draug.description = Un drone minerario primitivo. Economico da produrre. Sacrificabile. Scava automaticamente rame e piombo nelle vicinanze. Fornisce risorse estratte al Nucleo più vicino. -unit.spirit.description = L'unità drone di partenza. Si genera nel Nucleo per impostazione predefinita. Scava automaticamente, raccoglie oggetti e ripara blocchi. -unit.phantom.description = Un'unità drone avanzata. Segue i giocatori e gli aiuta nella costruzione delle strutture. Distrugge e ricostruisce i blocchi. -unit.dagger.description = Un unità terrena base, molto più efficiente se in branco. -unit.crawler.description = Un'unità di terra costituita da un telaio essenziale con potenti esplosivi legati sulla parte superiore. Non particolarmente resistente. Esplode a contatto con i nemici. -unit.titan.description = Un'unità di terra corazzata avanzata equipaggiata con due piccoli lanciafiamme. Attacca sia bersagli terrestri che aerei. -unit.fortress.description = Un'unità di terra di artiglieria pesante. -unit.eruptor.description = Un mech pesante progettato per abbattere le strutture. Spara un flusso di scoria contro le fortificazioni nemiche, sciogliendole e dando fuoco a tutto. -unit.wraith.description = Un'unità d'intercezione rapida ed efficiente. -unit.ghoul.description = Un bombardiere pesante. Utilizza composti esplosivi o pirite come munizioni. -unit.revenant.description = Un pesante lanciamissili volante. + block.message.description = Memorizza un messaggio. Utilizzato per la comunicazione tra alleati. block.graphite-press.description = Comprime pezzi di carbone in fogli di grafite puri. block.multi-press.description = Una versione aggiornata della pressa per grafite. Impiega acqua ed energia per elaborare il carbone in modo rapido ed efficiente. @@ -1221,15 +1227,5 @@ block.ripple.description = Una grande torretta di artiglieria che spara più col block.cyclone.description = Una grande torretta a fuoco rapido. block.spectre.description = Una grande torretta che spara due potenti proiettili contemporaneamente. block.meltdown.description = Una grande torretta che spara un potente laser a lungo raggio. -block.command-center.description = Dà istruzioni alle unità alleate nella mappa. Comanda la ricongizione, l'attacco del Nucleo Nemico o la ritirata verso il proprio Nucleo o fabbrica.\nQuando non è presente un Nucleo Nemico, le unità pattuglieranno anche se viene ordinato un attacco. -block.draug-factory.description = Produce droni per la raccolta mineraria. -block.spirit-factory.description = Produce droni che riparano blocchi. -block.phantom-factory.description = Produce droni avanzati che seguono il giocatore e lo assistono nella costruzione. -block.wraith-factory.description = Produce unità intercettatrici veloci. -block.ghoul-factory.description = Produce bombardieri pesanti. -block.revenant-factory.description = Produce pesanti unità lanciamissili volanti. -block.dagger-factory.description = Produce unità di base corpo a corpo di terra. -block.crawler-factory.description = Produce unità di sciame veloci ed autodistruggenti. -block.titan-factory.description = Produce unità terrestri avanzate e corazzate. -block.fortress-factory.description = Produce unità di terra di artiglieria pesante. block.repair-point.description = Cura continuamente l'unità danneggiata più vicina. +block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. diff --git a/core/assets/bundles/bundle_ja.properties b/core/assets/bundles/bundle_ja.properties index 4463c9f3f3..f32a19c9a2 100644 --- a/core/assets/bundles/bundle_ja.properties +++ b/core/assets/bundles/bundle_ja.properties @@ -106,6 +106,7 @@ mods.guide = Mod作成ガイド mods.report = バグを報告する mods.openfolder = MODのフォルダを開く mods.reload = 再読み込み +mods.reloadexit = The game will now exit, to reload mods. mod.display = [gray]Mod:[orange] {0} mod.enabled = [lightgray]有効 mod.disabled = [scarlet]無効 @@ -124,6 +125,7 @@ mod.reloadrequired = [scarlet]Modを有効にするには、この画面を開 mod.import = Modをインポート mod.import.file = ファイルをインポート mod.import.github = GitHubからModをインポート +mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source! mod.item.remove = これは以下のModの一部です。[accent] '{0}'[] 削除するにはそのModを削除してください。 mod.remove.confirm = このModを削除します。 mod.author = [lightgray]著者:[] {0} @@ -224,7 +226,6 @@ save.new = 新規保存 save.overwrite = このスロットに上書きしてもよろしいですか? overwrite = 上書き save.none = セーブデータが見つかりませんでした! -saveload = 保存中... savefail = ゲームの保存に失敗しました! save.delete.confirm = このセーブデータを削除してよろしいですか? save.delete = 削除 @@ -272,6 +273,7 @@ quit.confirm.tutorial = チュートリアルを終了しますか?\nチュー loading = [accent]読み込み中... reloading = [accent]再読み込み中... saving = [accent]保存中... +respawn = [accent][[{0}][] to respawn in core cancelbuilding = [accent][[{0}][] 選択を解除する selectschematic = [accent][[{0}][] 選択し、コピーする pausebuilding = [accent][[{0}][] 建築を一時的に中断する @@ -328,8 +330,9 @@ waves.never = <永久> waves.every = ウェーブ waves.waves = ごとに出現 waves.perspawn = 体出現 +waves.shields = シールド/ウェーブ waves.to = から -waves.boss = ボス +waves.guardian = ガーディアン waves.preview = プレビュー waves.edit = 編集... waves.copy = クリップボードにコピー @@ -460,6 +463,7 @@ requirement.unlock = ロック解除 {0} resume = 再開:\n[lightgray]{0} bestwave = [lightgray]最高ウェーブ: {0} launch = < 発射 > +launch.text = Launch launch.title = 発射成功 launch.next = [lightgray]次は ウェーブ {0} で発射可能です。 launch.unable2 = [scarlet]発射できません。[] @@ -467,13 +471,13 @@ launch.confirm = すべての資源をコアに搬入し、発射します。\n launch.skip.confirm = スキップすると、次の発射可能なウェーブまで発射できません。 uncover = 開放 configure = 積み荷の設定 +loadout = Loadout +resources = Resources bannedblocks = 禁止ブロック addall = すべて追加 -configure.locked = [lightgray]{0} を達成すると積み荷を設定できるようになります。 configure.invalid = 値は 0 から {0} の間でなければなりません。 zone.unlocked = [lightgray]{0} がアンロックされました. zone.requirement.complete = ウェーブ {0} を達成:\n{1} の開放条件を達成しました。 -zone.config.unlocked = ロードアウトがアンロックされました。:[lightgray]\n{0} zone.resources = 発見した資源: zone.objective = [lightgray]目標: [accent]{0} zone.objective.survival = 敵からコアを守り切る @@ -492,35 +496,29 @@ error.io = ネットワークエラーです。 error.any = 不明なネットワークエラーです。 error.bloom = ブルームの初期化に失敗しました。\n恐らくあなたのデバイスではブルームがサポートされていません。 -zone.groundZero.name = グラウンド · ゼロ -zone.desertWastes.name = デザート · ウェーツ -zone.craters.name = ザ · クレーター -zone.frozenForest.name = フローズン · フォレスト -zone.ruinousShores.name = ルーイナス · ショアーズ -zone.stainedMountains.name = ステインド · マウンテン -zone.desolateRift.name = ディサレット · リフト -zone.nuclearComplex.name = ニュークリア · プロダクション · コンプレックス -zone.overgrowth.name = オーバーグロウス -zone.tarFields.name = ター · フィールズ -zone.saltFlats.name = ソルト · フラッツ -zone.impact0078.name = インパクト 0078 -zone.crags.name = クラーグス -zone.fungalPass.name = ファングル · パス +sector.groundZero.name = Ground Zero +sector.craters.name = The Craters +sector.frozenForest.name = Frozen Forest +sector.ruinousShores.name = Ruinous Shores +sector.stainedMountains.name = Stained Mountains +sector.desolateRift.name = Desolate Rift +sector.nuclearComplex.name = Nuclear Production Complex +sector.overgrowth.name = Overgrowth +sector.tarFields.name = Tar Fields +sector.saltFlats.name = Salt Flats +sector.fungalPass.name = Fungal Pass -zone.groundZero.description = Mindustryに慣れていない初心者向けのエリアです。敵は強くなく、資源も多すぎません。\n出来るだけ多くの銅と鉛を集めるのがポイントです。 -zone.frozenForest.description = ここでも山の近くに胞子が広がっていますが、極寒のこの地ではいずれなくなるでしょう。\n\n電力を使用してみましょう。火力発電機を建設し、修復機の使い方を学びましょう。 -zone.desertWastes.description = 大量の廃棄物が散乱し、放棄された建造物が存在します。\nこのエリアには石炭が存在します。石炭を燃やして発電したり、グラファイトを生成しましょう。\n\n[lightgray]この着陸位置は保証できません。 -zone.saltFlats.description = 砂漠の外れには塩類平原があります。このエリアには資源がほとんどありません。 敵はここに資源貯蔵施設を建てている。\n敵のコアを破壊し壊滅させましょう。 -zone.craters.description = このクレーターには、古い戦争の遺物である水が溜まっています。マップを開拓し、砂を集めましょう。メタガラスを生成して、水をポンプで吸い上げ、ターレットやドリルを冷却しましょう。 -zone.ruinousShores.description = 廃棄物を過ぎた先にあるのは海岸線です。かつてここには、沿岸防衛隊がありました。今では、ほとんど残っておらず、基本的な防御構造のみで他はすべてスクラップと化しました。\n技術を再発見し拡張してください。 -zone.stainedMountains.description = 内陸には山があり、胞子に汚染されていません。\nまた、このエリアにはチタニウムが豊富に存在します。使い方を学びましょう。\n\nそして、ここには強力な敵がいます。 彼らに最強の部隊を送る時間を与えてはいけません。 -zone.overgrowth.description = このエリアは大きくなり、胞子の発生源に近づきました。\n敵はここに前哨基地を設立しました。 ダガーユニットを用いて破壊し、失われたものを取り返してください。 -zone.tarFields.description = 山と砂漠の間にある石油生産地帯の郊外です。 使用可能な石油源がある数少ないエリアの1つです。\nこのエリアは放棄されましたが、近くに危険な敵軍がいます。 それらを軽視しないでください。\n\n[lightgray]可能ならば石油加工技術を研究してください。 -zone.desolateRift.description = とても危険なエリアです。資源は豊富だがスペースがすくないです。 また、破壊されるリスクがとても高いためできるだけ早く立ち去ってください。\nそして、敵の長い攻撃間隔に騙されてはいけません。 -zone.nuclearComplex.description = かつてはトリウムの生産加工の施設でしたが、今は廃墟と化してします。\n[lightgray]トリウムの用途を研究してください。\n\nまた、ここには敵が大量に存在しており、常に攻撃者を探しています。 -zone.fungalPass.description = ここは高山低い胞子の多い土地との間のエリアで、敵の小さな偵察基地があります。\nダガーユニットとクローラユニットを用いて2つあるコアを破壊してください。 -zone.impact0078.description = -zone.crags.description = +sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. +sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. +sector.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. +sector.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. +sector.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. +sector.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units. +sector.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build Titan units. Destroy it. Reclaim that which was lost. +sector.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. +sector.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. +sector.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. +sector.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. settings.language = 言語 settings.data = ゲームデータ @@ -537,6 +535,7 @@ settings.clearall.confirm = [scarlet]警告![]\nこれはすべてのデータ paused = [accent]< ポーズ > clear = 消去 banned = [scarlet]使用禁止 +unplaceable.sectorcaptured = [scarlet]Requires captured sector yes = はい no = いいえ info.title = 情報 @@ -582,6 +581,8 @@ blocks.reload = リロード速度 blocks.ammo = 弾薬 bar.drilltierreq = より高性能なドリルを使用してください +bar.noresources = Missing Resources +bar.corereq = Core Base Required bar.drillspeed = 採掘速度: {0}/秒 bar.pumpspeed = ポンプの速度: {0}/s bar.efficiency = 効率: {0}% @@ -591,11 +592,12 @@ bar.poweramount = 蓄電量: {0} bar.poweroutput = 発電量: {0} bar.items = アイテム: {0} bar.capacity = 容量: {0} +bar.unitcap = {0} {1}/{2} +bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled] bar.liquid = 液体 bar.heat = 熱 bar.power = 電力 bar.progress = 建設状況 -bar.spawned = ユニット数: {0}/{1} bar.input = 入力 bar.output = 出力 @@ -639,6 +641,7 @@ setting.linear.name = リニアフィルター setting.hints.name = ヒント setting.flow.name = 資源流通量の表示 setting.buildautopause.name = オートポーズビルディング +setting.mapcenter.name = Auto Center Map To Player setting.animatedwater.name = 流体のアニメーション setting.animatedshields.name = シールドのアニメーション setting.antialias.name = アンチエイリアス[lightgray] (再起動が必要)[] @@ -663,7 +666,6 @@ setting.effects.name = 画面効果 setting.destroyedblocks.name = 破壊されたブロックを表示 setting.blockstatus.name = ブロックの状態を表示 setting.conveyorpathfinding.name = コンベアー配置経路探索 -setting.coreselect.name = 設計図にコアを表示 setting.sensitivity.name = 操作感度 setting.saveinterval.name = 自動保存間隔 setting.seconds = {0} 秒 @@ -672,13 +674,15 @@ setting.milliseconds = {0} milliseconds setting.fullscreen.name = フルスクリーン setting.borderlesswindow.name = 境界の無いウィンドウ[lightgray] (再起動が必要になる場合があります) setting.fps.name = FPSを表示 +setting.smoothcamera.name = Smooth Camera setting.blockselectkeys.name = ブロック選択キーを表示 setting.vsync.name = 垂直同期 setting.pixelate.name = ピクセル化[lightgray] (アニメーションが無効化されます) setting.minimap.name = ミニマップを表示 +setting.coreitems.name = Display Core Items (WIP) setting.position.name = プレイヤーの位置表示 setting.musicvol.name = 音楽 音量 -setting.atmosphere.name = 惑星の雰囲気を表示 +setting.atmosphere.name = 惑星の大気を表示 setting.ambientvol.name = 環境音 音量 setting.mutemusic.name = 音楽をミュート setting.sfxvol.name = 効果音 音量 @@ -701,10 +705,13 @@ keybinds.mobile = [scarlet]モバイルでは多くのキーバインドが機 category.general.name = 一般 category.view.name = 表示 category.multiplayer.name = マルチプレイ +category.blocks.name = Block Select command.attack = 攻撃 command.rally = 結集 command.retreat = 後退 placement.blockselectkeys = \n[lightgray]キー: [{0}, +keybind.respawn.name = リスポーン +keybind.control.name = ユニットをコントロール keybind.clear_building.name = 建築の取り消し keybind.press = キーを押してください... keybind.press.axis = 軸またはキーを押してください... @@ -714,7 +721,7 @@ keybind.toggle_block_status.name = ブロックの状態表示の切り替え keybind.move_x.name = 左右移動 keybind.move_y.name = 上下移動 keybind.mouse_move.name = マウスを追う -keybind.dash.name = ダッシュ +keybind.boost.name = ブースト keybind.schematic_select.name = 地域の選択 keybind.schematic_menu.name = 設計図メニュー keybind.schematic_flip_x.name = 設計図をX座標で反転 @@ -776,30 +783,25 @@ rules.wavetimer = ウェーブの自動進行 rules.waves = ウェーブ rules.attack = アタックモード rules.enemyCheat = 敵(赤チーム)の資源の無限化 -rules.unitdrops = ユニットの戦利品 +rules.blockhealthmultiplier = ブロックの体力倍率 +rules.blockdamagemultiplier = Block Damage Multiplier rules.unitbuildspeedmultiplier = ユニットの製造速度倍率 rules.unithealthmultiplier = ユニットの体力倍率 -rules.blockhealthmultiplier = ブロックの体力倍率 -rules.playerhealthmultiplier = プレイヤーの体力倍率 -rules.playerdamagemultiplier = プレイヤーのダメージ倍率 rules.unitdamagemultiplier = ユニットのダメージ倍率 rules.enemycorebuildradius = 敵コア周辺の建設禁止区域の半径:[lightgray] (タイル) -rules.respawntime = 復活までの待機時間:[lightgray] (秒) rules.wavespacing = ウェーブ間の待機時間:[lightgray] (秒) rules.buildcostmultiplier = 建設コストの倍率 rules.buildspeedmultiplier = 建設速度の倍率 rules.deconstructrefundmultiplier = ブロック破壊時の還元倍率 rules.waitForWaveToEnd = 敵が倒されるまでウェーブの進行を中断 rules.dropzoneradius = 出現範囲の半径:[lightgray] (タイル) -rules.respawns = ウェーブごとの最大復活回数 -rules.limitedRespawns = 復活回数の制限 +rules.unitammo = Units Require Ammo rules.title.waves = ウェーブ -rules.title.respawns = 復活 rules.title.resourcesbuilding = 資源 & 建設 -rules.title.player = プレイヤー rules.title.enemy = 敵 rules.title.unit = ユニット rules.title.experimental = 実験的なゲームプレイ +rules.title.environment = Environment rules.lighting = 霧 rules.ambientlight = 霧の色 rules.solarpowermultiplier = 太陽光効率 @@ -828,7 +830,6 @@ liquid.water.name = 水 liquid.slag.name = スラグ liquid.oil.name = 石油 liquid.cryofluid.name = 冷却水 -item.corestorable = [lightgray]コアに保存可能: {0} item.explosiveness = [lightgray]爆発性: {0}% item.flammability = [lightgray]可燃性: {0}% item.radioactivity = [lightgray]放射能: {0}% @@ -844,6 +845,32 @@ liquid.heatcapacity = [lightgray]熱容量: {0} liquid.viscosity = [lightgray]粘度: {0} liquid.temperature = [lightgray]温度: {0} +unit.dagger.name = ダガー +unit.mace.name = Mace +unit.fortress.name = フォートレス +unit.nova.name = Nova +unit.pulsar.name = Pulsar +unit.quasar.name = Quasar +unit.crawler.name = クローラー +unit.atrax.name = Atrax +unit.spiroct.name = Spiroct +unit.arkyid.name = Arkyid +unit.flare.name = Flare +unit.horizon.name = Horizon +unit.zenith.name = Zenith +unit.antumbra.name = Antumbra +unit.eclipse.name = Eclipse +unit.mono.name = Mono +unit.poly.name = Poly +unit.mega.name = Mega +unit.risse.name = Risse +unit.minke.name = Minke +unit.bryde.name = Bryde +unit.alpha.name = Alpha +unit.beta.name = Beta +unit.gamma.name = Gamma + +block.parallax.name = Parallax block.cliff.name = 崖 block.sand-boulder.name = 巨大な礫 block.grass.name = 草 @@ -995,17 +1022,6 @@ block.blast-mixer.name = 化合物ミキサー block.solar-panel.name = ソーラーパネル block.solar-panel-large.name = 大型ソーラーパネル block.oil-extractor.name = 石油抽出機 -block.command-center.name = 司令塔 -block.draug-factory.name = マイナードローン製造機 -block.spirit-factory.name = スピリットドローン製造機 -block.phantom-factory.name = ファントムドローン製造機 -block.wraith-factory.name = レースファイター製造機 -block.ghoul-factory.name = グールボンバー製造機 -block.dagger-factory.name = ダガーユニット製造機 -block.crawler-factory.name = クローラー製造機 -block.titan-factory.name = タイタンユニット製造機 -block.fortress-factory.name = フォートレスユニット製造機 -block.revenant-factory.name = レベナントファイター製造機 block.repair-point.name = 修復ポイント block.pulse-conduit.name = パルスパイプ block.plated-conduit.name = メッキパイプ @@ -1037,6 +1053,19 @@ block.meltdown.name = メルトダウン block.container.name = コンテナー block.launch-pad.name = 発射台 block.launch-pad-large.name = 大型発射台 +block.segment.name = Segment +block.ground-factory.name = Ground Factory +block.air-factory.name = Air Factory +block.naval-factory.name = Naval Factory +block.additive-reconstructor.name = Additive Reconstructor +block.multiplicative-reconstructor.name = Multiplicative Reconstructor +block.exponential-reconstructor.name = Exponential Reconstructor +block.tetrative-reconstructor.name = Tetrative Reconstructor +block.mass-conveyor.name = Mass Conveyor +block.payload-router.name = Payload Router +block.disassembler.name = Disassembler +block.silicon-crucible.name = Silicon Crucible +block.large-overdrive-projector.name = Large Overdrive Projector team.blue.name = ブルー team.crux.name = レッド team.sharded.name = オレンジ @@ -1044,21 +1073,7 @@ team.orange.name = オレンジ team.derelict.name = 廃墟 team.green.name = グリーン team.purple.name = パープル -unit.spirit.name = スピリットドローン -unit.draug.name = マイナードローン -unit.phantom.name = ファントムドローン -unit.dagger.name = ダガー -unit.crawler.name = クローラー -unit.titan.name = タイタン -unit.ghoul.name = グールボンバー -unit.wraith.name = レースファイター -unit.fortress.name = フォートレス -unit.revenant.name = レベナント -unit.eruptor.name = ユーロター -unit.chaos-array.name = ケアスアレー -unit.eradicator.name = エラディケーター -unit.lich.name = リッチ -unit.reaper.name = リーパー + tutorial.next = [lightgray]<タップして続ける> tutorial.intro = [scarlet]Mindustry チュートリアル[]へようこそ。\nまずは、コアの近くにある銅鉱石をタップして、[accent]銅を採掘[]してみましょう。\n\n[accent]銅: {0}/{1} tutorial.intro.mobile = [scarlet]Mindustry チュートリアル[]へようこそ。\n画面をスワイプで移動します。\n2本の指でつまんで拡大 · 縮小します。\nまずは、コアの近くにある銅鉱石をタップして、[accent]銅を採掘[]してみましょう。\n\n[accent]銅: {0}/{1} @@ -1101,17 +1116,7 @@ liquid.water.description = 機械の冷却や廃棄物の処理など幅広く liquid.slag.description = 様々な種類の鉱石が混ざり合っています。それぞれの鉱石に分類するか、噴射する武器として使用されます。 liquid.oil.description = 高度な材料生産で使用される液体です。 燃料として石炭に変換したり、武器として噴霧して発火させることができます。 liquid.cryofluid.description = 水とチタニウムから作られる不活性で非腐食性の液体です。 非常に高い熱容量を持っているため、冷却に使用されます。 -unit.draug.description = 基本的なマイニングドローンです。生産コストが低く、消耗品です。近くの銅と鉛を自動で採掘して、近くのコアへ輸送します。 -unit.spirit.description = 修理用のドローンユニットです。エリア内の破損したブロックを自動的に修復します。 -unit.phantom.description = 高度なドローンユニットです。プレイヤーに追従し、ブロックの建築を支援します。また、破壊されたブロックを再建築します。 -unit.dagger.description = 基本的な地上ユニットです。集団になると便利に使えます。 -unit.crawler.description = 自爆型の地上ユニットです。特に耐久性はなく、敵と接触すると爆発します。 -unit.titan.description = 高度な武装地上ユニットです。空と地上の両方の敵に攻撃を行います。2つの小型火炎放射器を装備しています。 -unit.fortress.description = 砲撃型の地上ユニットです。敵の建築物やユニットを長距離攻撃するための大砲を2つ装備しています。 -unit.eruptor.description = 建造物を破壊することに特化したユニットです。スラグの弾を発射し、建造物を溶かしたり、発火性の高い物質を燃やします。 -unit.wraith.description = 高速で突撃攻撃が可能な迎撃ユニットです。発電機を重点的に狙います。 -unit.ghoul.description = 重爆撃機です。敵のインフラを優先して破壊します。 -unit.revenant.description = 空中からミサイルを発射する重爆撃機です。 + block.message.description = メッセージを保存し、仲間間の通信に使用します。 block.graphite-press.description = 石炭を圧縮し、黒鉛を生成します。 block.multi-press.description = 黒鉛圧縮機のアップグレード版です。水と電力を使用して、より効率的に石炭を圧縮します。 @@ -1222,16 +1227,5 @@ block.ripple.description = 同時に複数ショットを発射する大型タ block.cyclone.description = 大型の連射型ターレットです。 block.spectre.description = 一度に2発の強力な弾を放つ大型のターレットです。 block.meltdown.description = 強力な長距離攻撃が可能な大型のターレットです。 -block.command-center.description = マップ全体のユニットに移動コマンドを発令します。\nユニットを巡回させたり、敵のコアを攻撃したり、自分のコアあるいは工場に撤退させたりします。敵のコアが存在しない場合、ユニットはデフォルトで攻撃状態の下で巡回します。 -block.draug-factory.description = 採掘用ドローンを製造します。 -block.spirit-factory.description = 建築物の修復用ドローンを製造します。 -block.phantom-factory.description = 高度な建築支援用ドローンを製造します。 -block.wraith-factory.description = 高速突撃攻撃用の航空迎撃ユニットを製造します。 -block.ghoul-factory.description = 絨毯爆撃用の大型航空ユニットを製造します。 -block.revenant-factory.description = ミサイル攻撃用の大型航空ユニットを製造します。 -block.dagger-factory.description = 基本的な地上ユニットを製造します。 -block.crawler-factory.description = 高速の自爆型ユニットを製造します。 -block.titan-factory.description = 高度な武装地上ユニットを製造します。 -block.fortress-factory.description = 地上重砲ユニットを製造します。 block.repair-point.description = 近くの負傷したユニットを修復します。 - +block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. diff --git a/core/assets/bundles/bundle_ko.properties b/core/assets/bundles/bundle_ko.properties index 9b7226ed23..b1eb6fd5cd 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -1,24 +1,24 @@ -credits.text=[royal]Anuken[] - [sky]anukendev@gmail.com[] 제작\n[royal]Potion[] ,[royal]Corby-Yun[] ,[royal]sk7725[] 번역 +credits.text = 만든이: [royal]Anuken[] - [sky]anukendev@gmail.com[] credits = 제작자 -contributors = 번역 및 개발 기여자들 -discord=Mindustry Discord 에 가입하세요! -link.discord.description=공식 Mindustry Discord 대화방 -link.reddit.description=Mindustry 서브레딧 +contributors = 번역가 및 기여자 +discord = Mindustry Discord 에 가입하세요! +link.discord.description = Mindustry Discord 공식 대화방 +link.reddit.description = Mindustry 서브레딧 link.github.description = 게임 소스코드 -link.changelog.description=업데이트 변경 목록 -link.dev-builds.description = 불안정한 개발 빌드들 -link.trello.description = 출시 예정중인 기능들을 게시한 공식 Trello 보드 -link.itch.io.description=PC 버전 다운로드가 있는 itch.io 페이지 -link.google-play.description = Google Play 스토어 정보 -link.f-droid.description=F-Droid 카탈로그 목록 +link.changelog.description = 업데이트 내용 목록 +link.dev-builds.description = 불안정한 개발 빌드 +link.trello.description = 출시 예정인 기능들을 게시한 공식 Trello 보드 +link.itch.io.description = PC 다운로드가 있는 itch.io 페이지 +link.google-play.description = Google Play 스토어 목록 +link.f-droid.description = F-Droid 카탈로그 목록 link.wiki.description = 공식 Mindustry 위키 -link.feathub.description=새로운 기능 제안 +link.feathub.description = 새로운 기능 제안 linkfail = 링크를 열지 못했습니다!\nURL이 클립보드에 복사되었습니다. screenshot = 스크린 샷이 {0} 에 저장되었습니다. -screenshot.invalid=맵이 너무 커서 캡처 할 메모리가 부족합니다. +screenshot.invalid = 맵이 너무 커서 스크린샷을 할 메모리가 부족할 수 있습니다. gameover = 게임 오버 gameover.pvp = [accent]{0}[] 팀이 승리했습니다! -highscore=[accent]새로운 최고 점수 달성! +highscore = [accent]새로운 최고 점수! copied = 복사됨. load.sound = 소리 @@ -29,215 +29,218 @@ load.system = 시스템 load.mod = 모드 load.scripts = 스크립트 -be.update = 새로운 최신 빌드를 플레이 할 수 있습니다. -be.update.confirm = 다운로드 후 게임을 재시작하시겠습니까? +be.update = 새로운 Bleeding Edge 빌드 사용 가능: +be.update.confirm = 지금 다운로드하고 다시 시작하시겠습니까? be.updating = 업데이트 중... be.ignore = 무시 -be.noupdates = 새로운 업데이트가 없습니다. -be.check = 업데이트 확인합니다. +be.noupdates = 업데이트가 없습니다. +be.check = 업데이트 확인 schematic = 설계도 schematic.add = 설계도 저장하기 -schematics = 설계도 모음 -schematic.replace = 이 설계도 이름이 이미 존재합니다. 바꾸겠습니까? -schematic.exists = 이 회로도 이름이 이미 존재합니다. -schematic.import = 설계도 불러오기 +schematics = 설계도들 +schematic.replace = 해당 이름의 설계도가 이미 존재합니다. 교체 하시겠습니까? +schematic.exists = 해당 이름의 설계도가 이미 존재합니다. +schematic.import = 설계도 가져오기... schematic.exportfile = 파일 내보내기 -schematic.importfile = 파일 불러오기 +schematic.importfile = 파일 가져오기 schematic.browseworkshop = 창작마당 검색 -schematic.copy = 클립보드에 복사하기 -schematic.copy.import = 클립보드에서 붙여넣기 +schematic.copy = 클립 보드에 복사 +schematic.copy.import = 클립 보드에서 가져오기 schematic.shareworkshop = 창작마당에 공유 -schematic.flip = 좌우 뒤집기: [accent][[{0}][] / 상하 뒤집기: [accent][[{1}][] +schematic.flip = [accent][[{0}][]/[accent][[{1}][]: 설계도 뒤집기 schematic.saved = 설계도 저장됨. -schematic.delete.confirm = 삭제된 설계도는 복구할 수 없습니다. 정말로 삭제하시겠습니까? -schematic.rename = 설계도명 변경 -schematic.info = {0}x{1}크기, {2} 블록. +schematic.delete.confirm = 이 설계도는 완전히 삭제 될 것 입니다. +schematic.rename = 설계도 이름 바꾸기 +schematic.info = {0}x{1}, {2} 블록 -stat.wave = 패배한 웨이브: [accent]{0} -stat.enemiesDestroyed = 부순 적 수: [accent]{0} -stat.built = 지은 건물 수: [accent]{0} -stat.destroyed = 부서진 건물 수: [accent]{0} -stat.deconstructed = 부순 건물 수: [accent]{0} +stat.wave = 패배 한 웨이브:[accent] {0} +stat.enemiesDestroyed = 파괴된 적:[accent] {0} +stat.built = 건축 된 건물: [accent]{0} +stat.destroyed = 건물 파괴됨: [accent]{0} +stat.deconstructed = 건물 해체: [accent]{0} stat.delivered = 얻은 자원: -stat.playtime = 플레이 타임: [accent] {0} -stat.rank = 최종 점수: [accent]{0} +stat.playtime = 플레이 시간: [accent] {0} +stat.rank = 최종 순위: [accent]{0} launcheditems = [accent]보유 자원 launchinfo = [출격되지 않음][[출격]파랑색으로 표시된 자원들을 얻습니다. map.delete = 정말로 "[accent]{0}[]" 맵을 삭제하시겠습니까? level.highscore = 최고 점수: [accent]{0} level.select = 맵 선택 -level.mode = 게임 모드 : -showagain = 다음 세션에 다시 이 메세지를 표시하지 않습니다. -coreattack = < 코어가 공격받고 있습니다! > +level.mode = 게임 모드: +coreattack = < 코어가 공격 받고 있습니다! > nearpoint = [[ [scarlet]낙하 지점 에서 나가세요[] ]\n적 낙하 시 낙하 지점 내 건물 및 유닛 파괴 -database = 코어 기록보관소 +database = 코어 데이터베이스 savegame = 게임 저장 loadgame = 게임 불러오기 -joingame = 서버 접속 -customgame = 사용자 정의 게임 +joingame = 게임 참여 +customgame = 사용자 지정 게임 newgame = 새 게임 none = <없음> minimap = 미니맵 -position = 플레이어 좌표 +position = 위치 close = 닫기 website = 웹사이트 quit = 나가기 save.quit = 저장 후 나가기 maps = 맵 -maps.browse = 맵 검색 +maps.browse = 맵 찾아보기 continue = 계속하기 maps.none = [lightgray]맵을 찾을 수 없습니다! invalid = 오류 -pickcolor = 색 -preparingconfig = 설정 사전준비 -preparingcontent = 컨텐츠 사전준비 -uploadingcontent = 컨텐츠 업로드 -uploadingpreviewfile = 미리보기 파일 업로드 +pickcolor = 색상 선택 +preparingconfig = 설정 준비중 +preparingcontent = 컨텐츠 준비중 +uploadingcontent = 컨텐츠 업로드중 +uploadingpreviewfile = 미리 보기 파일 업로드 중 committingchanges = 바뀐 점 적용 done = 완료 -feature.unsupported = 이 기기는 이 기능을 지원하지 않습니다. +feature.unsupported = 기기가 이 기능을 지원하지 않습니다. -mods.alphainfo = 현재의 모드는 시험적 기능이며, [scarlet] 버그가 많을 수도 있습니다.[].\n만약 버그를 발견할경우 Mindustry 깃허브 또는 디스코드로 제보해주세요. -mods.alpha = [accent](시험적 기능) +mods.alphainfo = 현재 모드는 알파이며, [scarlet]버그가 많을 수 있습니다[].\n발견한 문제는 Mindustry Github 또는 Discord에 보고하세요. +mods.alpha = [accent](알파) mods = 모드 -mods.none = [lightgray]모드가 없습니다! +mods.none = [lightgray]모드를 찾을 수 없습니다! mods.guide = 모드 제작 가이드 -mods.report = 문제 신고 -mods.openfolder = 모드 폴더 열기 -mod.display = [gray]모드 :[orange] {0} -mod.enabled = [blue]활성화 -mod.disabled = [scarlet]적용 안됨 -mod.disable = [lightgray]비활성화 -mod.delete.error = 모드를 삭제할 수 없습니다. 게임 밖에서 모드 파일을 사용 중일 수 있습니다. -mod.requiresversion = [scarlet]필요한 게임 버전: [accent]{0} -mod.missingdependencies = [scarlet]필요한 모드: {0} -mod.erroredcontent = [scarlet]컨텐츠 오류 -mod.errors = 내용을 불러오는 중 오류가 발생하였습니다. -mod.noerrorplay = [scarlet]모드에 오류가 존재합니다.[] 해당 오류가 발생하는 모드를 비활성화하거나 모드의 오류를 고친 후 플레이가 가능합니다. -mod.nowdisabled = [scarlet]모드 '{0}'는 다음의 모드에 의존합니다: [accent] {1}\n[lightgray]이 모드를 먼저 다운로드해야합니다.\n이 모드는 자동으로 비활성화됩니다. +mods.report = 버그 제보하기 +mods.openfolder = 폴더 열기 +mods.reload = 새로 고침 +mods.reloadexit = 게임이 종료된 후 모드를 불러올 것입니다. +mod.display = [gray]모드:[orange] {0} +mod.enabled = [lightgray]활성화됨 +mod.disabled = [scarlet]비활성화됨 +mod.disable = 비활성화 +mod.content = 콘텐츠: +mod.delete.error = 모드를 삭제할 수 없습니다. 파일이 사용 중일 수 있습니다. +mod.requiresversion = [scarlet]필요한 최소 게임 버전: [accent]{0} +mod.missingdependencies = [scarlet]누락된 종속성: {0} +mod.erroredcontent = [scarlet]콘텐츠 오류 +mod.errors = 콘텐츠를 로드하는 동안 오류가 발생함. +mod.noerrorplay = [scarlet]오류가 있는 모드가 있습니다.[] 영향을 받는 모드를 비활성화 하거나 플레이 하기 전에 오류를 수정하세요. +mod.nowdisabled = [scarlet]모드 '{0}'에 필요한 종속성이 없습니다:[accent] {1}\n[lightgray]이 모드를 먼저 다운로드 해야합니다.\n이 모드는 자동으로 비활성화됩니다.. mod.enable = 활성화 -mod.requiresrestart = 모드 변경사항을 적용하기 위해 게임을 종료합니다. -mod.reloadrequired = [scarlet]새로고침 예정됨 -mod.import = 모드 추가 -mod.import.github = 깃허브에서 모드 불러오기 -mod.item.remove = 이것은 모드[accent] '{0}'[]의 자원입니다. 이 자원을 삭제하려면, 이 모드를 제거해야합니다. -mod.remove.confirm = 이 모드를 삭제하시겠습니까? -mod.author = [lightgray]제작자: [] {0} -mod.missing = 이 세이브 파일에는 설치하지 않은 모드나 현재 버전에 없는 데이터가 포함되어 있습니다. 세이브 파일이 손상될 수 있습니다. 불러오시겠습니까?\n[lightgray]모드 :\n{0} -mod.preview.missing = 창작마당에 모드를 업로드하기 전에 미리보기 이미지를 추가해야합니다.\n[accent] 모드 폴더안에 preview.png[]이름의 미리보기 이미지를 준비한 후 다시 시도해주세요. +mod.requiresrestart = 모드 변경 사항을 적용하기 위해 게임을 종료합니다. +mod.reloadrequired = [scarlet]재시작 필요 +mod.import = 모드 가져오기 +mod.import.file = 파일 가져오기 +mod.import.github = Github 에서 모드 가져오기 +mod.jarwarn = [scarlet]JAR 모드는 안전하지 않습니다.[]\n신뢰할 수 있는 소스에서 이 모드를 가져와야 합니다! +mod.item.remove = 이 아이템은[accent] '{0}' 모드의 일부입니다. 이를 제거할려면 해당 모드를 제거하세요. +mod.remove.confirm = 이 모드가 삭제 될 것입니다. +mod.author = [lightgray]제작자:[] {0} +mod.missing = 이 저장 파일에는 최근에 업데이트 했거나 더이상 설치되지 않은 모드가 포함되어 있습니다. 저장 파일이 손상될 수 있습니다. 정말로 불러 오시겠습니까?\n[lighthray]모드들:\n{0} +mod.preview.missing = 창작마당에 모드를 업로드하기 전에 미리보기 이미지를 추가해야합니다.\n[accent]preview.png[] 라는 이름의 미리보기 이미지를 모드 폴더에 넣고 다시 시도하세요. mod.folder.missing = 창작마당에는 폴더 형태의 모드만 게시할 수 있습니다.\n모드를 폴더 형태로 바꾸려면 모드 파일을 모드 폴더에 압축을 풀고 이전 모드 파일을 삭제 후, 게임을 재시작하거나 모드를 다시 로드하십시오. -mod.scripts.unsupported = 당신의 기기는 자바스크립트를 지원하지 않습니다. 모드의 일부 기능이 작동하지 않을 수 있습니다. +mod.scripts.disable = 이 기기는 스크립트가 있는 모드를 지원하지 않습니다. 게임을 플레이 할려면 이 모드를 비활성화 해야 합니다. about.button = 정보 -name = 이름 : -noname = 먼저 [accent] [] 을 설정하세요. -filename = 파일 이름 : -unlocked = 대상 정보 기록됨 -completed = [accent]연구됨 +name = 이름: +noname = 먼저 [accent]플레이어 이름[]을 설정하세요. +filename = 파일 이름: +unlocked = 새로운 콘텐츠가 해금되었습니다! +completed = [accent]완료됨 techtree = 연구 기록 research.list = [lightgray]연구: research = 연구 -researched = [lightgray]{0}연구 완료. -players = {0}명 접속 중 -players.single = {0}명만 있음. -players.search = 플레이어 검색 -players.notfound = [gray]플레이어를 찾을수 없습니다. -server.closing = [accent]서버 닫는 중... +researched = [lightgray]{0} 연구 완료. +players = {0} 플레이어들 +players.single = {0} 플레이어 +players.search = 검색 +players.notfound = [gray]플레이어를 찾을 수 없습니다. +server.closing = [accent]서버를 닫는 중... server.kicked.kick = 서버에서 추방되었습니다! -server.kicked.whitelist = 당신은 이 서버의 화이트리스트에 등록되어있지 않습니다. +server.kicked.whitelist = 당신은 이 서버의 화이트리스트에 등록되어 있지 않습니다. server.kicked.serverClose = 서버 닫힘. -server.kicked.vote = 당신은 투표로 추방되었습니다. 잘가요. -server.kicked.clientOutdated = 오래된 버전의 게임입니다! 게임을 업데이트하세요! -server.kicked.serverOutdated = 오래된 버전의 서버입니다! 서버 호스트 관리자에게 문의하세요! -server.kicked.banned = 이 서버에서 벤 되었습니다. -server.kicked.typeMismatch = 클라이언트와 호환되지 않는 서버입니다. 디스코드에서 #mods에 들러보는 건 어떨까요? -server.kicked.playerLimit = 서버의 인원이 꽉 찼습니다. 빈 공간이 생길 때까지 기다려주세요. -server.kicked.recentKick = 방금 추방되었습니다.\n잠시 기다린 후에 접속해주세요. -server.kicked.nameInUse = 이 닉네임은 이미 이 서버에서 사용중입니다. -server.kicked.nameEmpty = 당신의 닉네임이 비어있습니다. -server.kicked.idInUse = 이미 서버에 접속중입니다! 다중 계정은 허용되지 않습니다. -server.kicked.customClient = 이 서버는 직접 빌드한 버전을 지원하지 않습니다. 공식 버전을 사용하세요. +server.kicked.vote = 당신은 투표로 추방되었습니다. 안녕히 계십시오. +server.kicked.clientOutdated = 구버전 클라이언트 입니다! 게임을 업데이트하세요! +server.kicked.serverOutdated = 구버전 서버입니다! 호스트에게 업데이트를 요청하세요! +server.kicked.banned = 당신은 이 서버에서 차단되었습니다. +server.kicked.typeMismatch = 이 서버는 현재 빌드 유형과 호환되지 않습니다. +server.kicked.playerLimit = 서버의 인원이 꽉 찼습니다. 빈 슬롯이 생길 때까지 기다려주세요. +server.kicked.recentKick = 최근에 추방되었습니다.\n다시 접속하기 전에 기다리세요. +server.kicked.nameInUse = 이 서버에 해당 이름을 가진 사람이 있습니다. +server.kicked.nameEmpty = 설정된 닉네임이 없습니다. +server.kicked.idInUse = 당신은 이미 이 서버에 있습니다! 두 개의 계정으로 연결하는건 허용되지 않습니다. +server.kicked.customClient = 이 서버는 사용자 정의 빌드를 지원하지 않습니다. 공식 버전을 다운로드 하세요. server.kicked.gameover = 게임 오버! -server.kicked.serverRestarting = 서버가 재시작합니다. -server.versions = 클라이언트 버전: [accent] {0}[]\n서버 버전: [accent] {1}[] -host.info = [accent]호스트[] 버튼은 현재 네트워크의 [scarlet]6567[] 포트를 사용합니다.\n[lightgray]같은 Wi-Fi 또는 로컬 네트워크[] 에서 서버 목록을 볼 수 있습니다.\n\n만약 플레이어들이 이 IP를 통해 어디에서나 연결할 수 있게 하고 싶다면, 공유기 설정에서 [accent]포트 포워딩[]을 하시거나 VPN을 사용하셔야 합니다.\n\n[lightgray]참고: LAN 게임 연결에 문제가 있는 사람이 있다면, 방화벽 설정에서 Mindustry 가 로컬 네트워크에 액세스하도록 허용했는지 확인해주세요. -join.info = 여기서 서버 추가를 누르신 후, [accent]서버 IP[]를 입력하여 다른 서버에 접속할 수 있습니다.\n또는 [accent]로컬 네트워크(LAN)[] 서버를 검색하여 접속할 수 있습니다.\nLAN 및 WAN 멀티 플레이어 모두 지원합니다.\n\n[lightgray]참고:여기에서는 자동으로 글로벌 서버를 추가하지 않습니다. IP로 다른 사람의 서버에 접속하려면 직접 서버 주소를 찾아서 적으셔야합니다.[]\n\n[royal]한국의 서버로는 [accent]mindustry.kr[]가 있습니다.\n서버 주소 입력방법은 < 주소:포트 >의 형식입니다.\n[royal]포트가 없을 시에는 그냥 주소만 입력하시면 됩니다.\n\n[royal]예시) mindustry.kr의 6567포트\nmindustry.kr:6567\n포트가 6567일 경우에는 :6567을 생략할 수 있습니다. -hostserver = 서버 열기 +server.kicked.serverRestarting = 서버가 다시 시작되고 있습니다. +server.versions = 당신의 버전: [accent] {0}[]\n서버 버전:[accent] {1}[] +host.info = [accent]호스트[] 버튼은 포트[scarlet] 6567[]에서 호스팅합니다.\n같은 [lightgray]Wi-Fi 또는 LAN[]에 있는 모든 사용자들이 자신의 서버 목록에서 서버를 볼 수 있어야 합니다.\n\n사람들이 IP를 통해 어디서나 접속할 수 있게 할려면 [accent]포트 포워딩[]이 필요합니다.\n\n참고: 누군가 LAN 게임에 연결하는데 문제가 있는 경우 방화벽 설정에서 Mindustry 가 LAN에 액세스 할 수 있도록 허용했는지 확인하세요. 공용 네트워크는 가끔씩 서버 검색을 허용하지 않습니다. +join.info = 여기에 연결할 [accent]서버 IP[]를 입력하거나 [accent]LAN[] 또는 [accent]글로벌[] 서버를 검색할 수 있습니다.\nLAN 및 WAN 멀티 플레이어 모두 지원됩니다.\n\n[lightgray]IP로 서버에 연결할려면 호스트에게 IP를 요청해야 합니다. 호스트 쪽의 장치에서 구글에 "내 IP" 라고 검색하면 쉽게 찾을 수 있습니다. +hostserver = 멀티플레이 서버 호스트 invitefriends = 친구 초대 hostserver.mobile = 서버\n열기 host = 서버 열기 hosting = [accent]서버 여는중... hosts.refresh = 새로고침 -hosts.discovering = LAN 게임 찾기 -hosts.discovering.any = 서버 찾기 -server.refreshing = 서버 목록 새로고치는중... +hosts.discovering = LAN 게임 찾는중 +hosts.discovering.any = 서버 찾는중 +server.refreshing = 서버 목록 새로고치는중 hosts.none = [lightgray]LAN 게임을 찾을 수 없습니다! -host.invalid = [scarlet]서버에 연결할 수 없습니다! +host.invalid = [scarlet]호스트에 연결할 수 없습니다! servers.local = 로컬 서버 servers.remote = 원격 서버 servers.global = 커뮤니티 서버 trace = 플레이어 정보 보기 -trace.playername = 닉네임: [accent]{0} +trace.playername = 플레이어 이름: [accent]{0} trace.ip = IP: [accent]{0} -trace.id = UUID: [accent]{0} -trace.mobile = 모바일 접속 유무: [accent]{0} +trace.id = 고유 ID: [accent]{0} +trace.mobile = 모바일 클라이언트: [accent]{0} trace.modclient = 사용자 지정 클라이언트: [accent]{0} invalidid = 잘못된 클라이언트 ID 입니다! 버그 보고서를 보내주세요. -server.bans = 차단된 플레이어 -server.bans.none = 차단된 플레이어가 없습니다! -server.admins = 관리자 -server.admins.none = 관리자가 없습니다! +server.bans = 차단 목록 +server.bans.none = 차단된 플레이어를 찾을 수 없습니다! +server.admins = 관리자들 +server.admins.none = 관리자를 찾을 수 없습니다! server.add = 서버 추가 -server.delete = 이 서버를 삭제하시겠습니까? -server.edit = 서버 수정 -server.outdated = [crimson]서버 버전이 낮습니다![] -server.outdated.client = [crimson]클라이언트 버전이 낮습니다![] -server.version = [lightgray]서버 버전: {0} {1} +server.delete = 정말로 이 서버를 삭제하시겠습니까? +server.edit = 서버 편집 +server.outdated = [scarlet]서버 버전이 낮습니다![] +server.outdated.client = [scarlet]클라이언트 버전이 낮습니다![] +server.version = [gray]v{0} {1} server.custombuild = [accent]사용자 정의 서버 -confirmban = 이 플레이어를 차단하시겠습니까? -confirmkick = 정말로 이 플레이어를 추방시키겠습니까? -confirmvotekick = 정말로 이 플레이어 추방에 투표하시겠습니까? -confirmunban = 이 플레이어를 차단해제 하시겠습니까? -confirmadmin = 이 플레이어를 관리자로 만들겠습니까? -confirmunadmin = 이 플레이어를 일반 유저로 만들겠습니까? +confirmban = 정말로 "{0}[white]" 을(를) 차단 하시겠습니까? +confirmkick = 정말로 "{0}[white]" 을(를) 추방 하시겠습니까? +confirmvotekick = 정말로 "{0}[white]" 을(를) 투표로 추방 하시겠습니까? +confirmunban = 정말로 이 플레이어를 차단 해제 하시겠습니까? +confirmadmin = 정말로 "{0}[white]" 을(를) 관리자로 만들겠습니까? +confirmunadmin = 정말로 "{0}[white]" 을(를) 관리자 상태를 제거 하시겠습니까? joingame.title = 게임 참가 joingame.ip = 주소: -disconnect = 서버와 연결이 해제되었습니다. +disconnect = 연결이 끊어졌습니다. disconnect.error = 연결 오류. -disconnect.closed = 연결이 끊어졌습니다.. -disconnect.timeout = 연결 시간 한계 도달.. -disconnect.data = 월드 데이터 로딩 실패.. -cantconnect = 게임 [accent]{0}[]에 접속하지 못했습니다. +disconnect.closed = 연결이 종료되었습니다. +disconnect.timeout = 시간 초과. +disconnect.data = 맵 데이터를 로드하지 못했습니다! +cantconnect = [accent]{0}[] 게임에 참여할 수 없습니다. connecting = [accent]연결중... -connecting.data = [accent]월드 데이터 로딩중... +connecting.data = [accent]맵 데이터 로딩중... server.port = 포트: -server.addressinuse = 주소가 이미 사용중입니다! -server.invalidport = 포트가 올바르지 않습니다! -server.error = [crimson]서버를 여는 데 오류가 발생했습니다. +server.addressinuse = 이미 사용중인 주소입니다! +server.invalidport = 잘못된 포트 번호입니다! +server.error = [scarlet]서버 호스팅 오류. save.new = 새로 저장 -save.overwrite = 이 저장 슬롯을 덮어씌우겠습니까? -overwrite = 덮어쓰기 -save.none = 세이브 파일을 찾지 못했습니다! -saveload = [accent]저장중... +save.overwrite = 저장된 슬롯을 덮어 쓰시겠습니까? +overwrite = 덮어 쓰기 +save.none = 저장된 파일을 찾을 수 없습니다! savefail = 게임을 저장하지 못했습니다! -save.delete.confirm = 이 세이브 파일을 삭제하시겠습니까? +save.delete.confirm = 이 저장을 삭제 하시겠습니까? save.delete = 삭제 -save.export = 세이브 파일 내보내기 -save.import.invalid = [accent]파일이 잘못되었습니다! -save.import.fail = [crimson]세이브 파일을 불러오지 못함: [accent]{0} -save.export.fail = [crimson]세이브 파일을 내보내지 못함: [accent]{0} -save.import = 세이브 파일 불러오기 -save.newslot = 세이브 파일이름: +save.export = 저장 내보내기 +save.import.invalid = [accent]저장 파일이 잘못되었습니다! +save.import.fail = [scarlet]저장 파일을 가져오지 못함: [accent]{0} +save.export.fail = [scarlet]저장 파일을 내보내지 못함: [accent]{0} +save.import = 저장 가져오기 +save.newslot = 저장 이름: save.rename = 이름 변경 save.rename.text = 새 이름: selectslot = 저장슬롯을 선택하십시오. -slot = [accent]{0}번째 슬롯 -editmessage = 메세지 수정 -save.corrupted = [accent]세이브 파일이 손상되었거나 잘못된 파일입니다! +slot = [accent]슬롯 {0} +editmessage = 메세지 편집 +save.corrupted = [accent]저장 파일이 손상되었거나 잘못된 파일입니다! empty = <비어있음> on = 활성화 off = 비활성화 @@ -246,7 +249,7 @@ save.map = 맵: {0} save.wave = {0} 웨이브 save.mode = 게임모드: {0} save.date = 마지막 저장일: {0} -save.playtime = 플레이타임: {0} +save.playtime = 플레이 시간: {0} warning = 경고. confirm = 확인 delete = 삭제 @@ -254,58 +257,57 @@ view.workshop = 창작마당에서 보기 workshop.listing = 창작마당 목록 편집하기 ok = 확인 open = 열기 -customize = 맞춤설정 +customize = 사용자 정의 규칙 cancel = 취소 openlink = 링크 열기 copylink = 링크 복사 back = 뒤로가기 data.export = 데이터 내보내기 -data.import = 데이터 불러오기 -data.openfolder = 게임 데이터 폴더 +data.import = 데이터 가져오기 +data.openfolder = 데이터 폴더 열기 data.exported = 데이터를 내보냈습니다. data.invalid = 유효한 게임 데이터가 아닙니다. -data.import.confirm = 외부 게임 데이터를 불러옵니다...\n[accent]작업이 완료되면 현재 게임 데이터는 삭제되고, 외부의 게임 데이터를 불러오니 주의하세요. 실행 취소가 불가능하며, 작업 후 게임이 바로 꺼집니다. -classic.export = 클래식 데이터 추출 -classic.export.text = Mindustry 클래식 (v3.5 build 40)의 세이브파일 또는 맵 데이터가 발견되었습니다. 이 데이터를 Mindustry 클래식 앱에서 사용하기 위해 홈 폴더로 추출할까요? -quit.confirm = 정말로 종료하시겠습니까? -quit.confirm.tutorial = 튜토리얼을 종료하시겠습니까?\n튜토리얼은 [accent]설정 -> 게임 -> 튜토리얼[]에서 다시 해보실 수 있습니다. +data.import.confirm = 외부 데이터를 가져오면 현재 게임 데이터를 [scarlet]모두[] 덮어쓰게 됩니다.\n[accent]이 작업은 취소할 수 없습니다![]\n\n데이터를 가져오면 게임이 즉시 종료됩니다. +quit.confirm = 정말로 종료 하시겠습니까? +quit.confirm.tutorial = 튜토리얼을 종료하시겠습니까?\n튜토리얼은[accent]설정->게임->튜토리얼[]에서 다시 해보실 수 있습니다. loading = [accent]불러오는중... reloading = [accent]모드 새로고침하는중... saving = [accent]저장중... -cancelbuilding = [accent][[{0}][] 를 눌러 설계도 초기화 +respawn = 코어에서 부활까지 [accent][[{0}][]초 남음. +cancelbuilding = [accent][[{0}][] 를 눌러 계획 초기화 selectschematic = [accent][[{0}][] 를 눌러 선택+복사 -pausebuilding = [accent][[{0}][] 를 눌러 설계모드 진입 -resumebuilding = [scarlet][[{0}][] 를 눌러 건설 시작 -wave = [accent] {0} 웨이브 -wave.waiting = [green]{0}초[]후 다음 웨이브 시작 +pausebuilding = [accent][[{0}][] 를 눌러 건설 일시중지 +resumebuilding = [scarlet][[{0}][] 를 눌러 건설 재개 +wave = [accent]{0} 웨이브 +wave.waiting = 다음 웨이브까지[lightgray] {0}초 wave.waveInProgress = [lightgray]웨이브 진행중 waiting = [lightgray]대기중... -waiting.players = 다른 플레이어를 기다리는 중... -wave.enemies = [lightgray]적 유닛 {0}마리 남았음 -wave.enemy = [lightgray]적 유닛 {0}마리 남음 +waiting.players = 다른 플레이어들을 기다리는 중... +wave.enemies = [lightgray]적 유닛 {0}명 남음 +wave.enemy = [lightgray]{0}명 남음 loadimage = 사진 불러오기 saveimage = 사진 저장 unknown = 알 수 없음 custom = 사용자 정의 -builtin = 기본맵 -map.delete.confirm = 이 맵을 삭제하시겠습니까? 이 명령은 취소할 수 없습니다! -map.random = [accent]랜덤 맵 -map.nospawn = 이 맵에 플레이어가 생성될 코어가 없습니다! 맵 편집기에서 [royal]노랑색 팀[]코어를 맵에 추가하세요. -map.nospawn.pvp = 이 맵에는 적팀 코어가 없습니다! 에디터에서 [royal]노랑색 팀이 아닌[] 코어를 추가하세요. -map.nospawn.attack = 이 맵에는 플레이어가 공격할 수 있는 적의 코어가 없습니다! 에디터에서 [royal] 빨강색 팀[] 코어를 맵에 추가하세요. -map.invalid = 파일이 잘못되었거나 손상되어 맵을 열 수 없습니다. -workshop.update = 창작마당 맵 업데이트 -workshop.error = 창작마당 정보를 불러오는 중에 오류가 발생했습니다: {0} -map.publish.confirm = 맵을 업로드 하시겠습니까?\n\n[lightgray]먼저 워크샵 EULA에 동의하시지 않으면 맵이 표시되지 않습니다! -workshop.menu = 해당 맵으로 수행할 작업을 선택하십시오. -workshop.info = 맵 정보 +builtin = 내장 +map.delete.confirm = 정말로 이 맵을 삭제하시겠습니까? 이 명령은 취소할 수 없습니다! +map.random = [accent]무작위 맵 +map.nospawn = 이 맵에 플레이어가 스폰 할 코어가 없습니다! 편집기에서 [accent]orange[] 코어를 맵에 추가하세요. +map.nospawn.pvp = 이 맵에는 플레이어가 스폰할 적 코어가 없습니다! 편집기에서 [royal]orange 팀이 아닌[] 코어를 추가하세요. +map.nospawn.attack = 이 맵에는 플레이어가 공격할 수 있는 적의 코어가 없습니다! 에디터에서 [royal]빨간색[] 코어들을 맵에 추가하세요. +map.invalid = 맵 로드중 오류: 맵 파일이 손상되었거나 잘못된 파일입니다. +workshop.update = 아이템 업데이트 +workshop.error = 창작마당 세부 사항을 가져오는 중 오류가 발생했습니다: {0} +map.publish.confirm = 이 지도를 게시 하시겠습니까?\n\n[lightgray]창작마당 EULA에 먼저 동의해야 하며, 그렇지 않으면 맵이 표시되지 않습니다! +workshop.menu = 이 아이템으로 수행 할 작업을 선택하십시오. +workshop.info = 아이템 정보 changelog = 변경점 (선택 사항) : eula = 스팀 EULA -missing = 이 항목은 삭제되거나 이동되었습니다.\n[lightgray]워크샵 목록이 자동으로 연결 해제되었습니다. +missing = 이 아이템은 삭제되거나 이동되었습니다.\n[lightgray]창작마당 목록이 자동으로 연결 해제되었습니다. publishing = [accent]업로드 중... -publish.confirm = 맵을 업로드 하시겠습니까?\n\n[lightgray]먼저 워크샵 EULA에 동의하시지 않으면 맵이 표시되지 않습니다! -publish.error = 맵 업로드 오류: {0} -steam.error = 스팀 서비스를 초기화하는데 실패했습니다.\n오류: {0} +publish.confirm = 이것을 게시 하시겠습니까?[lightgray]창작마당 EULA에 동의해야 합니다. 그렇지 않으면 아이템이 표시되지 않습니다! +publish.error = 아이템 게시 오류: {0} +steam.error = 스팀 서비스를 초기화하지 못했습니다.\n오류: {0} editor.brush = 브러쉬 editor.openin = 편집기 열기 @@ -315,27 +317,28 @@ editor.mapinfo = 맵 정보 editor.author = 제작자: editor.description = 설명: editor.nodescription = 맵을 업로드하려면 최소 4자 이상의 설명이 있어야합니다. -editor.waves = 웨이브 : -editor.rules = 규칙 : -editor.generation = 맵 생성 설정: +editor.waves = 웨이브: +editor.rules = 규칙: +editor.generation = 생성: editor.ingame = 인게임 편집 -editor.publish.workshop = 창작마당 업로드 +editor.publish.workshop = 창작마당 게시 editor.newmap = 신규 맵 -workshop = Workshop +workshop = 창작마당 waves.title = 웨이브 waves.remove = 삭제 waves.never = 여기까지 유닛생성 waves.every = 매 waves.waves = 웨이브마다 waves.perspawn = 생성 +waves.shields = 보호막/웨이브 waves.to = 부터 -waves.boss = 이 유닛을 보스로 설정 +waves.guardian = 보호자 waves.preview = 미리보기 waves.edit = 편집 waves.copy = 클립보드로 복사 waves.load = 클립보드에서 불러오기 -waves.invalid = 클립보드의 잘못된 웨이브 데이터 -waves.copied = 웨이브 코드 복사됨 +waves.invalid = 클립보드에 잘못된 웨이브 데이터가 있습니다. +waves.copied = 웨이브 복사됨 waves.none = 적 웨이브가 설정되지 않았습니다.\n비어있을 시 자동으로 기본 적 웨이브로 설정됩니다. editor.default = [lightgray]<기본값> details = 설명 @@ -346,11 +349,11 @@ editor.removeunit = 유닛 삭제 editor.teams = 팀 editor.errorload = 파일을 불러오지 못했습니다. editor.errorsave = 파일을 저장하지 못했습니다. -editor.errorimage = 이것은 맵이 아니라 사진입니다.\n\n예전 맵을 가져오려면 편집기의 '예전 맵 가져오기' 버튼을 사용하세요. -editor.errorlegacy = 이 맵은 너무 오래되어, 더는 지원하지 않는 맵 형식입니다. -editor.errornot = 선택한 대상이 맵 파일이 아닙니다. +editor.errorimage = 이것은 맵이 아니라 사진입니다.\n\n3.5/build 40 맵을 가져올려면 편집기에서 '예전 맵 가져오기' 버튼을 사용하세요. +editor.errorlegacy = 이 맵은 너무 오래되어 더 이상 지원되지 않는 구형 맵 형식을 사용합니다. +editor.errornot = 이건 맵 파일이 아닙니다. editor.errorheader = 이 맵 파일은 유효하지 않거나 손상되었습니다. -editor.errorname = 맵에 이름이 지정되어 있지 않습니다. +editor.errorname = 맵에 이름이 지정되어 있지 않습니다. 저장 파일을 불러올려고 합니까? editor.update = 업데이트 editor.randomize = 무작위 editor.apply = 적용 @@ -359,33 +362,33 @@ editor.resize = 맵 크기조정 editor.loadmap = 맵 불러오기 editor.savemap = 맵 저장 editor.saved = 저장됨! -editor.save.noname = 맵에 이름이 없습니다! 메뉴 -> '맵 정보' 에서 설정하세요. -editor.save.overwrite = 이 맵의 이름은 이미 존재합니다! '맵 정보' 메뉴에서 다른 이름을 선택하세요. -editor.import.exists = [scarlet]맵을 불러올 수 없음: [] 기존에 있던 '{0}' 맵이 이미 존재합니다! -editor.import = 가져오기 +editor.save.noname = 맵에 이름이 없습니다! '맵 정보' 메뉴에서 설정하세요. +editor.save.overwrite = 이 맵은 내장된 맵을 덮어씁니다! '맵 정보' 에서 다른 이름을 선택하세요. +editor.import.exists = [scarlet]가져올 수 없음:[] '{0}' 이라는 내장 맵이 이미 있습니다! +editor.import = 가져오기... editor.importmap = 맵 가져오기 -editor.importmap.description = 이미 존재하는 맵 가져오기 +editor.importmap.description = 기존 맵 가져오기 editor.importfile = 파일 가져오기 editor.importfile.description = 외부 맵 파일 가져오기 -editor.importimage = 지형 사진 가져오기 -editor.importimage.description = 외부 맵 이미지 파일 가져오기 +editor.importimage = 사진 파일 가져오기 +editor.importimage.description = 외부 맵 사진 파일 가져오기 editor.export = 내보내기 editor.exportfile = 파일 내보내기 editor.exportfile.description = 맵 파일 내보내기 editor.exportimage = 지형 이미지 내보내기 -editor.exportimage.description = 맵 이미지 파일 내보내기 +editor.exportimage.description = 기본 지형만 포함된 이미지 파일 내보내기 editor.loadimage = 지형 가져오기 editor.saveimage = 지형 내보내기 editor.unsaved = [scarlet]변경사항을 저장하지 않았습니다![]\n정말로 나가시겠습니까? editor.resizemap = 맵 크기 조정 editor.mapname = 맵 이름: -editor.overwrite = [accept]경고!이 명령은 기존 맵을 덮어씌우게 됩니다. +editor.overwrite = [accept]경고!\n이것은 기존 맵을 덮어 씁니다. editor.overwrite.confirm = [scarlet]경고![] 이 이름을 가진 맵이 이미 있습니다. 덮어 쓰시겠습니까? -editor.exists = 같은 이름의 맵이 이미 존재합니다. -editor.selectmap = 불러올 맵 선택: +editor.exists = 이 이름의 맵이 이미 존재합니다. +editor.selectmap = 불러올 맵을 선택하세요: toolmode.replace = 재배치 -toolmode.replace.description = 블록을 배치합니다. +toolmode.replace.description = 단단한 블록에만 그립니다 toolmode.replaceall = 모두 재배치 toolmode.replaceall.description = 맵에 있는 모든 블록을 재배치합니다. toolmode.orthogonal = 직각 @@ -399,35 +402,38 @@ toolmode.fillteams.description = 블록 대신 팀 건물로 채웁니다. toolmode.drawteams = 팀 색상으로 그리기 toolmode.drawteams.description = 블록 대신 팀 건물을 배치합니다. -filters.empty = [lightgray]필터가 없습니다!! 아래 버튼을 눌러 추가하세요. +filters.empty = [lightgray]필터가 없습니다! 아래 버튼을 눌러 하나를 추가하세요. filter.distort = 왜곡 -filter.noise = 맵 전체에 타일 혹은 블록 뿌리기 -filter.median = 타일 비율 조정 -filter.oremedian = 자원 크기 조정 -filter.blend = 벽 주위에 타일 설치 -filter.defaultores = 기본 자원값 추가 +filter.noise = 노이즈 +filter.enemyspawn = 적 스폰 선택 +filter.corespawn = 코어 선택 +filter.median = 중앙값 +filter.oremedian = 자원 중앙값 +filter.blend = 블렌드 +filter.defaultores = 기본 자원 filter.ore = 자원 -filter.rivernoise = 협곡 -filter.mirror = 반사형 맵 설정 -filter.clear = 블록 전부 지우기 -filter.option.ignore = 무시하는타일 -filter.scatter = 타일에 타일혹은 블록 뿌리기 +filter.rivernoise = 협곡 노이즈 +filter.mirror = 거울 +filter.clear = 초기화 +filter.option.ignore = 무시 +filter.scatter = 흩뿌리기 filter.terrain = 지형 -filter.option.scale = 스케일 +filter.option.scale = 규모 filter.option.chance = 배치 횟수 -filter.option.mag = 규모 -filter.option.threshold = 한계점 -filter.option.circle-scale = 둥근 크기 -filter.option.octaves = 옥타보스 +filter.option.mag = 크기 +filter.option.threshold = 문턱 +filter.option.circle-scale = 원 크기 +filter.option.octaves = 옥타브 filter.option.falloff = 경사 filter.option.angle = 각도 +filter.option.amount = 개수 filter.option.block = 블록 filter.option.floor = 바닥 -filter.option.flooronto = 대상이 되는 바닥 +filter.option.flooronto = 목표 바닥 filter.option.wall = 벽 filter.option.ore = 자원 -filter.option.floor2 = 2번째 바닥 -filter.option.threshold2 = 2번째 한계점 +filter.option.floor2 = 2층 바닥 +filter.option.threshold2 = 2번째 문턱 filter.option.radius = 반경 filter.option.percentile = 백분위수 @@ -440,45 +446,46 @@ load = 불러오기 save = 저장 fps = FPS: {0} ping = Ping: {0}ms -language.restart = 언어를 변경하려면 게임을 다시 시작해 주세요. +language.restart = 언어를 설정을 적용할려면 게임을 다시 시작하세요. settings = 설정 tutorial = 튜토리얼 -tutorial.retake = 튜토리얼 +tutorial.retake = 튜토리얼 다시 시작 editor = 편집기 mapeditor = 맵 편집기 -abandon = 지역 포기 -abandon.text = 이 구역의 모든 자원이 적에게 빼앗길 것입니다. +abandon = 포기 +abandon.text = 이 지역과 모든 자원이 적에게 넘어갑니다. locked = 잠김 -complete = [lightgray]지역 해금 조건 : +complete = [lightgray]해금 조건 : requirement.wave = {1}지역에서 {0}웨이브 달성 requirement.core = {0}지역에서 적 코어를 파괴 requirement.unlock = {0}지역 해금 -resume = 현재 진행 중인 지역\n[lightgray]{0} -bestwave = [lightgray]달성한 최고 웨이브: {0} +resume = 지역 재개:\n[lightgray]{0} +bestwave = [lightgray]최고 웨이브: {0} launch = < 출격 > +launch.text = Launch launch.title = 출격 성공 launch.next = [lightgray]다음 출격 기회는 {0} 웨이브에서 나타납니다. launch.unable2 = [scarlet]출격할 수 없습니다.[] -launch.confirm = 출격하게 되면 코어에 저장된 모든 자원이 창고로 들어갑니다.\n또한 출격한 지역에는 아무것도 남지 않습니다. -launch.skip.confirm = 만약 지금 출격하지 않고 스킵하신다면, 다음 출격 웨이브까지 기다려야 합니다. +launch.confirm = 이것은 당신의 코어에 있는 모든 자원을 출격 시킬 것입니다.\n당신은 이 기지로 다시 돌아올 수 없을 것입니다. +launch.skip.confirm = 지금 건너뛰면 다음 출격 웨이브가 끝날 때 까지 출격할 수 없습니다. uncover = 지역 개방 -configure = 코어 시작자원 설정 +configure = 로드아웃 설정 +loadout = Loadout +resources = Resources bannedblocks = 금지된 블록들 addall = 모두 추가 -configure.locked = [lightgray]{0}시 시작자원 설정이 해금됩니다. -configure.invalid = 해당 값은 0 과 {0} 사이여야 합니다. -zone.unlocked = [lightgray]지역 {0}이 잠금 해제되었습니다! -zone.requirement.complete = {0} 웨이브 달성 성공! \n{1} 지역 요구사항이 충족되었습니다! -zone.config.unlocked = 시작자원 설정 해금!: [lightgray]\n{0} -zone.resources = 감지된 자원 목록 : -zone.objective = [lightgray]지역 임무: [accent]{0} +configure.invalid = 해당 값은 0에서 {0} 사이의 숫자여야 합니다. +zone.unlocked = [lightgray]{0} 해금됨. +zone.requirement.complete = {0}에 대한 요구 사항 충족:[lightgray]\n{1} +zone.resources = [lightgray]감지된 자원: +zone.objective = [lightgray]목표: [accent]{0} zone.objective.survival = 생존 zone.objective.attack = 적 코어 파괴 add = 추가... boss.health = 보스 체력 -connectfail = [crimson]{0}[accent] 서버에 연결하지 못했습니다.[] +connectfail = [scarlet]연결 오류:\n\n[accent]{0} error.unreachable = 서버에 연결하지 못했습니다.\n서버 주소가 정확히 입력되었나요? error.invalidaddress = 잘못된 주소입니다. error.timedout = 시간 초과!\n서버에 포트 포워딩이 설정되어 있고 주소가 올바른지 확인하십시오. @@ -489,69 +496,65 @@ error.io = 네트워크 I/O 오류. error.any = 알 수 없는 네트워크 오류. error.bloom = 블룸 그래픽 효과를 적용하지 못했습니다.\n당신의 기기가 이 기능을 지원하지 않는 것일 수도 있습니다. -zone.groundZero.name = 전초기지 -zone.desertWastes.name = 사막 폐기물 -zone.craters.name = 크레이터 -zone.frozenForest.name = 얼어붙은 숲 -zone.ruinousShores.name = 폐허 -zone.stainedMountains.name = 얼룩진 산맥 -zone.desolateRift.name = 황폐한 협곡 -zone.nuclearComplex.name = 핵 생산 단지 -zone.overgrowth.name = 과성장 지대 -zone.tarFields.name = 타르 벌판 -zone.saltFlats.name = 소금 사막 -zone.impact0078.name = Impact 0078 -zone.crags.name = 협곡 -zone.fungalPass.name = 포자 지대 +sector.groundZero.name = 전초기지 +sector.craters.name = 크레이터 +sector.frozenForest.name = 얼어붙은 숲 +sector.ruinousShores.name = 폐허 +sector.stainedMountains.name = 얼룩진 산맥 +sector.desolateRift.name = 황폐한 협곡 +sector.nuclearComplex.name = 핵 생산 단지 +sector.overgrowth.name = 과성장 지대 +sector.tarFields.name = 타르 벌판 +sector.saltFlats.name = 소금 사막 +sector.fungalPass.name = 포자 지대 -zone.groundZero.description = 이 장소는 다시 시작하기에 최적의 환경을 지닌 장소입니다. 적의 위협 수준이 낮으며, 자원이 거의 없습니다.\n가능 한 많은 양의 구리와 납을 수집하세요.\n이동 합시다. -zone.frozenForest.description = 이곳에서도, 산에 가까운 곳에 포자가 퍼졌습니다. 추운 온도에서도 포자들을 막을 수 없을 것 같습니다.\n화력 발전기를 건설하고, 멘더를 사용하는 방법을 배우세요. -zone.desertWastes.description = 이 황무지는 끝을 알 수 없을 정도로 광활하고 십자가 형태의 버려진 구조물이 존재합니다.\n석탄이 존재하며 이를 화력발전에 쓰거나 흑연 정제에 쓰십시오.\n\n[lightgray]이 지역에서의 착륙장소는 확실하지 않습니다. -zone.saltFlats.description = 이 소금 사막은 매우 척박하여 자원이 거의 없습니다.\n하지만 자원이 희소한 이곳에서도 적들의 요새가 발견되었습니다. 그들을 사막의 모래로 만들어버리십시오. -zone.craters.description = 물이 가득한 이 크레이터에는 옛 전쟁의 유물들이 쌓여있습니다.\n이곳을 다시 점령해 금속유리를 제작하고 물을 끌어올려 포탑과 드릴에 공급하여 더 좋은 효율로 방어선을 강화하십시오. -zone.ruinousShores.description = 이 지역은 과거 해안방어기지로 사용되었습니다.\n그러나 지금은 기본구조물만 남아있으니 이 지역을 어서 신속히 수리하여 외부로 세력을 확장한 뒤, 잃어버린 기술을 다시 회수하십시오. -zone.stainedMountains.description = 더 안쪽에는 포자에 오염된 산맥이 있지만, 이 곳은 포자에 오염되지 않았습니다.\n이 지역에서 티타늄을 채굴하고 이것을 어떻게 사용하는지 배우십시오.\n\n적들은 이곳에서 더 강력합니다. 더 강한 유닛들이 나올 때까지 시간을 낭비하지 마십시오. -zone.overgrowth.description = 이 곳은 포자들의 근원과 가까이에 있는 과성장 지대입니다. 적이 이 곳에 전초기지를 설립했습니다. 디거를 생산해 적의 코어를 박살 내고 우리가 잃어버린 것들을 되돌려받으십시오! -zone.tarFields.description = 산지와 사막 사이에 위치한 석유 생산지의 외곽 지역이며, 사용 가능한 타르가 매장되어 있는 희귀한 지역 중 하나입니다. 버려진 지역이지만 이곳에는 위험한 적군들이 있습니다. 그들을 과소평가하지 마십시오.\n\n[lightgray]석유 생산기술을 익히는 것이 도움이 될 것입니다. -zone.desolateRift.description = 극도로 위험한 지역입니다. 자원은 풍부하지만 사용 가능한 공간은 거의 없습니다. 코어 파괴의 위험성이 높으니 가능한 빨리 떠나십시오. 또한 적의 공격 딜레이가 길다고 안심하지 마십시오. -zone.nuclearComplex.description = 과거 토륨의 생산, 연구와 처리를 위해 운영되었던 시설입니다. 지금은 그저 폐허로 전락했으며, 다수의 적이 배치되어 있는 지역입니다. 그들은 끊임없이 당신을 공격할 것입니다.\n\n[lightgray]토륨의 다양한 사용법을 연구하고 익히십시오. -zone.fungalPass.description = 고산지대와 포자지대 사이의 지역입니다. 소규모의 적 정찰기지가 있으니 디거와 크롤러를 이용해 적의 코어를 파괴하십시오. -zone.impact0078.description = [royal]죄송합니다. 아직 설명이 준비되지 않았습니다. -zone.crags.description = [royal]죄송합니다. 아직 설명이 준비되지 않았습니다. +sector.groundZero.description = 이 장소는 다시 시작하기에 최적의 환경을 지닌 장소입니다. 적의 위협 수준이 낮으며, 자원이 거의 없습니다.\n가능 한 많은 양의 구리와 납을 수집하세요.\n이동 합시다. +sector.frozenForest.description = 이곳에서도, 산에 가까운 곳에 포자가 퍼졌습니다. 추운 온도에서도 포자들을 막을 수 없을 것 같습니다.\n화력 발전기를 건설하고, 멘더를 사용하는 방법을 배우세요. +sector.saltFlats.description = 이 소금 사막은 매우 척박하여 자원이 거의 없습니다.\n하지만 자원이 희소한 이곳에서도 적들의 요새가 발견되었습니다. 그들을 사막의 모래로 만들어버리십시오. +sector.craters.description = 물이 가득한 이 크레이터에는 옛 전쟁의 유물들이 쌓여있습니다.\n이곳을 다시 점령해 금속유리를 제작하고 물을 끌어올려 포탑과 드릴에 공급하여 더 좋은 효율로 방어선을 강화하십시오. +sector.ruinousShores.description = 이 지역은 과거 해안방어기지로 사용되었습니다.\n그러나 지금은 기본구조물만 남아있으니 이 지역을 어서 신속히 수리하여 외부로 세력을 확장한 뒤, 잃어버린 기술을 다시 회수하십시오. +sector.stainedMountains.description = 더 안쪽에는 포자에 오염된 산맥이 있지만, 이 곳은 포자에 오염되지 않았습니다.\n이 지역에서 티타늄을 채굴하고 이것을 어떻게 사용하는지 배우십시오.\n\n적들은 이곳에서 더 강력합니다. 더 강한 유닛들이 나올 때까지 시간을 낭비하지 마십시오. +sector.overgrowth.description = 이 곳은 포자들의 근원과 가까이에 있는 과성장 지대입니다. 적이 이 곳에 전초기지를 설립했습니다. 디거를 생산해 적의 코어를 박살 내고 우리가 잃어버린 것들을 되돌려받으십시오! +sector.tarFields.description = 산지와 사막 사이에 위치한 석유 생산지의 외곽 지역이며, 사용 가능한 타르가 매장되어 있는 희귀한 지역 중 하나입니다. 버려진 지역이지만 이곳에는 위험한 적군들이 있습니다. 그들을 과소평가하지 마십시오.\n\n[lightgray]석유 생산기술을 익히는 것이 도움이 될 것입니다. +sector.desolateRift.description = 극도로 위험한 지역입니다. 자원은 풍부하지만 사용 가능한 공간은 거의 없습니다. 코어 파괴의 위험성이 높으니 가능한 빨리 떠나십시오. 또한 적의 공격 딜레이가 길다고 안심하지 마십시오. +sector.nuclearComplex.description = 과거 토륨의 생산, 연구와 처리를 위해 운영되었던 시설입니다. 지금은 그저 폐허로 전락했으며, 다수의 적이 배치되어 있는 지역입니다. 그들은 끊임없이 당신을 공격할 것입니다.\n\n[lightgray]토륨의 다양한 사용법을 연구하고 익히십시오. +sector.fungalPass.description = 높은 산과 낮은 땅 사이의 전환 지역. 작은 적 정찰 기지가 여기에 있습니다.\n그것들을 파괴하세요.\n대거와 크롤러 유닛을 사용하여 두개의 코어를 파괴하세요. settings.language = 언어 settings.data = 게임 데이터 settings.reset = 설정 초기화 -settings.rebind = 키 재설정 -settings.resetKey = 키 설정 +settings.rebind = 키 설정 +settings.resetKey = 키 초기화 settings.controls = 조작 settings.game = 게임 settings.sound = 소리 settings.graphics = 그래픽 settings.cleardata = 게임 데이터 초기화... -settings.clear.confirm = 정말로 초기화 하겠습니까?\n이 작업을 되돌릴 수 없습니다! +settings.clear.confirm = 정말로 이 데이터를 지우시겠습니까?\n완료된 작업은 취소할 수 없습니다! settings.clearall.confirm = [scarlet]경고![]\n이 작업은 저장된 맵, 맵파일, 잠금 해제된 목록과 키 매핑, 그리고 모든 데이터를 삭제합니다.\n확인 버튼을 다시 눌러 모든 데이터를 삭제하고 게임에서 나갑니다. -paused = 일시 정지 +paused = [accent]< 일시정지 > clear = 초기화 -banned = [scarlet]밴 +banned = [scarlet]차단됨 +unplaceable.sectorcaptured = [scarlet]점령된 구역이 필요합니다 yes = 예 no = 아니오 -info.title = [accent]정보 -error.title = [crimson]오류가 발생했습니다. -error.crashtitle = 오류가 발생했습니다. -blocks.input = 소모 자원 -blocks.output = 출력 자원 +info.title = 정보 +error.title = [scarlet]오류가 발생했습니다. +error.crashtitle = 오류가 발생했습니다 +unit.nobuild = [scarlet]유닛을 만들 수 없습니다 +blocks.input = 입력 +blocks.output = 출력 blocks.booster = 가속 -blocks.tiles = 요구되는 타일 -blocks.affinities = 가속되는 -block.unknown = [scarlet]OHNO +blocks.tiles = 필요한 타일 +blocks.affinities = 친화력 +block.unknown = [lightgray]??? blocks.powercapacity = 전력 용량 -blocks.powershot = 1발당 전력 소모량 +blocks.powershot = 전력/발 blocks.damage = 공격력 -blocks.targetsair = 공중공격 가능 -blocks.targetsground = 지상공격 가능 +blocks.targetsair = 공중 공격 +blocks.targetsground = 지상 공격 blocks.itemsmoved = 이동 속도 -blocks.launchtime = 출격 시간 +blocks.launchtime = 출격 사이의 시간 blocks.shootrange = 사거리 blocks.size = 크기 blocks.liquidcapacity = 액체 용량 @@ -568,44 +571,47 @@ blocks.range = 사거리 blocks.drilltier = 드릴 blocks.drillspeed = 기본 드릴 속도 blocks.boosteffect = 가속 효과 -blocks.maxunits = 유지할 수 있는 유닛 최대 개체 수 +blocks.maxunits = 최대 활성 유닛수 blocks.health = 체력 blocks.buildtime = 건설 시간 blocks.buildcost = 건설 재료 blocks.inaccuracy = 오차각 blocks.shots = 공격 속도 -blocks.reload = 재장전 +blocks.reload = 발/초 blocks.ammo = 탄약 bar.drilltierreq = 더 좋은 드릴이 요구됨 -bar.drillspeed = 드릴 속도: {0}개/s +bar.noresources = 자원 부족 +bar.corereq = 코어 기지 필요 +bar.drillspeed = 드릴 속도: {0}/s bar.pumpspeed = 펌프 속도: {0}/s -bar.efficiency = 활성화율: {0}% -bar.powerbalance = 전력 발전: {0}/s -bar.powerstored = 총 전력 저장량: {0}/{1} -bar.poweramount = 전력 저장량: {0} +bar.efficiency = 효율: {0}% +bar.powerbalance = 전력: {0}/s +bar.powerstored = 저장량: {0}/{1} +bar.poweramount = 전력: {0} bar.poweroutput = 전력 출력: {0} bar.items = 자원량: {0} -bar.capacity = 저장공간: {0} +bar.capacity = 용량: {0} +bar.unitcap = {0} {1}/{2} +bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled] bar.liquid = 액체 bar.heat = 발열 bar.power = 전력 bar.progress = 생산 진행도 -bar.spawned = 최대 {1}기 중 {0}기 생산됨 bar.input = 입력 bar.output = 출력 -bullet.damage = [lightgray]피해량: [stat]{0}[] -bullet.splashdamage = [lightgray]범위 피해량: [stat]{0}[] / [lightgray]피해 범위: [stat]{1}[lightgray] 타일 +bullet.damage = [stat]{0}[lightgray] 피해 +bullet.splashdamage = [stat]{0}[lightgray] 범위 공격 ~[stat] {1}[lightgray] 타일 bullet.incendiary = [stat]방화 bullet.homing = [stat]유도 bullet.shock = [stat]전격 bullet.frag = [stat]파편 -bullet.knockback = 넉백: [stat]{0}[lightgray] +bullet.knockback = [stat]{0}[lightgray] 충격 bullet.freezing = [stat]빙결 bullet.tarred = [stat]타르 -bullet.multiplier = 추가 타격 횟수: [stat]{0}[lightgray] -bullet.reload = 공격 속도: [stat]{0}[lightgray] +bullet.multiplier = [stat]{0}[lightgray]x 탄약 배수 +bullet.reload = [stat]{0}[lightgray]x 발사 속도 unit.blocks = 블록 unit.powersecond = 전력/초 @@ -619,33 +625,36 @@ unit.persecond = /초 unit.timesspeed = x 배 unit.percent = % unit.items = 자원 -unit.thousands = k -unit.millions = mil +unit.thousands = 천 +unit.millions = 백만 category.general = 일반 category.power = 전력 category.liquids = 액체 category.items = 아이템 -category.crafting = 제작 +category.crafting = 입력/출력 category.shooting = 사격 category.optional = 보조 아이템 -setting.landscape.name = 가로화면 +setting.landscape.name = 가로화면 잠금 setting.shadows.name = 그림자 -setting.blockreplace.name = 블록 제안 자동화 +setting.blockreplace.name = 자동 블록 제안 setting.linear.name = 선형 필터링 -setting.hints.name = 힌트 활성화 +setting.hints.name = 힌트 +setting.flow.name = 자원 흐름량 표시 setting.buildautopause.name = 건설 자동 일시정지 -setting.animatedwater.name = 움직이는 물 +setting.mapcenter.name = 플레이어 기준으로 맵 중앙 고정 +setting.animatedwater.name = 움직이는 유체 setting.animatedshields.name = 움직이는 보호막 setting.antialias.name = 안티 에일리어싱[lightgray] (재시작 필요)[] -setting.indicators.name = 아군/적 인디케이터 표시 +setting.playerindicators.name = 플레이어 표시기 +setting.indicators.name = 적 표시기 setting.autotarget.name = 자동 조준 setting.keyboard.name = 마우스+키보드 조작 -setting.touchscreen.name = 터치스크린 +setting.touchscreen.name = 터치스크린 조작 setting.fpscap.name = 최대 FPS setting.fpscap.none = 없음 -setting.fpscap.text = {0}FPS -setting.uiscale.name = UI 스케일링[lightgray] (재시작 요구됨)[] -setting.swapdiagonal.name = 항상 대각선 설치 +setting.fpscap.text = {0} FPS +setting.uiscale.name = UI 스케일링[lightgray] (재시작 필요)[] +setting.swapdiagonal.name = 항상 대각선 배치 setting.difficulty.training = 훈련 setting.difficulty.easy = 쉬움 setting.difficulty.normal = 보통 @@ -654,58 +663,65 @@ setting.difficulty.insane = 미침 setting.difficulty.name = 난이도: setting.screenshake.name = 화면 흔들림 setting.effects.name = 효과 보임 -setting.destroyedblocks.name = 부서진 블록 표시 -setting.conveyorpathfinding.name = 교차기 자동 설치 -setting.coreselect.name = Schematic Cores 켜기 (설계도에서 코어도 보이게 해주는 기능입니다.) +setting.destroyedblocks.name = 파괴된 블록 표시 +setting.blockstatus.name = 블록 상태 표시 +setting.conveyorpathfinding.name = 컨베이어 배치 경로찾기 setting.sensitivity.name = 컨트롤러 감도 setting.saveinterval.name = 저장 간격 setting.seconds = {0} 초 setting.blockselecttimeout.name = 블록 선택 시간 초과 -setting.milliseconds = {0} ms +setting.milliseconds = {0} 밀리 초 setting.fullscreen.name = 전체 화면 setting.borderlesswindow.name = 테두리 없는 창모드[lightgray] (재시작이 필요할 수 있습니다) -setting.fps.name = FPS 표시 -setting.blockselectkeys.name = 블록 선택 키 -setting.vsync.name = VSync 활성화 -setting.pixelate.name = 픽셀화[lightgray] (렉이 심할 경우 이 옵션을 켜주세요.) -setting.minimap.name = 미니맵 보기 +setting.fps.name = FPS와 핑 표시 +setting.smoothcamera.name = 부드러운 시점 +setting.blockselectkeys.name = 블록 선택 키 표시 +setting.vsync.name = 수직 동기화 +setting.pixelate.name = 픽셀화 +setting.minimap.name = 미니맵 표시 +setting.coreitems.name = 코어에 있는 아이템 표시 setting.position.name = 플레이어 위치 표시 setting.musicvol.name = 음악 크기 +setting.atmosphere.name = 행성 배경화면 표시 setting.ambientvol.name = 배경음 크기 setting.mutemusic.name = 음소거 setting.sfxvol.name = 효과음 크기 setting.mutesound.name = 소리 끄기 setting.crashreport.name = 익명으로 오류 보고서 자동 전송 setting.savecreate.name = 자동 저장 활성화 -setting.publichost.name = 스팀에 내 게임 공개하기 -setting.playerlimit.name = 플레이어 수 제한 -setting.chatopacity.name = 채팅 투명도 -setting.lasersopacity.name = 전력 레이저 밝기 -setting.bridgeopacity.name = 터널 그래픽 밝기 +setting.publichost.name = 멀티플레이 공용 서버로 표시 +setting.playerlimit.name = 플레이어 제한 +setting.chatopacity.name = 채팅창 투명도 +setting.lasersopacity.name = 전력 레이저 투명도 +setting.bridgeopacity.name = 터널 투명도 setting.playerchat.name = 채팅 말풍선 표시 -public.confirm = 게임을 공개하시겠습니까?\n[lightgray]설정 - 게임 - 게임 서버 공개에서 다시 설정하실 수 있습니다. -public.beta = [accent]!정보![] 베타 버전은 공개 게임 서버를 열지 못합니다. -uiscale.reset = UI 스케일이 변경되었습니다.\n"확인"버튼을 눌러 스케일을 확인하세요.\n[scarlet][accent] {0}[]초 후에 예전 설정으로 되돌리고 게임을 종료합니다... -uiscale.cancel = 취소 & 나가기 -setting.bloom.name = 빛발산 켜기 +public.confirm = 게임을 공개 표시하시겠습니까?\n[accent]모든 플레이어가 게임에 참여할 수 있습니다.\n[lightgray]설정->게임->멀티플레이 공용 서버로 표시에서 나중에 변경할 수 있습니다.\n\n[sky]번역자 추가[]\n[accent]친구끼리 한다고 이 기능을 활성화 한 뒤에, 친구 외에 다른 플레이어가 들어왔을 때\n해당 플레이어를 차단하는 행위는 비매너를 넘어서는 얌체 행위 그 자체입니다.\n정말로 [scarlet]많은 다른 플레이어들이 오길 원한다[]면 확인하세요. +public.beta = 베타 버전의 게임은 공개 서버를 만들 수 없습니다. +uiscale.reset = UI 스케일이 변경되었습니다.\n"확인"버튼을 눌러 스케일을 확인하세요.\n[accent] {0}[][scarlet]초 후에 예전 설정으로 되돌리고 게임을 종료합니다... +uiscale.cancel = 취소후 나가기 +setting.bloom.name = 블룸 keybind.title = 조작키 설정 -keybinds.mobile = [scarlet]대부분의 키들은 모바일에서 작동하지 않습니다. 기본적인 것들만 지원됩니다. +keybinds.mobile = [scarlet]대부분의 키 맵핑은 모바일에서 작동하지 않습니다. 기본 이동만 지원됩니다. category.general.name = 일반 category.view.name = 보기 -category.multiplayer.name = 멀티플레이 +category.multiplayer.name = 멀티플레이어 +category.blocks.name = 블록 선택 command.attack = 공격 command.rally = 순찰 command.retreat = 후퇴 placement.blockselectkeys = \n[lightgray]키: [{0}, +keybind.respawn.name = 리스폰 +keybind.control.name = 유닛 제어 keybind.clear_building.name = 설계도 초기화 keybind.press = 키를 누르세요... keybind.press.axis = 마우스 휠 또는 키를 누르세요... keybind.screenshot.name = 맵 스크린샷 -keybind.toggle_power_lines.name = 전력 라인 허용 -keybind.move_x.name = 오른쪽 / 왼쪽 이동 -keybind.move_y.name = 위 / 아래 이동 +keybind.toggle_power_lines.name = 전력 레이저 토글 +keybind.toggle_block_status.name = 블록 상태 토글 +keybind.move_x.name = X축 이동 +keybind.move_y.name = Y축 이동 keybind.mouse_move.name = 커서를 따라서 이동 -keybind.dash.name = 부스터 +keybind.boost.name = 부스트 keybind.schematic_select.name = 영역 설정 keybind.schematic_menu.name = 설계도 메뉴 keybind.schematic_flip_x.name = 설계도 X축 뒤집기 @@ -736,7 +752,7 @@ keybind.shoot.name = 사격 keybind.zoom.name = 확대 keybind.menu.name = 메뉴 keybind.pause.name = 일시중지 -keybind.pause_building.name = 건설 일시정지/계속하기 +keybind.pause_building.name = 건설 일시정지/재개 keybind.minimap.name = 미니맵 keybind.chat.name = 채팅 keybind.player_list.name = 플레이어 목록 @@ -747,59 +763,53 @@ keybind.toggle_menus.name = 메뉴 보이기/숨기기 keybind.chat_history_prev.name = 이전 채팅 기록 keybind.chat_history_next.name = 다음 채팅 기록 keybind.chat_scroll.name = 채팅 스크롤 -keybind.drop_unit.name = 유닛 처치 시 자원획득 +keybind.drop_unit.name = 유닛 떨구기 keybind.zoom_minimap.name = 미니맵 확대 -mode.help.title = 게임모드 도움말 +mode.help.title = 모드 설명 mode.survival.name = 생존 -mode.survival.description = 이것은 일반 모드입니다. 제한된 자원을 가지고 자동으로 다음 웨이브가 시작됩니다. +mode.survival.description = 이것은 일반 모드입니다. 제한된 자원과 자동으로 시작되는 웨이브가 있습니다.\n[gray]플레이 할려면 맵에 적의 스폰지점이 필요합니다. mode.sandbox.name = 샌드박스 -mode.sandbox.description = 무한한 자원을 가지고 자유롭게 다음 웨이브를 시작할 수 있습니다. +mode.sandbox.description = 무한한 자원과 웨이브 시작 타이머가 없습니다. mode.editor.name = 편집기 mode.pvp.name = PvP -mode.pvp.description = 실제 플레이어와 PvP를 합니다. 맵에 적어도 2개의 다른 색상 코어가 있어야 합니다. +mode.pvp.description = 다른 플레이어와 현장에서 싸우십시오.\n[gray]플레이 할려면 맵에 다른 색상의 코어가 2개 이상 있어야합니다. mode.attack.name = 공격 -mode.attack.description = 적 기지를 파괴하세요. 맵에 빨간 팀 코어가 있어야 플레이 가능합니다. +mode.attack.description = 적의 기지를 파괴하세요.\n[gray]플레이 할려면 맵에 빨간색 코어가 필요합니다. mode.custom = 사용자 정의 규칙 rules.infiniteresources = 무한 자원 -rules.reactorexplosions = 원자로 폭발 허가 여부 -rules.wavetimer = 웨이브 대기시간 -rules.waves = 웨이브 활성화 +rules.reactorexplosions = 원자로 폭발 +rules.wavetimer = 웨이브 시간 +rules.waves = 웨이브 rules.attack = 공격 모드 -rules.enemyCheat = 무한한 적 자원 -rules.unitdrops = 유닛 처치시 자원 약탈 -rules.unitbuildspeedmultiplier = 유닛 제조속도 배수 +rules.enemyCheat = 무한 AI (빨간팀) 자원 +rules.blockhealthmultiplier = 블록 체력 배수 +rules.blockdamagemultiplier = 블록 공격력 배수 +rules.unitbuildspeedmultiplier = 유닛 생산 속도 배수 rules.unithealthmultiplier = 유닛 체력 배수 -rules.blockhealthmultiplier = 건물 체력 배수 -rules.playerhealthmultiplier = 플레이어 체력 배수 -rules.playerdamagemultiplier = 플레이어 공격력 배수 rules.unitdamagemultiplier = 유닛 공격력 배수 -rules.enemycorebuildradius = 적 코어 건설 금지구역 범위: [lightgray] (타일) -rules.respawntime = 플레이어 부활 대기 시간: [lightgray] (초) -rules.wavespacing = 웨이브 간격: [lightgray] (초) -rules.buildcostmultiplier = 건설 소모 배수 +rules.enemycorebuildradius = 적 코어 건설 금지구역 범위:[lightgray] (타일) +rules.wavespacing = 웨이브 간격:[lightgray] (초) +rules.buildcostmultiplier = 건설 자원소모 배수 rules.buildspeedmultiplier = 건설 속도 배수 -rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier -rules.waitForWaveToEnd = 웨이브가 끝날때까지 기다리는 중 -rules.dropzoneradius = 소환 충격파 범위: [lightgray] (타일) -rules.respawns = 웨이브당 최대 플레이어 부활 횟수 -rules.limitedRespawns = 플레이어 부활 제한 +rules.deconstructrefundmultiplier = 해체 환불 배수 +rules.waitForWaveToEnd = 웨이브가 끝날때까지 대기중 +rules.dropzoneradius = 스폰 구역 범위: [lightgray] (타일) +rules.unitammo = 유닛에 탄약이 필요 rules.title.waves = 웨이브 -rules.title.respawns = 플레이어 부활 rules.title.resourcesbuilding = 자원 & 건축 -rules.title.player = 플레이어들 rules.title.enemy = 적 rules.title.unit = 유닛 rules.title.experimental = 실험적인 기능 -rules.lighting = 맵의 안개 활성화 -rules.ambientlight = 안개 색 -rules.solarpowermultiplier = 태양광 발전 효율 +rules.title.environment = 환경 +rules.lighting = 조명 +rules.ambientlight = 주변 조명 +rules.solarpowermultiplier = 태양광 발전 배수 content.item.name = 아이템 content.liquid.name = 액체 content.unit.name = 유닛 content.block.name = 블록 -content.mech.name = 기체 item.copper.name = 구리 item.lead.name = 납 item.coal.name = 석탄 @@ -810,56 +820,61 @@ item.silicon.name = 실리콘 item.plastanium.name = 플라스터늄 item.phase-fabric.name = 메타 item.surge-alloy.name = 설금 -item.spore-pod.name = 포자 방울 +item.spore-pod.name = 포자 포드 item.sand.name = 모래 -item.blast-compound.name = 복합폭약 +item.blast-compound.name = 화합물 item.pyratite.name = 피라타이트 item.metaglass.name = 금속유리 item.scrap.name = 고철 liquid.water.name = 물 liquid.slag.name = 광재 -liquid.oil.name = 석유 -liquid.cryofluid.name = 냉각수 -mech.alpha-mech.name = 알파 -mech.alpha-mech.weapon = 중무장 소총 -mech.alpha-mech.ability = 자가 -mech.delta-mech.name = 델타 -mech.delta-mech.weapon = 전격 충전기 -mech.delta-mech.ability = 충전 -mech.tau-mech.name = 타우 -mech.tau-mech.weapon = 건물 수리총 -mech.tau-mech.ability = 유닛 치료 파동 -mech.omega-mech.name = 오메가 -mech.omega-mech.weapon = 전방 유도미사일 -mech.omega-mech.ability = 방어모드 -mech.dart-ship.name = 다트 -mech.dart-ship.weapon = 소총 -mech.javelin-ship.name = 재블린 -mech.javelin-ship.weapon = 유도 미사일 -mech.javelin-ship.ability = 가속 전격 생성기 -mech.trident-ship.name = 트라이던트 -mech.trident-ship.weapon = 폭탄 저장고 -mech.glaive-ship.name = 글레이브 -mech.glaive-ship.weapon = 중무장 인화성 소총 -item.corestorable = [lightgray]코어 저장 가능 여부: {0} +liquid.oil.name = 기름 +liquid.cryofluid.name = 냉각 유체 item.explosiveness = [lightgray]폭발성: {0} item.flammability = [lightgray]인화성: {0} item.radioactivity = [lightgray]방사능: {0} unit.health = [lightgray]체력: {0} unit.speed = [lightgray]속도: {0} -mech.weapon = [lightgray]무기: {0} -mech.health = [lightgray]체력: {0} -mech.itemcapacity = [lightgray]아이템 수용 용량: {0} -mech.minespeed = [lightgray]채광 속도: {0}% -mech.minepower = [lightgray]채광 레벨: {0} -mech.ability = [lightgray]능력: {0} -mech.buildspeed = [lightgray]건설 속도: {0}% +unit.weapon = [lightgray]무기: {0} +unit.itemcapacity = [lightgray]아이템 수용량: {0} +unit.minespeed = [lightgray]채광 속도: {0}% +unit.minepower = [lightgray]채광 레벨: {0} +unit.ability = [lightgray]능력: {0} +unit.buildspeed = [lightgray]건설 속도: {0}% liquid.heatcapacity = [lightgray]발열 용량: {0} liquid.viscosity = [lightgray]점도: {0} liquid.temperature = [lightgray]온도: {0} +unit.dagger.name = Dagger +unit.mace.name = Mace +unit.fortress.name = Fortress +unit.nova.name = Nova +unit.pulsar.name = Pulsar +unit.quasar.name = Quasar +unit.crawler.name = Crawler +unit.atrax.name = Atrax +unit.spiroct.name = Spiroct +unit.arkyid.name = Arkyid +unit.flare.name = Flare +unit.horizon.name = Horizon +unit.zenith.name = Zenith +unit.antumbra.name = Antumbra +unit.eclipse.name = Eclipse +unit.mono.name = Mono +unit.poly.name = Poly +unit.mega.name = Mega +unit.risse.name = Risse +unit.minke.name = Minke +unit.bryde.name = Bryde +unit.alpha.name = Alpha +unit.beta.name = Beta +unit.gamma.name = Gamma + +block.parallax.name = Parallax +block.cliff.name = 낭떠러지 block.sand-boulder.name = 사암 block.grass.name = 잔디 +block.slag.name = 광재 block.salt.name = 소금 block.saltrocks.name = 소금 바위 block.pebbles.name = 조약돌 @@ -884,11 +899,11 @@ block.thruster.name = 쓰러스터 block.kiln.name = 가마 block.graphite-press.name = 흑연 압축기 block.multi-press.name = 다중 압축기 -block.constructing = {0} [lightgray](만드는중) -block.spawn.name = 적 소환지점 -block.core-shard.name = 코어:조각 -block.core-foundation.name = 코어:기초 -block.core-nucleus.name = 코어:핵 +block.constructing = {0} [lightgray](제작중) +block.spawn.name = 적 소환 +block.core-shard.name = 코어: 조각 +block.core-foundation.name = 코어: 재단 +block.core-nucleus.name = 코어: 핵 block.deepwater.name = 깊은 물 block.water.name = 물 block.tainted-water.name = 오염된 물 @@ -948,8 +963,9 @@ block.hail.name = 헤일 block.lancer.name = 랜서 block.conveyor.name = 컨베이어 block.titanium-conveyor.name = 티타늄 컨베이어 +block.plastanium-conveyor.name = 플라스터늄 컨베이어 block.armored-conveyor.name = 장갑 컨베이어 -block.armored-conveyor.description = 운송 속도는 티타늄 컨베이어와 비슷하나, 훨씬 단단합니다. 그러나 컨베이어 외에는 자원을 받지 못합니다. \n\n[royal]설명은 이렇지만, 장갑 컨베이어와 자원을 내보내는 대상이 일직선상에 있을 시에는 자원을 받을 수 있습니다. +block.armored-conveyor.description = 티타늄 컨베이어와 같은 속도로 아이템을 운송하지만, 더 높은 방어력을 가지고 있습니다. 다른 컨베이어 벨트 이외 측면에서는 아이템을 받을 수 없습니다. block.junction.name = 교차기 block.router.name = 분배기 block.distributor.name = 대형 분배기 @@ -957,40 +973,33 @@ block.sorter.name = 필터 block.inverted-sorter.name = 반전 필터 block.message.name = 메모 블록 block.illuminator.name = 조명 -block.illuminator.description = 작고, 간단한 조명입니다. 색을 변경할 수 있으며 가동하기 위해서 전력이 필요합니다. -block.overflow-gate.name = 포화 필터 +block.illuminator.description = 작고, 간단하고, 설정 가능한 광원입니다. 작동 시킬려면 전력이 필요합니다. +block.overflow-gate.name = 오버플로 게이트 block.underflow-gate.name = 언더플로 게이트 block.silicon-smelter.name = 실리콘 제련소 block.phase-weaver.name = 메타 합성기 block.pulverizer.name = 분쇄기 -block.cryofluidmixer.name = 냉각수 제조기 +block.cryofluidmixer.name = 냉각 유체 제조기 block.melter.name = 융해기 block.incinerator.name = 소각로 block.spore-press.name = 포자 압축기 -block.separator.name = 원심 분리기 -block.coal-centrifuge.name = 석탄 원심분리기 +block.separator.name = 분리기 +block.coal-centrifuge.name = 석탄 분리기 block.power-node.name = 전력 노드 block.power-node-large.name = 대형 전력 노드 -block.surge-tower.name = 설금 전력 타워 +block.surge-tower.name = 설금 타워 block.diode.name = 배터리 다이오드 block.battery.name = 배터리 block.battery-large.name = 대형 배터리 -block.combustion-generator.name = 화력 발전기 -block.turbine-generator.name = 터빈 발전기 -block.differential-generator.name = 차동 발전기 -block.impact-reactor.name = 핵 융합로 +block.combustion-generator.name = 연소 발전기 +block.turbine-generator.name = 증기 발전기 +block.differential-generator.name = 차동 발잔기 +block.impact-reactor.name = 임팩트 원자로 block.mechanical-drill.name = 기계식 드릴 -block.pneumatic-drill.name = 공기 드릴 +block.pneumatic-drill.name = 공압 드릴 block.laser-drill.name = 레이저 드릴 block.water-extractor.name = 물 추출기 -block.cultivator.name = 온실 -block.dart-mech-pad.name = 알파 기체 패드 -block.delta-mech-pad.name = 델타 기체 패드 -block.javelin-ship-pad.name = 재블린 비행선 패드 -block.trident-ship-pad.name = 트라이던트 폭격기 패드 -block.glaive-ship-pad.name = 글레이브 전투기 패드 -block.omega-mech-pad.name = 오메가 기체 패드 -block.tau-mech-pad.name = 타우 기체 패드 +block.cultivator.name = 제초기 block.conduit.name = 파이프 block.mechanical-pump.name = 기계식 펌프 block.item-source.name = 자원 공급기 @@ -1006,25 +1015,14 @@ block.swarmer.name = 스워머 block.salvo.name = 살보 block.ripple.name = 립플 block.phase-conveyor.name = 메타 컨베이어 -block.bridge-conveyor.name = 터널 컨베이어 +block.bridge-conveyor.name = 다리 컨베이어 block.plastanium-compressor.name = 플라스터늄 압축기 block.pyratite-mixer.name = 피라타이트 혼합기 -block.blast-mixer.name = 복합폭약 혼합기 +block.blast-mixer.name = 화합물 혼합기 block.solar-panel.name = 태양 전지판 block.solar-panel-large.name = 대형 태양 전지판 block.oil-extractor.name = 석유 추출기 -block.command-center.name = 드론 명령센터 -block.draug-factory.name = 광부 드론 공장 -block.spirit-factory.name = 수리 드론 공장 -block.phantom-factory.name = 건설 드론 공장 -block.wraith-factory.name = 유령 전투기 공장 -block.ghoul-factory.name = 구울 폭격기 공장 -block.dagger-factory.name = 대거 공장 -block.crawler-factory.name = 크롤러 공장 -block.titan-factory.name = 타이탄 공장 -block.fortress-factory.name = 포트리스 공장 -block.revenant-factory.name = 망령 전함 공장 -block.repair-point.name = 드론 수리 지점 +block.repair-point.name = 수리 지점 block.pulse-conduit.name = 펄스 파이프 block.plated-conduit.name = 도금된 파이프 block.phase-conduit.name = 메타 파이프 @@ -1037,24 +1035,37 @@ block.thorium-reactor.name = 토륨 원자로 block.mass-driver.name = 매스 드라이버 block.blast-drill.name = 압축 공기분사 드릴 block.thermal-pump.name = 화력 펌프 -block.thermal-generator.name = 열발전기 +block.thermal-generator.name = 화력 생성기 block.alloy-smelter.name = 설금 제련소 -block.mender.name = 수리 프로젝터 +block.mender.name = 멘더 block.mend-projector.name = 대형 수리 프로젝터 block.surge-wall.name = 설금 벽 block.surge-wall-large.name = 큰 설금 벽 block.cyclone.name = 사이클론 block.fuse.name = 퓨즈 -block.shock-mine.name = 전기 지뢰 +block.shock-mine.name = 전격 지뢰 block.overdrive-projector.name = 과부하 프로젝터 -block.force-projector.name = 보호막 프로젝터 +block.force-projector.name = 포스 프로젝터 block.arc.name = 아크 block.rtg-generator.name = RTG 발전기 block.spectre.name = 스펙터 block.meltdown.name = 멜트다운 block.container.name = 컨테이너 -block.launch-pad.name = 자원 출격 패드 -block.launch-pad-large.name = 대형 자원 출격 패드 +block.launch-pad.name = 출격 패드 +block.launch-pad-large.name = 대형 출격 패드 +block.segment.name = 세그먼트 +block.ground-factory.name = 지상 공장 +block.air-factory.name = 항공 공장 +block.naval-factory.name = 해군 공장 +block.additive-reconstructor.name = 첨가물 재구성기 +block.multiplicative-reconstructor.name = 다중 재구성기 +block.exponential-reconstructor.name = 지수 재구성기 +block.tetrative-reconstructor.name = 정서 재구성기 +block.mass-conveyor.name = 매스 컨베이어 +block.payload-router.name = 화물 분배기 +block.disassembler.name = 분해기 +block.silicon-crucible.name = 실리콘 도가니 +block.large-overdrive-projector.name = 대형 과부하 프로젝터 team.blue.name = 파랑색 팀 team.crux.name = 빨강색 팀 team.sharded.name = 주황색 팀 @@ -1062,207 +1073,159 @@ team.orange.name = 주황색 팀 team.derelict.name = 버려진 팀 team.green.name = 초록색 팀 team.purple.name = 보라색 팀 -unit.spirit.name = 스피릿 수리 드론 -unit.draug.name = 드라우그 채광 드론 -unit.phantom.name = 팬텀 건설 드론 -unit.dagger.name = 대거 -unit.crawler.name = 크롤러 -unit.titan.name = 타이탄 -unit.ghoul.name = 구울 폭격기 -unit.wraith.name = 유령 전투기 -unit.fortress.name = 포트리스 -unit.revenant.name = 망령 전함 -unit.eruptor.name = 이럽터 -unit.chaos-array.name = 혼돈 군주 -unit.eradicator.name = 파괴자 -unit.lich.name = 시체 군주 -unit.reaper.name = 사신 -tutorial.next = [lightgray]< 이 곳을 터치해 진행하세요. > + +tutorial.next = [lightgray]<이 곳을 터치해 진행하세요> tutorial.intro = [scarlet]Mindustry 튜토리얼[]을 시작하겠습니다.\n[WASD] 키를 눌러 이동할 수 있습니다.\n[accent]스크롤[]을 해서 화면 확대와 축소를 합니다.\n[accent]구리[]를 채광하는 것부터 시작합니다. 코어 근처의 구리 광맥을 눌러 이 작업을 시작하세요.\n\n[accent]{0}/{1} 구리 tutorial.intro.mobile = [scarlet]Mindustry 튜토리얼[]을 시작하겠습니다.\n화면을 드래그하여 이동이 가능합니다.\n두 손가락을 화면에 누른 후 모으거나 벌려 확대와 축소가 가능합니다.\n[accent]구리[]를 채광하는 것부터 시작합니다. 코어 근처의 구리 광맥을 눌러 이 작업을 시작하세요.\n\n[accent]{0}/{1} 구리 tutorial.drill = 수동으로 채광하는 것은 효율이 낮습니다.\n[accent]드릴[]은 자동으로 드릴 바로 아래에 있는 광물들을 채광합니다.\n드릴 카테고리의 기계식 드릴을 선택하여 구리 광맥위에 설치하세요.\n마우스 오른쪽 버튼으로 취소가 가능합니다. tutorial.drill.mobile = 수동으로 채광하는 것은 효율이 낮습니다.\n[accent]드릴[]은 자동으로 드릴 밑에 있는 광물들을 채광합니다.\n드릴 카테고리의 기계식 드릴을 선택하여 구리 광맥위에 설치하세요.\n취소 버튼을 눌러 건축하기 전의 설계를 취소할 수 있습니다. -tutorial.blockinfo = 블록들은 각각 능력이 다르며, 하위 티어의 드릴은 채광할 수 있는 광물의 종류가 적습니다.\n블록의 정보를 확인하기 위해서는,[accent] 카테고리의 블록을 누른 후, "?"버튼을 클릭하여 블록의 정보를 확인하세요.[]\n[royal]궁금한 블록의 정보를 아무거나 한번 확인해보세요. -tutorial.conveyor = [accent]컨베이어[]는 붙어있는 곳에서 받는 아이템을 코어로 운반합니다.\n드릴에서 코어까지 컨베이어 라인을 만드세요.\n[accent]컨베이어를 클릭 후, 건설을 시작하려는 지점을 마우스 왼쪽 버튼으로 꾸욱 누른 뒤[] 드래그하여 설계하세요.\n\n[accent]컨베이어를 2개 이상 건설 후 광물을 코어로 운반하세요. -tutorial.conveyor.mobile = [accent]컨베이어[]는 붙어있는 곳에서 받는 아이템을 코어로 운반합니다.\n드릴에서 코어까지 컨베이어 라인을 만드세요.\n[accent]컨베이어를 화면에 1초 정도 클릭하여 작은 노란색 원이 잠깐 나타났다 사라질 때까지 기다리신 후[] 드래그하여 설계하세요.\n\n[accent]컨베이어를 2개 이상 건설 후 광물을 코어로 운반하세요. -tutorial.turret = 방어 구조물은 [lightgray]적[]을 물리치기 위해 반드시 필요합니다.\n포탑 카테고리의 듀오 포탑을 선택하신 후, 기지 근처에 듀오 포탑을 설치하세요. -tutorial.drillturret = 듀오 포탑이 공격하기 위해서는[accent] 구리 탄약[]을 필요로 합니다.\n포탑 근처의 구리 광맥에 드릴을 설치하고 컨베이어로 포탑과 이어서 포탑에 구리를 공급하세요.\n또는 직접 코어에서 광물을 꺼내 포탑에 넣을 수도 있습니다. -tutorial.pause = 싱글 플레이에서는 게임을 [accent]일시정지[]할 수 있습니다.\n일시정지하면 교전과 더불어 건설까지 일시정지됩니다.\n\n[accent]스페이스 버튼[]을 눌러 일시정지하세요. -tutorial.pause.mobile = 싱글 플레이에서는 게임을 [accent]일시정지[]할 수 있습니다.\n일시정지하면 교전과 더불어 건설까지 일시정지됩니다.\n\n[accent]일시정지 버튼[]을 눌러 일시정지하세요. -tutorial.unpause = 게임을 진행하기 위해 [accent]스페이스 버튼[]을 다시 누르세요. -tutorial.unpause.mobile = 게임을 진행하기 위해 같은 위치의 버튼을 다시 누르세요. -tutorial.breaking = 설계를 방해하는 블록을 제거하기 위해서 [accent]첫 번째 지점을 마우스 오른쪽 버튼[]으로 누른 뒤 드래그하여 범위를 지정해서 제거하세요.[]\n\n[accent]코어 근처의 조각 블록 3개[]를 제거하세요. -tutorial.breaking.mobile = 설계를 방해하는 블록을 제거하기 위해서 [accent]망치 버튼을 눌러 제거모드[]로 변경한 뒤, 첫번째 지점을 누른 후 드래그하여 범위를 지정한뒤 V버튼을 클릭해 블록을 제거하세요.\n\n[accent]코어 근처의 조각벽 3개[]를 제거하세요. -tutorial.withdraw = [accent]코어나 창고, 공장[]같은 자원을 넣을 수 있는 일부 블록에서는 직접 자원을 빼낼 수도 있습니다.\n[accent]코어를 클릭 후 자원을 눌러서 자원을 빼내세요. -tutorial.deposit = 자원을 다시 블록에 넣을 수도 있습니다.\n\n[accent]당신의 기체에서 코어로 드래그[]하여 자원을 되돌려 넣으세요. -tutorial.waves = [lightgray]적[]이 접근합니다.\n당신의 기체는 적을 클릭하여 공격할 수 있습니다. 또한, 구리를 더 캐내고 포탑을 더 지어서 방어를 강화하세요.\n\n[accent]2웨이브 동안 코어를 보호하세요.[] -tutorial.waves.mobile = [lightgray]적[]이 접근합니다.\n당신의 기체는 적을 자동조준하지만, 원하는 적을 클릭하여 공격하고 싶은 대상을 바꿀 수 있습니다.\n구리를 더 캐내고 포탑을 더 지어서 방어를 강화하세요.\n\n[accent]2웨이브 동안 코어를 방어하세요.[] -tutorial.launch = 특정 웨이브에 도달하면 [accent]출격[]이 가능합니다.\n[accent]출격[]을 하게되면 해당 지역의 코어에 들어있는 자원들을 캠페인의 자원 창고로 보내지만, 해당 지역의 [accent]모든 것들[]은 날아가게 되니 주의하세요. +tutorial.blockinfo = 각 블록마다 다른 특성을 가지고 있으며, 각 드릴은 특정 광석만 채굴할 수 있습니다.\n블록의 정보와 특성을 확인할려면, [accent]건설 메뉴에서 "?" 버튼을 선택하세요.[]\n\n[accent]지금 기계식 드릴의 정보를 보세요. +tutorial.conveyor = [accent]컨베이어[]는 아이템을 코어로 운반하는데 사용됩니다.\n드릴에서 코어까지 컨베이어 경로를 만드세요.\n[accent]마우스를 길게 눌러 경로에 놓습니다.\n대각선으로 배치할 경로를 선택하는 동안 [accent]CTRL[] 키를 누른 상태로 유지하세요.\n스크롤 휠을 사용하여 블록을 배치하기 전에 블록을 회전시킬 수 있습니다.\n[accent]선 도구를 사용하여 컨베이어 2개를 놓은 다음, 아이템을 코어로 넣으세요. +tutorial.conveyor.mobile = [accent]컨베이어[]는 아이템을 코어로 운반하는데 사용됩니다.\n드릴에서 코어까지 컨베이어 경로를 만드세요.\n[accent]몇 초 동안 손가락을 누른 상태에서 드래그 하여 경로를 그립니다.\n\n[accent]선 도구로 컨베이어 2개를 놓은 다음 아이템을 코어에 넣으세요. +tutorial.turret = 아이템이 코어에 들어간 후에는 건물을 건설하는데 사용할 수 있습니다.\n모든 아이템이 건물에 사용될 수 있는 것은 아닙니다.\n건물에 사용되지 않는 아이템(예: [accent]석탄[] 또는 [accent]광재[])은 코어에 넣을 수 없습니다.\n[lightgray]적[]을 격추하기 위해 방어 건물을 세워야 합니다.\n기지 근처에 [accent]듀오 포탑[]을 건설하세요. +tutorial.drillturret = 듀오 포탑은 사격하는데 [accent]구리 탄약[]이 필요합니다.\n포탑 근처에 드릴을 설치하세요.\n구리를 공급하기 위해 컨베이어를 포탑으로 가도록 건설하세요.\n\n[accnet]탄약 운반: 0/1 +tutorial.pause = 전투 중에는 게임을 [accent]일시정지[] 할 수 있습니다.\n일시정지 되는 동안 건설을 대기시킬 수 있습니다.\n\n[accent]일시정지 할려면 스페이스 키를 누르세요. +tutorial.pause.mobile = 싱글 플레이에서는 게임을 [accent]일시정지[]할 수 있습니다.\n일시정지하면 교전과 더불어 건설까지 일시정지됩니다.\n\n[accent]일시정지 할려면 왼쪽 상단에 있는 이 버튼을 누르세요. +tutorial.unpause = 이제 스페이스를 누르면 일시정지가 해제됩니다. +tutorial.unpause.mobile = 이제 다시 누르면 일시정지가 해제됩니다. +tutorial.breaking = 블록은 종종 파괴 되어야 합니다.\n선택한 모든 블록을 파괴할려면 [accent]마우스 오른쪽 클릭을 길게 누르세요[].\n\n[accent]영역 선택을 사용하여 코어 왼쪽의 모든 조각벽을 파괴하세요. +tutorial.breaking.mobile = 블록은 종종 파괴 되어야 합니다.\n[accent]삭제 모드[]를 선택한 다음 블록을 탭 하여 파괴할 수 있습니다.\n[accnet]몇 초 동안 손가락을 누르고 원하는 방향으로 드래그[]하여 범위 안에있는 블럭을 파괴하세요.\n그리고 체크 표시 버튼을 눌러 삭제 작업을 할 수 있습니다.\n[accent]영역 선택을 사용하여 코어 왼쪽의 모든 조각 벽을 파괴하세요. +tutorial.withdraw = 경우에 따라 블록에서 아이템을 직접 가져와야 합니다.\n이 작업을 할려면 [accent]아이템이 있는 블록[]을 탭한 다음, 인벤토리에서 [accent]아이템[]을 탭하세요.\n[accent]누른 상태를 유지[]하면 여러개를 꺼낼 수 있습니다.\n\n[accent]코어에서 구리를 빼내세요. +tutorial.deposit = 기체에서 목적지 블록으로 드래그하여 아이템을 블록에 넣으세요.\n\n[accent]구리를 다시 코어에 넣으세요[]. +tutorial.waves = [lightgray]적[]이 다가옵니다.\n2 웨이브로부터 코어를 방어하세요. [accent]클릭[]하여 사격할 수 있습니다.\n더 많은 포탑과 드릴을 건설하고 구리를 더 모으세요. +tutorial.waves.mobile = [lightgray]적[]이 다가옵니다.\n2 웨이브로부터 코어를 방어하세요. 당신의 기체는 자동으로 적을 향해 사격합니다.\n더 많은 포탑과 드릴을 건설하고 구리를 더 모으세요. +tutorial.launch = 특정 웨이브에 도달하면 [accent]코어로 출격[] 을 할 수 있습니다.\n\n이렇게 얻은 자원을 사용하여 새로운 기술을 연구 할 수 있습니다.\n\n[accent]출격 버튼을 누르세요. -item.copper.description = 모든 종류의 블록에서 광범위하게 사용되는 자원입니다. -item.lead.description = 쉽게 구할 수 있으며, 전자 및 액체 수송 블록에서 광범위하게 사용되는 자원입니다. -item.metaglass.description = 초강력 유리 화합물. 액체 분배 및 저장에 광범위하게 사용됩니다.\n\n[royal]액체를 활용하기 위한 필수품입니다. -item.graphite.description = 탄약 및 전기 절연에 사용되는 광물질화 탄소. -item.sand.description = 합금을 제작할 때 사용되는 일반적인 재료입니다. -item.coal.description = 흔하고 쉽게 구할 수 있는 연료입니다. -item.titanium.description = 파이프 재료나 고급 드릴, 비행기/기체 등에서 재료로 사용되는 자원입니다. -item.thorium.description = 건물의 재료, 터렛의 탄약 또는 핵연료로 사용되는 방사성 금속입니다. +item.copper.description = 가장 기본적인 건설 재료. 모든 유형의 블록에서 광범위하게 사용됩니다. +item.lead.description = 기본 초반 재료. 전자 및 액체 수송 블록에서 광범위하게 사용되는 자원입니다. +item.metaglass.description = 초강력 유리 화합물. 액체 분배 및 저장에 광범위하게 사용됩니다. +item.graphite.description = 탄약 및 전기 부품에 사용되는 무기질 탄소. +item.sand.description = 제련에서 합금 또는 플럭스에서 광범위하게 사용되는 일반적인 재료. +item.coal.description = 화석화된 식물 물질. 씨앗이 나오기 훨씬 전에 형성되었습니다. 연료 및 자원 생산에 광범위하게 사용됩니다. +item.titanium.description = 액체 수송, 드릴 및 항공기에 광범위하게 사용되는 희귀 초경량 금속. +item.thorium.description = 구조적 지지 및 핵연료로 사용되는 고밀도의 방사성 금속. item.scrap.description = 오래된 건물과 유닛의 남은 잔해. 미량의 다양한 금속들이 포함되어 있습니다. -item.silicon.description = 매우 유용한 물질로, 기체를 만들거나 태양 전지판 등 전자 건물에 사용할 수 있습니다.\n\n[royal]전력을 효과적으로 생산/관리하기 위한 필수품입니다. -item.plastanium.description = 고급 항공기 및 분열 탄약에 사용되는 가벼운 연성 재료. -item.phase-fabric.description = 최첨단 전자 제품과 자기수리 기술에 사용되는 거의 무중력에 가까운 물질입니다.\n\n[royal]메타를 사용하여 가속하면 범위가 늘어나는 건물들이 있습니다. -item.surge-alloy.description = 순간적으로 전압이 증가하는 전기 특성을 가진 고급 합금입니다. -item.spore-pod.description = 석유를 만들거나 탄약과 합성해 연료로 전환하는데 사용됩니다. -item.blast-compound.description = 터렛 및 건설의 재료로 사용되는 휘발성 복합폭약.\n연료로도 사용할 수 있지만, 별로 추천하지는 않습니다. -item.pyratite.description = 인화성을 가진 재료로, 주로 터렛의 탄약으로 사용됩니다. -liquid.water.description = 여러 포탑을 가속하는 데 사용할 수 있고, 파도와 멜트다운의 탄약으로도 사용되며 여러 공장에서도 사용되는 무구한 가능성을 가진 액체입니다. -liquid.slag.description = 다양한 종류의 금속들이 함께 섞여 녹아있습니다. 원심분리기를 이용해 다른 광물들로 분리하거나 탄약으로 사용해 적 부대를 향해 살포할 수 있습니다. -liquid.oil.description = 연소, 폭발 또는 냉각제로 사용될 수 있습니다. -liquid.cryofluid.description = 건물을 냉각시키는 데 가장 효과적인 액체입니다. -mech.alpha-mech.description = 표준 기체.\n적절한 속도와 공격력을 갖추고 있습니다. -mech.delta-mech.description = 빠르게 이동하는 적을 처치하기 위한 가벼운 기체.\n구조물에는 거의 피해를 주지 않지만, 무기를 사용하여 많은 적군을 매우 빠르게 죽일 수 있습니다. -mech.tau-mech.description = 지원형 기체.\n총을 발사하여 건물을 치료하고 회복 능력 사용으로 화재를 진압하거나, 반경 내 아군을 치유시킵니다. -mech.omega-mech.description = 지상 기체 최종판이자 건물 파괴용으로 적합한 부피가 크고 튼튼한 기체.\n방어 모드는 최대 90% 의 피해를 줄일 수 있습니다. -mech.dart-ship.description = 표준 비행선.\n빠르고 가볍지만 공격력이 거의 없고 채광 속도가 느립니다. -mech.javelin-ship.description = 치고 빠지는 공격을 위한 비행선.\n처음에는 느리지만, 가속도가 붙어 엄청난 속도로 비행하여 적 기지를 향해 미사일을 퍼붓습니다. 전기공격 능력을 사용할 수 있습니다.\n\n[royal]지나가기만 해도 보호막을 전부 파괴합니다. -mech.trident-ship.description = 대형 공중 폭격능력과 빠른 건설능력을 가진 폭격기입니다. -mech.glaive-ship.description = 크고 잘 무장된 총을 가진 비행선.\n방화용 리피터가 장착되어 있으며, 가속도와 최대속도가 높습니다. -unit.draug.description = 가장 기본적인 채굴 드론입니다 저렴하게 생산이 가능하며 자동으로 구리와 납을 캐내 가까운 코어에 저장합니다. -unit.spirit.description = 블록을 자동으로 수리합니다. -unit.phantom.description = 첨단 드론 유닛. 플레이어의 건설을 도와줍니다. -unit.dagger.description = 기본 지상 유닛입니다. -unit.crawler.description = 지상 유닛. 적이 가까이에 있으면 폭발합니다. -unit.titan.description = 고급 지상 유닛입니다.\n원거리 총 대신에 근접 화염 방사기를 가지고 있으며, 지상과 공중 둘다 공격할 수 있습니다. -unit.fortress.description = 중무장 포병 지상 유닛.\n높은 공격력을 가진 총과 높은 체력을 가지고 있습니다. -unit.eruptor.description = 지상 유닛. 광재를 넣은 파도와 같은 무기를 장착했습니다. -unit.wraith.description = 적 핵심 건물 및 유닛을 집중적으로 공격하는 방식을 사용하는 전투기 입니다. -unit.ghoul.description = 무겁고 튼튼한 지상 폭격기 입니다.\n주로 적 건물로 이동하여 엄청난 폭격을 가합니다. -unit.revenant.description = 플레이어가 생산가능한 최종 공중 전투기. 복합폭약을 쓰는 스워머 포탑과 같은 무기를 사용합니다. -block.message.description = 메모를 작성할 수 있습니다. 이것을 이용하여 같은 팀과 소통을 해보세요. -block.graphite-press.description = 석탄들을 흑연으로 압축합니다. -block.multi-press.description = 흑연 압축기의 상위 버전입니다. 물과 전력을 이용해 석탄을 빠르고 효율적으로 압축합니다. -block.silicon-smelter.description = 석탄과 모래를 사용해 실리콘을 생산합니다. -block.kiln.description = 모래와 납을 사용해 금속유리를 만듭니다. 소량의 전력이 필요합니다. +item.silicon.description = 매우 유용한 반도체. 복잡한 전자 장치나 유도탄에 사용됩니다. +item.plastanium.description = 고급 기체 및 파편화 탄약에 사용되는 가볍고 연성이 있는 재료입니다. +item.phase-fabric.description = 최첨단 전자 제품과 자기수리 기술에 사용되는 거의 무중력에 가까운 물질입니다. +item.surge-alloy.description = 독특한 전기적 특성을 가진 고급 합금. +item.spore-pod.description = 산업 목적을 위해 대기 농도에서 합성된 합성 포자 포드. 석유, 폭발물 및 연료로 전환하는 데 사용됩니다. +item.blast-compound.description = 폭탄과 폭발물에 사용되는 불안정한 화합물. 포자 포드 및 기타 휘발성 물질로 합성할 수 있습니다. 연료로 사용하지 않는 것이 좋습니다. +item.pyratite.description = 소이 무기에서 사용되는 매우 높은 가연성 물질. +liquid.water.description = 가장 유용한 액체. 냉각기 및 폐기물 처리에 일반적으로 사용됩니다. +liquid.slag.description = 다양한 종류의 금속들이 함께 섞여 녹아있습니다. 분리기를 이용해 다른 광물들로 분리하거나 탄약으로 사용해 적 부대를 향해 살포할 수 있습니다. +liquid.oil.description = 고급 재료 생산에 사용되는 액체. 석탄으로 전환하거나 무기로 뿌려서 불을 지를 수 있습니다. +liquid.cryofluid.description = 물과 티타늄으로 만든 비 부식성 액체. 열 용량이 매우 높으며 냉각수로 광범위하게 사용됩니다. + +block.message.description = 메세지를 남깁니다. 같은 팀 간의 소통에 사용됩니다. +block.graphite-press.description = 석탄 덩어리를 순수한 흑연으로 압축합니다. +block.multi-press.description = 흑연 압축기의 강화 버전. 석탄을 빠르고 효율적으로 처리하기 위해 물과 전력을 사용합니다. +block.silicon-smelter.description = 순수한 석탄과 모래로 실리콘을 생산합니다. +block.kiln.description = 모래를 제련하여 강화 유리라고 알려진 화합물로 만듭니다. 작동할려면 소량의 전력이 필요합니다. block.plastanium-compressor.description = 석유와 티타늄으로 플라스터늄을 생산합니다. -block.phase-weaver.description = 토륨과 많은 양의 모래로 메타를 합성합니다. -block.alloy-smelter.description = 티타늄, 납, 실리콘, 구리로 설금을 생산합니다. -block.cryofluidmixer.description = 물과 티타늄을 물보다 냉각효과가 좋은 냉각수로 결합시킵니다. -block.blast-mixer.description = 포자 방울을 사용하여 피라타이트를 폭발성 화합물로 변환시킵니다. +block.phase-weaver.description = 방사성 토륨과 모래에서 메타를 합성합니다. 작동하려면 엄청난 양의 전력이 필요합니다. +block.alloy-smelter.description = 티타늄, 납, 실리콘, 구리를 결합하여 설금을 생산합니다. +block.cryofluidmixer.description = 물과 미세 티타늄 분말을 냉각수로 혼합합니다. 토륨 원자로 사용에 필수적입니다. +block.blast-mixer.description = 포자 클러스터를 피라타이트와 분쇄하고 혼합하여 화합물을 만듭니다. block.pyratite-mixer.description = 석탄, 납, 모래를 가연성이 높은 피라타이트로 만듭니다. -block.melter.description = 고철을 녹여 파도의 탄약 혹은 원심 분리기에 사용할 수 있는 액체인 광재로 만듭니다. -block.separator.description = 광재를 각종 자원으로 재활용 할 수 있게 해 주는 건물입니다. -block.spore-press.description = 포자 방울을 압축해 기름을 추출합니다. -block.pulverizer.description = 고철을 갈아 모래로 만듭니다. 맵에 모래가 부족할 때 유용합니다. -block.coal-centrifuge.description = 석유로 석탄을 만듭니다. -block.incinerator.description = 불필요한 자원을 전력을 사용해 소각할 수 있는 건물입니다. -block.power-void.description = 이어져있는 건물의 전력을 모두 없앱니다.\n샌드박스에서만 건설가능. -block.power-source.description = 무한한 전력을 공급해주는 블록입니다.\n샌드박스에서만 건설가능. -block.item-source.description = 자원을 선택하면 그 자원이 무한히 생성되는 블록입니다.\n샌드박스에서만 건설가능. -block.item-void.description = 자원을 사라지게 합니다.\n샌드박스에서만 건설가능. -block.liquid-source.description = 액체를 선택하면 그 액체가 무한히 생성되는 블록입니다.\n샌드박스에서만 건설가능. -block.liquid-void.description = 액체를 사라지게 합니다.\n샌드박스에서만 건설가능. -block.copper-wall.description = 게임 시작 초기에 방어용으로 적합합니다. -block.copper-wall-large.description = 구리 벽 4개를 뭉친 블록입니다. -block.titanium-wall.description = 흑연이 생산될 즈음에 사용하기 적합합니다. -block.titanium-wall-large.description = 티타늄 벽 4개를 뭉친 블록입니다. -block.plastanium-wall.description = 아크, 델타와 같은 전기 공격을 막는 특수한 벽입니다. 또한, 이 벽 주위에 전력을 사용하는 건물을 배치할 시 그 건물에는 노드가 자동으로 연결되지 않습니다. -block.plastanium-wall-large.description = 아크, 델타와 같은 전기 공격을 막는 특수한 벽입니다. 또한, 이 벽 주위에 전력을 사용하는 건물을 배치할 시 그 건물에는 노드가 자동으로 연결되지 않습니다.\n도배해서 사용하세요. -block.thorium-wall.description = 쉬운 생산이 가능한 마지막 방어벽입니다. -block.thorium-wall-large.description = 토륨 벽 4개를 뭉친 블록입니다. -block.phase-wall.description = 토륨 벽만큼 강하진 않지만 벽을 향해 날아오는 총알이 강력하지 않으면 총알을 튕겨냅니다. -block.phase-wall-large.description = 메타 벽 4개를 뭉친 블록입니다. -block.surge-wall.description = 공격을 받으면 낮은 확률로 공격자에게 전기 공격을 합니다. -block.surge-wall-large.description = 설금 벽 4개를 뭉친 블록입니다. -block.door.description = 눌러서 열고 닫을 수 있는 문.\n만약 문이 열리면, 적들은 문을 통과할 수 있습니다. -block.door-large.description = 4칸의 대형문 입니다. -block.mender.description = 주변 블록들을 주기적으로 치료합니다. -block.mend-projector.description = 수리 프로젝터보다 더 넓은 범위, 더 많은 회복량, 더 빠른 속도를 가졌습니다. -block.overdrive-projector.description = 드릴과 컨베이어와 같은 인근 건물의 속도를 높여줍니다. -block.force-projector.description = 육각형 보호막을 만들고, 보호막의 내구도가 다 닳기 전까지 보호막 내로 들어오는 모든 공격을 방어합니다. -block.shock-mine.description = 지뢰를 밟는 적에게 피해를 줍니다. 적에게는 거의 보이지 않습니다. 일단 설치 완료된 후에는 적 유닛이 공격하지 않습니다. 그러나 지뢰가 있는 곳은 피해가니 주의하세요. (이 점을 이용해서 적 유닛들을 원하는 방향으로 몰아갈 수 있습니다.) -block.conveyor.description = 기본 자원 수송 레일. 자원을 배치된 방향을 따라 이동시켜 자동으로 건물에 넣어줍니다. +block.melter.description = 웨이브 포탑에서 추가 처리 또는 사용을 위해 고철을 광재로 녹입니다. +block.separator.description = 광재를 미네랄 성분으로 분리합니다. 그리고 냉각된 결과를 출력합니다. +block.spore-press.description = 포자 포드를 극압으로 압축하여 기름을 합성합니다. +block.pulverizer.description = 고철을 뭉개서 고운 모래로 만듭니다. +block.coal-centrifuge.description = 기름에서 석탄 덩어리를 추출합니다. +block.incinerator.description = 넘치는 아이템이나 액체를 증발시킵니다. +block.power-void.description = 입력된 모든 전력을 무효화합니다. 샌드박스 전용. +block.power-source.description = 무한한 전력을 공급해주는 블록입니다. 샌드박스 전용. +block.item-source.description = 아이템을 무한대로 출력합니다. 샌드박스 전용. +block.item-void.description = 모든 아이템을 파괴합니다. 샌드박스 전용. +block.liquid-source.description = 액체를 무한히 출력합니다. 샌드박스 전용. +block.liquid-void.description = 액체를 제거합니다. 샌드박스 전용. +block.copper-wall.description = 저렴한 수비 블록.\n처음 몇 웨이브에서 코어와 포탑을 보호하는데 유용합니다. +block.copper-wall-large.description = 저렴한 수비 블록.\n처음 몇 웨이브에서 코어와 포탑을 보호하는데 유용합니다.\n여러 타일을 차지합니다. +block.titanium-wall.description = 적당히 강한 방어 블록.\n적에게서 적절한 보호를 제공합니다. +block.titanium-wall-large.description = 적당히 강한 방어 블록.\n적에게서 적절한 보호를 제공합니다.\n여러 타일을 차지합니다. +block.plastanium-wall.description = 전격 공격을 흡수하고 전력 노드의 자동 연결을 차단하는 특수 유형의 벽. +block.plastanium-wall-large.description = 전격 공격을 흡수하고 전력 노드의 자동 연결을 차단하는 특수 유형의 벽.\n여러 타일을 차지합니다. +block.thorium-wall.description = 강력한 방어 블록.\n적으로부터 적절한 보호를 할 수 있습니다. +block.thorium-wall-large.description = 강력한 방어 블록.\n적으로부터 적절한 보호를 할 수 있습니다.\n여러 타일을 차지합니다. +block.phase-wall.description = 특수 메타기반 반사 화합물로 코팅된 벽. 대부분의 총알을 반사시킵니다. +block.phase-wall-large.description = 특수 메타기반 반사 화합물로 코팅된 벽. 대부분의 총알을 반사시킵니다.\n여러 타일을 차지합니다. +block.surge-wall.description = 내구성이 매우 강한 방어 블록.\n총탄이 날아오면 충전량을 높여 무작위로 방출합니다. +block.surge-wall-large.description = 내구성이 매우 강한 방어 블록.\n총탄이 날아오면 충전량을 높여 무작위로 방출합니다.\n여러 타일을 차지합니다. +block.door.description = 작은 문. 탭하여 열거나 닫을 수 있습니다. +block.door-large.description = 큰 문. 탭하여 열거나 닫을 수 있습니다.\n여러 타일을 차지합니다. +block.mender.description = 주변의 블록을 주기적으로 수리합니다. 웨이브 사이의 방어를 유지하게 합니다.\n선택적으로 실리콘을 사용하여 범위와 효율성을 향상시킵니다. +block.mend-projector.description = 멘더의 강화 버전. 주변의 블록을 수리합니다.\n선택적으로 메타를 사용하여 범위와 효율성을 향상시킵니다. +block.overdrive-projector.description = 주변 건물의 속도를 높입니다.\n선택적으로 메타를 사용하여 범위와 효율성을 높입니다. +block.force-projector.description = 건물과 내부의 유닛을 공격으로부터 보호하며, 그 주위에 육각형 역장을 형성합니다.\n너무 많은 손상이 지속되면 과열되며, 선택적으로 냉각수를 사용하여 과열을 방지할 수 있고, 메타는 역장의 크기를 늘리는 데 사용할 수 있습니다. +block.shock-mine.description = 지뢰를 밟고 있는 적에게 피해를 입힙니다. 적에게는 거의 보이지 않습니다. +block.conveyor.description = 기본 자원 수송 레일. 자원을 배치된 방향을 따라 이동시켜 자동으로 건물에 넣어줍니다. 회전식. block.titanium-conveyor.description = 고급 자원 수송 레일. 기본 컨베이어보다 자원을 더 빨리 이동시킵니다. +block.plastanium-conveyor.description = 아이템을 일괄적으로 운송시킵니다. 컨베이에 뒤에서 아이템을 받고 앞쪽에 세 방향으로 내보냅니다. block.junction.description = 2개의 컨베이어 벨트를 교차시키는 다리 역할을 합니다. 서로 다른 재료를 다른 장소로 운반하는 두 개의 다른 컨베이어의 상황에서 유용합니다. -block.bridge-conveyor.description = 자원 수송 블록.\n지형이나 건물을 넘어 최대 3개 타일을 건너뛰고 자원을 운송할 수 있습니다. -block.phase-conveyor.description = 고급 자원 수송 블록.\n지형이나 건물을 넘어 최대 11개 타일을 건너뛰고 자원을 운송할 수 있습니다. 전력를 사용하고, 기본 터널 컨베이어보다 빠릅니다. -block.sorter.description = 자원을 넣어서 필터에 설정된 자원일 경우 바로 앞으로 통과하며, 그렇지 않을 경우 옆으로 내보냅니다. -block.inverted-sorter.description = 필터와 비슷하지만, 반전 필터는 설정된 자원을 필터의 양 옆으로 내보냅니다. -block.router.description = 한 방향에서 자원을 넣을 시 최대 3개의 다른 방향으로 균등하게 내보냅니다. 자원을 한 곳에서 여러 방향으로 분배하는 데 유용합니다. -block.distributor.description = 자원을 최대 7개의 다른 방향으로 균등하게 분배하는 고급 분배기. -block.overflow-gate.description = 평소에는 자원이 들어온 방향으로 자원을 통과시키지만, 정면이 자원으로 꽉 차거나 막힐 시 옆으로 자원을 내보냅니다. -block.underflow-gate.description = 포화 필터의 정반대 방식의 필터입니다. 받은 자원을 먼저 필터의 양 옆으로 보내고 양 옆으로 자원을 보낼 수 없다면 정면으로 내보냅니다. -block.mass-driver.description = 자원 수송 포탑\n모인 자원을 전기를 사용하여 또 다른 매스 드라이버로 발사합니다.\n[royal]받을 때도 전기를 사용합니다. +block.bridge-conveyor.description = 고급 자원 운송 블록. 지형이나 건물을 넘어 최대 3개 타일을 건너뛰고 자원을 운송할 수 있습니다. +block.phase-conveyor.description = 고급 자원 운송 블록. 전력을 사용하여 여러 타일을 통해 연결된 컨베이어로 아이템을 순간이동 시킵니다. +block.sorter.description = 아이템을 정렬합니다. 아이템이 선택과 일치하면 앞방향으로 통과하며, 그렇지 않을 경우 왼쪽과 오른쪽으로 출력됩니다. +block.inverted-sorter.description = 표준 분류기와 같은 아이템을 처리하지만, 대신 선택된 아이템을 측면으로 출력합니다. +block.router.description = 아이템을 받아서 최대 3개의 다른 방향으로 동일하게 출력합니다. 하나의 소스에서 여러 대상으로 재료를 분할하는데 유용합니다.\n\n[scarlet]공장에서 생산된 재료는 출력에 의해 막히게 되므로, 절대로 공장 옆에서 사용하지 마십시오. +block.distributor.description = 고급 분배기. 아이템을 최대 7개의 다른 방향으로 동일하게 분할합니다. +block.overflow-gate.description = 전면 경로가 차단 된 경우에만 왼쪽과 오른쪽으로 출력됩니다. +block.underflow-gate.description = 오버플로 게이트의 반대. 왼쪽 및 오른쪽 경로가 차단되면 전면으로 출력됩니다. +block.mass-driver.description = 최고의 아이템 운송 블록. 여러 아이템을 모아서 장거리에 걸쳐 다른 매스 드라이버에게 발사합니다. 작동하려면 전원이 필요합니다. block.mechanical-pump.description = 느린 속도로 액체를 퍼올리지만, 전력를 사용하지 않는 펌프입니다. -block.rotary-pump.description = 전력을 사용해 빠른 속도로 액체를 끌어올릴 수 있는 펌프입니다.\n\n[royal]타일당 액체를 퍼올리는 속도가 가장 빠릅니다. +block.rotary-pump.description = 고급 펌프. 더 많은 액체를 퍼올리지만, 전력이 필요합니다. block.thermal-pump.description = 가장 강력한 펌프. -block.conduit.description = 기본 파이프\n액체를 배치된 방향으로 느리게 운송합니다. -block.pulse-conduit.description = 고급 파이프\n기본 파이프보다 액체 운송 속도가 빠릅니다. -block.plated-conduit.description = 펄스 파이프와 같은 속도로 액체를 운송시키지만, 체력이 더 많습니다. 양 옆으로는 파이프 외의 대상에서 액체를 받지 않습니다. \n파이프 끝 부분이 블록에 연결되지 않고 노출되었을 때 누수되는 액체의 양이 더 적습니다. -block.liquid-router.description = 액체를 다른 방향으로 분배할 수 있게 하는 블록입니다. -block.liquid-tank.description = 액체를 저장할 수 있는 액체 탱크 입니다. -block.liquid-junction.description = 교차기와 같은 기능을 하지만 자원 대신에 액체를 교차시킵니다. -block.bridge-conduit.description = 액체 수송블록\n다리와 다리 사이를 연결하여 액체가 지나갈 수 있게 해 줍니다.\n\n주로 중간에 파이프 설치를 막는 장애물이 있을 때 사용합니다. -block.phase-conduit.description = 고급 액체 수송블록\n전기를 사용하여 같은 줄의 먼 거리에 있는 다른 위상 파이프로 액체를 전달합니다. -block.power-node.description = 전력을 연결된 대상과 연동시킵니다.\n최대 20개의 대상을 연결할 수 있습니다. 노드는 붙어있는 블록으로부터 전력이 연동됩니다. -block.power-node-large.description = 전력을 연결된 대상과 연동시킵니다.\n최대 30개의 대상을 연결시킬 수 있고, 범위가 더 넓습니다. -block.surge-tower.description = 전력을 연결된 대상과 연동시킵니다.\n2개의 대상만 연결시킬 수 있지만 대신에 범위가 매우 넓습니다. -block.diode.description = 이 블록을 배터리와 배터리 사이에 놓아 연결할경우 전력은 화살표 방향으로만 이동할 수 있습니다. 화살표의 뒤에 있는 배터리의 전력량이 앞에 있는 배터리보다 많을 경우에만 이동시킵니다. -block.battery.description = 전력 생산량에 여유가 있을경우, 생산되고 남은 전력을 여기에 저장합니다.\n\n[royal]이것을 이용해 한순간에 많은 전력을 사용하는 포탑들을 보조가능합니다. -block.battery-large.description = 일반 배터리보다 훨씬 많은 량의 전력을 저장합니다.\n\n[royal]배터리 9개를 설치하는 것보다 효율이 좋습니다. -block.combustion-generator.description = 인화성 물질을 태워 소량의 전력을 생산합니다. -block.thermal-generator.description = 열이 있는 타일 위에 건설하면 전력을 생산합니다.\n\n[royal]용암 웅덩이 혹은 열기지대에서 무한히 열을 발산합니다. -block.turbine-generator.description = 화력 발전기보다 효율적이지만, 추가적으로 액체가 필요합니다.\n\n[royal]일반 타일에서 물추출기 1개로 2개를 가동시킬 수 있습니다. -block.differential-generator.description = 냉각수와 피라타이트의 온도 차를 이용해 안정적으로 원자로에 버금가는 양의 전력을 생산합니다. -block.rtg-generator.description = 방사성동위원소 열전기 발전기\n토륨 또는 메타를 사용하며, 냉각이 필요 없는 발전을 하지만 토륨 원자로에 비해 발전량이 매우 적습니다. -block.solar-panel.description = 태양광으로 극소량의 전기을 생산합니다. -block.solar-panel-large.description = 일반 태양 전지판보다 훨씬 발전량이 많지만, 건축비도 훨씬 비쌉니다. -block.thorium-reactor.description = 토륨을 이용해 막대한 양의 전력을 생산합니다. 지속적인 냉각이 필요하며 냉각제의 양이 부족하면 크게 폭발합니다.\n\n[royal]폭발로 인한 피해를 버틸 수 있는 건물은 없습니다. -block.impact-reactor.description = 최첨단 발전기\n복합폭약과 냉각수를 이용해 최고의 효율로 매우 많은 양의 전력을 생산할 수 있습니다. 발전을 시작하는 데 전력이 필요하며 발전기를 가동하는 데 시간이 많이 걸립니다.\n[royal]오버드라이브 프로젝터로 10000이상의 전력을 생산할 수 있으며, 가동중에 전력이 끊기면 가동을 다시 해야하기 때문에 창고, 물탱크, 배터리 등을 주위에 설치하고 나서 가동하는 것을 추천합니다. -block.mechanical-drill.description = 싸구려 드릴. 적절한 타일 위에 설치되었을 때 매우 느린 속도로 채광합니다.\n\n[royal]구리와 납은 채광 드론으로 대체가 가능합니다. -block.pneumatic-drill.description = 티타늄을 채광할 수 있는 향상된 드릴입니다. \n\n[royal]전력을 사용하지 않는 드릴이지만 물과 오버드라이브를 이용하여 가속할 수 있습니다. -block.laser-drill.description = 토륨을 채광할 수 있는 고급 드릴입니다. 전력과 물을 공급하여 빠른 속도로 채광할 수 있습니다.\n\n[royal]드릴 밑에 배치된 광물타일의 비율에 따라 채광량이 달라집니다. -block.blast-drill.description = 최상위 드릴입니다. 많은 양의 전력이 필요합니다.\n\n[royal]물추출기 하나면 충분합니다. -block.water-extractor.description = 땅에서 물을 추출합니다. 근처에 호수가 없을 때 사용하세요.\n\n[royal]물추출기의 효율이 달라지는 타일이 있습니다. -block.cultivator.description = 소량의 포자를 산업용으로 사용가능한 포자 방울로 배양하는 건물입니다. -block.oil-extractor.description = 대량의 전력과 물을 사용하여 모래에서 석유를 추출합니다. 근처에 직접적인 석유 공급원이 없을 때 사용하세요. -block.core-shard.description = 코어의 1단계 형태입니다.\n이것이 파괴되면 플레이하고 있는 지역과의 연결이 끊어지니 적의 공격에 파괴되지 않도록 주의하세요.\n[royal](연결이 끊긴다는 말은 게임오버와 같습니다.) -block.core-foundation.description = 코어의 2단계 형태입니다.\n첫 번째 코어보다 더 튼튼하고 더 많은 자원을 저장할 수 있습니다.\n\n[royal]크기도 좀 더 큽니다. -block.core-nucleus.description = 코어의 3단계이자 마지막 형태입니다.\n가장 튼튼하며 막대한 양의 자원들을 저장할 수 있습니다. -block.vault.description = 각종 자원을 대량으로 저장할 수 있습니다.[lightgray]언로더[]를 사용하여 창고에서 물건을 회수할 수 있습니다.\n\n[royal]포탑의 탄약, 핵융합로의 폭발물, 원자로 냉각수의 티타늄등 여러 자원들의 여분을 미리 저장하여 혹시 모를 사태를 예방하세요. -block.container.description = 각종 자원을 저장할 수 있습니다.[lightgray]언로더[]를 사용하여 컨테이너에서 자원을 회수할 수 있습니다.\n\n[royal]또는 컨테이너를 클릭하고 자원을 눌러 자원을 빼낼 수도 있습니다. -block.unloader.description = 컨테이너, 창고 또는 코어에서 인접한 블록으로 자원을 내보냅니다. 내보낼 자원의 종류는 언로더를 눌러 정할 수 있습니다. -block.launch-pad.description = 출격할 필요 없이 자원을 수송시킵시다.\n\n[royal]캠페인에서 이것을 이용해 게임 중에 연구가 가능합니다. -block.launch-pad-large.description = 출격 패드의 강화버전\n더 많은 자원을 더 자주 출격시킵니다.\n\n[royal]크기도 더 큽니다. -block.duo.description = 소형 포탑입니다.\n가장 기본적인 포탑으로 약한 탄환을 발사합니다. -block.scatter.description = 중형 대공 포탑입니다.\n납이나 고철 덩어리를 적에게 쏩니다. -block.scorch.description = 소형 포탑입니다.\n지상의 적을 매우 강력한 화염으로 지져버립니다. 근거리에서 효과적입니다.\n\n[royal]유닛 상대로 무지막지한 공격력을 보여줍니다. -block.hail.description = 소형 포탑입니다.\n장거리 포탄을 발사합니다. -block.wave.description = 중형 포탑입니다. 대상에게 포탑에 공급된 액체를 발사합니다. 물또는 냉각수가 공급되면 자동으로 불을 끕니다. -block.lancer.description = 중형 포탑입니다.\n적을 레이저로 관통합니다. -block.arc.description = 소형 포탑입니다.\n적을 전기로 지집니다. -block.swarmer.description = 중형 포탑입니다.\n지상과 공중 적 모두를 공격하는 유도 미사일 포탑입니다. -block.salvo.description = 중형 포탑입니다.\n3연발 탄환을 발사합니다. -block.fuse.description = 대형 포탑입니다.\n강력한 단거리 빔을 쏩니다. -block.ripple.description = 대형 포탑입니다.\n여러 발의 탄환을 동시에 발사합니다. -block.cyclone.description = 대형 포탑입니다.\n초고속으로 사격합니다. -block.spectre.description = 초대형 포탑입니다.\n한 번에 두 발의 강력한 총알을 쏩니다. -block.meltdown.description = 초대형 포탑.\n장거리의 강력한 열광선을 발사합니다. -block.command-center.description = 아군 유닛에게 이동 명령을 내릴 수 있는 건물입니다.\n명령의 종류는 순찰/공격/후퇴가 있으며, 순찰은 유닛이 순찰 지점을 돌아다니게, 공격은 유닛들을 적 코어를 향해 공격하도록, 후퇴는 유닛들을 아군 코어 또는 공장으로 돌아오게 합니다.\n\n[royal]생존 모드일 경우 공격 명령이 유닛을 적 생성 지점으로 보내니 조심하세요. -block.draug-factory.description = 구리와 납을 캐는 채광 드론을 생산합니다.\n\n[royal]이 드론은 영혼을 가지고 있습니다. -block.spirit-factory.description = 블록을 수리하는 수리 드론을 생산합니다.\n\n[royal]드론에도 정령이 있다죠. -block.phantom-factory.description = 건설을 도와주는 빌더 드론을 생산합니다.\n\n[royal]당신의 환영입니다. -block.wraith-factory.description = 빠른 뺑소니 요격기 유닛을 생산합니다.\n\n[royal]체력 자체는 무척 적습니다. -block.ghoul-factory.description = 중탄두 폭격기를 생산합니다.\n\n[royal]적 위를 유령처럼 맴돕니다. -block.revenant-factory.description = 중량의 복합폭약 스워머 포대를 가진 전함을 생산합니다.\n\n[royal] -block.dagger-factory.description = 기본 지상 유닛을 생산합니다.\n\n[royal]대거지만 단검으로 공격하진 않습니다. -block.crawler-factory.description = 자폭하는 지상 유닛을 생산합니다.\n\n[royal]레일만으로도 막을 수 있습니다. -block.titan-factory.description = 화염방사기를 장착한 지상유닛를 생산합니다.\n\n[royal]유닛 상대로 강력한 공격력을 보여줍니다. -block.fortress-factory.description = 중대포 지상유닛를 생산합니다. -block.repair-point.description = 주변에서 가장 가까운 손상된 유닛을 지속적으로 치료합니다. -block.dart-mech-pad.description = 기본적인 공격용 지상 기체로 전환할 수 있습니다.\n눌러서 변신하세요.\n\n[royal]한 번 더 누르면 기본 공중 기체로 전환가능합니다. -block.delta-mech-pad.description = 전기공격의 특수능력을 가진 기체로 전환할 수 있습니다.\n눌러서 전환하세요.\n\n[royal]공중으로 날았다가 착지하는 것으로 특수능력의 발현이 가능합니다. -block.tau-mech-pad.description = 수리의 능력을 가진 지원형 기체로 전환할 수 있습니다.\n눌러서 전환하세요.\n\n[royal]주변에 피해를 입은 유닛이 있다면 수리합니다. -block.omega-mech-pad.description = 포탑과의 전투가 용이하고 기체중에서 가장 단단한 기체로 전환할 수 있습니다.\n눌러서 전환하세요.\n\n[royal]교전시에 지상에 착지한 상태라면 방어모드에 진입해 90퍼센트의 피해를 흡수합니다. -block.javelin-ship-pad.description = 전기공격의 특수능력을 가진 빠른 요격체로 전환할 수 있습니다.\n눌러서 전환하세요.\n\n[royal]최고 속도에 도달하면 주변을 전기로 지져버립니다. -block.trident-ship-pad.description = 잘 무장된 중폭격기로 전환이 가능합니다.\n눌러서 전환하세요.\n\n[royal]적들의 위에서 폭격하기 때문에 비전투 건물이나 보호막을 파괴할 때 용이합니다. 더해서 건물 건설 속도가 가장 빠릅니다. -block.glaive-ship-pad.description = 방화기를 장착한 전투기로 전환이 가능합니다.\n누르거나 클릭하여 이 기체로 바꿉니다.\n\n[royal]속도가 가장 빠릅니다. +block.conduit.description = 기본 액체 운송 블록. 액체를 앞으로 이동시킵미다. 펌프 및 기타 파이프와 함께 사용됩니다. +block.pulse-conduit.description = 고급 액체 운송 블록. 액체를 더 빠르게 운반하고 표준 파이프보다 더 많이 저장합니다. +block.plated-conduit.description = 펄스 파이프와 같은 속도로 이동하지만 더 높은 방어력을 가지고 있습니다. 파이프 이외의 물체로 측면의 액체를 받아들이지 않습니다.\n누설이 적습니다. +block.liquid-router.description = 한 방향에서 액체를 받아 최대 3개의 다른 방향으로 동일하게 출력합니다. 일정량의 액체를 저장할 수도 있으며 한 소스에서 여러 대상으로 액체를 분할하는 데 유용합니다. +block.liquid-tank.description = 대량의 액체를 저장합니다. 재료가 일정하지 않은 상황에서 버퍼를 생성하거나 중요한 블록을 냉각하기 위한 보호 장치로 사용하세요. +block.liquid-junction.description = 두 개의 교차 파이프를 위한 다리 역할을 합니다. 다른 액체를 다른 위치로 운반하는 두 개의 다른 파이프가 있는 상황에서 유용합니다. +block.bridge-conduit.description = 고급 액체 운송 블록. 지형이나 건물을 넘어 최대 3개 타일 위로 액체를 운반할 수 있습니다. +block.phase-conduit.description = 고급 액체 운송 블록. 전력을 사용하여 액체를 여러 타일을 건너뛰어 연결된 메타 파이프로 순간 이동시킵니다. +block.power-node.description = 연결된 노드에 전력을 전송합니다. 노드는 인접한 블록에서 전력을 공급 받거나 전력을 공급 합니다. +block.power-node-large.description = 더 넓은 범위의 고급 전력 노드. +block.surge-tower.description = 사용 가능한 연결 수가 적은 장거리 전력 노드. +block.diode.description = 배터리 전력은 이 블록을 통해 한 방향으로만 흐를 수 있지만, 다른 쪽의 전원이 덜 저장된 경우에만 가능합니다. +block.battery.description = 에너지가 넘쳐날 때 완충제로 전력을 저장합니다. 전력에 적자가 발생할때 전력을 출력합니다. +block.battery-large.description = 일반 배터리보다 훨씬 더 많은 전력을 저장합니다. +block.combustion-generator.description = 석탄과 같은 가연성 물질을 연소시켜 전력을 생산합니다. +block.thermal-generator.description = 열이 있는 곳에 설치하면 전력이 생성됩니다. +block.turbine-generator.description = 고급 연소 발전기. 더 효율적이지만 증기를 생성하기 위해 물이 필요합니다. +block.differential-generator.description = 많은 량의 전력을 생성합니다. 냉각수와 불타는 피라타이트의 온도 차이를 이용합니다. +block.rtg-generator.description = 간단하고 안정적인 발전기. 부패하는 방사성 화합물의 열을 이용하여 느린 속도로 전력을 생성합니다. +block.solar-panel.description = 태양으로부터 소량의 전력을 생성합니다. +block.solar-panel-large.description = 표준 태양 전지판보다 훨씬 더 효율적인 버전. +block.thorium-reactor.description = 토륨으로부터 상당한 양의 전력을 생산합니다. 지속적인 냉각이 필요하며, 충분한 양의 냉각수가 공급되지 않으면 크게 폭발합니다. 전력 출력은 최대 재료 수용용량에 따라 달라집니다. +block.impact-reactor.description = 최고 효율로 대량의 전력을 생산할 수 있는 고급 발전기. 프로세스를 시작할려면 상당한 전력 공급이 필요합니다. +block.mechanical-drill.description = 가격이 싼 드릴. 적절한 타일에 설치하면 아이템을 천천히 느린 속도로 출력합니다. 기본 자원만 채굴할 수 있습니다. +block.pneumatic-drill.description = 티타늄을 채광할 수 있는 향상된 드릴. 기계식 드릴보다 더 빠른 속도로 채굴합니다. +block.laser-drill.description = 레이저 기술을 통해 더욱 빠르게 드릴링 할 수 있지만 전력이 필요합니다. 토륨 채굴 가능. +block.blast-drill.description = 최상위 드릴. 많은 양의 전력이 필요합니다. +block.water-extractor.description = 지하수를 추출합니다. 지표수가 없는 곳에서 사용합니다. +block.cultivator.description = 대기 중의 작은 농도의 포자를 배양 가능한 포드로 배양합니다. +block.oil-extractor.description = 석유를 추출하기 위해 많은 양의 전력과 모래 및 물을 사용합니다. +block.core-shard.description = 코어 캡슐의 첫번째 형태. 일단 파괴되면 해당 지역과의 모든 연결이 끊어집니다. 이런 일이 일어나지 않도록 하십시오. +block.core-foundation.description = 코어의 두번째 버전. 더 나은 방어력과 자원을 저장합니다. +block.core-nucleus.description = 코어 캡슐의 세 번째이자 마지막 형태입니다. 방어력이 매우 높고 대량의 자원을 저장할 수 있습니다. +block.vault.description = 각 유형의 많은 양의 자원을 저장합니다. 언로더 블록을 사용하여 창고에서 아이템을 빼낼 수 있습니다. +block.container.description = 각 유형의 소량의 자원을 저장합니다. 언로더 블록을 사용하여 컨테이너에서 아이템을 빼낼 수 있습니다. +block.unloader.description = 근처의 비 수송 블록에서 아이템을 빼냅니다. 빼낼 자원 유형을 눌러 변경할 수 있십니다. +block.launch-pad.description = 코어 출격 없이도 아이템을 묶어 출격시킬 수 있습니다. +block.launch-pad-large.description = 출격 패드의 개선된 버전. 더 많은 자원을 저장하며 더 자주 출격합니다. +block.duo.description = 작고 저렴한 포탑. 지상 유닛에 유용합니다. +block.scatter.description = 필수 대공 포탑. 적군에게 납 덩어리, 고철, 또는 강화 유리 조각 덩어리를 뿌립니다. +block.scorch.description = 주변의 모든 적을 불태웁니다. 근거리에서 매우 효과적입니다. +block.hail.description = 작은 장거리 포병 포탑입니다. +block.wave.description = 중형 포탑. 적에게 액체를 발사합니다. 물이 공급되면 자동으로 화재를 진압합니다. +block.lancer.description = 중형 대지 레이저 포탑. 강력한 에너지 빔을 충전하여 발사합니다. +block.arc.description = 작은 근거리 전격 포탑. 적에게 전격 아크를 발사합니다. +block.swarmer.description = 중형 미사일 포탑. 공중과 지상의 적을 모두 공격하며, 유도탄을 발사합니다. +block.salvo.description = 더 큰 고급 듀오 포탑 버전입니다. 적에게 총알을 빠르게 발사합니다. +block.fuse.description = 넓은 근거리 파편 포탑. 근처의 적에게 3개의 관통 총알을 발사합니다. +block.ripple.description = 매우 강력한 포병 포탑. 원거리에 있는 적에게 포탄 무리를 쏘세요. +block.cyclone.description = 대공 및 대지 포탑. 근처 유닛에게 폭발성 덩어리를 발사합니다. +block.spectre.description = 거대한 이중 배럴 대포. 공중 및 지상 목표물에 큰 관통 철갑탄을 발사합니다. +block.meltdown.description = 거대한 레이저 대포. 근처의 적에게 지속적인 레이버 빔을 충전하여 발사합니다. 냉각수가 있어야 작동합니다. +block.repair-point.description = 주변에서 가장 가까운 유닛들을 지속적으로 치료합니다. +block.segment.description = 오고있는 발사체를 파괴합니다. 레이저는 목표 대상이 아닙니다. diff --git a/core/assets/bundles/bundle_lt.properties b/core/assets/bundles/bundle_lt.properties index 9b1a01c642..929d60cfeb 100644 --- a/core/assets/bundles/bundle_lt.properties +++ b/core/assets/bundles/bundle_lt.properties @@ -106,6 +106,7 @@ mods.guide = Modifikavimo pagalba mods.report = Pranešti apie klaidas mods.openfolder = Atidaryti modifikacijų aplanką mods.reload = Perkrauti +mods.reloadexit = The game will now exit, to reload mods. mod.display = [gray]Modifikacijos:[orange] {0} mod.enabled = [lightgray]Įjungta mod.disabled = [scarlet]Išjungta @@ -124,6 +125,7 @@ mod.reloadrequired = [scarlet]Privalomas perkrovimas mod.import = Importuoti modifikaciją mod.import.file = Importuoti failą mod.import.github = Importuoti GitHub modifikaciją +mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source! mod.item.remove = Šis elementas yra[accent] '{0}'[] modifikacijos dalis. Norėdami panaikinti ją turite pašalinti modifikaciją. mod.remove.confirm = Ši modifikacija bus pašalinta. mod.author = [lightgray]Autorius:[] {0} @@ -224,7 +226,6 @@ save.new = Naujas Išsaugojimas save.overwrite = Ar esate tikras, jog\n norite perrašyti šį elementą? overwrite = Perrašyti save.none = Nerasta jokių išsaugojimų! -saveload = Išsaugoma... savefail = Nepavyko išsaugoti žaidimo! save.delete.confirm = Ar esate tikras, jog norite pašalinti šį išsaugojimą? save.delete = Šalinti @@ -272,6 +273,7 @@ quit.confirm.tutorial = Ar esate tikras, jog žinote ką darote?\nPradininkas ga loading = [accent]Kraunama... reloading = [accent]Iš naujo kraunamos modifikacijos... saving = [accent]Išsaugoma... +respawn = [accent][[{0}][] to respawn in core cancelbuilding = [accent][[{0}][] plano išvalymui selectschematic = [accent][[{0}][] pasirinkimui+kopijavimui pausebuilding = [accent][[{0}][] statymo sustabdymui @@ -328,8 +330,9 @@ waves.never = waves.every = kiekvieną waves.waves = banga(os) waves.perspawn = per spawn +waves.shields = shields/wave waves.to = iki -waves.boss = Bosas +waves.guardian = Guardian waves.preview = Apžiūra waves.edit = Redaguoti... waves.copy = Kopijuoti į iškarpinę @@ -460,6 +463,7 @@ requirement.unlock = Atrakinti {0} resume = Pratęsti zoną:\n[lightgray]{0} bestwave = [lightgray]Bangos rekordas: {0} launch = < PALEISTI > +launch.text = Launch launch.title = Paleidimas sėkmingas launch.next = [lightgray]kita proga bangoje {0} launch.unable2 = [scarlet]Negalima PALEISTI.[] @@ -467,13 +471,13 @@ launch.confirm = Tai paleis visus resursus jūsų branduolyje.\nJūs nebegalėsi launch.skip.confirm = Jei praleisite dabar, negalėsite paleisti iki vėlesnių bangų. uncover = Atidengti configure = Keisti resursų kiekį +loadout = Loadout +resources = Resources bannedblocks = Uždrausti blokai addall = Pridėti visus -configure.locked = [lightgray]Atrakinkite resursų kiekio keitimą: {0}. configure.invalid = Kiekis turi būti numeris tarp 0 ir {0}. zone.unlocked = [lightgray]{0} atrakinta. zone.requirement.complete = Rekalavimai {0} įvykdyti:[lightgray]\n{1} -zone.config.unlocked = Resursų keitimas atrakintas:[lightgray]\n{0} zone.resources = [lightgray]Aptikti resursai: zone.objective = [lightgray]Tikslas: [accent]{0} zone.objective.survival = Išgyventi @@ -492,35 +496,29 @@ error.io = Tinklo I/O klaida. error.any = Nžinoma tinklo klaida. error.bloom = Nepavyko inicijuoti spindėjimo.\nJūsų įrenginys gali nepalaikyti šios funkcijos. -zone.groundZero.name = Nulinė Žemė -zone.desertWastes.name = Dykumos Dykvietės -zone.craters.name = Krateriai -zone.frozenForest.name = Užšalęs Miškas -zone.ruinousShores.name = Sugriuvę krantai -zone.stainedMountains.name = Beicuoti Kalnai -zone.desolateRift.name = Apleistas Tarpeklis -zone.nuclearComplex.name = Branduolinės Gamybos Kompleksas -zone.overgrowth.name = Peraugimas -zone.tarFields.name = Dervos Kaukai -zone.saltFlats.name = Druskos Lygumos -zone.impact0078.name = Poveikis 0078 -zone.crags.name = Uolos -zone.fungalPass.name = Grybų perėja +sector.groundZero.name = Ground Zero +sector.craters.name = The Craters +sector.frozenForest.name = Frozen Forest +sector.ruinousShores.name = Ruinous Shores +sector.stainedMountains.name = Stained Mountains +sector.desolateRift.name = Desolate Rift +sector.nuclearComplex.name = Nuclear Production Complex +sector.overgrowth.name = Overgrowth +sector.tarFields.name = Tar Fields +sector.saltFlats.name = Salt Flats +sector.fungalPass.name = Fungal Pass -zone.groundZero.description = Optimali vieta pradėjimui iš naujo. Mažas priešų pavojus. Keletas Resursų.\nSurinkite kuo daugiau Švino ir Vario.\nJudėkite toliau. -zone.frozenForest.description = Net čia, arčiau kalnų, išplito sporos. Šalti orai jų negali išlaikyti visą amžinybę.\n\nPradėkite kelionę į energijos gamybą. Pastatykite vidaus degimo variklius. Išmokite naudoti taisytojus. -zone.desertWastes.description = Šios dykvietės yra plačios, nenuspėjamos ir nusėtos apleistais sektoriaus pastatais.\nŠiame regione yra anglies. Naudokite ją gaminti energiją arba sintetinkite į grafitą.\n\n[lightgray]Ši nusileidimo vieta negali būti garantuota. -zone.saltFlats.description = Dykumos pakraštyje driekiasi Druskos Lygumos. Keletas resursų gali būti rasta šioje vietoje.\n\nČia priešai pasistatė savo resursų sandėlių kompleksą. Sunaikinkite jų branduolį. Nepalikite nieko gyvo. -zone.craters.description = Vanduo susikaupė krateryje, senų karų relikvijoje. Atsiimkite zoną. Rinkite smėlį. Lydykite Meta Stiklą. Pumpuokite vandenį bokštams ir grąžtams aušinti. -zone.ruinousShores.description = Po dykviečių yra kranto linija. Kartą, šio vietoje buvo pakrantės apsauga. Nebedaug išliko. Tik paprasčiausios gynybos struktūros išliko nesudaužytos, visa kita virto laužu.\nTęskite plėtimasi į išorę. Iš naujo atraskite technologijas. -zone.stainedMountains.description = Toliau žemėje driekiasi kalnai.\nIšgaukite titaną, kurio gausu šioje zonoje. Išmokite jį naudoti.\n\nČia priešų kiekis yra didesnis. Neduokite jiems laiko siųsti stipriausius vienetus. -zone.overgrowth.description = Ši vieta yra peraugusi, arčiau sporų šaltinio.\nPriešai įsikūrė gyvenvietę. Pasigaminkite Titanus. Sunaikinkite ją. Atgaukite tai, kas buvo prarasta. -zone.tarFields.description = Pakraštys naftos produkcijos zonos, tarp kalnų ir dykumų. Viena iš keleto zonų su galimais panaudoti dervos resursais.\nNors apleista, ši zona turi pavojingų priešo pajėgų netoliese. Nenuvertinkite jų.\n\n[lightgray]Išraskite naftos apdirbimo technologijas, jei įmanoma. -zone.desolateRift.description = Ekstremaliai pavojinga zona. Daugybė resursų, tačiau mažai vietos. Didelė sunaikinimo rizika. Palikite kuo greičiau. Neapsaugaukite ilgais laikais tarpais tarp priešo atakų. -zone.nuclearComplex.description = Buvusi gamykla torio gamybai ir apdirbimui, sumažinta iki griuvėsių.\n[lightgray]Atraskite Torį ir panaudojimo būdus.\n\nPriešas būna dideliais kiekiais, pastoviai besižvalgantys puolimo. -zone.fungalPass.description = Perėjimas tarp aukštų kalnų ir žemesnių, sporomis apaugusių žemių. Čia įsikūrusi nedidelė priešų žvalgybos bazė.\nSunaikinkite ją.\nNaudokite Dagerių ir Krolerių vienetus. Sunaikinkite abu branduolius. -zone.impact0078.description = -zone.crags.description = +sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. +sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. +sector.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. +sector.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. +sector.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. +sector.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units. +sector.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build Titan units. Destroy it. Reclaim that which was lost. +sector.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. +sector.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. +sector.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. +sector.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. settings.language = Kalba settings.data = Žaidimo Duomenys @@ -537,6 +535,7 @@ settings.clearall.confirm = [scarlet]ĮSPĖJIMAS![]\nTai ištrins visus duomenis paused = [accent]< Sustabdyta > clear = Išvalyti banned = [scarlet]Užblokuota +unplaceable.sectorcaptured = [scarlet]Requires captured sector yes = Taip no = Ne info.title = Informacija @@ -582,6 +581,8 @@ blocks.reload = Šūviai per sekundę blocks.ammo = Šoviniai bar.drilltierreq = Privalomas Geresnis Grąžtas +bar.noresources = Missing Resources +bar.corereq = Core Base Required bar.drillspeed = Grąžto Greitis: {0}/s bar.pumpspeed = Pompos Greitis: {0}/s bar.efficiency = Efektyvumas: {0}% @@ -591,11 +592,12 @@ bar.poweramount = Energija: {0} bar.poweroutput = Energijos Išeiga: {0} bar.items = Daiktai: {0} bar.capacity = Talpumas: {0} +bar.unitcap = {0} {1}/{2} +bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled] bar.liquid = Skystis bar.heat = Karščiai bar.power = Jėga bar.progress = Statymo Progresas -bar.spawned = Vienetai: {0}/{1} bar.input = Įeiga bar.output = Išeiga @@ -639,6 +641,7 @@ setting.linear.name = Linijinis Filtravimas setting.hints.name = Užuominos setting.flow.name = Rodyti Resursų Srauto Geritį[scarlet] (experimental) setting.buildautopause.name = Automatinis Statybų Sustabdymas +setting.mapcenter.name = Auto Center Map To Player setting.animatedwater.name = Vandens Animacija setting.animatedshields.name = Skydų Animacija setting.antialias.name = Glodinimas[lightgray] (reikalingas perkrovimas)[] @@ -663,7 +666,6 @@ setting.effects.name = Rodyti Efektus setting.destroyedblocks.name = Rodyti Sugriautus Blokus setting.blockstatus.name = Rodyti Blokų Būseną setting.conveyorpathfinding.name = Konvejerio Paskirties Vietos Nustatymas -setting.coreselect.name = Leisti Schemų Branduolius setting.sensitivity.name = Valdymo Jautrumas setting.saveinterval.name = Išsaugojimo Intervalas setting.seconds = {0} sekundžių @@ -672,12 +674,15 @@ setting.milliseconds = {0} milisekundžių setting.fullscreen.name = Fullscreen setting.borderlesswindow.name = Langas Be Pakrasčių[lightgray] (gali reikėti perkrauti) setting.fps.name = Rodyti FPS ir Ping +setting.smoothcamera.name = Smooth Camera setting.blockselectkeys.name = Rodyti Blokų Pasirinkimo Mygtukus setting.vsync.name = VSync setting.pixelate.name = Pikseliavimas setting.minimap.name = Rodyti Mini Žemėlapį +setting.coreitems.name = Display Core Items (WIP) setting.position.name = Rodyti Žaidėjų Pozicijas setting.musicvol.name = Muzikos Garsumas +setting.atmosphere.name = Show Planet Atmosphere setting.ambientvol.name = Aplinkos Garsas setting.mutemusic.name = Nutildyti Muziką setting.sfxvol.name = SFX Garsumas @@ -700,10 +705,13 @@ keybinds.mobile = [scarlet]Dauguma valdymo mygtukų neveikia telefone. Tik papar category.general.name = Bendra category.view.name = Vaizdas category.multiplayer.name = Žaidimas Tinkle +category.blocks.name = Block Select command.attack = Pulti command.rally = Susitelkti command.retreat = Atsitraukti placement.blockselectkeys = \n[lightgray]Key: [{0}, +keybind.respawn.name = Respawn +keybind.control.name = Control Unit keybind.clear_building.name = Išvalyti Statybas keybind.press = Paspauskite mygtuką... keybind.press.axis = Paspauskite aši arba mygtuką... @@ -713,7 +721,7 @@ keybind.toggle_block_status.name = Įjungti/Išjungti Blokų Statusus keybind.move_x.name = Judėjimas X ašimi keybind.move_y.name = Judėjimas Y ašimi keybind.mouse_move.name = Sekti Pelę -keybind.dash.name = Greitas Judėjimas +keybind.boost.name = Boost keybind.schematic_select.name = Pasirinkite Regioną keybind.schematic_menu.name = Schemų Meniu keybind.schematic_flip_x.name = Apversti schemą per X ašį @@ -775,30 +783,25 @@ rules.wavetimer = Bangų Laikmatis rules.waves = Bangos rules.attack = Puolimo Režimas rules.enemyCheat = Neriboti Kompiuterio (Raudonosios Komandos) Resursai -rules.unitdrops = Vienetų Išmetimai +rules.blockhealthmultiplier = Blokų Gyvybių Daugiklis +rules.blockdamagemultiplier = Block Damage Multiplier rules.unitbuildspeedmultiplier = Vienetų Gamybos Greičio Daugiklis rules.unithealthmultiplier = Vienetų Gyvybių Daugiklis -rules.blockhealthmultiplier = Blokų Gyvybių Daugiklis -rules.playerhealthmultiplier = Žaidėjų Gyvybių Daugiklis -rules.playerdamagemultiplier = Žaidėjų Žalos Daugiklis rules.unitdamagemultiplier = Vienetų Žalos Daugiklis rules.enemycorebuildradius = Nestatymo aplink priešų branduolį spindulys:[lightgray] (blokais) -rules.respawntime = Prisikėlimo Laikas:[lightgray] (sek.) rules.wavespacing = Tarpai Tarp Bangų:[lightgray] (sek.) rules.buildcostmultiplier = Statymo Kainų Daugiklis rules.buildspeedmultiplier = Statymo Greičio Daugiklis rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier rules.waitForWaveToEnd = Laukti, kol pasibaigs banga rules.dropzoneradius = Išmetimo Zonos Spindulys:[lightgray] (blokais) -rules.respawns = Maks. Prisikėlimų Kiekis Per Bangą -rules.limitedRespawns = Riboti Prisikėlimus +rules.unitammo = Units Require Ammo rules.title.waves = Bangos -rules.title.respawns = Prisikėlimai rules.title.resourcesbuilding = Resursai ir Pastatai -rules.title.player = Žaidėjai rules.title.enemy = Priešai rules.title.unit = Vienetai rules.title.experimental = Eksperimentinis +rules.title.environment = Environment rules.lighting = Apšvietimas rules.ambientlight = Aplinkos Šviesa rules.solarpowermultiplier = Saulės Energijos Daugiklis @@ -827,7 +830,6 @@ liquid.water.name = Vanduo liquid.slag.name = Šlakas liquid.oil.name = Nafta liquid.cryofluid.name = Krio Skystis -item.corestorable = [lightgray]Įmanoma laikyti branduolyje: {0} item.explosiveness = [lightgray]Sprogstamumas: {0}% item.flammability = [lightgray]Degumas: {0}% item.radioactivity = [lightgray]Radioaktyvumas: {0}% @@ -843,6 +845,32 @@ liquid.heatcapacity = [lightgray]Karščio Talpumas: {0} liquid.viscosity = [lightgray]Klampumas: {0} liquid.temperature = [lightgray]Temperatūra: {0} +unit.dagger.name = Dagger +unit.mace.name = Mace +unit.fortress.name = Fortress +unit.nova.name = Nova +unit.pulsar.name = Pulsar +unit.quasar.name = Quasar +unit.crawler.name = Crawler +unit.atrax.name = Atrax +unit.spiroct.name = Spiroct +unit.arkyid.name = Arkyid +unit.flare.name = Flare +unit.horizon.name = Horizon +unit.zenith.name = Zenith +unit.antumbra.name = Antumbra +unit.eclipse.name = Eclipse +unit.mono.name = Mono +unit.poly.name = Poly +unit.mega.name = Mega +unit.risse.name = Risse +unit.minke.name = Minke +unit.bryde.name = Bryde +unit.alpha.name = Alpha +unit.beta.name = Beta +unit.gamma.name = Gamma + +block.parallax.name = Parallax block.cliff.name = Cliff block.sand-boulder.name = Smėlio Riedulys block.grass.name = Žolė @@ -994,17 +1022,6 @@ block.blast-mixer.name = Sprogiklio Maišytuvas block.solar-panel.name = Saulės Baterija block.solar-panel-large.name = Didelė Saulės Baterija block.oil-extractor.name = Naftos Trauktuvas -block.command-center.name = Komandų Centras -block.draug-factory.name = Draug Miner Dronų Gamykla -block.spirit-factory.name = Spirit Repair Dronų Gamykla -block.phantom-factory.name = Phantom Builder Dronų Gamykla -block.wraith-factory.name = Wraith Fighter Gamykla -block.ghoul-factory.name = Ghoul Bomber Gamykla -block.dagger-factory.name = Dagger Mech Gamykla -block.crawler-factory.name = Crawler Mech Gamykla -block.titan-factory.name = Titan Mech Gamykla -block.fortress-factory.name = Fortress Mech Gamykla -block.revenant-factory.name = Revenant Fighter Gamykla block.repair-point.name = Taisymo Taškas block.pulse-conduit.name = Pulsinis Vamzdis block.plated-conduit.name = Padengtas Vamzdis @@ -1036,6 +1053,19 @@ block.meltdown.name = Meltdown block.container.name = Talpykla block.launch-pad.name = Paleidimo Aikštelė block.launch-pad-large.name = Didelė Paleidimo Aikštelė +block.segment.name = Segment +block.ground-factory.name = Ground Factory +block.air-factory.name = Air Factory +block.naval-factory.name = Naval Factory +block.additive-reconstructor.name = Additive Reconstructor +block.multiplicative-reconstructor.name = Multiplicative Reconstructor +block.exponential-reconstructor.name = Exponential Reconstructor +block.tetrative-reconstructor.name = Tetrative Reconstructor +block.mass-conveyor.name = Mass Conveyor +block.payload-router.name = Payload Router +block.disassembler.name = Disassembler +block.silicon-crucible.name = Silicon Crucible +block.large-overdrive-projector.name = Large Overdrive Projector team.blue.name = mėlyna team.crux.name = raudona team.sharded.name = oranžinė @@ -1043,21 +1073,7 @@ team.orange.name = oranžinė team.derelict.name = apleista team.green.name = žalia team.purple.name = violetinė -unit.spirit.name = Spirit Repair Dronas -unit.draug.name = Draug Miner Dronas -unit.phantom.name = Phantom Builder Dronas -unit.dagger.name = Dagger -unit.crawler.name = Crawler -unit.titan.name = Titanas -unit.ghoul.name = Ghoul Bomber -unit.wraith.name = Wraith Fighter -unit.fortress.name = Fortress -unit.revenant.name = Revenant -unit.eruptor.name = Eruptor -unit.chaos-array.name = Chaos Array -unit.eradicator.name = Eradicator -unit.lich.name = Lich -unit.reaper.name = Reaper + tutorial.next = [lightgray] tutorial.intro = Jūs įžengėte į [scarlet] Mindustry Pradininką.[]\nNaudokite[accent] [[WASD][] norėdami judėti.\n[accent]Naudoktie vidurinį pelės klavišą[] norėdami pakeisti mastelį.\nPradėkite nuo[accent] Vario kasimo[]. Pajudėkite arčiau jo, tada spauskite ant Vario venos, kuri yra šalia jūsų, norėdami kasti varį.\n\n[accent]{0}/{1} copper tutorial.intro.mobile = Jūs įžengėte į [scarlet] Mindustry Pradininką.[]\nBraukite per ekraną norėdami judėti.\n[accent]Braukite dviemis pirštais priešingomis kryptimis[] norėdami keisti mastelį.\nPradėkite nuo[accent] Vario kasimo[]. Pradėkite nuo[accent] Vario kasimo[]. Pajudėkite arčiau jo, tada spauskite ant Vario venos, kuri yra šalia jūsų, norėdami kasti varį.\n\n[accent]{0}/{1} copper @@ -1100,17 +1116,7 @@ liquid.water.description = Naudingiausias skystis. Dažniausiai naudojamas įren liquid.slag.description = Įvairių rūšių metalai susilydę tarpusavyję. Gali būti atskirti į sudedamasias medžiagas arba išpurkšti ant priešų. liquid.oil.description = Skystis, naudojamas pažangių medžiagų gamyboje. Gali būti konvertuota į anglį arba gali būti išpurkšta ir padegta. liquid.cryofluid.description = Inertiškas, neėsdinantis skystis gaminamas iš vandens ir titano. Atlaiko ypač didelį karštį. Plačiai naudojamas kaip aušinimo skystis. -unit.draug.description = Primityvus kasimo dronas. Pigus. Panaudojamas. Automatiškai kasa netoliese esantį varį ir šviną. Pristato iškastus resursus į artimiausią branduolį. -unit.spirit.description = Modifikuotas draug dronas, skirtas taisyti, o ne kasti. Automatiškai taiso zonoje esančiu sugadintus blokus. -unit.phantom.description = Pažengęs dronų vienetas. Seka žaidėjus. Padeda statybose. -unit.dagger.description = Paprasčiausias žemės vienetas. Pigus pagaminti. Galingas, kai naudojamas būriais. -unit.crawler.description = Antžeminis vienetas, kurį sudaro rėmas ir ant viršaus užrišti sprogmenys. Nelabai patvarus. Sprogsta kontaktuodamas su priešais. -unit.titan.description = Pažengęs, šarvuotas antžeminis vienetas. Puola žemę ir orą. Apginkluotas dvejais miniatiūriniais "Scorch" klasės liepsnosvaidžiais. -unit.fortress.description = Sunkiosios artilerijos vienetas. Apginkluotas dvejomis modifikuotomis "Hail" tipo patrankomis priešo struktūrų ir pajėgų užpuolimui iš tolimo atstumo. -unit.eruptor.description = Sunkusis vienetas skirtas nugriauti struktūras. Šaudo šlako srovėmis į priešo įtvirtinimus jas išlydydamas ir uždegdamas degias medžiagas. -unit.wraith.description = Greitas, smok ir bėk vienetas. Taikosi į energijos generatorius. -unit.ghoul.description = Sunkusis bombonešis. Pereina per priešo struktūras taikydamasis į kritinę infrastruktūrą. -unit.revenant.description = Sunkus, skraidantis raketų masyvas. + block.message.description = Laiko žinutę. Naudojama komunikacijai tarp sąjungininkų. block.graphite-press.description = Sukompresuoja anglies gabalus į grynas grafito plokštes. block.multi-press.description = Patobulinta grafito preso versija. Pasitelkia vandenį ir energiją greitam ir efektyviam anglies apdirbimui. @@ -1221,15 +1227,5 @@ block.ripple.description = Itin galingas artilerijos bokštas. Dideliais atstuma block.cyclone.description = Didelis bokštas puolantis, tiek žemę, tiek orą. Šaudo sprogstančius šovinius į priešus. block.spectre.description = Milžiniškas dvivamzdis bokštas. Šaudo didelius, kiaurai per šarvus einančius šovinius į taikinius esančius ant žemės ir ore. block.meltdown.description = Milžiniška lazerinė patranka. Užsikrauna ir šaudo lazerinius spindulius į aplinkinius priešus. Veikimui reikalingas aušinimo skystis. -block.command-center.description = Išduoda judėjimo komandas sąjungininkų vienetams visame žemėlapyje.\nPriverčia vienetus susitelkti, pulti priešų branduolį ir pasitraukti iki branduolio/vientų gamyklos. Kai nėra priešų branduolio, vienetai būna sargyboje, kai nustatyas puolimas. -block.draug-factory.description = Gamina kasimo dronus. -block.spirit-factory.description = Gamina pastatus taisančius dronus. -block.phantom-factory.description = Gamina pažengusius statybų donus -block.wraith-factory.description = Gamina greitus, smok-ir-bėk vienetus. -block.ghoul-factory.description = Gamina sunkiuosius bombonešius. -block.revenant-factory.description = Gamina sunkiuosius vienetus su raketomis. -block.dagger-factory.description = Gamina paprastus antžeminius vienetus. -block.crawler-factory.description = Gamina greitus spietinius susisprogdinančius vienetus. -block.titan-factory.description = Gamina pažangesnius antžeminius vienetus. -block.fortress-factory.description = Gamina antžeminius sunkiosios artilerijos vienetus. block.repair-point.description = Pastoviai gydo artimiausius netoliese esančius vienetus. +block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. diff --git a/core/assets/bundles/bundle_nl.properties b/core/assets/bundles/bundle_nl.properties index 7efb607fd5..62cb5e2b2a 100644 --- a/core/assets/bundles/bundle_nl.properties +++ b/core/assets/bundles/bundle_nl.properties @@ -106,6 +106,7 @@ mods.guide = Modding Handboek mods.report = Rapporteer Bug mods.openfolder = Open Mod Map mods.reload = Reload +mods.reloadexit = The game will now exit, to reload mods. mod.display = [gray]Mod:[orange] {0} mod.enabled = [lightgray]Aan mod.disabled = [scarlet]Uit @@ -124,6 +125,7 @@ mod.reloadrequired = [scarlet]Herladen Vereist mod.import = Importeer Mod mod.import.file = Import File mod.import.github = Importeer GitHub Mod +mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source! mod.item.remove = Dit item is onderdeel van de[accent] '{0}'[] mod. Verwijder deze eerst. mod.remove.confirm = Deze mod zal worden verwijderd. mod.author = [lightgray]Auteur:[] {0} @@ -224,7 +226,6 @@ save.new = Nieuwe Save save.overwrite = Weet je zeker dat je deze\nsave wilt overschrijven? overwrite = Overschrijf save.none = Geen saves gevonden! -saveload = [accent]Bewaren... savefail = Bewaren is mislukt! save.delete.confirm = Weet je zeker dat je deze save wilt verwijderen? save.delete = Verwijder @@ -272,6 +273,7 @@ quit.confirm.tutorial = Weet je zeker dat je weet wat je doet?\nJe kan de tutori loading = [accent]Laden... reloading = [accent]Mods herladen... saving = [accent]Opslaan... +respawn = [accent][[{0}][] to respawn in core cancelbuilding = [accent][[{0}][] om blauwdruk te verwijderen selectschematic = [accent][[{0}][] om te selecteren + kopiëren pausebuilding = [accent][[{0}][] om bouwen te pauzeren @@ -328,8 +330,9 @@ waves.never = waves.every = elke waves.waves = ronde(s) waves.perspawn = per keer +waves.shields = shields/wave waves.to = tot -waves.boss = Boss +waves.guardian = Guardian waves.preview = Voorvertoning waves.edit = Bewerk... waves.copy = Kopiër naar klembord @@ -460,6 +463,7 @@ requirement.unlock = Ontgrendel: {0} resume = Hervat zone:\n[lightgray]{0} bestwave = [lightgray]Beste ronde: {0} launch = < LANCEER > +launch.text = Launch launch.title = Lancering Sucessvol launch.next = [lightgray]volgende lanceerkans in ronde {0} launch.unable2 = [scarlet]Lanceren niet mogelijk.[] @@ -467,13 +471,13 @@ launch.confirm = Dit lanceert alle items in je core.\nJe zal niet meer terug kun launch.skip.confirm = Als je nu niet lanceert zul je moeten wachten tot de volgende mogelijkheid. uncover = Ontdek configure = Configureer startinventaris +loadout = Loadout +resources = Resources bannedblocks = Verboden Blokken addall = Voeg Alles Toe -configure.locked = [lightgray]Speel startinventaris configuratie vrij:\nronde{0}. configure.invalid = Hoeveelheid moet een getal zijn tussen 0 en {0}. zone.unlocked = [lightgray]{0} vrijgespeeld. zone.requirement.complete = Ronde {0} berijkt:\n{1} zone vrijgespeeld. -zone.config.unlocked = Startinventaris vrijgespeeld:[lightgray]\n{0} zone.resources = Vindbare grondstoffen: zone.objective = [lightgray]Doel: [accent]{0} zone.objective.survival = Overleef @@ -492,35 +496,29 @@ error.io = Netwerk I/O fout. error.any = Onbekende netwerk fout. error.bloom = Bloom aanzetten mislukt.\nJe apparaat ondersteunt het waarschijnlijk niet. -zone.groundZero.name = Grond Nul -zone.desertWastes.name = Woestijnpuin -zone.craters.name = De kraters -zone.frozenForest.name = Bevroren Bos -zone.ruinousShores.name = Vervallen Kust -zone.stainedMountains.name = Bekladde Berg -zone.desolateRift.name = Verlaten Kloof -zone.nuclearComplex.name = Vervallen Kernreactor -zone.overgrowth.name = Overgroeid -zone.tarFields.name = Teervelden -zone.saltFlats.name = Zoutvlaktes -zone.impact0078.name = Impact 0078 -zone.crags.name = Crags -zone.fungalPass.name = Schimmelpad +sector.groundZero.name = Ground Zero +sector.craters.name = The Craters +sector.frozenForest.name = Frozen Forest +sector.ruinousShores.name = Ruinous Shores +sector.stainedMountains.name = Stained Mountains +sector.desolateRift.name = Desolate Rift +sector.nuclearComplex.name = Nuclear Production Complex +sector.overgrowth.name = Overgrowth +sector.tarFields.name = Tar Fields +sector.saltFlats.name = Salt Flats +sector.fungalPass.name = Fungal Pass -zone.groundZero.description = De optimale plek om weer tot kracht te komen. Weinig gevaar. Weinig grondstoffen.\nDelf zoveel mogelijk lood en koper als je kan.\nVertrek. -zone.frozenForest.description = Ook hier, dicht bij de bergen, hebben de schimmels zich verspreid. De koude tempratuur houdt ze niet voor eeuwig tegen.\n\nBegin de industriële revolutie. Bouw fossiele generatoren. Leer hoe te repareren. -zone.desertWastes.description = Deze woestijn is groot, onvoorspelbaar, en vol met oude technologie.\nSteenkool is hier te vinden. Verbrand het om stroom op te wekken, of verwerk het tot grafiet.\n\n[lightgray]Of het hier veilig is is een tweede. -zone.saltFlats.description = Aan de randen van de woestijn liggen de zoutvlaktes. Weinig grondstoffen zijn hier te vinden.\n\nDe vijand heeft hier rantsoenen opgeslagen. Vernietig hun core. Laat niks staan. -zone.craters.description = Water heeft zich hier opgehoopt, herrinering aan de vroegere oorlog. Herover dit gebied. Delf zand. Maak glas. Pomp water in je wapens en boren om ze te koelen. -zone.ruinousShores.description = Voorbij de ruines is de kust. Lang geleden werd de kust hier verdedigd maar er is weinig van terug te vinden. Enkel de meest simpele verdedigingswerken staan nog overeind, \nGa door met uitbereiden, herontdek de verloren techniek. -zone.stainedMountains.description = Verder vanaf de kust liggen de bergen, nog niet aangetast door de schimmels.\nDelf de grote hoeveelheiden titanium titanium in het gebied en leer het te gebruiken.\n\nDe vijand is krachtig hier. Geef ze geen tijd om je te overrompelen. -zone.overgrowth.description = Dit gebied is overgroeid, dichter bij de bron van de schimmels.\nDe vijand heeft hier een uitkijkpost. Bouw dolk units. Vernietig de vijand. Herneem wat ooit verloren was. -zone.tarFields.description = De randen van een olieveld, tussen de bergen en de woestijn. Een van de weinige plekken met bruikbare olie.\nOndanks dat het verlaten is, zijn er wel krachtige vijanden in de buurt. Onderschat ze niet.\n\n[lightgray]Onderzoek wat je verder allemaal met olie kan doen. -zone.desolateRift.description = Een zeer gevaarlijk gebied. Veel grondstoffen, maar weinig ruimte. Grote kans op verwoesting. Lanceer zo snel mogelijk. Word niet overmoedig door de lange tijd tussen de rondes. -zone.nuclearComplex.description = Een voormalige installatie voor de productie en verwerking van thorium ligt er nu verlaten bij.\n[lightgray]Onderzoek thorium en de vele toepassingen ervan.\n\nDe vijand is hier aanwezig in grote getalen, constant waakzaam voor aanvallers. -zone.fungalPass.description = Een transitiegebied tussen de hogergelegen bergen en de lagergelegen, beschimmelde gebieden. Een kleine verkenningsbasis is hier gepositioneerd.\nVernietig het.\nGebruik Dolk en Kruiper units. Maak de twee cores onbruikbaar. -zone.impact0078.description = -zone.crags.description = +sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. +sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. +sector.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. +sector.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. +sector.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. +sector.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units. +sector.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build Titan units. Destroy it. Reclaim that which was lost. +sector.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. +sector.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. +sector.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. +sector.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. settings.language = Taal settings.data = Game Data @@ -537,6 +535,7 @@ settings.clearall.confirm = [scarlet]WAARSCHUWING![]\nDit verwijderd alle data, paused = [accent]< Gepauzeerd > clear = Wis banned = [scarlet]Verbannen +unplaceable.sectorcaptured = [scarlet]Requires captured sector yes = Ja no = Nee info.title = Informatie @@ -582,6 +581,8 @@ blocks.reload = Schoten/Seconde blocks.ammo = Ammunitie bar.drilltierreq = Betere miner nodig +bar.noresources = Missing Resources +bar.corereq = Core Base Required bar.drillspeed = Mining Snelheid: {0}/s bar.pumpspeed = Pompsnelheid: {0}/s bar.efficiency = Rendement: {0}% @@ -591,11 +592,12 @@ bar.poweramount = Stroom: {0} bar.poweroutput = Stroom Output: {0} bar.items = Items: {0} bar.capacity = Capaciteit: {0} +bar.unitcap = {0} {1}/{2} +bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled] bar.liquid = Vloeistof bar.heat = Warmte bar.power = Stroom bar.progress = Bouw Voortgang -bar.spawned = Units: {0}/{1} bar.input = Input bar.output = Output @@ -639,6 +641,7 @@ setting.linear.name = Linear Filtering setting.hints.name = Hints setting.flow.name = Display Resource Flow Rate[scarlet] (experimental) setting.buildautopause.name = Pauzeer Bouw Automatisch +setting.mapcenter.name = Auto Center Map To Player setting.animatedwater.name = Animeer Water setting.animatedshields.name = Animeer Schilden setting.antialias.name = Antialias[lightgray] (herstart vereist)[] @@ -663,7 +666,6 @@ setting.effects.name = Toon Effecten setting.destroyedblocks.name = Toon Vernietigde Blokken setting.blockstatus.name = Display Block Status setting.conveyorpathfinding.name = Lopendeband Plaats Hulp -setting.coreselect.name = Sta cores toe in ontwerpen setting.sensitivity.name = Gevoeligheid Controller setting.saveinterval.name = Autosave Interval setting.seconds = {0} Seconden @@ -672,12 +674,15 @@ setting.milliseconds = {0} millisecondes setting.fullscreen.name = Volledig scherm setting.borderlesswindow.name = Borderless Venster[lightgray] (wellicht herstart vereist) setting.fps.name = Show FPS +setting.smoothcamera.name = Smooth Camera setting.blockselectkeys.name = Toon Blok Selectie Toetscombinaties setting.vsync.name = VSync setting.pixelate.name = Pixelate [lightgray](mogelijk verminderde performance) setting.minimap.name = Toon Minimap +setting.coreitems.name = Display Core Items (WIP) setting.position.name = Toon Speler Posities setting.musicvol.name = Muziek Volume +setting.atmosphere.name = Show Planet Atmosphere setting.ambientvol.name = Achtergronds Volume setting.mutemusic.name = Demp Muziek setting.sfxvol.name = SFX Volume @@ -700,10 +705,13 @@ keybinds.mobile = [scarlet]De meeste keybinds werken niet voor mobiel. Enkel sta category.general.name = Algemeen category.view.name = Toon category.multiplayer.name = Multiplayer +category.blocks.name = Block Select command.attack = Val aan command.rally = Groepeer command.retreat = Terugtrekken placement.blockselectkeys = \n[lightgray]Toets: [{0}, +keybind.respawn.name = Respawn +keybind.control.name = Control Unit keybind.clear_building.name = Stop met bouwen keybind.press = Druk op een toets... keybind.press.axis = Druk of swipe een toets... @@ -713,7 +721,7 @@ keybind.toggle_block_status.name = Toggle Block Statuses keybind.move_x.name = Beweeg x keybind.move_y.name = Beweeg y keybind.mouse_move.name = Volg Muis -keybind.dash.name = Vlieg +keybind.boost.name = Boost keybind.schematic_select.name = Selecteer gebied keybind.schematic_menu.name = Ontwerp Menu keybind.schematic_flip_x.name = Spiegel ontwerp X @@ -775,30 +783,25 @@ rules.wavetimer = Ronde timer rules.waves = Rondes rules.attack = Aanval modus rules.enemyCheat = Oneindige AI grondstoffen -rules.unitdrops = Unit Drops +rules.blockhealthmultiplier = Blok Health Vermenigvulder +rules.blockdamagemultiplier = Block Damage Multiplier rules.unitbuildspeedmultiplier = Unit Spawn Snelheid Vermenigvulder rules.unithealthmultiplier = Unit Health Vermenigvulder -rules.blockhealthmultiplier = Blok Health Vermenigvulder -rules.playerhealthmultiplier = Speler Health Vermenigvulder -rules.playerdamagemultiplier = Speler Damage Vermenigvulder rules.unitdamagemultiplier = Unit Damage Vermenigvulder rules.enemycorebuildradius = Niet-Bouw Bereik Vijandelijke Cores:[lightgray] (tegels) -rules.respawntime = Herspawn Tijd:[lightgray] (sec) rules.wavespacing = Tijd Tussen Rondes:[lightgray] (sec) rules.buildcostmultiplier = Bouw kosten Vermenigvulder rules.buildspeedmultiplier = Bouw snelheid Vermenigvulder rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier rules.waitForWaveToEnd = Rondes wachten tot alles is verslagen rules.dropzoneradius = Vijandelijke Spawn Diameter:[lightgray] (tegels) -rules.respawns = Maximale Levens Per Ronde -rules.limitedRespawns = Maximale Levens +rules.unitammo = Units Require Ammo rules.title.waves = Rondes -rules.title.respawns = Respawn rules.title.resourcesbuilding = Grondstoffen & Bouwen -rules.title.player = Spelers rules.title.enemy = Tegenstanders rules.title.unit = Units rules.title.experimental = Experimenteel +rules.title.environment = Environment rules.lighting = Belichting rules.ambientlight = Mist rules.solarpowermultiplier = Solar Power Multiplier @@ -827,7 +830,6 @@ liquid.water.name = Water liquid.slag.name = Slag liquid.oil.name = Olie liquid.cryofluid.name = Koelvloeistof -item.corestorable = [lightgray]Kan in de Core: {0} item.explosiveness = [lightgray]Explosivieit: {0}% item.flammability = [lightgray]Vlambaarheid: {0}% item.radioactivity = [lightgray]Radioactiviteit: {0}% @@ -843,6 +845,32 @@ liquid.heatcapacity = [lightgray]Warmte Capaciteit: {0} liquid.viscosity = [lightgray]Viscositeit: {0} liquid.temperature = [lightgray]Tempratuur: {0} +unit.dagger.name = Dolk +unit.mace.name = Mace +unit.fortress.name = Fortress +unit.nova.name = Nova +unit.pulsar.name = Pulsar +unit.quasar.name = Quasar +unit.crawler.name = Kruiper +unit.atrax.name = Atrax +unit.spiroct.name = Spiroct +unit.arkyid.name = Arkyid +unit.flare.name = Flare +unit.horizon.name = Horizon +unit.zenith.name = Zenith +unit.antumbra.name = Antumbra +unit.eclipse.name = Eclipse +unit.mono.name = Mono +unit.poly.name = Poly +unit.mega.name = Mega +unit.risse.name = Risse +unit.minke.name = Minke +unit.bryde.name = Bryde +unit.alpha.name = Alpha +unit.beta.name = Beta +unit.gamma.name = Gamma + +block.parallax.name = Parallax block.cliff.name = Cliff block.sand-boulder.name = Zandkei block.grass.name = Gras @@ -994,17 +1022,6 @@ block.blast-mixer.name = Blast Mixer block.solar-panel.name = Zonnepaneel block.solar-panel-large.name = Groot zonnepaneel block.oil-extractor.name = Olieput -block.command-center.name = Commando centrum -block.draug-factory.name = Draug Miner Drone Factory -block.spirit-factory.name = Spirit Drone Factory -block.phantom-factory.name = Phantom Drone Factory -block.wraith-factory.name = Wraith Fighter Factory -block.ghoul-factory.name = Ghoul Bomber Factory -block.dagger-factory.name = Dagger Mech Factory -block.crawler-factory.name = Crawler Mech Factory -block.titan-factory.name = Titan Mech Factory -block.fortress-factory.name = Fortress Mech Factory -block.revenant-factory.name = Revenant Fighter Factory block.repair-point.name = Repair Point block.pulse-conduit.name = Pulse Conduit block.plated-conduit.name = Gepantserde Pijp @@ -1036,6 +1053,19 @@ block.meltdown.name = Meltdown block.container.name = Doos block.launch-pad.name = Lanceerplatform block.launch-pad-large.name = Groot Lanceerplatform +block.segment.name = Segment +block.ground-factory.name = Ground Factory +block.air-factory.name = Air Factory +block.naval-factory.name = Naval Factory +block.additive-reconstructor.name = Additive Reconstructor +block.multiplicative-reconstructor.name = Multiplicative Reconstructor +block.exponential-reconstructor.name = Exponential Reconstructor +block.tetrative-reconstructor.name = Tetrative Reconstructor +block.mass-conveyor.name = Mass Conveyor +block.payload-router.name = Payload Router +block.disassembler.name = Disassembler +block.silicon-crucible.name = Silicon Crucible +block.large-overdrive-projector.name = Large Overdrive Projector team.blue.name = blauw team.crux.name = rood team.sharded.name = oranje @@ -1043,21 +1073,7 @@ team.orange.name = oranje team.derelict.name = wees team.green.name = groen team.purple.name = paars -unit.spirit.name = Spirit Drone -unit.draug.name = Draug Miner Drone -unit.phantom.name = Phantom Drone -unit.dagger.name = Dolk -unit.crawler.name = Kruiper -unit.titan.name = Titan -unit.ghoul.name = Ghoul Bomber -unit.wraith.name = Wraith Fighter -unit.fortress.name = Fortress -unit.revenant.name = Revenant -unit.eruptor.name = Eruptor -unit.chaos-array.name = Chaos Array -unit.eradicator.name = Eradicator -unit.lich.name = Lich -unit.reaper.name = Reaper + tutorial.next = [lightgray] tutorial.intro = Welkom bij de[scarlet] Mindustry Tutorial.[]\nBegin met het[accent] mijnen van koper[]. Klik op een vakje met koper om het te mijnen.\n\n[accent]{0}/{1} koper tutorial.intro.mobile = Welkom bij de[scarlet] Mindustry Tutorial.[]\nSleep over het scherm om te bewegen.\n[accent]Knijp met 2 vingers [] om in en uit te zoomen.\nBegin met het[accent] mijnen van koper[]. Beweeg dichterbij, en klik er dan op.\n\n[accent]{0}/{1} koper @@ -1100,17 +1116,7 @@ liquid.water.description = Commonly used for cooling machines and waste processi liquid.slag.description = Various different types of molten metal mixed together. Can be separated into its constituent minerals, or sprayed at enemy units as a weapon. liquid.oil.description = Can be burnt, exploded or used as a coolant. liquid.cryofluid.description = The most efficient liquid for cooling things down. -unit.draug.description = A primitive mining drone. Cheap to produce. Expendable. Automatically mines copper and lead in the vicinity. Delivers mined resources to the closest core. -unit.spirit.description = The starter drone unit. Spawns in the core by default. Automatically mines ores and repairs blocks. -unit.phantom.description = An advanced drone unit. Automatically mines ores and repairs blocks. Significantly more effective than a spirit drone. -unit.dagger.description = A basic ground unit. Useful in swarms. -unit.crawler.description = A ground unit consisting of a stripped-down frame with high explosives strapped on top. Not particular durable. Explodes on contact with enemies. -unit.titan.description = An advanced, armored ground unit. Attacks both ground and air targets. -unit.fortress.description = A heavy artillery ground unit. -unit.eruptor.description = A heavy mech designed to take down structures. Fires a stream of slag at enemy fortifications, melting them and setting volatiles on fire. -unit.wraith.description = A fast, hit-and-run interceptor unit. -unit.ghoul.description = A heavy carpet bomber. -unit.revenant.description = A heavy, hovering missile array. + block.message.description = Stores a message. Used for communication between allies. block.graphite-press.description = Compresses chunks of coal into pure sheets of graphite. block.multi-press.description = An upgraded version of the graphite press. Employs water and power to process coal quickly and efficiently. @@ -1188,9 +1194,9 @@ block.thermal-generator.description = Generates power when placed in hot locatio block.turbine-generator.description = More efficient than a combustion generator, but requires additional water. block.differential-generator.description = Generates large amounts of energy. Utilizes the temperature difference between cryofluid and burning pyratite. block.rtg-generator.description = A radioisotope thermoelectric generator which does not require cooling but provides less power than a thorium reactor. -block.solar-panel.description = Provides a small amount of power from the sun. -block.solar-panel-large.description = Provides much better power supply than a standard solar panel, but is also much more expensive to build. -block.thorium-reactor.description = Generates huge amounts of power from highly radioactive thorium. Requires constant cooling. Will explode violently if insufficient amounts of coolant are supplied. Power output depends on fullness, with base power generated at half capacity. +block.solar-panel.description = Genereert een klein beetje zonne-energie. +block.solar-panel-large.description = Genereert veel meer zonne-energie dan een normale zonnepaneel, maar is ook veel duurder om te bouwen. +block.thorium-reactor.description = Genereert super veel elektriciteit van radioactief thorium. Moet constant gekoeld worden. Als het oververhit raakt explodeert het met een grote knal. Genereert meer energie naarmate het voller zit, met normale productie op halve capaciteit. block.impact-reactor.description = An advanced generator, capable of creating massive amounts of power at peak efficiency. Requires a significant power input to kickstart the process. block.mechanical-drill.description = A cheap drill. When placed on appropriate tiles, outputs items at a slow pace indefinitely. block.pneumatic-drill.description = An improved drill which is faster and able to process harder materials by making use of air pressure. @@ -1221,15 +1227,5 @@ block.ripple.description = A large artillery turret which fires several shots si block.cyclone.description = A large rapid fire turret. block.spectre.description = A large turret which shoots two powerful bullets at once. block.meltdown.description = A large turret which shoots powerful long-range beams. -block.command-center.description = Issues movement commands to allied units across the map.\nCauses units to patrol, attack an enemy core or retreat to the core/factory. When no enemy core is present, units will default to patrolling under the attack command. -block.draug-factory.description = Produces Draug mining drones. -block.spirit-factory.description = Produces light drones which mine ore and repair blocks. -block.phantom-factory.description = Produces advanced drone units which are significantly more effective than a spirit drone. -block.wraith-factory.description = Produces fast, hit-and-run interceptor units. -block.ghoul-factory.description = Produces heavy carpet bombers. -block.revenant-factory.description = Produces heavy laser air units. -block.dagger-factory.description = Produces basic ground units. -block.crawler-factory.description = Produces fast self-destructing swarm units. -block.titan-factory.description = Produces advanced, armored ground units. -block.fortress-factory.description = Produces heavy artillery ground units. block.repair-point.description = Continuously heals the closest damaged unit in its vicinity. +block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. diff --git a/core/assets/bundles/bundle_nl_BE.properties b/core/assets/bundles/bundle_nl_BE.properties index a8cdad0f7c..ca1c07dda9 100644 --- a/core/assets/bundles/bundle_nl_BE.properties +++ b/core/assets/bundles/bundle_nl_BE.properties @@ -106,6 +106,7 @@ mods.guide = Handleiding tot Modding mods.report = Bug Rapporteren mods.openfolder = Open Mod Folder mods.reload = Reload +mods.reloadexit = The game will now exit, to reload mods. mod.display = [gray]Mod:[orange] {0} mod.enabled = [lightgray]Ingeschakeld mod.disabled = [scarlet]Uitgeschakeld @@ -124,6 +125,7 @@ mod.reloadrequired = [scarlet]Herladen Vereist mod.import = Importeer Mod mod.import.file = Import File mod.import.github = Importeer GitHub Mod +mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source! mod.item.remove = This item is part of the[accent] '{0}'[] mod. To remove it, uninstall that mod. mod.remove.confirm = Deze mod zal worden verwijderd. mod.author = [lightgray]Auteur:[] {0} @@ -224,7 +226,6 @@ save.new = Nieuwe save save.overwrite = Ben je zeker dat je deze save\nwilt overschrijven? overwrite = Vervang save.none = Geen saves gevonden! -saveload = [accent]Opslaan... savefail = Opslaan mislukt! save.delete.confirm = Ben je zeker dat je deze save wil verwijderen? save.delete = Verwijder @@ -272,6 +273,7 @@ quit.confirm.tutorial = Ben je zeker dat je nu weet wat je doet?\nDe tutorial ka loading = [accent]Aan het laden... reloading = [accent]Mods Herladen... saving = [accent]Aan het opslaan... +respawn = [accent][[{0}][] to respawn in core cancelbuilding = [accent][[{0}][] om het plan te annuleren selectschematic = [accent][[{0}][] om te selecter+kopieren pausebuilding = [accent][[{0}][] om het bouwen te pauseren @@ -328,8 +330,9 @@ waves.never = waves.every = every waves.waves = wave(s) waves.perspawn = per spawn +waves.shields = shields/wave waves.to = to -waves.boss = Boss +waves.guardian = Guardian waves.preview = Preview waves.edit = Edit... waves.copy = Copy to Clipboard @@ -460,6 +463,7 @@ requirement.unlock = Unlock {0} resume = Resume Zone:\n[lightgray]{0} bestwave = [lightgray]Best Wave: {0} launch = < LAUNCH > +launch.text = Launch launch.title = Launch Successful launch.next = [lightgray]next opportunity at wave {0} launch.unable2 = [scarlet]Unable to LAUNCH.[] @@ -467,13 +471,13 @@ launch.confirm = This will launch all resources in your core.\nYou will not be a launch.skip.confirm = If you skip now, you will not be able to launch until later waves. uncover = Uncover configure = Configure Loadout +loadout = Loadout +resources = Resources bannedblocks = Banned Blocks addall = Add All -configure.locked = [lightgray]Unlock configuring loadout:\nWave {0}. configure.invalid = Amount must be a number between 0 and {0}. zone.unlocked = [lightgray]{0} unlocked. zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met. -zone.config.unlocked = Loadout unlocked:[lightgray]\n{0} zone.resources = Resources Detected: zone.objective = [lightgray]Objective: [accent]{0} zone.objective.survival = Survive @@ -492,35 +496,29 @@ error.io = Network I/O error. error.any = Unknown network error. error.bloom = Failed to initialize bloom.\nYour device may not support it. -zone.groundZero.name = Ground Zero -zone.desertWastes.name = Desert Wastes -zone.craters.name = The Craters -zone.frozenForest.name = Frozen Forest -zone.ruinousShores.name = Ruinous Shores -zone.stainedMountains.name = Stained Mountains -zone.desolateRift.name = Desolate Rift -zone.nuclearComplex.name = Nuclear Production Complex -zone.overgrowth.name = Overgrowth -zone.tarFields.name = Tar Fields -zone.saltFlats.name = Salt Flats -zone.impact0078.name = Impact 0078 -zone.crags.name = Crags -zone.fungalPass.name = Fungal Pass +sector.groundZero.name = Ground Zero +sector.craters.name = The Craters +sector.frozenForest.name = Frozen Forest +sector.ruinousShores.name = Ruinous Shores +sector.stainedMountains.name = Stained Mountains +sector.desolateRift.name = Desolate Rift +sector.nuclearComplex.name = Nuclear Production Complex +sector.overgrowth.name = Overgrowth +sector.tarFields.name = Tar Fields +sector.saltFlats.name = Salt Flats +sector.fungalPass.name = Fungal Pass -zone.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. -zone.frozenForest.description = Even here, closer to mountains, the spores have spread. The fridgid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. -zone.desertWastes.description = These wastes are vast, unpredictable, and criss-crossed with derelict sector structures.\nCoal is present in the region. Burn it for power, or synthesize graphite.\n\n[lightgray]This landing location cannot be guaranteed. -zone.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. -zone.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. -zone.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. -zone.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units. -zone.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build dagger units. Destroy it. Reclaim that which was lost. -zone.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. -zone.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. -zone.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. -zone.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. -zone.impact0078.description = -zone.crags.description = +sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. +sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. +sector.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. +sector.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. +sector.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. +sector.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units. +sector.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build Titan units. Destroy it. Reclaim that which was lost. +sector.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. +sector.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. +sector.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. +sector.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. settings.language = Language settings.data = Game Data @@ -537,6 +535,7 @@ settings.clearall.confirm = [scarlet]WARNING![]\nThis will clear all data, inclu paused = [accent]< Paused > clear = Clear banned = [scarlet]Banned +unplaceable.sectorcaptured = [scarlet]Requires captured sector yes = Yes no = No info.title = Info @@ -582,6 +581,8 @@ blocks.reload = Shots/Second blocks.ammo = Ammo bar.drilltierreq = Better Drill Required +bar.noresources = Missing Resources +bar.corereq = Core Base Required bar.drillspeed = Drill Speed: {0}/s bar.pumpspeed = Pump Speed: {0}/s bar.efficiency = Efficiency: {0}% @@ -591,11 +592,12 @@ bar.poweramount = Power: {0} bar.poweroutput = Power Output: {0} bar.items = Items: {0} bar.capacity = Capacity: {0} +bar.unitcap = {0} {1}/{2} +bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled] bar.liquid = Liquid bar.heat = Heat bar.power = Power bar.progress = Build Progress -bar.spawned = Units: {0}/{1} bar.input = Input bar.output = Output @@ -639,6 +641,7 @@ setting.linear.name = Linear Filtering setting.hints.name = Hints setting.flow.name = Display Resource Flow Rate[scarlet] (experimental) setting.buildautopause.name = Auto-Pause Building +setting.mapcenter.name = Auto Center Map To Player setting.animatedwater.name = Animated Water setting.animatedshields.name = Animated Shields setting.antialias.name = Antialias[lightgray] (requires restart)[] @@ -663,7 +666,6 @@ setting.effects.name = Display Effects setting.destroyedblocks.name = Display Destroyed Blocks setting.blockstatus.name = Display Block Status setting.conveyorpathfinding.name = Conveyor Placement Pathfinding -setting.coreselect.name = Allow Schematic Cores setting.sensitivity.name = Controller Sensitivity setting.saveinterval.name = Autosave Interval setting.seconds = {0} Seconds @@ -672,12 +674,15 @@ setting.milliseconds = {0} milliseconds setting.fullscreen.name = Fullscreen setting.borderlesswindow.name = Borderless Window[lightgray] (may require restart) setting.fps.name = Show FPS +setting.smoothcamera.name = Smooth Camera setting.blockselectkeys.name = Show Block Select Keys setting.vsync.name = VSync setting.pixelate.name = Pixelate [lightgray](may decrease performance, disables animations) setting.minimap.name = Show Minimap +setting.coreitems.name = Display Core Items (WIP) setting.position.name = Show Player Position setting.musicvol.name = Music Volume +setting.atmosphere.name = Show Planet Atmosphere setting.ambientvol.name = Ambient Volume setting.mutemusic.name = Mute Music setting.sfxvol.name = SFX Volume @@ -700,10 +705,13 @@ keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only category.general.name = General category.view.name = View category.multiplayer.name = Multiplayer +category.blocks.name = Block Select command.attack = Attack command.rally = Rally command.retreat = Retreat placement.blockselectkeys = \n[lightgray]Key: [{0}, +keybind.respawn.name = Respawn +keybind.control.name = Control Unit keybind.clear_building.name = Clear Building keybind.press = Press a key... keybind.press.axis = Press an axis or key... @@ -713,7 +721,7 @@ keybind.toggle_block_status.name = Toggle Block Statuses keybind.move_x.name = Move x keybind.move_y.name = Move y keybind.mouse_move.name = Follow Mouse -keybind.dash.name = Dash +keybind.boost.name = Boost keybind.schematic_select.name = Select Region keybind.schematic_menu.name = Schematic Menu keybind.schematic_flip_x.name = Flip Schematic X @@ -775,30 +783,25 @@ rules.wavetimer = Wave Timer rules.waves = Waves rules.attack = Attack Mode rules.enemyCheat = Infinite AI (Red Team) Resources -rules.unitdrops = Unit Drops +rules.blockhealthmultiplier = Block Health Multiplier +rules.blockdamagemultiplier = Block Damage Multiplier rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier rules.unithealthmultiplier = Unit Health Multiplier -rules.blockhealthmultiplier = Block Health Multiplier -rules.playerhealthmultiplier = Player Health Multiplier -rules.playerdamagemultiplier = Player Damage Multiplier rules.unitdamagemultiplier = Unit Damage Multiplier rules.enemycorebuildradius = Enemy Core No-Build Radius:[lightgray] (tiles) -rules.respawntime = Respawn Time:[lightgray] (sec) rules.wavespacing = Wave Spacing:[lightgray] (sec) rules.buildcostmultiplier = Build Cost Multiplier rules.buildspeedmultiplier = Build Speed Multiplier rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier rules.waitForWaveToEnd = Waves wait for enemies rules.dropzoneradius = Drop Zone Radius:[lightgray] (tiles) -rules.respawns = Max respawns per wave -rules.limitedRespawns = Limit Respawns +rules.unitammo = Units Require Ammo rules.title.waves = Waves -rules.title.respawns = Respawns rules.title.resourcesbuilding = Resources & Building -rules.title.player = Players rules.title.enemy = Enemies rules.title.unit = Units rules.title.experimental = Experimental +rules.title.environment = Environment rules.lighting = Lighting rules.ambientlight = Ambient Light rules.solarpowermultiplier = Solar Power Multiplier @@ -827,7 +830,6 @@ liquid.water.name = Water liquid.slag.name = Slag liquid.oil.name = Oil liquid.cryofluid.name = Cryofluid -item.corestorable = [lightgray]Storable in Core: {0} item.explosiveness = [lightgray]Explosiveness: {0}% item.flammability = [lightgray]Flammability: {0}% item.radioactivity = [lightgray]Radioactivity: {0}% @@ -843,6 +845,32 @@ liquid.heatcapacity = [lightgray]Heat Capacity: {0} liquid.viscosity = [lightgray]Viscosity: {0} liquid.temperature = [lightgray]Temperature: {0} +unit.dagger.name = Dagger +unit.mace.name = Mace +unit.fortress.name = Fortress +unit.nova.name = Nova +unit.pulsar.name = Pulsar +unit.quasar.name = Quasar +unit.crawler.name = Crawler +unit.atrax.name = Atrax +unit.spiroct.name = Spiroct +unit.arkyid.name = Arkyid +unit.flare.name = Flare +unit.horizon.name = Horizon +unit.zenith.name = Zenith +unit.antumbra.name = Antumbra +unit.eclipse.name = Eclipse +unit.mono.name = Mono +unit.poly.name = Poly +unit.mega.name = Mega +unit.risse.name = Risse +unit.minke.name = Minke +unit.bryde.name = Bryde +unit.alpha.name = Alpha +unit.beta.name = Beta +unit.gamma.name = Gamma + +block.parallax.name = Parallax block.cliff.name = Cliff block.sand-boulder.name = Sand Boulder block.grass.name = Grass @@ -994,17 +1022,6 @@ block.blast-mixer.name = Blast Mixer block.solar-panel.name = Solar Panel block.solar-panel-large.name = Large Solar Panel block.oil-extractor.name = Oil Extractor -block.command-center.name = Command Center -block.draug-factory.name = Draug Miner Drone Factory -block.spirit-factory.name = Spirit Drone Factory -block.phantom-factory.name = Phantom Drone Factory -block.wraith-factory.name = Wraith Fighter Factory -block.ghoul-factory.name = Ghoul Bomber Factory -block.dagger-factory.name = Dagger Mech Factory -block.crawler-factory.name = Crawler Mech Factory -block.titan-factory.name = Titan Mech Factory -block.fortress-factory.name = Fortress Mech Factory -block.revenant-factory.name = Revenant Fighter Factory block.repair-point.name = Repair Point block.pulse-conduit.name = Pulse Conduit block.plated-conduit.name = Plated Conduit @@ -1036,6 +1053,19 @@ block.meltdown.name = Meltdown block.container.name = Container block.launch-pad.name = Launch Pad block.launch-pad-large.name = Large Launch Pad +block.segment.name = Segment +block.ground-factory.name = Ground Factory +block.air-factory.name = Air Factory +block.naval-factory.name = Naval Factory +block.additive-reconstructor.name = Additive Reconstructor +block.multiplicative-reconstructor.name = Multiplicative Reconstructor +block.exponential-reconstructor.name = Exponential Reconstructor +block.tetrative-reconstructor.name = Tetrative Reconstructor +block.mass-conveyor.name = Mass Conveyor +block.payload-router.name = Payload Router +block.disassembler.name = Disassembler +block.silicon-crucible.name = Silicon Crucible +block.large-overdrive-projector.name = Large Overdrive Projector team.blue.name = blue team.crux.name = red team.sharded.name = orange @@ -1043,21 +1073,7 @@ team.orange.name = orange team.derelict.name = derelict team.green.name = green team.purple.name = purple -unit.spirit.name = Spirit Drone -unit.draug.name = Draug Miner Drone -unit.phantom.name = Phantom Drone -unit.dagger.name = Dagger -unit.crawler.name = Crawler -unit.titan.name = Titan -unit.ghoul.name = Ghoul Bomber -unit.wraith.name = Wraith Fighter -unit.fortress.name = Fortress -unit.revenant.name = Revenant -unit.eruptor.name = Eruptor -unit.chaos-array.name = Chaos Array -unit.eradicator.name = Eradicator -unit.lich.name = Lich -unit.reaper.name = Reaper + tutorial.next = [lightgray] tutorial.intro = You have entered the[scarlet] Mindustry Tutorial.[]\nBegin by[accent] mining copper[]. Tap a copper ore vein near your core to do this.\n\n[accent]{0}/{1} copper tutorial.intro.mobile = You have entered the[scarlet] Mindustry Tutorial.[]\nSwipe the screen to move.\n[accent]Pinch with 2 fingers [] to zoom in and out.\nBegin by[accent] mining copper[]. Move close to it, then tap a copper ore vein near your core to do this.\n\n[accent]{0}/{1} copper @@ -1100,17 +1116,7 @@ liquid.water.description = Commonly used for cooling machines and waste processi liquid.slag.description = Various different types of molten metal mixed together. Can be separated into its constituent minerals, or sprayed at enemy units as a weapon. liquid.oil.description = Can be burnt, exploded or used as a coolant. liquid.cryofluid.description = The most efficient liquid for cooling things down. -unit.draug.description = A primitive mining drone. Cheap to produce. Expendable. Automatically mines copper and lead in the vicinity. Delivers mined resources to the closest core. -unit.spirit.description = The starter drone unit. Spawns in the core by default. Automatically mines ores and repairs blocks. -unit.phantom.description = An advanced drone unit. Automatically mines ores and repairs blocks. Significantly more effective than a spirit drone. -unit.dagger.description = A basic ground unit. Useful in swarms. -unit.crawler.description = A ground unit consisting of a stripped-down frame with high explosives strapped on top. Not particular durable. Explodes on contact with enemies. -unit.titan.description = An advanced, armored ground unit. Attacks both ground and air targets. -unit.fortress.description = A heavy artillery ground unit. -unit.eruptor.description = A heavy mech designed to take down structures. Fires a stream of slag at enemy fortifications, melting them and setting volatiles on fire. -unit.wraith.description = A fast, hit-and-run interceptor unit. -unit.ghoul.description = A heavy carpet bomber. -unit.revenant.description = A heavy, hovering missile array. + block.message.description = Stores a message. Used for communication between allies. block.graphite-press.description = Compresses chunks of coal into pure sheets of graphite. block.multi-press.description = An upgraded version of the graphite press. Employs water and power to process coal quickly and efficiently. @@ -1221,15 +1227,5 @@ block.ripple.description = A large artillery turret which fires several shots si block.cyclone.description = A large rapid fire turret. block.spectre.description = A large turret which shoots two powerful bullets at once. block.meltdown.description = A large turret which shoots powerful long-range beams. -block.command-center.description = Issues movement commands to allied units across the map.\nCauses units to patrol, attack an enemy core or retreat to the core/factory. When no enemy core is present, units will default to patrolling under the attack command. -block.draug-factory.description = Produces Draug mining drones. -block.spirit-factory.description = Produces light drones which mine ore and repair blocks. -block.phantom-factory.description = Produces advanced drone units which are significantly more effective than a spirit drone. -block.wraith-factory.description = Produces fast, hit-and-run interceptor units. -block.ghoul-factory.description = Produces heavy carpet bombers. -block.revenant-factory.description = Produces heavy laser air units. -block.dagger-factory.description = Produces basic ground units. -block.crawler-factory.description = Produces fast self-destructing swarm units. -block.titan-factory.description = Produces advanced, armored ground units. -block.fortress-factory.description = Produces heavy artillery ground units. block.repair-point.description = Continuously heals the closest damaged unit in its vicinity. +block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. diff --git a/core/assets/bundles/bundle_pl.properties b/core/assets/bundles/bundle_pl.properties index e9fc5c3bdf..6ca96602d0 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -106,6 +106,7 @@ mods.guide = Poradnik do modów mods.report = Zgłoś Błąd mods.openfolder = Otwórz folder z modami mods.reload = Przeładuj +mods.reloadexit = The game will now exit, to reload mods. mod.display = [gray]Mod:[orange] {0} mod.enabled = [lightgray]Włączony mod.disabled = [scarlet]Wyłączony @@ -124,6 +125,7 @@ mod.reloadrequired = [scarlet]Wymagany restart mod.import = Importuj Mod mod.import.file = Importuj Plik mod.import.github = Importuj mod z GitHuba +mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source! mod.item.remove = Ten przedmiot jest częścią moda[accent] '{0}'[]. Aby usunąć go, odinstaluj modyfikację. mod.remove.confirm = Ten mod zostanie usunięty. mod.author = [lightgray]Autor:[] {0} @@ -224,7 +226,6 @@ save.new = Nowy zapis save.overwrite = Czy na pewno chcesz nadpisać zapis gry? overwrite = Nadpisz save.none = Nie znaleziono zapisów gry! -saveload = Zapisywanie... savefail = Nie udało się zapisać gry! save.delete.confirm = Czy na pewno chcesz usunąć ten zapis gry? save.delete = Usuń @@ -272,6 +273,7 @@ quit.confirm.tutorial = Jesteś pewien?\nSamouczek może zostać powtórzony w[a loading = [accent]Ładowanie... reloading = [accent]Przeładowywanie Modów... saving = [accent]Zapisywanie... +respawn = [accent][[{0}][] to respawn in core cancelbuilding = [accent][[{0}][] by wyczyścić plan selectschematic = [accent][[{0}][] by wybrać+skopiować pausebuilding = [accent][[{0}][] by wstrzymać budowę @@ -328,8 +330,9 @@ waves.never = waves.every = co waves.waves = fal(e) waves.perspawn = co pojawienie +waves.shields = shields/wave waves.to = do -waves.boss = Boss +waves.guardian = Guardian waves.preview = Podgląd waves.edit = Edytuj... waves.copy = Kopiuj Do Schowka @@ -460,6 +463,7 @@ requirement.unlock = Odblokuj {0} resume = Kontynuuj Strefę:\n[lightgray]{0} bestwave = [lightgray]Najwyższa fala: {0} launch = < WYSTRZEL > +launch.text = Launch launch.title = Wystrzelenie udane launch.next = [lightgray]Następna okazja przy fali {0} launch.unable2 = [scarlet]WYSTRZELENIE niedostępne.[] @@ -467,13 +471,13 @@ launch.confirm = Spowoduje to wystrzelenie wszystkich surowców w rdzeniu.\nNie launch.skip.confirm = Jeśli teraz przejdziesz do kolejnej fali, nie będziesz miał możliwości wystrzelenia do czasu pokonania dalszych fal. uncover = Odkryj configure = Skonfiguruj Ładunek +loadout = Loadout +resources = Resources bannedblocks = Zabronione bloki addall = Dodaj wszystkie -configure.locked = [lightgray]Dotrzyj do fali {0},\naby skonfigurować ładunek. configure.invalid = Ilość musi być liczbą pomiędzy 0 a {0}. zone.unlocked = [lightgray]Strefa {0} odblokowana. zone.requirement.complete = Fala {0} osiągnięta:\n{1} Wymagania strefy zostały spełnione. -zone.config.unlocked = Ładunek odblokowany:[lightgray]\n{0} zone.resources = [lightgray]Wykryte Zasoby: zone.objective = [lightgray]Cel: [accent]{0} zone.objective.survival = Przeżyj @@ -492,35 +496,29 @@ error.io = Błąd sieciowy I/O. error.any = Nieznany błąd sieci. error.bloom = Nie udało się załadować bloom.\nTwoje urządzenie może nie wspierać tej funkcji. -zone.groundZero.name = Wybuch Lądowy -zone.desertWastes.name = Pustynne Pustkowia -zone.craters.name = Kratery -zone.frozenForest.name = Zamrożony Las -zone.ruinousShores.name = Zniszczone Przybrzeża -zone.stainedMountains.name = Zabarwione Góry -zone.desolateRift.name = Ponura Szczelina -zone.nuclearComplex.name = Centrum Wyrobu Jądrowego -zone.overgrowth.name = Przerośnięty Las -zone.tarFields.name = Pola Smołowe -zone.saltFlats.name = Solne Równiny -zone.impact0078.name = Uderzenie 0078 -zone.crags.name = Urwisko -zone.fungalPass.name = Grzybowa Przełęcz +sector.groundZero.name = Ground Zero +sector.craters.name = The Craters +sector.frozenForest.name = Frozen Forest +sector.ruinousShores.name = Ruinous Shores +sector.stainedMountains.name = Stained Mountains +sector.desolateRift.name = Desolate Rift +sector.nuclearComplex.name = Nuclear Production Complex +sector.overgrowth.name = Overgrowth +sector.tarFields.name = Tar Fields +sector.saltFlats.name = Salt Flats +sector.fungalPass.name = Fungal Pass -zone.groundZero.description = Optymalna lokalizacja, aby rozpocząć jeszcze raz. Niewielkie zagrożenie. Niewiele zasobów.\nZbierz jak najwięcej miedzi i ołowiu, tyle ile jest możliwe.\nPrzejdź do następnej strefy jak najszybciej. -zone.frozenForest.description = Nawet tutaj, bliżej gór, zarodniki rozprzestrzeniły się. Niskie temperatury nie mogą ich zatrzymać na zawsze.\n\nRozpocznij przedsięwzięcie od władzy. Buduj generatory spalinowe. Naucz się korzystać z naprawiaczy. -zone.desertWastes.description = Te pustkowia są rozległe, nieprzewidywalne, i znajdują się na nich opuszczone struktury.\nW tym regionie jest dostep do węgla. Użyj go do produkcji energii lub do stworzenia grafitu.\n\n[lightgray]Nie jest pewne gdzie znajduje się miejsce lądowania. -zone.saltFlats.description = Na obrzeżach pustyni spoczywają Solne Równiny. Można tu znaleźć niewiele surowców.\n\nWrogowie zbudowali tu bazę składującą surowce. Zniszcz ich rdzeń. Zniszcz wszystko co stanie ci na drodze. -zone.craters.description = W tym kraterze zebrała się woda. Pozostałość dawnych wojen. Odzyskaj ten teren. Wykop piasek. Wytop metaszkło. Pompuj wodę do działek obronnych i wierteł by je schłodzić. -zone.ruinousShores.description = Za pustkowiami ciągnie się linia brzegowa. Kiedyś znajdowała się tu przybrzeżna linia obronna. Niewiele z niej zostało. Ostały się tylko podstawowe struktury obronne, z reszty został tylko złom.\nKontynuuj eksploracje. Odkryj pozostawioną tu technologię. -zone.stainedMountains.description = W głębi lądu leżą góry, jeszcze nieskażone przez zarodniki.\nWydobądź tytan, który jest obfity w tym regionie. Dowiedz się, jak z niego korzystać.\n\nObecność wroga jest tutaj większa. Nie daj im czasu na wysłanie swoich najsilniejszych jednostek. -zone.overgrowth.description = Obszar ten jest zarośnięty, bliżej źródła zarodników.\nWróg założył tu placówkę. Zbuduj jednostki Nóż. Zniszcz go. Odzyskaj to, co nam odebrano. -zone.tarFields.description = Obrzeża strefy produkcji ropy, między górami a pustynią. Jeden z niewielu obszarów z rezerwami użytecznej smoły.\nMimo że ta strefa jest opuszczona, w pobliżu znajdują się niebezpieczne siły wroga. Nie lekceważ ich.\n\n[lightgray]Jeśli to możliwe, zbadaj technologię przetwarzania oleju. -zone.desolateRift.description = Strefa wyjątkowo niebezpieczna. Obfita w zasoby ale mało miejsca. Wysokie zagrożenie. Opuść tę strefe jak najszybciej. Nie daj się zwieść długiemu odstępowi między atakami wroga. -zone.nuclearComplex.description = Dawny zakład produkcji i przetwarzania toru, zamieniony w ruinę.\n[lightgray]Zbadaj tor i jego zastosowania.\n\nWróg jest tutaj obecny w dużej ilości, nieustannie przeszukuje teren. -zone.fungalPass.description = Przejściowy obszar pomiędzy wysokimi górami a nisko znajdującymi się, ogarniętymi przez zarodniki równinami. Znajduje się tu mała postawiona przez wrogów baza zwiadowcza.\nZniszcz ją.\nUżyj jednostek Nóż i Pełzak. Zniszcz oba rdzenie. -zone.impact0078.description = -zone.crags.description = +sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. +sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. +sector.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. +sector.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. +sector.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. +sector.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units. +sector.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build Titan units. Destroy it. Reclaim that which was lost. +sector.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. +sector.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. +sector.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. +sector.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. settings.language = Język settings.data = Dane Gry @@ -537,6 +535,7 @@ settings.clearall.confirm = [scarlet]UWAGA![]\nTo wykasuje wszystkie dane, włą paused = [accent]< Wstrzymano > clear = Wyczyść banned = [scarlet]Zbanowano +unplaceable.sectorcaptured = [scarlet]Requires captured sector yes = Tak no = Nie info.title = Informacje @@ -582,6 +581,8 @@ blocks.reload = Strzałów/sekundę blocks.ammo = Amunicja bar.drilltierreq = Wymagane Lepsze Wiertło +bar.noresources = Missing Resources +bar.corereq = Core Base Required bar.drillspeed = Prędkość wiertła: {0}/s bar.pumpspeed = Prędkość pompy: {0}/s bar.efficiency = Efektywność: {0}% @@ -591,11 +592,12 @@ bar.poweramount = Moc: {0} bar.poweroutput = Wyjście mocy: {0} bar.items = Przedmiotów: {0} bar.capacity = Pojemność: {0} +bar.unitcap = {0} {1}/{2} +bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled] bar.liquid = Płyn bar.heat = Ciepło bar.power = Prąd bar.progress = Postęp Budowy -bar.spawned = Jednostki: {0}/{1} bar.input = Wejście bar.output = Wyjście @@ -639,6 +641,7 @@ setting.linear.name = Filtrowanie Liniowe setting.hints.name = Podpowiedzi setting.flow.name = Wyświetl szybkość przepływu zasobów[scarlet] (eksperymentalne) setting.buildautopause.name = Automatycznie zatrzymaj budowanie +setting.mapcenter.name = Auto Center Map To Player setting.animatedwater.name = Animowana woda setting.animatedshields.name = Animowana tarcza setting.antialias.name = Antyaliasing[lightgray] (wymaga restartu)[] @@ -663,7 +666,6 @@ setting.effects.name = Wyświetlanie efektów setting.destroyedblocks.name = Wyświetl zniszczone bloki setting.blockstatus.name = Wyświetl status bloków setting.conveyorpathfinding.name = Ustalanie ścieżki przenośników -setting.coreselect.name = Zezwalaj na rdzenie w schematach setting.sensitivity.name = Czułość kontrolera setting.saveinterval.name = Interwał automatycznego zapisywania setting.seconds = {0} sekund @@ -672,12 +674,15 @@ setting.milliseconds = {0} milisekund setting.fullscreen.name = Pełny ekran setting.borderlesswindow.name = Bezramkowe okno[lightgray] (może wymagać restartu) setting.fps.name = Pokazuj FPS oraz ping +setting.smoothcamera.name = Smooth Camera setting.blockselectkeys.name = Pokazuj skróty klawiszowe bloków setting.vsync.name = Synchronizacja pionowa setting.pixelate.name = Pikselacja [lightgray](wyłącza animacje) setting.minimap.name = Pokaż Minimapę +setting.coreitems.name = Display Core Items (WIP) setting.position.name = Pokazuj położenie gracza setting.musicvol.name = Głośność muzyki +setting.atmosphere.name = Show Planet Atmosphere setting.ambientvol.name = Głośność otoczenia setting.mutemusic.name = Wycisz muzykę setting.sfxvol.name = Głośność dźwięków @@ -700,10 +705,13 @@ keybinds.mobile = [scarlet]Większość skrótów klawiszowych nie funkcjonuje w category.general.name = Ogólne category.view.name = Wyświetl category.multiplayer.name = Wielu graczy +category.blocks.name = Block Select command.attack = Atakuj command.rally = Zbierz command.retreat = Wycofaj placement.blockselectkeys = \n[lightgray]Klawisz: [{0}, +keybind.respawn.name = Respawn +keybind.control.name = Control Unit keybind.clear_building.name = Wyczyść budynek keybind.press = Naciśnij wybrany klawisz... keybind.press.axis = Naciśnij oś lub klawisz... @@ -713,7 +721,7 @@ keybind.toggle_block_status.name = Toggle Block Statuses keybind.move_x.name = Poruszanie w poziomie keybind.move_y.name = Poruszanie w pionie keybind.mouse_move.name = Podążaj Za Myszą -keybind.dash.name = Dash +keybind.boost.name = Boost keybind.schematic_select.name = Wybierz region keybind.schematic_menu.name = Menu schematów keybind.schematic_flip_x.name = Obróć schemat horyzontalnie @@ -775,30 +783,25 @@ rules.wavetimer = Zegar fal rules.waves = Fale rules.attack = Tryb ataku rules.enemyCheat = Nieskończone zasoby komputera-przeciwnika (czerwonego zespołu) -rules.unitdrops = Surowce ze zniszczonych jednostek +rules.blockhealthmultiplier = Mnożnik życia bloków +rules.blockdamagemultiplier = Block Damage Multiplier rules.unitbuildspeedmultiplier = Mnożnik prędkości tworzenia jednostek rules.unithealthmultiplier = Mnożnik życia jednostek -rules.blockhealthmultiplier = Mnożnik życia bloków -rules.playerhealthmultiplier = Mnożnik życia gracza -rules.playerdamagemultiplier = Mnożnik obrażeń gracza rules.unitdamagemultiplier = Mnożnik obrażeń jednostek rules.enemycorebuildradius = Zasięg blokady budowy przy rdzeniu wroga:[lightgray] (kratki) -rules.respawntime = Czas odrodzenia:[lightgray] (sek) rules.wavespacing = Odstępy między falami:[lightgray] (sek) rules.buildcostmultiplier = Mnożnik kosztów budowania rules.buildspeedmultiplier = Mnożnik prędkości budowania rules.deconstructrefundmultiplier = Mnożnik Zwrotu Dekonstrukcji rules.waitForWaveToEnd = Fale czekają na przeciwników rules.dropzoneradius = Zasięg strefy zrzutu:[lightgray] (kratki) -rules.respawns = Maksymalna ilośc odrodzeń na falę -rules.limitedRespawns = Ogranicz Odrodzenia +rules.unitammo = Units Require Ammo rules.title.waves = Fale -rules.title.respawns = Odrodzenia rules.title.resourcesbuilding = Zasoby i Budowanie -rules.title.player = Gracze rules.title.enemy = Przeciwnicy rules.title.unit = Jednostki rules.title.experimental = Eksperymentalne +rules.title.environment = Environment rules.lighting = Oświetlenie rules.ambientlight = Otaczające Światło rules.solarpowermultiplier = Mnożnik Energii Słonecznej @@ -827,7 +830,6 @@ liquid.water.name = Woda liquid.slag.name = Żużel liquid.oil.name = Ropa liquid.cryofluid.name = Lodociecz -item.corestorable = [lightgray]Przechowywalne w rdzeniu: {0} item.explosiveness = [lightgray]Wybuchowość: {0} item.flammability = [lightgray]Palność: {0} item.radioactivity = [lightgray]Promieniotwórczość: {0} @@ -843,6 +845,32 @@ liquid.heatcapacity = [lightgray]Wytrzymałość na przegrzewanie: {0} liquid.viscosity = [lightgray]Lepkość: {0} liquid.temperature = [lightgray]Temperatura: {0} +unit.dagger.name = Nóż +unit.mace.name = Mace +unit.fortress.name = Forteca +unit.nova.name = Nova +unit.pulsar.name = Pulsar +unit.quasar.name = Quasar +unit.crawler.name = Pełzak +unit.atrax.name = Atrax +unit.spiroct.name = Spiroct +unit.arkyid.name = Arkyid +unit.flare.name = Flare +unit.horizon.name = Horizon +unit.zenith.name = Zenith +unit.antumbra.name = Antumbra +unit.eclipse.name = Eclipse +unit.mono.name = Mono +unit.poly.name = Poly +unit.mega.name = Mega +unit.risse.name = Risse +unit.minke.name = Minke +unit.bryde.name = Bryde +unit.alpha.name = Alpha +unit.beta.name = Beta +unit.gamma.name = Gamma + +block.parallax.name = Parallax block.cliff.name = Klif block.sand-boulder.name = Piaskowy Głaz block.grass.name = Trawa @@ -994,17 +1022,6 @@ block.blast-mixer.name = Wybuchowy Mieszacz block.solar-panel.name = Panel Słoneczny block.solar-panel-large.name = Duży Panel Słoneczny block.oil-extractor.name = Ekstraktor Ropy -block.command-center.name = Centrum Dowodzenia -block.draug-factory.name = Fabryka Dronów Draug -block.spirit-factory.name = Fabryka Dronów Duch -block.phantom-factory.name = Fabryka Dronów Widmo -block.wraith-factory.name = Fabryka Myśliwców Widmo -block.ghoul-factory.name = Fabryka Bombowców Upiór -block.dagger-factory.name = Fabryka Mechów Nóż -block.crawler-factory.name = Fabryka Mechów Pełzacz -block.titan-factory.name = Fabryka Mechów Tytan -block.fortress-factory.name = Fabryka Mechów Forteca -block.revenant-factory.name = Fabryka Krążowników Zjawa block.repair-point.name = Punkt Naprawy block.pulse-conduit.name = Rura Pulsacyjna block.plated-conduit.name = Opancerzona rura @@ -1036,6 +1053,19 @@ block.meltdown.name = Rozpad block.container.name = Kontener block.launch-pad.name = Wyrzutnia block.launch-pad-large.name = Duża Wyrzutnia +block.segment.name = Segment +block.ground-factory.name = Ground Factory +block.air-factory.name = Air Factory +block.naval-factory.name = Naval Factory +block.additive-reconstructor.name = Additive Reconstructor +block.multiplicative-reconstructor.name = Multiplicative Reconstructor +block.exponential-reconstructor.name = Exponential Reconstructor +block.tetrative-reconstructor.name = Tetrative Reconstructor +block.mass-conveyor.name = Mass Conveyor +block.payload-router.name = Payload Router +block.disassembler.name = Disassembler +block.silicon-crucible.name = Silicon Crucible +block.large-overdrive-projector.name = Large Overdrive Projector team.blue.name = niebieski team.crux.name = czerwony team.sharded.name = żółty @@ -1043,21 +1073,7 @@ team.orange.name = pomarańczowy team.derelict.name = szary team.green.name = zielony team.purple.name = fioletowy -unit.spirit.name = Dron Naprawczy Duch -unit.draug.name = Dron Wydobywczy Draug -unit.phantom.name = Dron Budowniczy Widmo -unit.dagger.name = Nóż -unit.crawler.name = Pełzak -unit.titan.name = Tytan -unit.ghoul.name = Bombowiec Upiór -unit.wraith.name = Myśliwiec Widmo -unit.fortress.name = Forteca -unit.revenant.name = Zjawa -unit.eruptor.name = Roztapiacz -unit.chaos-array.name = Chaos -unit.eradicator.name = Niszczyciel -unit.lich.name = Obudzony -unit.reaper.name = Żniwiarz + tutorial.next = [lightgray] tutorial.intro = Wszedłeś do[scarlet] Samouczka Mindustry.[]\nUżyj [accent][[WASD][], aby poruszyć się.\n[accent]Przytrzymaj [[Ctrl] podczas przewijania[], aby przybliżyć i oddalić widok.\nZacznij od[accent] wydobycia miedzi[]. W tym celu przybliż się, a następnie dotknij żyły rudy miedzi w pobliżu rdzenia.\n\n[accent]{0}/{1} miedź tutorial.intro.mobile = Wszedłeś do[scarlet] Samouczka Mindustry.[]\nPrzesuń palcem po ekranie, aby poruszyć się.\n[accent]Użyj dwóch palcy[], aby przybliżyć i oddalić widok.\nZacznij od[accent] wydobycia miedzi[]. W tym celu przybliż się, a następnie dotknij żyły rudy miedzi w pobliżu rdzenia.\n\n[accent]{0}/{1} miedź @@ -1100,17 +1116,7 @@ liquid.water.description = Powszechnie używana do schładzania budowli i przetw liquid.slag.description = Wiele różnych metali stopionych i zmieszanych razem. Może zostać rozdzielony na jego metale składowe, albo wystrzelony w wrogie jednostki i użyty jako broń. liquid.oil.description = Używany w do produkcji złożonych materiałów. Może zostać przetworzony na węgiel, lub wystrzelony w wrogów przez wieżyczke. liquid.cryofluid.description = Obojętna, niekorozyjna ciecz utworzona z wody i tytanu -unit.draug.description = Prymitywny dron górniczy. Tani w produkcji. Przeznaczony na stracenie. Automatycznie wydobywa miedź i ołów w pobliżu. Dostarcza wydobyte zasoby do najbliższego rdzenia. -unit.spirit.description = Zmodyfikowany dron draug, zaprojektowany do naprawy zamiast do wydobywania. Automatycznie naprawia wszelkie uszkodzone bloki w obszarze. -unit.phantom.description = Zaawansowana jednostka dronów. Podąża za użytkownikiem. Pomaga w budowie bloków. -unit.dagger.description = Podstawowy mech lądowy. Sam jest słaby, lecz przydatny w dużych ilościach. -unit.crawler.description = Jednostka naziemna składająca się z rozebranej ramy z przypiętymi na górze materiałami wybuchowymi. Niezbyt trwały. Wybucha przy kontakcie z wrogami. Chodzi na czterech nogach jak pies. -unit.titan.description = Zaawansowana, opancerzona jednostka naziemna. Atakuje zarówno cele naziemne, jak i powietrzne. Wyposażony w dwa miniaturowe miotacze ognia typu Płomień. -unit.fortress.description = Ciężki mech artyleryjski. Wyposażony w dwa zmodyfikowane działa typu gradowego do ataku na dalekie odległości na konstrukcje i jednostki wroga. -unit.eruptor.description = Ciężki mech stworzony do niszczenia struktur. Strzela wiązką żużlu w kierunku fortyfikacji wroga, Topiąc je oraz podpalając łatwopalne przedmioty. -unit.wraith.description = Szybka jednostka, stosuje taktykę uderz-uciekaj. Namierza jakiekolwiek źródło prądu. -unit.ghoul.description = Ciężki bombowiec dywanowy. Rozdziera struktury wroga, atakując krytyczną infrastrukturę. -unit.revenant.description = Ciężka, unosząca sie platforma z rakietami. + block.message.description = Przechowuje wiadomość. Wykorzystywane do komunikacji pomiędzy sojusznikami. block.graphite-press.description = Kompresuje kawałki węgla w czyste blaszki grafitu. block.multi-press.description = Ulepszona wersja prasy grafitowej. Używa wody i prądu do kompresowania węgla szybko i efektywnie. @@ -1221,16 +1227,5 @@ block.ripple.description = Duża wieża artyleryjska, która strzela jednocześn block.cyclone.description = Duża szybkostrzelna wieża. block.spectre.description = Duże działo dwulufowe, które strzela potężnymi pociskami przebijającymi pancerz w jednostki naziemne i powietrzne. block.meltdown.description = Duże działo laserowe, które strzela potężnymi wiązkami dalekiego zasięgu. Wymaga chłodzenia. -block.command-center.description = Wydaje polecenia ruchu sojuszniczym jednostkom na całej mapie.\nPowoduje patrolowanie jednostek, atakowanie wrogiego rdzenia lub wycofanie się do rdzenia/fabryki. Gdy nie ma rdzenia wroga, jednostki będą domyślnie patrolować pod dowództwem ataku. -block.draug-factory.description = Produkuje drony wydobywcze Draug. -block.spirit-factory.description = Produkuje lekkie drony, które naprawiają bloki. -block.phantom-factory.description = Produkuje zaawansowane drony które pomagają przy budowie. -block.wraith-factory.description = Produkuje szybkie jednostki powietrzne typu "uderz i uciekaj". -block.ghoul-factory.description = Produkuje ciężkie bombowce dywanowe. -block.revenant-factory.description = Produkuje ciężkie jednostki powietrzne z wyrzutniami rakiet. -block.dagger-factory.description = Produkuje podstawowe jednostki lądowe. -block.crawler-factory.description = Produkuje szybkie jednostki lądowe typu "kamikaze". -block.titan-factory.description = Produkuje zaawansowane, opancerzone jednostki lądowe. -block.fortress-factory.description = Produkuje naziemne jednostki ciężkiej artylerii. block.repair-point.description = Bez przerw naprawia najbliższą uszkodzoną jednostkę w jego zasięgu. - +block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. diff --git a/core/assets/bundles/bundle_pt_BR.properties b/core/assets/bundles/bundle_pt_BR.properties index c7de538d6a..0afeb34d74 100644 --- a/core/assets/bundles/bundle_pt_BR.properties +++ b/core/assets/bundles/bundle_pt_BR.properties @@ -106,6 +106,7 @@ mods.guide = Guia de mods mods.report = Reportar um Bug mods.openfolder = Abrir pasta de mods mods.reload = Reload +mods.reloadexit = The game will now exit, to reload mods. mod.display = [gray]Mod:[orange] {0} mod.enabled = [lightgray]Ativado mod.disabled = [scarlet]Desativado @@ -124,6 +125,7 @@ mod.reloadrequired = [scarlet]Recarregamento necessário mod.import = Importar mod mod.import.file = Import File mod.import.github = Importar mod do GitHub +mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source! mod.item.remove = Este item é parte do mod[accent] '{0}'[]. Para removê-lo, desinstale esse mod. mod.remove.confirm = Este mod será deletado. mod.author = [lightgray]Autor:[] {0} @@ -224,7 +226,6 @@ save.new = Novo save save.overwrite = Você tem certeza que quer sobrescrever este save? overwrite = sobrescrever save.none = Nenhum save encontrado! -saveload = [accent]Salvando... savefail = Falha ao salvar jogo! save.delete.confirm = Certeza que quer deletar este save? save.delete = Deletar @@ -272,6 +273,7 @@ quit.confirm.tutorial = Você tem certeza que você sabe o que você esta fazend loading = [accent]Carregando... reloading = [accent]Recarregando mods... saving = [accent]Salvando... +respawn = [accent][[{0}][] to respawn in core cancelbuilding = [accent][[{0}][] para cancelar a construção selectschematic = [accent][[{0}][] para selecionar + copiar pausebuilding = [accent][[{0}][] para parar a construção @@ -328,8 +330,9 @@ waves.never = waves.every = a cada waves.waves = Horda(s) waves.perspawn = por spawn +waves.shields = shields/wave waves.to = para -waves.boss = Chefão +waves.guardian = Guardian waves.preview = Pré-visualizar waves.edit = Editar... waves.copy = Copiar para área de transferência @@ -460,6 +463,7 @@ requirement.unlock = Desbloquear {0} resume = Resumir Zona:\n[lightgray]{0} bestwave = [lightgray]Melhor: {0} launch = Lançar +launch.text = Launch launch.title = Lançamento feito com sucesso launch.next = [lightgray]Próxima oportunidade na Horda {0} launch.unable2 = [scarlet]Impossível lançar.[] @@ -467,13 +471,13 @@ launch.confirm = Isto vai lançar todos os seus recursos no seu núcleo.\nVoce n launch.skip.confirm = Se você pular a horda agora, você não será capaz de lançar até hordas futuras. uncover = Descobrir configure = Configurar carregamento +loadout = Loadout +resources = Resources bannedblocks = Blocos Banidos addall = Adicionar Todos -configure.locked = [lightgray]Alcançe a horda {0}\npara configurar o carregamento. configure.invalid = A quantidade deve ser um número entre 0 e {0}. zone.unlocked = [lightgray]{0} Desbloqueado. zone.requirement.complete = Horda {0} alcançada:\n{1} Requerimentos da zona alcançada. -zone.config.unlocked = Equipamento desbloqueado:[lightgray]\n{0} zone.resources = Recursos detectados: zone.objective = [lightgray]Objetivo: [accent]{0} zone.objective.survival = Sobreviver @@ -492,35 +496,29 @@ error.io = Erro I/O de internet. error.any = Erro de rede desconhecido. error.bloom = Falha ao inicializar bloom.\nSeu dispositivo talvez não o suporte. -zone.groundZero.name = Marco zero -zone.desertWastes.name = Ruínas do Deserto -zone.craters.name = As crateras -zone.frozenForest.name = Floresta congelada -zone.ruinousShores.name = Costas Ruinosas -zone.stainedMountains.name = Montanhas manchadas -zone.desolateRift.name = Fenda desolada -zone.nuclearComplex.name = Complexo Nuclear -zone.overgrowth.name = Crescimento excessivo -zone.tarFields.name = Campos de Piche -zone.saltFlats.name = Planícies de sal -zone.impact0078.name = Impacto 0078 -zone.crags.name = Penhascos -zone.fungalPass.name = Passagem de fungos +sector.groundZero.name = Ground Zero +sector.craters.name = The Craters +sector.frozenForest.name = Frozen Forest +sector.ruinousShores.name = Ruinous Shores +sector.stainedMountains.name = Stained Mountains +sector.desolateRift.name = Desolate Rift +sector.nuclearComplex.name = Nuclear Production Complex +sector.overgrowth.name = Overgrowth +sector.tarFields.name = Tar Fields +sector.saltFlats.name = Salt Flats +sector.fungalPass.name = Fungal Pass -zone.groundZero.description = Uma ótima localização para começar de novo. Baixa ameaça inimiga. Poucos recursos.\nColete o máximo de chumbo e cobre possível.\nContinue! -zone.frozenForest.description = Até aqui, perto das montanhas, os esporos se espalharam. As baixas temperaturas não podem contê-los para sempre.\n\nComeçe a busca por energia. Construa geradores à combustão. Aprenda a usar os reparadores (menders). -zone.desertWastes.description = Estas ruínas são vastas, imprevisíveis, e cruzadas por estruturas abandonadas.\nCarvão está presente na região. O queime por energia, ou sintetize grafite.\n\n[lightgray]Este local de pouso não pode ser garantido. -zone.saltFlats.description = Nos arredores do deserto estão as Planícies de Sal. Poucos recursos podem ser encontrados neste lugar.\n\nO inimigo ergueu um complexo de armazenamento aqui. Erradique seu núcleo. Não deixe nada de pé. -zone.craters.description = Água se acumulou nesta cratera, relíquia de guerras antigas. Recupere a área. Colete areia. Derreta metavidro. Bombeie água para resfriar torretas e brocas. -zone.ruinousShores.description = Depois das ruínas está o litoral. Uma vez, este local abrigou uma matriz de defesa costeira. Não restou muito disso. Apenas as estruturas de defesa mais básicas restaram ilesas, todo o resto se reduziu a sucata.\nContinue a expansão para fora. Redescubra a tecnologia. -zone.stainedMountains.description = Mais para o interior estão as montanhas, ainda intocadas por esporos.\nExtraia o titânio abundante nesta área. Aprenda como usá-lo.\n\nA presença inimiga é maior aqui. Não os dê tempo de enviar suas tropas mais fortes. -zone.overgrowth.description = Esta área tem crescimento excessivo, mais perto da fonte de esporos.\nO inimgo estabeleceu um posto avançado aqui. Construa unidades dagger. Destrua-o. Recupere o que sobrou. -zone.tarFields.description = Nos arredores de uma zona de produção de petróleo, entre as montanhas e o deserto. Uma das poucas áreas com reservas utilizáveis de piche.\nApesar de abandonada, esta área possui perigosas forças inimigas por perto. Não as subestime.\n\n[lightgray]Pesquise tecnologias de processamento de petróleo se possível. -zone.desolateRift.description = Uma zona extremamente perigosa. Recursos abundantes, porém pouco espaço. Alto risco de destruição. Saia o mais rápido possível. Não seja enganado pelo longo espaço de tempo entre os ataques inimigos. -zone.nuclearComplex.description = Uma antiga instalação para produção e processamento de tório, reduzido a ruínas.\n[lightgray]Pesquise o tório e seus muitos usos.\n\nO inimigo está presente aqui em grandes números, constantemente à procura de atacantes. -zone.fungalPass.description = Uma area de transição entre montanhas altas e baixas, terras cheias de esporos. Uma pequena base de reconhecimento inimiga está localizada aqui.\nDestrua-a.\nUse as unidades crawler e dagger. Destrua os dois núcleos. -zone.impact0078.description = -zone.crags.description = +sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. +sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. +sector.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. +sector.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. +sector.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. +sector.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units. +sector.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build Titan units. Destroy it. Reclaim that which was lost. +sector.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. +sector.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. +sector.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. +sector.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. settings.language = Idioma settings.data = Dados do jogo @@ -537,6 +535,7 @@ settings.clearall.confirm = [scarlet]Aviso![]\nIsso vai limpar todo os arquivos, paused = Pausado clear = Limpo banned = [scarlet]BANIDO +unplaceable.sectorcaptured = [scarlet]Requires captured sector yes = Sim no = Não info.title = [accent]Informação @@ -582,6 +581,8 @@ blocks.reload = Tiros por segundo blocks.ammo = Munição bar.drilltierreq = Broca melhor necessária. +bar.noresources = Missing Resources +bar.corereq = Core Base Required bar.drillspeed = Velocidade da Broca: {0}/s bar.pumpspeed = Velocidade da Bomba: {0}/s bar.efficiency = Eficiência: {0}% @@ -591,11 +592,12 @@ bar.poweramount = Energia: {0} bar.poweroutput = Saída de energia: {0} bar.items = Itens: {0} bar.capacity = Capacidade: {0} +bar.unitcap = {0} {1}/{2} +bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled] bar.liquid = Liquido bar.heat = Aquecer bar.power = Poder bar.progress = Progresso da construção -bar.spawned = Unidades: {0}/{1} bar.input = Entrada bar.output = Sainda @@ -639,6 +641,7 @@ setting.linear.name = Filtragem linear setting.hints.name = Dicas setting.flow.name = Display Resource Flow Rate[scarlet] (experimental) setting.buildautopause.name = Pausar construções automaticamente +setting.mapcenter.name = Auto Center Map To Player setting.animatedwater.name = Água animada setting.animatedshields.name = Escudos animados setting.antialias.name = Filtro suavizante[lightgray] (reinicialização requerida)[] @@ -663,7 +666,6 @@ setting.effects.name = Efeitos setting.destroyedblocks.name = Mostrar Blocos Destruídos setting.blockstatus.name = Display Block Status setting.conveyorpathfinding.name = Esteiras Encontram Caminho -setting.coreselect.name = Allow Schematic Cores setting.sensitivity.name = Sensibilidade do Controle setting.saveinterval.name = Intervalo de Auto Salvamento setting.seconds = {0} segundos @@ -672,12 +674,15 @@ setting.milliseconds = {0} milissegundos setting.fullscreen.name = Tela Cheia setting.borderlesswindow.name = Janela sem borda[lightgray] (Pode precisar reiniciar) setting.fps.name = Mostrar FPS e Ping +setting.smoothcamera.name = Smooth Camera setting.blockselectkeys.name = Mostrar teclas de seleção de blocos setting.vsync.name = VSync setting.pixelate.name = Pixelizado [lightgray](Pode diminuir a performace) setting.minimap.name = Mostrar minimapa +setting.coreitems.name = Display Core Items (WIP) setting.position.name = Mostrar a posição do Jogador setting.musicvol.name = Volume da Música +setting.atmosphere.name = Show Planet Atmosphere setting.ambientvol.name = Volume do Ambiente setting.mutemusic.name = Desligar Música setting.sfxvol.name = Volume de Efeitos @@ -700,10 +705,13 @@ keybinds.mobile = [scarlet]A maior parte das teclas aqui não são funcionais em category.general.name = Geral category.view.name = Ver category.multiplayer.name = Multijogador +category.blocks.name = Block Select command.attack = Atacar command.rally = Reunir command.retreat = Recuar placement.blockselectkeys = \n[lightgray]Tecla: [{0}, +keybind.respawn.name = Respawn +keybind.control.name = Control Unit keybind.clear_building.name = Limpar construção keybind.press = Pressione uma tecla... keybind.press.axis = Pressione um eixo ou tecla... @@ -713,7 +721,7 @@ keybind.toggle_block_status.name = Toggle Block Statuses keybind.move_x.name = Mover no eixo x keybind.move_y.name = Mover no eixo Y keybind.mouse_move.name = Seguir Mouse -keybind.dash.name = Arrancada +keybind.boost.name = Boost keybind.schematic_select.name = Selecionar região keybind.schematic_menu.name = Menu de Esquemas keybind.schematic_flip_x.name = Girar o Esquema no eixo X @@ -775,30 +783,25 @@ rules.wavetimer = Tempo de horda rules.waves = Hordas rules.attack = Modo de ataque rules.enemyCheat = Recursos de IA Infinitos -rules.unitdrops = Inimigos dropam itens +rules.blockhealthmultiplier = Multiplicador de vida do bloco +rules.blockdamagemultiplier = Block Damage Multiplier rules.unitbuildspeedmultiplier = Multiplicador de velocidade de criação de unidade rules.unithealthmultiplier = Multiplicador de vida de unidade -rules.blockhealthmultiplier = Multiplicador de vida do bloco -rules.playerhealthmultiplier = Multiplicador da vida de jogador -rules.playerdamagemultiplier = Multiplicador do dano de jogador rules.unitdamagemultiplier = Multiplicador de dano de Unidade rules.enemycorebuildradius = Raio de "Não-criação" de core inimigo:[lightgray] (blocos) -rules.respawntime = Tempo de renascimento:[lightgray] (seg) rules.wavespacing = Espaço de tempo entre hordas:[lightgray] (seg) rules.buildcostmultiplier = Multiplicador de custo de construção rules.buildspeedmultiplier = Multiplicador de velocidade de construção rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier rules.waitForWaveToEnd = Hordas esperam inimigos rules.dropzoneradius = Raio da zona de spawn:[lightgray] (blocos) -rules.respawns = Respawn maximos por horda -rules.limitedRespawns = Respawn limitados +rules.unitammo = Units Require Ammo rules.title.waves = Hordas -rules.title.respawns = Respawns rules.title.resourcesbuilding = Recursos e Construções -rules.title.player = Jogadores rules.title.enemy = Inimigos rules.title.unit = Unidades rules.title.experimental = Experimental +rules.title.environment = Environment rules.lighting = Iluminação rules.ambientlight = Luz ambiente rules.solarpowermultiplier = Solar Power Multiplier @@ -827,7 +830,6 @@ liquid.water.name = Água liquid.slag.name = Escória liquid.oil.name = Petróleo liquid.cryofluid.name = Fluído Criogênico -item.corestorable = [lightgray]Armazenável no núcleo: {0} item.explosiveness = [lightgray]Explosibilidade: {0} item.flammability = [lightgray]Inflamabilidade: {0} item.radioactivity = [lightgray]Radioatividade: {0} @@ -843,6 +845,32 @@ liquid.heatcapacity = [lightgray]Capacidade de aquecimento: {0} liquid.viscosity = [lightgray]Viscosidade: {0} liquid.temperature = [lightgray]Temperatura: {0} +unit.dagger.name = Adaga +unit.mace.name = Mace +unit.fortress.name = Fortaleza +unit.nova.name = Nova +unit.pulsar.name = Pulsar +unit.quasar.name = Quasar +unit.crawler.name = Rastejante +unit.atrax.name = Atrax +unit.spiroct.name = Spiroct +unit.arkyid.name = Arkyid +unit.flare.name = Flare +unit.horizon.name = Horizon +unit.zenith.name = Zenith +unit.antumbra.name = Antumbra +unit.eclipse.name = Eclipse +unit.mono.name = Mono +unit.poly.name = Poly +unit.mega.name = Mega +unit.risse.name = Risse +unit.minke.name = Minke +unit.bryde.name = Bryde +unit.alpha.name = Alpha +unit.beta.name = Beta +unit.gamma.name = Gamma + +block.parallax.name = Parallax block.cliff.name = Cliff block.sand-boulder.name = Pedregulho de areia block.grass.name = Grama @@ -994,17 +1022,6 @@ block.blast-mixer.name = Misturador de Explosão block.solar-panel.name = Painel Solar block.solar-panel-large.name = Painel Solar Grande block.oil-extractor.name = Bomba de Petróleo -block.command-center.name = Centro de comando -block.draug-factory.name = Fábrica de drone de mineração Adaga -block.spirit-factory.name = Fábrica de drone de reparo Espirito -block.phantom-factory.name = Fábrica de drone de construção Fantasma -block.wraith-factory.name = Fábrica de lutadores Sombra -block.ghoul-factory.name = Fábrica de Bombardeiros Corvos -block.dagger-factory.name = Fábrica de Mecas Adaga -block.crawler-factory.name = Fábrica de Mecas Rasteiros -block.titan-factory.name = Fábrica de Mecas Titã -block.fortress-factory.name = Fábrica de Meca Fortaleza -block.revenant-factory.name = Fábrica de lutadores Revenant block.repair-point.name = Ponto de Reparo block.pulse-conduit.name = Cano de Tinânio block.plated-conduit.name = Cano blindado @@ -1036,6 +1053,19 @@ block.meltdown.name = Fusão block.container.name = Contâiner block.launch-pad.name = Plataforma de lançamento block.launch-pad-large.name = Plataforma de lançamento grande +block.segment.name = Segment +block.ground-factory.name = Ground Factory +block.air-factory.name = Air Factory +block.naval-factory.name = Naval Factory +block.additive-reconstructor.name = Additive Reconstructor +block.multiplicative-reconstructor.name = Multiplicative Reconstructor +block.exponential-reconstructor.name = Exponential Reconstructor +block.tetrative-reconstructor.name = Tetrative Reconstructor +block.mass-conveyor.name = Mass Conveyor +block.payload-router.name = Payload Router +block.disassembler.name = Disassembler +block.silicon-crucible.name = Silicon Crucible +block.large-overdrive-projector.name = Large Overdrive Projector team.blue.name = Azul team.crux.name = Vermelho team.sharded.name = Fragmentado @@ -1043,21 +1073,7 @@ team.orange.name = Alaranjado team.derelict.name = Abandonado team.green.name = Verde team.purple.name = Roxa -unit.spirit.name = Drone Espirito -unit.draug.name = Drone minerador Drauger -unit.phantom.name = Drone Fantasma -unit.dagger.name = Adaga -unit.crawler.name = Rastejante -unit.titan.name = Titã -unit.ghoul.name = Bombardeiro Corvo -unit.wraith.name = Lutador Sombra -unit.fortress.name = Fortaleza -unit.revenant.name = Revenant -unit.eruptor.name = Eruptor -unit.chaos-array.name = Matriz do caos -unit.eradicator.name = Erradicador -unit.lich.name = Lich -unit.reaper.name = Ceifador + tutorial.next = [lightgray] tutorial.intro = Você entrou no Tutorial do[scarlet] Mindustry.[]\nUse[accent] [[WASD][] para se mover.\n[accent]Roda do mouse[] para aumentar e diminuir o zoom.\nComece[accent] minerando cobre[]. Toque em um veio de minério de cobre para fazer isso.\n\n[accent]{0}/{1} Cobre tutorial.intro.mobile = Você entrou no Tutorial do[scarlet] Mindustry.[]\nPasse o dedo na tela para se mover.\n[accent]Use os dois dedos [] para alterar o zoom.\nComece[accent] minerando cobre[]. Se aproxime dele, e toque numa veia de cobre perto do seu núcleo.\n\n[accent]{0}/{1} Cobre @@ -1100,17 +1116,7 @@ liquid.water.description = O líquido mais útil, comumente usado em resfriament liquid.slag.description = Vários metais derretidos misturados juntos. Pode ser separado em seus minerais constituentes, ou jogado nas unidades inimigas como uma arma. liquid.oil.description = Um líquido usado na produção de materias avançados. Pode ser convertido em carvão como combustível, ou pulverizado e incendiado como arma. liquid.cryofluid.description = A maneira mais eficiente de resfriar qualquer coisa, até seu corpo quando está calor, mas não faça isto. -unit.draug.description = Um drone de mineração primitivo. Barato para produzir. Descartável. Minera automaticamente cobre e chumbo nas proximidades. Entrega os recursos minerados para o núcleo mais próximo. -unit.spirit.description = Um drone drauger modificado, desenhado para reparo em vez de mineração. Automaticamente conserta qualquer bloco danificado na área. -unit.phantom.description = Um drone avançado. Segue usuários. Ajuda na construção de blocos. -unit.dagger.description = A mais básica armadura terrestre. Barato para produzir. Esmagadora quando usada em enxames. -unit.crawler.description = Uma unidade terrestre que consiste em um despojado quadro com grandes explosivos amarrados no topo. Não particularmente durável. Explode no contato com inimigos. -unit.titan.description = Uma avançada unidade terrestre armadurada. Ataca alvos aéreos e terrestres. Equipada com dois pequenos lança chamas. -unit.fortress.description = Uma armadura de artilharia pesada. Equipada com dois canhões tipo granizo modificados para assalto de longa distância em estruturas e unidades inimigas. -unit.eruptor.description = Uma unidade pesada desenhada para derrubar estruturas. Atira um monte de escória nas fortificações inimigas, derretendo e colocando-as em chamas. -unit.wraith.description = Uma rápida, unidade interceptadora hit-and-run (atacar e correr). Mira em geradores de energia. -unit.ghoul.description = Um bombardeiro pesado. Rompe estruturas inimigas, mirando em infraestrutura crítica. -unit.revenant.description = Uma matriz de mísseis pesada e flutuante. + block.message.description = Armazena uma mensagem. Usado para comunicação entre aliados. block.graphite-press.description = Comprime pedaços de carvão em lâminas de grafite puro. block.multi-press.description = Uma versão melhorada da prensa de grafite. Usa água e energia para processar carvão rápida e eficientemente. @@ -1221,15 +1227,5 @@ block.ripple.description = Uma torre de artilharia extremamente poderosa. Dispar block.cyclone.description = Uma grande torre que dispara balas explosivas que se fragmentam em unidades aéreas e terrestres próximas. block.spectre.description = Um grande canhão massivo. Dispara grandes tiros perfuradores de blindagem em inimigos aéreos e terrestres. block.meltdown.description = Um grande canhão laser massivo. Carrega e dispara um poderoso e persistente feixe nos seus inimigos. Requer uma refrigeração para ser operada. -block.command-center.description = Emite comandos de movimento para unidades aliadas através do mapa.\nFaz unidades se reagruparem, atacarem um núcleo inimigo ou recuar para o núcleo/fábrica. Quando não há nucleo inimigo, unidades vão ficar perto da área de spawn dos inimigos sob o comando atacar. -block.draug-factory.description = Produz drones de mineração drauger. -block.spirit-factory.description = produz drones Espirito de reparo estrutural. -block.phantom-factory.description = Produz drones de Fantasma construção avançados. -block.wraith-factory.description = Produz Sombra, de ataque rápido hit-and-run (atacar e correr) -block.ghoul-factory.description = Produz Corvos, bombardeiros pesados. -block.revenant-factory.description = Produz unidades Revenã laser, pesadas e terrestres. -block.dagger-factory.description = Produz Adagas, unidades terrestres. -block.crawler-factory.description = Produz unidades Rasteiro, terrestres de auto destruição. -block.titan-factory.description = Produz unidades Titã, avancadas, armaduradas e terrestres. -block.fortress-factory.description = Produz unidades Torre, terrestres pesadas de artilharia. block.repair-point.description = Continuamente repara a unidade danificada mais proxima. +block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. diff --git a/core/assets/bundles/bundle_pt_PT.properties b/core/assets/bundles/bundle_pt_PT.properties index 01b872892f..3f2ba0d911 100644 --- a/core/assets/bundles/bundle_pt_PT.properties +++ b/core/assets/bundles/bundle_pt_PT.properties @@ -106,6 +106,7 @@ mods.guide = Guia de mods mods.report = Reportar Bug mods.openfolder = Abrir pasta de Mods mods.reload = Reload +mods.reloadexit = The game will now exit, to reload mods. mod.display = [gray]Mod:[orange] {0} mod.enabled = [lightgray]Ativado mod.disabled = [scarlet]Desativado @@ -124,6 +125,7 @@ mod.reloadrequired = [scarlet]É necessario recarregar mod.import = Importar Mod mod.import.file = Import File mod.import.github = Importar Mod pelo GitHub +mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source! mod.item.remove = Este item faz parte do [accent] '{0}'[] mod. Para lhe remover, desinstala o mod. mod.remove.confirm = Este mod irá ser apagado. mod.author = [lightgray]Autor:[] {0} @@ -224,7 +226,6 @@ save.new = Novo gravamento save.overwrite = Você tem certeza que quer sobrescrever este gravamento? overwrite = Gravar sobre save.none = Nenhum gravamento encontrado! -saveload = [accent]Gravando... savefail = Falha ao gravar jogo! save.delete.confirm = Certeza que quer deletar este gravamento? save.delete = Deletar @@ -272,6 +273,7 @@ quit.confirm.tutorial = Você tem certeza você sabe o que você esta fazendo?\n loading = [accent]Carregando... reloading = [accent]Recarregar mods... saving = [accent]Gravando... +respawn = [accent][[{0}][] to respawn in core cancelbuilding = [accent][[{0}][] para apagar o plano selectschematic = [accent][[{0}][] para selecionar+copy pausebuilding = [accent][[{0}][] para pausar construção @@ -328,8 +330,9 @@ waves.never = waves.every = a cada waves.waves = Hordas(s) waves.perspawn = por spawn +waves.shields = shields/wave waves.to = para -waves.boss = Chefe +waves.guardian = Guardian waves.preview = Pré visualizar waves.edit = Editar... waves.copy = Copiar para área de transferência @@ -460,6 +463,7 @@ requirement.unlock = Destrava {0} resume = Resumir Zona:\n[lightgray]{0} bestwave = [lightgray]Melhor: {0} launch = Lançar +launch.text = Launch launch.title = Lançamento feito com sucesso launch.next = [lightgray]Próxima oportunidade na Horda {0} launch.unable2 = [scarlet]Impossível lançar.[] @@ -467,13 +471,13 @@ launch.confirm = Isto vai lançar todos os seus recursos no seu núcleo.\nVoce n launch.skip.confirm = Se você pular a horda agora, você não será capaz de lançar até hordas mais avançadas. uncover = Descobrir configure = Configurar carregamento +loadout = Loadout +resources = Resources bannedblocks = Blocos banidos addall = Adiciona tudo -configure.locked = [lightgray]Alcançe a horda {0}\npara configurar o carregamento. configure.invalid = A quantidade deve ser um número entre 0 e {0}. zone.unlocked = [lightgray]{0} Desbloqueado. zone.requirement.complete = Horda {0} alcançada:\n{1} Requerimentos da zona alcançada. -zone.config.unlocked = Loadout destravada:[lightgray]\n{0} zone.resources = Recursos detectados: zone.objective = [lightgray]Objetivo: [accent]{0} zone.objective.survival = Sobreviver @@ -492,35 +496,29 @@ error.io = Erro I/O de internet. error.any = Erro de rede desconhecido. error.bloom = Falha ao inicializar bloom.\nSeu aparelho talvez não o suporte. -zone.groundZero.name = Marco zero -zone.desertWastes.name = Ruínas do Deserto -zone.craters.name = As crateras -zone.frozenForest.name = Floresta congelada -zone.ruinousShores.name = Costas Ruinosas -zone.stainedMountains.name = Montanhas manchadas -zone.desolateRift.name = Fenda desolada -zone.nuclearComplex.name = Complexo de Produção Nuclear -zone.overgrowth.name = Crescimento excessivo -zone.tarFields.name = Campos de Piche -zone.saltFlats.name = Planícies de sal -zone.impact0078.name = Impacto 0078 -zone.crags.name = Penhascos -zone.fungalPass.name = Passagem Fúngica +sector.groundZero.name = Ground Zero +sector.craters.name = The Craters +sector.frozenForest.name = Frozen Forest +sector.ruinousShores.name = Ruinous Shores +sector.stainedMountains.name = Stained Mountains +sector.desolateRift.name = Desolate Rift +sector.nuclearComplex.name = Nuclear Production Complex +sector.overgrowth.name = Overgrowth +sector.tarFields.name = Tar Fields +sector.saltFlats.name = Salt Flats +sector.fungalPass.name = Fungal Pass -zone.groundZero.description = Uma ótima localização para começar de novo. Baixa ameaça inimiga. Poucos recursos.\nColete o máximo de chumbo e cobre possível.\nContinue! -zone.frozenForest.description = Até aqui, perto das montanhas, os esporos se espalharam. As baixas temperaturas não podem contê-los para sempre.\n\nComeçe a busca por energia. Construa geradores à combustão. Aprenda a usar os reparadores (menders). -zone.desertWastes.description = Estas ruínas são vastas, imprevisíveis, e cruzadas por estruturas abandonadas.\nCarvão está presente na região. O queime por energia, ou sintetize grafite.\n\n[lightgray]Este local de pouso não pode ser garantido. -zone.saltFlats.description = Nos arredores do deserto estão as Planícies de Sal. Poucos recursos podem ser encontrados neste lugar.\n\nO inimigo ergueu um complexo de armazenamento aqui. Erradique seu núcleo. Não deixe nada de pé. -zone.craters.description = Água se acumulou nesta cratera, relíquia de guerras antigas. Recupere a área. Colete areia. Derreta metavidro. Bombeie água para resfriar torretas e brocas. -zone.ruinousShores.description = Depois das ruínas está o litoral. Uma vez, este local abrigou uma matriz de defesa costeira. Não restou muito disso. Apenas as estruturas de defesa mais básicas restaram ilesas, todo o resto se reduziu a sucata.\nContinue a expansão para fora. Redescubra a tecnologia. -zone.stainedMountains.description = Mais para o interior estão as montanhas, ainda intocadas por esporos.\nExtraia o titânio abundante nesta área. Aprenda como usá-lo.\n\nA presença inimiga é maior aqui. Não os dê tempo de enviar suas tropas mais fortes. -zone.overgrowth.description = Esta área tem crescimento excessivo, mais perto da fonte de esporos.\nO inimgo estabeleceu um posto avançado aqui. Construa unidades dagger. Destrua-o. Recupere o que sobrou. -zone.tarFields.description = Nos arredores de uma zona de produção de petróleo, entre as montanhas e o deserto. Uma das poucas áreas com reservas utilizáveis de piche.\nApesar de abandonada, esta área possui perigosas forças inimigas por perto. Não as subestime.\n\n[lightgray]Pesquise tecnologias de processamento de petróleo se possível. -zone.desolateRift.description = Uma zona extremamente perigosa. Recursos abundantes, porém pouco espaço. Alto risco de destruição. Saia o mais rápido possível. Não seja enganado pelo longo espaço de tempo entre os ataques inimigos. -zone.nuclearComplex.description = Uma antiga instalação para produção e processamento de tório, reduzido a ruínas.\n[lightgray]Pesquise o tório e seus muitos usos.\n\nO inimigo está presente aqui em grandes números, constantemente à procura de atacantes. -zone.fungalPass.description = Uma area de transição entre montanhas altas e baixas, terras cheias de esporos. Uma pequena base de reconhecimento inimiga está localizada aqui.\nDestrua-a.\nUse as unidades crawler e dagger. Destrua os dois núcleos. -zone.impact0078.description = -zone.crags.description = +sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. +sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. +sector.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. +sector.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. +sector.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. +sector.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units. +sector.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build Titan units. Destroy it. Reclaim that which was lost. +sector.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. +sector.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. +sector.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. +sector.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. settings.language = Linguagem settings.data = Dados do jogo @@ -537,6 +535,7 @@ settings.clearall.confirm = [scarlet]Aviso![]\nIsso vai limpar toda a data, Incl paused = Pausado clear = Limpar banned = [scarlet]Banido +unplaceable.sectorcaptured = [scarlet]Requires captured sector yes = Sim no = Não info.title = [accent]Informação @@ -582,6 +581,8 @@ blocks.reload = Tiros por segundo blocks.ammo = Munição bar.drilltierreq = Broca melhor necessária. +bar.noresources = Missing Resources +bar.corereq = Core Base Required bar.drillspeed = Velocidade da broca: {0}/s bar.pumpspeed = Pump Speed: {0}/s bar.efficiency = Eficiência: {0}% @@ -591,11 +592,12 @@ bar.poweramount = Energia: {0} bar.poweroutput = Saída de energia: {0} bar.items = Itens: {0} bar.capacity = Capacidade: {0} +bar.unitcap = {0} {1}/{2} +bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled] bar.liquid = Liquido bar.heat = Aquecimento bar.power = Poder bar.progress = Progresso da construção -bar.spawned = Unidades: {0}/{1} bar.input = Input bar.output = Output @@ -639,6 +641,7 @@ setting.linear.name = Filtragem linear setting.hints.name = Hints setting.flow.name = Display Resource Flow Rate[scarlet] (experimental) setting.buildautopause.name = Auto-Pause Building +setting.mapcenter.name = Auto Center Map To Player setting.animatedwater.name = Água animada setting.animatedshields.name = Escudos animados setting.antialias.name = Filtro suavizante[lightgray] (reinicialização requerida)[] @@ -663,7 +666,6 @@ setting.effects.name = Efeitos setting.destroyedblocks.name = Mostrar Blocos Destruidos setting.blockstatus.name = Display Block Status setting.conveyorpathfinding.name = Localização do caminho do transportador -setting.coreselect.name = Permitir cores esquemáticas setting.sensitivity.name = Sensibilidade do Controle setting.saveinterval.name = Intervalo de autogravamento setting.seconds = {0} Segundos @@ -672,12 +674,15 @@ setting.milliseconds = {0} milissegundos setting.fullscreen.name = Ecrã inteiro setting.borderlesswindow.name = Janela sem borda[lightgray] (Pode precisar reiniciar) setting.fps.name = Mostrar FPS +setting.smoothcamera.name = Smooth Camera setting.blockselectkeys.name = Show Block Select Keys setting.vsync.name = VSync setting.pixelate.name = Pixelizado [lightgray](Pode diminuir a performace) setting.minimap.name = Mostrar minimapa +setting.coreitems.name = Display Core Items (WIP) setting.position.name = Show Player Position setting.musicvol.name = Volume da Música +setting.atmosphere.name = Show Planet Atmosphere setting.ambientvol.name = Volume do ambiente setting.mutemusic.name = Desligar Música setting.sfxvol.name = Volume de Efeitos @@ -700,10 +705,13 @@ keybinds.mobile = [scarlet]A maior parte das teclas aqui não são funcionais em category.general.name = Geral category.view.name = Ver category.multiplayer.name = Multijogador +category.blocks.name = Block Select command.attack = Atacar command.rally = Reunir command.retreat = Recuar placement.blockselectkeys = \n[lightgray]Key: [{0}, +keybind.respawn.name = Respawn +keybind.control.name = Control Unit keybind.clear_building.name = Limpar Edificio keybind.press = Pressione uma tecla... keybind.press.axis = Pressione uma Axis ou tecla... @@ -713,7 +721,7 @@ keybind.toggle_block_status.name = Toggle Block Statuses keybind.move_x.name = mover_x keybind.move_y.name = mover_y keybind.mouse_move.name = Follow Mouse -keybind.dash.name = Correr +keybind.boost.name = Boost keybind.schematic_select.name = Selecionar região keybind.schematic_menu.name = Menu esquemático keybind.schematic_flip_x.name = Rodar esquema X @@ -775,30 +783,25 @@ rules.wavetimer = Tempo de horda rules.waves = Hordas rules.attack = Modo de ataque rules.enemyCheat = Recursos de IA Infinitos -rules.unitdrops = Unidade solta +rules.blockhealthmultiplier = Block Health Multiplier +rules.blockdamagemultiplier = Block Damage Multiplier rules.unitbuildspeedmultiplier = Multiplicador de velocidade de criação de unidade rules.unithealthmultiplier = Multiplicador de vida de unidade -rules.blockhealthmultiplier = Block Health Multiplier -rules.playerhealthmultiplier = Multiplicador da vida de jogador -rules.playerdamagemultiplier = Multiplicador do dano de jogador rules.unitdamagemultiplier = Multiplicador de dano de Unidade rules.enemycorebuildradius = Raio de "Não-criação" de core inimigo:[lightgray] (blocos) -rules.respawntime = Tempo de renascimento:[lightgray] (seg) rules.wavespacing = Espaço entre hordas:[lightgray] (seg) rules.buildcostmultiplier = Multiplicador de custo de construção rules.buildspeedmultiplier = Multiplicador de velocidade de construção rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier rules.waitForWaveToEnd = hordas esperam inimigos rules.dropzoneradius = Raio da zona de spawn:[lightgray] (blocos) -rules.respawns = Respawn maximos por horda -rules.limitedRespawns = Respawn limitados +rules.unitammo = Units Require Ammo rules.title.waves = Hordas -rules.title.respawns = Respawns rules.title.resourcesbuilding = Recursos e Construções -rules.title.player = Jogadores rules.title.enemy = Inimigos rules.title.unit = Unidades rules.title.experimental = Experimental +rules.title.environment = Environment rules.lighting = Lighting rules.ambientlight = Ambient Light rules.solarpowermultiplier = Solar Power Multiplier @@ -827,7 +830,6 @@ liquid.water.name = Água liquid.slag.name = Escória liquid.oil.name = Petróleo liquid.cryofluid.name = Crio Fluido -item.corestorable = [lightgray]Storable in Core: {0} item.explosiveness = [lightgray]Explosibilidade: {0} item.flammability = [lightgray]Inflamabilidade: {0} item.radioactivity = [lightgray]Radioatividade: {0} @@ -843,6 +845,32 @@ liquid.heatcapacity = [lightgray]Capacidade de aquecimento: {0} liquid.viscosity = [lightgray]Viscosidade: {0} liquid.temperature = [lightgray]Temperatura: {0} +unit.dagger.name = Dagger +unit.mace.name = Mace +unit.fortress.name = Fortaleza +unit.nova.name = Nova +unit.pulsar.name = Pulsar +unit.quasar.name = Quasar +unit.crawler.name = Crawler +unit.atrax.name = Atrax +unit.spiroct.name = Spiroct +unit.arkyid.name = Arkyid +unit.flare.name = Flare +unit.horizon.name = Horizon +unit.zenith.name = Zenith +unit.antumbra.name = Antumbra +unit.eclipse.name = Eclipse +unit.mono.name = Mono +unit.poly.name = Poly +unit.mega.name = Mega +unit.risse.name = Risse +unit.minke.name = Minke +unit.bryde.name = Bryde +unit.alpha.name = Alpha +unit.beta.name = Beta +unit.gamma.name = Gamma + +block.parallax.name = Parallax block.cliff.name = Cliff block.sand-boulder.name = Pedregulho de areia block.grass.name = Grama @@ -994,17 +1022,6 @@ block.blast-mixer.name = Misturador de Explosão block.solar-panel.name = Painel Solar block.solar-panel-large.name = Painel Solar Grande block.oil-extractor.name = Extrator de petróleo -block.command-center.name = Centro de comando -block.draug-factory.name = Fábrica de drone de mineração Draug -block.spirit-factory.name = Fábrica de drone de reparo Spirit -block.phantom-factory.name = Fábrica de drone de construção Phantom -block.wraith-factory.name = Fábrica de lutadores Wraith -block.ghoul-factory.name = Fábrica de Bombardeiros Ghoul -block.dagger-factory.name = Fábrica de mech Dagger -block.crawler-factory.name = Fábrica de mech Crawler -block.titan-factory.name = Fábrica de mech titan -block.fortress-factory.name = Fábrica de mech Fortress -block.revenant-factory.name = Fábrica de lutadores Revenant block.repair-point.name = Ponto de Reparo block.pulse-conduit.name = Cano de Pulso block.plated-conduit.name = Plated Conduit @@ -1036,6 +1053,19 @@ block.meltdown.name = Fusão block.container.name = Contâiner block.launch-pad.name = Plataforma de lançamento block.launch-pad-large.name = Plataforma de lançamento grande +block.segment.name = Segment +block.ground-factory.name = Ground Factory +block.air-factory.name = Air Factory +block.naval-factory.name = Naval Factory +block.additive-reconstructor.name = Additive Reconstructor +block.multiplicative-reconstructor.name = Multiplicative Reconstructor +block.exponential-reconstructor.name = Exponential Reconstructor +block.tetrative-reconstructor.name = Tetrative Reconstructor +block.mass-conveyor.name = Mass Conveyor +block.payload-router.name = Payload Router +block.disassembler.name = Disassembler +block.silicon-crucible.name = Silicon Crucible +block.large-overdrive-projector.name = Large Overdrive Projector team.blue.name = Azul team.crux.name = Vermelho team.sharded.name = orange @@ -1043,21 +1073,7 @@ team.orange.name = Laranja team.derelict.name = derelict team.green.name = Verde team.purple.name = Roxo -unit.spirit.name = Drone Spirit -unit.draug.name = Drone minerador Draug -unit.phantom.name = Drone Phantom -unit.dagger.name = Dagger -unit.crawler.name = Crawler -unit.titan.name = Titan -unit.ghoul.name = Bombardeiro Ghoul -unit.wraith.name = Lutador Wraith -unit.fortress.name = Fortaleza -unit.revenant.name = Revenant -unit.eruptor.name = Eruptor -unit.chaos-array.name = Arraia do caos -unit.eradicator.name = Erradicador -unit.lich.name = Lich -unit.reaper.name = Ceifador + tutorial.next = [lightgray] tutorial.intro = Entraste no[scarlet] Tutorial do Mindustry.[]\nComeçe[accent] minerando cobre[]. Toque em um veio de minério de cobre para fazer isso.\n\n[accent]{0}/{1} copper tutorial.intro.mobile = Entraste no[scarlet] Mindustry Tutorial.[]\nPasse o dedo na tela para mover.\n[accent]Use 2 dedos [] para manipular o zoom.\nComeça por by[accent] minerar cobre[].Aproxime-se dele e toque uma veia de minério de cobre perto do seu núcleo para fazer isso.\n\n[accent]{0}/{1} copper @@ -1100,17 +1116,7 @@ liquid.water.description = O líquido mais útil, comumente usado em resfriament liquid.slag.description = Vários metais derretidos misturados juntos. Pode ser separado em seus minerais constituentes, ou jogado nas unidades inimigas como uma arma. liquid.oil.description = Um líquido usado na produção de materias avançados. Pode ser convertido em carvão como combustível, ou pulverizado e incendiado como arma. liquid.cryofluid.description = A maneira mais eficiente de resfriar qualquer coisa, até seu corpo quando está calor, mas não faça isto. -unit.draug.description = Um drone de mineração primitivo. Barato para produzir. Descartável. Minera automaticamente cobre e chumbo nas proximidades. Entrega os recursos minerados para o núcleo mais próximo. -unit.spirit.description = Um drone draug modificado, desenhado para reparo em vez de mineração. Automaticamente conserta qualquer bloco danificado na área. -unit.phantom.description = Um drone avançado. Segue utilizadores. Ajuda na construção de blocos. -unit.dagger.description = A mais básica armadura terrestre. Barato para produzir. Esmagadora quando usada em enxames. -unit.crawler.description = Uma unidade terrestre que consiste em um despojado quadro com grandes explosivos amarrados no topo. Não particularmente durável. Explode no contato com inimigos. -unit.titan.description = Uma avançada unidade terrestre armadurada. Ataca alvos aéreos e terrestres. Equipada com dois pequenos lança chamas. -unit.fortress.description = Uma armadura de artilharia pesada. Equipada com dois canhões tipo granizo modificados para assalto de longa distância em estruturas e unidades inimigas. -unit.eruptor.description = Uma unidade pesada desenhada para derrubar estruturas. Atira um monte de escória nas fortificações inimigas, derretendo e colocando-as em chamas. -unit.wraith.description = Uma rápida, unidade interceptadora hit-and-run (atacar e correr). Mira em geradores de energia. -unit.ghoul.description = Um bombardeiro pesado. Rompe estruturas inimigas, mirando em infraestrutura crítica. -unit.revenant.description = Uma matriz de mísseis pesada e flutuante. + block.message.description = Armazena uma mensagem. Usado para comunicação entre aliados. block.graphite-press.description = Comprime pedaços de carvão em lâminas de grafite puro. block.multi-press.description = Uma versão melhorada da prensa de grafite. Usa água e energia para processar carvão rápida e eficientemente. @@ -1221,15 +1227,5 @@ block.ripple.description = Uma grande torre que atira simultaneamente. block.cyclone.description = Uma grande torre de tiro rapido. block.spectre.description = Uma grande torre que da dois tiros poderosos ao mesmo tempo. block.meltdown.description = Uma grande torre que atira dois raios poderosos ao mesmo tempo. -block.command-center.description = Emite comandos de movimento para unidades aliadas através do mapa.\nFaz unidades se reagruparem, atacarem um núcleo inimigo ou recuar para o núcleo/fábrica. Quando não há nucleo inimigo, unidades vão ficar perto da área de spawn dos inimigos sob o comando atacar. -block.draug-factory.description = Produz drones de mineração drawg. -block.spirit-factory.description = produz drones Spirit de reparo estrutural. -block.phantom-factory.description = Produz drones de construção avançados. -block.wraith-factory.description = Produz unidades rápidas hit-and-run (atacar e correr) -block.ghoul-factory.description = Produz bombardeiros pesados. -block.revenant-factory.description = Produz unidades laser, pesadas e terrestres. -block.dagger-factory.description = Produz unidades terrestres. -block.crawler-factory.description = Produces fast self-destructing swarm units. -block.titan-factory.description = Produz unidades avancadas, armaduradas e terrestres. -block.fortress-factory.description = Produz unidades terrestres pesadas de artilharia. block.repair-point.description = Continuamente repara a unidade danificada mais proxima. +block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. diff --git a/core/assets/bundles/bundle_sv.properties b/core/assets/bundles/bundle_sv.properties index 225cc63a90..4b2683be98 100644 --- a/core/assets/bundles/bundle_sv.properties +++ b/core/assets/bundles/bundle_sv.properties @@ -1,4 +1,3 @@ - credits.text = Skapad av [royal]Anuken[] - [sky]anukendev@gmail.com[] credits = Medverkande contributors = Översättare och medarbetare @@ -107,6 +106,7 @@ mods.guide = Modding Guide mods.report = Report Bug mods.openfolder = Open Mod Folder mods.reload = Reload +mods.reloadexit = The game will now exit, to reload mods. mod.display = [gray]Mod:[orange] {0} mod.enabled = [lightgray]Enabled mod.disabled = [scarlet]Disabled @@ -125,6 +125,7 @@ mod.reloadrequired = [scarlet]Reload Required mod.import = Import Mod mod.import.file = Import File mod.import.github = Import GitHub Mod +mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source! mod.item.remove = This item is part of the[accent] '{0}'[] mod. To remove it, uninstall that mod. mod.remove.confirm = This mod will be deleted. mod.author = [lightgray]Author:[] {0} @@ -225,7 +226,6 @@ save.new = Ny sparfil save.overwrite = Are you sure you want to overwrite\nthis save slot? overwrite = Skriv över save.none = Inga sparfiler hittade! -saveload = [accent]Sparar... savefail = Kunde inte spara spelet! save.delete.confirm = Är du säker att du vill radera den här sparfilen? save.delete = Radera @@ -273,6 +273,7 @@ quit.confirm.tutorial = Are you sure you know what you're doing?\nThe tutorial c loading = [accent]Läser in... reloading = [accent]Reloading Mods... saving = [accent]Sparar... +respawn = [accent][[{0}][] to respawn in core cancelbuilding = [accent][[{0}][] to clear plan selectschematic = [accent][[{0}][] to select+copy pausebuilding = [accent][[{0}][] to pause building @@ -329,8 +330,9 @@ waves.never = waves.every = var waves.waves = våg(or) waves.perspawn = per spawn +waves.shields = shields/wave waves.to = till -waves.boss = Boss +waves.guardian = Guardian waves.preview = Förhandsvisning waves.edit = Ändra... waves.copy = Kopiera till Urklipp @@ -461,6 +463,7 @@ requirement.unlock = Unlock {0} resume = Resume Zone:\n[lightgray]{0} bestwave = [lightgray]Best Wave: {0} launch = < LAUNCH > +launch.text = Launch launch.title = Launch Successful launch.next = [lightgray]next opportunity at wave {0} launch.unable2 = [scarlet]Unable to LAUNCH.[] @@ -468,13 +471,13 @@ launch.confirm = This will launch all resources in your core.\nYou will not be a launch.skip.confirm = If you skip now, you will not be able to launch until later waves. uncover = Uncover configure = Configure Loadout +loadout = Loadout +resources = Resources bannedblocks = Banned Blocks addall = Add All -configure.locked = [lightgray]Unlock configuring loadout: {0}. configure.invalid = Amount must be a number between 0 and {0}. zone.unlocked = [lightgray]{0} unlocked. zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met. -zone.config.unlocked = Loadout unlocked:[lightgray]\n{0} zone.resources = [lightgray]Resources Detected: zone.objective = [lightgray]Objective: [accent]{0} zone.objective.survival = Survive @@ -493,35 +496,29 @@ error.io = Network I/O error. error.any = Okänt nätverksfel. error.bloom = Failed to initialize bloom.\nYour device may not support it. -zone.groundZero.name = Ground Zero -zone.desertWastes.name = Desert Wastes -zone.craters.name = Kratrar -zone.frozenForest.name = Frusen Skog -zone.ruinousShores.name = Ruinous Shores -zone.stainedMountains.name = Stained Mountains -zone.desolateRift.name = Desolate Rift -zone.nuclearComplex.name = Nuclear Production Complex -zone.overgrowth.name = Överväxt -zone.tarFields.name = Tjärfält -zone.saltFlats.name = Salt Flats -zone.impact0078.name = Impact 0078 -zone.crags.name = Crags -zone.fungalPass.name = Fungal Pass +sector.groundZero.name = Ground Zero +sector.craters.name = The Craters +sector.frozenForest.name = Frozen Forest +sector.ruinousShores.name = Ruinous Shores +sector.stainedMountains.name = Stained Mountains +sector.desolateRift.name = Desolate Rift +sector.nuclearComplex.name = Nuclear Production Complex +sector.overgrowth.name = Overgrowth +sector.tarFields.name = Tar Fields +sector.saltFlats.name = Salt Flats +sector.fungalPass.name = Fungal Pass -zone.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. -zone.frozenForest.description = Even here, closer to mountains, the spores have spread. The fridgid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. -zone.desertWastes.description = These wastes are vast, unpredictable, and criss-crossed with derelict sector structures.\nCoal is present in the region. Burn it for power, or synthesize graphite.\n\n[lightgray]This landing location cannot be guaranteed. -zone.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. -zone.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. -zone.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. -zone.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units. -zone.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build Titan units. Destroy it. Reclaim that which was lost. -zone.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. -zone.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. -zone.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. -zone.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. -zone.impact0078.description = -zone.crags.description = +sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. +sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. +sector.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. +sector.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. +sector.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. +sector.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units. +sector.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build Titan units. Destroy it. Reclaim that which was lost. +sector.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. +sector.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. +sector.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. +sector.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. settings.language = Språk settings.data = Game Data @@ -538,6 +535,7 @@ settings.clearall.confirm = [scarlet]WARNING![]\nThis will clear all data, inclu paused = [accent]< Pausat > clear = Clear banned = [scarlet]Banned +unplaceable.sectorcaptured = [scarlet]Requires captured sector yes = Ja no = Nej info.title = Info @@ -583,6 +581,8 @@ blocks.reload = Shots/Second blocks.ammo = Ammunition bar.drilltierreq = Bättre Borr Krävs +bar.noresources = Missing Resources +bar.corereq = Core Base Required bar.drillspeed = Drill Speed: {0}/s bar.pumpspeed = Pump Speed: {0}/s bar.efficiency = Effektivitet: {0}% @@ -592,11 +592,12 @@ bar.poweramount = Power: {0} bar.poweroutput = Power Output: {0} bar.items = Föremål: {0} bar.capacity = Capacity: {0} +bar.unitcap = {0} {1}/{2} +bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled] bar.liquid = Vätska bar.heat = Hetta bar.power = Power bar.progress = Build Progress -bar.spawned = Units: {0}/{1} bar.input = Input bar.output = Output @@ -640,6 +641,7 @@ setting.linear.name = Linear Filtering setting.hints.name = Hints setting.flow.name = Display Resource Flow Rate[scarlet] (experimental) setting.buildautopause.name = Auto-Pause Building +setting.mapcenter.name = Auto Center Map To Player setting.animatedwater.name = Animerat Vatten setting.animatedshields.name = Animerade Sköldar setting.antialias.name = Antialias[lightgray] (requires restart)[] @@ -664,7 +666,6 @@ setting.effects.name = Visa Effekter setting.destroyedblocks.name = Display Destroyed Blocks setting.blockstatus.name = Display Block Status setting.conveyorpathfinding.name = Conveyor Placement Pathfinding -setting.coreselect.name = Allow Schematic Cores setting.sensitivity.name = Controller Sensitivity setting.saveinterval.name = Save Interval setting.seconds = {0} Sekunder @@ -673,12 +674,15 @@ setting.milliseconds = {0} milliseconds setting.fullscreen.name = Fullskärm setting.borderlesswindow.name = Borderless Window[lightgray] (may require restart) setting.fps.name = Show FPS +setting.smoothcamera.name = Smooth Camera setting.blockselectkeys.name = Show Block Select Keys setting.vsync.name = VSync setting.pixelate.name = Pixellera[lightgray] (disables animations) setting.minimap.name = Visa Minikarta +setting.coreitems.name = Display Core Items (WIP) setting.position.name = Show Player Position setting.musicvol.name = Musikvolym +setting.atmosphere.name = Show Planet Atmosphere setting.ambientvol.name = Ambient Volume setting.mutemusic.name = Stäng Av Musik setting.sfxvol.name = Ljudeffektvolym @@ -701,10 +705,13 @@ keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only category.general.name = General category.view.name = View category.multiplayer.name = Multiplayer +category.blocks.name = Block Select command.attack = Attack command.rally = Rally command.retreat = Retreat placement.blockselectkeys = \n[lightgray]Key: [{0}, +keybind.respawn.name = Respawn +keybind.control.name = Control Unit keybind.clear_building.name = Clear Building keybind.press = Press a key... keybind.press.axis = Press an axis or key... @@ -714,7 +721,7 @@ keybind.toggle_block_status.name = Toggle Block Statuses keybind.move_x.name = Move x keybind.move_y.name = Move y keybind.mouse_move.name = Follow Mouse -keybind.dash.name = Dash +keybind.boost.name = Boost keybind.schematic_select.name = Select Region keybind.schematic_menu.name = Schematic Menu keybind.schematic_flip_x.name = Flip Schematic X @@ -776,30 +783,25 @@ rules.wavetimer = Vågtimer rules.waves = Vågor rules.attack = Attack Mode rules.enemyCheat = Infinite AI (Red Team) Resources -rules.unitdrops = Unit Drops +rules.blockhealthmultiplier = Block Health Multiplier +rules.blockdamagemultiplier = Block Damage Multiplier rules.unitbuildspeedmultiplier = Unit Production Speed Multiplier rules.unithealthmultiplier = Unit Health Multiplier -rules.blockhealthmultiplier = Block Health Multiplier -rules.playerhealthmultiplier = Player Health Multiplier -rules.playerdamagemultiplier = Player Damage Multiplier rules.unitdamagemultiplier = Unit Damage Multiplier rules.enemycorebuildradius = Enemy Core No-Build Radius:[lightgray] (tiles) -rules.respawntime = Respawn Time:[lightgray] (sec) rules.wavespacing = Wave Spacing:[lightgray] (sec) rules.buildcostmultiplier = Build Cost Multiplier rules.buildspeedmultiplier = Build Speed Multiplier rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier rules.waitForWaveToEnd = Waves wait for enemies rules.dropzoneradius = Drop Zone Radius:[lightgray] (tiles) -rules.respawns = Max respawns per wave -rules.limitedRespawns = Limit Respawns +rules.unitammo = Units Require Ammo rules.title.waves = Vågor -rules.title.respawns = Respawns rules.title.resourcesbuilding = Resources & Building -rules.title.player = Spelare rules.title.enemy = Fiender rules.title.unit = Units rules.title.experimental = Experimental +rules.title.environment = Environment rules.lighting = Lighting rules.ambientlight = Ambient Light rules.solarpowermultiplier = Solar Power Multiplier @@ -828,7 +830,6 @@ liquid.water.name = Vatten liquid.slag.name = Slag liquid.oil.name = Olja liquid.cryofluid.name = Cryofluid -item.corestorable = [lightgray]Storable in Core: {0} item.explosiveness = [lightgray]Explosiveness: {0}% item.flammability = [lightgray]Flammability: {0}% item.radioactivity = [lightgray]Radioactivity: {0}% @@ -844,6 +845,32 @@ liquid.heatcapacity = [lightgray]Heat Capacity: {0} liquid.viscosity = [lightgray]Viskositet: {0} liquid.temperature = [lightgray]Temperatur: {0} +unit.dagger.name = Dagger +unit.mace.name = Mace +unit.fortress.name = Fortress +unit.nova.name = Nova +unit.pulsar.name = Pulsar +unit.quasar.name = Quasar +unit.crawler.name = Crawler +unit.atrax.name = Atrax +unit.spiroct.name = Spiroct +unit.arkyid.name = Arkyid +unit.flare.name = Flare +unit.horizon.name = Horizon +unit.zenith.name = Zenith +unit.antumbra.name = Antumbra +unit.eclipse.name = Eclipse +unit.mono.name = Mono +unit.poly.name = Poly +unit.mega.name = Mega +unit.risse.name = Risse +unit.minke.name = Minke +unit.bryde.name = Bryde +unit.alpha.name = Alpha +unit.beta.name = Beta +unit.gamma.name = Gamma + +block.parallax.name = Parallax block.cliff.name = Cliff block.sand-boulder.name = Sandbumling block.grass.name = Gräs @@ -995,17 +1022,6 @@ block.blast-mixer.name = Blast Mixer block.solar-panel.name = Solpanel block.solar-panel-large.name = Stor Solpanel block.oil-extractor.name = Oljeextraktor -block.command-center.name = Kommandocenter -block.draug-factory.name = Draug Miner Drone Factory -block.spirit-factory.name = Spirit Repair Drone Factory -block.phantom-factory.name = Phantom Builder Drone Factory -block.wraith-factory.name = Wraith Fighter Factory -block.ghoul-factory.name = Ghoul Bomber Factory -block.dagger-factory.name = Dagger Mech Factory -block.crawler-factory.name = Crawler Mech Factory -block.titan-factory.name = Titan Mech Factory -block.fortress-factory.name = Fortress Mech Factory -block.revenant-factory.name = Revenant Fighter Factory block.repair-point.name = Repairationspunkt block.pulse-conduit.name = Pulse Conduit block.plated-conduit.name = Plated Conduit @@ -1037,6 +1053,19 @@ block.meltdown.name = Meltdown block.container.name = Container block.launch-pad.name = Launch Pad block.launch-pad-large.name = Large Launch Pad +block.segment.name = Segment +block.ground-factory.name = Ground Factory +block.air-factory.name = Air Factory +block.naval-factory.name = Naval Factory +block.additive-reconstructor.name = Additive Reconstructor +block.multiplicative-reconstructor.name = Multiplicative Reconstructor +block.exponential-reconstructor.name = Exponential Reconstructor +block.tetrative-reconstructor.name = Tetrative Reconstructor +block.mass-conveyor.name = Mass Conveyor +block.payload-router.name = Payload Router +block.disassembler.name = Disassembler +block.silicon-crucible.name = Silicon Crucible +block.large-overdrive-projector.name = Large Overdrive Projector team.blue.name = blåa team.crux.name = röda team.sharded.name = orangea @@ -1044,21 +1073,7 @@ team.orange.name = orangea team.derelict.name = derelicta team.green.name = gröna team.purple.name = lila -unit.spirit.name = Spirit Repair Drone -unit.draug.name = Draug Miner Drone -unit.phantom.name = Phantom Builder Drone -unit.dagger.name = Dagger -unit.crawler.name = Crawler -unit.titan.name = Titan -unit.ghoul.name = Ghoul Bomber -unit.wraith.name = Wraith Fighter -unit.fortress.name = Fortress -unit.revenant.name = Revenant -unit.eruptor.name = Eruptor -unit.chaos-array.name = Chaos Array -unit.eradicator.name = Eradikator -unit.lich.name = Lich -unit.reaper.name = Reaper + tutorial.next = [lightgray] tutorial.intro = You have entered the[scarlet] Mindustry Tutorial.[]\nBegin by[accent] mining copper[]. Tap a copper ore vein near your core to do this.\n\n[accent]{0}/{1} copper tutorial.intro.mobile = You have entered the[scarlet] Mindustry Tutorial.[]\nSwipe the screen to move.\n[accent]Pinch with 2 fingers [] to zoom in and out.\nBegin by[accent] mining copper[]. Move close to it, then tap a copper ore vein near your core to do this.\n\n[accent]{0}/{1} copper @@ -1101,17 +1116,7 @@ liquid.water.description = The most useful liquid. Commonly used for cooling mac liquid.slag.description = Various different types of molten metal mixed together. Can be separated into its constituent minerals, or sprayed at enemy units as a weapon. liquid.oil.description = A liquid used in advanced material production. Can be converted into coal as fuel, or sprayed and set on fire as a weapon. liquid.cryofluid.description = An inert, non-corrosive liquid created from water and titanium. Has extremely high heat capacity. Extensively used as coolant. -unit.draug.description = A primitive mining drone. Cheap to produce. Expendable. Automatically mines copper and lead in the vicinity. Delivers mined resources to the closest core. -unit.spirit.description = A modified draug drone, designed for repair instead of mining. Automatically fixes any damaged blocks in the area. -unit.phantom.description = An advanced drone unit. Follows users. Assists in block construction. -unit.dagger.description = The most basic ground mech. Cheap to produce. Overwhelming when used in swarms. -unit.crawler.description = A ground unit consisting of a stripped-down frame with high explosives strapped on top. Not particular durable. Explodes on contact with enemies. -unit.titan.description = An advanced, armored ground unit. Attacks both ground and air targets. Equipped with two miniature Scorch-class flamethrowers. -unit.fortress.description = A heavy artillery mech. Equipped with two modified Hail-type cannons for long-range assault on enemy structures and units. -unit.eruptor.description = A heavy mech designed to take down structures. Fires a stream of slag at enemy fortifications, melting them and setting volatiles on fire. -unit.wraith.description = A fast, hit-and-run interceptor unit. Targets power generators. -unit.ghoul.description = A heavy carpet bomber. Rips through enemy structures, targeting critical infrastructure. -unit.revenant.description = A heavy, hovering missile array. + block.message.description = Stores a message. Used for communication between allies. block.graphite-press.description = Compresses chunks of coal into pure sheets of graphite. block.multi-press.description = An upgraded version of the graphite press. Employs water and power to process coal quickly and efficiently. @@ -1222,15 +1227,5 @@ block.ripple.description = An extremely poweful artillery turret. Shoots cluster block.cyclone.description = A large anti-air and anti-ground turret. Fires explosive clumps of flak at nearby units. block.spectre.description = A massive dual-barreled cannon. Shoots large armor-piercing bullets at air and ground targets. block.meltdown.description = A massive laser cannon. Charges and fires a persistent laser beam at nearby enemies. Requires coolant to operate. -block.command-center.description = Issues movement commands to allied units across the map.\nCauses units to patrol, attack an enemy core or retreat to the core/factory. When no enemy core is present, units will default to patrolling under the attack command. -block.draug-factory.description = Produces Draug mining drones. -block.spirit-factory.description = Produces Spirit structural repair drones. -block.phantom-factory.description = Produces advanced construction drones. -block.wraith-factory.description = Produces fast, hit-and-run interceptor units. -block.ghoul-factory.description = Produces heavy carpet bombers. -block.revenant-factory.description = Produces heavy missile-based units. -block.dagger-factory.description = Produces basic ground units. -block.crawler-factory.description = Produces fast self-destructing swarm units. -block.titan-factory.description = Produces advanced, armored ground units. -block.fortress-factory.description = Produces heavy artillery ground units. block.repair-point.description = Continuously heals the closest damaged unit in its vicinity. +block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. diff --git a/core/assets/bundles/bundle_th.properties b/core/assets/bundles/bundle_th.properties index 495623da38..31bc7c33c0 100644 --- a/core/assets/bundles/bundle_th.properties +++ b/core/assets/bundles/bundle_th.properties @@ -40,6 +40,7 @@ schematic = แผนผัง schematic.add = กำลังบันทึกแผนผัง... schematics = แผนผัง schematic.replace = มีแผนผังที่ใช้ชื่อนี้แล้ว. แทนที่เลยไหม? +schematic.exists = A schematic by that name already exists. schematic.import = นำเข้าแผนผัง... schematic.exportfile = ส่งออกไฟล์ schematic.importfile = นำเข้าไฟล์ @@ -59,6 +60,7 @@ stat.built = จำนวนสิ่งก่อสร้างที่สร stat.destroyed = จำนวนสิ่งก่อสร้างของศัตรูที่ทำลายไปได้:[accent] {0} stat.deconstructed = จำนวนสิ่งก่อสร้างที่ถูกทำลายไป:[accent] {0} stat.delivered = ทรัพยากรที่ส่งไปได้: +stat.playtime = Time Played:[accent] {0} stat.rank = ระดับ: [accent]{0} launcheditems = [accent]ไอเท็มที่ส่งไปได้ @@ -67,7 +69,6 @@ map.delete = คุณแน่ใจหรือว่าจะลบแมพ level.highscore = คะแนนสูงสุด: [accent]{0} level.select = เลือกด่าน level.mode = เกมโหมด: -showagain = ไม่แสดงอีกในครั้งต่อไป coreattack = < แกนกลางกำลังถูกโจมตี! > nearpoint = [[ [scarlet]ออกจากดรอปพอยท์ด่วน IMMEDIATELY[] ]\nการทำลายล้างกำลังใกล้เข้ามา database = ฐานข้อมูหลัง @@ -105,6 +106,7 @@ mods.guide = คู่มือการทำมอด mods.report = รายงานบัค mods.openfolder = เปิดมอดโฟลเดอร์ mods.reload = Reload +mods.reloadexit = The game will now exit, to reload mods. mod.display = [gray]Mod:[orange] {0} mod.enabled = [lightgray]เปิดใช้งาน mod.disabled = [scarlet]ปิดใช้งาน @@ -123,6 +125,7 @@ mod.reloadrequired = [scarlet]จำเป็นต้องรีโหลด mod.import = นำเข้ามอด mod.import.file = Import File mod.import.github = นำเข้ามอดจาก Github +mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source! mod.item.remove = This item is part of the[accent] '{0}'[] mod. To remove it, uninstall that mod. mod.remove.confirm = มอดนี้จะถูกลบ mod.author = [lightgray]ผู้สร้าง:[] {0} @@ -223,7 +226,6 @@ save.new = เซฟใหม่ save.overwrite = คุณแใจหรือว่าจะเซฟทับ\nเซฟนี้? overwrite = เขียนทับ save.none = ไม่พบเซฟ! -saveload = กำลังเซฟ... savefail = เซฟเกมผิดพลาด! save.delete.confirm = คุณแน่ใจหรือว่าจะลบเซฟนี้? save.delete = ลบ @@ -271,6 +273,7 @@ quit.confirm.tutorial = คุณแน่ใจหรือว่าคุณ loading = [accent]กำลังโหลด... reloading = [accent]กำลังรีโหลดมอด... saving = [accent]กำลังเซฟ... +respawn = [accent][[{0}][] to respawn in core cancelbuilding = [accent][[{0}][]เพื่อเคลียแผน selectschematic = [accent][[{0}][]เพื่อเลือกและคัดลอก pausebuilding = [accent][[{0}][]เพื่อหยุดการสร้างชั่วคราว @@ -327,8 +330,9 @@ waves.never = waves.every = ทุกๆ waves.waves = wave(s) waves.perspawn = ต่อสปาวน์ +waves.shields = shields/wave waves.to = to -waves.boss = บอส +waves.guardian = Guardian waves.preview = พรีวิว waves.edit = แก้ไข... waves.copy = คัดลอกไปยังคลิปบอร์ด @@ -459,6 +463,7 @@ requirement.unlock = ปลดล็อค {0} resume = เล่นต่อในโซน:\n[lightgray]{0} bestwave = [lightgray]Wave สูงสุด: {0} launch = < ส่ง > +launch.text = Launch launch.title = ส่งเรียบร้อย launch.next = [lightgray]โอกาสครั้งหน้าที่ wave {0} launch.unable2 = [scarlet]ไม่สามารถส่งได้[] @@ -466,13 +471,13 @@ launch.confirm = นี่จะส่งทรัพยากรทั้งห launch.skip.confirm = ถ้าคุณข้ามตอนนี้, คุณจะไม่สามารถส่งจนกว่าจะถึง waves ต่อๆไป uncover = เปิดเผย configure = ตั้งค่า Loadout +loadout = Loadout +resources = Resources bannedblocks = Banned Blocks addall = เพิ่มทั้งหมด -configure.locked = [lightgray]ปลดล็อคการตั้งค่า loadout: {0}. configure.invalid = จำนวนต้อยู่ระหว่าง 0 ถึง {0}. zone.unlocked = [lightgray]{0} ปลดล็อคแล้ว zone.requirement.complete = ข้อเรียกร้องสำหรับ {0} สำเร็จแล้ว:[lightgray]\n{1} -zone.config.unlocked = Loadout ปลดล็อคแล้ว:[lightgray]\n{0} zone.resources = [lightgray]ทรัพยากรที่พบ: zone.objective = [lightgray]เป้าหมาย: [accent]{0} zone.objective.survival = เอาชีวิตรอด @@ -491,35 +496,29 @@ error.io = Network I/O error. error.any = Unknown network error. error.bloom = ไม่สามารถเริ่มต้น bloom ได้\nอุปกรณ์ของคุณอาจไม่รองรับ -zone.groundZero.name = Ground Zero -zone.desertWastes.name = Desert Wastes -zone.craters.name = The Craters -zone.frozenForest.name = Frozen Forest -zone.ruinousShores.name = Ruinous Shores -zone.stainedMountains.name = Stained Mountains -zone.desolateRift.name = Desolate Rift -zone.nuclearComplex.name = Nuclear Production Complex -zone.overgrowth.name = Overgrowth -zone.tarFields.name = Tar Fields -zone.saltFlats.name = Salt Flats -zone.impact0078.name = Impact 0078 -zone.crags.name = Crags -zone.fungalPass.name = Fungal Pass +sector.groundZero.name = Ground Zero +sector.craters.name = The Craters +sector.frozenForest.name = Frozen Forest +sector.ruinousShores.name = Ruinous Shores +sector.stainedMountains.name = Stained Mountains +sector.desolateRift.name = Desolate Rift +sector.nuclearComplex.name = Nuclear Production Complex +sector.overgrowth.name = Overgrowth +sector.tarFields.name = Tar Fields +sector.saltFlats.name = Salt Flats +sector.fungalPass.name = Fungal Pass -zone.groundZero.description = ตำแหน่งเริ่มต้นที่ดีที่สุด ภัยคุกคามจากศัตรูน้อย ทรัพยากรก็น้อยเช่นกัน\nรวบรวมตะกั่วและทองแดงให้ได้มากที่สุดเท่าที่จะทำได้\nแล้วเดินหน้าต่อ -zone.frozenForest.description = แม้แต่ที่นี่อยู่ใกล้กับภูเขา สปอร์ก็สามารถแพร่มาถึงได้. อุณภูมิที่เยือกเย็นไม่สามารถจำกัดวงของมันได้ตลอดไป.\n\nเริ่มลองใช้พลังงาน สร้างเครื่องกำเนิดไฟฟ้าเผาไหม้ เรียนรู้ที่จะใช้ menders. -zone.desertWastes.description = ของเสียพวกนี้กินบริเวณกว้าง คาดการณ์ไม่ได้ และมีสิ่งก่อสร้างที่ถูกถอดทิ้งอยู่\nมีถ่านหินอยู่ในบริเวณนี้. นำมันไปเผาเพื่อเปลี่ยนเป็นพลังงานหรือนำไปสังเคราะห์เป็นกราไฟต์\n\n[lightgray]ตำแหน่ง landing ไม่สามารถการันตีได้ -zone.saltFlats.description = ภายนอกเขตทะเลทรายเป็นที่ตั้งของ Salt Flats. พบทรัพยากรในบริเวณนี้ค่อนข้างน้อย\n\nศัตรูสร้างที่เก็บทรัพยากรไว้ที่นี่. กำจัด core ของพวกมัน. อย่าให้มีอะไรเหลือ -zone.craters.description = น้ำถูกเก็บสะสมในปล่องผู้เขาไฟนี้, เป็นสิ่งที่ตกทอดมาจากสงครามเก่า บุกเบิกพื้นที่ เก็บทราย เผากระจกเมต้า. ปั๊มน้ำมาใช้หล่อเย็นป้อมปืนและเครื่องขุด -zone.ruinousShores.description = อยู่ถัดไปจาก the wastes, คือเส้นชายทะเล. เมื่อก่อนนั้น, สถานที่นี้เป็นที่ตั้งของแนวป้องกันชายฝั่ง. ร่องรอยของมันหลงเหลือไม่มาก. เหลือแค่สิ่งก่อสร้างป้องกันพื้นฐานเท่านั้นที่ปราศจากอัตราย, อย่างอื่นทุกอย่างกลายเป็นเศษเหล็กทั้งหมด.\nขยายออกไปข้างนอกต่อไป ค้นพบกับเทศโนโลยีอีกครั้ง. -zone.stainedMountains.description = ถัดเข้าไปบนพื้นดิน จะพบกับภูเขาจำนวนหนึ่ง, ซึ่งยังคงบริสุทธิ์จากสปอร์\nขุดไทเทเนียมที่อุดมสมบูรณ์ในบริเวณนี้. เรียนรู้ที่จะใช้มัน.\n\nศัตรูที่นี่จะมามากขึ้น. อย่าให้พวกมันส่งยูนิตที่แข็งแกร่งที่สุด -zone.overgrowth.description = พื้นที่รก, ใกล้กับแหล่งที่มาของสปอร์.\nศัตรูได้ตั้งหน้าด่านที่นี่ สร้างยูนิตไททัน. ทำลายมัน เรียกคืนในสิ่งที่เราสูญเสียไป. -zone.tarFields.description = ภายนอกเขตของพื้นที่ผลิตน้ำมัน, อยู่ระหว่าภูเขาและทะเลทราย. หนึ่งในพื้นที่ที่มีบ่อน้ำมันดิบที่ใช้งานได้ \nถึงแม้ว่าจะถูกทิ้งร้าง, พื้นที่นี้ยังคงมีกำลังพลของศัตรูอยู่ใกล้ๆ. อย่าประเมิณพวกมันต่ำไป.\n\n[lightgray]วิจัยเทคโนโลยีแปรรูปน้ำมันถ้าเป็นไปได้ -zone.desolateRift.description = พื้นที่ที่อันตรายมาก เต็มไปด้วยทรัพยากร แต่มีพื้นที่น้อย. ความเสี่ยงวิบัตสูง. ออกไปให้เร็วที่สุด. อย่าให้ถูกหลอกจากช่วงเวลาที่ห่างกันมากในแต่ละการโจมตีของศัตรู -zone.nuclearComplex.description = โรงงานขุดและแปรรูปทอเรี่ยมเก่า, เหลือแค่ซากปรักหักพัง.\n[lightgray]วิจัยทอเรียมและการใช้งานที่มากมายของมัน.\n\nศัตรูที่นี่มาในจำนวนที่เยอะ คอยสอดส่องเพื่อหาจังหวะโจมตี -zone.fungalPass.description = พื้นที่ขั้นกลางระหว่างภูเขาสูงและ spore-ridden lands ที่ต่ำลงมา. ฐานทัพลาดตระเวนของศัตรูตั้งอยู่ที่นี่.\nทำลายมันซะ.\nใช้ยูนิต Dagger และ Crawler. ทำลาย core ทั้งสอง. -zone.impact0078.description = <ใส่คำบรรยายที่นี่> -zone.crags.description = <ใส่คำบรรยายที่นี่> +sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. +sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. +sector.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. +sector.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. +sector.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. +sector.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units. +sector.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build Titan units. Destroy it. Reclaim that which was lost. +sector.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. +sector.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. +sector.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. +sector.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. settings.language = ภาษา settings.data = ข้อมูลเกม @@ -536,6 +535,7 @@ settings.clearall.confirm = [scarlet]คำเตือน![]\nการกร paused = [accent]< หยุดชั่วคราว > clear = เคลียร์ banned = [scarlet]แบน +unplaceable.sectorcaptured = [scarlet]Requires captured sector yes = ใช่ no = ไม่ info.title = ข้อมูล @@ -581,6 +581,8 @@ blocks.reload = นัด/วินาที blocks.ammo = กระสุน bar.drilltierreq = จำเป็นต้องใช้เครื่องขุดที่ดีกว่า +bar.noresources = Missing Resources +bar.corereq = Core Base Required bar.drillspeed = ความเร็วขุด: {0}/s bar.pumpspeed = ความเร็วปั้ม: {0}/s bar.efficiency = ประสิทธิภาพ: {0}% @@ -590,11 +592,12 @@ bar.poweramount = พลังงาน: {0} bar.poweroutput = พลังงานออก: {0} bar.items = ไอเท็ม: {0} bar.capacity = ความจุ: {0} +bar.unitcap = {0} {1}/{2} +bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled] bar.liquid = ของเหลว bar.heat = ความร้อน bar.power = พลังงาน bar.progress = ความคืบหน้าในการสร้าง -bar.spawned = จำนวนยูนิตทั้งหมด: {0}/{1} bar.input = นำเข้า bar.output = ส่งออก @@ -638,6 +641,7 @@ setting.linear.name = การกรองเชิงเส้น setting.hints.name = คำแนะนำ setting.flow.name = Display Resource Flow Rate[scarlet] (experimental) setting.buildautopause.name = หยุดสร้างชั่วคราวแบบอัตโนมัติ +setting.mapcenter.name = Auto Center Map To Player setting.animatedwater.name = แอนิเมชั่นน้ำ setting.animatedshields.name = แอนิเมชั่นเกราะ setting.antialias.name = Antialias[lightgray] (จำเป็นต้องรีสตาร์ท)[] @@ -662,7 +666,6 @@ setting.effects.name = แสดงเอฟเฟ็ค setting.destroyedblocks.name = แสดงบล็อคที่ถูกทำลาย setting.blockstatus.name = Display Block Status setting.conveyorpathfinding.name = Pathfinding -setting.coreselect.name = Allow Schematic Cores setting.sensitivity.name = ความไวของตัวควบคุม setting.saveinterval.name = ระยะห่าวระหว่างเซฟ setting.seconds = {0} วินาที @@ -671,12 +674,15 @@ setting.milliseconds = {0} milliseconds setting.fullscreen.name = เต็มจอ setting.borderlesswindow.name = วินโดว์แบบไร้ขอบ[lightgray] (อาจจะต้องรีตาร์ท) setting.fps.name = แสดง FPS และ Ping +setting.smoothcamera.name = Smooth Camera setting.blockselectkeys.name = Show Block Select Keys setting.vsync.name = VSync setting.pixelate.name = Pixelate[lightgray] (ปิดใช้งานแอนิเมชั่น) setting.minimap.name = แสดงมินิแมพ +setting.coreitems.name = Display Core Items (WIP) setting.position.name = แสดงตำแหน่งของผู้เล่น setting.musicvol.name = ระดับเสียงเพลง +setting.atmosphere.name = Show Planet Atmosphere setting.ambientvol.name = ระดับเสียงล้อมรอบ setting.mutemusic.name = ปิดเพลง setting.sfxvol.name = ระดับเสียง SFX @@ -699,10 +705,13 @@ keybinds.mobile = [scarlet]การตั้งค่าปุ่มส่ว category.general.name = ทั่วไป category.view.name = วิว category.multiplayer.name = ผู้เล่นหลายคน +category.blocks.name = Block Select command.attack = โจมตี command.rally = ชุมนุม command.retreat = ถอยกลับ placement.blockselectkeys = \n[lightgray]Key: [{0}, +keybind.respawn.name = Respawn +keybind.control.name = Control Unit keybind.clear_building.name = เคลียร์สิ่งก็สร้าง keybind.press = กดปุ่มใดก็ได้... keybind.press.axis = กดแกนหรือปุ่มใดก็ได้... @@ -712,7 +721,7 @@ keybind.toggle_block_status.name = Toggle Block Statuses keybind.move_x.name = เคลื่อนที่ในแกน x keybind.move_y.name = เคลี่อนที่ในแกน y keybind.mouse_move.name = ตามเม้าส์ -keybind.dash.name = พุ่ง +keybind.boost.name = Boost keybind.schematic_select.name = เลือกภูมิภาค keybind.schematic_menu.name = เมนู Schematic keybind.schematic_flip_x.name = กลับ Schematic ในแกน X @@ -774,29 +783,25 @@ rules.wavetimer = ตัวนับเวลาปล่อยคลื่น( rules.waves = คลื่น(รอบ) rules.attack = โหมดการโจมตี rules.enemyCheat = AI (ทีมสีแดง) มีทรัพยากรไม่จำกัด -rules.unitdrops = ยูนิตดรอป +rules.blockhealthmultiplier = พหุคูณเลือดของบล็อค +rules.blockdamagemultiplier = Block Damage Multiplier rules.unitbuildspeedmultiplier = พหุคูณความเร็วในการสร้างยูนิต rules.unithealthmultiplier = พหุคูณเลือดของยูนิต -rules.blockhealthmultiplier = พหุคูณเลือดของบล็อค -rules.playerhealthmultiplier = พหุคูณเลือดของผู้เล่น -rules.playerdamagemultiplier = พหุคูณพลังโจมตีของผู้เล่น rules.unitdamagemultiplier = พหุคูณพลังโจมตีของยูนิต rules.enemycorebuildradius = รัศมีห้ามสร้างบริเวณแกนกลางของศัตรู:[lightgray] (ช่อง) -rules.respawntime = ความเร็วในการเกิดใหม่:[lightgray] (วินาที) rules.wavespacing = ระยะเวลาระหว่างคลื่น(รอบ):[lightgray] (วินาที) rules.buildcostmultiplier = พหุคูณจำนวนทรัพยากรที่ใช้ในการสร้าง rules.buildspeedmultiplier = พหุคูณความเร็วในการสร้าง +rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier rules.waitForWaveToEnd = คลื่น(รอบ)รอศัตรู rules.dropzoneradius = รัศมีจุดเกิดของศัตรู:[lightgray] (ช่อง) -rules.respawns = เกิดใหม่สูงสุดต่อคลื่น(รอบ) -rules.limitedRespawns = จำกัดการเกิดใหม่ +rules.unitammo = Units Require Ammo rules.title.waves = คลื่น(รอบ) -rules.title.respawns = เกิดใหม่ rules.title.resourcesbuilding = ทรัพยากรและสิ่งก่อสร้าง -rules.title.player = ผู้เล่น rules.title.enemy = ศัตรู rules.title.unit = ยูนิต rules.title.experimental = Experimental +rules.title.environment = Environment rules.lighting = Lighting rules.ambientlight = Ambient Light rules.solarpowermultiplier = Solar Power Multiplier @@ -840,6 +845,32 @@ liquid.heatcapacity = [lightgray]ความจุความร้อน: {0} liquid.viscosity = [lightgray]ความหนืด: {0} liquid.temperature = [lightgray]อุณหภูมิ: {0} +unit.dagger.name = แด็กเกอร์ +unit.mace.name = Mace +unit.fortress.name = ฟอร์เทรส +unit.nova.name = Nova +unit.pulsar.name = Pulsar +unit.quasar.name = Quasar +unit.crawler.name = ครอว์เลอร์ +unit.atrax.name = Atrax +unit.spiroct.name = Spiroct +unit.arkyid.name = Arkyid +unit.flare.name = Flare +unit.horizon.name = Horizon +unit.zenith.name = Zenith +unit.antumbra.name = Antumbra +unit.eclipse.name = Eclipse +unit.mono.name = Mono +unit.poly.name = Poly +unit.mega.name = Mega +unit.risse.name = Risse +unit.minke.name = Minke +unit.bryde.name = Bryde +unit.alpha.name = Alpha +unit.beta.name = Beta +unit.gamma.name = Gamma + +block.parallax.name = Parallax block.cliff.name = Cliff block.sand-boulder.name = ก้อนหินทราย block.grass.name = หญ้า @@ -944,6 +975,7 @@ block.message.name = ตัวเก็บข้อความ block.illuminator.name = Illuminator block.illuminator.description = A small, compact, configurable light source. Requires power to function. block.overflow-gate.name = ประตูระบายไอเทม +block.underflow-gate.name = Underflow Gate block.silicon-smelter.name = เตาเผาซิลิกอน block.phase-weaver.name = เครื่องทอใยเฟส block.pulverizer.name = เครื่องบด @@ -990,17 +1022,6 @@ block.blast-mixer.name = เครื่องผสมสารระเบิ block.solar-panel.name = แผงโซลาร์ block.solar-panel-large.name = แผงโซลาร์ขนาดใหญ่ block.oil-extractor.name = เครื่องสกัดน้ำมัน -block.command-center.name = ศูนย์สั่งการ -block.draug-factory.name = โรงงานผลิตโดรนขุดเจาะดรอก -block.spirit-factory.name = โรงงานผลิตโดรนซ่อมแซมสปิริต -block.phantom-factory.name = โรงงานผลิตโดรนก่อสร้างแฟนทอม -block.wraith-factory.name = โรงงานผลิตยานต่อต้านอากาศยานเวรธ -block.ghoul-factory.name = โรงงานผลิตยานทิ้งระเบิดกูล -block.dagger-factory.name = โรงงานผลิตหุ่นรบแด็กเกอร์ -block.crawler-factory.name = โรงงานผลิตหุ่นรบครอว์เลอร์ -block.titan-factory.name = โรงงานผลิตหุ่นรบไททัน -block.fortress-factory.name = โรงงานผลิตหุ่นรบฟอร์เทรส -block.revenant-factory.name = โรงงานผลิตยานต่อต้านอากาศยานเรเวแนนท์ block.repair-point.name = จุดซ่อมแซม block.pulse-conduit.name = ท่อน้ำพัลซ์ block.plated-conduit.name = ท่อน้ำเสริมเกราะ @@ -1032,6 +1053,19 @@ block.meltdown.name = เมลท์ดาวน์ block.container.name = ตู้เก็บของ block.launch-pad.name = ฐานส่งของ block.launch-pad-large.name = ฐานส่งของขนาดใหญ่ +block.segment.name = Segment +block.ground-factory.name = Ground Factory +block.air-factory.name = Air Factory +block.naval-factory.name = Naval Factory +block.additive-reconstructor.name = Additive Reconstructor +block.multiplicative-reconstructor.name = Multiplicative Reconstructor +block.exponential-reconstructor.name = Exponential Reconstructor +block.tetrative-reconstructor.name = Tetrative Reconstructor +block.mass-conveyor.name = Mass Conveyor +block.payload-router.name = Payload Router +block.disassembler.name = Disassembler +block.silicon-crucible.name = Silicon Crucible +block.large-overdrive-projector.name = Large Overdrive Projector team.blue.name = น้ำเงิน team.crux.name = แดง team.sharded.name = ส้ม @@ -1039,21 +1073,7 @@ team.orange.name = ส้ม team.derelict.name = derelict team.green.name = เขียว team.purple.name = ม่วง -unit.spirit.name = โดรนซ่อมแซมสปิริต -unit.draug.name = โดรนขุดเจาะดรอค -unit.phantom.name = โดรนก่อสร้างแฟนทอม -unit.dagger.name = แด็กเกอร์ -unit.crawler.name = ครอว์เลอร์ -unit.titan.name = ไททัน -unit.ghoul.name = ยานทิ้งระเบิดกูล -unit.wraith.name = ยานต่อต้านอากาศยานเวรธ -unit.fortress.name = ฟอร์เทรส -unit.revenant.name = เรเวแนนท์ -unit.eruptor.name = เอรัปเตอร์ -unit.chaos-array.name = เคออสอาเรย์ -unit.eradicator.name = อีเรดิเคเตอร์ -unit.lich.name = ลิค -unit.reaper.name = ริปเปอร์ + tutorial.next = [lightgray]<กดเพื่อดำเนินการต่อ> tutorial.intro = คุณได้เข้าสู่[scarlet] บทฝึกสอนของ Mindustry.[]\nใช้[accent] [[WASD][] เพื่อเคลื่อนที่.\n[accent]กด [] ค้างระหว่างกลิ้งลูกกลิ้งเม้าส์[] เพื่อซูมเข้าและออก.\nเริ่มด้วยการ[accent] ขุดทองแดง[]. เคลื่อนที่ไปใกล้มัน, แล้วกดที่สายแร่ทองแดงใกล้ๆกับแกนกลางของคุณ\n\n[accent]ทองแดง {0}/{1} ชิ้น tutorial.intro.mobile = คุณได้เข้าสู่[scarlet] บทฝึกสอนของ Mindustry.[]\nเลื่อนหน้าจอเพื่อเคลื่อนที่.\n[accent]ขยับสองนิ้วพร้อมกัน []เพื่อซูมเข้าและออก.\nเริ่มด้วยการ[accent] ขุดทองแดง[]. เคลื่อนที่ไปใกล้มัน, แล้วกดที่สายแร่ทองแดงใกล้ๆกับแกนกลางของคุณ\n\n[accent]ทองแดง {0}/{1} ชิ้น @@ -1096,17 +1116,7 @@ liquid.water.description = ของเหลวที่มีประโย liquid.slag.description = โลหะชนิดต่างๆซึ่งหลอมรวมกัน. สามารถนำไปแยกโลหะที่จำเป็นหรือเป็นอาวุธพ่นใส่ศัตรู. liquid.oil.description = ของเหลวใช้ในการผลิตวัสดุขั้นสูง. สามารถแปลงเเป็นถ่านหินเพือใช้เป็นเชื้อเพลิง หรือเป็นอาวุธเพื่อพ่นใส่ศัตรูแล้วจึงจุดไฟ. liquid.cryofluid.description = ของเหลวเฉื่อยและไม่กัดกร่อน ผลิตจากน้ำและไทเทเนี่ยม. มีสมบัติการถ่ายเทความร้อนสูง. ใช้อย่างแพร่หลายในการหล่อเย็น. -unit.draug.description = โดรนขุดเจาะดั้งเดิม. ผลิตง่าย. ขยายได้. ขุดทองแดงและตะกั่วโดยอัตโนมัติในบริเวณใกล้เคียง. ส่งทรัพยากรที่ขุดได้ไปยัง core ที่ใกล้ที่สุด. -unit.spirit.description = โดรนดราคจ์ที่ถูกปรับแต่ง, ออกแบบมาเพื่อการซ่อมแซมแทนการขุดเจาะ. ซ่อมแซมบล็อคที่โดนดาเมจโดยอัตโนมัติในบริเวณนั้น -unit.phantom.description = โดรนขั้นสูง. ติดตามผู้ใช้. ช่วยสร้างบล็อค. -unit.dagger.description = เม็คภาคพื้นดินพื้นฐานที่สุด. ผลิตง่าย. ทำลายล้างดีถ้าใช้เป็นฝูง. -unit.crawler.description = ยูนิตภาคพื้นดินประกอบด้วยเฟรมเปลือยและระเบิดขั้นรุนแรงติดด้านบน. ระเบิดเมื่อแตะต้องกับศัตรู. -unit.titan.description = ยูนิตเสริมเกราะภาคพื้นดินขั้นสูง. โจมตีทั้งภาคพื้นดินและอากาศ. มีปืนไฟระดับสคอร์ชติดตั้งอยู่. -unit.fortress.description = เม็คปืนใหญ่. มีปืนใหญ่ดัดแปลงประเภทเฮแอลติดจั้งอยู่ 2 กระบอกสำหรับการโจมตีสิ่งก่อสร้างและยูนิตของศัตรูจากระยะไกล. -unit.eruptor.description = เม็คหนักออกแบบมาเพื่อทำลายสิ่งก่อสร้าง. พ่นกากแร่ใส่แนวป้องกันของศัตรู, หลอมเหลวพวกมันและจุดสารระเหยให้ติดไฟ. -unit.wraith.description = ยูนิตอินเตอร์เซ็ปเตอร์แนว hit-and-run (จู่โจมแล้วหนี) ที่เร็ว. เล็งเป้าที่เครื่องกำเนิดไฟฟ้าทุกชนิด. -unit.ghoul.description = ยานทิ้งระเบิดปูพร่มหนัก (carpet bomber). ทะลวงผ่านสิ่งก่อสร้างศัตรู, เล็งเป้าที่จุดวิกฤตของสิ่งก่อสร้าง. -unit.revenant.description = ยานหนักยิงขีปนาวุธ. + block.message.description = เก็บข้อความ. ใช้สื่อสารกับพันธมิตร. block.graphite-press.description = อัดก้อนถ่านหินให้เป็นแผ่นกราไฟต์บริสุทธิ์. block.multi-press.description = เครื่องอัดกราไฟต์ที่ได้รับการอัปเกรด. ใช้น้ำและพลังงานในการแปรรูปถ่านหินให้เร็วและมีประสิทธิภาพมากขึ้น. @@ -1217,15 +1227,5 @@ block.ripple.description = ป้อมปืนใหญ่ที่มีพ block.cyclone.description = ป้อมปืนต่อต้านอากาศยานและต่อต้านภาคพื้นดิน. ยิงกระจุของกระสุนระเบิดใส่ยูนิตศัตรู. block.spectre.description = ปืนใหญ่ลำกล้องคูขนาดยักษ์. ยิงกระสุนเจาะเกราะใส่ศัตรูทั้งบนอากาศและภาดพื้นดิน. block.meltdown.description = ปืนใหญ่เลเซอร์ขนาดยักษ์. ชาร์จแล้วยิงลำแสงเลเซอร์ใส่ศัตรูที่อยู่ใกล้. จำเป็นต้องใช้สารหล่อเย็น. -block.command-center.description = สั่งการยูนิตพันธมิตรทั่วทั้งแมพ.\nสามารถสั่งให้ยูนิตมาชุมนุม, โจมตี core ศัตรู หรือถอยทีพกลับ core/โรงงาน. ถ้าไม่มี core ของศัตรูอยู่บริเวณนั้น, ยูนิตจะลาดตระเวนด้วยตัวเองหากได้รับคำสั่งให้โจมตี. -block.draug-factory.description = ผลิตโดรนขุดเจาะดราคจ์. -block.spirit-factory.description = ผลิตโดรนซ่อมแซมสปิริต. -block.phantom-factory.description = ผลิตโดรนก่อสร้างขั้นสูง. -block.wraith-factory.description = ผลิตยูนิตเร็ว โจมตีแบบ hit-and-run (จู่โจมแล้วหนี) -block.ghoul-factory.description = ผลิตยานทิ้งระเบิดแบบโหดๆ (heavy carpet bomber) -block.revenant-factory.description = ผลิตยูนิตที่ใช้ขีปนาวุธเป็นหลัก. -block.dagger-factory.description = ผลิตยูนิตภาคพื้นดินพื้นฐาน. -block.crawler-factory.description = ผลิตยูนิตที่ระเบิดตัวเอง. -block.titan-factory.description = ผลิตยูนิตภาคพื้นดินเสริมเกราะขั้นสูง. -block.fortress-factory.description = ผลิตยูนิตที่ถึกและติดปืนใหญ่. block.repair-point.description = ซ่อมแซมยูนิตที่อยู่ในรัศมีอย่างต่อเนื่อง. +block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. diff --git a/core/assets/bundles/bundle_tk.properties b/core/assets/bundles/bundle_tk.properties index 6ed24b1fc5..2d42a1d848 100644 --- a/core/assets/bundles/bundle_tk.properties +++ b/core/assets/bundles/bundle_tk.properties @@ -106,6 +106,7 @@ mods.guide = Modding Guide mods.report = Report Bug mods.openfolder = Open Mod Folder mods.reload = Reload +mods.reloadexit = The game will now exit, to reload mods. mod.display = [gray]Mod:[orange] {0} mod.enabled = [lightgray]Enabled mod.disabled = [scarlet]Disabled @@ -124,6 +125,7 @@ mod.reloadrequired = [scarlet]Reload Required mod.import = Import Mod mod.import.file = Import File mod.import.github = Import GitHub Mod +mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source! mod.item.remove = This item is part of the[accent] '{0}'[] mod. To remove it, uninstall that mod. mod.remove.confirm = This mod will be deleted. mod.author = [lightgray]Author:[] {0} @@ -224,7 +226,6 @@ save.new = Yeni Kayit Dosyasi save.overwrite = Bu oyunun uzerinden\ngecmek istedigine emin\nmisin? overwrite = uzerinden gec save.none = Kayitli oyun bulunamadi -saveload = [accent]Kaydediliyor... savefail = Kaydedilemedi! save.delete.confirm = Bu Kayiti silmek istedigine emin misin? save.delete = Sil @@ -272,6 +273,7 @@ quit.confirm.tutorial = Are you sure you know what you're doing?\nThe tutorial c loading = [accent]Yukleniyor... reloading = [accent]Reloading Mods... saving = [accent]Kaydediliyor... +respawn = [accent][[{0}][] to respawn in core cancelbuilding = [accent][[{0}][] to clear plan selectschematic = [accent][[{0}][] to select+copy pausebuilding = [accent][[{0}][] to pause building @@ -328,8 +330,9 @@ waves.never = waves.every = every waves.waves = wave(s) waves.perspawn = per spawn +waves.shields = shields/wave waves.to = to -waves.boss = Boss +waves.guardian = Guardian waves.preview = Preview waves.edit = Edit... waves.copy = Copy to Clipboard @@ -460,6 +463,7 @@ requirement.unlock = Unlock {0} resume = Resume Zone:\n[lightgray]{0} bestwave = [lightgray]Best: {0} launch = Launch +launch.text = Launch launch.title = Launch Successful launch.next = [lightgray]next opportunity at wave {0} launch.unable2 = [scarlet]Unable to LAUNCH.[] @@ -467,13 +471,13 @@ launch.confirm = This will launch all resources in your core.\nYou will not be a launch.skip.confirm = If you skip now, you will not be able to launch until later waves. uncover = Uncover configure = Configure Loadout +loadout = Loadout +resources = Resources bannedblocks = Banned Blocks addall = Add All -configure.locked = [lightgray]Reach wave {0}\nto configure loadout. configure.invalid = Amount must be a number between 0 and {0}. zone.unlocked = [lightgray]{0} unlocked. zone.requirement.complete = Wave {0} reached:\n{1} zone requirements met. -zone.config.unlocked = Loadout unlocked:[lightgray]\n{0} zone.resources = Resources Detected: zone.objective = [lightgray]Objective: [accent]{0} zone.objective.survival = Survive @@ -492,35 +496,29 @@ error.io = Network I/O error. error.any = Unkown network error. error.bloom = Failed to initialize bloom.\nYour device may not support it. -zone.groundZero.name = Ground Zero -zone.desertWastes.name = Desert Wastes -zone.craters.name = The Craters -zone.frozenForest.name = Frozen Forest -zone.ruinousShores.name = Ruinous Shores -zone.stainedMountains.name = Stained Mountains -zone.desolateRift.name = Desolate Rift -zone.nuclearComplex.name = Nuclear Production Complex -zone.overgrowth.name = Overgrowth -zone.tarFields.name = Tar Fields -zone.saltFlats.name = Salt Flats -zone.impact0078.name = Impact 0078 -zone.crags.name = Crags -zone.fungalPass.name = Fungal Pass +sector.groundZero.name = Ground Zero +sector.craters.name = The Craters +sector.frozenForest.name = Frozen Forest +sector.ruinousShores.name = Ruinous Shores +sector.stainedMountains.name = Stained Mountains +sector.desolateRift.name = Desolate Rift +sector.nuclearComplex.name = Nuclear Production Complex +sector.overgrowth.name = Overgrowth +sector.tarFields.name = Tar Fields +sector.saltFlats.name = Salt Flats +sector.fungalPass.name = Fungal Pass -zone.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. -zone.frozenForest.description = Even here, closer to mountains, the spores have spread. The fridgid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. -zone.desertWastes.description = These wastes are vast, unpredictable, and criss-crossed with derelict sector structures.\nCoal is present in the region. Burn it for power, or synthesize graphite.\n\n[lightgray]This landing location cannot be guaranteed. -zone.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. -zone.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. -zone.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. -zone.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units. -zone.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build dagger units. Destroy it. Reclaim that which was lost. -zone.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. -zone.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. -zone.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. -zone.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. -zone.impact0078.description = -zone.crags.description = +sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. +sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. +sector.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. +sector.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. +sector.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. +sector.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units. +sector.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build Titan units. Destroy it. Reclaim that which was lost. +sector.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. +sector.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. +sector.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. +sector.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. settings.language = Dil settings.data = Game Data @@ -537,6 +535,7 @@ settings.clearall.confirm = [scarlet]WARNING![]\nThis will clear all data, inclu paused = Duraklatildi clear = Clear banned = [scarlet]Banned +unplaceable.sectorcaptured = [scarlet]Requires captured sector yes = Evet no = Hayir info.title = [accent]Bilgi @@ -582,6 +581,8 @@ blocks.reload = Yeniden doldurma blocks.ammo = Ammo bar.drilltierreq = Better Drill Required +bar.noresources = Missing Resources +bar.corereq = Core Base Required bar.drillspeed = Drill Speed: {0}/s bar.pumpspeed = Pump Speed: {0}/s bar.efficiency = Efficiency: {0}% @@ -591,11 +592,12 @@ bar.poweramount = Power: {0} bar.poweroutput = Power Output: {0} bar.items = Items: {0} bar.capacity = Capacity: {0} +bar.unitcap = {0} {1}/{2} +bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled] bar.liquid = Liquid bar.heat = Heat bar.power = Power bar.progress = Build Progress -bar.spawned = Units: {0}/{1} bar.input = Input bar.output = Output @@ -639,6 +641,7 @@ setting.linear.name = Linear Filtering setting.hints.name = Hints setting.flow.name = Display Resource Flow Rate[scarlet] (experimental) setting.buildautopause.name = Auto-Pause Building +setting.mapcenter.name = Auto Center Map To Player setting.animatedwater.name = Animated Water setting.animatedshields.name = Animated Shields setting.antialias.name = Antialias[lightgray] (requires restart)[] @@ -663,7 +666,6 @@ setting.effects.name = Efekleri goster setting.destroyedblocks.name = Display Destroyed Blocks setting.blockstatus.name = Display Block Status setting.conveyorpathfinding.name = Conveyor Placement Pathfinding -setting.coreselect.name = Allow Schematic Cores setting.sensitivity.name = Kumanda hassasligi setting.saveinterval.name = Otomatik kaydetme suresi setting.seconds = {0} Saniye @@ -672,12 +674,15 @@ setting.milliseconds = {0} milliseconds setting.fullscreen.name = Tam ekran setting.borderlesswindow.name = Borderless Window[lightgray] (may require restart) setting.fps.name = FPS'i goster +setting.smoothcamera.name = Smooth Camera setting.blockselectkeys.name = Show Block Select Keys setting.vsync.name = VSync setting.pixelate.name = Pixelate [lightgray](may decrease performance) setting.minimap.name = Haritayi goster +setting.coreitems.name = Display Core Items (WIP) setting.position.name = Show Player Position setting.musicvol.name = Ses yuksekligi +setting.atmosphere.name = Show Planet Atmosphere setting.ambientvol.name = Ambient Volume setting.mutemusic.name = Sesi kapat setting.sfxvol.name = Ses seviyesi @@ -700,10 +705,13 @@ keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only category.general.name = General category.view.name = Goster category.multiplayer.name = Cok oyunculu +category.blocks.name = Block Select command.attack = Attack command.rally = Rally command.retreat = Retreat placement.blockselectkeys = \n[lightgray]Key: [{0}, +keybind.respawn.name = Respawn +keybind.control.name = Control Unit keybind.clear_building.name = Clear Building keybind.press = Bir tusa bas... keybind.press.axis = Bir yone cevir yada tusa bas... @@ -713,7 +721,7 @@ keybind.toggle_block_status.name = Toggle Block Statuses keybind.move_x.name = Sol/Sag hareket keybind.move_y.name = Yukari/asagi hareket keybind.mouse_move.name = Follow Mouse -keybind.dash.name = Kos +keybind.boost.name = Boost keybind.schematic_select.name = Select Region keybind.schematic_menu.name = Schematic Menu keybind.schematic_flip_x.name = Flip Schematic X @@ -775,30 +783,25 @@ rules.wavetimer = Wave Timer rules.waves = Waves rules.attack = Attack Mode rules.enemyCheat = Infinite AI Resources -rules.unitdrops = Unit Drops +rules.blockhealthmultiplier = Block Health Multiplier +rules.blockdamagemultiplier = Block Damage Multiplier rules.unitbuildspeedmultiplier = Unit Creation Speed Multiplier rules.unithealthmultiplier = Unit Health Multiplier -rules.blockhealthmultiplier = Block Health Multiplier -rules.playerhealthmultiplier = Player Health Multiplier -rules.playerdamagemultiplier = Player Damage Multiplier rules.unitdamagemultiplier = Unit Damage Multiplier rules.enemycorebuildradius = Enemy Core No-Build Radius:[lightgray] (tiles) -rules.respawntime = Respawn Time:[lightgray] (sec) rules.wavespacing = Wave Spacing:[lightgray] (sec) rules.buildcostmultiplier = Build Cost Multiplier rules.buildspeedmultiplier = Build Speed Multiplier rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier rules.waitForWaveToEnd = Waves wait for enemies rules.dropzoneradius = Drop Zone Radius:[lightgray] (tiles) -rules.respawns = Max respawns per wave -rules.limitedRespawns = Limit Respawns +rules.unitammo = Units Require Ammo rules.title.waves = Waves -rules.title.respawns = Respawns rules.title.resourcesbuilding = Resources & Building -rules.title.player = Players rules.title.enemy = Enemies rules.title.unit = Units rules.title.experimental = Experimental +rules.title.environment = Environment rules.lighting = Lighting rules.ambientlight = Ambient Light rules.solarpowermultiplier = Solar Power Multiplier @@ -827,7 +830,6 @@ liquid.water.name = Su liquid.slag.name = Slag liquid.oil.name = Benzin liquid.cryofluid.name = kriyo sivisi -item.corestorable = [lightgray]Storable in Core: {0} item.explosiveness = [lightgray]Patlayicilik: {0} item.flammability = [lightgray]Yanbilirlik: {0} item.radioactivity = [lightgray]Radyoaktivite: {0} @@ -843,6 +845,32 @@ liquid.heatcapacity = [lightgray]isinma kapasitesi: {0} liquid.viscosity = [lightgray]Yari sivilik: {0} liquid.temperature = [lightgray]isi: {0} +unit.dagger.name = Dagger +unit.mace.name = Mace +unit.fortress.name = Fortress +unit.nova.name = Nova +unit.pulsar.name = Pulsar +unit.quasar.name = Quasar +unit.crawler.name = Crawler +unit.atrax.name = Atrax +unit.spiroct.name = Spiroct +unit.arkyid.name = Arkyid +unit.flare.name = Flare +unit.horizon.name = Horizon +unit.zenith.name = Zenith +unit.antumbra.name = Antumbra +unit.eclipse.name = Eclipse +unit.mono.name = Mono +unit.poly.name = Poly +unit.mega.name = Mega +unit.risse.name = Risse +unit.minke.name = Minke +unit.bryde.name = Bryde +unit.alpha.name = Alpha +unit.beta.name = Beta +unit.gamma.name = Gamma + +block.parallax.name = Parallax block.cliff.name = Cliff block.sand-boulder.name = Sand Boulder block.grass.name = Grass @@ -994,17 +1022,6 @@ block.blast-mixer.name = Patlayici karistiricisi block.solar-panel.name = gunes paneli block.solar-panel-large.name = genis gunes paneli block.oil-extractor.name = benzin ayirici -block.command-center.name = Command Center -block.draug-factory.name = Draug Miner Drone Factory -block.spirit-factory.name = Spirit Drone Factory -block.phantom-factory.name = Phantom Drone Factory -block.wraith-factory.name = Wraith Fighter Factory -block.ghoul-factory.name = Ghoul Bomber Factory -block.dagger-factory.name = Dagger Mech Factory -block.crawler-factory.name = Crawler Mech Factory -block.titan-factory.name = Titan Mech Factory -block.fortress-factory.name = Fortress Mech Factory -block.revenant-factory.name = Revenant Fighter Factory block.repair-point.name = tamirci block.pulse-conduit.name = Pulse borusu block.plated-conduit.name = Plated Conduit @@ -1036,6 +1053,19 @@ block.meltdown.name = Meltdown block.container.name = Container block.launch-pad.name = Launch Pad block.launch-pad-large.name = Large Launch Pad +block.segment.name = Segment +block.ground-factory.name = Ground Factory +block.air-factory.name = Air Factory +block.naval-factory.name = Naval Factory +block.additive-reconstructor.name = Additive Reconstructor +block.multiplicative-reconstructor.name = Multiplicative Reconstructor +block.exponential-reconstructor.name = Exponential Reconstructor +block.tetrative-reconstructor.name = Tetrative Reconstructor +block.mass-conveyor.name = Mass Conveyor +block.payload-router.name = Payload Router +block.disassembler.name = Disassembler +block.silicon-crucible.name = Silicon Crucible +block.large-overdrive-projector.name = Large Overdrive Projector team.blue.name = blue team.crux.name = red team.sharded.name = orange @@ -1043,21 +1073,7 @@ team.orange.name = orange team.derelict.name = derelict team.green.name = green team.purple.name = purple -unit.spirit.name = Spirit Drone -unit.draug.name = Draug Miner Drone -unit.phantom.name = Phantom Drone -unit.dagger.name = Dagger -unit.crawler.name = Crawler -unit.titan.name = Titan -unit.ghoul.name = Ghoul Bomber -unit.wraith.name = Wraith Fighter -unit.fortress.name = Fortress -unit.revenant.name = Revenant -unit.eruptor.name = Eruptor -unit.chaos-array.name = Chaos Array -unit.eradicator.name = Eradicator -unit.lich.name = Lich -unit.reaper.name = Reaper + tutorial.next = [lightgray] tutorial.intro = You have entered the[scarlet] Mindustry Tutorial.[]\nBegin by[accent] mining copper[]. Tap a copper ore vein near your core to do this.\n\n[accent]{0}/{1} copper tutorial.intro.mobile = You have entered the[scarlet] Mindustry Tutorial.[]\nSwipe the screen to move.\n[accent]Pinch with 2 fingers [] to zoom in and out.\nBegin by[accent] mining copper[]. Move close to it, then tap a copper ore vein near your core to do this.\n\n[accent]{0}/{1} copper @@ -1100,17 +1116,7 @@ liquid.water.description = Commonly used for cooling machines and waste processi liquid.slag.description = Various different types of molten metal mixed together. Can be separated into its constituent minerals, or sprayed at enemy units as a weapon. liquid.oil.description = Can be burnt, exploded or used as a coolant. liquid.cryofluid.description = The most efficient liquid for cooling things down. -unit.draug.description = A primitive mining drone. Cheap to produce. Expendable. Automatically mines copper and lead in the vicinity. Delivers mined resources to the closest core. -unit.spirit.description = The starter drone unit. Spawns in the core by default. Automatically mines ores, collects items and repairs blocks. -unit.phantom.description = An advanced drone unit. Automatically mines ores, collects items and repairs blocks. Significantly more effective than a drone. -unit.dagger.description = basit bir zemin uniti -unit.crawler.description = A ground unit consisting of a stripped-down frame with high explosives strapped on top. Not particular durable. Explodes on contact with enemies. -unit.titan.description = havaya sikabilen, gelismis bir unit -unit.fortress.description = A heavy artillery ground unit. -unit.eruptor.description = A heavy mech designed to take down structures. Fires a stream of slag at enemy fortifications, melting them and setting volatiles on fire. -unit.wraith.description = A fast, hit-and-run interceptor unit. -unit.ghoul.description = A heavy carpet bomber. Uses blast compound or pyratite as ammo. -unit.revenant.description = A heavy, hovering missile array. + block.message.description = Stores a message. Used for communication between allies. block.graphite-press.description = Compresses chunks of coal into pure sheets of graphite. block.multi-press.description = An upgraded version of the graphite press. Employs water and power to process coal quickly and efficiently. @@ -1221,15 +1227,5 @@ block.ripple.description = A large artillery turret which fires several shots si block.cyclone.description = A large rapid fire turret. block.spectre.description = A large turret which shoots two powerful bullets at once. block.meltdown.description = A large turret which shoots powerful long-range beams. -block.command-center.description = Issues movement commands to allied units across the map.\nCauses units to patrol, attack an enemy core or retreat to the core/factory. When no enemy core is present, units will default to patrolling under the attack command. -block.draug-factory.description = Produces Draug mining drones. -block.spirit-factory.description = Produces light drones which mine ore and repair blocks. -block.phantom-factory.description = Produces advanced drone units which are significantly more effective than a spirit drone. -block.wraith-factory.description = Produces fast, hit-and-run interceptor units. -block.ghoul-factory.description = Produces heavy carpet bombers. -block.revenant-factory.description = Produces heavy laser ground units. -block.dagger-factory.description = Produces basic ground units. -block.crawler-factory.description = Produces fast self-destructing swarm units. -block.titan-factory.description = Produces advanced, armored ground units. -block.fortress-factory.description = Produces heavy artillery ground units. block.repair-point.description = Continuously heals the closest damaged unit in its vicinity. +block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. diff --git a/core/assets/bundles/bundle_tr.properties b/core/assets/bundles/bundle_tr.properties index 4feb8c3ce8..6bfafce2b9 100644 --- a/core/assets/bundles/bundle_tr.properties +++ b/core/assets/bundles/bundle_tr.properties @@ -106,6 +106,7 @@ mods.guide = Mod Rehberi mods.report = Hata bildir mods.openfolder = Mod klasörünü aç mods.reload = Reload +mods.reloadexit = The game will now exit, to reload mods. mod.display = [gray]Mod:[orange] {0} mod.enabled = [lightgray]Etkin mod.disabled = [scarlet]Devre Dışı @@ -124,6 +125,7 @@ mod.reloadrequired = [scarlet]Yeniden Yükleme Gerekli mod.import = Mod İçeri Aktar mod.import.file = Import File mod.import.github = GitHub Modu İçeri Aktar +mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source! mod.item.remove = Bu eşya[accent] '{0}'[] modunun bir parçası. Kaldırmak için modu silebilirsiniz. mod.remove.confirm = Bu mod silinecek. mod.author = [lightgray]Yayıncı:[] {0} @@ -224,7 +226,6 @@ save.new = Yeni kayıt save.overwrite = Bu kaydın üstüne yazmak istediğine\nemin misin? overwrite = Üstüne yaz save.none = Kayıt bulunamadı! -saveload = Kaydediliyor... savefail = Oyun kaydedilemedi! save.delete.confirm = Bu kaydı silmek istediğine emin misin? save.delete = Sil @@ -272,6 +273,7 @@ quit.confirm.tutorial = Ne yaptığınıza emin misiniz?\nÖğreticiyi [accent] loading = [accent]Yükleniyor... reloading = [accent]Modlar Yeniden Yükleniyor... saving = [accent]Kayıt ediliyor... +respawn = [accent][[{0}][] to respawn in core cancelbuilding = Planı temizlemek için [accent][[{0}][] selectschematic = Seçmek ve kopyalamak için [accent][[{0}][] pausebuilding = İnşaatı durdurmak için [accent][[{0}][] @@ -328,8 +330,9 @@ waves.never = waves.every = her waves.waves = dalga(lar) waves.perspawn = doğma noktası başına +waves.shields = shields/wave waves.to = doğru -waves.boss = Boss +waves.guardian = Guardian waves.preview = Önizleme waves.edit = Düzenle... waves.copy = Panodan kopyala @@ -460,6 +463,7 @@ requirement.unlock = {0}'I Aç resume = Bölgeye Devam Et:\n[lightgray]{0} bestwave = [lightgray]En İyi Dalga: {0} launch = < KALKIŞ > +launch.text = Launch launch.title = Kalkış Başarılı launch.next = [lightgray]Bir sonraki imkan {0}. dalgada olacak. launch.unable2 = [scarlet]KALKIŞ mümkün değil.[] @@ -467,13 +471,13 @@ launch.confirm = Bu işlem çekirdeğinizdeki bütün kaynakları yollayacak.\nB launch.skip.confirm = Eğer şimdi geçerseniz, uncover = Aç configure = Ekipmanı Yapılandır +loadout = Loadout +resources = Resources bannedblocks = Yasaklı Bloklar addall = Hepsini Ekle -configure.locked = [lightgray]Ekipman Yapılandırmayı Aç: Dalga {0}. configure.invalid = Miktar 0 ve {0} arasında bir sayı olmalı. zone.unlocked = [lightgray]{0} kilidi açıldı. zone.requirement.complete = {0}. dalgaya ulaşıldı:\n{1} bölge şartları karşılandı. -zone.config.unlocked = [lightgray]{0}:\nEkipman yapılandırma açıldı. zone.resources = [lightgray]Tespit Edilen Kaynaklar: zone.objective = [lightgray]Hedef: [accent]{0} zone.objective.survival = Hayatta Kal @@ -492,35 +496,29 @@ error.io = Ağ I/O hatası. error.any = Bilinmeyen ağ hatası. error.bloom = Kamaşma başlatılamadı.\nCihazınız bu özelliği desteklemiyor olabilir. -zone.groundZero.name = Sıfır Noktası -zone.desertWastes.name = Çöl Harabeleri -zone.craters.name = Kraterler -zone.frozenForest.name = Donmuş Orman -zone.ruinousShores.name = Harap Kıyılar -zone.stainedMountains.name = Lekeli Dağlar -zone.desolateRift.name = Çorak Yarık -zone.nuclearComplex.name = Nükleer Üretüm Kompleksi -zone.overgrowth.name = Aşırı Büyüme -zone.tarFields.name = Katran Sahaları -zone.saltFlats.name = Tuz Düzlükleri -zone.impact0078.name = Çarpışma 0078 -zone.crags.name = Kayalıklar -zone.fungalPass.name = Mantar Geçidi +sector.groundZero.name = Ground Zero +sector.craters.name = The Craters +sector.frozenForest.name = Frozen Forest +sector.ruinousShores.name = Ruinous Shores +sector.stainedMountains.name = Stained Mountains +sector.desolateRift.name = Desolate Rift +sector.nuclearComplex.name = Nuclear Production Complex +sector.overgrowth.name = Overgrowth +sector.tarFields.name = Tar Fields +sector.saltFlats.name = Salt Flats +sector.fungalPass.name = Fungal Pass -zone.groundZero.description = Yeniden başlamak için ideal bölge. Düşük düşman tehlikesi ve az miktarda kaynak mevcut.\nMümkün oldukça çok bakır ve kurşun topla.\nİlerle. -zone.frozenForest.description = Burada, dağlara yakın bölgelerde bile, sporlar etrafa yayıldı. Dondurucu soğuk onları sonsuza dek durduramaz.\n\nEnerji kullanmaya başla. Termik jeneratörler inşa et. Tamircileri kullanmayı öğren. -zone.desertWastes.description = Bu harabeler gemiş, öngörülemez, ve sektör yapılarının kalıntılarıyla kesişmekte.\nBölgede kömür mevcut, onu enerji için yak veya ondan grafit üret.\n\n[lightgray]Burada iniş bölgesi garanti edilemez. -zone.saltFlats.description = Çölün dış tarafında Tuz Düzlükleri yer alıyor. Burada az miktarda kaynak mevcut.\n\nDüşman burada bir kaynak depolama kompleksi kurdu. Onların çekirdeklerini yık. Ortada çalışan hiçbir şey bırakma. -zone.craters.description = Eski savaşların bir anıtı olan bu kratere su dolmuş. Alanı yeniden ele geçir. Kum topla ve metacam üret. Taret ve matkapları soğutmak için su pompala. -zone.ruinousShores.description = Kıyı çizgisi harabelerin ötesinde bulunuyor. Bir zamanlar bu bölge bir sahil güvenlik noktasına ev sahipliği yapıyordu. Ondan geriye fazla bir şey kalmadı. Sadece en temel savunma yapıları ayakta, ama diğer her şey hurdaya dönmüş.\nDışarı geniilemeye devam et ve teknolojiyi yeniden keşfet. -zone.stainedMountains.description = Daha uzaklarda dağlar uzanıyor, daha sporlar tarafından istilaya uğramamışlar.Alandaki serbest titanyumu çıkart ve kullanmasını öğren.\n\nDüşman varlığı burada daha fazla. Onların daha güçlü birimlerini göndermelerine izin verme. -zone.overgrowth.description = Bu bölge sporların kaynağına daha yakın ve bölgede aşırı büyüme görülmekte.\nDüşmanlar burada bir sınır üssü kurmuş. Titan birimleri inşa et ve bu üssü yok et. Kaybettiklerimizi geri al. -zone.tarFields.description = Dağlar ve çöl arasında kalan bir petrol işleme merkezinin dış kısmı. Kullanılabilen katran rezervlerine sahip az sayıdaki bölgeden biri.\nTerk edilmiş olduğu halde, bu alanda tehlikeli düşman güçleri mevcut. Onları hafife alma.\n\n[lightgray]Mümkünse petrol işleme teknolojisini araştır. -zone.desolateRift.description = Aşırı derecede tehlikeli bir bölge. Bolca kaynak mevcut ama alan dar. Yok edilme riski çok yüksek. Bu bölgeyi mümkün oldukça kısa sürede terk et. Düşman saldırıları arasındaki uzun aralıklar tarafından aldanma. -zone.nuclearComplex.description = Önceleri toryum üretme ve işleme ile görevli bir tesis. Şu anda yıkılmış durumda.\n[lightgray]Toryumu ve toryumun birçok işlevini araştır.\n\nBu bölgede çok sayıda düşman mevzilenmiş durumda ve saldırıları durmaksızın gözlemekteler. -zone.fungalPass.description = Dağlar ve sporlarla dolu aşağı bölgeler arasında bir geçiş bölgesi. Burada küçük düşman keşif üssü bulundu.\nBu üssü yok et.\nDagger ve Crawler birimleei kullan ve bölgedeki iki çekirdeği yık. -zone.impact0078.description = -zone.crags.description = +sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. +sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. +sector.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. +sector.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. +sector.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. +sector.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units. +sector.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build Titan units. Destroy it. Reclaim that which was lost. +sector.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. +sector.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. +sector.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. +sector.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. settings.language = Dil settings.data = Oyun Verisi @@ -537,6 +535,7 @@ settings.clearall.confirm = [scarlet]Uyarı![]\nBu işlem kayıtlar, haritalar a paused = [accent] clear = Temizle banned = [scarlet]Yasaklı +unplaceable.sectorcaptured = [scarlet]Requires captured sector yes = Evet no = Hayır info.title = Bilgi @@ -582,6 +581,8 @@ blocks.reload = Atışlar/Sn blocks.ammo = Mermi bar.drilltierreq = Daha İyi Matkap Gerekli +bar.noresources = Missing Resources +bar.corereq = Core Base Required bar.drillspeed = Matkap Hızı: {0}/s bar.pumpspeed = Pump Speed: {0}/s bar.efficiency = Verim: {0}% @@ -591,11 +592,12 @@ bar.poweramount = Enerji: {0} bar.poweroutput = Enerji Üretimi: {0} bar.items = Eşyalar: {0} bar.capacity = Kapasite: {0} +bar.unitcap = {0} {1}/{2} +bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled] bar.liquid = Sıvı bar.heat = Isı bar.power = Enerji bar.progress = Build Progress -bar.spawned = Birimler: {0}/{1} bar.input = Girdi bar.output = Çıktı @@ -639,6 +641,7 @@ setting.linear.name = Lineer Filtreleme setting.hints.name = İpuçları setting.flow.name = Display Resource Flow Rate[scarlet] (experimental) setting.buildautopause.name = İnşa etmeyi otomatik olarak durdur +setting.mapcenter.name = Auto Center Map To Player setting.animatedwater.name = Animasyonlu Su setting.animatedshields.name = Animasyonlu Kalkanlar setting.antialias.name = Düzgğnleştirme[lightgray] (yeniden açmak gerekebilir)[] @@ -663,7 +666,6 @@ setting.effects.name = Efektleri Görüntüle setting.destroyedblocks.name = Kırılmış Blokları Göster setting.blockstatus.name = Display Block Status setting.conveyorpathfinding.name = Konveyör Yol Bulma -setting.coreselect.name = Şemalarda Çekirdeğe izin ver setting.sensitivity.name = Kontrolcü Hassasiyeti setting.saveinterval.name = Kayıt Aralığı setting.seconds = {0} Saniye @@ -672,12 +674,15 @@ setting.milliseconds = {0} milisaniye setting.fullscreen.name = Tam Ekran setting.borderlesswindow.name = Kenarsız Pencere[lightgray] (yeniden açmak gerekebilir) setting.fps.name = FPS Göster +setting.smoothcamera.name = Smooth Camera setting.blockselectkeys.name = Blok seçim tüşlarını göster setting.vsync.name = VSync setting.pixelate.name = Pixelleştir[lightgray] (animasyonları kapatır) setting.minimap.name = Haritayı Göster +setting.coreitems.name = Display Core Items (WIP) setting.position.name = Oyuncu Noktasını Göster setting.musicvol.name = Müzik +setting.atmosphere.name = Show Planet Atmosphere setting.ambientvol.name = Çevresel Ses setting.mutemusic.name = Müziği Kapat setting.sfxvol.name = Oyun Sesi @@ -700,10 +705,13 @@ keybinds.mobile = [scarlet]Buradaki çoğu tuş ataması mobilde geçerli değil category.general.name = Genel category.view.name = Görünüm category.multiplayer.name = Çok Oyunculu +category.blocks.name = Block Select command.attack = Saldır command.rally = Toplan command.retreat = Geri Çekil placement.blockselectkeys = \n[lightgray]Tuş: [{0}, +keybind.respawn.name = Respawn +keybind.control.name = Control Unit keybind.clear_building.name = Binayı Temizle keybind.press = Bir tuşa basın... keybind.press.axis = Bir tuşa ya da yöne basın... @@ -713,7 +721,7 @@ keybind.toggle_block_status.name = Toggle Block Statuses keybind.move_x.name = x Ekseninde Hareket keybind.move_y.name = y Ekseninde Hareket keybind.mouse_move.name = Fareyi Takip Et -keybind.dash.name = Sıçrama +keybind.boost.name = Boost keybind.schematic_select.name = Bölge Seç keybind.schematic_menu.name = Şema Menüsü keybind.schematic_flip_x.name = Şemayı X ekseninde Döndür @@ -775,30 +783,25 @@ rules.wavetimer = Dalga Zamanlayıcısı rules.waves = Dalgalar rules.attack = Saldırı Modu rules.enemyCheat = Sonsuz AI (Kırmızı Takım) Kaynakları -rules.unitdrops = Unit Drops +rules.blockhealthmultiplier = Blok Canı Çarpanı +rules.blockdamagemultiplier = Block Damage Multiplier rules.unitbuildspeedmultiplier = Birim Üretim Hızı Çarpanı rules.unithealthmultiplier = Birim Canı Çarpanı -rules.blockhealthmultiplier = Blok Canı Çarpanı -rules.playerhealthmultiplier = Oyuncu Canı Çarpanı -rules.playerdamagemultiplier = Oyuncu Hasarı Çarpanı rules.unitdamagemultiplier = Birim Hasarı Çapanı rules.enemycorebuildradius = Düşman Çekirdeği İnşa Yasağı Yarıçapı:[lightgray] (kare) -rules.respawntime = Yeniden Doğma Süresi:[lightgray] (sec) rules.wavespacing = Dalga Aralığı:[lightgray] (sec) rules.buildcostmultiplier = İnşa ücreti Çarpanı rules.buildspeedmultiplier = İnşa Hızı Çarpanı rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier rules.waitForWaveToEnd = Dalgalar Düşmanı Bekler rules.dropzoneradius = İniş Noktası Yarıçapı:[lightgray] (kare) -rules.respawns = Dalga Başına Maksimum Tekrar Canlanmalar -rules.limitedRespawns = Tekrar Canlanma Limiti +rules.unitammo = Units Require Ammo rules.title.waves = Dalgalar -rules.title.respawns = Tekrar Canlanmalar rules.title.resourcesbuilding = Kaynaklar & İnşa -rules.title.player = Oyuncular rules.title.enemy = Düşmanlar rules.title.unit = Birlikler rules.title.experimental = Deneysel +rules.title.environment = Environment rules.lighting = Işıklandırma rules.ambientlight = Ortam Işığı rules.solarpowermultiplier = Solar Power Multiplier @@ -827,7 +830,6 @@ liquid.water.name = Su liquid.slag.name = Cüruf liquid.oil.name = Petrol liquid.cryofluid.name = Kriyosıvı -item.corestorable = [lightgray]Çekirdekte depolanabilir mi?: {0} item.explosiveness = [lightgray]Patlama: {0}% item.flammability = [lightgray]Yanıcılık: {0}% item.radioactivity = [lightgray]Radyoaktivite: {0}% @@ -843,6 +845,32 @@ liquid.heatcapacity = [lightgray]Isı Kapasitesi: {0} liquid.viscosity = [lightgray]Vizkosite: {0} liquid.temperature = [lightgray]Sıcaklık: {0} +unit.dagger.name = Dagger +unit.mace.name = Mace +unit.fortress.name = Fortress +unit.nova.name = Nova +unit.pulsar.name = Pulsar +unit.quasar.name = Quasar +unit.crawler.name = Crawler +unit.atrax.name = Atrax +unit.spiroct.name = Spiroct +unit.arkyid.name = Arkyid +unit.flare.name = Flare +unit.horizon.name = Horizon +unit.zenith.name = Zenith +unit.antumbra.name = Antumbra +unit.eclipse.name = Eclipse +unit.mono.name = Mono +unit.poly.name = Poly +unit.mega.name = Mega +unit.risse.name = Risse +unit.minke.name = Minke +unit.bryde.name = Bryde +unit.alpha.name = Alpha +unit.beta.name = Beta +unit.gamma.name = Gamma + +block.parallax.name = Parallax block.cliff.name = Cliff block.sand-boulder.name = Kum Kaya Parçaları block.grass.name = Çimen @@ -994,17 +1022,6 @@ block.blast-mixer.name = Patlayıcı Bileşik Mikseri block.solar-panel.name = Güneş Paneli block.solar-panel-large.name = Büyük Güneş Paneli block.oil-extractor.name = Petrol Çıkarıcı -block.command-center.name = Komuta Merkezi -block.draug-factory.name = Draug Maden Dronu Fabrikası -block.spirit-factory.name = Spirit Tamir Dronu Fabrikası -block.phantom-factory.name = Phantom İnşaat Dronu Fabrikası -block.wraith-factory.name = Wraith Avcı Uçağı Fabrikası -block.ghoul-factory.name = Ghoul Bombardıman Uçağı Fabrikası -block.dagger-factory.name = Dagger Robot Fabrikası -block.crawler-factory.name = Crawler Robot Fabrikası -block.titan-factory.name = Titan Robot Fabrikası -block.fortress-factory.name = Fortress Robot Fabrikası -block.revenant-factory.name = Revenant Savaşçı Fabrikası block.repair-point.name = Tamir Noktası block.pulse-conduit.name = Dalga Borusu block.plated-conduit.name = Plated Conduit @@ -1036,6 +1053,19 @@ block.meltdown.name = Meltdown block.container.name = Konteyner block.launch-pad.name = Kalkış Pisti block.launch-pad-large.name = Büyük Kalkış Pisti +block.segment.name = Segment +block.ground-factory.name = Ground Factory +block.air-factory.name = Air Factory +block.naval-factory.name = Naval Factory +block.additive-reconstructor.name = Additive Reconstructor +block.multiplicative-reconstructor.name = Multiplicative Reconstructor +block.exponential-reconstructor.name = Exponential Reconstructor +block.tetrative-reconstructor.name = Tetrative Reconstructor +block.mass-conveyor.name = Mass Conveyor +block.payload-router.name = Payload Router +block.disassembler.name = Disassembler +block.silicon-crucible.name = Silicon Crucible +block.large-overdrive-projector.name = Large Overdrive Projector team.blue.name = mavi team.crux.name = kırmızı team.sharded.name = turuncu @@ -1043,21 +1073,7 @@ team.orange.name = turuncu team.derelict.name = derelict team.green.name = yeşil team.purple.name = mor -unit.spirit.name = Spirit Tamir Dronu -unit.draug.name = Draug Maden Dronu -unit.phantom.name = Phantom İnşaat Dronu -unit.dagger.name = Dagger -unit.crawler.name = Crawler -unit.titan.name = Titan -unit.ghoul.name = Ghoul Bombardıman Uçağı -unit.wraith.name = Wraith Avcı Uçağı -unit.fortress.name = Fortress -unit.revenant.name = Revenant -unit.eruptor.name = Eruptor -unit.chaos-array.name = Chaos Array -unit.eradicator.name = Eradicator -unit.lich.name = Lich -unit.reaper.name = Reaper + tutorial.next = [lightgray] tutorial.intro = [scarlet]Mindustry öğreticisine hoş geldiniz.[]\n[accent]Bakır kazarak[] başlayın. Bunu yapmak için merkezinize yakın bir bakır madenine dokunun.\n\n[accent]{0}/{1} bakır tutorial.intro.mobile = You have entered the[scarlet] Mindustry Tutorial.[]\nSwipe the screen to move.\n[accent]Pinch with 2 fingers [] to zoom in and out.\nBegin by[accent] mining copper[]. Move close to it, then tap a copper ore vein near your core to do this.\n\n[accent]{0}/{1} copper @@ -1100,17 +1116,7 @@ liquid.water.description = En kullanışlı sıvı. Makineleri soğutmak ve atı liquid.slag.description = Çeşitli tipte erimiş metallerin birbirine karışımı. Bileşenlerine ayrılabilir veya düşmanlara silah olarak püskürtülebilir. liquid.oil.description = İleri seviye malzeme üretiminde kullanılan bir sıvıdır. Yakıt olarak kömür haline getirilebilir veya püskürtülüp ateşe verilerek bir silah olarak kullanılabilir. liquid.cryofluid.description = Su ve titanyumdan oluşturulan inaktif bir sıvı. Son derece yüksek ısı kapasitesine sahiptir. Soğutucu olarak yaygın olarak kullanılır. -unit.draug.description = İlkel bir maden dronu. Üretmesi ucuzdur ve gözden çıkarılabilirler. Etrafındaki bakır ve kurşunu kazar ve en yakın çekirdeğe taşır. -unit.spirit.description = Madencilik yerine yapısal onarım için tasarlanmış, modifiye bir draug dronu. Belirli bir alan içindeki hasarlı blokları tamir eder. -unit.phantom.description = Gelişmiş bir dron. Kullanıcıyı/Kullanıcıları takip eder ve blok inşaatında yardım eder. -unit.dagger.description = En basit yer birimi. Üretimi ucuzdur, sürüler halinde kullanıldığında etkilidir. -unit.crawler.description = Dış kısmı soyulup üstüne yüksek güçlü patlayıcılar bağlanmış bir yer birimi. Sağlam değildir ve düşmanlara temas halinde patlar. -unit.titan.description = Gelişmiş, zırhlı bir yer birimi. Hem hava hem kara hedeflerine saldırır. İki adet minyatür Scorch tipi alev püskürtücü ile donatılmıştır. -unit.fortress.description = Ağır bir topçu robotu. Düşman binalarına ve birimlerine uzaktan saldırmak için iki modifiye edilmiş Hail tipi havan topu ile donatılmıştır. -unit.eruptor.description = Yapıları yıkmak için tasarlanmış ağır bir robot. Düşman tahkimatlarına cüruf püskürterek onları eritir ve hassas materyalleri ateşe verir. -unit.wraith.description = Hızlı bir vur kaç avcı uçağı. Jeneratörleri hedef alır. -unit.ghoul.description = Ağır bir halı bombardıman birimi. Diğer düşman yapılarından yardırıp ilerleyerek kritik altyapıyı hedef alır. -unit.revenant.description = Ağır bir uçan roket bataryası. + block.message.description = Bir mesajı saklar. Müttefikler arasındaki haberleşmede kullanılır. block.graphite-press.description = Kömür parçalarını sıkıştırıp saf grafit tabakaları üretir. block.multi-press.description = Grafit presinin yükseltilmiş versiyonu. Kömürün hızlı ve verimli bir şekilde işlenmesi için su ve enerji kullanır. @@ -1221,15 +1227,5 @@ block.ripple.description = Çok güçlü bir havan tareti. Uzak mesafedeki düş block.cyclone.description = Büyük bir anti hava ve anti kara tareti. Yakınındaki düşmanlara patlayıcı uçaksavar mermi kümeleri atar. block.spectre.description = Dev bir çift namlulu top. Hava ve kara birimlerine iri, zırh delici mermiler atar. block.meltdown.description = Dev bir lazer topu. Yüklenip yakındaki düşmanlara uzun süreli lazer ışınları yollar. Çalışması için soğutucu gerekir. -block.command-center.description = Haritadaki müttefik birimlere komutlar -block.draug-factory.description = Draug maden dronları üretir. -block.spirit-factory.description = Spirit yapısal onarım dronları üretir. -block.phantom-factory.description = Gelişimiş inşaat dronları üretir. -block.wraith-factory.description = Hızlı vur kaç birimleri üretir. -block.ghoul-factory.description = Ağır halı bombardıman birimleri üretir. -block.revenant-factory.description = Ağır roketatar birimleri üretir. -block.dagger-factory.description = Temel yer birimleri üretir. -block.crawler-factory.description = Kendini yok eden sürü birimleri üretir -block.titan-factory.description = Gelişmiş, zırhlı yer birimleri üretir. -block.fortress-factory.description = Ağır topçu birimleri üretir. block.repair-point.description = Kendisine en yakın hasarlı birimi tamir eder. +block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. diff --git a/core/assets/bundles/bundle_uk_UA.properties b/core/assets/bundles/bundle_uk_UA.properties index 1065b62aef..7ab855df10 100644 --- a/core/assets/bundles/bundle_uk_UA.properties +++ b/core/assets/bundles/bundle_uk_UA.properties @@ -55,7 +55,7 @@ schematic.rename = Перейменувати схему schematic.info = {0}x{1}, {2} блоків stat.wave = Хвиль відбито:[accent] {0} -stat.enemiesDestroyed = Ворогів знищено:[accent] {0} +stat.enemiesDestroyed = Противників знищено:[accent] {0} stat.built = Будівель збудовано:[accent] {0} stat.destroyed = Будівель знищено:[accent] {0} stat.deconstructed = Будівель деконструйовано:[accent] {0} @@ -104,8 +104,9 @@ mods = Модифікації mods.none = [lightgray]Модифікацій не знайдено! mods.guide = Посібник з модифікацій mods.report = Повідомити про ваду -mods.openfolder = Відкрити мод. теку +mods.openfolder = Відкрити теку mods.reload = Перезавантажити +mods.reloadexit = The game will now exit, to reload mods. mod.display = [gray]Модифікація:[orange] {0} mod.enabled = [lightgray]Увімкнено mod.disabled = [scarlet]Вимкнено @@ -123,17 +124,18 @@ mod.requiresrestart = А тепер гра закриється, щоб заст mod.reloadrequired = [scarlet]Потрібно перезавантаження mod.import = Імпортувати модифікацію mod.import.file = Імпортувати файл -mod.import.github = Завантажити мод. з GitHub +mod.import.github = Імпортувати з GitHub +mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source! mod.item.remove = Цей предмет є частиною модифікації [accent] «{0}»[]. Щоб видалити його, видаліть цю модифікацію. mod.remove.confirm = Цю модифікацію буде видалено. mod.author = [lightgray]Автор:[] {0} mod.missing = Це збереження містить модифікації, які ви нещодавно оновили або більше не встановлювали. Збереження може зіпсуватися. Ви впевнені, що хочете завантажити його?\n[lightgray]Модифікації:\n{0} mod.preview.missing = До публікації цієї модифікації в Майстерні, ви повинні додати зображення попереднього перегляду.\nПомістіть зображення з назвою [accent] preview.png[] у теку з модифікаціями та спробуйте знову. mod.folder.missing = Тільки модифікації у формі теці можуть бути опубліковані в Майстерні.\nЩоб перетворити будь-яку модифікацію у теку, просто розархівуйте цей файл у теку та видаліть старий архів, і потім перезапустіть гру або перезавантажте ваші модифікації. -mod.scripts.disable = Ваш пристрій не підтримує модифікації зі скриптами. Деякі модифікації не будуть працювати правильно. +mod.scripts.disable = Ваш пристрій не підтримує модифікації зі скриптами. Вимкніть модифікацію для запуску гри. about.button = Про гру -name = Назва: +name = Ім’я: noname = Спочатку придумайте[accent] собі ім’я[]. filename = Назва файлу: unlocked = Доступний новий вміст! @@ -224,7 +226,6 @@ save.new = Нове збереження save.overwrite = Ви дійсно хочете перезаписати це місце збереження? overwrite = Перезаписати save.none = Збережень не знайдено! -saveload = [accent]Збереження… savefail = Не вдалося зберегти гру! save.delete.confirm = Ви дійсно хочете видалити це збереження? save.delete = Видалити @@ -272,6 +273,7 @@ quit.confirm.tutorial = Ви впевнені, що знаєте що робит loading = [accent]Завантаження… reloading = [accent]Перезавантаження модифікацій… saving = [accent]Збереження… +respawn = [accent][[{0}][] to respawn in core cancelbuilding = [accent][[{0}][], щоб очистити план selectschematic = [accent][[{0}][], щоб вибрати та скопіювати pausebuilding = [accent][[{0}][], щоб призупинити будування @@ -281,8 +283,8 @@ wave.waiting = [lightgray]Наступна хвиля\nчерез {0} wave.waveInProgress = [lightgray]Хвиля триває waiting = [lightgray]Очікування… waiting.players = Очікування гравців… -wave.enemies = Залишилося\n[lightgray]{0} ворог. -wave.enemy = Залишився\n[lightgray]{0} ворог +wave.enemies = Залишилося\n[lightgray]{0} противник. +wave.enemy = Залишився\n[lightgray]{0} противник loadimage = Завантажити зображення saveimage = Зберегти зображення unknown = Невідомо @@ -328,15 +330,16 @@ waves.never = <ніколи> waves.every = кожен waves.waves = хвиля(і) waves.perspawn = за появу +waves.shields = shields/wave waves.to = до -waves.boss = Бос +waves.guardian = Guardian waves.preview = Попередній перегляд waves.edit = Редагувати… waves.copy = Копіювати в буфер обміну waves.load = Завантажити з буфера обміну waves.invalid = Недійсні хвилі у буфері обміну. waves.copied = Хвилі скопійовані. -waves.none = Вороги не були встановлені.\nЗазначимо, що пусті хвилі будуть автоматично замінені звичайною хвилею. +waves.none = Противники не були встановлені.\nЗазначимо, що пусті хвилі будуть автоматично замінені звичайною хвилею. editor.default = [lightgray]<За замовчуванням> details = Подробиці… edit = Редагувати… @@ -367,13 +370,13 @@ editor.importmap = Імпортувати мапу editor.importmap.description = Імпортувати вже наявну мапу editor.importfile = Імпортувати файл editor.importfile.description = Імпортувати зовнішній файл мапи -editor.importimage = Імпортувати зображення +editor.importimage = Імпорт файлу зображення editor.importimage.description = Імпорт із зображенням місцевості editor.export = Експорт… editor.exportfile = Експортувати файл editor.exportfile.description = Експортувати файл мапи editor.exportimage = Експорт зображення місцевості -editor.exportimage.description = Експортувати файл, який містить основний рельєф місцевості. +editor.exportimage.description = Експортувати файл зображення, що містить лише основний рельєф місцевості editor.loadimage = Завантажити\nзображення editor.saveimage = Зберегти\nзображення editor.unsaved = [scarlet]У вас є незбережені зміни![]\nВи впевнені, що хочете вийти? @@ -402,7 +405,7 @@ toolmode.drawteams.description = Змінює належність\nблока filters.empty = [lightgray]Немає фільтрів! Додайте хоча б один за допомогою кнопки нижче. filter.distort = Спотворення filter.noise = Шум -filter.enemyspawn = Вибір точки появи ворогів +filter.enemyspawn = Вибір точки появи противників filter.corespawn = Вибір ядра filter.median = Медіана filter.oremedian = Рудна медіана @@ -460,6 +463,7 @@ requirement.unlock = Розблокуйте {0} resume = Відновити зону:\n[lightgray]{0} bestwave = [lightgray]Найкраща хвиля: {0} launch = < ЗАПУСК > +launch.text = Launch launch.title = Запуск вдалий launch.next = [lightgray]наступна можливість буде на {0}-тій хвилі launch.unable2 = [scarlet]ЗАПУСК неможливий.[] @@ -467,13 +471,13 @@ launch.confirm = Це видалить всі ресурси у вашому я launch.skip.confirm = Якщо ви пропустите зараз, ви не зможете не запускати до більш пізніх хвиль. uncover = Розкрити configure = Налаштувати вивантаження +loadout = Loadout +resources = Resources bannedblocks = Заборонені блоки addall = Додати все -configure.locked = [lightgray]Розблокування вивантаження ресурсів: {0}. configure.invalid = Кількість повинна бути числом між 0 та {0}. zone.unlocked = Зона «[lightgray]{0}» тепер розблокована. zone.requirement.complete = Вимоги до зони «{0}» виконані:[lightgray]\n{1} -zone.config.unlocked = Вивантаження розблоковано:[lightgray]\n{0} zone.resources = [lightgray]Виявлені ресурси: zone.objective = [lightgray]Мета: [accent]{0} zone.objective.survival = вижити @@ -492,35 +496,29 @@ error.io = Мережева помилка введення-виведення. error.any = Невідома мережева помилка error.bloom = Не вдалося ініціалізувати світіння.\nВаш пристрій, мабуть, не підтримує це. -zone.groundZero.name = Відправний пункт -zone.desertWastes.name = Пустельні відходи -zone.craters.name = Кратери -zone.frozenForest.name = Крижаний ліс -zone.ruinousShores.name = Зруйновані береги -zone.stainedMountains.name = Забруднені гори -zone.desolateRift.name = Спустошена ущелина -zone.nuclearComplex.name = Ядерний виробничий комплекс -zone.overgrowth.name = Зарості -zone.tarFields.name = Дьогтьові поля -zone.saltFlats.name = Соляні рівнини -zone.impact0078.name = Імпульс 0078 -zone.crags.name = Скелі -zone.fungalPass.name = Грибний перевал +sector.groundZero.name = Ground Zero +sector.craters.name = The Craters +sector.frozenForest.name = Frozen Forest +sector.ruinousShores.name = Ruinous Shores +sector.stainedMountains.name = Stained Mountains +sector.desolateRift.name = Desolate Rift +sector.nuclearComplex.name = Nuclear Production Complex +sector.overgrowth.name = Overgrowth +sector.tarFields.name = Tar Fields +sector.saltFlats.name = Salt Flats +sector.fungalPass.name = Fungal Pass -zone.groundZero.description = Оптимальне місце для повторних ігор. Низька ворожа загроза. Мало ресурсів.\nЗбирайте якомога більше свинцю та міді.\nНе затримуйтесь і йдіть далі. -zone.frozenForest.description = Спори поширилися навіть тут, ближче до гір. Холодна температура не може стримувати їх завжди.\n\nЗважтесь створити енергію. Побудуйте генератори внутрішнього згорання. Навчіться користуватися регенераторами. -zone.desertWastes.description = Ці відходи є величезними, непередбачуваними й перетинаються з занедбаними секторальними структурами.\nВугілля присутнє в регіоні. Спаліть його для енергії або синтезуйте у графіт.\n\n[lightgray]Є декілька варіантів для місць посадок. -zone.saltFlats.description = На околицях пустелі лежать Соляні рівнини. У цьому місці можна знайти небагато ресурсів.\n\nСаме тут вороги спорудили комплекс сховищ ресурсів. Викорініть їхнє ядро. Не залишайте нічого цінного. -zone.craters.description = У цьому кратері накопичилася вода, пережиток старих воєн. Відновіть місцевість. Зберіть пісок. Виплавте метаскло. Качайте воду, щоб охолодити турелі та бури. -zone.ruinousShores.description = Саме берегова лінія є минулим цих відходів. Колись у цьому місці розташувався береговий оборонний масив. Проте залишилося не так багато чого. Тільки основні оборонні споруди залишилися неушкодженими, а все інше перетворилося на брухт.\nПродовжуйте експансію назовні. Повторно розкрийте технології. -zone.stainedMountains.description = Якщо йти далі у вглиб материка, то можна побачити гори, які ще не заражені спорами.\nВидобудьте надлишковий титан у цій місцевості. Дізнайтеся, як використовувати його.\n\nНа жаль, тут більше ворогів ніж в інших місцевостях. Не дайте їм часу надіслати свої найсильніші одиниці. -zone.overgrowth.description = Ближче до джерела спор є територія, що заросла.\nНе дивуйтеся, що ворог встановив тут свій форпост. Побудуйте бойові одиниці під кодовою назвою «Титан». Зруйнуйте її. Поверніть те, що колись належало нам. -zone.tarFields.description = Між горами та пустелею простягається окраїна зони видобутку нафти. Це один з небагатьох районів із корисними для використання запасами смоли.\nНе зважаючи на те, що територія покинута, вона має поблизу небезпечні сили противника. Не варто їх недооцінювати.\n\n[lightgray]Якщо можливо, дослідіть технологію переробки нафти. -zone.desolateRift.description = Надзвичайно небезпечна зона. Багато ресурсів, але мало місця. Високий ризик знищення. Евакуюватися потрібно якомога швидше. Не розслабляйтеся між ворожими атаками та знайдіть ахіллесову п’яту супротивника. -zone.nuclearComplex.description = Колишній об’єкт для виробництва та переробки торію було зведено до руїн.\n[lightgray]Дослідіть торій та його нескінченну кількість застосувань.\n\n Ворог, який постійно шукає нападників, присутній тут у великій кількості, тому не баріться з евакуацією. -zone.fungalPass.description = Перехідна зона між високими та низькими горами, земля яких вкрита спорами. Тут знаходиться невелика розвідувальна база ворога.\nЗруйнуйте її.\nВикористовуйте одиниці з кодовими назвами «Кинджал» і «Камікадзе». Позбудьтесь двох ядер. -zone.impact0078.description = <вставити опис тут> -zone.crags.description = <вставити опис тут> +sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. +sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. +sector.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. +sector.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. +sector.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. +sector.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units. +sector.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build Titan units. Destroy it. Reclaim that which was lost. +sector.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. +sector.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. +sector.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. +sector.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. settings.language = Мова settings.data = Ігрові дані @@ -537,6 +535,7 @@ settings.clearall.confirm = [scarlet]УВАГА![]\nЦе очистить усі paused = [accent]< Пауза> clear = Очистити banned = [scarlet]Заблоковано +unplaceable.sectorcaptured = [scarlet]Requires captured sector yes = Так no = Ні info.title = Інформація @@ -552,8 +551,8 @@ block.unknown = [lightgray]??? blocks.powercapacity = Місткість енергії blocks.powershot = Енергія за постріл blocks.damage = Шкода -blocks.targetsair = Повітряні вороги -blocks.targetsground = Наземні вороги +blocks.targetsair = Повітряні противники +blocks.targetsground = Наземні противники blocks.itemsmoved = Швидкість переміщення blocks.launchtime = Час між запусками blocks.shootrange = Радіус дії @@ -582,6 +581,8 @@ blocks.reload = Постріли/секунду blocks.ammo = Боєприпаси bar.drilltierreq = Потребується кращий бур +bar.noresources = Missing Resources +bar.corereq = Core Base Required bar.drillspeed = Швидкість буріння: {0} за с. bar.pumpspeed = Швидкість викачування: {0} за с. bar.efficiency = Ефективність: {0}% @@ -591,11 +592,12 @@ bar.poweramount = Енергія: {0} bar.poweroutput = Вихідна енергія: {0} bar.items = Предмети: {0} bar.capacity = Місткість: {0} +bar.unitcap = {0} {1}/{2} +bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled] bar.liquid = Рідина bar.heat = Нагрівання bar.power = Енергія bar.progress = Хід будування -bar.spawned = Бойов. од.: {0}/{1} bar.input = Ввід bar.output = Вивід @@ -632,25 +634,26 @@ category.items = Предмети category.crafting = Виробництво category.shooting = Стрільба category.optional = Додаткові поліпшення -setting.landscape.name = Тільки альбомний(горизонтальний) режим +setting.landscape.name = Тільки альбомний (горизонтальний) режим setting.shadows.name = Тіні setting.blockreplace.name = Пропозиції щодо автоматичної заміни блоків setting.linear.name = Лінійна фільтрація setting.hints.name = Підказки -setting.flow.name = Показувати темп швидкості ресурсів[scarlet] (еспемент. функція) +setting.flow.name = Показувати темп швидкості ресурсів setting.buildautopause.name = Автоматичне призупинення будування -setting.animatedwater.name = Анімована вода -setting.animatedshields.name = Анімовані щити +setting.mapcenter.name = Auto Center Map To Player +setting.animatedwater.name = Анімаційні рідини +setting.animatedshields.name = Анімаційні щити setting.antialias.name = Згладжування[lightgray] (потребує перезапуску)[] setting.playerindicators.name = Позначки гравців -setting.indicators.name = Позначки ворогів +setting.indicators.name = Позначки противників setting.autotarget.name = Авто-стрільба setting.keyboard.name = Миш+Керування з клавіатури setting.touchscreen.name = Керування сенсорним екраном setting.fpscap.name = Максимальний FPS setting.fpscap.none = Жодне setting.fpscap.text = {0} FPS -setting.uiscale.name = Масштаб користувацького інтерфейсу[lightgray] (потребує перезапуск)[] +setting.uiscale.name = Масштабування користувацького інтерфейсу[lightgray] (потребує перезапуск)[] setting.swapdiagonal.name = Завжди діагональне розміщення setting.difficulty.training = Навчання setting.difficulty.easy = Легка @@ -663,7 +666,6 @@ setting.effects.name = Ефекти setting.destroyedblocks.name = Показувати зруйновані блоки setting.blockstatus.name = Показувати стан блоку setting.conveyorpathfinding.name = Пошук шляху для встановлення конвеєрів -setting.coreselect.name = Дозволити схематичні ядра setting.sensitivity.name = Чутливість контролера setting.saveinterval.name = Інтервал збереження setting.seconds = {0} секунд @@ -672,12 +674,15 @@ setting.milliseconds = {0} мілісекунд setting.fullscreen.name = Повноекранний режим setting.borderlesswindow.name = Вікно без полів[lightgray] (може потребувати перезапуску) setting.fps.name = Показувати FPS і затримку до сервера +setting.smoothcamera.name = Smooth Camera setting.blockselectkeys.name = Показувати клавіші вибору блока setting.vsync.name = Вертикальна синхронізація setting.pixelate.name = Пікселізація setting.minimap.name = Показувати мінімапу +setting.coreitems.name = Display Core Items (WIP) setting.position.name = Показувати координати гравця setting.musicvol.name = Гучність музики +setting.atmosphere.name = Показувати планетарну атмосферу setting.ambientvol.name = Звуки навколишнього середовища setting.mutemusic.name = Заглушити музику setting.sfxvol.name = Гучність звукових ефектів @@ -700,10 +705,13 @@ keybinds.mobile = [scarlet]Більшість прив’язаних клаві category.general.name = Загальне category.view.name = Перегляд category.multiplayer.name = Мережева гра +category.blocks.name = Block Select command.attack = Атака command.rally = Точка збору command.retreat = Відступити placement.blockselectkeys = \n[lightgray]Ключ: [{0}, +keybind.respawn.name = Respawn +keybind.control.name = Control Unit keybind.clear_building.name = Очистити план будування keybind.press = Натисніть клавішу… keybind.press.axis = Натисніть клавішу… @@ -713,7 +721,7 @@ keybind.toggle_block_status.name = Показувати стан блоків keybind.move_x.name = Рух по осі X keybind.move_y.name = Рух по осі Y keybind.mouse_move.name = Слідкувати за мишею -keybind.dash.name = Прискорення +keybind.boost.name = Прискорення keybind.schematic_select.name = Вибрати ділянку keybind.schematic_menu.name = Меню схем keybind.schematic_flip_x.name = Віддзеркалити по осі X @@ -759,7 +767,7 @@ keybind.drop_unit.name = Скинути бойову одиницю keybind.zoom_minimap.name = Збільшити міні-мапу mode.help.title = Опис режимів гри mode.survival.name = Виживання -mode.survival.description = Звичайний режим. В цьому режимі треба самим видобувати ресурси та хвилі йдуть автоматично.\n[gray]Потребуються точки появи ворогів для гри. +mode.survival.description = Звичайний режим. В цьому режимі треба самим видобувати ресурси та хвилі йдуть автоматично.\n[gray]Потребуються точки появи противників для гри. mode.sandbox.name = Пісочниця mode.sandbox.description = Нескінченні ресурси та хвилі йдуть за вашим бажанням. mode.editor.name = Редактор @@ -775,30 +783,25 @@ rules.wavetimer = Таймер для хвиль rules.waves = Хвилі rules.attack = Режим атаки rules.enemyCheat = Нескінченні ресурси для червоної команди ШІ -rules.unitdrops = Випадіння ресурсів з бойових одиниць +rules.blockhealthmultiplier = Множник здоров’я блоків +rules.blockdamagemultiplier = Block Damage Multiplier rules.unitbuildspeedmultiplier = Множник швидкості виробництва бойових одиниць rules.unithealthmultiplier = Множник здоров’я бойових одиниць -rules.blockhealthmultiplier = Множник здоров’я блоків -rules.playerhealthmultiplier = Множник здоров’я гравця -rules.playerdamagemultiplier = Множник шкоди гравця rules.unitdamagemultiplier = Множник шкоди бойових одиниць rules.enemycorebuildradius = Радіус захисту для ворожого ядра:[lightgray] (плитки) -rules.respawntime = Час відродження:[lightgray] (секунди) rules.wavespacing = Інтервал хвиль:[lightgray] (секунди) rules.buildcostmultiplier = Множник затрат на будування rules.buildspeedmultiplier = Множник швидкості будування rules.deconstructrefundmultiplier = Множник відшкодування при демонтажі -rules.waitForWaveToEnd = Хвилі чекають на смерть усіх ворогів +rules.waitForWaveToEnd = Хвилі чекають на завершення попередньої rules.dropzoneradius = Радіус зони висадки:[lightgray] (у плитках) -rules.respawns = Максимальна кількість відроджень за хвилю -rules.limitedRespawns = Обмеження відроджень +rules.unitammo = Units Require Ammo rules.title.waves = Хвилі -rules.title.respawns = Відродження rules.title.resourcesbuilding = Ресурси & будування -rules.title.player = Гравці -rules.title.enemy = Вороги +rules.title.enemy = Противники rules.title.unit = Бойові одиниці rules.title.experimental = Експериментальне +rules.title.environment = Environment rules.lighting = Світлотінь rules.ambientlight = Навколишнє світло rules.solarpowermultiplier = Множник сонячної енергії @@ -827,7 +830,6 @@ liquid.water.name = Вода liquid.slag.name = Шлак liquid.oil.name = Нафта liquid.cryofluid.name = Кріогенна рідина -item.corestorable = [lightgray]Зберігання в ядрі: {0} item.explosiveness = [lightgray]Вибухонебезпечність: {0} % item.flammability = [lightgray]Вогненебезпечність: {0} % item.radioactivity = [lightgray]Радіоактивність: {0} % @@ -839,12 +841,37 @@ unit.minespeed = [lightgray]Швидкість видобутку: {0} % unit.minepower = [lightgray]Потужність видобутку: {0} unit.ability = [lightgray]Здібність: {0} unit.buildspeed = [lightgray]Швидкість будування: {0} % - liquid.heatcapacity = [lightgray]Теплоємність: {0} liquid.viscosity = [lightgray]В’язкість: {0} liquid.temperature = [lightgray]Температура: {0} -block.cliff.name = Скелі +unit.dagger.name = Кинджал +unit.mace.name = Mace +unit.fortress.name = Фортеця +unit.nova.name = Nova +unit.pulsar.name = Pulsar +unit.quasar.name = Quasar +unit.crawler.name = Камікадзе +unit.atrax.name = Atrax +unit.spiroct.name = Spiroct +unit.arkyid.name = Arkyid +unit.flare.name = Flare +unit.horizon.name = Horizon +unit.zenith.name = Zenith +unit.antumbra.name = Antumbra +unit.eclipse.name = Eclipse +unit.mono.name = Mono +unit.poly.name = Poly +unit.mega.name = Mega +unit.risse.name = Risse +unit.minke.name = Minke +unit.bryde.name = Bryde +unit.alpha.name = Alpha +unit.beta.name = Beta +unit.gamma.name = Gamma + +block.parallax.name = Parallax +block.cliff.name = Скеля block.sand-boulder.name = Пісочний валун block.grass.name = Трава block.slag.name = Шлак @@ -873,7 +900,7 @@ block.kiln.name = Піч block.graphite-press.name = Графітний прес block.multi-press.name = Мультипрес block.constructing = {0}\n[lightgray](В процесі) -block.spawn.name = Місце появи ворога +block.spawn.name = Місце появи противника block.core-shard.name = Ядро «Уламок» block.core-foundation.name = Ядро «Штаб» block.core-nucleus.name = Ядро «Атом» @@ -982,7 +1009,7 @@ block.liquid-void.name = Рідинний вакуум block.power-void.name = Енергетичний вакуум block.power-source.name = Нескінченне джерело енергії block.unloader.name = Розвантажувач -block.vault.name = Сховище +block.vault.name = Вмістилище block.wave.name = Хвиля block.swarmer.name = Роєвик block.salvo.name = Залп @@ -995,17 +1022,6 @@ block.blast-mixer.name = Змішувач вибухонебезпечного block.solar-panel.name = Сонячна панель block.solar-panel-large.name = Велика сонячна панель block.oil-extractor.name = Екстрактор нафти -block.command-center.name = Командний центр -block.draug-factory.name = Завод дронів «Драугр» -block.spirit-factory.name = Завод дронів-ремонтників «Привид» -block.phantom-factory.name = Завод дронів-будівників «Фантом» -block.wraith-factory.name = Завод винищувачів «Примара» -block.ghoul-factory.name = Завод бомбардувальників-винищувачів «Ґуль» -block.dagger-factory.name = Завод мехів «Кинджал» -block.crawler-factory.name = Завод мехів «Камікадзе» -block.titan-factory.name = Завод мехів «Титан» -block.fortress-factory.name = Завод мехів «Фортеця» -block.revenant-factory.name = Завод бомбардувальників «Потойбічний вбивця» block.repair-point.name = Ремонтний пункт block.pulse-conduit.name = Імпульсний трубопровід block.plated-conduit.name = Зміцнений трубопровід @@ -1013,7 +1029,7 @@ block.phase-conduit.name = Фазовий трубопровід block.liquid-router.name = Рідинний маршрутизатор block.liquid-tank.name = Рідинний резервуар block.liquid-junction.name = Рідинне перехрестя -block.bridge-conduit.name = Мостовий водопровід +block.bridge-conduit.name = Мостовий трубопровід block.rotary-pump.name = Роторний насос block.thorium-reactor.name = Торієвий реактор block.mass-driver.name = Електромагнітна катапульта @@ -1037,6 +1053,19 @@ block.meltdown.name = Розплавлювач block.container.name = Сховище block.launch-pad.name = Стартовий майданчик block.launch-pad-large.name = Великий стартовий майданчик +block.segment.name = Segment +block.ground-factory.name = Ground Factory +block.air-factory.name = Air Factory +block.naval-factory.name = Naval Factory +block.additive-reconstructor.name = Additive Reconstructor +block.multiplicative-reconstructor.name = Multiplicative Reconstructor +block.exponential-reconstructor.name = Exponential Reconstructor +block.tetrative-reconstructor.name = Tetrative Reconstructor +block.mass-conveyor.name = Mass Conveyor +block.payload-router.name = Payload Router +block.disassembler.name = Disassembler +block.silicon-crucible.name = Silicon Crucible +block.large-overdrive-projector.name = Large Overdrive Projector team.blue.name = Синя team.crux.name = Червона team.sharded.name = Помаранчева @@ -1044,30 +1073,16 @@ team.orange.name = Помаранчева team.derelict.name = Залишена team.green.name = Зелена team.purple.name = Фіолетова -unit.spirit.name = Ремонтний дрон «Привид» -unit.draug.name = Добувний дрон «Драугр» -unit.phantom.name = Будівельний дрон «Фантом» -unit.dagger.name = Кинджал -unit.crawler.name = Камікадзе -unit.titan.name = Титан -unit.ghoul.name = Ґуль -unit.wraith.name = Примара -unit.fortress.name = Фортеця -unit.revenant.name = Потойбічний убивця -unit.eruptor.name = Вивергатель -unit.chaos-array.name = Масив хаосу -unit.eradicator.name = Викорінювач -unit.lich.name = Ліч -unit.reaper.name = Жнець + tutorial.next = [lightgray]<Натисніть для продовження> tutorial.intro = Ви розпочали[scarlet] навчання по Mindustry.[]\nВикористовуйте[accent] [[WASD][] для руху.\n[accent]Прокручуйте миш[] для приближення і віддалення.\nРозпочніть з [accent]видобування міді[]. Наблизьтесь до мідної жили біля вашого ядра, а потім натисніть на неї, щоб розпочати видобуток.\n\n[accent]{0}/{1} міді tutorial.intro.mobile = Ви розпочали[scarlet] навчання по Mindustry.[]\nПроведіть по екрану для руху.\n[accent] Зведіть або розведіть 2 пальця[] для приближення і віддалення відповідно.\nРозпочніть з [accent]видобування міді[]. Наблизьтесь до мідної жили біля вашого ядра, а потім натисніть на неї, щоб розпочати видобуток.\n\n[accent]{0}/{1} міді tutorial.drill = Добування вручну не є ефективним.\n[accent]Бури[] можуть видобувати автоматично.\nНатисніть на вкладку із зображенням свердла праворуч знизу.\n\nВиберіть[accent] механічний бур[]. Розмістіть його на мідній жилі натисканням.\nВи також можете вибрати бур, натиснувши [accent][[2][], а потім швидко натиснувши [accent][[1][], незалежно від відкритої вкладки.\n[accent]Натисніть ПКМ[], щоб зупинити будування. tutorial.drill.mobile = Добування вручну не є ефективним.\n[accent]Бури[] можуть видобувати автоматично.\nНатисніть на вкладку із зображенням свердла праворуч знизу.\nВиберіть[accent] механічний бур[].\nРозмістіть його на мідній жилі натисканням, потім натисніть на [accent]галочку[] нижче, щоб підтвердити розміщення.\nНатисніть [accent]кнопку X[], щоб скасувати розміщення. -tutorial.blockinfo = Кожний блок має різні характеристики. Кожний бур може видобувати тільки певні руди.\nЩоб переглянути інформацію та характеристики блока,[accent] натисніть на кнопку «?», коли ви вибрали блок у меню будування.[]\n\n[accent]Перегляньте характеристику механічного бура негайно.[] +tutorial.blockinfo = Кожний блок має різні характеристики. Кожний бур може видобувати тільки певні руди.\nЩоб переглянути інформацію та характеристики блока,[accent] натисніть на кнопку «?», коли ви вибрали блок у меню будування.[]\n\n[accent]Перегляньте характеристику Механічного бура негайно.[] tutorial.conveyor = [accent]Конвеєри[] використовуються для транспортування предметів до ядра.\nПобудуйте лінію конвеєрів від бура до ядра.\n[accent]Утримуйте миш для розміщення у лінію.[]\nУтримуйте[accent] CTRL[] під час вибору лінії для розміщення по діагоналі.\nПрокручуйте, щоб обертати блоки до їх установлення.\n[accent]Розмістіть 2 конвеєри у лінію, а потім доставте предмет в ядро. tutorial.conveyor.mobile = [accent]Конвеєри[] використовуються для транспортування предметів до ядра.\nПобудуйте лінію конвеєрів від бура до ядра.\n[accent] Розмістить у лінію, утримуючи палець кілька секунд[] і тягніть у напрямку, який Ви обрали.\n\n[accent]Розмістіть 2 конвеєри у лінію, а потім доставте предмет в ядро. -tutorial.turret = Щойно предмет потрапить до ядра, він може бути використаний у будівництві.\nМайте на увазі, не всі предмети придатні для будівництва.\nПредмети що не використовуються у будівництві, такі як[accent] вугілля[] чи[accent] брухт[], не можуть потрапити до ядра.\nОборонні споруди повинні бути побудовані для відбиття[lightgray] ворогів[].\nПобудуйте[accent] башту «Подвійна»[] біля вашої бази. +tutorial.turret = Щойно предмет потрапить до ядра, він може бути використаний у будівництві.\nМайте на увазі, не всі предмети придатні для будівництва.\nПредмети що не використовуються у будівництві, такі як[accent] вугілля[] чи[accent] брухт[], не можуть потрапити до ядра.\nОборонні споруди повинні бути побудовані для відбиття[lightgray] противників[].\nПобудуйте[accent] башту «Подвійна»[] біля вашої бази. tutorial.drillturret = «Подвійна» потребує [accent]мідні боєприпаси[] для стрільби.\nРозмістіть бур біля башти.\nПроведіть конвеєри до башти, щоб заповнити її боєприпасами.\n\n [accent]Доставлено боєприпасів: 0/1 tutorial.pause = Під час гри ви можете[accent] поставити на паузу.[]\nВи можете зробити чергу на будування під час паузи.\n\n [accent]Натисніть пробіл для паузи. tutorial.pause.mobile = Під час гри ви можете[accent] поставити на паузу.[]\nВи можете зробити чергу на будування під час паузи.\n\n[accent]Натисніть кнопку вгорі ліворуч для паузи. @@ -1077,8 +1092,8 @@ tutorial.breaking = Блоки часто треба знищувати.\n[accen tutorial.breaking.mobile = Блоки часто треба знищувати.\n[accent]Виберіть режим руйнування[], потім натисніть на блок, щоб зламати його.\nЗнищте область, утримуючи палець протягом декількох секунд [] і потягнувши в потрібному напрямку.\nНатисніть кнопку галочки, щоб підтвердити руйнування.\n\n[accent]Необхідно знищити всі стіни з брухту ліворуч від вашого ядра використовуючи видалення у зоні. tutorial.withdraw = У деяких ситуаціях потрібно брати предмети безпосередньо з блоків.\nЩоб зробити це, [accent]натисніть на блок[] з предметами, і потім [accent]натисніть на предмет[] в інвентарі.\nМожна вилучити кілька предметів [accent]натискаючи та утримуючи[].\n\n [accent]Вилучіть трохи міді з ядра.[] tutorial.deposit = Покладіть предмети в блок, перетягнувши з вашого корабля в потрібний блок.\n\n[accent]Покладіть мідь назад у ядро.[] -tutorial.waves = [lightgray]Ворог[] з’явився.\n\nЗахистіть ядро від двох хвиль.[accent] Натисніть ЛКМ[], щоб стріляти.\nПобудуйте більше башт і бурів. Добудьте більше міді. -tutorial.waves.mobile = [lightgray]Ворог[] з’явився.\n\nЗахистіть ядро від двох хвиль. Ваш корабель буде автоматично атакувати ворогів.\nПобудуйте більше башт і бурів. Добудьте більше міді. +tutorial.waves = [lightgray]Противник[] з’явився.\n\nЗахистіть ядро від двох хвиль.[accent] Натисніть ЛКМ[], щоб стріляти.\nПобудуйте більше башт і бурів. Добудьте більше міді. +tutorial.waves.mobile = [lightgray]Противник[] з’явився.\n\nЗахистіть ядро від двох хвиль. Ваш корабель буде автоматично атакувати противників.\nПобудуйте більше башт і бурів. Добудьте більше міді. tutorial.launch = Як тільки ви досягнете певної хвилі, ви зможете[accent] запустити ядро[], залишивши свою базу позаду, та [accent]отримати всі ресурси у вашому ядрі.[]\nЦі отримані ресурси можуть бути використані для дослідження нових технологій.\n\n[accent]Натисніть кнопку запуску. item.copper.description = Початковий будівельний матеріал. Широко використовується у всіх типах блоків. @@ -1086,7 +1101,7 @@ item.lead.description = Основний початковий матеріал. item.metaglass.description = Дуже жорсткий склад скла. Широко застосовується для розподілу та зберігання рідини. item.graphite.description = Мінералізований вуглець, що використовується для боєприпасів та як електричний компонент. item.sand.description = Поширений матеріал, який широко використовується при виплавці, як при сплавленні, так і в якості відходів. -item.coal.description = Окам’янілі рослинні речовини, що утворилися задовго до посіву. Широко використовується для виробництва пального та ресурсів. +item.coal.description = Скам’янілі рослинні речовини, що утворилися задовго до посіву. Широко використовується для виробництва пального та ресурсів. item.titanium.description = Рідкісний надлегкий метал, який широко використовується для транспортування рідини, бурів і літаків. item.thorium.description = Щільний радіоактивний метал, що використовується в якості конструкційної опори та ядерного палива. item.scrap.description = Залишки старих споруд та підрозділів. Містить мікроелементи багатьох різних металів. @@ -1097,33 +1112,23 @@ item.surge-alloy.description = Удосконалений сплав з унік item.spore-pod.description = Струмок синтетичних спор, синтезований з атмосферних концентрацій для промислових цілей. Використовується для перетворення на нафту, вибухівку та паливо. item.blast-compound.description = Нестабільна сполука, яка використовується в бомбах і вибухівках. Синтезується зі спорових стручків та інших летких речовин. Використовувати як паливо не рекомендується. item.pyratite.description = Надзвичайно легкозаймиста речовина, що використовується в запальній зброї. -liquid.water.description = Найкорисніша рідина. Зазвичай використовується для охолодження машин та переробки відходів. +liquid.water.description = Найкорисніша рідина. Зазвичай використовується для охолодження машин та перероблювання відходів. liquid.slag.description = Різні види розплавленого металу змішуються між собою. Може бути відокремлений від складових корисних копалин або розпорошений на ворожі частини як зброя. liquid.oil.description = Рідина, яка використовується у виробництві сучасних матеріалів. Може бути перетворена у вугілля в якості палива або використана як куля. liquid.cryofluid.description = Інертна рідина, що створена з води та титану. Володіє надзвичайно високою пропускною спроможністю. Широко використовується в якості рідини, що охолоджує. -unit.draug.description = Примітивний дрон, який добуває ресурси. Дешевий у виробництві. Одноразовий. Автоматично видобуває мідь і свинець поблизу. Доставляє видобуті ресурси до найближчого ядра. -unit.spirit.description = Модифікований «Драугр», призначений для ремонту замість добування ресурсів. Автоматично відновлює будь-які пошкоджені блоки. -unit.phantom.description = Удосконалений безпілотник. Йде за користувачами. Допомагає в будуванні блоків. Перебудовує зруйновані блоки. -unit.dagger.description = Початкова бойова одиниця. Дешевий у виробництві. Нездоланні при використанні в натовпі. -unit.crawler.description = Наземна одиниця, що складається зі стертої рами з високими вибуховими речовинами, які прив’язані зверху. Не особливо міцний. Вибухає при контакті з ворогами. -unit.titan.description = Удосконалений броньована наземна одиниця. Нападає як на наземні, так і повітряні цілі. Оснащений двома мініатюрними вогнеметами класу «Випалювач». -unit.fortress.description = Важкий артилерійний мех. Оснащений двома модифікованими гарматами типу «Град» для дальнього нападу на ворожі структури та підрозділи. -unit.eruptor.description = Важкий мех, що призначений для знесення конструкцій. Вистрілює потік шлаку у ворожі укріплення, розплавляє їх і підпалює леткі речовини. -unit.wraith.description = Швидкий перехоплювач, який використовує тактику «атакуй і втікай». Пріоритет — генератори енергії. -unit.ghoul.description = Важкий килимовий бомбардувальник. Пробиває ворожі структури, орієнтуючись на важливу інфраструктуру. -unit.revenant.description = Важкий ракетний масив. + block.message.description = Зберігає повідомлення. Використовується для комунікації між союзниками. block.graphite-press.description = Стискає шматки вугілля в чисті аркуші графіту. -block.multi-press.description = Модернізована версія графітового преса. Використовує воду та енергію для швидкої та ефективної переробки вугілля. +block.multi-press.description = Модернізована версія графітового преса. Використовує воду та енергію для швидкого та ефективного перероблювання вугілля. block.silicon-smelter.description = Змішує пісок з чистим вугіллям. Виробляє кремній. block.kiln.description = Виплавляє пісок та свинець у сполуку, відому як метаскло. Для запуску потрібна невелика кількість енергії. -block.plastanium-compressor.description = Виробляє пластаній з нафти і титану. +block.plastanium-compressor.description = Виробляє пластаній з нафти та титану. block.phase-weaver.description = Синтезує фазову тканину з радіоактивного торію та піску. Для роботи потрібна велика кількість енергії. block.alloy-smelter.description = Поєднує титан, свинець, кремній і мідь для отримання кінетичного сплаву. block.cryofluidmixer.description = Змішує воду і дрібний порошок титану в кріогенну рідину. Основне використання у торієвому реактору. block.blast-mixer.description = Подрібнює і змішує скупчення спор з піротитом для отримання вибухової суміші. block.pyratite-mixer.description = Змішує вугілля, свинець та пісок у легкозаймистий піротит. -block.melter.description = Розплавляє брухт у шлак для подальшої переробки або використання у баштах «Хвиля». +block.melter.description = Розплавляє брухт у шлак для подальшого перероблювання, або використання у баштах «Хвиля». block.separator.description = Відокремлює шлак на його мінеральні компоненти. Виводить охолоджені матеріали. block.spore-press.description = Стискає спорові стручки під сильним тиском для синтезу нафти. block.pulverizer.description = Подрібнює брухт у дрібний пісок. @@ -1137,12 +1142,12 @@ block.liquid-source.description = Нескінченно виводить рід block.liquid-void.description = Видаляє будь-які рідини. Тільки пісочниця. block.copper-wall.description = Дешевий захисний блок.\nКорисний для захисту ядра та башт у перші кілька хвиль. block.copper-wall-large.description = Дешевий захисний блок.\nКорисний для захисту ядра та башт у перші кілька хвиль.\nЗаймає декілька плиток. -block.titanium-wall.description = Відносно сильний захисний блок.\nЗабезпечує помірний захист від ворогів. -block.titanium-wall-large.description = Відносно сильний захисний блок.\nЗабезпечує помірний захист від ворогів.\nЗаймає декілька плиток. +block.titanium-wall.description = Відносно сильний захисний блок.\nЗабезпечує помірний захист від противників. +block.titanium-wall-large.description = Відносно сильний захисний блок.\nЗабезпечує помірний захист від противників.\nЗаймає декілька плиток. block.plastanium-wall.description = Особливий тип стіни, який поглинає електричні дуги й блокує автоматичні з’єднання енергетичних вузлів. block.plastanium-wall-large.description = Особливий тип стіни, який поглинає електричні дуги й блокує автоматичні з’єднання енергетичних вузлів.\nЗаймає декілька плиток. -block.thorium-wall.description = Сильний захисний блок.\nГідний захист від ворогів. -block.thorium-wall-large.description = Сильний захисний блок.\nГідний захист від ворогів.\nЗаймає декілька плиток. +block.thorium-wall.description = Сильний захисний блок.\nГідний захист від противників. +block.thorium-wall-large.description = Сильний захисний блок.\nГідний захист від противників.\nЗаймає декілька плиток. block.phase-wall.description = Стіна має покриття спеціальним складом, що відбиває світло і який базується на фазовій тканині. Відхиляє більшість куль при ударі. block.phase-wall-large.description = Стіна має покриття спеціальним складом, що відбиває світло і який базується на фазовій тканині. Відхиляє більшість куль при ударі.\nЗаймає декілька плиток. block.surge-wall.description = Надзвичайно міцний захисний блок.\nЗбільшує заряд при контакті з кулями, вивільняючи його випадковим чином. @@ -1153,7 +1158,7 @@ block.mender.description = Періодично ремонтує блоки у block.mend-projector.description = Покращена версія «Регенератора». Періодично ремонтує блоки у його радіусі дії.\nЗа бажанням, можна використати фазову тканину для підвищення дальності та ефективності. block.overdrive-projector.description = Збільшує швидкість найближчих будівель.\nЗа бажанням, можна використати фазову тканину для підвищення дальності та ефективності. block.force-projector.description = Створює навколо себе шестикутне силове поле, захищаючи будівлі та блоки всередині від пошкоджень.\nПерегрівається, якщо завдано занадто великої шкоди. За бажанням, можна використати теплоносій для запобігання перегріву. Для збільшення розміру щита можна використовувати фазову тканину. -block.shock-mine.description = Пошкоджує ворогів, коли вони наступають на міну. Майже невидима для ворога. +block.shock-mine.description = Наносить шкоду противникам, коли вони наступають на міну. Майже невидима для противника. block.conveyor.description = Базовий транспортний блок. Переміщує елементи вперед і автоматично перетворює їх у блоки. Можна обертати. block.titanium-conveyor.description = Покращений блок транспорту елементів. Переміщує предмети швидше, ніж звичайні конвеєри. block.plastanium-conveyor.description = Переміщує предмети партіями.\nПриймає елементи на задній частині та вивантажує їх у трьох напрямках спереду. @@ -1206,31 +1211,21 @@ block.core-nucleus.description = Третя й остання версія ка block.vault.description = Зберігає велику кількість предметів кожного типу. Блок розвантажувача може використовуватися для отримання предметів зі сховища. block.container.description = Зберігає малу кількість предметів кожного типу. Блок розвантажувача може використовуватися для отримання предметів зі сховища. block.unloader.description = Вивантажує предмети з блока, який не переміщує предмети, на конвеєр або безпосередньо в сусідній блок. Тип предмета для завантаження можна змінити, натиснувши на блок. -block.launch-pad.description = Запускає партії предметів без необхідності запуску ядра. Стартовий майданчик дозволяє вам запускати ресурси кожні n секунд без необхідності завершувати гру. Просто подайте у нього ресурси і забезпечте енергією. +block.launch-pad.description = Запускає партії предметів без необхідності запуску ядра. Стартовий майданчик дозволяє вам запускати ресурси кожні n секунд без необхідності завершувати гру. Просто подайте у нього ресурси та забезпечте енергією. block.launch-pad-large.description = Поліпшена версія стартового майданчика. Зберігає більше предметів. Запускається частіше. block.duo.description = Мала і дешева башта. Корисна проти наземних одиниць. -block.scatter.description = Основна протиповітряна башта. Розпилює грудочки свинцю, брухту чи метаскла у ворогів. -block.scorch.description = Підпалює будь-яких наземних ворогів поблизу. Високоефективна на близькій відстані. +block.scatter.description = Основна протиповітряна башта. Розпилює грудочки свинцю, брухту чи метаскла у противників. +block.scorch.description = Підпалює будь-яких наземних противників поблизу. Високоефективна на близькій відстані. block.hail.description = Невелика артилерійська башта з далеким радіусом дії. -block.wave.description = Башта середнього розміру. Стріляє потоками рідини в ворогів. Автоматично гасить пожежі при постачанні води. -block.lancer.description = Лазерна башта середнього розміру, яка атакує наземних ворогів. Заряджає і вистрілює потужні пучки енергії. -block.arc.description = Невелика електрична башта з малим радіусом дії. Стріляє дугами електрики у ворогів. -block.swarmer.description = Ракетна башта середнього розміру. Атакує як повітряних, так і наземних ворогів. Запускає ракети, які летять у ворогів самостійно. -block.salvo.description = Більш велика, вдосконалена версія башти «Подвійна». Вистрілює швидкий залп куль у ворога. -block.fuse.description = Велика енергетична башта з малим радіусом дії. Стріляє трьома пронизливими променями на найближчих ворогів. -block.ripple.description = Надзвичайно потужна артилерійська башта. На великі відстані стріляє скупченнями снарядів у ворогів. -block.cyclone.description = Велика протиповітряна та протиназемна башта. Підпалює вибухонебезпечними грудками скупчення ворогів. +block.wave.description = Башта середнього розміру. Стріляє потоками рідини в противників. Автоматично гасить пожежі при постачанні води. +block.lancer.description = Лазерна башта середнього розміру, яка атакує наземних противників. Заряджає і вистрілює потужні пучки енергії. +block.arc.description = Невелика електрична башта з малим радіусом дії. Стріляє дугами електрики у противників. +block.swarmer.description = Ракетна башта середнього розміру. Атакує як повітряних, так і наземних противників. Запускає ракети, які летять у противників самостійно. +block.salvo.description = Більш велика, вдосконалена версія башти «Подвійна». Вистрілює швидкий залп куль у противника. +block.fuse.description = Велика енергетична башта з малим радіусом дії. Стріляє трьома пронизливими променями на найближчих противників. +block.ripple.description = Надзвичайно потужна артилерійська башта. На великі відстані стріляє скупченнями снарядів у противників. +block.cyclone.description = Велика протиповітряна та протиназемна башта. Підпалює вибухонебезпечними грудками скупчення противників. block.spectre.description = Масивна двоствольна гармата. Стріляє великими бронебійними кулями в повітряні та наземні цілі. -block.meltdown.description = Масивна лазерна гармата. Заряджає і стріляє лазерним променем у найближчих ворогів. Для роботи потрібен теплоносій. -block.command-center.description = Наказує бойовим одиницям пересуватися по всій мапі.\nНаявні команди: патрулювання, атакувати вороже ядро, відступити до ядра/заводу. Якщо ворожого ядра немає, то бойові одиниці будуть патрулювати за замовчуванням при застосуванні команди «атакувати». -block.draug-factory.description = Виробляє дронів, які видобувають ресурси. -block.spirit-factory.description = Виробляє дронів, які ремонтують блоки. -block.phantom-factory.description = Виробляє дронів, які допомагають у будівництві. -block.wraith-factory.description = Виробляє швидких перехоплювачів, які використовують тактику «стріляй і біжи». -block.ghoul-factory.description = Виробляє важкокилимових бомбардувальників. -block.revenant-factory.description = Виробляє важких ракетних одиниць. -block.dagger-factory.description = Виробляє початкових наземних одиниць. -block.crawler-factory.description = Виробляє швидких одиниць, які вибухають при контакті з ворогом. -block.titan-factory.description = Виробляє поліпшених наземних одиниць. -block.fortress-factory.description = Виробляє важкоартилерійних наземних одиниць. -block.repair-point.description = Безперервно лікує найближчу пошкоджену бойову одиницю. +block.meltdown.description = Масивна лазерна гармата. Заряджає і стріляє лазерним променем у найближчих противників. Для роботи потрібен теплоносій. +block.repair-point.description = Безперервно ремонтує найближчу пошкоджену бойову одиницю. +block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. diff --git a/core/assets/bundles/bundle_zh_CN.properties b/core/assets/bundles/bundle_zh_CN.properties index a37634b4ee..c3addf0703 100644 --- a/core/assets/bundles/bundle_zh_CN.properties +++ b/core/assets/bundles/bundle_zh_CN.properties @@ -16,7 +16,7 @@ link.feathub.description = 提出新特性的建议 linkfail = 打开链接失败!\n网址已复制到您的剪贴板。 screenshot = 屏幕截图已保存到 {0} screenshot.invalid = 地图太大,可能没有足够的内存用于截图。 -gameover = 你的核心被摧毁了! +gameover = 游戏结束 gameover.pvp = [accent] {0}[]队获胜! highscore = [accent]新纪录! copied = 已复制。 @@ -87,7 +87,7 @@ save.quit = 保存并退出 maps = 地图 maps.browse = 浏览地图 continue = 继续 -maps.none = [lightgray]没有找到任何地图! +maps.none = [lightgray]没有找到地图! invalid = 无效 pickcolor = 选择颜色 preparingconfig = 正在准备配置 @@ -102,10 +102,11 @@ mods.alphainfo = 请注意,测试版本(alpha)中的模组[scarlet]很容 mods.alpha = [accent](Alpha) mods = 模组 mods.none = [lightgray]没有找到模组! -mods.guide = 模组教程 +mods.guide = 模组制作教程 mods.report = 报告 Bug mods.openfolder = 打开模组文件夹 mods.reload = 重载 +mods.reloadexit = The game will now exit, to reload mods. mod.display = [gray]模组:[orange] {0} mod.enabled = [lightgray]已启用 mod.disabled = [scarlet]已禁用 @@ -113,7 +114,7 @@ mod.disable = 禁用 mod.content = 内容: mod.delete.error = 无法删除模组。可能文件被占用。 mod.requiresversion = [scarlet]所需的游戏版本:[accent]{0} -mod.missingdependencies = [scarlet]缺少依赖条件:{0} +mod.missingdependencies = [scarlet]缺少前置模组:{0} mod.erroredcontent = [scarlet]内容错误 mod.errors = 读取内容时发生错误. mod.noerrorplay = [scarlet]你的模组发生了错误.[] 禁用相关模组或修复错误后才能进入游戏. @@ -123,7 +124,8 @@ mod.requiresrestart = 需要重启使模组生效。 mod.reloadrequired = [scarlet]需要重启 mod.import = 导入模组 mod.import.file = 导入文件 -mod.import.github = 导入 GitHub 模组 +mod.import.github = 从 GitHub 导入模组 +mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source! mod.item.remove = 这个物品是[accent] '{0}'[]模组的一部分. 删除物品需要先卸载此模组. mod.remove.confirm = 此模组将被删除。 mod.author = [lightgray]作者:[] {0} @@ -148,19 +150,19 @@ players.search = search players.notfound = [gray]没有找到玩家。 server.closing = [accent]服务器关闭… server.kicked.kick = 你被踢出了服务器。 -server.kicked.whitelist = 你不在白名单中。 +server.kicked.whitelist = 你并没有受邀请在此服务器上游玩。(不在白名单中) server.kicked.serverClose = 服务器已关闭。 server.kicked.vote = 你被投票踢出了服务器。 server.kicked.clientOutdated = 客户端过旧,请更新你的游戏。 -server.kicked.serverOutdated = 服务器过旧,请联系房主升级服务器。 -server.kicked.banned = 你在这个服务器上被拉入黑名单了。 +server.kicked.serverOutdated = 服务器过旧,请联系服务器管理员升级服务器。 +server.kicked.banned = 你在这个服务器上被封禁了。 server.kicked.typeMismatch = 此服务器与你的不稳定测试版不兼容。 server.kicked.playerLimit = 服务器已满,请等待一个空位。 server.kicked.recentKick = 你刚刚被踢出服务器。\n请稍后重新连接! server.kicked.nameInUse = 你的名字与服务器中的一个人重复了。 server.kicked.nameEmpty = 无效的名字! -server.kicked.idInUse = 你已在这个服务器上!不允许用两个账号连接。 -server.kicked.customClient = 这个服务器不支持自定义版本。请下载官方版本。 +server.kicked.idInUse = 你已经连接了这个服务器!不允许在一台电脑上用两个客户端连接。 +server.kicked.customClient = 这个服务器不支持自定义客户端。请下载官方版本。 server.kicked.gameover = 游戏结束! server.kicked.serverRestarting = 服务器正在重启. server.versions = 客户端版本:[accent] {0}[]\n服务器版本:[accent] {1}[] @@ -190,9 +192,9 @@ trace.mobile = 移动客户端:[accent]{0} trace.modclient = 自定义客户端:[accent]{0} invalidid = 无效的客户端 ID!提交一个错误报告。 server.bans = 黑名单 -server.bans.none = 没有被拉黑的玩家! +server.bans.none = 没有被封禁的玩家! server.admins = 管理员 -server.admins.none = 没有管理员! +server.admins.none = 该服务器没有管理员! server.add = 添加服务器 server.delete = 你确定要删除这个服务器吗? server.edit = 编辑服务器 @@ -200,10 +202,10 @@ server.outdated = [crimson]服务器过旧![] server.outdated.client = [crimson]客户端过旧![] server.version = [lightgray]版本:{0} {1} server.custombuild = [accent]自定义 -confirmban = 确认拉黑这名玩家? +confirmban = 确认封禁这名玩家? confirmkick = 确定踢出这名玩家? confirmvotekick = 确定投票踢出这名玩家? -confirmunban = 确定取消拉黑这名玩家? +confirmunban = 确定取消封禁这名玩家? confirmadmin = 确定给予这名玩家管理员权限? confirmunadmin = 确定取消这名玩家的管理员权限? joingame.title = 加入游戏 @@ -224,7 +226,6 @@ save.new = 新存档 save.overwrite = 你确定你要覆盖这个存档吗? overwrite = 覆盖 save.none = 没有找到存档! -saveload = [accent]正在保存… savefail = 保存失败! save.delete.confirm = 你确定你要删除这个存档吗? save.delete = 删除 @@ -272,6 +273,7 @@ quit.confirm.tutorial = 确定要跳过教程?\n您可以通过[accent]设置- loading = [accent]加载中… reloading = [accent]重载模组中… saving = [accent]保存中… +respawn = [accent][[{0}][] to respawn in core cancelbuilding = [accent][[{0}][]来清除规划 selectschematic = [accent][[{0}][]来选择复制 pausebuilding = [accent][[{0}][]来暂停建造 @@ -328,8 +330,9 @@ waves.never = < 无限 > waves.every = 每 waves.waves = 波 waves.perspawn = 每次生成 +waves.shields = shields/wave waves.to = 至 -waves.boss = BOSS +waves.guardian = Guardian waves.preview = 预览 waves.edit = 编辑… waves.copy = 复制到剪贴板 @@ -399,7 +402,7 @@ toolmode.fillteams.description = 填充团队而不是方块。 toolmode.drawteams = 绘制团队 toolmode.drawteams.description = 绘制团队而不是方块。 -filters.empty = [lightgray]没有筛选器!用下方的按钮添加一个。 +filters.empty = [lightgray]没有过滤条件!用下方的按钮添加。 filter.distort = 扭曲程度 filter.noise = 波动程度 filter.enemyspawn = Enemy Spawn Select @@ -460,6 +463,7 @@ requirement.unlock = 解锁{0} resume = 暂停:\n[lightgray]{0} bestwave = [lightgray]最高波次:{0} launch = < 发射 > +launch.text = Launch launch.title = 发射成功 launch.next = [lightgray]下个发射窗口在第{0}波 launch.unable2 = [scarlet]无法发射[] @@ -467,13 +471,13 @@ launch.confirm = 您将装载并发射核心中的所有资源。\n此地图将 launch.skip.confirm = 如果现在跳过,在下一个发射窗口到来前,您都无法发射。 uncover = 解锁 configure = 设定装运的数量 +loadout = Loadout +resources = Resources bannedblocks = 禁用建筑 addall = 添加所有 -configure.locked = [lightgray]完成{0}\n解锁装运配置。 configure.invalid = 数量必须是0到{0}之间的数字。 zone.unlocked = [lightgray]{0} 已解锁。 zone.requirement.complete = 完成{0}。\n已达成解锁{1}的要求。 -zone.config.unlocked = 资源装运已解锁:[lightgray]\n{0} zone.resources = 地图中的资源: zone.objective = [lightgray]目标:[accent]{0} zone.objective.survival = 生存 @@ -492,35 +496,29 @@ error.io = 网络 I/O 错误。 error.any = 未知网络错误。 error.bloom = 未能初始化特效。\n您的设备可能不支持。 -zone.groundZero.name = 零号地区 -zone.desertWastes.name = 荒芜沙漠 -zone.craters.name = 陨石带 -zone.frozenForest.name = 冰冻森林 -zone.ruinousShores.name = 遗迹海岸 -zone.stainedMountains.name = 绵延群山 -zone.desolateRift.name = 荒芜裂谷 -zone.nuclearComplex.name = 核裂阵 -zone.overgrowth.name = 增生区 -zone.tarFields.name = 油田 -zone.saltFlats.name = 盐碱荒滩 -zone.impact0078.name = 0078号冲击 -zone.crags.name = 悬崖 -zone.fungalPass.name = 真菌通道 +sector.groundZero.name = Ground Zero +sector.craters.name = The Craters +sector.frozenForest.name = Frozen Forest +sector.ruinousShores.name = Ruinous Shores +sector.stainedMountains.name = Stained Mountains +sector.desolateRift.name = Desolate Rift +sector.nuclearComplex.name = Nuclear Production Complex +sector.overgrowth.name = Overgrowth +sector.tarFields.name = Tar Fields +sector.saltFlats.name = Salt Flats +sector.fungalPass.name = Fungal Pass -zone.groundZero.description = 踏上旅程的最佳位置。这儿的敌人威胁很小,但资源也少。\n收集尽可能多的铅和铜。\n出发吧! -zone.frozenForest.description = 即使是靠近山脉的这里,孢子也已经扩散。他们不能长期停留在寒冷的温度中。\n\n开始运用电力。建造火力发电机并学会使用修理者。 -zone.desertWastes.description = 这里的废料规模庞大、难以预测,并与废弃的结构交织在一起。\n此地区有煤矿存在,点燃它以获取动力,或者将其合成为石墨。\n\n[lightgray]无法保证此着陆位置。 -zone.saltFlats.description = 在沙漠的郊区有盐滩。在这个地方几乎找不到资源。\n\n敌人在这里建立了一个资源存储区。摧毁他们的核心。不要留下任何东西。 -zone.craters.description = 水在这个火山口积聚,这是旧战争的遗迹。夺下该区域。收集沙子来冶炼玻璃。用水泵抽水来加速炮塔和钻头。 -zone.ruinousShores.description = 穿过荒地,就是海岸线。这个地方曾经建造了一个海岸防御线。但现在所剩无几,只有最基本的防御结构仍然毫发无损,其他一切都被摧毁了。\n继续向外扩展。继续研究科技。 -zone.stainedMountains.description = 在更远的内陆地区是山脉,但这里没有被孢子污染。\n这一地区分布着丰富的钛,学习如何使用它。\n\n这里的敌人势力更大,不要给他们时间派出最强的部队。 -zone.overgrowth.description = 这个地区靠近孢子的来源,因此生长过度。\n敌人在这里建立了一个前哨站。建造尖刀单位来摧毁它并找回丢失的东西。 -zone.tarFields.description = 产油区边缘,位于山脉和沙漠之间。它少数几个有石油储量的地区之一。\n尽管被废弃,这附近仍有一些危险的敌方单位。不要低估他们。\n\n[lightgray]如果可能,研究石油加工技术。 -zone.desolateRift.description = 非常危险的区域。这儿的资源丰富但空间很小。敌人十分危险。尽快离开,不要被敌人的攻击间隔太长所愚弄。 -zone.nuclearComplex.description = 以前生产和加工钍的设施已变成废墟。\n[lightgray]研究钍及其多种用途。\n\n敌人在这里大量存在,不断消灭入侵者。 -zone.fungalPass.description = 介于高山和低矮孢子丛生的土地之间的过渡地带。这里有一个小型的敌方侦察基地。\n侦察它。\n使用尖刀和爬行者单位来摧毁两个核心。 -zone.impact0078.description = <描述空缺> -zone.crags.description = <描述空缺> +sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. +sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. +sector.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. +sector.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. +sector.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. +sector.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units. +sector.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build Titan units. Destroy it. Reclaim that which was lost. +sector.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. +sector.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. +sector.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. +sector.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. settings.language = 语言 settings.data = 游戏数据 @@ -537,6 +535,7 @@ settings.clearall.confirm = [scarlet]警告![]\n这将清除所有数据,包 paused = [accent]< 暂停 > clear = 清除 banned = [scarlet]已禁止 +unplaceable.sectorcaptured = [scarlet]Requires captured sector yes = 是 no = 否 info.title = [accent]详情 @@ -582,6 +581,8 @@ blocks.reload = 每秒发射数 blocks.ammo = 弹药 bar.drilltierreq = 需要更好的钻头 +bar.noresources = Missing Resources +bar.corereq = Core Base Required bar.drillspeed = 挖掘速度:{0}/秒 bar.pumpspeed = 泵压速度:{0}/秒 bar.efficiency = 效率:{0}% @@ -591,11 +592,12 @@ bar.poweramount = 能量:{0} bar.poweroutput = 能量输出:{0} bar.items = 物品:{0} bar.capacity = 容量:{0} +bar.unitcap = {0} {1}/{2} +bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled] bar.liquid = 液体 bar.heat = 热量 bar.power = 电力 bar.progress = 制造进度 -bar.spawned = 单位数量:{0}/{1} bar.input = 输入 bar.output = 输出 @@ -639,6 +641,7 @@ setting.linear.name = 抗锯齿 setting.hints.name = 提示 setting.flow.name = 显示资源传送速度[scarlet] (实验性) setting.buildautopause.name = 自动暂停建造 +setting.mapcenter.name = 地图自动居中 setting.animatedwater.name = 流动的水 setting.animatedshields.name = 动态画面 setting.antialias.name = 抗锯齿 @@ -651,7 +654,7 @@ setting.fpscap.name = 最大FPS setting.fpscap.none = 无 setting.fpscap.text = {0} FPS setting.uiscale.name = UI缩放比例[lightgray](需要重新启动)[] -setting.swapdiagonal.name = 自动斜线建造 +setting.swapdiagonal.name = 总是斜线建造 setting.difficulty.training = 训练 setting.difficulty.easy = 简单 setting.difficulty.normal = 普通 @@ -663,7 +666,6 @@ setting.effects.name = 显示效果 setting.destroyedblocks.name = 显示摧毁的建筑 setting.blockstatus.name = 显示方块状态 setting.conveyorpathfinding.name = 传送带自动寻路 -setting.coreselect.name = 允许蓝图包含核心 setting.sensitivity.name = 控制器灵敏度 setting.saveinterval.name = 自动保存间隔 setting.seconds = {0} 秒 @@ -672,12 +674,15 @@ setting.milliseconds = {0} 毫秒 setting.fullscreen.name = 全屏 setting.borderlesswindow.name = 无边界窗口[lightgray](可能需要重启) setting.fps.name = 显示 FPS 和网络延迟 +setting.smoothcamera.name = 镜头平滑 setting.blockselectkeys.name = 显示建筑选择按键 setting.vsync.name = 垂直同步 setting.pixelate.name = 像素画面 [lightgray](禁用动画) setting.minimap.name = 显示小地图 +setting.coreitems.name = 显示核心 (开发中) setting.position.name = 显示玩家坐标 setting.musicvol.name = 音乐音量 +setting.atmosphere.name = Show Planet Atmosphere setting.ambientvol.name = 环境音量 setting.mutemusic.name = 无音乐 setting.sfxvol.name = 音效音量 @@ -700,10 +705,13 @@ keybinds.mobile = [scarlet]这里的大多数按键绑定在移动设备上都 category.general.name = 常规 category.view.name = 视图 category.multiplayer.name = 多人 +category.blocks.name = Block Select command.attack = 攻击 command.rally = 集合 command.retreat = 撤退 placement.blockselectkeys = \n[lightgray]按键:[{0}, +keybind.respawn.name = 重生 +keybind.control.name = Control Unit keybind.clear_building.name = 清除建筑 keybind.press = 请按一个键… keybind.press.axis = 请按一个轴或键… @@ -713,7 +721,7 @@ keybind.toggle_block_status.name = 显隐方块状态 keybind.move_x.name = 水平移动 keybind.move_y.name = 竖直移动 keybind.mouse_move.name = 跟随鼠标 -keybind.dash.name = 冲刺 +keybind.boost.name = 推送 keybind.schematic_select.name = 选择区域 keybind.schematic_menu.name = 蓝图目录 keybind.schematic_flip_x.name = 水平翻转 @@ -775,30 +783,25 @@ rules.wavetimer = 波次计时器 rules.waves = 波次 rules.attack = 攻击模式 rules.enemyCheat = 敌人(红队)无限资源 -rules.unitdrops = 敌人出生点 +rules.blockhealthmultiplier = 建筑生命倍数 +rules.blockdamagemultiplier = Block Damage Multiplier rules.unitbuildspeedmultiplier = 单位生产速度倍数 rules.unithealthmultiplier = 单位生命倍数 -rules.blockhealthmultiplier = 建筑生命倍数 -rules.playerhealthmultiplier = 玩家生命倍数 -rules.playerdamagemultiplier = 玩家伤害倍数 rules.unitdamagemultiplier = 单位伤害倍数 rules.enemycorebuildradius = 敌对核心非建设区半径:[lightgray](格) -rules.respawntime = 重生时间:[lightgray](秒) rules.wavespacing = 波次间隔时间:[lightgray](秒) rules.buildcostmultiplier = 建设花费倍数 rules.buildspeedmultiplier = 建设时间倍数 rules.deconstructrefundmultiplier = 拆除返还倍数 rules.waitForWaveToEnd = 等待敌人时间 rules.dropzoneradius = 敌人出生点禁区大小:[lightgray](格) -rules.respawns = 每波最大重生次数 -rules.limitedRespawns = 重生限制次数 +rules.unitammo = Units Require Ammo rules.title.waves = 波次 -rules.title.respawns = 重生 rules.title.resourcesbuilding = 资源和建造 -rules.title.player = 玩家 rules.title.enemy = 敌人 rules.title.unit = 单位 rules.title.experimental = 实验性 +rules.title.environment = Environment rules.lighting = 光照 rules.ambientlight = 环境光 rules.solarpowermultiplier = 太阳能发电倍数 @@ -827,7 +830,6 @@ liquid.water.name = 水 liquid.slag.name = 矿渣 liquid.oil.name = 石油 liquid.cryofluid.name = 冷冻液 -item.corestorable = [lightgray]核心可存储性:{0} item.explosiveness = [lightgray]爆炸性:{0}% item.flammability = [lightgray]易燃性:{0}% item.radioactivity = [lightgray]放射性:{0}% @@ -843,6 +845,32 @@ liquid.heatcapacity = [lightgray]热容量:{0} liquid.viscosity = [lightgray]粘度:{0} liquid.temperature = [lightgray]温度:{0} +unit.dagger.name = 尖刀 +unit.mace.name = Mace +unit.fortress.name = 堡垒 +unit.nova.name = Nova +unit.pulsar.name = Pulsar +unit.quasar.name = Quasar +unit.crawler.name = 爬行者 +unit.atrax.name = Atrax +unit.spiroct.name = Spiroct +unit.arkyid.name = Arkyid +unit.flare.name = Flare +unit.horizon.name = Horizon +unit.zenith.name = Zenith +unit.antumbra.name = Antumbra +unit.eclipse.name = Eclipse +unit.mono.name = Mono +unit.poly.name = Poly +unit.mega.name = Mega +unit.risse.name = Risse +unit.minke.name = Minke +unit.bryde.name = Bryde +unit.alpha.name = Alpha +unit.beta.name = Beta +unit.gamma.name = Gamma + +block.parallax.name = Parallax block.cliff.name = 悬崖 block.sand-boulder.name = 沙砂巨石 block.grass.name = 草地 @@ -994,17 +1022,6 @@ block.blast-mixer.name = 爆炸混合器 block.solar-panel.name = 太阳能板 block.solar-panel-large.name = 大型太阳能板 block.oil-extractor.name = 石油钻井 -block.command-center.name = 指挥中心 -block.draug-factory.name = 德鲁格采矿机工厂 -block.spirit-factory.name = 神魂修理机工厂 -block.phantom-factory.name = 幻影建造机工厂 -block.wraith-factory.name = 死灵战机工厂 -block.ghoul-factory.name = 食尸鬼轰炸机工厂 -block.dagger-factory.name = 尖刀机甲工厂 -block.crawler-factory.name = 爬行者机甲工厂 -block.titan-factory.name = 泰坦机甲工厂 -block.fortress-factory.name = 堡垒机甲工厂 -block.revenant-factory.name = 亡魂战机工厂 block.repair-point.name = 维修点 block.pulse-conduit.name = 脉冲导管 block.plated-conduit.name = 电镀导管 @@ -1036,6 +1053,19 @@ block.meltdown.name = 熔毁 block.container.name = 容器 block.launch-pad.name = 发射台 block.launch-pad-large.name = 大型发射台 +block.segment.name = 分割机 +block.ground-factory.name = 地面工厂 +block.air-factory.name = Air Factory +block.naval-factory.name = Naval Factory +block.additive-reconstructor.name = Additive Reconstructor +block.multiplicative-reconstructor.name = Multiplicative Reconstructor +block.exponential-reconstructor.name = Exponential Reconstructor +block.tetrative-reconstructor.name = Tetrative Reconstructor +block.mass-conveyor.name = Mass Conveyor +block.payload-router.name = Payload Router +block.disassembler.name = Disassembler +block.silicon-crucible.name = Silicon Crucible +block.large-overdrive-projector.name = Large Overdrive Projector team.blue.name = 蓝 team.crux.name = 红 team.sharded.name = 黄 @@ -1043,21 +1073,7 @@ team.orange.name = 橙 team.derelict.name = 灰 team.green.name = 绿 team.purple.name = 紫 -unit.spirit.name = 神魂修理机 -unit.draug.name = 德鲁格采矿机 -unit.phantom.name = 幻影建造机 -unit.dagger.name = 尖刀 -unit.crawler.name = 爬行者 -unit.titan.name = 泰坦 -unit.ghoul.name = 食尸鬼轰炸机 -unit.wraith.name = 死灵战机 -unit.fortress.name = 堡垒 -unit.revenant.name = 亡魂 -unit.eruptor.name = 暴君 -unit.chaos-array.name = 混沌者 -unit.eradicator.name = 根除者 -unit.lich.name = 巫妖 -unit.reaper.name = 死神 + tutorial.next = [lightgray]<点击以继续> tutorial.intro = 您已进入[scarlet] Mindustry 教程[]。[]\n使用[accent][[WASD][]键移动机甲和视角。\n[accent]按住[[Ctrl]并转动鼠标滚轮[]缩放视野。\n让我们从[accent]采集铜矿[]开始。先移动到铜矿旁边,然后点按矿脉附近散落的矿物。\n\n[accent]{0}/{1} 铜 tutorial.intro.mobile = 您已进入[scarlet] Mindustry 教程[]。\n在屏幕上滑动来继续。\n[accent]双指捏合[] 来缩小和放大。\n让我们从[accent]采集铜矿[]开始。先移动到铜矿旁边,然后点按矿脉附近散落的矿物。\n\n[accent]铜 {0}/{1} @@ -1100,17 +1116,7 @@ liquid.water.description = 最有用的液体。常用于冷却机器和废物 liquid.slag.description = 各种不同类型的熔融金属混合在一起的液体。可以被分解成其矿物成分,或作为武器喷向敌方单位。 liquid.oil.description = 用于先进材料生产的液体。可以转换成煤作为燃料,或作为武器喷射和放火。 liquid.cryofluid.description = 一种由水和钛制成的惰性、无腐蚀性的液体。具有极高的热容量。广泛用作冷却剂。 -unit.draug.description = 一种原始的采矿机。生产成本低,消耗品。在附近自动开采铜和铅。将开采的资源输送到最近的核心。 -unit.spirit.description = 采矿机的改进版本,用于维修而不是采矿。自动修复该区域中任何损坏的建筑。 -unit.phantom.description = 一种先进的无人机。跟随玩家并协助建造。 -unit.dagger.description = 一种最基本的地面机甲。生产成本低。集群使用时比较有用。 -unit.crawler.description = 一种地面机甲,由一个框架和绑在上面的烈性炸药组成。不是特别耐用。与敌人接触后爆炸。 -unit.titan.description = 一种先进的地面装甲部队。攻击地面和空中目标。配备两个微型灼烧级火焰喷射器。 -unit.fortress.description = 一种重型炮兵机甲。装备两门改进型冰雹炮,用于对敌军建筑物和部队进行远程攻击。 -unit.eruptor.description = 一种用来拆除建筑物的重型机甲。在敌人的防御工事上发射矿渣,将它们熔化并点燃挥发物。 -unit.wraith.description = 一种快速、一击即退的拦截器机甲。目标是发电机。 -unit.ghoul.description = 一种重型地毯式轰炸机。瞄准关键的基础设施来击溃敌人的基地。 -unit.revenant.description = 一种发射导弹的重型飞行机甲。 + block.message.description = 保存一条文字信息。用于队友之间进行交流。 block.graphite-press.description = 将煤块压缩成纯石墨片材料。 block.multi-press.description = 石墨压缩机的升级版。利用水和电力快速高效地处理煤炭。 @@ -1152,7 +1158,7 @@ block.mender.description = 定期修理附近的建筑,使防御系统在波 block.mend-projector.description = 修理者的升级版,定期修复附近的建筑物。 block.overdrive-projector.description = 提高附近建筑物的速度,如钻头和传送带。 block.force-projector.description = 在自身周围创建一个六角形力场,使里面的建筑物和单位免受伤害。\n持续承受高伤害会导致过热,可以使用冷却液降温。相织物可用于增加屏障大小。 -block.shock-mine.description = 伤害踩到它的敌人。敌人几乎看不到它。 +block.shock-mine.description = 对踩到它的敌人造成伤害。敌人几乎看不到它。 block.conveyor.description = 初级物品传送带。将物品向前输送并在可能时运入建筑。可旋转方向。 block.titanium-conveyor.description = 高级物品传送带。运送物品的速度快于初级传送带。 block.plastanium-conveyor.description = 打包物品进行运输。\n在后方输入物品,在前方三个方向输出物品。 @@ -1221,15 +1227,5 @@ block.ripple.description = 大型远程炮台,非常强力,向远处的敌 block.cyclone.description = 大型炮塔,对空对地,发射在敌人周围引爆的爆炸物。 block.spectre.description = 超大型炮塔,对空对地,一次射出两颗强大的穿甲弹药。 block.meltdown.description = 超大型激光炮塔,充能之后持续发射光束,需要冷却剂。 -block.command-center.description = 在地图上向联盟单位发出移动命令。\n使部队攻击一个敌人核心,或者撤退到指挥中心。当没有敌人核心时,得到攻击命令的部队默认向最近的敌人出现的地方集结。 -block.draug-factory.description = 生产德鲁格釆矿机。 -block.spirit-factory.description = 生产魂灵修理机。 -block.phantom-factory.description = 生产幻影建造机。 -block.wraith-factory.description = 生产快速截击机。 -block.ghoul-factory.description = 生产重型地毯轰炸机。 -block.revenant-factory.description = 生产重型导弹部队。 -block.dagger-factory.description = 生产基本地面单位。 -block.crawler-factory.description = 生产快速自毁单元。 -block.titan-factory.description = 生产先进的装甲地面单位。 -block.fortress-factory.description = 生产重型地面火炮部队。 block.repair-point.description = 持续治疗其附近伤势最重的单位。 +block.segment.description = 对行进中的导弹进行破坏和摧毁, 除激光以外. diff --git a/core/assets/bundles/bundle_zh_TW.properties b/core/assets/bundles/bundle_zh_TW.properties index 43cd6df1dd..e7ad86ac5d 100644 --- a/core/assets/bundles/bundle_zh_TW.properties +++ b/core/assets/bundles/bundle_zh_TW.properties @@ -106,6 +106,7 @@ mods.guide = 模組指南 mods.report = 回報錯誤 mods.openfolder = 開啟模組資料夾 mods.reload = 重新載入 +mods.reloadexit = The game will now exit, to reload mods. mod.display = [gray]模組:[orange]{0} mod.enabled = [lightgray]已啟用 mod.disabled = [scarlet]已禁用 @@ -124,6 +125,7 @@ mod.reloadrequired = [scarlet]需要重新載入 mod.import = 匯入模組 mod.import.file = 匯入檔案 mod.import.github = 匯入GitHub模組 +mod.jarwarn = [scarlet]JAR mods are inherently unsafe.[]\nMake sure you're importing this mod from a trustworthy source! mod.item.remove = 此物品是[accent] '{0}'[]模組的一部份。解除安裝模組以移除此物品。 mod.remove.confirm = 該模組將被刪除。 mod.author = [lightgray]作者:[] {0} @@ -224,7 +226,6 @@ save.new = 新存檔 save.overwrite = 您確定要覆蓋存檔嗎? overwrite = 覆蓋 save.none = 找不到存檔! -saveload = [accent]存檔中... savefail = 存檔失敗! save.delete.confirm = 您確定要刪除這個存檔嗎? save.delete = 刪除 @@ -272,6 +273,7 @@ quit.confirm.tutorial = 您確定您知道自己在做什麼嗎?\n該教學可 loading = [accent]載入中... reloading = [accent]模組重新載入中... saving = [accent]儲存中... +respawn = [accent][[{0}][]重生 cancelbuilding = [accent][[{0}][]清除計畫 selectschematic = [accent][[{0}][]選擇並複製 pausebuilding = [accent][[{0}][]暫停建造 @@ -328,8 +330,9 @@ waves.never = 〈永遠〉 waves.every = 每 waves.waves = 波次 waves.perspawn = 每次生成 +waves.shields = 護盾/波次 waves.to = 至 -waves.boss = 頭目 +waves.guardian = 守衛者 waves.preview = 預覽 waves.edit = 編輯... waves.copy = 複製到剪貼板 @@ -460,6 +463,7 @@ requirement.unlock = 解鎖{0} resume = 繼續區域:\n[lightgray]{0} bestwave = [lightgray]最高波次:{0} launch = < 發射 > +launch.text = Launch launch.title = 發射成功 launch.next = [lightgray]下次的機會於波次{0} launch.unable2 = [scarlet]無法發射核心。[] @@ -467,13 +471,13 @@ launch.confirm = 這將發射核心中的所有資源。\n你將無法返回這 launch.skip.confirm = 如果您現在跳過,您將無法發射核心直到下一次的可發射波數。 uncover = 探索 configure = 配置裝載 +loadout = Loadout +resources = Resources bannedblocks = 禁用方塊 addall = 全部加入 -configure.locked = [lightgray]解鎖配置裝載: {0}。 configure.invalid = 數值必須介於 0 到 {0}。 zone.unlocked = [lightgray]{0}已解鎖。 zone.requirement.complete = 到達波次{0}:\n滿足{1}區域要求。 -zone.config.unlocked = 加載解鎖:[lightgray]\n{0} zone.resources = [lightgray]檢測到的資源: zone.objective = [lightgray]目標: [accent]{0} zone.objective.survival = 生存 @@ -492,35 +496,29 @@ error.io = 網絡輸出入錯誤。 error.any = 未知網絡錯誤。 error.bloom = 初始化特效失敗.\n您的設備可能不支援它 -zone.groundZero.name = 零號地區 -zone.desertWastes.name = 沙漠荒原 -zone.craters.name = 隕石坑 -zone.frozenForest.name = 冰凍森林 -zone.ruinousShores.name = 廢墟海岸 -zone.stainedMountains.name = 汙染山脈 -zone.desolateRift.name = 荒涼裂谷 -zone.nuclearComplex.name = 核生產綜合體 -zone.overgrowth.name = 蔓生 -zone.tarFields.name = 焦油田 -zone.saltFlats.name = 鹽沼 -zone.impact0078.name = 衝擊 0078 -zone.crags.name = 岩壁 -zone.fungalPass.name = 真菌隘口 +sector.groundZero.name = Ground Zero +sector.craters.name = The Craters +sector.frozenForest.name = Frozen Forest +sector.ruinousShores.name = Ruinous Shores +sector.stainedMountains.name = Stained Mountains +sector.desolateRift.name = Desolate Rift +sector.nuclearComplex.name = Nuclear Production Complex +sector.overgrowth.name = Overgrowth +sector.tarFields.name = Tar Fields +sector.saltFlats.name = Salt Flats +sector.fungalPass.name = Fungal Pass -zone.groundZero.description = 再次開始的最佳位置。敵人威脅度低。資源少。\n盡可能的收集更多的鉛和銅。\n繼續前進。 -zone.frozenForest.description = 即使這裡更靠近山脈,孢子也已經擴散到這裡了。嚴寒的溫度不可能永遠禁錮它們。\n\n開始進入能源的世界。建造燃燒發電機。學會使用修理方塊。 -zone.desertWastes.description = 這些荒原規模巨大,難以預測,並且與廢棄的結構交錯在一起。\n此地區存在著煤炭。燃燒它以獲得能源或合成石墨。\n\n[lightgray]無法保證此地圖的著陸位置。 -zone.saltFlats.description = 鹽沼毗連著沙漠。在這裡幾乎找不到多少資源\n\n敵人在這裡建立了一個資源儲存複合體。剷除敵人的核心。別留下任何東西。 -zone.craters.description = 這個殞坑中心積蓄著水。這是一場舊戰爭的遺跡。奪回該地區。收集沙子。燒製玻璃。抽水來冷卻砲塔和鑽頭。 -zone.ruinousShores.description = 穿過荒地,就是海岸線。這個地點曾經駐紮了海防陣線。現在它們已經所剩無幾。只有最基本的防禦結構沒有被破壞,其他的一切都成了殘骸。\n繼續向外擴張。重新發現那些科技。 -zone.stainedMountains.description = 內陸的更深處是群山,還未被孢子所污染。\n提取在該區域蘊藏豐富的鈦,並學習如何使用它們。\n\n這裡存在著更為強大的敵人。不要給他們時間派出最強的部隊。 -zone.overgrowth.description = 這個地區更靠近孢子的來源,已經蔓生過度了。\n敵人在這裡建立了哨所。建立泰坦機甲。破壞它,並取回失落的事物。 -zone.tarFields.description = 位於山脈和沙漠之間的產油區外緣是少數幾個有可用焦油儲量的地區之一。\n雖然被遺棄了,該地區附近還是有著一些危險的敵人。不要低估它們。\n\n[lightgray]如果可能的話,研究原油加工技術。 -zone.desolateRift.description = 一個非常危險的區域。資源豐富,但空間很小。毀滅的風險很高。請盡快離開。不要被敵人攻擊之間的漫長間隔所欺騙。 -zone.nuclearComplex.description = 以前生產和加工釷的設施已變成廢墟。\n[lightgray]研究釷及其多種用途。\n\n此處的敵人數量眾多,不斷的偵查入侵者。 -zone.fungalPass.description = 高山與被孢子纏繞的低地之間的過渡區域。一個小的敵人偵察基地位於這裡。\n破壞它。\n使用匕首機甲和爬行機甲單位來摧毀兩個核心。 -zone.impact0078.description = <在此處輸入說明> -zone.crags.description = <在此輸入說明> +sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. +sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. +sector.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. +sector.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. +sector.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. +sector.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units. +sector.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build Titan units. Destroy it. Reclaim that which was lost. +sector.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. +sector.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. +sector.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. +sector.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. settings.language = 語言 settings.data = 遊戲數據 @@ -537,6 +535,7 @@ settings.clearall.confirm = [scarlet]警告![]\n這將清除所有數據,包 paused = [accent]〈已暫停〉 clear = 清除 banned = [scarlet]已被封禁 +unplaceable.sectorcaptured = [scarlet]需要已占領的地區 yes = 是 no = 否 info.title = 資訊 @@ -582,6 +581,8 @@ blocks.reload = 射擊次數/秒 blocks.ammo = 彈藥 bar.drilltierreq = 需要更好的鑽頭 +bar.noresources = Missing Resources +bar.corereq = Core Base Required bar.drillspeed = 鑽頭速度:{0}/秒 bar.pumpspeed = 液體泵送速度:{0}/s bar.efficiency = 效率:{0}% @@ -591,11 +592,12 @@ bar.poweramount = 能量:{0} bar.poweroutput = 能量輸出:{0} bar.items = 物品:{0} bar.capacity = 容量: {0} +bar.unitcap = {0} {1}/{2} +bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled] bar.liquid = 液體 bar.heat = 熱 bar.power = 能量 bar.progress = 建造進度 -bar.spawned = 單位:{0}/{1} bar.input = 輸入 bar.output = 輸出 @@ -639,6 +641,7 @@ setting.linear.name = 線性過濾 setting.hints.name = 提示 setting.flow.name = 顯示資源輸送速度[scarlet] setting.buildautopause.name = 自動暫停建築 +setting.mapcenter.name = Auto Center Map To Player setting.animatedwater.name = 液體動畫 setting.animatedshields.name = 護盾動畫 setting.antialias.name = 消除鋸齒[lightgray](需要重啟遊戲)[] @@ -663,7 +666,6 @@ setting.effects.name = 顯示特效 setting.destroyedblocks.name = 顯示被破壞的方塊 setting.blockstatus.name = 顯示方塊狀態 setting.conveyorpathfinding.name = 自動輸送帶放置規劃 -setting.coreselect.name = 允許藍圖包含核心 setting.sensitivity.name = 控制器靈敏度 setting.saveinterval.name = 自動存檔間隔 setting.seconds = {0}秒 @@ -672,12 +674,15 @@ setting.milliseconds = {0}毫秒 setting.fullscreen.name = 全螢幕 setting.borderlesswindow.name = 無邊框窗口[lightgray](可能需要重啟遊戲) setting.fps.name = 顯示FPS與Ping +setting.smoothcamera.name = Smooth Camera setting.blockselectkeys.name = 顯示方塊選擇快捷鍵 setting.vsync.name = 垂直同步 setting.pixelate.name = 像素化 setting.minimap.name = 顯示小地圖 +setting.coreitems.name = Display Core Items (WIP) setting.position.name = 顯示玩家位置 setting.musicvol.name = 音樂音量 +setting.atmosphere.name = 顯示星球大氣層 setting.ambientvol.name = 環境音量 setting.mutemusic.name = 靜音 setting.sfxvol.name = 音效音量 @@ -700,10 +705,13 @@ keybinds.mobile = [scarlet]此處的大多數快捷鍵在移動設備上均不 category.general.name = 一般 category.view.name = 查看 category.multiplayer.name = 多人 +category.blocks.name = Block Select command.attack = 攻擊 command.rally = 集結 command.retreat = 撤退 placement.blockselectkeys = \n[lightgray]按鍵:[{0}, +keybind.respawn.name = 重生 +keybind.control.name = 控制單位 keybind.clear_building.name = 清除建築指令 keybind.press = 按一下按鍵... keybind.press.axis = 按一下軸向或按鍵... @@ -713,7 +721,7 @@ keybind.toggle_block_status.name = 開啟方塊狀態顯示 keybind.move_x.name = 水平移動 keybind.move_y.name = 垂直移動 keybind.mouse_move.name = 跟隨滑鼠 -keybind.dash.name = 衝刺 +keybind.boost.name = 噴射 keybind.schematic_select.name = 選擇區域 keybind.schematic_menu.name = 藍圖目錄 keybind.schematic_flip_x.name = X軸翻轉 @@ -775,30 +783,25 @@ rules.wavetimer = 波次時間 rules.waves = 波次 rules.attack = 攻擊模式 rules.enemyCheat = 電腦無限資源 -rules.unitdrops = 單位掉落物 +rules.blockhealthmultiplier = 建築物耐久度倍數 +rules.blockdamagemultiplier = Block Damage Multiplier rules.unitbuildspeedmultiplier = 單位建設速度倍數 rules.unithealthmultiplier = 單位生命值倍數 -rules.blockhealthmultiplier = 建築物耐久度倍數 -rules.playerhealthmultiplier = 玩家生命值倍數 -rules.playerdamagemultiplier = 玩家傷害倍數 rules.unitdamagemultiplier = 單位傷害倍數 rules.enemycorebuildradius = 敵人核心禁止建設半徑︰[lightgray](格) -rules.respawntime = 重生時間︰[lightgray](秒) rules.wavespacing = 波次間距︰[lightgray](秒) rules.buildcostmultiplier = 建設成本倍數 rules.buildspeedmultiplier = 建設速度倍數 rules.deconstructrefundmultiplier = 拆除資源返還比例 rules.waitForWaveToEnd = 等待所有敵人毀滅才開始下一波次 rules.dropzoneradius = 空降區半徑:[lightgray](格) -rules.respawns = 每波次最多重生次數 -rules.limitedRespawns = 限制重生 +rules.unitammo = Units Require Ammo rules.title.waves = 波次 -rules.title.respawns = 重生 rules.title.resourcesbuilding = 資源與建築 -rules.title.player = 玩家 rules.title.enemy = 敵人 rules.title.unit = 單位 rules.title.experimental = 實驗中 +rules.title.environment = 環境 rules.lighting = 光照 rules.ambientlight = 環境光照 rules.solarpowermultiplier = 太陽能倍數 @@ -827,22 +830,47 @@ liquid.water.name = 水 liquid.slag.name = 熔渣 liquid.oil.name = 原油 liquid.cryofluid.name = 冷凍液 -item.corestorable = [lightgray]核心可儲存: {0} item.explosiveness = [lightgray]爆炸性:{0}% item.flammability = [lightgray]易燃性:{0}% item.radioactivity = [lightgray]放射性:{0}% unit.health = [lightgray]生命值:{0} unit.speed = [lightgray]速度:{0} unit.weapon = [lightgray]武器: {0} -unit.itemcapacity = [lightgray]物品量: {0} -unit.minespeed = [lightgray]開採速度: {0}% -unit.minepower = [lightgray]開採強度: {0} -unit.ability = [lightgray]技能: {0} -unit.buildspeed = [lightgray]建設速度: {0}% +unit.itemcapacity = [lightgray]物品容量: {0} +unit.minespeed = [lightgray]採礦速度: {0}% +unit.minepower = [lightgray]採礦能力: {0} +unit.ability = [lightgray]能力: {0} +unit.buildspeed = [lightgray]建造速度: {0}% liquid.heatcapacity = [lightgray]熱容量:{0} liquid.viscosity = [lightgray]粘性:{0} liquid.temperature = [lightgray]溫度:{0} +unit.dagger.name = 匕首機甲 +unit.mace.name = Mace +unit.fortress.name = 要塞 +unit.nova.name = Nova +unit.pulsar.name = Pulsar +unit.quasar.name = Quasar +unit.crawler.name = 爬行機甲 +unit.atrax.name = Atrax +unit.spiroct.name = Spiroct +unit.arkyid.name = Arkyid +unit.flare.name = Flare +unit.horizon.name = Horizon +unit.zenith.name = Zenith +unit.antumbra.name = Antumbra +unit.eclipse.name = Eclipse +unit.mono.name = Mono +unit.poly.name = Poly +unit.mega.name = Mega +unit.risse.name = Risse +unit.minke.name = Minke +unit.bryde.name = Bryde +unit.alpha.name = Alpha +unit.beta.name = Beta +unit.gamma.name = Gamma + +block.parallax.name = Parallax block.cliff.name = 峭壁 block.sand-boulder.name = 沙礫 block.grass.name = 草 @@ -994,17 +1022,6 @@ block.blast-mixer.name = 爆炸混合器 block.solar-panel.name = 太陽能板 block.solar-panel-large.name = 大型太陽能板 block.oil-extractor.name = 原油鑽井 -block.command-center.name = 指揮中心 -block.draug-factory.name = 殭屍採礦機工廠 -block.spirit-factory.name = 幽靈無人機工廠 -block.phantom-factory.name = 幻影無人機工廠 -block.wraith-factory.name = 怨靈戰鬥機工廠 -block.ghoul-factory.name = 食屍鬼轟炸機工廠 -block.dagger-factory.name = 匕首機甲工廠 -block.crawler-factory.name = 爬行機甲工廠 -block.titan-factory.name = 泰坦機甲工廠 -block.fortress-factory.name = 要塞機甲工廠 -block.revenant-factory.name = 復仇鬼戰鬥機工廠 block.repair-point.name = 維修點 block.pulse-conduit.name = 脈衝管線 block.plated-conduit.name = 裝甲管線 @@ -1036,6 +1053,19 @@ block.meltdown.name = 熔毀砲 block.container.name = 容器 block.launch-pad.name = 小型發射台 block.launch-pad-large.name = 大型發射台 +block.segment.name = Segment +block.ground-factory.name = Ground Factory +block.air-factory.name = Air Factory +block.naval-factory.name = Naval Factory +block.additive-reconstructor.name = Additive Reconstructor +block.multiplicative-reconstructor.name = Multiplicative Reconstructor +block.exponential-reconstructor.name = Exponential Reconstructor +block.tetrative-reconstructor.name = Tetrative Reconstructor +block.mass-conveyor.name = Mass Conveyor +block.payload-router.name = Payload Router +block.disassembler.name = Disassembler +block.silicon-crucible.name = Silicon Crucible +block.large-overdrive-projector.name = Large Overdrive Projector team.blue.name = 藍 team.crux.name = 紅 team.sharded.name = 黃 @@ -1043,21 +1073,7 @@ team.orange.name = 橘 team.derelict.name = 灰 team.green.name = 綠 team.purple.name = 紫 -unit.spirit.name = 幽靈無人機 -unit.draug.name = 殭屍採礦無人機 -unit.phantom.name = 幻影無人機 -unit.dagger.name = 匕首機甲 -unit.crawler.name = 爬行機甲 -unit.titan.name = 泰坦 -unit.ghoul.name = 食屍鬼轟炸機 -unit.wraith.name = 怨靈戰鬥機 -unit.fortress.name = 要塞 -unit.revenant.name = 復仇鬼 -unit.eruptor.name = 噴發者 -unit.chaos-array.name = 混沌陣列 -unit.eradicator.name = 殲滅者 -unit.lich.name = 巫妖 -unit.reaper.name = 收掠者 + tutorial.next = [lightgray]<按下以繼續> tutorial.intro = 您已進入[scarlet] Mindustry 教學。[]\n使用[[WASD鍵]來移動.\n滾動滾輪來放大縮小畫面.\n從[accent]開採銅礦[]開始吧靠近它,然後在靠近核心的位置點擊銅礦。\n\n[accent]{0}/{1}銅礦 tutorial.intro.mobile = 您已進入[scarlet] Mindustry 教學。[]\n滑動螢幕即可移動。\n[accent]用兩指捏[]來縮放畫面。\n從[accent]開採銅礦[]開始吧。靠近它,然後在靠近核心的位置點擊銅礦。\n\n[accent]{0}/{1}銅礦 @@ -1100,17 +1116,7 @@ liquid.water.description = 最有用的液體。常用於冷卻機器和廢物 liquid.slag.description = 各種不同類型的熔融金屬混合在一起的液體。可以被分解成其所組成之礦物,或作為武器向敵方單位噴灑。 liquid.oil.description = 用於進階材料製造的液體。可以轉化為煤炭作為燃料或噴灑向敵方單位後點燃作為武器。 liquid.cryofluid.description = 一種安定,無腐蝕性的液體,用水及鈦混合成。具有很高的比熱。廣泛的用作冷卻劑。 -unit.draug.description = 原始的採礦無人機。生產便宜。消耗品。自動在附近開採銅和鉛。將開採的資源送入最接近的核心。 -unit.spirit.description = 改造的殭屍採礦無人機,設計來修復而非採礦。會自動修理整個區域內的受損方塊。 -unit.phantom.description = 一種高級的無人機。跟隨玩家,並輔助建造及重建被摧毀的建築。 -unit.dagger.description = 一種基本的地面單位。成群使用時具有壓倒性威力。 -unit.crawler.description = 一種地面單位,由精簡的機架組成,頂部綁有炸藥。不特別耐打。與敵人接觸時爆炸。 -unit.titan.description = 一種高級的具有裝甲的地面單位。配備兩具迷你的焦土級火焰發射器。攻擊地面單位和空中單位。 -unit.fortress.description = 一種具有重型大砲的地面單位。配備兩具冰雹型的大砲,用於對敵方建築和單位的長距離攻擊。 -unit.eruptor.description = 設計用於拆除建築物的重型機械。向敵人的防禦工事發射一道熔渣,融化它們,並點燃周圍可燃物。 -unit.wraith.description = 一種快速、打帶跑的攔截機。針對發電機進行打擊。 -unit.ghoul.description = 一種重型的鋪蓋性轟炸機。摧毀敵方建築,並針對重要基礎設施進行打擊。 -unit.revenant.description = 重型的盤旋導彈陣列。 + block.message.description = 儲存一條訊息。用於盟友之間的溝通。 block.graphite-press.description = 將煤炭壓縮成石墨。 block.multi-press.description = 石墨壓縮機的升級版。利用水和電力快速高效地處理煤炭。 @@ -1221,15 +1227,5 @@ block.ripple.description = 極為強大的迫擊炮塔。一次向敵人發射 block.cyclone.description = 一種對空和對地的大型砲塔。向附近單位發射爆裂性的碎塊。 block.spectre.description = 一種雙炮管的巨型砲塔。向空中及地面敵人發射大型的穿甲彈。 block.meltdown.description = 一種巨型激光砲塔。充能並發射持續性的激光光束。需要冷卻液以運作。 -block.command-center.description = 向地圖上的盟軍發出移動命令。\n使單位巡邏,攻擊敵人的核心或撤退到核心/工廠。當沒有敵人核心時,部隊將默認在攻擊命令下進行巡邏。 -block.draug-factory.description = 生產殭屍採礦無人機。 -block.spirit-factory.description = 生產幽靈無人機,用於修復方塊。 -block.phantom-factory.description = 生產高級的建造無人機。 -block.wraith-factory.description = 生產快速、打帶跑的攔截機單位。 -block.ghoul-factory.description = 生產重型鋪蓋轟炸機。 -block.revenant-factory.description = 生產重型飛行導彈單位。 -block.dagger-factory.description = 生產基本地面單位。 -block.crawler-factory.description = 生產快速的自爆部隊。 -block.titan-factory.description = 生產具有裝甲的高級地面單位。 -block.fortress-factory.description = 生產重型火砲地面單位。 block.repair-point.description = 持續治療附近最近的受損單位。 +block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted. diff --git a/core/assets/icons/icons.properties b/core/assets/icons/icons.properties index 93b81a045e..4a667ccd7d 100755 --- a/core/assets/icons/icons.properties +++ b/core/assets/icons/icons.properties @@ -252,3 +252,29 @@ 63492=exponential-reconstructor|block-exponential-reconstructor-medium 63491=tetrative-reconstructor|block-tetrative-reconstructor-medium 63490=resupply-point|block-resupply-point-medium +63489=parallax|block-parallax-medium +63488=dagger|unit-dagger-medium +63487=mace|unit-mace-medium +63486=fortress|unit-fortress-medium +63485=nova|unit-nova-medium +63484=pulsar|unit-pulsar-medium +63483=quasar|unit-quasar-medium +63482=crawler|unit-crawler-medium +63481=atrax|unit-atrax-medium +63480=spiroct|unit-spiroct-medium +63479=arkyid|unit-arkyid-medium +63478=flare|unit-flare-medium +63477=horizon|unit-horizon-medium +63476=zenith|unit-zenith-medium +63475=antumbra|unit-antumbra-medium +63474=eclipse|unit-eclipse-medium +63473=mono|unit-mono-medium +63472=poly|unit-poly-medium +63471=mega|unit-mega-medium +63470=risse|unit-risse-medium +63469=minke|unit-minke-medium +63468=bryde|unit-bryde-medium +63467=alpha|unit-alpha-medium +63466=beta|unit-beta-medium +63465=gamma|unit-gamma-medium +63464=block|unit-block-medium diff --git a/core/assets/maps/groundZero.msav b/core/assets/maps/groundZero.msav index 628ab59ece..da07ea1925 100644 Binary files a/core/assets/maps/groundZero.msav and b/core/assets/maps/groundZero.msav differ diff --git a/core/assets/scripts/global.js b/core/assets/scripts/global.js index e254f4c2e7..5d2f80aec7 100755 --- a/core/assets/scripts/global.js +++ b/core/assets/scripts/global.js @@ -139,5 +139,4 @@ const ResizeEvent = Packages.mindustry.game.EventType.ResizeEvent const LaunchEvent = Packages.mindustry.game.EventType.LaunchEvent const LoseEvent = Packages.mindustry.game.EventType.LoseEvent const WinEvent = Packages.mindustry.game.EventType.WinEvent -const TurnEvent = Packages.mindustry.game.EventType.TurnEvent const Trigger = Packages.mindustry.game.EventType.Trigger diff --git a/core/assets/sprites/block_colors.png b/core/assets/sprites/block_colors.png index b9a810b3bc..9677923456 100644 Binary files a/core/assets/sprites/block_colors.png and b/core/assets/sprites/block_colors.png differ diff --git a/core/assets/sprites/fallback/sprites.atlas b/core/assets/sprites/fallback/sprites.atlas index 441e2c454c..62d5a46e8a 100644 --- a/core/assets/sprites/fallback/sprites.atlas +++ b/core/assets/sprites/fallback/sprites.atlas @@ -4,534 +4,429 @@ size: 2048,2048 format: rgba8888 filter: nearest,nearest repeat: none -core-silo - rotate: false - xy: 1884, 613 - size: 160, 160 - orig: 160, 160 - offset: 0, 0 - index: -1 -blast-drill - rotate: false - xy: 1843, 159 - size: 128, 128 - orig: 128, 128 - offset: 0, 0 - index: -1 white-tree rotate: false - xy: 1, 1083 + xy: 323, 1720 size: 320, 320 orig: 320, 320 offset: 0, 0 index: -1 white-tree-dead rotate: false - xy: 323, 1405 + xy: 645, 1720 size: 320, 320 orig: 320, 320 offset: 0, 0 index: -1 core-nucleus rotate: false - xy: 1722, 613 - size: 160, 160 - orig: 160, 160 - offset: 0, 0 - index: -1 -core-nucleus-team - rotate: false - xy: 1195, 419 + xy: 1873, 364 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 exponential-reconstructor rotate: false - xy: 775, 501 + xy: 323, 204 size: 224, 224 orig: 224, 224 offset: 0, 0 index: -1 exponential-reconstructor-top rotate: false - xy: 775, 275 + xy: 549, 204 size: 224, 224 orig: 224, 224 offset: 0, 0 index: -1 -factory-in-5 - rotate: false - xy: 1681, 289 - size: 160, 160 - orig: 160, 160 - offset: 0, 0 - index: -1 factory-in-7 rotate: false - xy: 775, 49 + xy: 775, 10 size: 224, 224 orig: 224, 224 offset: 0, 0 index: -1 factory-in-9 rotate: false - xy: 1225, 1469 + xy: 323, 1140 size: 288, 288 orig: 288, 288 offset: 0, 0 index: -1 -factory-out-5 - rotate: false - xy: 1843, 451 - size: 160, 160 - orig: 160, 160 - offset: 0, 0 - index: -1 factory-out-7 rotate: false - xy: 1065, 985 + xy: 1001, 462 size: 224, 224 orig: 224, 224 offset: 0, 0 index: -1 factory-out-9 rotate: false - xy: 1515, 1759 + xy: 613, 1140 size: 288, 288 orig: 288, 288 offset: 0, 0 index: -1 -multiplicative-reconstructor - rotate: false - xy: 1681, 127 - size: 160, 160 - orig: 160, 160 - offset: 0, 0 - index: -1 -multiplicative-reconstructor-top - rotate: false - xy: 1843, 289 - size: 160, 160 - orig: 160, 160 - offset: 0, 0 - index: -1 tetrative-reconstructor rotate: false - xy: 1515, 1469 + xy: 1193, 1172 size: 288, 288 orig: 288, 288 offset: 0, 0 index: -1 tetrative-reconstructor-top rotate: false - xy: 645, 1179 + xy: 1483, 1172 size: 288, 288 orig: 288, 288 offset: 0, 0 index: -1 circle-shadow rotate: false - xy: 1001, 750 + xy: 323, 1 size: 201, 201 orig: 201, 201 offset: 0, 0 index: -1 +antumbra-wreck0 + rotate: false + xy: 1437, 446 + size: 216, 240 + orig: 216, 240 + offset: 0, 0 + index: -1 +antumbra-wreck1 + rotate: false + xy: 1655, 446 + size: 216, 240 + orig: 216, 240 + offset: 0, 0 + index: -1 +antumbra-wreck2 + rotate: false + xy: 1437, 204 + size: 216, 240 + orig: 216, 240 + offset: 0, 0 + index: -1 block-core-nucleus-full rotate: false - xy: 1398, 613 + xy: 1837, 1492 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 block-exponential-reconstructor-full rotate: false - xy: 1805, 1823 + xy: 839, 688 size: 224, 224 orig: 224, 224 offset: 0, 0 index: -1 block-multiplicative-reconstructor-full rotate: false - xy: 1560, 613 + xy: 1873, 526 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 block-tetrative-reconstructor-full rotate: false - xy: 645, 1759 + xy: 967, 1752 size: 288, 288 orig: 288, 288 offset: 0, 0 index: -1 -core-nucleus-team-crux - rotate: false - xy: 1195, 257 - size: 160, 160 - orig: 160, 160 - offset: 0, 0 - index: -1 -core-nucleus-team-sharded - rotate: false - xy: 1001, 6 - size: 160, 160 - orig: 160, 160 - offset: 0, 0 - index: -1 -cracks-5-0 - rotate: false - xy: 1195, 95 - size: 160, 160 - orig: 160, 160 - offset: 0, 0 - index: -1 -cracks-5-1 - rotate: false - xy: 1357, 419 - size: 160, 160 - orig: 160, 160 - offset: 0, 0 - index: -1 -cracks-5-2 - rotate: false - xy: 1357, 257 - size: 160, 160 - orig: 160, 160 - offset: 0, 0 - index: -1 -cracks-5-3 - rotate: false - xy: 1357, 95 - size: 160, 160 - orig: 160, 160 - offset: 0, 0 - index: -1 -cracks-5-4 - rotate: false - xy: 1519, 451 - size: 160, 160 - orig: 160, 160 - offset: 0, 0 - index: -1 -cracks-5-5 - rotate: false - xy: 1519, 289 - size: 160, 160 - orig: 160, 160 - offset: 0, 0 - index: -1 -cracks-5-6 - rotate: false - xy: 1681, 451 - size: 160, 160 - orig: 160, 160 - offset: 0, 0 - index: -1 -cracks-5-7 - rotate: false - xy: 1519, 127 - size: 160, 160 - orig: 160, 160 - offset: 0, 0 - index: -1 cracks-6-0 rotate: false - xy: 1001, 556 + xy: 526, 10 size: 192, 192 orig: 192, 192 offset: 0, 0 index: -1 cracks-6-1 rotate: false - xy: 1001, 362 + xy: 1001, 26 size: 192, 192 orig: 192, 192 offset: 0, 0 index: -1 cracks-6-2 rotate: false - xy: 1001, 168 + xy: 1195, 26 size: 192, 192 orig: 192, 192 offset: 0, 0 index: -1 cracks-6-3 rotate: false - xy: 1204, 775 + xy: 1837, 1848 size: 192, 192 orig: 192, 192 offset: 0, 0 index: -1 cracks-6-4 rotate: false - xy: 1398, 775 + xy: 1837, 1654 size: 192, 192 orig: 192, 192 offset: 0, 0 index: -1 cracks-6-5 rotate: false - xy: 1592, 775 + xy: 1389, 10 size: 192, 192 orig: 192, 192 offset: 0, 0 index: -1 cracks-6-6 rotate: false - xy: 1786, 775 + xy: 1583, 10 size: 192, 192 orig: 192, 192 offset: 0, 0 index: -1 cracks-6-7 rotate: false - xy: 1204, 581 + xy: 1777, 10 size: 192, 192 orig: 192, 192 offset: 0, 0 index: -1 cracks-7-0 rotate: false - xy: 1805, 1597 + xy: 323, 656 size: 224, 224 orig: 224, 224 offset: 0, 0 index: -1 cracks-7-1 rotate: false - xy: 613, 953 + xy: 549, 656 size: 224, 224 orig: 224, 224 offset: 0, 0 index: -1 cracks-7-2 rotate: false - xy: 549, 727 + xy: 1065, 688 size: 224, 224 orig: 224, 224 offset: 0, 0 index: -1 cracks-7-3 rotate: false - xy: 549, 501 + xy: 1291, 688 size: 224, 224 orig: 224, 224 offset: 0, 0 index: -1 cracks-7-4 rotate: false - xy: 549, 275 + xy: 775, 462 size: 224, 224 orig: 224, 224 offset: 0, 0 index: -1 cracks-7-5 rotate: false - xy: 549, 49 + xy: 323, 430 size: 224, 224 orig: 224, 224 offset: 0, 0 index: -1 cracks-7-6 rotate: false - xy: 839, 953 + xy: 549, 430 size: 224, 224 orig: 224, 224 offset: 0, 0 index: -1 cracks-7-7 rotate: false - xy: 775, 727 + xy: 775, 236 size: 224, 224 orig: 224, 224 offset: 0, 0 index: -1 cracks-8-0 rotate: false - xy: 935, 1211 + xy: 1773, 1204 size: 256, 256 orig: 256, 256 offset: 0, 0 index: -1 cracks-8-1 rotate: false - xy: 1193, 1211 + xy: 1773, 946 size: 256, 256 orig: 256, 256 offset: 0, 0 index: -1 cracks-8-2 rotate: false - xy: 1451, 1211 + xy: 903, 914 size: 256, 256 orig: 256, 256 offset: 0, 0 index: -1 cracks-8-3 rotate: false - xy: 1709, 1211 + xy: 323, 882 size: 256, 256 orig: 256, 256 offset: 0, 0 index: -1 cracks-8-4 rotate: false - xy: 291, 825 + xy: 581, 882 size: 256, 256 orig: 256, 256 offset: 0, 0 index: -1 cracks-8-5 rotate: false - xy: 291, 567 + xy: 1161, 914 size: 256, 256 orig: 256, 256 offset: 0, 0 index: -1 cracks-8-6 rotate: false - xy: 291, 309 + xy: 1419, 914 size: 256, 256 orig: 256, 256 offset: 0, 0 index: -1 cracks-8-7 rotate: false - xy: 291, 51 + xy: 1677, 688 size: 256, 256 orig: 256, 256 offset: 0, 0 index: -1 cracks-9-0 rotate: false - xy: 1, 793 + xy: 1257, 1752 size: 288, 288 orig: 288, 288 offset: 0, 0 index: -1 cracks-9-1 rotate: false - xy: 323, 1115 + xy: 1547, 1752 size: 288, 288 orig: 288, 288 offset: 0, 0 index: -1 cracks-9-2 rotate: false - xy: 645, 1469 + xy: 967, 1462 size: 288, 288 orig: 288, 288 offset: 0, 0 index: -1 cracks-9-3 rotate: false - xy: 935, 1759 + xy: 323, 1430 size: 288, 288 orig: 288, 288 offset: 0, 0 index: -1 cracks-9-4 rotate: false - xy: 1, 503 + xy: 613, 1430 size: 288, 288 orig: 288, 288 offset: 0, 0 index: -1 cracks-9-5 rotate: false - xy: 935, 1469 + xy: 1257, 1462 size: 288, 288 orig: 288, 288 offset: 0, 0 index: -1 cracks-9-6 rotate: false - xy: 1225, 1759 + xy: 1547, 1462 size: 288, 288 orig: 288, 288 offset: 0, 0 index: -1 cracks-9-7 rotate: false - xy: 1, 213 + xy: 903, 1172 size: 288, 288 orig: 288, 288 offset: 0, 0 index: -1 -unit-lich-full +eclipse-wreck0 rotate: false - xy: 1727, 969 + xy: 1, 1076 + size: 320, 320 + orig: 320, 320 + offset: 0, 0 + index: -1 +eclipse-wreck1 + rotate: false + xy: 1, 754 + size: 320, 320 + orig: 320, 320 + offset: 0, 0 + index: -1 +eclipse-wreck2 + rotate: false + xy: 1, 432 + size: 320, 320 + orig: 320, 320 + offset: 0, 0 + index: -1 +unit-antumbra-full + rotate: false + xy: 1655, 204 size: 216, 240 orig: 216, 240 offset: 0, 0 index: -1 -unit-reaper-full +unit-eclipse-full rotate: false - xy: 323, 1727 + xy: 1, 110 size: 320, 320 orig: 320, 320 offset: 0, 0 index: -1 circle rotate: false - xy: 1, 10 + xy: 1227, 485 size: 201, 201 orig: 201, 201 offset: 0, 0 index: -1 -eradicator +antumbra rotate: false - xy: 1519, 1 - size: 152, 124 - orig: 152, 124 - offset: 0, 0 - index: -1 -eradicator-base - rotate: false - xy: 1673, 1 - size: 152, 124 - orig: 152, 124 - offset: 0, 0 - index: -1 -eradicator-cell - rotate: false - xy: 1827, 1 - size: 152, 124 - orig: 152, 124 - offset: 0, 0 - index: -1 -eradicator-leg - rotate: false - xy: 1805, 1471 - size: 152, 124 - orig: 152, 124 - offset: 0, 0 - index: -1 -lich - rotate: false - xy: 1291, 969 + xy: 1001, 220 size: 216, 240 orig: 216, 240 offset: 0, 0 index: -1 -lich-cell +antumbra-cell rotate: false - xy: 1509, 969 + xy: 1219, 220 size: 216, 240 orig: 216, 240 offset: 0, 0 index: -1 -reaper +eclipse rotate: false - xy: 1, 1727 + xy: 1, 1720 size: 320, 320 orig: 320, 320 offset: 0, 0 index: -1 -reaper-cell +eclipse-cell rotate: false - xy: 1, 1405 + xy: 1, 1398 size: 320, 320 orig: 320, 320 offset: 0, 0 @@ -542,5237 +437,6006 @@ size: 2048,2048 format: rgba8888 filter: nearest,nearest repeat: none +core-silo + rotate: false + xy: 487, 1887 + size: 160, 160 + orig: 160, 160 + offset: 0, 0 + index: -1 data-processor rotate: false - xy: 397, 763 + xy: 1569, 947 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 data-processor-2 rotate: false - xy: 1075, 1591 + xy: 1827, 526 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 data-processor-top rotate: false - xy: 397, 665 + xy: 1667, 947 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 launch-pad rotate: false - xy: 393, 371 + xy: 1785, 849 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 launch-pad-large rotate: false - xy: 521, 1529 + xy: 1561, 1355 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 launch-pad-light rotate: false - xy: 491, 469 + xy: 1883, 849 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 launchpod rotate: false - xy: 1527, 1689 - size: 66, 64 - orig: 66, 64 + xy: 479, 467 + size: 64, 64 + orig: 64, 64 offset: 0, 0 index: -1 force-projector rotate: false - xy: 397, 567 + xy: 99, 857 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 force-projector-top rotate: false - xy: 495, 567 + xy: 197, 857 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 large-overdrive-projector rotate: false - xy: 295, 469 + xy: 1197, 849 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 large-overdrive-projector-top rotate: false - xy: 197, 273 + xy: 1295, 849 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 mend-projector rotate: false - xy: 659, 739 + xy: 397, 463 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 mend-projector-top rotate: false - xy: 659, 673 + xy: 677, 463 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 mender rotate: false - xy: 953, 3 + xy: 909, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 mender-top rotate: false - xy: 1233, 1191 + xy: 943, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 overdrive-projector rotate: false - xy: 659, 541 + xy: 1, 462 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 overdrive-projector-top rotate: false - xy: 655, 475 + xy: 545, 461 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 shock-mine rotate: false - xy: 1321, 1127 + xy: 205, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-loader rotate: false - xy: 911, 1739 + xy: 1283, 1045 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-unloader rotate: false - xy: 1629, 1853 + xy: 981, 1041 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 bridge-arrow rotate: false - xy: 879, 513 + xy: 939, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-conveyor rotate: false - xy: 845, 377 + xy: 1109, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-conveyor-bridge rotate: false - xy: 879, 411 + xy: 1143, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-conveyor-end rotate: false - xy: 845, 343 + xy: 1177, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 center rotate: false - xy: 879, 377 + xy: 1211, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-0-0 rotate: false - xy: 821, 79 + xy: 1739, 172 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-armored-conveyor-full rotate: false - xy: 821, 79 + xy: 1739, 172 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-0-1 rotate: false - xy: 817, 45 + xy: 785, 156 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-0-2 rotate: false - xy: 817, 11 + xy: 701, 153 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-0-3 rotate: false - xy: 1735, 1360 + xy: 819, 153 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-1-0 rotate: false - xy: 1731, 1326 + xy: 1549, 152 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-1-1 rotate: false - xy: 1731, 1292 + xy: 1583, 152 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-1-2 rotate: false - xy: 1751, 1474 + xy: 1617, 152 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-1-3 rotate: false - xy: 1785, 1481 + xy: 1773, 152 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-2-0 rotate: false - xy: 1819, 1481 + xy: 451, 151 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-2-1 rotate: false - xy: 1525, 1275 + xy: 853, 149 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-2-2 rotate: false - xy: 1559, 1275 + xy: 887, 149 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-2-3 rotate: false - xy: 803, 1057 + xy: 535, 148 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-3-0 rotate: false - xy: 837, 1057 + xy: 735, 148 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-3-1 rotate: false - xy: 871, 1057 + xy: 1, 147 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-3-2 rotate: false - xy: 905, 1057 + xy: 35, 147 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-3-3 rotate: false - xy: 787, 1023 + xy: 69, 147 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-4-0 rotate: false - xy: 821, 1023 + xy: 103, 147 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-4-1 rotate: false - xy: 855, 1023 + xy: 137, 147 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-4-2 rotate: false - xy: 889, 1023 + xy: 171, 147 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-4-3 rotate: false - xy: 791, 989 + xy: 205, 147 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-0-1 rotate: false - xy: 879, 139 + xy: 603, 105 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-0-2 rotate: false - xy: 913, 513 + xy: 1719, 104 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-0-3 rotate: false - xy: 913, 479 + xy: 1449, 103 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-1-0 rotate: false - xy: 913, 445 + xy: 1635, 96 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-1-1 rotate: false - xy: 913, 411 + xy: 1669, 96 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-1-2 rotate: false - xy: 913, 377 + xy: 753, 88 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-1-3 rotate: false - xy: 913, 343 + xy: 1483, 87 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-2-0 rotate: false - xy: 913, 309 + xy: 1807, 87 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-2-1 rotate: false - xy: 913, 275 + xy: 1841, 87 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-2-2 rotate: false - xy: 913, 241 + xy: 1875, 87 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-2-3 rotate: false - xy: 913, 207 + xy: 671, 85 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-3-0 rotate: false - xy: 913, 173 + xy: 787, 85 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-3-1 rotate: false - xy: 913, 139 + xy: 1517, 84 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-3-2 rotate: false - xy: 1153, 965 + xy: 1551, 84 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-3-3 rotate: false - xy: 1187, 965 + xy: 1585, 84 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-4-0 rotate: false - xy: 1221, 965 + xy: 1753, 84 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-4-1 rotate: false - xy: 1693, 1271 + xy: 443, 83 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-4-2 rotate: false - xy: 1727, 1258 + xy: 821, 81 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-4-3 rotate: false - xy: 855, 105 + xy: 855, 81 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plastanium-conveyor rotate: false - xy: 927, 829 + xy: 1351, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plastanium-conveyor-0 rotate: false - xy: 927, 795 + xy: 1385, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plastanium-conveyor-1 rotate: false - xy: 927, 761 + xy: 1889, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plastanium-conveyor-2 rotate: false - xy: 927, 727 + xy: 1923, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plastanium-conveyor-edge rotate: false - xy: 927, 693 + xy: 1957, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plastanium-conveyor-stack rotate: false - xy: 927, 659 + xy: 1991, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-0-1 rotate: false - xy: 1369, 1161 + xy: 1215, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-0-2 rotate: false - xy: 1389, 1127 + xy: 1249, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-0-3 rotate: false - xy: 1389, 1093 + xy: 1283, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-1-0 rotate: false - xy: 1389, 1059 + xy: 1317, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-1-1 rotate: false - xy: 1389, 1025 + xy: 1351, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-1-2 rotate: false - xy: 1391, 991 + xy: 1385, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-1-3 rotate: false - xy: 1391, 957 + xy: 1873, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-2-0 rotate: false - xy: 1397, 1229 + xy: 1907, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-2-1 rotate: false - xy: 1403, 1195 + xy: 1941, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-2-2 rotate: false - xy: 1403, 1161 + xy: 1975, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-2-3 rotate: false - xy: 1423, 1127 + xy: 2009, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-3-0 rotate: false - xy: 1423, 1093 + xy: 477, 9 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-3-1 rotate: false - xy: 1423, 1059 + xy: 545, 3 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-3-2 rotate: false - xy: 1423, 1025 + xy: 579, 3 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-3-3 rotate: false - xy: 1425, 991 + xy: 1671, 2 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-4-0 rotate: false - xy: 1425, 957 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -titanium-conveyor-4-1 - rotate: false - xy: 1431, 1229 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -titanium-conveyor-4-2 - rotate: false - xy: 1437, 1195 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -titanium-conveyor-4-3 - rotate: false - xy: 1437, 1161 + xy: 1419, 1 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cross rotate: false - xy: 919, 37 + xy: 239, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 distributor rotate: false - xy: 1565, 1593 + xy: 1167, 521 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 inverted-sorter rotate: false - xy: 1887, 1439 + xy: 991, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 junction rotate: false - xy: 1969, 1303 + xy: 443, 49 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 mass-conveyor rotate: false - xy: 393, 175 + xy: 491, 837 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 mass-conveyor-edge rotate: false - xy: 491, 273 + xy: 985, 833 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 mass-conveyor-top rotate: false - xy: 491, 175 + xy: 1083, 833 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 payload-router-top rotate: false - xy: 491, 175 + xy: 1083, 833 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 mass-driver-base rotate: false - xy: 295, 77 + xy: 99, 759 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 overflow-gate rotate: false - xy: 1253, 1123 + xy: 1011, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 payload-router rotate: false - xy: 879, 1625 + xy: 1475, 751 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 payload-router-edge rotate: false - xy: 929, 1429 + xy: 1573, 751 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 payload-router-over rotate: false - xy: 961, 1527 + xy: 1671, 751 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 phase-conveyor rotate: false - xy: 1255, 953 + xy: 1181, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conveyor-arrow rotate: false - xy: 927, 965 + xy: 1215, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conveyor-bridge rotate: false - xy: 927, 931 + xy: 1249, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conveyor-end rotate: false - xy: 927, 897 + xy: 1283, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 router rotate: false - xy: 1267, 1195 + xy: 443, 15 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sorter rotate: false - xy: 1321, 1059 + xy: 273, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -underflow-gate +blast-drill rotate: false - xy: 1457, 1059 - size: 32, 32 - orig: 32, 32 + xy: 1311, 1615 + size: 128, 128 + orig: 128, 128 offset: 0, 0 index: -1 blast-drill-rim rotate: false - xy: 1, 1919 + xy: 1441, 1615 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 blast-drill-rotator rotate: false - xy: 1, 1789 + xy: 1571, 1615 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 blast-drill-top rotate: false - xy: 131, 1919 + xy: 1701, 1615 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 drill-top rotate: false - xy: 1763, 1573 + xy: 1365, 521 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 turbine-generator-liquid rotate: false - xy: 1763, 1573 + xy: 1365, 521 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 laser-drill rotate: false - xy: 295, 371 + xy: 1393, 849 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 laser-drill-rim rotate: false - xy: 393, 469 + xy: 1491, 849 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 laser-drill-rotator rotate: false - xy: 197, 175 + xy: 1589, 849 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 laser-drill-top rotate: false - xy: 295, 273 + xy: 1687, 849 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 mechanical-drill rotate: false - xy: 659, 937 + xy: 199, 463 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 mechanical-drill-rotator rotate: false - xy: 659, 871 + xy: 265, 463 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 mechanical-drill-top rotate: false - xy: 659, 805 + xy: 331, 463 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 oil-extractor rotate: false - xy: 635, 1431 + xy: 393, 759 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 oil-extractor-liquid rotate: false - xy: 733, 1429 + xy: 1181, 751 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 oil-extractor-rotator rotate: false - xy: 831, 1429 + xy: 1279, 751 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 oil-extractor-top rotate: false - xy: 863, 1527 + xy: 1377, 751 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 pneumatic-drill rotate: false - xy: 721, 1003 + xy: 1419, 455 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 pneumatic-drill-rotator rotate: false - xy: 725, 937 + xy: 1485, 455 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 pneumatic-drill-top rotate: false - xy: 725, 871 + xy: 1551, 455 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 water-extractor rotate: false - xy: 1301, 1549 + xy: 133, 331 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 water-extractor-liquid rotate: false - xy: 1367, 1549 + xy: 199, 331 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 water-extractor-rotator rotate: false - xy: 1433, 1549 + xy: 265, 331 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 water-extractor-top rotate: false - xy: 1499, 1549 + xy: 331, 331 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-border rotate: false - xy: 825, 955 + xy: 375, 147 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-middle rotate: false - xy: 825, 717 + xy: 1685, 130 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-select rotate: false - xy: 893, 853 + xy: 103, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-liquid rotate: false - xy: 845, 207 + xy: 1909, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 message rotate: false - xy: 1233, 1157 + xy: 977, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 place-arrow rotate: false - xy: 1027, 1429 + xy: 1769, 751 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 bridge-conduit rotate: false - xy: 845, 445 + xy: 973, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-conduit-arrow rotate: false - xy: 879, 479 + xy: 1007, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-conveyor-arrow rotate: false - xy: 879, 479 + xy: 1007, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-conduit-bridge rotate: false - xy: 845, 411 + xy: 1041, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-conduit-end rotate: false - xy: 879, 445 + xy: 1075, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom rotate: false - xy: 845, 275 + xy: 1313, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-0 rotate: false - xy: 879, 309 + xy: 1347, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-1 rotate: false - xy: 845, 241 + xy: 1381, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-2 rotate: false - xy: 879, 275 + xy: 1415, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-3 rotate: false - xy: 879, 275 + xy: 1415, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-4 rotate: false - xy: 879, 275 + xy: 1415, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-0 rotate: false - xy: 879, 241 + xy: 1943, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-1 rotate: false - xy: 845, 173 + xy: 1977, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-2 rotate: false - xy: 879, 207 + xy: 2011, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-3 rotate: false - xy: 845, 139 + xy: 477, 111 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-3 rotate: false - xy: 845, 139 + xy: 477, 111 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-4 rotate: false - xy: 879, 173 + xy: 569, 105 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-junction rotate: false - xy: 1901, 1269 + xy: 511, 46 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-overflow-gate rotate: false - xy: 1829, 1235 + xy: 35, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-overflow-gate-top rotate: false - xy: 1863, 1235 + xy: 69, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-router-bottom rotate: false - xy: 1897, 1235 + xy: 103, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-router-liquid rotate: false - xy: 1931, 1235 + xy: 137, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-router-top rotate: false - xy: 1965, 1235 + xy: 171, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-tank-bottom rotate: false - xy: 295, 175 + xy: 687, 845 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 liquid-tank-liquid rotate: false - xy: 393, 273 + xy: 887, 845 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 liquid-tank-top rotate: false - xy: 491, 371 + xy: 1, 840 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 mechanical-pump rotate: false - xy: 1593, 1263 + xy: 409, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 mechanical-pump-liquid rotate: false - xy: 1627, 1263 + xy: 613, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 rotary-pump-liquid rotate: false - xy: 1627, 1263 + xy: 613, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 thermal-pump-liquid rotate: false - xy: 1627, 1263 + xy: 613, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conduit rotate: false - xy: 1253, 1089 + xy: 1045, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conduit-arrow rotate: false - xy: 1253, 1055 + xy: 1079, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conduit-bridge rotate: false - xy: 1253, 1021 + xy: 1113, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conduit-end rotate: false - xy: 1255, 987 + xy: 1147, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plated-conduit-cap rotate: false - xy: 927, 591 + xy: 545, 37 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plated-conduit-top-0 rotate: false - xy: 927, 557 + xy: 579, 37 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plated-conduit-top-1 rotate: false - xy: 947, 523 + xy: 1687, 36 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plated-conduit-top-2 rotate: false - xy: 947, 489 + xy: 1419, 35 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plated-conduit-top-3 rotate: false - xy: 947, 455 + xy: 1603, 28 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plated-conduit-top-4 rotate: false - xy: 947, 421 + xy: 1637, 28 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-0 rotate: false - xy: 947, 285 + xy: 1805, 19 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-1 rotate: false - xy: 947, 251 + xy: 1839, 19 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-2 rotate: false - xy: 947, 217 + xy: 647, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-4 rotate: false - xy: 947, 183 + xy: 773, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 rotary-pump rotate: false - xy: 725, 541 + xy: 927, 399 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 thermal-pump rotate: false - xy: 1107, 1755 + xy: 393, 661 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 battery rotate: false - xy: 791, 955 + xy: 239, 147 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 battery-large rotate: false - xy: 1, 90 + xy: 1693, 1143 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 battery-large-top rotate: false - xy: 1143, 1951 + xy: 1791, 1143 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 battery-top rotate: false - xy: 825, 989 + xy: 273, 147 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 combustion-generator rotate: false - xy: 845, 309 + xy: 1245, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 combustion-generator-top rotate: false - xy: 879, 343 + xy: 1279, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 differential-generator rotate: false - xy: 429, 861 + xy: 1765, 947 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 differential-generator-liquid rotate: false - xy: 495, 763 + xy: 1863, 947 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 differential-generator-top rotate: false - xy: 495, 665 + xy: 691, 943 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 diode rotate: false - xy: 919, 3 + xy: 273, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 diode-arrow rotate: false - xy: 1785, 1447 + xy: 307, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 illuminator rotate: false - xy: 1955, 1473 + xy: 889, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 illuminator-top rotate: false - xy: 1989, 1473 + xy: 923, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 impact-reactor rotate: false - xy: 521, 1659 + xy: 911, 1371 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 impact-reactor-bottom rotate: false - xy: 651, 1789 + xy: 1041, 1371 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 impact-reactor-light rotate: false - xy: 781, 1919 + xy: 521, 1359 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 impact-reactor-plasma-0 rotate: false - xy: 1, 1009 + xy: 651, 1359 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 impact-reactor-plasma-1 rotate: false - xy: 131, 1139 + xy: 1171, 1355 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 impact-reactor-plasma-2 rotate: false - xy: 261, 1269 + xy: 1301, 1355 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 impact-reactor-plasma-3 rotate: false - xy: 391, 1399 + xy: 1431, 1355 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 power-node rotate: false - xy: 947, 387 + xy: 739, 20 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 power-node-large rotate: false - xy: 725, 805 + xy: 1893, 421 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 power-source rotate: false - xy: 947, 353 + xy: 1453, 19 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 power-void rotate: false - xy: 947, 319 + xy: 1771, 19 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 rtg-generator rotate: false - xy: 721, 475 + xy: 993, 399 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 rtg-generator-top rotate: false - xy: 1267, 1161 + xy: 807, 13 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 solar-panel rotate: false - xy: 1321, 1093 + xy: 239, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 solar-panel-large rotate: false - xy: 1009, 1739 + xy: 295, 661 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 surge-tower rotate: false - xy: 1153, 1199 + xy: 1471, 389 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 thermal-generator rotate: false - xy: 223, 11 + xy: 1947, 355 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 thorium-reactor rotate: false - xy: 1205, 1755 + xy: 1177, 653 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 thorium-reactor-lights rotate: false - xy: 1303, 1755 + xy: 1275, 653 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 thorium-reactor-top rotate: false - xy: 1401, 1755 + xy: 1373, 653 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 turbine-generator rotate: false - xy: 421, 11 + xy: 743, 333 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 turbine-generator-cap rotate: false - xy: 487, 11 + xy: 875, 333 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 turbine-generator-top rotate: false - xy: 553, 11 + xy: 941, 333 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 turbine-generator-turbine0 rotate: false - xy: 619, 13 + xy: 595, 332 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 turbine-generator-turbine1 rotate: false - xy: 685, 13 + xy: 809, 332 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 alloy-smelter rotate: false - xy: 1, 286 + xy: 1497, 1143 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 alloy-smelter-top rotate: false - xy: 1, 188 + xy: 1595, 1143 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 blast-mixer rotate: false - xy: 1301, 1615 + xy: 1981, 897 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-forge rotate: false - xy: 1731, 1951 + xy: 883, 1061 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 coal-centrifuge rotate: false - xy: 555, 1069 + xy: 479, 533 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cryofluidmixer-bottom rotate: false - xy: 589, 409 + xy: 729, 529 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cryofluidmixer-liquid rotate: false - xy: 589, 343 + xy: 1, 528 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cryofluidmixer-top rotate: false - xy: 589, 277 + xy: 545, 527 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cultivator rotate: false - xy: 589, 211 + xy: 1629, 526 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cultivator-middle rotate: false - xy: 589, 145 + xy: 1695, 526 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cultivator-top rotate: false - xy: 589, 79 + xy: 1761, 526 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 disassembler rotate: false - xy: 103, 585 + xy: 903, 943 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 disassembler-liquid rotate: false - xy: 99, 487 + xy: 1, 938 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 disassembler-spinner rotate: false - xy: 99, 389 + xy: 491, 935 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 graphite-press rotate: false - xy: 1961, 1557 + xy: 1497, 521 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 incinerator rotate: false - xy: 1853, 1439 + xy: 957, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-source rotate: false - xy: 1973, 1371 + xy: 1467, 53 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-void rotate: false - xy: 1935, 1303 + xy: 1737, 50 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 kiln rotate: false - xy: 559, 1201 + xy: 1563, 521 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 kiln-top rotate: false - xy: 559, 1135 + xy: 1893, 487 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 silicon-smelter-top rotate: false - xy: 559, 1135 + xy: 1893, 487 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 liquid-source rotate: false - xy: 2007, 1337 + xy: 273, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-void rotate: false - xy: 2003, 1303 + xy: 307, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 melter rotate: false - xy: 953, 37 + xy: 875, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 multi-press rotate: false - xy: 393, 77 + xy: 197, 759 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 phase-weaver rotate: false - xy: 655, 343 + xy: 1761, 460 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 phase-weaver-bottom rotate: false - xy: 655, 277 + xy: 1827, 460 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 phase-weaver-weave rotate: false - xy: 655, 211 + xy: 1155, 455 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 plastanium-compressor rotate: false - xy: 655, 145 + xy: 1221, 455 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 plastanium-compressor-top rotate: false - xy: 655, 79 + xy: 1287, 455 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 pulverizer rotate: false - xy: 947, 149 + xy: 1487, 16 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulverizer-rotator rotate: false - xy: 957, 115 + xy: 1521, 16 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pyratite-mixer rotate: false - xy: 725, 739 + xy: 1075, 405 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 separator rotate: false - xy: 967, 1265 + xy: 529, 395 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 separator-liquid rotate: false - xy: 1033, 1265 + xy: 1617, 394 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 separator-spinner rotate: false - xy: 691, 1199 + xy: 1683, 394 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 silicon-crucible rotate: false - xy: 1027, 1331 + xy: 99, 661 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 silicon-crucible-top rotate: false - xy: 977, 1641 + xy: 197, 661 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 silicon-smelter rotate: false - xy: 757, 1199 + xy: 1749, 394 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 spore-press rotate: false - xy: 823, 1199 + xy: 1815, 394 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 spore-press-frame0 rotate: false - xy: 889, 1199 + xy: 1141, 389 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 spore-press-frame1 rotate: false - xy: 955, 1199 + xy: 1207, 389 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 spore-press-frame2 rotate: false - xy: 1021, 1199 + xy: 1273, 389 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 spore-press-liquid rotate: false - xy: 1099, 1265 + xy: 1339, 389 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 spore-press-top rotate: false - xy: 1087, 1199 + xy: 1405, 389 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 rock1 rotate: false - xy: 1425, 1349 + xy: 101, 181 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 rock2 rotate: false - xy: 1475, 1349 + xy: 151, 181 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 sand-boulder1 rotate: false - xy: 1287, 1127 + xy: 841, 13 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sand-boulder2 rotate: false - xy: 1287, 1093 + xy: 511, 12 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shale-boulder1 rotate: false - xy: 1301, 1195 + xy: 137, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shale-boulder2 rotate: false - xy: 1301, 1161 + xy: 171, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 snowrock1 rotate: false - xy: 1153, 1049 + xy: 351, 181 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 snowrock2 rotate: false - xy: 1203, 1049 + xy: 401, 181 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 spore-cluster1 rotate: false - xy: 1651, 1297 + xy: 1941, 147 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 spore-cluster2 rotate: false - xy: 1693, 1423 + xy: 1983, 147 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 spore-cluster3 rotate: false - xy: 1693, 1381 + xy: 493, 145 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 container rotate: false - xy: 527, 937 + xy: 957, 531 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 core-foundation rotate: false - xy: 391, 1789 + xy: 651, 1489 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 core-foundation-team rotate: false - xy: 521, 1919 + xy: 1181, 1485 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 +core-nucleus-team + rotate: false + xy: 1, 1887 + size: 160, 160 + orig: 160, 160 + offset: 0, 0 + index: -1 core-shard rotate: false - xy: 1727, 1853 + xy: 1, 1036 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 core-shard-team rotate: false - xy: 1825, 1853 + xy: 495, 1033 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 -unloader - rotate: false - xy: 1457, 1025 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -unloader-center - rotate: false - xy: 1459, 991 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 vault rotate: false - xy: 1499, 1755 + xy: 1569, 653 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 arc-heat rotate: false - xy: 1735, 1394 + xy: 785, 190 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-1 rotate: false - xy: 791, 921 + xy: 307, 147 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-2 rotate: false - xy: 1367, 1615 + xy: 1101, 603 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-3 rotate: false - xy: 1241, 1951 + xy: 1889, 1143 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-4 rotate: false - xy: 1, 1659 + xy: 1831, 1615 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 hail-heat rotate: false - xy: 457, 961 + xy: 831, 290 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 lancer-heat rotate: false - xy: 637, 1267 + xy: 1089, 471 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 meltdown-heat rotate: false - xy: 781, 1789 + xy: 1821, 1355 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 ripple-heat rotate: false - xy: 733, 1331 + xy: 687, 747 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 salvo-heat rotate: false - xy: 721, 343 + xy: 809, 398 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 salvo-panel-left rotate: false - xy: 721, 277 + xy: 67, 397 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 salvo-panel-right rotate: false - xy: 721, 211 + xy: 133, 397 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 scorch-heat rotate: false - xy: 1287, 1025 + xy: 1, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 wave-liquid rotate: false - xy: 1631, 1507 + xy: 661, 331 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 additive-reconstructor rotate: false - xy: 1, 580 + xy: 1951, 1387 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 additive-reconstructor-top rotate: false - xy: 1, 482 + xy: 1301, 1143 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 air-factory rotate: false - xy: 1, 384 + xy: 1399, 1143 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 command-center rotate: false - xy: 589, 1003 + xy: 811, 531 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 factory-in-3 rotate: false - xy: 99, 97 + xy: 1001, 931 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 +factory-in-5 + rotate: false + xy: 1, 1725 + size: 160, 160 + orig: 160, 160 + offset: 0, 0 + index: -1 factory-out-3 rotate: false - xy: 201, 567 + xy: 1099, 931 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 +factory-out-5 + rotate: false + xy: 163, 1725 + size: 160, 160 + orig: 160, 160 + offset: 0, 0 + index: -1 factory-top-3 rotate: false - xy: 299, 567 + xy: 789, 865 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 ground-factory rotate: false - xy: 197, 371 + xy: 393, 857 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 +multiplicative-reconstructor + rotate: false + xy: 325, 1725 + size: 160, 160 + orig: 160, 160 + offset: 0, 0 + index: -1 +multiplicative-reconstructor-top + rotate: false + xy: 487, 1725 + size: 160, 160 + orig: 160, 160 + offset: 0, 0 + index: -1 naval-factory rotate: false - xy: 491, 77 + xy: 295, 759 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 rally-point rotate: false - xy: 725, 673 + xy: 463, 401 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 repair-point-base rotate: false - xy: 1261, 1229 + xy: 1721, 16 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 resupply-point rotate: false - xy: 725, 607 + xy: 743, 399 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 copper-wall rotate: false - xy: 889, 105 + xy: 511, 80 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 copper-wall-large rotate: false - xy: 527, 871 + xy: 1023, 531 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 door rotate: false - xy: 1819, 1447 + xy: 341, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 door-large rotate: false - xy: 1631, 1573 + xy: 1233, 521 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 door-large-open rotate: false - xy: 1697, 1573 + xy: 1299, 521 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 door-open rotate: false - xy: 1853, 1473 + xy: 375, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-wall rotate: false - xy: 927, 863 + xy: 1317, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-wall-large rotate: false - xy: 655, 409 + xy: 1695, 460 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 plastanium-wall rotate: false - xy: 927, 625 + xy: 477, 43 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plastanium-wall-large rotate: false - xy: 687, 1069 + xy: 1353, 455 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 scrap-wall-gigantic rotate: false - xy: 911, 1919 + xy: 911, 1241 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 scrap-wall-huge2 rotate: false - xy: 831, 1331 + xy: 1079, 735 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 scrap-wall-huge3 rotate: false - xy: 929, 1331 + xy: 785, 669 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 scrap-wall-large1 rotate: false - xy: 721, 79 + xy: 265, 397 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 scrap-wall-large2 rotate: false - xy: 703, 1265 + xy: 331, 397 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 scrap-wall-large3 rotate: false - xy: 769, 1265 + xy: 397, 397 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 scrap-wall-large4 rotate: false - xy: 835, 1265 + xy: 677, 397 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 scrap-wall2 rotate: false - xy: 1289, 991 + xy: 35, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap-wall3 rotate: false - xy: 1289, 957 + xy: 69, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap-wall4 rotate: false - xy: 1295, 1229 + xy: 103, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap-wall5 rotate: false - xy: 1295, 1229 + xy: 103, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 surge-wall rotate: false - xy: 1363, 1229 + xy: 1147, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 surge-wall-large rotate: false - xy: 91, 24 + xy: 1537, 389 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 thorium-wall rotate: false - xy: 1369, 1195 + xy: 1181, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 thorium-wall-large rotate: false - xy: 289, 11 + xy: 1059, 339 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 thruster rotate: false - xy: 131, 1009 + xy: 521, 1229 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 -titanium-wall - rotate: false - xy: 1457, 1127 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 titanium-wall-large rotate: false - xy: 355, 11 + xy: 463, 335 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 bullet rotate: false - xy: 925, 1145 + xy: 727, 279 size: 52, 52 orig: 52, 52 offset: 0, 0 index: -1 bullet-back rotate: false - xy: 979, 1145 + xy: 875, 279 size: 52, 52 orig: 52, 52 offset: 0, 0 index: -1 -casing - rotate: false - xy: 517, 959 - size: 8, 16 - orig: 8, 16 - offset: 0, 0 - index: -1 circle-end rotate: false - xy: 1, 678 + xy: 1, 1134 size: 100, 199 orig: 100, 199 offset: 0, 0 index: -1 -circle-mid - rotate: false - xy: 961, 798 - size: 1, 199 - orig: 1, 199 - offset: 0, 0 - index: -1 error rotate: false - xy: 953, 1095 + xy: 1937, 247 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -laser - rotate: false - xy: 905, 1739 - size: 4, 48 - orig: 4, 48 - offset: 0, 0 - index: -1 laser-end rotate: false - xy: 1305, 1681 + xy: 491, 599 size: 72, 72 orig: 72, 72 offset: 0, 0 index: -1 -minelaser - rotate: false - xy: 2043, 1999 - size: 4, 48 - orig: 4, 48 - offset: 0, 0 - index: -1 minelaser-end rotate: false - xy: 1379, 1681 + xy: 663, 596 size: 72, 72 orig: 72, 72 offset: 0, 0 index: -1 missile rotate: false - xy: 2007, 1691 + xy: 1629, 615 size: 36, 36 orig: 36, 36 offset: 0, 0 index: -1 missile-back rotate: false - xy: 1693, 1343 + xy: 1837, 356 size: 36, 36 orig: 36, 36 offset: 0, 0 index: -1 +parallax-laser-end + rotate: false + xy: 883, 596 + size: 72, 72 + orig: 72, 72 + offset: 0, 0 + index: -1 particle rotate: false - xy: 1609, 1297 + xy: 1423, 147 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -scale_marker - rotate: false - xy: 1625, 1521 - size: 4, 4 - orig: 4, 4 - offset: 0, 0 - index: -1 shell rotate: false - xy: 1693, 1305 + xy: 2011, 317 size: 36, 36 orig: 36, 36 offset: 0, 0 index: -1 shell-back rotate: false - xy: 1735, 1428 + xy: 687, 293 size: 36, 36 orig: 36, 36 offset: 0, 0 index: -1 -transfer +alpha-wreck0 rotate: false - xy: 2043, 1949 - size: 4, 48 - orig: 4, 48 + xy: 875, 414 + size: 48, 48 + orig: 48, 48 offset: 0, 0 index: -1 -transfer-arrow +alpha-wreck1 rotate: false - xy: 1457, 1093 - size: 32, 32 - orig: 32, 32 + xy: 1007, 349 + size: 48, 48 + orig: 48, 48 offset: 0, 0 index: -1 -white +alpha-wreck2 rotate: false - xy: 1, 1 - size: 3, 3 - orig: 3, 3 + xy: 929, 283 + size: 48, 48 + orig: 48, 48 offset: 0, 0 index: -1 arc rotate: false - xy: 787, 79 + xy: 2013, 387 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +arkyid-wreck0 + rotate: false + xy: 921, 1631 + size: 128, 128 + orig: 128, 128 + offset: 0, 0 + index: -1 +arkyid-wreck1 + rotate: false + xy: 1051, 1631 + size: 128, 128 + orig: 128, 128 + offset: 0, 0 + index: -1 +arkyid-wreck2 + rotate: false + xy: 1181, 1615 + size: 128, 128 + orig: 128, 128 + offset: 0, 0 + index: -1 +atrax-wreck0 + rotate: false + xy: 491, 673 + size: 88, 64 + orig: 88, 64 + offset: 0, 0 + index: -1 +atrax-wreck1 + rotate: false + xy: 979, 669 + size: 88, 64 + orig: 88, 64 + offset: 0, 0 + index: -1 +atrax-wreck2 + rotate: false + xy: 1069, 669 + size: 88, 64 + orig: 88, 64 + offset: 0, 0 + index: -1 +beta-wreck0 + rotate: false + xy: 101, 281 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +beta-wreck1 + rotate: false + xy: 151, 281 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +beta-wreck2 + rotate: false + xy: 201, 281 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 block-additive-reconstructor-full rotate: false - xy: 1339, 1951 + xy: 511, 1131 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-air-factory-full rotate: false - xy: 1437, 1951 + xy: 609, 1131 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-arc-full rotate: false - xy: 859, 989 + xy: 341, 147 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-blast-drill-full rotate: false - xy: 131, 1789 + xy: 1, 1595 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 block-char-full rotate: false - xy: 791, 887 + xy: 409, 147 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-cliffs-full rotate: false - xy: 859, 955 + xy: 651, 147 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-conduit-full rotate: false - xy: 825, 921 + xy: 921, 147 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-conveyor-full rotate: false - xy: 791, 853 + xy: 955, 147 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-0-0 rotate: false - xy: 791, 853 + xy: 955, 147 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-core-foundation-full rotate: false - xy: 261, 1919 + xy: 131, 1595 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 block-core-shard-full rotate: false - xy: 1535, 1951 + xy: 1087, 1127 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-craters-full rotate: false - xy: 859, 921 + xy: 989, 147 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-cryofluidmixer-full rotate: false - xy: 1433, 1615 + xy: 83, 595 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-cultivator-full rotate: false - xy: 1595, 1659 + xy: 149, 595 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-cyclone-full rotate: false - xy: 1633, 1951 + xy: 1185, 1127 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-dark-metal-full rotate: false - xy: 825, 887 + xy: 1023, 147 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-darksand-full rotate: false - xy: 791, 819 + xy: 1057, 147 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dunerocks-full rotate: false - xy: 859, 887 + xy: 1091, 147 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-duo-full rotate: false - xy: 825, 853 + xy: 1125, 147 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-fuse-full rotate: false - xy: 1829, 1951 + xy: 103, 1053 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-grass-full rotate: false - xy: 791, 785 + xy: 1159, 147 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ground-factory-full rotate: false - xy: 1927, 1951 + xy: 201, 1053 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-hail-full rotate: false - xy: 859, 853 + xy: 1193, 147 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-holostone-full rotate: false - xy: 825, 819 + xy: 1227, 147 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-hotrock-full rotate: false - xy: 791, 751 + xy: 1261, 147 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ice-full rotate: false - xy: 859, 819 + xy: 1295, 147 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ice-snow-full rotate: false - xy: 825, 785 + xy: 1329, 147 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-icerocks-full rotate: false - xy: 791, 717 + xy: 569, 139 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ignarock-full rotate: false - xy: 859, 785 + xy: 603, 139 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-impact-reactor-full rotate: false - xy: 1, 1529 + xy: 261, 1595 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 block-lancer-full rotate: false - xy: 1661, 1639 + xy: 215, 595 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-laser-drill-full rotate: false - xy: 781, 1625 + xy: 299, 1053 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-liquid-router-full rotate: false - xy: 825, 751 + xy: 1739, 138 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-liquid-tank-full rotate: false - xy: 765, 1527 + xy: 397, 1053 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-magmarock-full rotate: false - xy: 791, 683 + xy: 1465, 137 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-mass-conveyor-full rotate: false - xy: 261, 959 + xy: 1381, 1045 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 mass-conveyor-icon rotate: false - xy: 261, 959 + xy: 1381, 1045 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-mass-driver-full rotate: false - xy: 1041, 1869 + xy: 1479, 1045 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-mechanical-drill-full rotate: false - xy: 1727, 1639 + xy: 281, 595 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-meltdown-full rotate: false - xy: 131, 1659 + xy: 391, 1595 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 block-metal-floor-damaged-full rotate: false - xy: 859, 751 + xy: 1651, 130 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-moss-full rotate: false - xy: 791, 649 + xy: 769, 122 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-naval-factory-full rotate: false - xy: 1139, 1853 + xy: 1577, 1045 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-oil-extractor-full rotate: false - xy: 1237, 1853 + xy: 1675, 1045 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-ore-coal-full rotate: false - xy: 859, 717 + xy: 1499, 121 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-copper-full rotate: false - xy: 825, 683 + xy: 1807, 121 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-lead-full rotate: false - xy: 791, 615 + xy: 1841, 121 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-scrap-full rotate: false - xy: 859, 683 + xy: 1875, 121 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-thorium-full rotate: false - xy: 825, 649 + xy: 685, 119 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-titanium-full rotate: false - xy: 791, 581 + xy: 803, 119 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +block-parallax-full + rotate: false + xy: 347, 595 + size: 64, 64 + orig: 64, 64 + offset: 0, 0 + index: -1 block-payload-router-full rotate: false - xy: 1335, 1853 + xy: 1773, 1045 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 payload-router-icon rotate: false - xy: 1335, 1853 + xy: 1773, 1045 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-pebbles-full rotate: false - xy: 859, 649 + xy: 1533, 118 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-phase-weaver-full rotate: false - xy: 1793, 1639 + xy: 413, 595 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-plated-conduit-full rotate: false - xy: 825, 615 + xy: 1567, 118 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-pneumatic-drill-full rotate: false - xy: 1859, 1639 + xy: 1167, 587 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-pulse-conduit-full rotate: false - xy: 791, 547 + xy: 1601, 118 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-pulverizer-full rotate: false - xy: 859, 615 + xy: 1773, 118 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-repair-point-full rotate: false - xy: 825, 581 + xy: 443, 117 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ripple-full rotate: false - xy: 1433, 1853 + xy: 1871, 1045 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-rock-full rotate: false - xy: 1133, 1149 + xy: 251, 281 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-rocks-full rotate: false - xy: 859, 581 + xy: 837, 115 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-saltrocks-full rotate: false - xy: 825, 547 + xy: 871, 115 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-salvo-full rotate: false - xy: 1925, 1623 + xy: 1233, 587 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-sand-boulder-full rotate: false - xy: 859, 547 + xy: 535, 114 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-sand-full rotate: false - xy: 893, 989 + xy: 719, 114 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-sandrocks-full rotate: false - xy: 893, 955 + xy: 1, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-scatter-full rotate: false - xy: 1499, 1615 + xy: 1299, 587 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-scorch-full rotate: false - xy: 893, 921 + xy: 35, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-scrap-wall-full rotate: false - xy: 893, 887 + xy: 69, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap-wall1 rotate: false - xy: 893, 887 + xy: 69, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-scrap-wall-huge-full rotate: false - xy: 1531, 1853 + xy: 707, 1041 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 scrap-wall-huge1 rotate: false - xy: 1531, 1853 + xy: 707, 1041 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-scrap-wall-large-full rotate: false - xy: 505, 1333 + xy: 1365, 587 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-segment-full rotate: false - xy: 505, 1267 + xy: 1431, 587 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-shale-boulder-full rotate: false - xy: 893, 819 + xy: 137, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-shale-full rotate: false - xy: 893, 785 + xy: 171, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-shalerocks-full rotate: false - xy: 893, 751 + xy: 205, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-shrubs-full rotate: false - xy: 893, 717 + xy: 239, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-snow-full rotate: false - xy: 893, 683 + xy: 273, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-snowrock-full rotate: false - xy: 803, 1091 + xy: 301, 281 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-snowrocks-full rotate: false - xy: 893, 649 + xy: 307, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-spectre-full rotate: false - xy: 261, 1789 + xy: 791, 1501 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 block-spore-cluster-full rotate: false - xy: 1259, 1567 + xy: 1913, 632 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-spore-moss-full rotate: false - xy: 893, 615 + xy: 341, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-spore-press-full rotate: false - xy: 493, 1201 + xy: 1497, 587 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-sporerocks-full rotate: false - xy: 893, 581 + xy: 375, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-stone-full rotate: false - xy: 893, 547 + xy: 409, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-swarmer-full rotate: false - xy: 493, 1135 + xy: 1563, 587 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-tendrils-full rotate: false - xy: 845, 513 + xy: 637, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-titanium-conveyor-full rotate: false - xy: 845, 479 + xy: 905, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-0-0 rotate: false - xy: 845, 479 + xy: 905, 113 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-turbine-generator-full rotate: false - xy: 489, 1069 + xy: 1913, 553 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-water-extractor-full rotate: false - xy: 457, 1003 + xy: 1979, 553 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-wave-full rotate: false - xy: 523, 1003 + xy: 1101, 537 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 +bryde-wreck0 + rotate: false + xy: 1549, 1745 + size: 140, 140 + orig: 140, 140 + offset: 0, 0 + index: -1 +bryde-wreck1 + rotate: false + xy: 1691, 1745 + size: 140, 140 + orig: 140, 140 + offset: 0, 0 + index: -1 +bryde-wreck2 + rotate: false + xy: 1833, 1745 + size: 140, 140 + orig: 140, 140 + offset: 0, 0 + index: -1 core-foundation-team-crux rotate: false - xy: 1, 1269 + xy: 1311, 1485 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 core-foundation-team-sharded rotate: false - xy: 131, 1399 + xy: 1441, 1485 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 +core-nucleus-team-crux + rotate: false + xy: 163, 1887 + size: 160, 160 + orig: 160, 160 + offset: 0, 0 + index: -1 +core-nucleus-team-sharded + rotate: false + xy: 325, 1887 + size: 160, 160 + orig: 160, 160 + offset: 0, 0 + index: -1 core-shard-team-crux rotate: false - xy: 1923, 1853 + xy: 593, 1033 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 core-shard-team-sharded rotate: false - xy: 391, 1085 + xy: 1079, 1029 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 cracks-1-0 rotate: false - xy: 855, 71 + xy: 705, 80 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-1 rotate: false - xy: 889, 71 + xy: 1, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-2 rotate: false - xy: 851, 37 + xy: 35, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-3 rotate: false - xy: 885, 37 + xy: 69, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-4 rotate: false - xy: 851, 3 + xy: 103, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-5 rotate: false - xy: 885, 3 + xy: 137, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-6 rotate: false - xy: 923, 105 + xy: 171, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-7 rotate: false - xy: 923, 71 + xy: 205, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-2-0 rotate: false - xy: 593, 937 + xy: 663, 530 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cracks-2-1 rotate: false - xy: 593, 871 + xy: 877, 530 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cracks-2-2 rotate: false - xy: 593, 805 + xy: 83, 529 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cracks-2-3 rotate: false - xy: 593, 739 + xy: 149, 529 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cracks-2-4 rotate: false - xy: 593, 673 + xy: 215, 529 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cracks-2-5 rotate: false - xy: 593, 607 + xy: 281, 529 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cracks-2-6 rotate: false - xy: 593, 541 + xy: 347, 529 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cracks-2-7 rotate: false - xy: 589, 475 + xy: 413, 529 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cracks-3-0 rotate: false - xy: 103, 781 + xy: 1177, 1029 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 cracks-3-1 rotate: false - xy: 103, 683 + xy: 805, 963 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 cracks-3-2 rotate: false - xy: 233, 861 + xy: 99, 955 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 cracks-3-3 rotate: false - xy: 201, 763 + xy: 197, 955 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 cracks-3-4 rotate: false - xy: 201, 665 + xy: 295, 955 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 cracks-3-5 rotate: false - xy: 299, 763 + xy: 393, 955 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 cracks-3-6 rotate: false - xy: 299, 665 + xy: 1275, 947 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 cracks-3-7 rotate: false - xy: 331, 861 + xy: 1373, 947 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 cracks-4-0 rotate: false - xy: 261, 1529 + xy: 1571, 1485 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 cracks-4-1 rotate: false - xy: 391, 1659 + xy: 1701, 1485 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 cracks-4-2 rotate: false - xy: 521, 1789 + xy: 1831, 1485 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 cracks-4-3 rotate: false - xy: 651, 1919 + xy: 1, 1465 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 cracks-4-4 rotate: false - xy: 1, 1139 + xy: 131, 1465 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 cracks-4-5 rotate: false - xy: 131, 1269 + xy: 261, 1465 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 cracks-4-6 rotate: false - xy: 261, 1399 + xy: 391, 1465 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 cracks-4-7 rotate: false - xy: 391, 1529 + xy: 781, 1371 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 +cracks-5-0 + rotate: false + xy: 649, 1887 + size: 160, 160 + orig: 160, 160 + offset: 0, 0 + index: -1 +cracks-5-1 + rotate: false + xy: 811, 1887 + size: 160, 160 + orig: 160, 160 + offset: 0, 0 + index: -1 +cracks-5-2 + rotate: false + xy: 973, 1887 + size: 160, 160 + orig: 160, 160 + offset: 0, 0 + index: -1 +cracks-5-3 + rotate: false + xy: 1135, 1887 + size: 160, 160 + orig: 160, 160 + offset: 0, 0 + index: -1 +cracks-5-4 + rotate: false + xy: 1297, 1887 + size: 160, 160 + orig: 160, 160 + offset: 0, 0 + index: -1 +cracks-5-5 + rotate: false + xy: 1459, 1887 + size: 160, 160 + orig: 160, 160 + offset: 0, 0 + index: -1 +cracks-5-6 + rotate: false + xy: 1621, 1887 + size: 160, 160 + orig: 160, 160 + offset: 0, 0 + index: -1 +cracks-5-7 + rotate: false + xy: 1783, 1887 + size: 160, 160 + orig: 160, 160 + offset: 0, 0 + index: -1 +crawler-wreck0 + rotate: false + xy: 1173, 281 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +crawler-wreck1 + rotate: false + xy: 1223, 281 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +crawler-wreck2 + rotate: false + xy: 1273, 281 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 cyclone rotate: false - xy: 359, 959 + xy: 1471, 947 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 +dagger-wreck0 + rotate: false + xy: 1473, 281 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +dagger-wreck1 + rotate: false + xy: 1523, 281 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +dagger-wreck2 + rotate: false + xy: 1837, 247 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 duo rotate: false - xy: 1887, 1473 + xy: 409, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +flare-wreck0 + rotate: false + xy: 571, 232 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +flare-wreck1 + rotate: false + xy: 1, 231 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +flare-wreck2 + rotate: false + xy: 51, 231 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +fortress-wreck0 + rotate: false + xy: 205, 1253 + size: 100, 80 + orig: 100, 80 + offset: 0, 0 + index: -1 +fortress-wreck1 + rotate: false + xy: 307, 1253 + size: 100, 80 + orig: 100, 80 + offset: 0, 0 + index: -1 +fortress-wreck2 + rotate: false + xy: 409, 1253 + size: 100, 80 + orig: 100, 80 + offset: 0, 0 + index: -1 fuse rotate: false - xy: 197, 469 + xy: 295, 857 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 +gamma-wreck0 + rotate: false + xy: 1183, 331 + size: 56, 56 + orig: 56, 56 + offset: 0, 0 + index: -1 +gamma-wreck1 + rotate: false + xy: 1241, 331 + size: 56, 56 + orig: 56, 56 + offset: 0, 0 + index: -1 +gamma-wreck2 + rotate: false + xy: 1299, 331 + size: 56, 56 + orig: 56, 56 + offset: 0, 0 + index: -1 hail rotate: false - xy: 1921, 1473 + xy: 637, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +horizon-wreck0 + rotate: false + xy: 1969, 1069 + size: 72, 72 + orig: 72, 72 + offset: 0, 0 + index: -1 +horizon-wreck1 + rotate: false + xy: 805, 1065 + size: 72, 72 + orig: 72, 72 + offset: 0, 0 + index: -1 +horizon-wreck2 + rotate: false + xy: 1197, 955 + size: 72, 72 + orig: 72, 72 + offset: 0, 0 + index: -1 item-blast-compound-large rotate: false - xy: 1525, 1435 + xy: 1529, 239 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-blast-compound-medium rotate: false - xy: 1955, 1439 + xy: 1059, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -item-blast-compound-small - rotate: false - xy: 207, 881 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-blast-compound-tiny - rotate: false - xy: 1141, 1591 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 item-blast-compound-xlarge rotate: false - xy: 1125, 1491 + xy: 251, 231 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 item-coal-large rotate: false - xy: 1525, 1393 + xy: 881, 237 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-coal-medium rotate: false - xy: 1773, 1413 + xy: 1127, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -item-coal-small - rotate: false - xy: 1249, 1283 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-coal-tiny - rotate: false - xy: 1661, 1707 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 item-coal-xlarge rotate: false - xy: 1125, 1441 + xy: 301, 231 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 item-copper-large rotate: false - xy: 1567, 1435 + xy: 1529, 197 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-copper-medium rotate: false - xy: 1769, 1379 + xy: 1195, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -item-copper-small - rotate: false - xy: 2023, 1481 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-copper-tiny - rotate: false - xy: 499, 959 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 item-copper-xlarge rotate: false - xy: 1125, 1391 + xy: 351, 231 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 item-graphite-large rotate: false - xy: 1525, 1351 + xy: 1381, 189 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-graphite-medium rotate: false - xy: 1769, 1345 + xy: 1263, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -item-graphite-small - rotate: false - xy: 2023, 1455 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-graphite-tiny - rotate: false - xy: 1275, 1549 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 item-graphite-xlarge rotate: false - xy: 1125, 1341 + xy: 401, 231 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 item-lead-large rotate: false - xy: 1567, 1393 + xy: 1423, 189 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-lead-medium rotate: false - xy: 1765, 1311 + xy: 1331, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -item-lead-small - rotate: false - xy: 363, 1113 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-lead-tiny - rotate: false - xy: 201, 861 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 item-lead-xlarge rotate: false - xy: 1175, 1509 + xy: 621, 231 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 item-metaglass-large rotate: false - xy: 1525, 1309 + xy: 701, 187 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-metaglass-medium rotate: false - xy: 1765, 1277 + xy: 1399, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -item-metaglass-small - rotate: false - xy: 1013, 1893 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-metaglass-tiny - rotate: false - xy: 733, 1527 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 item-metaglass-xlarge rotate: false - xy: 1175, 1459 + xy: 671, 231 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 item-phase-fabric-large rotate: false - xy: 1567, 1351 + xy: 821, 187 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-phase-fabric-medium rotate: false - xy: 1761, 1243 + xy: 1943, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -item-phase-fabric-small - rotate: false - xy: 571, 1339 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-phase-fabric-tiny - rotate: false - xy: 887, 1771 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 item-phase-fabric-xlarge rotate: false - xy: 1175, 1409 + xy: 979, 231 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 item-plastanium-large rotate: false - xy: 1567, 1309 + xy: 1571, 186 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-plastanium-medium rotate: false - xy: 1841, 1405 + xy: 2011, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -item-plastanium-small - rotate: false - xy: 499, 977 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-plastanium-tiny - rotate: false - xy: 2025, 2031 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 item-plastanium-xlarge rotate: false - xy: 1175, 1359 + xy: 1029, 231 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 item-pyratite-large rotate: false - xy: 1165, 1267 + xy: 1613, 186 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-pyratite-medium rotate: false - xy: 1909, 1405 + xy: 545, 71 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -item-pyratite-small - rotate: false - xy: 1661, 1271 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-pyratite-tiny - rotate: false - xy: 1631, 1641 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 item-pyratite-xlarge rotate: false - xy: 1225, 1509 + xy: 1079, 231 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 item-sand-large rotate: false - xy: 1207, 1267 + xy: 1773, 186 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-sand-medium rotate: false - xy: 1977, 1405 + xy: 1703, 70 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -item-sand-small - rotate: false - xy: 1459, 965 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-sand-tiny - rotate: false - xy: 1, 6 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 item-sand-xlarge rotate: false - xy: 1225, 1459 + xy: 1129, 231 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 item-scrap-large rotate: false - xy: 1219, 1225 + xy: 451, 185 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-scrap-medium rotate: false - xy: 1871, 1371 + xy: 1619, 62 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -item-scrap-small - rotate: false - xy: 363, 1087 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-scrap-tiny - rotate: false - xy: 1525, 1531 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 item-scrap-xlarge rotate: false - xy: 1225, 1409 + xy: 1179, 231 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 item-silicon-large rotate: false - xy: 1625, 1465 + xy: 743, 182 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-silicon-medium rotate: false - xy: 1939, 1371 + xy: 739, 54 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -item-silicon-small - rotate: false - xy: 1013, 1867 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-silicon-tiny - rotate: false - xy: 233, 963 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 item-silicon-xlarge rotate: false - xy: 1225, 1359 + xy: 1229, 231 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 item-spore-pod-large rotate: false - xy: 1667, 1465 + xy: 1465, 171 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-spore-pod-medium rotate: false - xy: 1871, 1337 + xy: 1821, 53 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -item-spore-pod-small - rotate: false - xy: 363, 1061 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-spore-pod-tiny - rotate: false - xy: 887, 1753 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 item-spore-pod-xlarge rotate: false - xy: 1275, 1499 + xy: 1279, 231 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 item-surge-alloy-large rotate: false - xy: 1709, 1466 + xy: 1655, 164 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-surge-alloy-medium rotate: false - xy: 1939, 1337 + xy: 671, 51 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -item-surge-alloy-small - rotate: false - xy: 1013, 1841 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-surge-alloy-tiny - rotate: false - xy: 2025, 2013 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 item-surge-alloy-xlarge rotate: false - xy: 1325, 1499 + xy: 1329, 231 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 item-thorium-large rotate: false - xy: 1609, 1423 + xy: 1697, 164 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-thorium-medium rotate: false - xy: 1833, 1303 + xy: 1501, 50 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -item-thorium-small - rotate: false - xy: 597, 1339 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-thorium-tiny - rotate: false - xy: 19, 6 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 item-thorium-xlarge rotate: false - xy: 1275, 1449 + xy: 1379, 231 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 item-titanium-large rotate: false - xy: 1609, 1381 + xy: 1507, 155 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-titanium-medium rotate: false - xy: 1901, 1303 + xy: 1569, 50 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -item-titanium-small - rotate: false - xy: 1039, 1843 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-titanium-tiny - rotate: false - xy: 1543, 1531 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 item-titanium-xlarge rotate: false - xy: 1375, 1499 + xy: 1429, 231 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 lancer rotate: false - xy: 571, 1267 + xy: 1959, 487 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 liquid-cryofluid-large rotate: false - xy: 1651, 1423 + xy: 1815, 155 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 liquid-cryofluid-medium rotate: false - xy: 1867, 1269 + xy: 841, 47 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -liquid-cryofluid-small - rotate: false - xy: 1065, 1843 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -liquid-cryofluid-tiny - rotate: false - xy: 887, 1735 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 liquid-cryofluid-xlarge rotate: false - xy: 1425, 1499 + xy: 831, 229 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 liquid-oil-large rotate: false - xy: 1609, 1339 + xy: 1857, 155 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 liquid-oil-medium rotate: false - xy: 1969, 1269 + xy: 1, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -liquid-oil-small - rotate: false - xy: 389, 1059 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -liquid-oil-tiny - rotate: false - xy: 2025, 1995 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 liquid-oil-xlarge rotate: false - xy: 1325, 1399 + xy: 1623, 228 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 liquid-slag-large rotate: false - xy: 1651, 1381 + xy: 1899, 155 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 liquid-slag-medium rotate: false - xy: 2007, 1371 + xy: 239, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -liquid-slag-small - rotate: false - xy: 415, 1059 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -liquid-slag-tiny - rotate: false - xy: 37, 6 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 liquid-slag-xlarge rotate: false - xy: 1375, 1449 + xy: 1779, 228 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 liquid-water-large rotate: false - xy: 1651, 1339 + xy: 1381, 147 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 liquid-water-medium rotate: false - xy: 1999, 1235 + xy: 375, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -liquid-water-small - rotate: false - xy: 1565, 1663 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -liquid-water-tiny - rotate: false - xy: 2025, 1977 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 liquid-water-xlarge rotate: false - xy: 1475, 1499 + xy: 451, 227 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 +mace-wreck0 + rotate: false + xy: 861, 464 + size: 64, 64 + orig: 64, 64 + offset: 0, 0 + index: -1 +mace-wreck1 + rotate: false + xy: 67, 463 + size: 64, 64 + orig: 64, 64 + offset: 0, 0 + index: -1 +mace-wreck2 + rotate: false + xy: 133, 463 + size: 64, 64 + orig: 64, 64 + offset: 0, 0 + index: -1 mass-driver rotate: false - xy: 197, 77 + xy: 785, 767 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 +mega-wreck0 + rotate: false + xy: 307, 1151 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +mega-wreck1 + rotate: false + xy: 409, 1151 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +mega-wreck2 + rotate: false + xy: 781, 1139 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 meltdown rotate: false - xy: 651, 1659 + xy: 1691, 1355 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 +minke-wreck0 + rotate: false + xy: 261, 1335 + size: 128, 128 + orig: 128, 128 + offset: 0, 0 + index: -1 +minke-wreck1 + rotate: false + xy: 391, 1335 + size: 128, 128 + orig: 128, 128 + offset: 0, 0 + index: -1 +minke-wreck2 + rotate: false + xy: 781, 1241 + size: 128, 128 + orig: 128, 128 + offset: 0, 0 + index: -1 +mono-wreck0 + rotate: false + xy: 1879, 197 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +mono-wreck1 + rotate: false + xy: 1929, 197 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +mono-wreck2 + rotate: false + xy: 1979, 189 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +nova-wreck0 + rotate: false + xy: 1473, 331 + size: 56, 56 + orig: 56, 56 + offset: 0, 0 + index: -1 +nova-wreck1 + rotate: false + xy: 1531, 331 + size: 56, 56 + orig: 56, 56 + offset: 0, 0 + index: -1 +nova-wreck2 + rotate: false + xy: 1837, 297 + size: 56, 56 + orig: 56, 56 + offset: 0, 0 + index: -1 +parallax + rotate: false + xy: 1629, 460 + size: 64, 64 + orig: 64, 64 + offset: 0, 0 + index: -1 +poly-wreck0 + rotate: false + xy: 529, 287 + size: 56, 56 + orig: 56, 56 + offset: 0, 0 + index: -1 +poly-wreck1 + rotate: false + xy: 1589, 286 + size: 56, 56 + orig: 56, 56 + offset: 0, 0 + index: -1 +poly-wreck2 + rotate: false + xy: 1007, 281 + size: 56, 56 + orig: 56, 56 + offset: 0, 0 + index: -1 +pulsar-wreck0 + rotate: false + xy: 1987, 1237 + size: 58, 48 + orig: 58, 48 + offset: 0, 0 + index: -1 +pulsar-wreck1 + rotate: false + xy: 1987, 1187 + size: 58, 48 + orig: 58, 48 + offset: 0, 0 + index: -1 +pulsar-wreck2 + rotate: false + xy: 529, 345 + size: 58, 48 + orig: 58, 48 + offset: 0, 0 + index: -1 +quasar-wreck0 + rotate: false + xy: 581, 593 + size: 80, 80 + orig: 80, 80 + offset: 0, 0 + index: -1 +quasar-wreck1 + rotate: false + xy: 1667, 592 + size: 80, 80 + orig: 80, 80 + offset: 0, 0 + index: -1 +quasar-wreck2 + rotate: false + xy: 1749, 592 + size: 80, 80 + orig: 80, 80 + offset: 0, 0 + index: -1 repair-point rotate: false - xy: 957, 81 + xy: 1555, 16 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ripple rotate: false - xy: 635, 1333 + xy: 1867, 751 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 +risse-wreck0 + rotate: false + xy: 589, 741 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 +risse-wreck1 + rotate: false + xy: 491, 739 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 +risse-wreck2 + rotate: false + xy: 981, 735 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 salvo rotate: false - xy: 721, 409 + xy: 611, 398 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 scatter rotate: false - xy: 721, 145 + xy: 199, 397 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 scorch rotate: false - xy: 1287, 1059 + xy: 681, 12 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 segment rotate: false - xy: 901, 1265 + xy: 1, 396 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 spectre rotate: false - xy: 1, 879 + xy: 1041, 1241 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 +spiroct-wreck0 + rotate: false + xy: 1763, 674 + size: 94, 75 + orig: 94, 75 + offset: 0, 0 + index: -1 +spiroct-wreck1 + rotate: false + xy: 1859, 674 + size: 94, 75 + orig: 94, 75 + offset: 0, 0 + index: -1 +spiroct-wreck2 + rotate: false + xy: 687, 670 + size: 94, 75 + orig: 94, 75 + offset: 0, 0 + index: -1 splash-0 rotate: false - xy: 1321, 1025 + xy: 341, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 splash-1 rotate: false - xy: 1323, 991 + xy: 375, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 splash-10 rotate: false - xy: 1357, 991 + xy: 1079, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 splash-11 rotate: false - xy: 1357, 957 + xy: 1113, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 splash-2 rotate: false - xy: 1323, 957 + xy: 409, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 splash-3 rotate: false - xy: 1329, 1229 + xy: 613, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 splash-4 rotate: false - xy: 1335, 1195 + xy: 875, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 splash-5 rotate: false - xy: 1335, 1161 + xy: 909, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 splash-6 rotate: false - xy: 1355, 1127 + xy: 943, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 splash-7 rotate: false - xy: 1355, 1093 + xy: 977, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 splash-8 rotate: false - xy: 1355, 1059 + xy: 1011, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 splash-9 rotate: false - xy: 1355, 1025 + xy: 1045, 11 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 swarmer rotate: false - xy: 157, 11 + xy: 1881, 355 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 unit-alpha-full rotate: false - xy: 1375, 1299 + xy: 651, 181 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -unit-cix-full +unit-arkyid-full rotate: false - xy: 261, 1139 + xy: 651, 1229 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 +unit-atrax-full + rotate: false + xy: 1955, 619 + size: 88, 64 + orig: 88, 64 + offset: 0, 0 + index: -1 +unit-beta-full + rotate: false + xy: 931, 181 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-bryde-full + rotate: false + xy: 649, 1619 + size: 140, 140 + orig: 140, 140 + offset: 0, 0 + index: -1 unit-crawler-full rotate: false - xy: 1425, 1299 + xy: 981, 181 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 unit-dagger-full rotate: false - xy: 1475, 1299 + xy: 1031, 181 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -unit-draug-full +unit-flare-full rotate: false - xy: 953, 1045 + xy: 1081, 181 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -unit-eruptor-full - rotate: false - xy: 1867, 1787 - size: 88, 64 - orig: 88, 64 - offset: 0, 0 - index: -1 unit-fortress-full rotate: false - xy: 261, 1057 + xy: 883, 1159 size: 100, 80 orig: 100, 80 offset: 0, 0 index: -1 -unit-ghoul-full +unit-gamma-full rotate: false - xy: 1453, 1681 + xy: 1647, 278 + size: 56, 56 + orig: 56, 56 + offset: 0, 0 + index: -1 +unit-horizon-full + rotate: false + xy: 737, 595 size: 72, 72 orig: 72, 72 offset: 0, 0 index: -1 unit-mace-full rotate: false - xy: 751, 13 + xy: 67, 331 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 -unit-oculon-full +unit-mega-full rotate: false - xy: 1075, 1657 - size: 80, 80 - orig: 80, 80 - offset: 0, 0 - index: -1 -unit-phantom-full - rotate: false - xy: 809, 1141 - size: 56, 56 - orig: 56, 56 - offset: 0, 0 - index: -1 -unit-revenant-full - rotate: false - xy: 651, 1545 - size: 112, 112 - orig: 112, 112 - offset: 0, 0 - index: -1 -unit-spirit-full - rotate: false - xy: 1003, 1037 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -unit-tau-full - rotate: false - xy: 867, 1141 - size: 56, 56 - orig: 56, 56 - offset: 0, 0 - index: -1 -unit-trident-full - rotate: false - xy: 391, 1183 + xy: 985, 1139 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -unit-vanguard-full +unit-minke-full rotate: false - xy: 1053, 999 + xy: 1171, 1225 + size: 128, 128 + orig: 128, 128 + offset: 0, 0 + index: -1 +unit-mono-full + rotate: false + xy: 1131, 181 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -unit-wraith-full +unit-nova-full rotate: false - xy: 1103, 991 - size: 48, 48 - orig: 48, 48 + xy: 1779, 278 + size: 56, 56 + orig: 56, 56 + offset: 0, 0 + index: -1 +unit-poly-full + rotate: false + xy: 463, 277 + size: 56, 56 + orig: 56, 56 + offset: 0, 0 + index: -1 +unit-pulsar-full + rotate: false + xy: 1603, 344 + size: 58, 48 + orig: 58, 48 + offset: 0, 0 + index: -1 +unit-quasar-full + rotate: false + xy: 1831, 592 + size: 80, 80 + orig: 80, 80 + offset: 0, 0 + index: -1 +unit-risse-full + rotate: false + xy: 1471, 653 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 +unit-spiroct-full + rotate: false + xy: 883, 670 + size: 94, 75 + orig: 94, 75 + offset: 0, 0 + index: -1 +unit-zenith-full + rotate: false + xy: 1301, 1241 + size: 112, 112 + orig: 112, 112 offset: 0, 0 index: -1 wave rotate: false - xy: 1565, 1527 + xy: 397, 331 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 +zenith-wreck0 + rotate: false + xy: 1643, 1241 + size: 112, 112 + orig: 112, 112 + offset: 0, 0 + index: -1 +zenith-wreck1 + rotate: false + xy: 1757, 1241 + size: 112, 112 + orig: 112, 112 + offset: 0, 0 + index: -1 +zenith-wreck2 + rotate: false + xy: 1871, 1241 + size: 112, 112 + orig: 112, 112 + offset: 0, 0 + index: -1 item-blast-compound rotate: false - xy: 1921, 1439 + xy: 1025, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-coal rotate: false - xy: 1989, 1439 + xy: 1093, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-copper rotate: false - xy: 1807, 1413 + xy: 1161, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-graphite rotate: false - xy: 1803, 1379 + xy: 1229, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-lead rotate: false - xy: 1803, 1345 + xy: 1297, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-metaglass rotate: false - xy: 1799, 1311 + xy: 1365, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-phase-fabric rotate: false - xy: 1799, 1277 + xy: 1909, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-plastanium rotate: false - xy: 1795, 1243 + xy: 1977, 79 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-pyratite rotate: false - xy: 1875, 1405 + xy: 477, 77 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-sand rotate: false - xy: 1943, 1405 + xy: 579, 71 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-scrap rotate: false - xy: 1837, 1371 + xy: 1433, 69 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-silicon rotate: false - xy: 1905, 1371 + xy: 1653, 62 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-spore-pod rotate: false - xy: 1837, 1337 + xy: 1787, 53 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-surge-alloy rotate: false - xy: 1905, 1337 + xy: 1855, 53 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-thorium rotate: false - xy: 1973, 1337 + xy: 773, 51 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-titanium rotate: false - xy: 1867, 1303 + xy: 1535, 50 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-cryofluid rotate: false - xy: 1833, 1269 + xy: 807, 47 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-oil rotate: false - xy: 1935, 1269 + xy: 705, 46 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-slag rotate: false - xy: 2011, 1405 + xy: 205, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-water rotate: false - xy: 2003, 1269 + xy: 341, 45 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -blank - rotate: false - xy: 765, 1656 - size: 1, 1 - orig: 1, 1 - offset: 0, 0 - index: -1 shape-3 rotate: false - xy: 1697, 1508 + xy: 1, 331 size: 63, 63 orig: 63, 63 offset: 0, 0 index: -1 alpha rotate: false - xy: 1033, 1149 + xy: 611, 543 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 alpha-cell rotate: false - xy: 1083, 1149 + xy: 743, 479 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -chaos-array +arkyid rotate: false - xy: 391, 1919 + xy: 791, 1631 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 -cix +chaos-array rotate: false - xy: 391, 1919 + xy: 791, 1631 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 +arkyid-cell + rotate: false + xy: 1955, 685 + size: 88, 64 + orig: 88, 64 + offset: 0, 0 + index: -1 +arkyid-foot + rotate: false + xy: 811, 597 + size: 70, 70 + orig: 70, 70 + offset: 0, 0 + index: -1 +arkyid-joint-base + rotate: false + xy: 957, 597 + size: 70, 70 + orig: 70, 70 + offset: 0, 0 + index: -1 +arkyid-leg + rotate: false + xy: 1663, 336 + size: 56, 56 + orig: 56, 56 + offset: 0, 0 + index: -1 +arkyid-leg-base + rotate: false + xy: 521, 1659 + size: 104, 64 + orig: 104, 64 + offset: 0, 0 + index: -1 +atrax + rotate: false + xy: 1, 676 + size: 88, 64 + orig: 88, 64 + offset: 0, 0 + index: -1 +atrax-base + rotate: false + xy: 1975, 1750 + size: 64, 64 + orig: 64, 64 + offset: 0, 0 + index: -1 +atrax-cell + rotate: false + xy: 589, 675 + size: 88, 64 + orig: 88, 64 + offset: 0, 0 + index: -1 +atrax-foot + rotate: false + xy: 1987, 1145 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +atrax-leg + rotate: false + xy: 1961, 1491 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +atrax-leg-base + rotate: false + xy: 1999, 1491 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +beta + rotate: false + xy: 1, 281 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +beta-cell + rotate: false + xy: 51, 281 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +bryde + rotate: false + xy: 1265, 1745 + size: 140, 140 + orig: 140, 140 + offset: 0, 0 + index: -1 +bryde-cell + rotate: false + xy: 1407, 1745 + size: 140, 140 + orig: 140, 140 + offset: 0, 0 + index: -1 chaos-array-base rotate: false - xy: 1, 1399 + xy: 921, 1501 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 chaos-array-cell rotate: false - xy: 131, 1529 + xy: 1051, 1501 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 chaos-array-leg rotate: false - xy: 261, 1659 + xy: 521, 1489 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 -cix-cell - rotate: false - xy: 1, 24 - size: 88, 64 - orig: 88, 64 - offset: 0, 0 - index: -1 -cix-foot - rotate: false - xy: 1157, 1609 - size: 70, 70 - orig: 70, 70 - offset: 0, 0 - index: -1 -cix-joint-base - rotate: false - xy: 1229, 1609 - size: 70, 70 - orig: 70, 70 - offset: 0, 0 - index: -1 -cix-leg - rotate: false - xy: 1991, 1631 - size: 56, 56 - orig: 56, 56 - offset: 0, 0 - index: -1 -cix-leg-base - rotate: false - xy: 781, 1723 - size: 104, 64 - orig: 104, 64 - offset: 0, 0 - index: -1 -cix-old - rotate: false - xy: 1597, 1787 - size: 88, 64 - orig: 88, 64 - offset: 0, 0 - index: -1 crawler rotate: false - xy: 853, 1091 + xy: 351, 281 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 crawler-base rotate: false - xy: 1183, 1149 + xy: 401, 281 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 crawler-cell rotate: false - xy: 571, 1365 + xy: 637, 281 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 crawler-leg rotate: false - xy: 1059, 1541 + xy: 1123, 281 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 dagger rotate: false - xy: 1109, 1541 + xy: 1323, 281 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 dagger-base rotate: false - xy: 1159, 1559 + xy: 1373, 281 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 dagger-leg rotate: false - xy: 1209, 1559 + xy: 1423, 281 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -delta +eradicator rotate: false - xy: 1878, 1507 + xy: 649, 1761 + size: 152, 124 + orig: 152, 124 + offset: 0, 0 + index: -1 +eradicator-base + rotate: false + xy: 803, 1761 + size: 152, 124 + orig: 152, 124 + offset: 0, 0 + index: -1 +eradicator-cell + rotate: false + xy: 957, 1761 + size: 152, 124 + orig: 152, 124 + offset: 0, 0 + index: -1 +eradicator-leg + rotate: false + xy: 1111, 1761 + size: 152, 124 + orig: 152, 124 + offset: 0, 0 + index: -1 +flare + rotate: false + xy: 929, 233 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -delta-cell - rotate: false - xy: 1928, 1507 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -draug - rotate: false - xy: 1978, 1507 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -draug-cell - rotate: false - xy: 903, 1091 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -eruptor - rotate: false - xy: 1687, 1787 - size: 88, 64 - orig: 88, 64 - offset: 0, 0 - index: -1 -eruptor-base - rotate: false - xy: 1829, 1573 - size: 64, 64 - orig: 64, 64 - offset: 0, 0 - index: -1 -eruptor-cell - rotate: false - xy: 1777, 1787 - size: 88, 64 - orig: 88, 64 - offset: 0, 0 - index: -1 -eruptor-foot - rotate: false - xy: 2007, 1729 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -eruptor-joint - rotate: false - xy: 233, 981 - size: 26, 26 - orig: 26, 26 - offset: 0, 0 - index: -1 -eruptor-leg - rotate: false - xy: 131, 879 - size: 36, 26 - orig: 36, 26 - offset: 0, 0 - index: -1 -eruptor-leg-base - rotate: false - xy: 169, 879 - size: 36, 26 - orig: 36, 26 - offset: 0, 0 - index: -1 fortress rotate: false - xy: 911, 1837 + xy: 1945, 1967 size: 100, 80 orig: 100, 80 offset: 0, 0 index: -1 fortress-base rotate: false - xy: 1895, 1557 + xy: 1431, 521 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 fortress-cell rotate: false - xy: 1041, 1967 + xy: 103, 1253 size: 100, 80 orig: 100, 80 offset: 0, 0 index: -1 fortress-leg rotate: false - xy: 1597, 1725 + xy: 1961, 1601 size: 80, 60 orig: 80, 60 offset: 0, 0 index: -1 -ghoul +gamma rotate: false - xy: 1157, 1681 - size: 72, 72 - orig: 72, 72 - offset: 0, 0 - index: -1 -ghoul-cell - rotate: false - xy: 1231, 1681 - size: 72, 72 - orig: 72, 72 - offset: 0, 0 - index: -1 -glaive - rotate: false - xy: 1762, 1515 + xy: 1779, 336 size: 56, 56 orig: 56, 56 offset: 0, 0 index: -1 -glaive-cell +gamma-cell rotate: false - xy: 787, 345 + xy: 1125, 331 size: 56, 56 orig: 56, 56 offset: 0, 0 index: -1 +horizon + rotate: false + xy: 1975, 1816 + size: 72, 72 + orig: 72, 72 + offset: 0, 0 + index: -1 +horizon-cell + rotate: false + xy: 707, 1155 + size: 72, 72 + orig: 72, 72 + offset: 0, 0 + index: -1 mace rotate: false - xy: 625, 1201 + xy: 795, 465 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 mace-base rotate: false - xy: 625, 1135 + xy: 943, 465 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 mace-cell rotate: false - xy: 621, 1069 + xy: 1009, 465 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 mace-leg rotate: false - xy: 655, 1003 + xy: 611, 464 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 -oculon +mega rotate: false - xy: 1679, 1705 - size: 80, 80 - orig: 80, 80 + xy: 103, 1151 + size: 100, 100 + orig: 100, 100 offset: 0, 0 index: -1 -oculon-armor +mega-cell rotate: false - xy: 659, 607 - size: 64, 64 - orig: 64, 64 + xy: 205, 1151 + size: 100, 100 + orig: 100, 100 offset: 0, 0 index: -1 -oculon-base +minke rotate: false - xy: 1761, 1705 - size: 80, 80 - orig: 80, 80 + xy: 1, 1335 + size: 128, 128 + orig: 128, 128 offset: 0, 0 index: -1 -oculon-base-old +minke-cell rotate: false - xy: 1475, 1449 + xy: 131, 1335 + size: 128, 128 + orig: 128, 128 + offset: 0, 0 + index: -1 +mono + rotate: false + xy: 1723, 206 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -oculon-cell +mono-cell rotate: false - xy: 1843, 1705 - size: 80, 80 - orig: 80, 80 - offset: 0, 0 - index: -1 -oculon-cell-old - rotate: false - xy: 1475, 1399 + xy: 1829, 197 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -oculon-leg +nova rotate: false - xy: 1925, 1689 - size: 80, 80 - orig: 80, 80 - offset: 0, 0 - index: -1 -oculon-leg-old - rotate: false - xy: 1275, 1349 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -oculon-old - rotate: false - xy: 691, 1149 - size: 58, 48 - orig: 58, 48 - offset: 0, 0 - index: -1 -phantom - rotate: false - xy: 1820, 1515 + xy: 1357, 331 size: 56, 56 orig: 56, 56 offset: 0, 0 index: -1 -phantom-cell +nova-base rotate: false - xy: 787, 287 + xy: 551, 182 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +nova-cell + rotate: false + xy: 1415, 331 + size: 56, 56 + orig: 56, 56 + offset: 0, 0 + index: -1 +nova-leg + rotate: false + xy: 1, 181 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +poly + rotate: false + xy: 1895, 297 + size: 56, 56 + orig: 56, 56 + offset: 0, 0 + index: -1 +poly-cell + rotate: false + xy: 1953, 297 size: 56, 56 orig: 56, 56 offset: 0, 0 index: -1 power-cell rotate: false - xy: 787, 229 + xy: 1065, 281 size: 56, 56 orig: 56, 56 offset: 0, 0 index: -1 -revenant +pulsar rotate: false - xy: 391, 1285 - size: 112, 112 - orig: 112, 112 + xy: 1985, 1337 + size: 58, 48 + orig: 58, 48 offset: 0, 0 index: -1 -revenant-cell +pulsar-base rotate: false - xy: 521, 1415 - size: 112, 112 - orig: 112, 112 - offset: 0, 0 - index: -1 -spirit - rotate: false - xy: 1175, 1309 + xy: 51, 181 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -spirit-cell +pulsar-cell rotate: false - xy: 1225, 1309 - size: 48, 48 - orig: 48, 48 + xy: 1985, 1287 + size: 58, 48 + orig: 58, 48 offset: 0, 0 index: -1 -tau +pulsar-leg rotate: false - xy: 787, 171 - size: 56, 56 - orig: 56, 56 + xy: 1959, 421 + size: 64, 64 + orig: 64, 64 offset: 0, 0 index: -1 -tau-base +quasar rotate: false - xy: 1275, 1299 - size: 48, 48 - orig: 48, 48 + xy: 1961, 1519 + size: 80, 80 + orig: 80, 80 offset: 0, 0 index: -1 -tau-cell +quasar-base rotate: false - xy: 787, 113 - size: 56, 56 - orig: 56, 56 + xy: 1961, 963 + size: 80, 80 + orig: 80, 80 offset: 0, 0 index: -1 -tau-leg +quasar-cell rotate: false - xy: 1325, 1299 - size: 48, 48 - orig: 48, 48 + xy: 1965, 767 + size: 80, 80 + orig: 80, 80 offset: 0, 0 index: -1 -trident +quasar-leg rotate: false - xy: 131, 907 - size: 100, 100 - orig: 100, 100 + xy: 1, 594 + size: 80, 80 + orig: 80, 80 offset: 0, 0 index: -1 -trident-cell +risse rotate: false - xy: 751, 1141 - size: 56, 56 - orig: 56, 56 + xy: 883, 747 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 +risse-cell + rotate: false + xy: 1, 742 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 +spiroct + rotate: false + xy: 1945, 1890 + size: 94, 75 + orig: 94, 75 + offset: 0, 0 + index: -1 +spiroct-cell + rotate: false + xy: 1667, 674 + size: 94, 75 + orig: 94, 75 + offset: 0, 0 + index: -1 +spiroct-foot + rotate: false + xy: 1981, 849 + size: 46, 46 + orig: 46, 46 + offset: 0, 0 + index: -1 +spiroct-joint + rotate: false + xy: 307, 11 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +spiroct-leg + rotate: false + xy: 521, 1623 + size: 48, 34 + orig: 48, 34 + offset: 0, 0 + index: -1 +spiroct-leg-base + rotate: false + xy: 571, 1623 + size: 48, 34 + orig: 48, 34 offset: 0, 0 index: -1 vanguard rotate: false - xy: 1153, 999 + xy: 1181, 181 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 vanguard-cell rotate: false - xy: 1203, 999 + xy: 1231, 181 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +antumbra-missiles + rotate: false + xy: 587, 282 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 artillery rotate: false - xy: 753, 1083 + xy: 781, 274 size: 48, 56 orig: 48, 56 offset: 0, 0 index: -1 +artillery-mount + rotate: false + xy: 1029, 597 + size: 70, 70 + orig: 70, 70 + offset: 0, 0 + index: -1 +beam-weapon + rotate: false + xy: 1961, 1663 + size: 80, 80 + orig: 80, 80 + offset: 0, 0 + index: -1 chaos rotate: false - xy: 787, 403 + xy: 1721, 256 size: 56, 136 orig: 56, 136 offset: 0, 0 index: -1 +eclipse-weapon + rotate: false + xy: 1887, 247 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 eradication rotate: false - xy: 99, 195 + xy: 589, 839 size: 96, 192 orig: 96, 192 offset: 0, 0 index: -1 eruption rotate: false - xy: 1003, 1087 + xy: 1987, 239 size: 48, 56 orig: 48, 56 offset: 0, 0 index: -1 flakgun rotate: false - xy: 1053, 1099 + xy: 521, 237 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 flamethrower rotate: false - xy: 1103, 1091 + xy: 1573, 228 size: 48, 56 orig: 48, 56 offset: 0, 0 index: -1 +heal-shotgun-weapon + rotate: false + xy: 101, 231 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 heal-weapon rotate: false - xy: 1153, 1099 + xy: 151, 231 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 heal-weapon-mount rotate: false - xy: 1203, 1099 + xy: 201, 231 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 +large-artillery + rotate: false + xy: 1479, 213 + size: 48, 66 + orig: 48, 66 + offset: 0, 0 + index: -1 large-weapon rotate: false - xy: 1275, 1399 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -lich-missiles - rotate: false - xy: 1325, 1449 + xy: 721, 229 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 missiles rotate: false - xy: 1375, 1399 + xy: 771, 224 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 missiles-mount rotate: false - xy: 1425, 1449 + xy: 1673, 206 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +mount-purple-weapon + rotate: false + xy: 501, 187 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 mount-weapon rotate: false - xy: 1425, 1399 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -reaper-weapon - rotate: false - xy: 1325, 1349 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -revenant-missiles - rotate: false - xy: 1375, 1349 + xy: 881, 183 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 small-basic-weapon rotate: false - xy: 1053, 1049 + xy: 201, 181 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +small-mount-weapon + rotate: false + xy: 251, 181 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 small-weapon rotate: false - xy: 1103, 1041 + xy: 301, 181 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 +spiroct-weapon + rotate: false + xy: 601, 173 + size: 48, 56 + orig: 48, 56 + offset: 0, 0 + index: -1 weapon rotate: false - xy: 1525, 1477 + xy: 1281, 181 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -wraith +zenith-missiles rotate: false - xy: 1575, 1477 + xy: 1331, 181 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -beam-weapon +zenith rotate: false - xy: 1957, 1771 - size: 80, 80 - orig: 80, 80 + xy: 1415, 1241 + size: 112, 112 + orig: 112, 112 offset: 0, 0 index: -1 -beam-weapon +zenith-cell rotate: false - xy: 1957, 1771 - size: 80, 80 - orig: 80, 80 + xy: 1529, 1241 + size: 112, 112 + orig: 112, 112 offset: 0, 0 index: -1 sprites3.png +size: 256,256 +format: rgba8888 +filter: nearest,nearest +repeat: none +titanium-conveyor-4-1 + rotate: false + xy: 1, 223 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +titanium-conveyor-4-2 + rotate: false + xy: 1, 189 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +titanium-conveyor-4-3 + rotate: false + xy: 35, 223 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +underflow-gate + rotate: false + xy: 69, 223 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unloader + rotate: false + xy: 1, 121 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unloader-center + rotate: false + xy: 35, 155 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +titanium-wall + rotate: false + xy: 1, 155 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +casing + rotate: false + xy: 89, 53 + size: 8, 16 + orig: 8, 16 + offset: 0, 0 + index: -1 +circle-mid + rotate: false + xy: 107, 4 + size: 1, 199 + orig: 1, 199 + offset: 0, 0 + index: -1 +laser + rotate: false + xy: 251, 207 + size: 4, 48 + orig: 4, 48 + offset: 0, 0 + index: -1 +minelaser + rotate: false + xy: 251, 157 + size: 4, 48 + orig: 4, 48 + offset: 0, 0 + index: -1 +parallax-laser + rotate: false + xy: 97, 173 + size: 4, 48 + orig: 4, 48 + offset: 0, 0 + index: -1 +scale_marker + rotate: false + xy: 1, 1 + size: 4, 4 + orig: 4, 4 + offset: 0, 0 + index: -1 +transfer + rotate: false + xy: 63, 3 + size: 4, 48 + orig: 4, 48 + offset: 0, 0 + index: -1 +transfer-arrow + rotate: false + xy: 35, 189 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +white + rotate: false + xy: 61, 150 + size: 3, 3 + orig: 3, 3 + offset: 0, 0 + index: -1 +item-blast-compound-small + rotate: false + xy: 103, 231 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-blast-compound-tiny + rotate: false + xy: 233, 239 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-coal-small + rotate: false + xy: 1, 95 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-coal-tiny + rotate: false + xy: 27, 25 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-copper-small + rotate: false + xy: 35, 129 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-copper-tiny + rotate: false + xy: 233, 221 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-graphite-small + rotate: false + xy: 69, 169 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-graphite-tiny + rotate: false + xy: 233, 203 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-lead-small + rotate: false + xy: 129, 231 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-lead-tiny + rotate: false + xy: 27, 7 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-metaglass-small + rotate: false + xy: 1, 69 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-metaglass-tiny + rotate: false + xy: 45, 25 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-phase-fabric-small + rotate: false + xy: 155, 231 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-phase-fabric-tiny + rotate: false + xy: 45, 7 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-plastanium-small + rotate: false + xy: 1, 43 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-plastanium-tiny + rotate: false + xy: 61, 125 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-pyratite-small + rotate: false + xy: 181, 231 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-pyratite-tiny + rotate: false + xy: 79, 125 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-sand-small + rotate: false + xy: 1, 17 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-sand-tiny + rotate: false + xy: 53, 107 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-scrap-small + rotate: false + xy: 207, 231 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-scrap-tiny + rotate: false + xy: 71, 107 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-silicon-small + rotate: false + xy: 69, 143 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-silicon-tiny + rotate: false + xy: 53, 89 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-spore-pod-small + rotate: false + xy: 103, 205 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-spore-pod-tiny + rotate: false + xy: 71, 89 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-surge-alloy-small + rotate: false + xy: 129, 205 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-surge-alloy-tiny + rotate: false + xy: 53, 71 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-thorium-small + rotate: false + xy: 155, 205 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-thorium-tiny + rotate: false + xy: 71, 71 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-titanium-small + rotate: false + xy: 181, 205 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-titanium-tiny + rotate: false + xy: 53, 53 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +liquid-cryofluid-small + rotate: false + xy: 207, 205 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +liquid-cryofluid-tiny + rotate: false + xy: 71, 53 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +liquid-oil-small + rotate: false + xy: 27, 95 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +liquid-oil-tiny + rotate: false + xy: 89, 107 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +liquid-slag-small + rotate: false + xy: 27, 69 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +liquid-slag-tiny + rotate: false + xy: 89, 89 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +liquid-water-small + rotate: false + xy: 27, 43 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +liquid-water-tiny + rotate: false + xy: 89, 71 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +blank + rotate: false + xy: 66, 152 + size: 1, 1 + orig: 1, 1 + offset: 0, 0 + index: -1 +atrax-joint + rotate: false + xy: 69, 195 + size: 26, 26 + orig: 26, 26 + offset: 0, 0 + index: -1 + +sprites4.png size: 2048,1024 format: rgba8888 filter: nearest,nearest @@ -6058,154 +6722,154 @@ scorch-9-2 offset: 0, 0 index: -1 -sprites4.png +sprites5.png size: 2048,512 format: rgba8888 filter: nearest,nearest repeat: none char1 rotate: false - xy: 1281, 459 + xy: 835, 327 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 char2 rotate: false - xy: 1315, 459 + xy: 1099, 459 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 char3 rotate: false - xy: 1349, 459 + xy: 869, 327 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cliff rotate: false - xy: 1383, 459 + xy: 1133, 459 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cliffs1 rotate: false - xy: 1417, 459 + xy: 903, 327 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 coal1 rotate: false - xy: 1451, 459 + xy: 1167, 459 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 coal2 rotate: false - xy: 1485, 459 + xy: 937, 327 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 coal3 rotate: false - xy: 1519, 459 + xy: 1201, 459 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 copper1 rotate: false - xy: 1553, 459 + xy: 1235, 459 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 copper2 rotate: false - xy: 1587, 459 + xy: 1269, 459 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 copper3 rotate: false - xy: 1621, 459 + xy: 1303, 459 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 craters1 rotate: false - xy: 1655, 459 + xy: 1337, 459 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 craters2 rotate: false - xy: 1689, 459 + xy: 1371, 459 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 craters3 rotate: false - xy: 1723, 459 + xy: 1405, 459 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 craters4 rotate: false - xy: 1757, 459 + xy: 1439, 459 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 craters5 rotate: false - xy: 1791, 459 + xy: 1473, 459 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 craters6 rotate: false - xy: 1825, 459 + xy: 1507, 459 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-metal-large rotate: false - xy: 687, 329 + xy: 785, 427 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 dark-metal1 rotate: false - xy: 1859, 459 + xy: 1541, 459 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-metal2 rotate: false - xy: 1893, 459 + xy: 1575, 459 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-panel-1 rotate: false - xy: 1927, 459 + xy: 1609, 459 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6219,7 +6883,7 @@ dark-panel-1-edge index: -1 dark-panel-2 rotate: false - xy: 1961, 459 + xy: 1643, 459 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6233,7 +6897,7 @@ dark-panel-2-edge index: -1 dark-panel-3 rotate: false - xy: 1995, 459 + xy: 1677, 459 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6247,7 +6911,7 @@ dark-panel-3-edge index: -1 dark-panel-4 rotate: false - xy: 753, 361 + xy: 1711, 459 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6261,7 +6925,7 @@ dark-panel-4-edge index: -1 dark-panel-5 rotate: false - xy: 753, 327 + xy: 1745, 459 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6275,7 +6939,7 @@ dark-panel-5-edge index: -1 dark-panel-6 rotate: false - xy: 753, 293 + xy: 1779, 459 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6296,7 +6960,7 @@ darksand-edge index: -1 darksand-tainted-water rotate: false - xy: 525, 1 + xy: 1915, 459 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6310,28 +6974,28 @@ darksand-tainted-water-edge index: -1 darksand-tainted-water1 rotate: false - xy: 655, 131 + xy: 1949, 459 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 darksand-tainted-water2 rotate: false - xy: 753, 259 + xy: 1983, 459 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 darksand-tainted-water3 rotate: false - xy: 689, 179 + xy: 491, 1 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 darksand-water rotate: false - xy: 689, 145 + xy: 557, 67 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6345,49 +7009,49 @@ darksand-water-edge index: -1 darksand-water1 rotate: false - xy: 737, 225 + xy: 655, 165 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 darksand-water2 rotate: false - xy: 1181, 409 + xy: 753, 263 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 darksand-water3 rotate: false - xy: 1215, 409 + xy: 525, 1 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 darksand1 rotate: false - xy: 491, 1 + xy: 1813, 459 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 darksand2 rotate: false - xy: 557, 67 + xy: 1847, 459 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 darksand3 rotate: false - xy: 655, 165 + xy: 1881, 459 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 deepwater rotate: false - xy: 1249, 409 + xy: 655, 131 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6401,28 +7065,28 @@ deepwater-edge index: -1 dunerocks-large rotate: false - xy: 785, 427 + xy: 491, 35 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 dunerocks1 rotate: false - xy: 1283, 425 + xy: 753, 229 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dunerocks2 rotate: false - xy: 1317, 425 + xy: 787, 277 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 edge rotate: false - xy: 1351, 425 + xy: 787, 243 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6436,7 +7100,7 @@ edge-stencil index: -1 edgier rotate: false - xy: 1385, 425 + xy: 983, 343 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6450,21 +7114,21 @@ grass-edge index: -1 grass1 rotate: false - xy: 1419, 425 + xy: 1033, 393 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 grass2 rotate: false - xy: 1453, 425 + xy: 835, 293 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 grass3 rotate: false - xy: 1487, 425 + xy: 869, 293 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6478,42 +7142,42 @@ holostone-edge index: -1 holostone1 rotate: false - xy: 1521, 425 + xy: 903, 293 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 holostone2 rotate: false - xy: 1555, 425 + xy: 937, 293 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 holostone3 rotate: false - xy: 1589, 425 + xy: 971, 309 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 hotrock1 rotate: false - xy: 1623, 425 + xy: 821, 259 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 hotrock2 rotate: false - xy: 1657, 425 + xy: 855, 259 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 hotrock3 rotate: false - xy: 1691, 425 + xy: 889, 259 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6534,63 +7198,63 @@ ice-snow-edge index: -1 ice-snow1 rotate: false - xy: 1827, 425 + xy: 1167, 425 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice-snow2 rotate: false - xy: 1861, 425 + xy: 1201, 425 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice-snow3 rotate: false - xy: 1895, 425 + xy: 1235, 425 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice1 rotate: false - xy: 1725, 425 + xy: 923, 259 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice2 rotate: false - xy: 1759, 425 + xy: 1099, 425 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice3 rotate: false - xy: 1793, 425 + xy: 1133, 425 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 icerocks-large rotate: false - xy: 491, 35 + xy: 589, 133 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 icerocks1 rotate: false - xy: 1929, 425 + xy: 1269, 425 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 icerocks2 rotate: false - xy: 1963, 425 + xy: 1303, 425 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6604,77 +7268,77 @@ ignarock-edge index: -1 ignarock1 rotate: false - xy: 1997, 425 + xy: 1337, 425 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ignarock2 rotate: false - xy: 771, 225 + xy: 1371, 425 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ignarock3 rotate: false - xy: 1283, 391 + xy: 1405, 425 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 lead1 rotate: false - xy: 1317, 391 + xy: 1439, 425 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 lead2 rotate: false - xy: 1351, 391 + xy: 1473, 425 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 lead3 rotate: false - xy: 1385, 391 + xy: 1507, 425 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 magmarock1 rotate: false - xy: 1419, 391 + xy: 1541, 425 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 magmarock2 rotate: false - xy: 1453, 391 + xy: 1575, 425 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 magmarock3 rotate: false - xy: 1487, 391 + xy: 1609, 425 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor rotate: false - xy: 1521, 391 + xy: 1643, 425 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-2 rotate: false - xy: 1555, 391 + xy: 1677, 425 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6688,7 +7352,7 @@ metal-floor-2-edge index: -1 metal-floor-3 rotate: false - xy: 1589, 391 + xy: 1711, 425 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6702,7 +7366,7 @@ metal-floor-3-edge index: -1 metal-floor-5 rotate: false - xy: 1623, 391 + xy: 1745, 425 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6723,21 +7387,21 @@ metal-floor-damaged-edge index: -1 metal-floor-damaged1 rotate: false - xy: 1657, 391 + xy: 1779, 425 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-damaged2 rotate: false - xy: 1691, 391 + xy: 1813, 425 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-damaged3 rotate: false - xy: 1725, 391 + xy: 1847, 425 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6758,294 +7422,301 @@ moss-edge index: -1 moss1 rotate: false - xy: 1759, 391 + xy: 1881, 425 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 moss2 rotate: false - xy: 1793, 391 + xy: 1915, 425 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 moss3 rotate: false - xy: 1827, 391 + xy: 1949, 425 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-coal1 rotate: false - xy: 1861, 391 + xy: 1983, 425 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-coal2 rotate: false - xy: 1895, 391 + xy: 1017, 343 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-coal3 rotate: false - xy: 1929, 391 + xy: 1005, 309 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-copper1 rotate: false - xy: 1963, 391 + xy: 971, 275 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-copper2 rotate: false - xy: 1997, 391 + xy: 1005, 275 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-copper3 rotate: false - xy: 723, 179 + xy: 821, 225 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-lead1 rotate: false - xy: 723, 145 + xy: 855, 225 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-lead2 rotate: false - xy: 757, 191 + xy: 889, 225 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-lead3 rotate: false - xy: 757, 157 + xy: 923, 225 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-scrap1 rotate: false - xy: 689, 111 + xy: 787, 209 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-scrap2 rotate: false - xy: 723, 111 + xy: 957, 241 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-scrap3 rotate: false - xy: 757, 123 + xy: 991, 241 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-thorium1 rotate: false - xy: 791, 191 + xy: 821, 191 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-thorium2 rotate: false - xy: 791, 157 + xy: 855, 191 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-thorium3 rotate: false - xy: 791, 123 + xy: 889, 191 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-titanium1 rotate: false - xy: 757, 89 + xy: 923, 191 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-titanium2 rotate: false - xy: 791, 89 + xy: 957, 207 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-titanium3 rotate: false - xy: 591, 99 + xy: 991, 207 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pebbles1 rotate: false - xy: 591, 65 + xy: 957, 173 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pebbles2 rotate: false - xy: 625, 97 + xy: 991, 173 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pebbles3 rotate: false - xy: 625, 63 + xy: 1025, 241 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pine rotate: false - xy: 687, 213 + xy: 785, 311 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -rocks-large - rotate: false - xy: 589, 133 - size: 64, 64 - orig: 64, 64 - offset: 0, 0 - index: -1 -rocks1 - rotate: false - xy: 659, 77 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -rocks2 - rotate: false - xy: 693, 77 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -salt - rotate: false - xy: 659, 43 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -salt-edge +ripples rotate: false xy: 393, 199 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 -saltrocks-large +rocks-large rotate: false - xy: 687, 263 + xy: 687, 231 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 -saltrocks1 +rocks1 rotate: false - xy: 693, 43 + xy: 1025, 207 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -saltrocks2 +rocks2 rotate: false - xy: 727, 55 + xy: 1025, 173 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -sand-edge +salt + rotate: false + xy: 1039, 309 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +salt-edge rotate: false xy: 491, 297 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 -sand-water +saltrocks-large rotate: false - xy: 761, 21 + xy: 785, 361 + size: 64, 64 + orig: 64, 64 + offset: 0, 0 + index: -1 +saltrocks1 + rotate: false + xy: 1039, 275 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -sand-water-edge +saltrocks2 + rotate: false + xy: 1059, 241 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +sand-edge rotate: false xy: 589, 395 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 +sand-water + rotate: false + xy: 591, 65 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +sand-water-edge + rotate: false + xy: 295, 3 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 sand-water1 rotate: false - xy: 795, 21 + xy: 625, 97 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sand-water2 rotate: false - xy: 787, 393 + xy: 625, 63 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sand-water3 rotate: false - xy: 787, 359 + xy: 659, 97 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sand1 rotate: false - xy: 761, 55 + xy: 1059, 207 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sand2 rotate: false - xy: 795, 55 + xy: 1059, 173 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sand3 rotate: false - xy: 727, 21 + xy: 591, 99 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -7059,377 +7730,377 @@ sandrocks-large index: -1 sandrocks1 rotate: false - xy: 821, 393 + xy: 659, 63 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sandrocks2 rotate: false - xy: 787, 325 + xy: 689, 197 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap1 rotate: false - xy: 855, 393 + xy: 689, 163 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap2 rotate: false - xy: 821, 359 + xy: 723, 195 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap3 rotate: false - xy: 787, 291 + xy: 723, 161 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shale-edge rotate: false - xy: 295, 3 + xy: 393, 101 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 shale1 rotate: false - xy: 889, 393 + xy: 757, 175 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shale2 rotate: false - xy: 821, 325 + xy: 757, 141 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shale3 rotate: false - xy: 855, 359 + xy: 791, 157 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shalerocks-large rotate: false - xy: 917, 427 + xy: 851, 361 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 shalerocks1 rotate: false - xy: 923, 393 + xy: 825, 157 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shalerocks2 rotate: false - xy: 821, 291 + xy: 859, 157 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shrubs-large rotate: false - xy: 983, 427 + xy: 917, 427 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 shrubs1 rotate: false - xy: 855, 325 + xy: 893, 157 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shrubs2 rotate: false - xy: 889, 359 + xy: 791, 123 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 slag rotate: false - xy: 957, 393 + xy: 825, 123 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 slag-edge rotate: false - xy: 393, 101 + xy: 491, 199 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 snow-edge rotate: false - xy: 491, 199 + xy: 589, 297 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 snow-pine rotate: false - xy: 1181, 443 + xy: 983, 377 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 snow1 rotate: false - xy: 855, 291 + xy: 859, 123 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 snow2 rotate: false - xy: 889, 325 + xy: 893, 123 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 snow3 rotate: false - xy: 923, 359 + xy: 927, 139 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 snowrocks-large rotate: false - xy: 1049, 427 + xy: 917, 361 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 snowrocks1 rotate: false - xy: 991, 393 + xy: 961, 139 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 snowrocks2 rotate: false - xy: 889, 291 + xy: 995, 139 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spawn rotate: false - xy: 923, 325 + xy: 1029, 139 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spore-moss-edge rotate: false - xy: 589, 297 + xy: 687, 395 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 spore-moss1 rotate: false - xy: 957, 359 + xy: 1063, 139 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spore-moss2 rotate: false - xy: 1025, 393 + xy: 927, 105 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spore-moss3 rotate: false - xy: 923, 291 + xy: 961, 105 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spore-pine rotate: false - xy: 1231, 443 + xy: 1049, 443 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 sporerocks-large rotate: false - xy: 1115, 427 + xy: 983, 427 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 sporerocks1 rotate: false - xy: 957, 325 + xy: 995, 105 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sporerocks2 rotate: false - xy: 991, 359 + xy: 1029, 105 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 stone-edge rotate: false - xy: 687, 395 + xy: 393, 3 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 stone1 rotate: false - xy: 1059, 393 + xy: 1063, 105 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 stone2 rotate: false - xy: 957, 291 + xy: 1067, 391 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 stone3 rotate: false - xy: 991, 325 + xy: 1101, 391 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 tainted-water rotate: false - xy: 1025, 359 + xy: 1135, 391 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 tainted-water-edge rotate: false - xy: 393, 3 + xy: 491, 101 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 tar rotate: false - xy: 1093, 393 + xy: 1169, 391 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 tar-edge rotate: false - xy: 491, 101 + xy: 589, 199 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 tendrils1 rotate: false - xy: 991, 291 + xy: 1203, 391 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 tendrils2 rotate: false - xy: 1025, 325 + xy: 1237, 391 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 tendrils3 rotate: false - xy: 1059, 359 + xy: 1271, 391 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 thorium1 rotate: false - xy: 1127, 393 + xy: 1305, 391 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 thorium2 rotate: false - xy: 1025, 291 + xy: 1339, 391 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 thorium3 rotate: false - xy: 1059, 325 + xy: 1373, 391 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium1 rotate: false - xy: 1093, 359 + xy: 1407, 391 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium2 rotate: false - xy: 1059, 291 + xy: 1441, 391 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium3 rotate: false - xy: 1093, 325 + xy: 1475, 391 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 water rotate: false - xy: 1127, 359 + xy: 1509, 391 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 water-edge rotate: false - xy: 589, 199 + xy: 687, 297 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 -sprites5.png +sprites6.png size: 2048,1024 format: rgba8888 filter: nearest,nearest @@ -7471,7 +8142,7 @@ armored-conveyor-icon-editor index: -1 battery-icon-editor rotate: false - xy: 229, 47 + xy: 295, 47 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -7499,7 +8170,7 @@ blast-mixer-icon-editor index: -1 block-border-editor rotate: false - xy: 263, 47 + xy: 295, 13 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -7681,105 +8352,105 @@ cyclone-icon-editor index: -1 dark-metal-icon-editor rotate: false - xy: 297, 47 + xy: 1995, 795 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-panel-1-icon-editor rotate: false - xy: 1995, 795 + xy: 1995, 761 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-dark-panel-1 rotate: false - xy: 1995, 795 + xy: 1995, 761 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-panel-2-icon-editor rotate: false - xy: 1995, 761 + xy: 1995, 727 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-dark-panel-2 rotate: false - xy: 1995, 761 + xy: 1995, 727 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-panel-3-icon-editor rotate: false - xy: 1995, 727 + xy: 1995, 693 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-dark-panel-3 rotate: false - xy: 1995, 727 + xy: 1995, 693 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-panel-4-icon-editor rotate: false - xy: 1995, 693 + xy: 1995, 659 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-dark-panel-4 rotate: false - xy: 1995, 693 + xy: 1995, 659 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-panel-5-icon-editor rotate: false - xy: 1995, 659 + xy: 1995, 625 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-dark-panel-5 rotate: false - xy: 1995, 659 + xy: 1995, 625 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-panel-6-icon-editor rotate: false - xy: 1995, 625 + xy: 329, 57 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-dark-panel-6 rotate: false - xy: 1995, 625 + xy: 329, 57 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 darksand-icon-editor rotate: false - xy: 331, 57 + xy: 329, 23 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-darksand1 rotate: false - xy: 331, 57 + xy: 329, 23 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -7863,805 +8534,805 @@ door-large-icon-editor index: -1 dunerocks-icon-editor rotate: false - xy: 215, 13 + xy: 363, 57 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 duo-icon-editor rotate: false - xy: 249, 13 + xy: 363, 23 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-char2 rotate: false - xy: 283, 13 + xy: 579, 201 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-char3 rotate: false - xy: 317, 13 + xy: 617, 725 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-craters2 rotate: false - xy: 365, 57 + xy: 617, 691 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-craters3 rotate: false - xy: 351, 23 + xy: 651, 725 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-darksand-tainted-water1 rotate: false - xy: 617, 725 + xy: 685, 725 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-darksand-tainted-water2 rotate: false - xy: 617, 691 + xy: 617, 623 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-darksand-tainted-water3 rotate: false - xy: 651, 725 + xy: 651, 657 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-darksand-water1 rotate: false - xy: 617, 657 + xy: 685, 691 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-darksand-water2 rotate: false - xy: 651, 691 + xy: 719, 725 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-darksand-water3 rotate: false - xy: 685, 725 + xy: 617, 589 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-darksand2 rotate: false - xy: 385, 23 + xy: 617, 657 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-darksand3 rotate: false - xy: 579, 201 + xy: 651, 691 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-grass1 rotate: false - xy: 617, 623 + xy: 651, 623 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 grass-icon-editor rotate: false - xy: 617, 623 + xy: 651, 623 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-grass2 rotate: false - xy: 651, 657 + xy: 685, 657 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-grass3 rotate: false - xy: 685, 691 + xy: 719, 691 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-holostone1 rotate: false - xy: 719, 725 + xy: 753, 725 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 holostone-icon-editor rotate: false - xy: 719, 725 + xy: 753, 725 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-holostone2 rotate: false - xy: 617, 589 + xy: 651, 589 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-holostone3 rotate: false - xy: 651, 623 + xy: 685, 623 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-hotrock1 rotate: false - xy: 685, 657 + xy: 719, 657 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 hotrock-icon-editor rotate: false - xy: 685, 657 + xy: 719, 657 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-hotrock2 rotate: false - xy: 719, 691 + xy: 753, 691 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-hotrock3 rotate: false - xy: 753, 725 + xy: 685, 589 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ice-snow1 rotate: false - xy: 753, 691 + xy: 753, 623 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice-snow-icon-editor rotate: false - xy: 753, 691 + xy: 753, 623 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ice-snow2 rotate: false - xy: 685, 589 + xy: 753, 589 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ice-snow3 rotate: false - xy: 719, 623 + xy: 617, 555 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ice1 rotate: false - xy: 651, 589 + xy: 719, 623 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice-icon-editor rotate: false - xy: 651, 589 + xy: 719, 623 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ice2 rotate: false - xy: 685, 623 + xy: 753, 657 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ice3 rotate: false - xy: 719, 657 + xy: 719, 589 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ignarock1 rotate: false - xy: 753, 657 + xy: 651, 555 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ignarock-icon-editor rotate: false - xy: 753, 657 + xy: 651, 555 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ignarock2 rotate: false - xy: 719, 589 + xy: 685, 555 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ignarock3 rotate: false - xy: 753, 623 + xy: 719, 555 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-magmarock1 rotate: false - xy: 753, 589 + xy: 753, 555 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 magmarock-icon-editor rotate: false - xy: 753, 589 + xy: 753, 555 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-magmarock2 rotate: false - xy: 617, 555 + xy: 787, 659 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-magmarock3 rotate: false - xy: 651, 555 + xy: 787, 625 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-metal-floor rotate: false - xy: 685, 555 + xy: 787, 591 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-icon-editor rotate: false - xy: 685, 555 + xy: 787, 591 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-metal-floor-2 rotate: false - xy: 719, 555 + xy: 821, 659 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-2-icon-editor rotate: false - xy: 719, 555 + xy: 821, 659 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-metal-floor-3 rotate: false - xy: 753, 555 + xy: 821, 625 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-3-icon-editor rotate: false - xy: 753, 555 + xy: 821, 625 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-metal-floor-5 rotate: false - xy: 787, 659 + xy: 787, 557 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-5-icon-editor rotate: false - xy: 787, 659 + xy: 787, 557 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-metal-floor-damaged1 rotate: false - xy: 787, 625 + xy: 821, 591 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-damaged-icon-editor rotate: false - xy: 787, 625 + xy: 821, 591 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-metal-floor-damaged2 rotate: false - xy: 787, 591 + xy: 855, 659 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-metal-floor-damaged3 rotate: false - xy: 821, 659 + xy: 855, 625 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-moss1 rotate: false - xy: 821, 625 + xy: 821, 557 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 moss-icon-editor rotate: false - xy: 821, 625 + xy: 821, 557 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-moss2 rotate: false - xy: 787, 557 + xy: 855, 591 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-moss3 rotate: false - xy: 821, 591 + xy: 889, 659 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-coal1 rotate: false - xy: 855, 659 + xy: 889, 625 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-coal2 rotate: false - xy: 855, 625 + xy: 855, 557 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-coal3 rotate: false - xy: 821, 557 + xy: 889, 591 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-copper1 rotate: false - xy: 855, 591 + xy: 923, 659 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-copper2 rotate: false - xy: 889, 659 + xy: 923, 625 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-copper3 rotate: false - xy: 889, 625 + xy: 889, 557 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-lead1 rotate: false - xy: 855, 557 + xy: 923, 591 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-lead2 rotate: false - xy: 889, 591 + xy: 957, 659 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-lead3 rotate: false - xy: 923, 659 + xy: 957, 625 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-scrap1 rotate: false - xy: 923, 625 + xy: 923, 557 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-scrap2 rotate: false - xy: 889, 557 + xy: 957, 591 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-scrap3 rotate: false - xy: 923, 591 + xy: 957, 557 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-thorium1 rotate: false - xy: 957, 659 + xy: 991, 625 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-thorium2 rotate: false - xy: 957, 625 + xy: 991, 591 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-thorium3 rotate: false - xy: 923, 557 + xy: 1025, 625 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-titanium1 rotate: false - xy: 957, 591 + xy: 991, 557 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-titanium2 rotate: false - xy: 957, 557 + xy: 1025, 591 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-titanium3 rotate: false - xy: 991, 625 + xy: 1059, 625 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-pebbles1 rotate: false - xy: 991, 591 + xy: 1025, 557 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-pebbles2 rotate: false - xy: 1025, 625 + xy: 1059, 591 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-pebbles3 rotate: false - xy: 991, 557 + xy: 1093, 625 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-salt rotate: false - xy: 1025, 591 + xy: 1059, 557 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 salt-icon-editor rotate: false - xy: 1025, 591 + xy: 1059, 557 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-sand-water1 rotate: false - xy: 1093, 625 + xy: 1127, 591 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-sand-water2 rotate: false - xy: 1059, 557 + xy: 1161, 625 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-sand-water3 rotate: false - xy: 1093, 591 + xy: 1127, 557 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-sand1 rotate: false - xy: 1059, 625 + xy: 1093, 591 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sand-icon-editor rotate: false - xy: 1059, 625 + xy: 1093, 591 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-sand2 rotate: false - xy: 1025, 557 + xy: 1127, 625 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-sand3 rotate: false - xy: 1059, 591 + xy: 1093, 557 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-shale1 rotate: false - xy: 1127, 625 + xy: 1161, 591 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shale-icon-editor rotate: false - xy: 1127, 625 + xy: 1161, 591 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-shale2 rotate: false - xy: 1093, 557 + xy: 1195, 625 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-shale3 rotate: false - xy: 1127, 591 + xy: 1161, 557 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-slag rotate: false - xy: 1161, 625 + xy: 1195, 591 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 slag-icon-editor rotate: false - xy: 1161, 625 + xy: 1195, 591 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-snow1 rotate: false - xy: 1127, 557 + xy: 1229, 625 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-snow2 rotate: false - xy: 1161, 591 + xy: 1195, 557 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-snow3 rotate: false - xy: 1195, 625 + xy: 1229, 591 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-spawn rotate: false - xy: 1161, 557 + xy: 1263, 625 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-spore-moss1 rotate: false - xy: 1195, 591 + xy: 1229, 557 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spore-moss-icon-editor rotate: false - xy: 1195, 591 + xy: 1229, 557 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-spore-moss2 rotate: false - xy: 1229, 625 + xy: 1263, 591 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-spore-moss3 rotate: false - xy: 1195, 557 + xy: 1297, 625 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-stone1 rotate: false - xy: 1229, 591 + xy: 1263, 557 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 stone-icon-editor rotate: false - xy: 1229, 591 + xy: 1263, 557 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-stone2 rotate: false - xy: 1263, 625 + xy: 1297, 591 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-stone3 rotate: false - xy: 1229, 557 + xy: 1331, 625 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-tainted-water rotate: false - xy: 1263, 591 + xy: 1297, 557 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 tainted-water-icon-editor rotate: false - xy: 1263, 591 + xy: 1297, 557 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-tar rotate: false - xy: 1297, 625 + xy: 1331, 591 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 tar-icon-editor rotate: false - xy: 1297, 625 + xy: 1331, 591 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-tendrils1 rotate: false - xy: 1263, 557 + xy: 1365, 625 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-tendrils2 rotate: false - xy: 1297, 591 + xy: 1331, 557 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-tendrils3 rotate: false - xy: 1331, 625 + xy: 1365, 591 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-water rotate: false - xy: 1297, 557 + xy: 1399, 625 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 water-icon-editor rotate: false - xy: 1297, 557 + xy: 1399, 625 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -8703,21 +9374,21 @@ ground-factory-icon-editor index: -1 hail-icon-editor rotate: false - xy: 1331, 591 + xy: 1365, 557 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 icerocks-icon-editor rotate: false - xy: 1365, 625 + xy: 1399, 591 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 illuminator-icon-editor rotate: false - xy: 1331, 557 + xy: 1433, 625 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -8731,35 +9402,35 @@ impact-reactor-icon-editor index: -1 incinerator-icon-editor rotate: false - xy: 1365, 591 + xy: 1399, 557 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 inverted-sorter-icon-editor rotate: false - xy: 1399, 625 + xy: 1433, 591 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-source-icon-editor rotate: false - xy: 1365, 557 + xy: 1467, 625 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-void-icon-editor rotate: false - xy: 1399, 591 + xy: 1433, 557 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 junction-icon-editor rotate: false - xy: 1433, 625 + xy: 1467, 591 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -8808,21 +9479,21 @@ launch-pad-large-icon-editor index: -1 liquid-junction-icon-editor rotate: false - xy: 1399, 557 + xy: 1501, 625 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-router-icon-editor rotate: false - xy: 1433, 591 + xy: 1467, 557 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-source-icon-editor rotate: false - xy: 1467, 625 + xy: 1501, 591 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -8836,7 +9507,7 @@ liquid-tank-icon-editor index: -1 liquid-void-icon-editor rotate: false - xy: 1433, 557 + xy: 1535, 625 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -8864,7 +9535,7 @@ mechanical-drill-icon-editor index: -1 mechanical-pump-icon-editor rotate: false - xy: 1467, 591 + xy: 1501, 557 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -8878,7 +9549,7 @@ meltdown-icon-editor index: -1 melter-icon-editor rotate: false - xy: 1501, 625 + xy: 1535, 591 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -8892,14 +9563,14 @@ mend-projector-icon-editor index: -1 mender-icon-editor rotate: false - xy: 1467, 557 + xy: 1535, 557 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 message-icon-editor rotate: false - xy: 1501, 591 + xy: 617, 521 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -8941,11 +9612,18 @@ overdrive-projector-icon-editor index: -1 overflow-gate-icon-editor rotate: false - xy: 1535, 625 + xy: 617, 487 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +parallax-icon-editor + rotate: false + xy: 1929, 757 + size: 64, 64 + orig: 64, 64 + offset: 0, 0 + index: -1 payload-router-icon-editor rotate: false xy: 1789, 823 @@ -8955,42 +9633,42 @@ payload-router-icon-editor index: -1 pebbles-icon-editor rotate: false - xy: 1501, 557 + xy: 651, 521 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conduit-icon-editor rotate: false - xy: 1535, 591 + xy: 617, 453 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conveyor-icon-editor rotate: false - xy: 1535, 557 + xy: 651, 487 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-wall-icon-editor rotate: false - xy: 617, 521 + xy: 685, 521 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-wall-large-icon-editor rotate: false - xy: 1929, 757 + xy: 551, 467 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 phase-weaver-icon-editor rotate: false - xy: 551, 467 + xy: 1005, 659 size: 64, 64 orig: 64, 64 offset: 0, 0 @@ -9004,105 +9682,105 @@ pine-icon-editor index: -1 plastanium-compressor-icon-editor rotate: false - xy: 1005, 659 + xy: 1071, 659 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 plastanium-conveyor-icon-editor rotate: false - xy: 617, 487 + xy: 617, 419 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plastanium-wall-icon-editor rotate: false - xy: 651, 521 + xy: 651, 453 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plastanium-wall-large-icon-editor rotate: false - xy: 1071, 659 + xy: 1137, 659 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 plated-conduit-icon-editor rotate: false - xy: 617, 453 + xy: 685, 487 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pneumatic-drill-icon-editor rotate: false - xy: 1137, 659 + xy: 1203, 659 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 power-node-icon-editor rotate: false - xy: 651, 487 + xy: 719, 521 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 power-node-large-icon-editor rotate: false - xy: 1203, 659 + xy: 1269, 659 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 power-source-icon-editor rotate: false - xy: 685, 521 + xy: 651, 419 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 power-void-icon-editor rotate: false - xy: 617, 419 + xy: 685, 453 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-icon-editor rotate: false - xy: 651, 453 + xy: 719, 487 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulverizer-icon-editor rotate: false - xy: 685, 487 + xy: 753, 521 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pyratite-mixer-icon-editor rotate: false - xy: 1269, 659 + xy: 1335, 659 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 repair-point-icon-editor rotate: false - xy: 719, 521 + xy: 787, 523 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 resupply-point-icon-editor rotate: false - xy: 1335, 659 + xy: 1401, 659 size: 64, 64 orig: 64, 64 offset: 0, 0 @@ -9123,77 +9801,77 @@ rock-icon-editor index: -1 rocks-icon-editor rotate: false - xy: 651, 419 + xy: 685, 419 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 rotary-pump-icon-editor rotate: false - xy: 1401, 659 + xy: 1467, 659 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 router-icon-editor rotate: false - xy: 685, 453 + xy: 719, 453 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 rtg-generator-icon-editor rotate: false - xy: 1467, 659 + xy: 1533, 659 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 saltrocks-icon-editor rotate: false - xy: 719, 487 + xy: 753, 487 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 salvo-icon-editor rotate: false - xy: 1533, 659 + xy: 1599, 691 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 sand-boulder-icon-editor rotate: false - xy: 753, 521 + xy: 787, 489 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sand-water-icon-editor rotate: false - xy: 787, 523 + xy: 821, 523 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sandrocks-icon-editor rotate: false - xy: 685, 419 + xy: 719, 419 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scatter-icon-editor rotate: false - xy: 1599, 691 + xy: 1665, 691 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 scorch-icon-editor rotate: false - xy: 719, 453 + xy: 753, 453 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -9214,56 +9892,56 @@ scrap-wall-huge-icon-editor index: -1 scrap-wall-icon-editor rotate: false - xy: 753, 487 + xy: 787, 455 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap-wall-large-icon-editor rotate: false - xy: 1665, 691 + xy: 1731, 691 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 segment-icon-editor rotate: false - xy: 1731, 691 + xy: 1797, 691 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 separator-icon-editor rotate: false - xy: 1797, 691 + xy: 1863, 691 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 shale-boulder-icon-editor rotate: false - xy: 787, 489 + xy: 821, 489 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shalerocks-icon-editor rotate: false - xy: 821, 523 + xy: 855, 523 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shock-mine-icon-editor rotate: false - xy: 719, 419 + xy: 753, 419 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shrubs-icon-editor rotate: false - xy: 753, 453 + xy: 787, 421 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -9277,14 +9955,14 @@ silicon-crucible-icon-editor index: -1 silicon-smelter-icon-editor rotate: false - xy: 1863, 691 + xy: 1929, 691 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 snow-icon-editor rotate: false - xy: 787, 455 + xy: 821, 455 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -9305,14 +9983,14 @@ snowrock-icon-editor index: -1 snowrocks-icon-editor rotate: false - xy: 821, 489 + xy: 855, 489 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 solar-panel-icon-editor rotate: false - xy: 855, 523 + xy: 889, 523 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -9326,14 +10004,14 @@ solar-panel-large-icon-editor index: -1 sorter-icon-editor rotate: false - xy: 753, 419 + xy: 821, 421 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spawn-icon-editor rotate: false - xy: 787, 421 + xy: 855, 455 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -9361,49 +10039,49 @@ spore-pine-icon-editor index: -1 spore-press-icon-editor rotate: false - xy: 1929, 691 + xy: 551, 401 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 sporerocks-icon-editor rotate: false - xy: 821, 455 + xy: 889, 489 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 surge-tower-icon-editor rotate: false - xy: 551, 401 + xy: 521, 335 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 surge-wall-icon-editor rotate: false - xy: 855, 489 + xy: 923, 523 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 surge-wall-large-icon-editor rotate: false - xy: 521, 335 + xy: 521, 269 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 swarmer-icon-editor rotate: false - xy: 521, 269 + xy: 1599, 625 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 tendrils-icon-editor rotate: false - xy: 889, 523 + xy: 855, 421 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -9417,7 +10095,7 @@ tetrative-reconstructor-icon-editor index: -1 thermal-generator-icon-editor rotate: false - xy: 1599, 625 + xy: 1665, 625 size: 64, 64 orig: 64, 64 offset: 0, 0 @@ -9438,14 +10116,14 @@ thorium-reactor-icon-editor index: -1 thorium-wall-icon-editor rotate: false - xy: 821, 421 + xy: 889, 455 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 thorium-wall-large-icon-editor rotate: false - xy: 1665, 625 + xy: 1731, 625 size: 64, 64 orig: 64, 64 offset: 0, 0 @@ -9459,42 +10137,42 @@ thruster-icon-editor index: -1 titanium-conveyor-icon-editor rotate: false - xy: 855, 455 + xy: 923, 489 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-wall-icon-editor rotate: false - xy: 889, 489 + xy: 957, 523 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-wall-large-icon-editor rotate: false - xy: 1731, 625 + xy: 1797, 625 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 turbine-generator-icon-editor rotate: false - xy: 1797, 625 + xy: 1863, 625 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 underflow-gate-icon-editor rotate: false - xy: 923, 523 + xy: 889, 421 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 unloader-icon-editor rotate: false - xy: 855, 421 + xy: 923, 455 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -9508,14 +10186,14 @@ vault-icon-editor index: -1 water-extractor-icon-editor rotate: false - xy: 1863, 625 + xy: 1929, 625 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 wave-icon-editor rotate: false - xy: 1929, 625 + xy: 229, 15 size: 64, 64 orig: 64, 64 offset: 0, 0 @@ -9535,7 +10213,7 @@ white-tree-icon-editor offset: 0, 0 index: -1 -sprites6.png +sprites7.png size: 2048,1024 format: rgba8888 filter: nearest,nearest @@ -9549,7 +10227,7 @@ alpha-bg index: -1 bar rotate: false - xy: 1485, 654 + xy: 719, 282 size: 27, 36 split: 9, 9, 9, 9 orig: 27, 36 @@ -9557,7 +10235,7 @@ bar index: -1 bar-top rotate: false - xy: 1456, 654 + xy: 751, 578 size: 27, 36 split: 9, 10, 9, 10 orig: 27, 36 @@ -9572,7 +10250,7 @@ block-additive-reconstructor-large index: -1 block-additive-reconstructor-medium rotate: false - xy: 881, 647 + xy: 957, 589 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -9586,7 +10264,7 @@ block-additive-reconstructor-small index: -1 block-additive-reconstructor-tiny rotate: false - xy: 301, 1 + xy: 2031, 821 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -9607,7 +10285,7 @@ block-air-factory-large index: -1 block-air-factory-medium rotate: false - xy: 881, 613 + xy: 995, 618 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -9621,7 +10299,7 @@ block-air-factory-small index: -1 block-air-factory-tiny rotate: false - xy: 319, 1 + xy: 2031, 803 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -9635,28 +10313,28 @@ block-air-factory-xlarge index: -1 block-alloy-smelter-large rotate: false - xy: 651, 574 + xy: 351, 74 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-alloy-smelter-medium rotate: false - xy: 915, 647 + xy: 1033, 647 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-alloy-smelter-small rotate: false - xy: 971, 417 + xy: 106, 2 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-alloy-smelter-tiny rotate: false - xy: 309, 698 + xy: 2031, 785 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -9670,28 +10348,28 @@ block-alloy-smelter-xlarge index: -1 block-arc-large rotate: false - xy: 351, 224 + xy: 401, 124 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-arc-medium rotate: false - xy: 881, 579 + xy: 1067, 647 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-arc-small rotate: false - xy: 1425, 626 + xy: 1953, 802 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-arc-tiny rotate: false - xy: 331, 598 + xy: 2031, 767 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -9705,28 +10383,28 @@ block-arc-xlarge index: -1 block-armored-conveyor-large rotate: false - xy: 401, 274 + xy: 451, 174 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-armored-conveyor-medium rotate: false - xy: 949, 647 + xy: 1101, 647 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-armored-conveyor-small rotate: false - xy: 1543, 666 + xy: 1953, 776 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-armored-conveyor-tiny rotate: false - xy: 937, 459 + xy: 2031, 749 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -9740,35 +10418,35 @@ block-armored-conveyor-xlarge index: -1 block-battery-large rotate: false - xy: 451, 324 + xy: 501, 224 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-battery-large-large rotate: false - xy: 501, 374 + xy: 551, 274 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-battery-large-medium rotate: false - xy: 915, 613 + xy: 1135, 647 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-battery-large-small rotate: false - xy: 106, 2 + xy: 1979, 805 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-battery-large-tiny rotate: false - xy: 132, 10 + xy: 2031, 731 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -9782,21 +10460,21 @@ block-battery-large-xlarge index: -1 block-battery-medium rotate: false - xy: 983, 647 + xy: 1169, 647 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-battery-small rotate: false - xy: 997, 417 + xy: 1979, 779 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-battery-tiny rotate: false - xy: 1291, 378 + xy: 2031, 713 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -9810,28 +10488,28 @@ block-battery-xlarge index: -1 block-blast-drill-large rotate: false - xy: 551, 424 + xy: 601, 324 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-blast-drill-medium rotate: false - xy: 949, 613 + xy: 1203, 647 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-blast-drill-small rotate: false - xy: 1543, 640 + xy: 2005, 813 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-blast-drill-tiny rotate: false - xy: 577, 322 + xy: 301, 1 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -9845,28 +10523,28 @@ block-blast-drill-xlarge index: -1 block-blast-mixer-large rotate: false - xy: 601, 474 + xy: 651, 374 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-blast-mixer-medium rotate: false - xy: 915, 579 + xy: 1237, 647 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-blast-mixer-small rotate: false - xy: 1569, 666 + xy: 2005, 787 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-blast-mixer-tiny rotate: false - xy: 603, 36 + xy: 319, 1 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -9880,28 +10558,28 @@ block-blast-mixer-xlarge index: -1 block-block-forge-large rotate: false - xy: 651, 532 + xy: 701, 424 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-block-forge-medium rotate: false - xy: 1017, 647 + xy: 1271, 647 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-block-forge-small rotate: false - xy: 1023, 417 + xy: 351, 6 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-block-forge-tiny rotate: false - xy: 811, 174 + xy: 2031, 695 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -9915,28 +10593,28 @@ block-block-forge-xlarge index: -1 block-block-loader-large rotate: false - xy: 693, 574 + xy: 351, 32 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-block-loader-medium rotate: false - xy: 983, 613 + xy: 1305, 647 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-block-loader-small rotate: false - xy: 1569, 640 + xy: 377, 6 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-block-loader-tiny rotate: false - xy: 785, 148 + xy: 309, 698 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -9950,28 +10628,28 @@ block-block-loader-xlarge index: -1 block-block-unloader-large rotate: false - xy: 351, 182 + xy: 751, 536 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-block-unloader-medium rotate: false - xy: 949, 579 + xy: 1339, 647 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-block-unloader-small rotate: false - xy: 1595, 666 + xy: 403, 6 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-block-unloader-tiny rotate: false - xy: 759, 122 + xy: 331, 598 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -9985,28 +10663,28 @@ block-block-unloader-xlarge index: -1 block-bridge-conduit-large rotate: false - xy: 693, 532 + xy: 751, 494 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-bridge-conduit-medium rotate: false - xy: 1051, 647 + xy: 1373, 647 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-bridge-conduit-small rotate: false - xy: 1049, 417 + xy: 885, 342 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-bridge-conduit-tiny rotate: false - xy: 860, 304 + xy: 132, 10 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10020,28 +10698,28 @@ block-bridge-conduit-xlarge index: -1 block-bridge-conveyor-large rotate: false - xy: 735, 574 + xy: 793, 536 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-bridge-conveyor-medium rotate: false - xy: 1017, 613 + xy: 1407, 647 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-bridge-conveyor-small rotate: false - xy: 1595, 640 + xy: 911, 330 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-bridge-conveyor-tiny rotate: false - xy: 837, 194 + xy: 1899, 770 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10055,28 +10733,28 @@ block-bridge-conveyor-xlarge index: -1 block-char-large rotate: false - xy: 351, 140 + xy: 793, 494 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-char-medium rotate: false - xy: 983, 579 + xy: 1441, 647 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-char-small rotate: false - xy: 1621, 666 + xy: 937, 325 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-char-tiny rotate: false - xy: 733, 96 + xy: 989, 11 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10090,28 +10768,28 @@ block-char-xlarge index: -1 block-cliff-large rotate: false - xy: 735, 532 + xy: 835, 536 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-cliff-medium rotate: false - xy: 1085, 647 + xy: 991, 584 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-cliff-small rotate: false - xy: 1075, 417 + xy: 885, 316 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-cliff-tiny rotate: false - xy: 681, 70 + xy: 1119, 63 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10125,28 +10803,28 @@ block-cliff-xlarge index: -1 block-cliffs-large rotate: false - xy: 351, 98 + xy: 835, 494 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-cliffs-medium rotate: false - xy: 1051, 613 + xy: 1029, 613 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-cliffs-small rotate: false - xy: 1621, 640 + xy: 911, 304 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-cliffs-tiny rotate: false - xy: 309, 680 + xy: 1145, 89 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10160,28 +10838,28 @@ block-cliffs-xlarge index: -1 block-coal-centrifuge-large rotate: false - xy: 351, 56 + xy: 751, 452 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-coal-centrifuge-medium rotate: false - xy: 1017, 579 + xy: 1063, 613 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-coal-centrifuge-small rotate: false - xy: 1647, 666 + xy: 937, 299 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-coal-centrifuge-tiny rotate: false - xy: 331, 580 + xy: 1171, 115 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10195,28 +10873,28 @@ block-coal-centrifuge-xlarge index: -1 block-combustion-generator-large rotate: false - xy: 777, 536 + xy: 793, 452 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-combustion-generator-medium rotate: false - xy: 1119, 647 + xy: 1097, 613 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-combustion-generator-small rotate: false - xy: 1101, 417 + xy: 885, 290 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-combustion-generator-tiny rotate: false - xy: 733, 78 + xy: 1197, 141 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10230,28 +10908,28 @@ block-combustion-generator-xlarge index: -1 block-conduit-large rotate: false - xy: 819, 536 + xy: 835, 452 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-conduit-medium rotate: false - xy: 1153, 660 + xy: 1131, 613 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-conduit-small rotate: false - xy: 1647, 640 + xy: 911, 278 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-conduit-tiny rotate: false - xy: 435, 4 + xy: 1223, 167 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10265,28 +10943,28 @@ block-conduit-xlarge index: -1 block-container-large rotate: false - xy: 351, 14 + xy: 743, 410 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-container-medium rotate: false - xy: 1085, 613 + xy: 1165, 613 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-container-small rotate: false - xy: 1673, 666 + xy: 937, 273 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-container-tiny rotate: false - xy: 453, 4 + xy: 1249, 193 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10300,28 +10978,28 @@ block-container-xlarge index: -1 block-conveyor-large rotate: false - xy: 861, 536 + xy: 785, 410 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-conveyor-medium rotate: false - xy: 1051, 579 + xy: 1199, 613 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-conveyor-small rotate: false - xy: 1673, 640 + xy: 885, 264 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-conveyor-tiny rotate: false - xy: 471, 4 + xy: 1275, 219 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10335,35 +11013,35 @@ block-conveyor-xlarge index: -1 block-copper-wall-large rotate: false - xy: 651, 490 + xy: 827, 410 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-copper-wall-large-large rotate: false - xy: 693, 490 + xy: 701, 382 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-copper-wall-large-medium rotate: false - xy: 1119, 613 + xy: 1233, 613 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-copper-wall-large-small rotate: false - xy: 1699, 666 + xy: 911, 252 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-copper-wall-large-tiny rotate: false - xy: 489, 4 + xy: 1327, 255 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10377,21 +11055,21 @@ block-copper-wall-large-xlarge index: -1 block-copper-wall-medium rotate: false - xy: 1153, 626 + xy: 1267, 613 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-copper-wall-small rotate: false - xy: 1699, 640 + xy: 937, 247 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-copper-wall-tiny rotate: false - xy: 629, 44 + xy: 1353, 281 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10405,28 +11083,28 @@ block-copper-wall-xlarge index: -1 block-core-foundation-large rotate: false - xy: 735, 490 + xy: 743, 368 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-core-foundation-medium rotate: false - xy: 1085, 579 + xy: 1301, 613 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-core-foundation-small rotate: false - xy: 1725, 666 + xy: 885, 238 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-core-foundation-tiny rotate: false - xy: 647, 44 + xy: 1431, 323 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10440,28 +11118,28 @@ block-core-foundation-xlarge index: -1 block-core-nucleus-large rotate: false - xy: 777, 494 + xy: 785, 368 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-core-nucleus-medium rotate: false - xy: 1119, 579 + xy: 1335, 613 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-core-nucleus-small rotate: false - xy: 1725, 640 + xy: 911, 226 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-core-nucleus-tiny rotate: false - xy: 665, 44 + xy: 309, 680 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10475,28 +11153,28 @@ block-core-nucleus-xlarge index: -1 block-core-shard-large rotate: false - xy: 819, 494 + xy: 827, 368 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-core-shard-medium rotate: false - xy: 1153, 592 + xy: 1369, 613 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-core-shard-small rotate: false - xy: 1751, 666 + xy: 937, 221 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-core-shard-tiny rotate: false - xy: 811, 156 + xy: 331, 580 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10510,28 +11188,28 @@ block-core-shard-xlarge index: -1 block-craters-large rotate: false - xy: 861, 494 + xy: 393, 74 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-craters-medium rotate: false - xy: 903, 545 + xy: 1403, 613 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-craters-small rotate: false - xy: 1751, 640 + xy: 885, 212 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-craters-tiny rotate: false - xy: 829, 174 + xy: 1007, 11 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10545,28 +11223,28 @@ block-craters-xlarge index: -1 block-cryofluidmixer-large rotate: false - xy: 393, 224 + xy: 393, 32 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-cryofluidmixer-medium rotate: false - xy: 937, 545 + xy: 1437, 613 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-cryofluidmixer-small rotate: false - xy: 1777, 666 + xy: 911, 200 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-cryofluidmixer-tiny rotate: false - xy: 829, 156 + xy: 1119, 45 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10580,28 +11258,28 @@ block-cryofluidmixer-xlarge index: -1 block-cultivator-large rotate: false - xy: 393, 182 + xy: 443, 124 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-cultivator-medium rotate: false - xy: 971, 545 + xy: 1025, 579 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-cultivator-small rotate: false - xy: 1777, 640 + xy: 937, 195 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-cultivator-tiny rotate: false - xy: 785, 130 + xy: 1449, 323 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10615,28 +11293,28 @@ block-cultivator-xlarge index: -1 block-cyclone-large rotate: false - xy: 393, 140 + xy: 435, 82 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-cyclone-medium rotate: false - xy: 1005, 545 + xy: 1059, 579 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-cyclone-small rotate: false - xy: 1803, 666 + xy: 885, 186 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-cyclone-tiny rotate: false - xy: 803, 138 + xy: 1025, 11 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10650,28 +11328,28 @@ block-cyclone-xlarge index: -1 block-dark-metal-large rotate: false - xy: 393, 98 + xy: 435, 40 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-dark-metal-medium rotate: false - xy: 903, 511 + xy: 1093, 579 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-metal-small rotate: false - xy: 1803, 640 + xy: 911, 174 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-dark-metal-tiny rotate: false - xy: 821, 138 + xy: 1467, 323 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10685,28 +11363,28 @@ block-dark-metal-xlarge index: -1 block-dark-panel-1-large rotate: false - xy: 393, 56 + xy: 493, 174 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-dark-panel-1-medium rotate: false - xy: 937, 511 + xy: 1127, 579 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-panel-1-small rotate: false - xy: 1829, 666 + xy: 937, 169 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-dark-panel-1-tiny rotate: false - xy: 759, 104 + xy: 1043, 11 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10720,28 +11398,28 @@ block-dark-panel-1-xlarge index: -1 block-dark-panel-2-large rotate: false - xy: 393, 14 + xy: 485, 132 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-dark-panel-2-medium rotate: false - xy: 971, 511 + xy: 1161, 579 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-panel-2-small rotate: false - xy: 1829, 640 + xy: 885, 160 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-dark-panel-2-tiny rotate: false - xy: 777, 112 + xy: 1061, 11 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10755,28 +11433,28 @@ block-dark-panel-2-xlarge index: -1 block-dark-panel-3-large rotate: false - xy: 443, 274 + xy: 543, 224 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-dark-panel-3-medium rotate: false - xy: 1005, 511 + xy: 1195, 579 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-panel-3-small rotate: false - xy: 1855, 666 + xy: 911, 148 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-dark-panel-3-tiny rotate: false - xy: 751, 86 + xy: 1079, 11 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10790,28 +11468,28 @@ block-dark-panel-3-xlarge index: -1 block-dark-panel-4-large rotate: false - xy: 435, 232 + xy: 535, 182 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-dark-panel-4-medium rotate: false - xy: 1039, 545 + xy: 1229, 579 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-panel-4-small rotate: false - xy: 1855, 640 + xy: 937, 143 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-dark-panel-4-tiny rotate: false - xy: 855, 194 + xy: 1097, 11 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10825,28 +11503,28 @@ block-dark-panel-4-xlarge index: -1 block-dark-panel-5-large rotate: false - xy: 435, 190 + xy: 593, 274 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-dark-panel-5-medium rotate: false - xy: 1039, 511 + xy: 1263, 579 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-panel-5-small rotate: false - xy: 1881, 666 + xy: 885, 134 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-dark-panel-5-tiny rotate: false - xy: 847, 176 + xy: 1379, 297 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10860,28 +11538,28 @@ block-dark-panel-5-xlarge index: -1 block-dark-panel-6-large rotate: false - xy: 435, 148 + xy: 585, 232 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-dark-panel-6-medium rotate: false - xy: 1073, 545 + xy: 1297, 579 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-panel-6-small rotate: false - xy: 1881, 640 + xy: 911, 122 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-dark-panel-6-tiny rotate: false - xy: 847, 158 + xy: 1397, 297 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10895,49 +11573,49 @@ block-dark-panel-6-xlarge index: -1 block-darksand-large rotate: false - xy: 435, 106 + xy: 643, 324 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-darksand-medium rotate: false - xy: 1073, 511 + xy: 1331, 579 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-darksand-small rotate: false - xy: 1907, 666 + xy: 937, 117 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-darksand-tainted-water-large rotate: false - xy: 435, 64 + xy: 635, 282 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-darksand-tainted-water-medium rotate: false - xy: 1107, 545 + xy: 1365, 579 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-darksand-tainted-water-small rotate: false - xy: 1907, 640 + xy: 885, 108 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-darksand-tainted-water-tiny rotate: false - xy: 683, 52 + xy: 1119, 27 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -10951,35 +11629,35 @@ block-darksand-tainted-water-xlarge index: -1 block-darksand-tiny rotate: false - xy: 803, 120 + xy: 1415, 297 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-darksand-water-large rotate: false - xy: 435, 22 + xy: 869, 410 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-darksand-water-medium rotate: false - xy: 1107, 511 + xy: 1399, 579 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-darksand-water-small rotate: false - xy: 1933, 666 + xy: 911, 96 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-darksand-water-tiny rotate: false - xy: 821, 120 + xy: 1301, 234 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11000,28 +11678,28 @@ block-darksand-xlarge index: -1 block-data-processor-large rotate: false - xy: 493, 324 + xy: 869, 368 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-data-processor-medium rotate: false - xy: 1979, 899 + xy: 1433, 579 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-data-processor-small rotate: false - xy: 1933, 640 + xy: 937, 91 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-data-processor-tiny rotate: false - xy: 839, 138 + xy: 2025, 677 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11035,28 +11713,28 @@ block-data-processor-xlarge index: -1 block-deepwater-large rotate: false - xy: 485, 282 + xy: 477, 82 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-deepwater-medium rotate: false - xy: 2013, 907 + xy: 1979, 899 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-deepwater-small rotate: false - xy: 1005, 391 + xy: 885, 82 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-deepwater-tiny rotate: false - xy: 839, 120 + xy: 2025, 659 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11070,28 +11748,28 @@ block-deepwater-xlarge index: -1 block-differential-generator-large rotate: false - xy: 543, 374 + xy: 477, 40 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-differential-generator-medium rotate: false - xy: 937, 477 + xy: 2013, 907 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-differential-generator-small rotate: false - xy: 1005, 365 + xy: 911, 70 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-differential-generator-tiny rotate: false - xy: 777, 94 + xy: 1115, 9 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11105,28 +11783,28 @@ block-differential-generator-xlarge index: -1 block-diode-large rotate: false - xy: 535, 332 + xy: 527, 132 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-diode-medium rotate: false - xy: 971, 477 + xy: 881, 560 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-diode-small rotate: false - xy: 1031, 391 + xy: 937, 65 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-diode-tiny rotate: false - xy: 795, 102 + xy: 1641, 708 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11140,28 +11818,28 @@ block-diode-xlarge index: -1 block-disassembler-large rotate: false - xy: 593, 424 + xy: 519, 90 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-disassembler-medium rotate: false - xy: 1005, 477 + xy: 915, 560 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-disassembler-small rotate: false - xy: 1005, 339 + xy: 885, 56 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-disassembler-tiny rotate: false - xy: 813, 102 + xy: 1433, 305 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11175,28 +11853,28 @@ block-disassembler-xlarge index: -1 block-distributor-large rotate: false - xy: 585, 382 + xy: 519, 48 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-distributor-medium rotate: false - xy: 1039, 477 + xy: 877, 526 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-distributor-small rotate: false - xy: 1031, 365 + xy: 855, 30 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-distributor-tiny rotate: false - xy: 831, 102 + xy: 1451, 305 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11210,35 +11888,35 @@ block-distributor-xlarge index: -1 block-door-large rotate: false - xy: 643, 448 + xy: 577, 182 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-door-large-large rotate: false - xy: 685, 448 + xy: 569, 140 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-door-large-medium rotate: false - xy: 1073, 477 + xy: 911, 526 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-door-large-small rotate: false - xy: 1057, 391 + xy: 881, 30 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-door-large-tiny rotate: false - xy: 751, 68 + xy: 1469, 305 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11252,21 +11930,21 @@ block-door-large-xlarge index: -1 block-door-medium rotate: false - xy: 1107, 477 + xy: 877, 492 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-door-small rotate: false - xy: 1031, 339 + xy: 885, 4 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-door-tiny rotate: false - xy: 733, 60 + xy: 1487, 302 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11280,28 +11958,28 @@ block-door-xlarge index: -1 block-dunerocks-large rotate: false - xy: 727, 448 + xy: 627, 232 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-dunerocks-medium rotate: false - xy: 1195, 702 + xy: 911, 492 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dunerocks-small rotate: false - xy: 1057, 365 + xy: 911, 44 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-dunerocks-tiny rotate: false - xy: 769, 76 + xy: 1505, 302 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11315,28 +11993,28 @@ block-dunerocks-xlarge index: -1 block-duo-large rotate: false - xy: 635, 406 + xy: 619, 190 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-duo-medium rotate: false - xy: 1229, 702 + xy: 877, 458 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-duo-small rotate: false - xy: 1083, 391 + xy: 937, 39 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-duo-tiny rotate: false - xy: 865, 176 + xy: 1523, 302 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11350,28 +12028,28 @@ block-duo-xlarge index: -1 block-exponential-reconstructor-large rotate: false - xy: 677, 406 + xy: 677, 282 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-exponential-reconstructor-medium rotate: false - xy: 1363, 828 + xy: 911, 458 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-exponential-reconstructor-small rotate: false - xy: 1057, 339 + xy: 911, 18 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-exponential-reconstructor-tiny rotate: false - xy: 865, 158 + xy: 1541, 302 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11385,28 +12063,28 @@ block-exponential-reconstructor-xlarge index: -1 block-force-projector-large rotate: false - xy: 719, 406 + xy: 669, 240 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-force-projector-medium rotate: false - xy: 1397, 828 + xy: 911, 424 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-force-projector-small rotate: false - xy: 1083, 365 + xy: 937, 13 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-force-projector-tiny rotate: false - xy: 857, 140 + xy: 1559, 302 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11420,28 +12098,28 @@ block-force-projector-xlarge index: -1 block-fuse-large rotate: false - xy: 627, 364 + xy: 561, 90 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-fuse-medium rotate: false - xy: 1431, 828 + xy: 911, 390 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-fuse-small rotate: false - xy: 1083, 339 + xy: 1953, 750 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-fuse-tiny rotate: false - xy: 857, 122 + xy: 1577, 302 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11455,28 +12133,28 @@ block-fuse-xlarge index: -1 block-graphite-press-large rotate: false - xy: 669, 364 + xy: 561, 48 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-graphite-press-medium rotate: false - xy: 1465, 828 + xy: 911, 356 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-graphite-press-small rotate: false - xy: 1959, 666 + xy: 1979, 753 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-graphite-press-tiny rotate: false - xy: 683, 34 + xy: 1595, 302 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11490,28 +12168,28 @@ block-graphite-press-xlarge index: -1 block-grass-large rotate: false - xy: 711, 364 + xy: 519, 6 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-grass-medium rotate: false - xy: 1499, 828 + xy: 949, 555 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-grass-small rotate: false - xy: 1959, 640 + xy: 2005, 761 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-grass-tiny rotate: false - xy: 795, 84 + xy: 687, 4 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11525,28 +12203,28 @@ block-grass-xlarge index: -1 block-ground-factory-large rotate: false - xy: 585, 340 + xy: 561, 6 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ground-factory-medium rotate: false - xy: 1533, 828 + xy: 945, 521 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ground-factory-small rotate: false - xy: 1109, 391 + xy: 963, 320 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ground-factory-tiny rotate: false - xy: 813, 84 + xy: 705, 4 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11560,28 +12238,28 @@ block-ground-factory-xlarge index: -1 block-hail-large rotate: false - xy: 627, 322 + xy: 611, 140 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-hail-medium rotate: false - xy: 1567, 828 + xy: 945, 487 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-hail-small rotate: false - xy: 1109, 365 + xy: 963, 294 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-hail-tiny rotate: false - xy: 831, 84 + xy: 723, 4 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11595,28 +12273,28 @@ block-hail-xlarge index: -1 block-holostone-large rotate: false - xy: 669, 322 + xy: 603, 98 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-holostone-medium rotate: false - xy: 1601, 828 + xy: 945, 453 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-holostone-small rotate: false - xy: 1109, 339 + xy: 963, 268 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-holostone-tiny rotate: false - xy: 849, 102 + xy: 741, 4 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11630,28 +12308,28 @@ block-holostone-xlarge index: -1 block-hotrock-large rotate: false - xy: 711, 322 + xy: 603, 56 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-hotrock-medium rotate: false - xy: 1635, 828 + xy: 945, 419 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-hotrock-small rotate: false - xy: 1135, 396 + xy: 963, 242 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-hotrock-tiny rotate: false - xy: 849, 84 + xy: 1137, 63 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11665,49 +12343,49 @@ block-hotrock-xlarge index: -1 block-ice-large rotate: false - xy: 477, 232 + xy: 603, 14 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ice-medium rotate: false - xy: 1669, 828 + xy: 945, 385 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ice-small rotate: false - xy: 1135, 370 + xy: 963, 216 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ice-snow-large rotate: false - xy: 477, 190 + xy: 661, 190 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ice-snow-medium rotate: false - xy: 1703, 828 + xy: 945, 351 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ice-snow-small rotate: false - xy: 1135, 344 + xy: 963, 190 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ice-snow-tiny rotate: false - xy: 751, 50 + xy: 1137, 45 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11721,7 +12399,7 @@ block-ice-snow-xlarge index: -1 block-ice-tiny rotate: false - xy: 769, 58 + xy: 1137, 27 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11735,28 +12413,28 @@ block-ice-xlarge index: -1 block-icerocks-large rotate: false - xy: 477, 148 + xy: 653, 148 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-icerocks-medium rotate: false - xy: 1737, 828 + xy: 983, 550 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-icerocks-small rotate: false - xy: 1161, 396 + xy: 963, 164 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icerocks-tiny rotate: false - xy: 787, 66 + xy: 1133, 9 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11770,28 +12448,28 @@ block-icerocks-xlarge index: -1 block-ignarock-large rotate: false - xy: 477, 106 + xy: 711, 240 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ignarock-medium rotate: false - xy: 1771, 828 + xy: 979, 516 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ignarock-small rotate: false - xy: 1161, 370 + xy: 963, 138 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ignarock-tiny rotate: false - xy: 805, 66 + xy: 1163, 89 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11805,28 +12483,28 @@ block-ignarock-xlarge index: -1 block-illuminator-large rotate: false - xy: 477, 64 + xy: 703, 198 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-illuminator-medium rotate: false - xy: 1805, 828 + xy: 979, 482 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-illuminator-small rotate: false - xy: 1161, 344 + xy: 963, 112 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-illuminator-tiny rotate: false - xy: 823, 66 + xy: 1155, 71 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11840,28 +12518,28 @@ block-illuminator-xlarge index: -1 block-impact-reactor-large rotate: false - xy: 477, 22 + xy: 645, 98 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-impact-reactor-medium rotate: false - xy: 1839, 828 + xy: 979, 448 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-impact-reactor-small rotate: false - xy: 1187, 396 + xy: 963, 86 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-impact-reactor-tiny rotate: false - xy: 841, 66 + xy: 1155, 53 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11875,28 +12553,28 @@ block-impact-reactor-xlarge index: -1 block-incinerator-large rotate: false - xy: 769, 448 + xy: 645, 56 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-incinerator-medium rotate: false - xy: 1873, 828 + xy: 979, 414 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-incinerator-small rotate: false - xy: 1187, 370 + xy: 963, 60 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-incinerator-tiny rotate: false - xy: 875, 140 + xy: 1155, 35 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11910,28 +12588,28 @@ block-incinerator-xlarge index: -1 block-inverted-sorter-large rotate: false - xy: 761, 406 + xy: 645, 14 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-inverted-sorter-medium rotate: false - xy: 1907, 828 + xy: 979, 380 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-inverted-sorter-small rotate: false - xy: 1187, 344 + xy: 963, 34 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-inverted-sorter-tiny rotate: false - xy: 875, 122 + xy: 1189, 115 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11945,28 +12623,28 @@ block-inverted-sorter-xlarge index: -1 block-item-source-large rotate: false - xy: 753, 364 + xy: 695, 148 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-item-source-medium rotate: false - xy: 1941, 828 + xy: 979, 346 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-item-source-small rotate: false - xy: 1213, 396 + xy: 963, 8 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-item-source-tiny rotate: false - xy: 867, 104 + xy: 1181, 97 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -11980,28 +12658,28 @@ block-item-source-xlarge index: -1 block-item-void-large rotate: false - xy: 753, 322 + xy: 687, 106 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-item-void-medium rotate: false - xy: 1321, 786 + xy: 1017, 545 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-item-void-small rotate: false - xy: 1213, 370 + xy: 2005, 735 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-item-void-tiny rotate: false - xy: 867, 86 + xy: 1215, 141 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12015,28 +12693,28 @@ block-item-void-xlarge index: -1 block-junction-large rotate: false - xy: 811, 452 + xy: 687, 64 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-junction-medium rotate: false - xy: 1279, 744 + xy: 1051, 545 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-junction-small rotate: false - xy: 1213, 344 + xy: 1979, 727 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-junction-tiny rotate: false - xy: 769, 40 + xy: 1207, 123 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12050,28 +12728,28 @@ block-junction-xlarge index: -1 block-kiln-large rotate: false - xy: 853, 452 + xy: 687, 22 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-kiln-medium rotate: false - xy: 1153, 558 + xy: 1085, 545 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-kiln-small rotate: false - xy: 1239, 370 + xy: 2005, 709 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-kiln-tiny rotate: false - xy: 787, 48 + xy: 1241, 167 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12085,28 +12763,28 @@ block-kiln-xlarge index: -1 block-lancer-large rotate: false - xy: 527, 282 + xy: 745, 198 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-lancer-medium rotate: false - xy: 1141, 524 + xy: 1119, 545 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-lancer-small rotate: false - xy: 1239, 344 + xy: 1693, 472 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-lancer-tiny rotate: false - xy: 805, 48 + xy: 1233, 149 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12120,28 +12798,28 @@ block-lancer-xlarge index: -1 block-large-overdrive-projector-large rotate: false - xy: 519, 240 + xy: 737, 156 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-large-overdrive-projector-medium rotate: false - xy: 1141, 490 + xy: 1153, 545 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-large-overdrive-projector-small rotate: false - xy: 1265, 370 + xy: 1693, 446 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-large-overdrive-projector-tiny rotate: false - xy: 823, 48 + xy: 1267, 193 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12155,28 +12833,28 @@ block-large-overdrive-projector-xlarge index: -1 block-laser-drill-large rotate: false - xy: 519, 198 + xy: 729, 106 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-laser-drill-medium rotate: false - xy: 1141, 456 + xy: 1187, 545 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-laser-drill-small rotate: false - xy: 1265, 344 + xy: 1693, 420 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-laser-drill-tiny rotate: false - xy: 841, 48 + xy: 1259, 175 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12190,35 +12868,35 @@ block-laser-drill-xlarge index: -1 block-launch-pad-large rotate: false - xy: 519, 156 + xy: 729, 64 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-launch-pad-large-large rotate: false - xy: 519, 114 + xy: 729, 22 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-launch-pad-large-medium rotate: false - xy: 1175, 524 + xy: 1221, 545 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-launch-pad-large-small rotate: false - xy: 1015, 313 + xy: 1693, 394 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-launch-pad-large-tiny rotate: false - xy: 859, 66 + xy: 1345, 255 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12232,21 +12910,21 @@ block-launch-pad-large-xlarge index: -1 block-launch-pad-medium rotate: false - xy: 1175, 490 + xy: 1255, 545 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-launch-pad-small rotate: false - xy: 1041, 313 + xy: 1693, 368 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-launch-pad-tiny rotate: false - xy: 859, 48 + xy: 1371, 279 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12260,28 +12938,28 @@ block-launch-pad-xlarge index: -1 block-liquid-junction-large rotate: false - xy: 519, 72 + xy: 779, 156 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-liquid-junction-medium rotate: false - xy: 1175, 456 + xy: 1289, 545 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-liquid-junction-small rotate: false - xy: 1067, 313 + xy: 1693, 342 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-liquid-junction-tiny rotate: false - xy: 885, 104 + xy: 1389, 279 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12295,28 +12973,28 @@ block-liquid-junction-xlarge index: -1 block-liquid-router-large rotate: false - xy: 519, 30 + xy: 771, 114 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-liquid-router-medium rotate: false - xy: 971, 443 + xy: 1323, 545 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-liquid-router-small rotate: false - xy: 1093, 313 + xy: 1693, 316 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-liquid-router-tiny rotate: false - xy: 885, 86 + xy: 1407, 279 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12330,28 +13008,28 @@ block-liquid-router-xlarge index: -1 block-liquid-source-large rotate: false - xy: 803, 406 + xy: 771, 72 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-liquid-source-medium rotate: false - xy: 1005, 443 + xy: 1357, 545 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-liquid-source-small rotate: false - xy: 1015, 287 + xy: 1693, 290 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-liquid-source-tiny rotate: false - xy: 877, 68 + xy: 1319, 234 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12365,28 +13043,28 @@ block-liquid-source-xlarge index: -1 block-liquid-tank-large rotate: false - xy: 795, 364 + xy: 771, 30 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-liquid-tank-medium rotate: false - xy: 1039, 443 + xy: 1391, 545 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-liquid-tank-small rotate: false - xy: 1041, 287 + xy: 1691, 768 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-liquid-tank-tiny rotate: false - xy: 877, 50 + xy: 1337, 237 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12400,28 +13078,28 @@ block-liquid-tank-xlarge index: -1 block-liquid-void-large rotate: false - xy: 795, 322 + xy: 813, 114 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-liquid-void-medium rotate: false - xy: 1073, 443 + xy: 1425, 545 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-liquid-void-small rotate: false - xy: 1067, 287 + xy: 1717, 768 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-liquid-void-tiny rotate: false - xy: 787, 30 + xy: 1645, 690 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12435,28 +13113,28 @@ block-liquid-void-xlarge index: -1 block-magmarock-large rotate: false - xy: 845, 410 + xy: 813, 72 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-magmarock-medium rotate: false - xy: 1107, 443 + xy: 1013, 511 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-magmarock-small rotate: false - xy: 1093, 287 + xy: 1743, 768 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-magmarock-tiny rotate: false - xy: 805, 30 + xy: 1645, 672 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12470,28 +13148,28 @@ block-magmarock-xlarge index: -1 block-mass-conveyor-large rotate: false - xy: 895, 452 + xy: 813, 30 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-mass-conveyor-medium rotate: false - xy: 1141, 422 + xy: 1013, 477 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-mass-conveyor-small rotate: false - xy: 1119, 313 + xy: 1769, 768 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-mass-conveyor-tiny rotate: false - xy: 823, 30 + xy: 1645, 654 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12505,28 +13183,28 @@ block-mass-conveyor-xlarge index: -1 block-mass-driver-large rotate: false - xy: 887, 410 + xy: 821, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-mass-driver-medium rotate: false - xy: 1175, 422 + xy: 1047, 511 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-mass-driver-small rotate: false - xy: 1119, 287 + xy: 1795, 768 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-mass-driver-tiny rotate: false - xy: 841, 30 + xy: 1645, 636 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12540,28 +13218,28 @@ block-mass-driver-xlarge index: -1 block-mechanical-drill-large rotate: false - xy: 561, 240 + xy: 863, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-mechanical-drill-medium rotate: false - xy: 1979, 865 + xy: 1013, 443 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-mechanical-drill-small rotate: false - xy: 1145, 318 + xy: 1687, 742 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-mechanical-drill-tiny rotate: false - xy: 859, 30 + xy: 1645, 618 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12575,28 +13253,28 @@ block-mechanical-drill-xlarge index: -1 block-mechanical-pump-large rotate: false - xy: 561, 198 + xy: 905, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-mechanical-pump-medium rotate: false - xy: 2013, 873 + xy: 1047, 477 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-mechanical-pump-small rotate: false - xy: 1145, 292 + xy: 1713, 742 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-mechanical-pump-tiny rotate: false - xy: 877, 32 + xy: 1645, 600 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12610,28 +13288,28 @@ block-mechanical-pump-xlarge index: -1 block-meltdown-large rotate: false - xy: 561, 156 + xy: 947, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-meltdown-medium rotate: false - xy: 1975, 831 + xy: 1081, 511 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-meltdown-small rotate: false - xy: 1171, 318 + xy: 1739, 742 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-meltdown-tiny rotate: false - xy: 895, 68 + xy: 1433, 287 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12645,28 +13323,28 @@ block-meltdown-xlarge index: -1 block-melter-large rotate: false - xy: 561, 114 + xy: 989, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-melter-medium rotate: false - xy: 1263, 702 + xy: 1013, 409 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-melter-small rotate: false - xy: 1171, 292 + xy: 1765, 742 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-melter-tiny rotate: false - xy: 895, 50 + xy: 1451, 287 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12680,28 +13358,28 @@ block-melter-xlarge index: -1 block-mend-projector-large rotate: false - xy: 561, 72 + xy: 1031, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-mend-projector-medium rotate: false - xy: 2013, 839 + xy: 1047, 443 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-mend-projector-small rotate: false - xy: 1197, 318 + xy: 1791, 742 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-mend-projector-tiny rotate: false - xy: 895, 32 + xy: 1469, 287 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12715,28 +13393,28 @@ block-mend-projector-xlarge index: -1 block-mender-large rotate: false - xy: 561, 30 + xy: 1073, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-mender-medium rotate: false - xy: 1297, 710 + xy: 1081, 477 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-mender-small rotate: false - xy: 1197, 292 + xy: 1821, 762 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-mender-tiny rotate: false - xy: 1451, 634 + xy: 1487, 284 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12750,28 +13428,28 @@ block-mender-xlarge index: -1 block-message-large rotate: false - xy: 837, 364 + xy: 1115, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-message-medium rotate: false - xy: 1313, 744 + xy: 1115, 511 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-message-small rotate: false - xy: 1223, 318 + xy: 1847, 762 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-message-tiny rotate: false - xy: 1469, 636 + xy: 1505, 284 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12785,28 +13463,28 @@ block-message-xlarge index: -1 block-metal-floor-2-large rotate: false - xy: 837, 322 + xy: 1157, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-metal-floor-2-medium rotate: false - xy: 1331, 710 + xy: 1013, 375 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-metal-floor-2-small rotate: false - xy: 1223, 292 + xy: 1873, 762 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-metal-floor-2-tiny rotate: false - xy: 1487, 636 + xy: 1523, 284 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12820,28 +13498,28 @@ block-metal-floor-2-xlarge index: -1 block-metal-floor-3-large rotate: false - xy: 879, 368 + xy: 1199, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-metal-floor-3-medium rotate: false - xy: 1297, 676 + xy: 1047, 409 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-metal-floor-3-small rotate: false - xy: 1249, 318 + xy: 1817, 736 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-metal-floor-3-tiny rotate: false - xy: 1451, 616 + xy: 1541, 284 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12855,28 +13533,28 @@ block-metal-floor-3-xlarge index: -1 block-metal-floor-5-large rotate: false - xy: 879, 326 + xy: 1241, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-metal-floor-5-medium rotate: false - xy: 1331, 676 + xy: 1081, 443 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-metal-floor-5-small rotate: false - xy: 1249, 292 + xy: 1843, 736 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-metal-floor-5-tiny rotate: false - xy: 1469, 618 + xy: 1559, 284 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12890,28 +13568,28 @@ block-metal-floor-5-xlarge index: -1 block-metal-floor-damaged-large rotate: false - xy: 929, 410 + xy: 1283, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-metal-floor-damaged-medium rotate: false - xy: 879, 292 + xy: 1115, 477 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-metal-floor-damaged-small rotate: false - xy: 1275, 318 + xy: 1869, 736 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-metal-floor-damaged-tiny rotate: false - xy: 1487, 618 + xy: 1577, 284 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12925,28 +13603,28 @@ block-metal-floor-damaged-xlarge index: -1 block-metal-floor-large rotate: false - xy: 921, 368 + xy: 1325, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-metal-floor-medium rotate: false - xy: 913, 292 + xy: 1149, 511 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-metal-floor-small rotate: false - xy: 1275, 292 + xy: 1649, 726 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-metal-floor-tiny rotate: false - xy: 1145, 274 + xy: 1595, 284 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12960,28 +13638,28 @@ block-metal-floor-xlarge index: -1 block-moss-large rotate: false - xy: 921, 326 + xy: 1367, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-moss-medium rotate: false - xy: 947, 292 + xy: 1047, 375 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-moss-small rotate: false - xy: 1291, 344 + xy: 1895, 736 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-moss-tiny rotate: false - xy: 1163, 274 + xy: 1173, 71 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -12995,28 +13673,28 @@ block-moss-xlarge index: -1 block-multi-press-large rotate: false - xy: 963, 368 + xy: 1409, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-multi-press-medium rotate: false - xy: 981, 292 + xy: 1081, 409 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-multi-press-small rotate: false - xy: 1317, 344 + xy: 1921, 739 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-multi-press-tiny rotate: false - xy: 1181, 274 + xy: 1173, 53 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13030,28 +13708,28 @@ block-multi-press-xlarge index: -1 block-multiplicative-reconstructor-large rotate: false - xy: 963, 326 + xy: 1451, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-multiplicative-reconstructor-medium rotate: false - xy: 2009, 805 + xy: 1115, 443 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-multiplicative-reconstructor-small rotate: false - xy: 1301, 318 + xy: 1947, 724 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-multiplicative-reconstructor-tiny rotate: false - xy: 1199, 274 + xy: 1173, 35 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13065,28 +13743,28 @@ block-multiplicative-reconstructor-xlarge index: -1 block-naval-factory-large rotate: false - xy: 821, 933 + xy: 1493, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-naval-factory-medium rotate: false - xy: 1975, 797 + xy: 1149, 477 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-naval-factory-small rotate: false - xy: 1343, 344 + xy: 1921, 713 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-naval-factory-tiny rotate: false - xy: 1217, 274 + xy: 1155, 17 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13100,28 +13778,28 @@ block-naval-factory-xlarge index: -1 block-oil-extractor-large rotate: false - xy: 863, 933 + xy: 1535, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-oil-extractor-medium rotate: false - xy: 2009, 771 + xy: 1183, 511 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-oil-extractor-small rotate: false - xy: 1301, 292 + xy: 1947, 698 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-oil-extractor-tiny rotate: false - xy: 1235, 274 + xy: 1173, 17 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13135,28 +13813,28 @@ block-oil-extractor-xlarge index: -1 block-ore-coal-large rotate: false - xy: 905, 933 + xy: 1577, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ore-coal-medium rotate: false - xy: 1187, 660 + xy: 1081, 375 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-coal-small rotate: false - xy: 1327, 318 + xy: 1973, 701 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ore-coal-tiny rotate: false - xy: 1253, 274 + xy: 1199, 97 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13170,28 +13848,28 @@ block-ore-coal-xlarge index: -1 block-ore-copper-large rotate: false - xy: 947, 933 + xy: 1619, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ore-copper-medium rotate: false - xy: 1187, 626 + xy: 1115, 409 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-copper-small rotate: false - xy: 1369, 344 + xy: 1675, 716 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ore-copper-tiny rotate: false - xy: 1271, 274 + xy: 1191, 79 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13205,28 +13883,28 @@ block-ore-copper-xlarge index: -1 block-ore-lead-large rotate: false - xy: 989, 933 + xy: 1661, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ore-lead-medium rotate: false - xy: 1187, 592 + xy: 1149, 443 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-lead-small rotate: false - xy: 1327, 292 + xy: 1701, 716 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ore-lead-tiny rotate: false - xy: 1289, 274 + xy: 1191, 61 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13240,28 +13918,28 @@ block-ore-lead-xlarge index: -1 block-ore-scrap-large rotate: false - xy: 1031, 933 + xy: 1703, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ore-scrap-medium rotate: false - xy: 1187, 558 + xy: 1183, 477 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-scrap-small rotate: false - xy: 1353, 318 + xy: 1727, 716 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ore-scrap-tiny rotate: false - xy: 1307, 274 + xy: 1191, 43 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13275,28 +13953,28 @@ block-ore-scrap-xlarge index: -1 block-ore-thorium-large rotate: false - xy: 1073, 933 + xy: 1745, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ore-thorium-medium rotate: false - xy: 1221, 668 + xy: 1217, 511 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-thorium-small rotate: false - xy: 1353, 292 + xy: 1753, 716 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ore-thorium-tiny rotate: false - xy: 1325, 274 + xy: 1191, 25 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13310,28 +13988,28 @@ block-ore-thorium-xlarge index: -1 block-ore-titanium-large rotate: false - xy: 1115, 933 + xy: 1787, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ore-titanium-medium rotate: false - xy: 1221, 634 + xy: 1115, 375 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-titanium-small rotate: false - xy: 1395, 344 + xy: 1779, 716 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ore-titanium-tiny rotate: false - xy: 1343, 274 + xy: 1225, 123 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13345,28 +14023,28 @@ block-ore-titanium-xlarge index: -1 block-overdrive-projector-large rotate: false - xy: 1157, 933 + xy: 1829, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-overdrive-projector-medium rotate: false - xy: 1255, 668 + xy: 1149, 409 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-overdrive-projector-small rotate: false - xy: 1379, 318 + xy: 1805, 710 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-overdrive-projector-tiny rotate: false - xy: 1361, 274 + xy: 1217, 105 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13380,28 +14058,28 @@ block-overdrive-projector-xlarge index: -1 block-overflow-gate-large rotate: false - xy: 1199, 933 + xy: 1871, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-overflow-gate-medium rotate: false - xy: 1221, 600 + xy: 1183, 443 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-overflow-gate-small rotate: false - xy: 1379, 292 + xy: 1831, 710 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-overflow-gate-tiny rotate: false - xy: 1379, 274 + xy: 1251, 149 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -13413,3264 +14091,3299 @@ block-overflow-gate-xlarge orig: 48, 48 offset: 0, 0 index: -1 -block-payload-router-large - rotate: false - xy: 1241, 933 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-payload-router-medium - rotate: false - xy: 1255, 634 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-payload-router-small - rotate: false - xy: 1405, 318 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-payload-router-tiny - rotate: false - xy: 1397, 274 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-payload-router-xlarge - rotate: false - xy: 301, 419 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-pebbles-large - rotate: false - xy: 1283, 933 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-pebbles-medium - rotate: false - xy: 1221, 566 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-pebbles-small - rotate: false - xy: 1405, 292 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-pebbles-tiny - rotate: false - xy: 1415, 274 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-pebbles-xlarge - rotate: false - xy: 301, 369 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-phase-conduit-large - rotate: false - xy: 1325, 933 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-phase-conduit-medium - rotate: false - xy: 1255, 600 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-phase-conduit-small - rotate: false - xy: 1543, 614 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-phase-conduit-tiny - rotate: false - xy: 1433, 608 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-phase-conduit-xlarge - rotate: false - xy: 301, 319 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-phase-conveyor-large - rotate: false - xy: 1367, 933 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-phase-conveyor-medium - rotate: false - xy: 1255, 566 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-phase-conveyor-small - rotate: false - xy: 1569, 614 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-phase-conveyor-tiny - rotate: false - xy: 1451, 598 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-phase-conveyor-xlarge - rotate: false - xy: 301, 269 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-phase-wall-large - rotate: false - xy: 1409, 933 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-phase-wall-large-large - rotate: false - xy: 1451, 933 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-phase-wall-large-medium - rotate: false - xy: 1289, 642 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-phase-wall-large-small - rotate: false - xy: 1595, 614 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-phase-wall-large-tiny - rotate: false - xy: 1469, 600 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-phase-wall-large-xlarge - rotate: false - xy: 301, 219 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-phase-wall-medium - rotate: false - xy: 1289, 608 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-phase-wall-small - rotate: false - xy: 1621, 614 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-phase-wall-tiny - rotate: false - xy: 1487, 600 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-phase-wall-xlarge - rotate: false - xy: 301, 169 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-phase-weaver-large - rotate: false - xy: 1493, 933 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-phase-weaver-medium - rotate: false - xy: 1323, 642 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-phase-weaver-small - rotate: false - xy: 1647, 614 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-phase-weaver-tiny - rotate: false - xy: 1433, 590 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-phase-weaver-xlarge - rotate: false - xy: 301, 119 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-pine-large - rotate: false - xy: 1535, 933 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-pine-medium - rotate: false - xy: 1289, 574 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-pine-small - rotate: false - xy: 1673, 614 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-pine-tiny - rotate: false - xy: 1505, 611 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-pine-xlarge - rotate: false - xy: 301, 69 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-plastanium-compressor-large - rotate: false - xy: 1577, 933 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-plastanium-compressor-medium - rotate: false - xy: 1323, 608 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-plastanium-compressor-small - rotate: false - xy: 1699, 614 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-plastanium-compressor-tiny - rotate: false - xy: 1523, 611 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-plastanium-compressor-xlarge - rotate: false - xy: 301, 19 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-plastanium-conveyor-large - rotate: false - xy: 1619, 933 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-plastanium-conveyor-medium - rotate: false - xy: 1323, 574 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-plastanium-conveyor-small - rotate: false - xy: 1725, 614 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-plastanium-conveyor-tiny - rotate: false - xy: 1505, 593 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-plastanium-conveyor-xlarge - rotate: false - xy: 795, 878 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-plastanium-wall-large - rotate: false - xy: 1661, 933 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-plastanium-wall-large-large - rotate: false - xy: 1703, 933 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-plastanium-wall-large-medium - rotate: false - xy: 1209, 524 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-plastanium-wall-large-small - rotate: false - xy: 1751, 614 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-plastanium-wall-large-tiny - rotate: false - xy: 1523, 593 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-plastanium-wall-large-xlarge - rotate: false - xy: 309, 816 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-plastanium-wall-medium - rotate: false - xy: 1209, 490 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-plastanium-wall-small - rotate: false - xy: 1777, 614 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-plastanium-wall-tiny - rotate: false - xy: 1541, 596 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-plastanium-wall-xlarge - rotate: false - xy: 309, 766 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-plated-conduit-large - rotate: false - xy: 1745, 933 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-plated-conduit-medium - rotate: false - xy: 1209, 456 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-plated-conduit-small - rotate: false - xy: 1803, 614 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-plated-conduit-tiny - rotate: false - xy: 1559, 596 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-plated-conduit-xlarge - rotate: false - xy: 359, 816 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-pneumatic-drill-large - rotate: false - xy: 1787, 933 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-pneumatic-drill-medium - rotate: false - xy: 1209, 422 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-pneumatic-drill-small - rotate: false - xy: 1829, 614 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-pneumatic-drill-tiny - rotate: false - xy: 1577, 596 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-pneumatic-drill-xlarge - rotate: false - xy: 309, 716 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-power-node-large - rotate: false - xy: 1829, 933 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-power-node-large-large - rotate: false - xy: 1871, 933 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -block-power-node-large-medium - rotate: false - xy: 1243, 532 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-power-node-large-small - rotate: false - xy: 1855, 614 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-power-node-large-tiny - rotate: false - xy: 1595, 596 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-power-node-large-xlarge - rotate: false - xy: 359, 766 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-power-node-medium - rotate: false - xy: 1243, 498 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-power-node-small - rotate: false - xy: 1881, 614 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-power-node-tiny - rotate: false - xy: 1613, 596 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-power-node-xlarge - rotate: false - xy: 409, 816 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-power-source-large +block-parallax-large rotate: false xy: 1913, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-power-source-medium +block-parallax-medium rotate: false - xy: 1243, 464 + xy: 1217, 477 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-power-source-small +block-parallax-small rotate: false - xy: 1907, 614 + xy: 1857, 710 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-power-source-tiny +block-parallax-tiny rotate: false - xy: 1631, 596 + xy: 1243, 131 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-power-source-xlarge +block-parallax-xlarge rotate: false - xy: 359, 716 + xy: 301, 419 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-power-void-large +block-payload-router-large rotate: false xy: 1955, 933 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-power-void-medium +block-payload-router-medium rotate: false - xy: 1243, 430 + xy: 1251, 511 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-power-void-small +block-payload-router-small rotate: false - xy: 1933, 614 + xy: 1883, 710 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-power-void-tiny +block-payload-router-tiny rotate: false - xy: 1649, 596 + xy: 1277, 175 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-power-void-xlarge +block-payload-router-xlarge rotate: false - xy: 409, 766 + xy: 301, 369 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-pulse-conduit-large +block-pebbles-large rotate: false xy: 845, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-pulse-conduit-medium +block-pebbles-medium rotate: false - xy: 1277, 532 + xy: 1149, 375 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-pulse-conduit-small +block-pebbles-small rotate: false - xy: 1959, 614 + xy: 1973, 675 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-pulse-conduit-tiny +block-pebbles-tiny rotate: false - xy: 1667, 596 + xy: 1269, 157 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-pulse-conduit-xlarge +block-pebbles-xlarge rotate: false - xy: 459, 816 + xy: 301, 319 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-pulverizer-large +block-phase-conduit-large rotate: false xy: 887, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-pulverizer-medium +block-phase-conduit-medium rotate: false - xy: 1277, 498 + xy: 1183, 409 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-pulverizer-small +block-phase-conduit-small rotate: false - xy: 600, 314 + xy: 1999, 683 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-pulverizer-tiny +block-phase-conduit-tiny rotate: false - xy: 1685, 596 + xy: 1355, 237 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-pulverizer-xlarge +block-phase-conduit-xlarge rotate: false - xy: 409, 716 + xy: 301, 269 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-pyratite-mixer-large +block-phase-conveyor-large rotate: false xy: 929, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-pyratite-mixer-medium +block-phase-conveyor-medium rotate: false - xy: 1277, 464 + xy: 1217, 443 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-pyratite-mixer-small +block-phase-conveyor-small rotate: false - xy: 600, 288 + xy: 1999, 657 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-pyratite-mixer-tiny +block-phase-conveyor-tiny rotate: false - xy: 1703, 596 + xy: 1209, 79 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-pyratite-mixer-xlarge +block-phase-conveyor-xlarge rotate: false - xy: 459, 766 + xy: 301, 219 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-repair-point-large +block-phase-wall-large rotate: false xy: 971, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-repair-point-medium - rotate: false - xy: 1277, 430 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-repair-point-small - rotate: false - xy: 626, 296 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-repair-point-tiny - rotate: false - xy: 1721, 596 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-repair-point-xlarge - rotate: false - xy: 509, 816 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-resupply-point-large +block-phase-wall-large-large rotate: false xy: 1013, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-resupply-point-medium +block-phase-wall-large-medium rotate: false - xy: 1311, 540 + xy: 1251, 477 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-resupply-point-small +block-phase-wall-large-small rotate: false - xy: 652, 296 + xy: 989, 315 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-resupply-point-tiny +block-phase-wall-large-tiny rotate: false - xy: 1739, 596 + xy: 1209, 61 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-resupply-point-xlarge +block-phase-wall-large-xlarge rotate: false - xy: 459, 716 + xy: 301, 169 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-ripple-large +block-phase-wall-medium + rotate: false + xy: 1285, 511 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-phase-wall-small + rotate: false + xy: 1015, 315 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-phase-wall-tiny + rotate: false + xy: 1209, 43 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-phase-wall-xlarge + rotate: false + xy: 301, 119 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-phase-weaver-large rotate: false xy: 1055, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-ripple-medium +block-phase-weaver-medium rotate: false - xy: 1311, 506 + xy: 1183, 375 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-ripple-small +block-phase-weaver-small rotate: false - xy: 678, 296 + xy: 989, 289 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-ripple-tiny +block-phase-weaver-tiny rotate: false - xy: 1757, 596 + xy: 1209, 25 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-ripple-xlarge +block-phase-weaver-xlarge rotate: false - xy: 509, 766 + xy: 301, 69 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-rock-large +block-pine-large rotate: false xy: 1097, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-rock-medium +block-pine-medium rotate: false - xy: 1311, 472 + xy: 1217, 409 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-rock-small +block-pine-small rotate: false - xy: 704, 296 + xy: 1041, 315 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-rock-tiny +block-pine-tiny rotate: false - xy: 1775, 596 + xy: 1191, 7 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-rock-xlarge +block-pine-xlarge rotate: false - xy: 559, 816 + xy: 301, 19 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-rocks-large +block-plastanium-compressor-large rotate: false xy: 1139, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-rocks-medium +block-plastanium-compressor-medium rotate: false - xy: 1311, 438 + xy: 1251, 443 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-rocks-small +block-plastanium-compressor-small rotate: false - xy: 730, 296 + xy: 989, 263 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-rocks-tiny +block-plastanium-compressor-tiny rotate: false - xy: 1793, 596 + xy: 1209, 7 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-rocks-xlarge +block-plastanium-compressor-xlarge rotate: false - xy: 509, 716 + xy: 795, 878 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-rotary-pump-large +block-plastanium-conveyor-large rotate: false xy: 1181, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-rotary-pump-medium +block-plastanium-conveyor-medium rotate: false - xy: 1345, 540 + xy: 1285, 477 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-rotary-pump-small +block-plastanium-conveyor-small rotate: false - xy: 756, 296 + xy: 1015, 289 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-rotary-pump-tiny +block-plastanium-conveyor-tiny rotate: false - xy: 1811, 596 + xy: 1235, 105 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-rotary-pump-xlarge +block-plastanium-conveyor-xlarge rotate: false - xy: 559, 766 + xy: 309, 816 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-router-large +block-plastanium-wall-large rotate: false xy: 1223, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-router-medium - rotate: false - xy: 1345, 506 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-router-small - rotate: false - xy: 782, 296 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-router-tiny - rotate: false - xy: 1829, 596 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-router-xlarge - rotate: false - xy: 609, 816 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-rtg-generator-large +block-plastanium-wall-large-large rotate: false xy: 1265, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-rtg-generator-medium +block-plastanium-wall-large-medium rotate: false - xy: 1345, 472 + xy: 1319, 511 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-rtg-generator-small +block-plastanium-wall-large-small rotate: false - xy: 808, 296 + xy: 1067, 315 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-rtg-generator-tiny +block-plastanium-wall-large-tiny rotate: false - xy: 1847, 596 + xy: 1227, 87 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-rtg-generator-xlarge +block-plastanium-wall-large-xlarge rotate: false - xy: 559, 716 + xy: 309, 766 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-salt-large +block-plastanium-wall-medium + rotate: false + xy: 1217, 375 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-plastanium-wall-small + rotate: false + xy: 989, 237 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-plastanium-wall-tiny + rotate: false + xy: 1227, 69 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-plastanium-wall-xlarge + rotate: false + xy: 359, 816 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-plated-conduit-large rotate: false xy: 1307, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-salt-medium +block-plated-conduit-medium rotate: false - xy: 1345, 438 + xy: 1251, 409 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-salt-small +block-plated-conduit-small rotate: false - xy: 834, 296 + xy: 1015, 263 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-salt-tiny +block-plated-conduit-tiny rotate: false - xy: 1865, 596 + xy: 1227, 51 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-salt-xlarge +block-plated-conduit-xlarge rotate: false - xy: 609, 766 + xy: 309, 716 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-saltrocks-large +block-pneumatic-drill-large rotate: false xy: 1349, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-saltrocks-medium +block-pneumatic-drill-medium rotate: false - xy: 1243, 396 + xy: 1285, 443 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-saltrocks-small +block-pneumatic-drill-small rotate: false - xy: 603, 262 + xy: 1041, 289 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-saltrocks-tiny +block-pneumatic-drill-tiny rotate: false - xy: 1883, 596 + xy: 1227, 33 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-saltrocks-xlarge +block-pneumatic-drill-xlarge rotate: false - xy: 659, 816 + xy: 359, 766 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-salvo-large +block-power-node-large rotate: false xy: 1391, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-salvo-medium - rotate: false - xy: 1277, 396 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-salvo-small - rotate: false - xy: 603, 236 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-salvo-tiny - rotate: false - xy: 1901, 596 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-salvo-xlarge - rotate: false - xy: 609, 716 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-sand-boulder-large +block-power-node-large-large rotate: false xy: 1433, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-sand-boulder-medium +block-power-node-large-medium rotate: false - xy: 1311, 404 + xy: 1319, 477 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-sand-boulder-small +block-power-node-large-small rotate: false - xy: 603, 210 + xy: 1093, 315 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-sand-boulder-tiny +block-power-node-large-tiny rotate: false - xy: 1919, 596 + xy: 1227, 15 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-sand-boulder-xlarge +block-power-node-large-xlarge rotate: false - xy: 659, 766 + xy: 409, 816 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-sand-large +block-power-node-medium + rotate: false + xy: 1353, 511 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-power-node-small + rotate: false + xy: 989, 211 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-power-node-tiny + rotate: false + xy: 1261, 131 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-power-node-xlarge + rotate: false + xy: 359, 716 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-power-source-large rotate: false xy: 1475, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-sand-medium +block-power-source-medium rotate: false - xy: 1345, 404 + xy: 1251, 375 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-sand-small +block-power-source-small rotate: false - xy: 603, 184 + xy: 1015, 237 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-sand-tiny +block-power-source-tiny rotate: false - xy: 1937, 596 + xy: 1253, 113 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-sand-water-large +block-power-source-xlarge + rotate: false + xy: 409, 766 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-power-void-large rotate: false xy: 1517, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-sand-water-medium +block-power-void-medium rotate: false - xy: 1357, 642 + xy: 1285, 409 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-sand-water-small +block-power-void-small rotate: false - xy: 603, 158 + xy: 1041, 263 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-sand-water-tiny +block-power-void-tiny rotate: false - xy: 1955, 596 + xy: 1287, 157 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-sand-water-xlarge +block-power-void-xlarge rotate: false - xy: 709, 816 + xy: 459, 816 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-sand-xlarge - rotate: false - xy: 659, 716 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-sandrocks-large +block-pulse-conduit-large rotate: false xy: 1559, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-sandrocks-medium +block-pulse-conduit-medium rotate: false - xy: 1357, 608 + xy: 1319, 443 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-sandrocks-small +block-pulse-conduit-small rotate: false - xy: 603, 132 + xy: 1067, 289 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-sandrocks-tiny +block-pulse-conduit-tiny rotate: false - xy: 1973, 596 + xy: 1279, 139 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-sandrocks-xlarge +block-pulse-conduit-xlarge rotate: false - xy: 709, 766 + xy: 409, 716 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-scatter-large +block-pulverizer-large rotate: false xy: 1601, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-scatter-medium +block-pulverizer-medium rotate: false - xy: 1357, 574 + xy: 1353, 477 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-scatter-small +block-pulverizer-small rotate: false - xy: 603, 106 + xy: 1119, 315 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-scatter-tiny +block-pulverizer-tiny rotate: false - xy: 1991, 779 + xy: 1245, 87 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-scatter-xlarge +block-pulverizer-xlarge rotate: false - xy: 709, 716 + xy: 459, 766 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-scorch-large +block-pyratite-mixer-large rotate: false xy: 1643, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-scorch-medium +block-pyratite-mixer-medium rotate: false - xy: 1379, 540 + xy: 1387, 511 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-scorch-small +block-pyratite-mixer-small rotate: false - xy: 603, 80 + xy: 989, 185 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-scorch-tiny +block-pyratite-mixer-tiny rotate: false - xy: 1451, 580 + xy: 1245, 69 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-scorch-xlarge +block-pyratite-mixer-xlarge rotate: false - xy: 759, 816 + xy: 509, 816 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-scrap-wall-gigantic-large +block-repair-point-large rotate: false xy: 1685, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-scrap-wall-gigantic-medium +block-repair-point-medium rotate: false - xy: 1379, 506 + xy: 1285, 375 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-scrap-wall-gigantic-small +block-repair-point-small rotate: false - xy: 603, 54 + xy: 1015, 211 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-scrap-wall-gigantic-tiny +block-repair-point-tiny rotate: false - xy: 1469, 582 + xy: 1245, 51 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-scrap-wall-gigantic-xlarge +block-repair-point-xlarge rotate: false - xy: 759, 766 + xy: 459, 716 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-scrap-wall-huge-large +block-resupply-point-large rotate: false xy: 1727, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-scrap-wall-huge-medium +block-resupply-point-medium rotate: false - xy: 1379, 472 + xy: 1319, 409 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-scrap-wall-huge-small +block-resupply-point-small rotate: false - xy: 629, 270 + xy: 1041, 237 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-scrap-wall-huge-tiny +block-resupply-point-tiny rotate: false - xy: 1487, 582 + xy: 1245, 33 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-scrap-wall-huge-xlarge +block-resupply-point-xlarge rotate: false - xy: 759, 716 + xy: 509, 766 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-scrap-wall-large +block-ripple-large rotate: false xy: 1769, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-scrap-wall-large-large +block-ripple-medium + rotate: false + xy: 1353, 443 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-ripple-small + rotate: false + xy: 1067, 263 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-ripple-tiny + rotate: false + xy: 1245, 15 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-ripple-xlarge + rotate: false + xy: 559, 816 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-rock-large rotate: false xy: 1811, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-scrap-wall-large-medium +block-rock-medium rotate: false - xy: 1379, 438 + xy: 1387, 477 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-scrap-wall-large-small +block-rock-small rotate: false - xy: 655, 270 + xy: 1093, 289 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-scrap-wall-large-tiny +block-rock-tiny rotate: false - xy: 1505, 575 + xy: 1271, 113 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-scrap-wall-large-xlarge +block-rock-xlarge rotate: false - xy: 809, 828 + xy: 509, 716 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-scrap-wall-medium - rotate: false - xy: 1379, 404 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-scrap-wall-small - rotate: false - xy: 629, 244 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-scrap-wall-tiny - rotate: false - xy: 1523, 575 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-scrap-wall-xlarge - rotate: false - xy: 809, 778 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-segment-large +block-rocks-large rotate: false xy: 1853, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-segment-medium +block-rocks-medium rotate: false - xy: 1311, 370 + xy: 1421, 511 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-segment-small +block-rocks-small rotate: false - xy: 681, 270 + xy: 1145, 315 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-segment-tiny +block-rocks-tiny rotate: false - xy: 1541, 578 + xy: 1263, 95 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-segment-xlarge +block-rocks-xlarge rotate: false - xy: 809, 728 + xy: 559, 766 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-separator-large +block-rotary-pump-large rotate: false xy: 1895, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-separator-medium +block-rotary-pump-medium rotate: false - xy: 1345, 370 + xy: 1319, 375 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-separator-small +block-rotary-pump-small rotate: false - xy: 655, 244 + xy: 989, 159 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-separator-tiny +block-rotary-pump-tiny rotate: false - xy: 1559, 578 + xy: 1263, 77 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-separator-xlarge +block-rotary-pump-xlarge rotate: false - xy: 809, 678 + xy: 609, 816 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-shale-boulder-large +block-router-large rotate: false xy: 1937, 891 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-shale-boulder-medium +block-router-medium rotate: false - xy: 1379, 370 + xy: 1353, 409 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-shale-boulder-small +block-router-small rotate: false - xy: 629, 218 + xy: 1015, 185 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-shale-boulder-tiny +block-router-tiny rotate: false - xy: 1577, 578 + xy: 1263, 59 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-shale-boulder-xlarge +block-router-xlarge rotate: false - xy: 331, 666 + xy: 559, 716 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-shale-large +block-rtg-generator-large rotate: false xy: 859, 849 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-shale-medium +block-rtg-generator-medium rotate: false - xy: 1359, 794 + xy: 1387, 443 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-shale-small +block-rtg-generator-small rotate: false - xy: 707, 270 + xy: 1041, 211 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-shale-tiny +block-rtg-generator-tiny rotate: false - xy: 1595, 578 + xy: 1263, 41 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-shale-xlarge +block-rtg-generator-xlarge rotate: false - xy: 331, 616 + xy: 609, 766 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-shalerocks-large +block-salt-large rotate: false xy: 859, 807 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-shalerocks-medium +block-salt-medium rotate: false - xy: 1393, 794 + xy: 1421, 477 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-shalerocks-small +block-salt-small rotate: false - xy: 681, 244 + xy: 1067, 237 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-shalerocks-tiny +block-salt-tiny rotate: false - xy: 1613, 578 + xy: 1263, 23 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-shalerocks-xlarge +block-salt-xlarge rotate: false - xy: 381, 666 + xy: 659, 816 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-shock-mine-large +block-saltrocks-large rotate: false xy: 901, 849 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-shock-mine-medium +block-saltrocks-medium rotate: false - xy: 1427, 794 + xy: 1353, 375 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-shock-mine-small +block-saltrocks-small rotate: false - xy: 655, 218 + xy: 1093, 263 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-shock-mine-tiny +block-saltrocks-tiny rotate: false - xy: 1631, 578 + xy: 1297, 139 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-shock-mine-xlarge +block-saltrocks-xlarge rotate: false - xy: 381, 616 + xy: 609, 716 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-shrubs-large +block-salvo-large rotate: false xy: 859, 765 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-shrubs-medium +block-salvo-medium rotate: false - xy: 1461, 794 + xy: 1387, 409 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-shrubs-small +block-salvo-small rotate: false - xy: 629, 192 + xy: 1119, 289 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-shrubs-tiny +block-salvo-tiny rotate: false - xy: 1649, 578 + xy: 1289, 121 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-shrubs-xlarge +block-salvo-xlarge rotate: false - xy: 431, 666 + xy: 659, 766 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-silicon-crucible-large +block-sand-boulder-large rotate: false xy: 943, 849 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-silicon-crucible-medium +block-sand-boulder-medium rotate: false - xy: 1495, 794 + xy: 1421, 443 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-silicon-crucible-small +block-sand-boulder-small rotate: false - xy: 733, 270 + xy: 1171, 315 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-silicon-crucible-tiny +block-sand-boulder-tiny rotate: false - xy: 1667, 578 + xy: 1281, 95 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-silicon-crucible-xlarge +block-sand-boulder-xlarge rotate: false - xy: 431, 616 + xy: 709, 816 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-silicon-smelter-large +block-sand-large rotate: false xy: 901, 807 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-silicon-smelter-medium +block-sand-medium rotate: false - xy: 1529, 794 + xy: 1387, 375 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-silicon-smelter-small +block-sand-small rotate: false - xy: 707, 244 + xy: 989, 133 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-silicon-smelter-tiny +block-sand-tiny rotate: false - xy: 1685, 578 + xy: 1281, 77 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-silicon-smelter-xlarge - rotate: false - xy: 481, 666 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-slag-large +block-sand-water-large rotate: false xy: 859, 723 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-slag-medium +block-sand-water-medium rotate: false - xy: 1563, 794 + xy: 1421, 409 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-slag-small +block-sand-water-small rotate: false - xy: 681, 218 + xy: 1015, 159 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-slag-tiny +block-sand-water-tiny rotate: false - xy: 1703, 578 + xy: 1281, 59 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-slag-xlarge +block-sand-water-xlarge rotate: false - xy: 481, 616 + xy: 659, 716 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-snow-large +block-sand-xlarge + rotate: false + xy: 709, 766 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-sandrocks-large rotate: false xy: 985, 849 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-snow-medium +block-sandrocks-medium rotate: false - xy: 1597, 794 + xy: 1421, 375 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-snow-pine-large +block-sandrocks-small + rotate: false + xy: 1041, 185 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-sandrocks-tiny + rotate: false + xy: 1281, 41 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-sandrocks-xlarge + rotate: false + xy: 709, 716 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-scatter-large rotate: false xy: 943, 807 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-snow-pine-medium +block-scatter-medium rotate: false - xy: 1631, 794 + xy: 1013, 341 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-snow-pine-small +block-scatter-small rotate: false - xy: 655, 192 + xy: 1067, 211 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-snow-pine-tiny +block-scatter-tiny rotate: false - xy: 1721, 578 + xy: 1281, 23 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-snow-pine-xlarge +block-scatter-xlarge rotate: false - xy: 531, 666 + xy: 759, 816 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-snow-small - rotate: false - xy: 629, 166 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-snow-tiny - rotate: false - xy: 1739, 578 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-snow-xlarge - rotate: false - xy: 531, 616 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-snowrock-large +block-scorch-large rotate: false xy: 901, 765 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-snowrock-medium +block-scorch-medium rotate: false - xy: 1665, 794 + xy: 1047, 341 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-snowrock-small +block-scorch-small rotate: false - xy: 759, 270 + xy: 1093, 237 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-snowrock-tiny +block-scorch-tiny rotate: false - xy: 1757, 578 + xy: 1263, 5 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-snowrock-xlarge +block-scorch-xlarge rotate: false - xy: 581, 666 + xy: 759, 766 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-snowrocks-large +block-scrap-wall-gigantic-large rotate: false xy: 859, 681 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-snowrocks-medium +block-scrap-wall-gigantic-medium rotate: false - xy: 1699, 794 + xy: 1081, 341 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-snowrocks-small +block-scrap-wall-gigantic-small rotate: false - xy: 733, 244 + xy: 1119, 263 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-snowrocks-tiny +block-scrap-wall-gigantic-tiny rotate: false - xy: 1775, 578 + xy: 1281, 5 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-snowrocks-xlarge +block-scrap-wall-gigantic-xlarge rotate: false - xy: 581, 616 + xy: 759, 716 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-solar-panel-large +block-scrap-wall-huge-large rotate: false xy: 1027, 849 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-solar-panel-large-large +block-scrap-wall-huge-medium + rotate: false + xy: 1115, 341 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-scrap-wall-huge-small + rotate: false + xy: 1145, 289 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-scrap-wall-huge-tiny + rotate: false + xy: 1307, 121 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-scrap-wall-huge-xlarge + rotate: false + xy: 809, 828 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-scrap-wall-large rotate: false xy: 985, 807 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-solar-panel-large-medium - rotate: false - xy: 1733, 794 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-solar-panel-large-small - rotate: false - xy: 707, 218 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-solar-panel-large-tiny - rotate: false - xy: 1793, 578 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-solar-panel-large-xlarge - rotate: false - xy: 631, 666 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-solar-panel-medium - rotate: false - xy: 1767, 794 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-solar-panel-small - rotate: false - xy: 681, 192 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-solar-panel-tiny - rotate: false - xy: 1811, 578 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-solar-panel-xlarge - rotate: false - xy: 631, 616 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-sorter-large +block-scrap-wall-large-large rotate: false xy: 943, 765 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-sorter-medium +block-scrap-wall-large-medium rotate: false - xy: 1801, 794 + xy: 1149, 341 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-sorter-small +block-scrap-wall-large-small rotate: false - xy: 655, 166 + xy: 1197, 315 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-sorter-tiny +block-scrap-wall-large-tiny rotate: false - xy: 1829, 578 + xy: 1299, 103 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-sorter-xlarge +block-scrap-wall-large-xlarge rotate: false - xy: 681, 666 + xy: 809, 778 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-spawn-large +block-scrap-wall-medium + rotate: false + xy: 1183, 341 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-scrap-wall-small + rotate: false + xy: 989, 107 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-scrap-wall-tiny + rotate: false + xy: 1299, 85 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-scrap-wall-xlarge + rotate: false + xy: 809, 728 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-segment-large rotate: false xy: 901, 723 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-spawn-medium +block-segment-medium rotate: false - xy: 1835, 794 + xy: 1217, 341 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-spawn-small +block-segment-small rotate: false - xy: 629, 140 + xy: 1015, 133 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-spawn-tiny +block-segment-tiny rotate: false - xy: 1847, 578 + xy: 1299, 67 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-spawn-xlarge +block-segment-xlarge rotate: false - xy: 681, 616 + xy: 809, 678 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-spectre-large +block-separator-large rotate: false xy: 1069, 849 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-spectre-medium +block-separator-medium rotate: false - xy: 1869, 794 + xy: 1251, 341 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-spectre-small +block-separator-small rotate: false - xy: 785, 270 + xy: 1041, 159 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-spectre-tiny +block-separator-tiny rotate: false - xy: 1865, 578 + xy: 1299, 49 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-spectre-xlarge +block-separator-xlarge rotate: false - xy: 731, 666 + xy: 331, 666 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-spore-cluster-large +block-shale-boulder-large rotate: false xy: 1027, 807 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-spore-cluster-medium +block-shale-boulder-medium rotate: false - xy: 1903, 794 + xy: 1285, 341 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-spore-cluster-small +block-shale-boulder-small rotate: false - xy: 759, 244 + xy: 1067, 185 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-spore-cluster-tiny +block-shale-boulder-tiny rotate: false - xy: 1883, 578 + xy: 1299, 31 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-spore-cluster-xlarge +block-shale-boulder-xlarge rotate: false - xy: 731, 616 + xy: 331, 616 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-spore-moss-large +block-shale-large rotate: false xy: 985, 765 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-spore-moss-medium +block-shale-medium rotate: false - xy: 1937, 794 + xy: 1319, 341 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-spore-moss-small +block-shale-small rotate: false - xy: 733, 218 + xy: 1093, 211 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-spore-moss-tiny +block-shale-tiny rotate: false - xy: 1901, 578 + xy: 1299, 13 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-spore-moss-xlarge +block-shale-xlarge rotate: false - xy: 781, 628 + xy: 381, 666 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-spore-pine-large +block-shalerocks-large rotate: false xy: 943, 723 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-spore-pine-medium +block-shalerocks-medium rotate: false - xy: 1355, 760 + xy: 1353, 341 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-spore-pine-small +block-shalerocks-small rotate: false - xy: 707, 192 + xy: 1119, 237 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-spore-pine-tiny +block-shalerocks-tiny rotate: false - xy: 1919, 578 + xy: 1317, 103 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-spore-pine-xlarge +block-shalerocks-xlarge rotate: false - xy: 831, 628 + xy: 381, 616 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-spore-press-large +block-shock-mine-large rotate: false xy: 901, 681 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-spore-press-medium +block-shock-mine-medium rotate: false - xy: 1389, 760 + xy: 1387, 341 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-spore-press-small +block-shock-mine-small rotate: false - xy: 681, 166 + xy: 1145, 263 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-spore-press-tiny +block-shock-mine-tiny rotate: false - xy: 1937, 578 + xy: 1317, 85 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-spore-press-xlarge +block-shock-mine-xlarge rotate: false - xy: 781, 578 + xy: 431, 666 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-sporerocks-large +block-shrubs-large rotate: false xy: 1111, 849 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-sporerocks-medium +block-shrubs-medium rotate: false - xy: 1423, 760 + xy: 1421, 341 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-sporerocks-small +block-shrubs-small rotate: false - xy: 655, 140 + xy: 1171, 289 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-sporerocks-tiny +block-shrubs-tiny rotate: false - xy: 1955, 578 + xy: 1317, 67 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-sporerocks-xlarge +block-shrubs-xlarge rotate: false - xy: 831, 578 + xy: 431, 616 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-stone-large +block-silicon-crucible-large rotate: false xy: 1069, 807 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-stone-medium +block-silicon-crucible-medium rotate: false - xy: 1457, 760 + xy: 1475, 647 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-stone-small +block-silicon-crucible-small rotate: false - xy: 629, 114 + xy: 1223, 315 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-stone-tiny +block-silicon-crucible-tiny rotate: false - xy: 1973, 578 + xy: 1317, 49 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-stone-xlarge +block-silicon-crucible-xlarge rotate: false - xy: 351, 566 + xy: 481, 666 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-surge-tower-large +block-silicon-smelter-large rotate: false xy: 1027, 765 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-surge-tower-medium +block-silicon-smelter-medium rotate: false - xy: 1491, 760 + xy: 1471, 613 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-surge-tower-small +block-silicon-smelter-small rotate: false - xy: 811, 270 + xy: 989, 81 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-surge-tower-tiny +block-silicon-smelter-tiny rotate: false - xy: 1433, 572 + xy: 1317, 31 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-surge-tower-xlarge +block-silicon-smelter-xlarge rotate: false - xy: 351, 516 + xy: 481, 616 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-surge-wall-large +block-slag-large rotate: false xy: 985, 723 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-surge-wall-large-large +block-slag-medium + rotate: false + xy: 1467, 579 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-slag-small + rotate: false + xy: 1015, 107 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-slag-tiny + rotate: false + xy: 1317, 13 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-slag-xlarge + rotate: false + xy: 531, 666 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-snow-large rotate: false xy: 943, 681 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-surge-wall-large-medium +block-snow-medium rotate: false - xy: 1525, 760 + xy: 1459, 545 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-surge-wall-large-small - rotate: false - xy: 785, 244 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-surge-wall-large-tiny - rotate: false - xy: 1991, 761 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-surge-wall-large-xlarge - rotate: false - xy: 401, 566 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-surge-wall-medium - rotate: false - xy: 1559, 760 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-surge-wall-small - rotate: false - xy: 759, 218 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-surge-wall-tiny - rotate: false - xy: 2009, 753 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-surge-wall-xlarge - rotate: false - xy: 351, 466 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-swarmer-large +block-snow-pine-large rotate: false xy: 1153, 849 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-swarmer-medium +block-snow-pine-medium rotate: false - xy: 1593, 760 + xy: 1455, 511 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-swarmer-small +block-snow-pine-small rotate: false - xy: 733, 192 + xy: 1041, 133 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-swarmer-tiny +block-snow-pine-tiny rotate: false - xy: 2027, 753 + xy: 1293, 216 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-swarmer-xlarge +block-snow-pine-xlarge rotate: false - xy: 401, 516 + xy: 531, 616 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-tainted-water-large +block-snow-small + rotate: false + xy: 1067, 159 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-snow-tiny + rotate: false + xy: 1311, 216 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-snow-xlarge + rotate: false + xy: 581, 666 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-snowrock-large rotate: false xy: 1111, 807 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-tainted-water-medium +block-snowrock-medium rotate: false - xy: 1627, 760 + xy: 1455, 477 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-tainted-water-small +block-snowrock-small rotate: false - xy: 707, 166 + xy: 1093, 185 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-tainted-water-tiny +block-snowrock-tiny rotate: false - xy: 1451, 562 + xy: 1329, 216 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-tainted-water-xlarge +block-snowrock-xlarge rotate: false - xy: 451, 566 + xy: 581, 616 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-tar-large +block-snowrocks-large rotate: false xy: 1069, 765 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-tar-medium +block-snowrocks-medium rotate: false - xy: 1661, 760 + xy: 1455, 443 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-tar-small +block-snowrocks-small rotate: false - xy: 681, 140 + xy: 1119, 211 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-tar-tiny +block-snowrocks-tiny rotate: false - xy: 1469, 564 + xy: 1347, 219 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-tar-xlarge +block-snowrocks-xlarge rotate: false - xy: 351, 416 + xy: 631, 666 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-tendrils-large +block-solar-panel-large rotate: false xy: 1027, 723 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-tendrils-medium - rotate: false - xy: 1695, 760 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-tendrils-small - rotate: false - xy: 655, 114 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-tendrils-tiny - rotate: false - xy: 1487, 564 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-tendrils-xlarge - rotate: false - xy: 401, 466 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-tetrative-reconstructor-large +block-solar-panel-large-large rotate: false xy: 985, 681 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-tetrative-reconstructor-medium +block-solar-panel-large-medium rotate: false - xy: 1729, 760 + xy: 1455, 409 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-tetrative-reconstructor-small +block-solar-panel-large-small rotate: false - xy: 629, 88 + xy: 1145, 237 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-tetrative-reconstructor-tiny +block-solar-panel-large-tiny rotate: false - xy: 1505, 557 + xy: 1365, 219 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-tetrative-reconstructor-xlarge +block-solar-panel-large-xlarge rotate: false - xy: 451, 516 + xy: 631, 616 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-thermal-generator-large +block-solar-panel-medium + rotate: false + xy: 1455, 375 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-solar-panel-small + rotate: false + xy: 1171, 263 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-solar-panel-tiny + rotate: false + xy: 1285, 198 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-solar-panel-xlarge + rotate: false + xy: 681, 666 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-sorter-large rotate: false xy: 1195, 849 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-thermal-generator-medium +block-sorter-medium rotate: false - xy: 1763, 760 + xy: 1455, 341 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-thermal-generator-small +block-sorter-small rotate: false - xy: 811, 244 + xy: 1197, 289 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-thermal-generator-tiny +block-sorter-tiny rotate: false - xy: 1523, 557 + xy: 1303, 198 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-thermal-generator-xlarge +block-sorter-xlarge rotate: false - xy: 501, 566 + xy: 681, 616 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-thermal-pump-large +block-spawn-large rotate: false xy: 1153, 807 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-thermal-pump-medium +block-spawn-medium rotate: false - xy: 1797, 760 + xy: 1509, 660 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-thermal-pump-small +block-spawn-small rotate: false - xy: 785, 218 + xy: 1249, 315 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-thermal-pump-tiny +block-spawn-tiny rotate: false - xy: 1541, 560 + xy: 1321, 198 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-thermal-pump-xlarge +block-spawn-xlarge rotate: false - xy: 351, 366 + xy: 731, 666 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-thorium-reactor-large +block-spectre-large rotate: false xy: 1111, 765 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-thorium-reactor-medium +block-spectre-medium rotate: false - xy: 1831, 760 + xy: 1543, 660 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-thorium-reactor-small +block-spectre-small rotate: false - xy: 759, 192 + xy: 989, 55 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-thorium-reactor-tiny +block-spectre-tiny rotate: false - xy: 1559, 560 + xy: 1295, 180 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-thorium-reactor-xlarge +block-spectre-xlarge rotate: false - xy: 401, 416 + xy: 731, 616 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-thorium-wall-large +block-spore-cluster-large rotate: false xy: 1069, 723 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-thorium-wall-large-large +block-spore-cluster-medium + rotate: false + xy: 1699, 828 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-spore-cluster-small + rotate: false + xy: 1015, 81 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-spore-cluster-tiny + rotate: false + xy: 1313, 180 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-spore-cluster-xlarge + rotate: false + xy: 781, 628 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-spore-moss-large rotate: false xy: 1027, 681 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-thorium-wall-large-medium +block-spore-moss-medium rotate: false - xy: 1865, 760 + xy: 1733, 828 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-thorium-wall-large-small +block-spore-moss-small rotate: false - xy: 733, 166 + xy: 1041, 107 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-thorium-wall-large-tiny +block-spore-moss-tiny rotate: false - xy: 1577, 560 + xy: 1305, 162 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-thorium-wall-large-xlarge +block-spore-moss-xlarge rotate: false - xy: 451, 466 + xy: 831, 628 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-thorium-wall-medium - rotate: false - xy: 1899, 760 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-thorium-wall-small - rotate: false - xy: 707, 140 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-thorium-wall-tiny - rotate: false - xy: 1595, 560 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-thorium-wall-xlarge - rotate: false - xy: 501, 516 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-thruster-large +block-spore-pine-large rotate: false xy: 1237, 849 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-thruster-medium +block-spore-pine-medium rotate: false - xy: 1933, 760 + xy: 1767, 828 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-thruster-small +block-spore-pine-small rotate: false - xy: 681, 114 + xy: 1067, 133 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-thruster-tiny +block-spore-pine-tiny rotate: false - xy: 1613, 560 + xy: 1339, 198 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-thruster-xlarge +block-spore-pine-xlarge rotate: false - xy: 551, 566 + xy: 781, 578 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-titanium-conveyor-large +block-spore-press-large rotate: false xy: 1195, 807 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-titanium-conveyor-medium +block-spore-press-medium rotate: false - xy: 1365, 726 + xy: 1801, 828 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-titanium-conveyor-small +block-spore-press-small rotate: false - xy: 655, 88 + xy: 1093, 159 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-titanium-conveyor-tiny +block-spore-press-tiny rotate: false - xy: 1631, 560 + xy: 1331, 180 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-titanium-conveyor-xlarge +block-spore-press-xlarge rotate: false - xy: 351, 316 + xy: 831, 578 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-titanium-wall-large +block-sporerocks-large rotate: false xy: 1153, 765 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-titanium-wall-large-large +block-sporerocks-medium + rotate: false + xy: 1835, 828 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-sporerocks-small + rotate: false + xy: 1119, 185 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-sporerocks-tiny + rotate: false + xy: 1323, 162 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-sporerocks-xlarge + rotate: false + xy: 351, 566 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-stone-large rotate: false xy: 1111, 723 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-titanium-wall-large-medium +block-stone-medium rotate: false - xy: 1365, 692 + xy: 1869, 828 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-titanium-wall-large-small +block-stone-small rotate: false - xy: 629, 62 + xy: 1145, 211 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-titanium-wall-large-tiny +block-stone-tiny rotate: false - xy: 1649, 560 + xy: 1357, 201 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-titanium-wall-large-xlarge +block-stone-xlarge rotate: false - xy: 401, 366 + xy: 351, 516 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-titanium-wall-medium - rotate: false - xy: 1399, 726 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-titanium-wall-small - rotate: false - xy: 811, 218 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-titanium-wall-tiny - rotate: false - xy: 1667, 560 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-titanium-wall-xlarge - rotate: false - xy: 451, 416 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-turbine-generator-large +block-surge-tower-large rotate: false xy: 1069, 681 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-turbine-generator-medium +block-surge-tower-medium rotate: false - xy: 1433, 726 + xy: 1903, 828 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-turbine-generator-small +block-surge-tower-small rotate: false - xy: 785, 192 + xy: 1171, 237 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-turbine-generator-tiny +block-surge-tower-tiny rotate: false - xy: 1685, 560 + xy: 1315, 144 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-turbine-generator-xlarge +block-surge-tower-xlarge rotate: false - xy: 501, 466 + xy: 401, 566 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-underflow-gate-large +block-surge-wall-large rotate: false xy: 1279, 849 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-underflow-gate-medium - rotate: false - xy: 1399, 692 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-underflow-gate-small - rotate: false - xy: 759, 166 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-underflow-gate-tiny - rotate: false - xy: 1703, 560 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-underflow-gate-xlarge - rotate: false - xy: 551, 516 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -block-unloader-large +block-surge-wall-large-large rotate: false xy: 1237, 807 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-unloader-medium +block-surge-wall-large-medium rotate: false - xy: 1467, 726 + xy: 1937, 828 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-unloader-small +block-surge-wall-large-small rotate: false - xy: 733, 140 + xy: 1197, 263 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-unloader-tiny +block-surge-wall-large-tiny rotate: false - xy: 1721, 560 + xy: 1349, 180 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-unloader-xlarge +block-surge-wall-large-xlarge rotate: false - xy: 601, 566 + xy: 351, 466 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-vault-large +block-surge-wall-medium + rotate: false + xy: 1657, 786 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-surge-wall-small + rotate: false + xy: 1223, 289 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-surge-wall-tiny + rotate: false + xy: 1341, 162 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-surge-wall-xlarge + rotate: false + xy: 401, 516 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-swarmer-large rotate: false xy: 1195, 765 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-vault-medium +block-swarmer-medium rotate: false - xy: 1433, 692 + xy: 1615, 744 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-vault-small +block-swarmer-small rotate: false - xy: 707, 114 + xy: 1275, 315 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-vault-tiny +block-swarmer-tiny rotate: false - xy: 1739, 560 + xy: 1333, 144 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-vault-xlarge +block-swarmer-xlarge rotate: false - xy: 351, 266 + xy: 451, 566 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-water-extractor-large +block-tainted-water-large rotate: false xy: 1153, 723 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-water-extractor-medium +block-tainted-water-medium rotate: false - xy: 1501, 726 + xy: 1509, 626 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-water-extractor-small +block-tainted-water-small rotate: false - xy: 681, 88 + xy: 989, 29 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-water-extractor-tiny +block-tainted-water-tiny rotate: false - xy: 1757, 560 + xy: 1325, 126 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-water-extractor-xlarge +block-tainted-water-xlarge rotate: false - xy: 401, 316 + xy: 351, 416 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-water-large +block-tar-large rotate: false xy: 1111, 681 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-water-medium +block-tar-medium rotate: false - xy: 1467, 692 + xy: 1543, 626 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-water-small +block-tar-small rotate: false - xy: 655, 62 + xy: 1015, 55 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-water-tiny +block-tar-tiny rotate: false - xy: 1775, 560 + xy: 1375, 201 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-water-xlarge +block-tar-xlarge rotate: false - xy: 451, 366 + xy: 401, 466 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-wave-large +block-tendrils-large rotate: false xy: 1321, 849 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-wave-medium +block-tendrils-medium rotate: false - xy: 1535, 726 + xy: 1573, 702 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-wave-small +block-tendrils-small rotate: false - xy: 811, 192 + xy: 1041, 81 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-wave-tiny +block-tendrils-tiny rotate: false - xy: 1793, 560 + xy: 1367, 183 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-wave-xlarge +block-tendrils-xlarge rotate: false - xy: 501, 416 + xy: 451, 516 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-white-tree-dead-large +block-tetrative-reconstructor-large rotate: false xy: 1279, 807 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-white-tree-dead-medium +block-tetrative-reconstructor-medium rotate: false - xy: 1501, 692 + xy: 1577, 668 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-white-tree-dead-small +block-tetrative-reconstructor-small rotate: false - xy: 785, 166 + xy: 1067, 107 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-white-tree-dead-tiny +block-tetrative-reconstructor-tiny rotate: false - xy: 1811, 560 + xy: 1359, 162 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-white-tree-dead-xlarge +block-tetrative-reconstructor-xlarge rotate: false - xy: 551, 466 + xy: 501, 566 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -block-white-tree-large +block-thermal-generator-large rotate: false xy: 1237, 765 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 -block-white-tree-medium +block-thermal-generator-medium rotate: false - xy: 1569, 726 + xy: 1577, 634 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -block-white-tree-small +block-thermal-generator-small rotate: false - xy: 759, 140 + xy: 1093, 133 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-white-tree-tiny +block-thermal-generator-tiny rotate: false - xy: 1829, 560 + xy: 1351, 144 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -block-white-tree-xlarge +block-thermal-generator-xlarge + rotate: false + xy: 351, 366 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-thermal-pump-large + rotate: false + xy: 1195, 723 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-thermal-pump-medium + rotate: false + xy: 1505, 592 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-thermal-pump-small + rotate: false + xy: 1119, 159 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-thermal-pump-tiny + rotate: false + xy: 1343, 126 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-thermal-pump-xlarge + rotate: false + xy: 401, 416 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-thorium-reactor-large + rotate: false + xy: 1153, 681 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-thorium-reactor-medium + rotate: false + xy: 1539, 592 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-thorium-reactor-small + rotate: false + xy: 1145, 185 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-thorium-reactor-tiny + rotate: false + xy: 1335, 108 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-thorium-reactor-xlarge + rotate: false + xy: 451, 466 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-thorium-wall-large + rotate: false + xy: 1363, 849 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-thorium-wall-large-large + rotate: false + xy: 1321, 807 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-thorium-wall-large-medium + rotate: false + xy: 1501, 558 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-thorium-wall-large-small + rotate: false + xy: 1171, 211 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-thorium-wall-large-tiny + rotate: false + xy: 1335, 90 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-thorium-wall-large-xlarge + rotate: false + xy: 501, 516 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-thorium-wall-medium + rotate: false + xy: 1535, 558 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-thorium-wall-small + rotate: false + xy: 1197, 237 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-thorium-wall-tiny + rotate: false + xy: 1335, 72 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-thorium-wall-xlarge + rotate: false + xy: 551, 566 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-thruster-large + rotate: false + xy: 1279, 765 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-thruster-medium + rotate: false + xy: 435, 6 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-thruster-small + rotate: false + xy: 1223, 263 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-thruster-tiny + rotate: false + xy: 1335, 54 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-thruster-xlarge + rotate: false + xy: 351, 316 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-titanium-conveyor-large + rotate: false + xy: 1237, 723 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-titanium-conveyor-medium + rotate: false + xy: 469, 6 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-titanium-conveyor-small + rotate: false + xy: 1249, 289 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-titanium-conveyor-tiny + rotate: false + xy: 1335, 36 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-titanium-conveyor-xlarge + rotate: false + xy: 401, 366 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-titanium-wall-large + rotate: false + xy: 1195, 681 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-titanium-wall-large-large + rotate: false + xy: 1405, 849 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-titanium-wall-large-medium + rotate: false + xy: 1979, 865 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-titanium-wall-large-small + rotate: false + xy: 1301, 315 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-titanium-wall-large-tiny + rotate: false + xy: 1335, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-titanium-wall-large-xlarge + rotate: false + xy: 451, 416 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-titanium-wall-medium + rotate: false + xy: 2013, 873 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-titanium-wall-small + rotate: false + xy: 1015, 29 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-titanium-wall-tiny + rotate: false + xy: 1385, 183 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-titanium-wall-xlarge + rotate: false + xy: 501, 466 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-turbine-generator-large + rotate: false + xy: 1363, 807 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-turbine-generator-medium + rotate: false + xy: 1971, 831 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-turbine-generator-small + rotate: false + xy: 1041, 55 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-turbine-generator-tiny + rotate: false + xy: 1377, 165 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-turbine-generator-xlarge + rotate: false + xy: 551, 516 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-underflow-gate-large + rotate: false + xy: 1321, 765 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-underflow-gate-medium + rotate: false + xy: 1607, 702 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-underflow-gate-small + rotate: false + xy: 1067, 81 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-underflow-gate-tiny + rotate: false + xy: 1369, 144 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-underflow-gate-xlarge + rotate: false + xy: 601, 566 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-unloader-large + rotate: false + xy: 1279, 723 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-unloader-medium + rotate: false + xy: 1611, 668 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-unloader-small + rotate: false + xy: 1093, 107 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-unloader-tiny + rotate: false + xy: 1361, 126 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-unloader-xlarge + rotate: false + xy: 351, 266 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-vault-large + rotate: false + xy: 1237, 681 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-vault-medium + rotate: false + xy: 1611, 634 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-vault-small + rotate: false + xy: 1119, 133 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-vault-tiny + rotate: false + xy: 1353, 108 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-vault-xlarge + rotate: false + xy: 401, 316 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-water-extractor-large + rotate: false + xy: 1447, 849 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-water-extractor-medium + rotate: false + xy: 1577, 600 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-water-extractor-small + rotate: false + xy: 1145, 159 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-water-extractor-tiny + rotate: false + xy: 1353, 90 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-water-extractor-xlarge + rotate: false + xy: 451, 366 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-water-large + rotate: false + xy: 1405, 807 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-water-medium + rotate: false + xy: 1611, 600 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-water-small + rotate: false + xy: 1171, 185 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-water-tiny + rotate: false + xy: 1353, 72 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-water-xlarge + rotate: false + xy: 501, 416 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-wave-large + rotate: false + xy: 1363, 765 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-wave-medium + rotate: false + xy: 2013, 839 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-wave-small + rotate: false + xy: 1197, 211 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-wave-tiny + rotate: false + xy: 1353, 54 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-wave-xlarge + rotate: false + xy: 551, 466 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-white-tree-dead-large + rotate: false + xy: 1321, 723 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-white-tree-dead-medium + rotate: false + xy: 1493, 524 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-white-tree-dead-small + rotate: false + xy: 1223, 237 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-white-tree-dead-tiny + rotate: false + xy: 1353, 36 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-white-tree-dead-xlarge rotate: false xy: 601, 516 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 +block-white-tree-large + rotate: false + xy: 1279, 681 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-white-tree-medium + rotate: false + xy: 1527, 524 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-white-tree-small + rotate: false + xy: 1249, 263 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-white-tree-tiny + rotate: false + xy: 1353, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-white-tree-xlarge + rotate: false + xy: 651, 566 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 button rotate: false - xy: 1667, 862 + xy: 881, 623 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16678,7 +17391,7 @@ button index: -1 button-disabled rotate: false - xy: 519, 1 + xy: 771, 1 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16686,7 +17399,7 @@ button-disabled index: -1 button-down rotate: false - xy: 557, 1 + xy: 809, 1 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16694,7 +17407,7 @@ button-down index: -1 button-edge-1 rotate: false - xy: 595, 1 + xy: 847, 1 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16702,7 +17415,7 @@ button-edge-1 index: -1 button-edge-2 rotate: false - xy: 1195, 736 + xy: 1489, 694 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16710,7 +17423,7 @@ button-edge-2 index: -1 button-edge-3 rotate: false - xy: 1153, 694 + xy: 1699, 862 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16718,7 +17431,7 @@ button-edge-3 index: -1 button-edge-4 rotate: false - xy: 1363, 862 + xy: 1657, 820 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16726,7 +17439,7 @@ button-edge-4 index: -1 button-edge-over-4 rotate: false - xy: 1321, 820 + xy: 1615, 778 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16734,7 +17447,7 @@ button-edge-over-4 index: -1 button-over rotate: false - xy: 1279, 778 + xy: 1573, 736 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16742,7 +17455,7 @@ button-over index: -1 button-red rotate: false - xy: 1233, 736 + xy: 1527, 694 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16750,7 +17463,7 @@ button-red index: -1 button-right rotate: false - xy: 1477, 862 + xy: 1813, 862 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16758,7 +17471,7 @@ button-right index: -1 button-right-down rotate: false - xy: 1401, 862 + xy: 1737, 862 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16766,7 +17479,7 @@ button-right-down index: -1 button-right-over rotate: false - xy: 1439, 862 + xy: 1775, 862 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16774,7 +17487,7 @@ button-right-over index: -1 button-select rotate: false - xy: 733, 114 + xy: 1275, 289 size: 24, 24 split: 4, 4, 4, 4 orig: 24, 24 @@ -16782,7 +17495,7 @@ button-select index: -1 button-square rotate: false - xy: 1591, 862 + xy: 1927, 862 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16790,7 +17503,7 @@ button-square index: -1 button-square-down rotate: false - xy: 1515, 862 + xy: 1851, 862 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16798,7 +17511,7 @@ button-square-down index: -1 button-square-over rotate: false - xy: 1553, 862 + xy: 1889, 862 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16806,7 +17519,7 @@ button-square-over index: -1 button-trans rotate: false - xy: 1629, 862 + xy: 881, 652 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16814,42 +17527,42 @@ button-trans index: -1 check-disabled rotate: false - xy: 1535, 692 + xy: 1489, 490 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-off rotate: false - xy: 1603, 726 + xy: 1489, 456 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-on rotate: false - xy: 1569, 692 + xy: 1523, 490 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-on-disabled rotate: false - xy: 1637, 726 + xy: 1489, 422 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-on-over rotate: false - xy: 1603, 692 + xy: 1523, 456 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-over rotate: false - xy: 1671, 726 + xy: 1489, 388 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -16870,7 +17583,7 @@ crater index: -1 cursor rotate: false - xy: 603, 30 + xy: 877, 452 size: 4, 4 orig: 4, 4 offset: 0, 0 @@ -16884,7 +17597,7 @@ discord-banner index: -1 flat-down-base rotate: false - xy: 1705, 862 + xy: 919, 652 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16899,7 +17612,7 @@ info-banner index: -1 inventory rotate: false - xy: 837, 254 + xy: 1327, 299 size: 24, 40 split: 10, 10, 10, 14 orig: 24, 40 @@ -16907,140 +17620,140 @@ inventory index: -1 item-blast-compound-icon rotate: false - xy: 1637, 692 + xy: 1523, 422 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-coal-icon rotate: false - xy: 1705, 726 + xy: 1489, 354 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-copper-icon rotate: false - xy: 1671, 692 + xy: 1523, 388 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-graphite-icon rotate: false - xy: 1739, 726 + xy: 1523, 354 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-lead-icon rotate: false - xy: 1705, 692 + xy: 1489, 320 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-metaglass-icon rotate: false - xy: 1773, 726 + xy: 1523, 320 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-phase-fabric-icon rotate: false - xy: 1739, 692 + xy: 1561, 524 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-plastanium-icon rotate: false - xy: 1807, 726 + xy: 1557, 490 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-pyratite-icon rotate: false - xy: 1773, 692 + xy: 1557, 456 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-sand-icon rotate: false - xy: 1841, 726 + xy: 1557, 422 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-scrap-icon rotate: false - xy: 1807, 692 + xy: 1557, 388 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-silicon-icon rotate: false - xy: 1875, 726 + xy: 1557, 354 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-spore-pod-icon rotate: false - xy: 1841, 692 + xy: 1557, 320 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-surge-alloy-icon rotate: false - xy: 1909, 726 + xy: 1569, 558 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-thorium-icon rotate: false - xy: 1875, 692 + xy: 1603, 566 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-titanium-icon rotate: false - xy: 1909, 692 + xy: 1595, 524 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-cryofluid-icon rotate: false - xy: 1943, 726 + xy: 1591, 490 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-oil-icon rotate: false - xy: 1943, 692 + xy: 1591, 456 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-slag-icon rotate: false - xy: 1391, 658 + xy: 1591, 422 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-water-icon rotate: false - xy: 1391, 624 + xy: 1591, 388 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -17061,7 +17774,7 @@ nomap index: -1 pane rotate: false - xy: 1781, 862 + xy: 919, 623 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17069,7 +17782,7 @@ pane index: -1 pane-2 rotate: false - xy: 1743, 862 + xy: 881, 594 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17077,7 +17790,7 @@ pane-2 index: -1 scroll rotate: false - xy: 707, 77 + xy: 1301, 278 size: 24, 35 split: 10, 10, 6, 5 orig: 24, 35 @@ -17100,63 +17813,63 @@ scroll-knob-horizontal-black index: -1 scroll-knob-vertical-black rotate: false - xy: 837, 212 + xy: 1353, 299 size: 24, 40 orig: 24, 40 offset: 0, 0 index: -1 scroll-knob-vertical-thin rotate: false - xy: 1977, 755 + xy: 1425, 87 size: 12, 40 orig: 12, 40 offset: 0, 0 index: -1 selection rotate: false - xy: 821, 975 + xy: 309, 866 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 slider rotate: false - xy: 131, 528 + xy: 1675, 742 size: 1, 8 orig: 1, 8 offset: 0, 0 index: -1 slider-knob rotate: false - xy: 569, 282 + xy: 1831, 788 size: 29, 38 orig: 29, 38 offset: 0, 0 index: -1 slider-knob-down rotate: false - xy: 1425, 652 + xy: 1862, 788 size: 29, 38 orig: 29, 38 offset: 0, 0 index: -1 slider-knob-over rotate: false - xy: 1391, 584 + xy: 1893, 788 size: 29, 38 orig: 29, 38 offset: 0, 0 index: -1 slider-vertical rotate: false - xy: 309, 866 + xy: 1327, 252 size: 8, 1 orig: 8, 1 offset: 0, 0 index: -1 underline rotate: false - xy: 1933, 862 + xy: 995, 652 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17164,7 +17877,7 @@ underline index: -1 underline-2 rotate: false - xy: 1819, 862 + xy: 957, 652 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17172,7 +17885,7 @@ underline-2 index: -1 underline-disabled rotate: false - xy: 1857, 862 + xy: 919, 594 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17180,12 +17893,852 @@ underline-disabled index: -1 underline-red rotate: false - xy: 1895, 862 + xy: 957, 623 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 offset: 0, 0 index: -1 +unit-alpha-large + rotate: false + xy: 1489, 849 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-alpha-medium + rotate: false + xy: 1591, 354 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-alpha-small + rotate: false + xy: 1275, 263 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-alpha-tiny + rotate: false + xy: 1395, 165 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-alpha-xlarge + rotate: false + xy: 351, 216 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-antumbra-large + rotate: false + xy: 1447, 807 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-antumbra-medium + rotate: false + xy: 1591, 320 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-antumbra-small + rotate: false + xy: 1041, 29 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-antumbra-tiny + rotate: false + xy: 1387, 147 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-antumbra-xlarge + rotate: false + xy: 401, 266 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-arkyid-large + rotate: false + xy: 1405, 765 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-arkyid-medium + rotate: false + xy: 1637, 566 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-arkyid-small + rotate: false + xy: 1067, 55 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-arkyid-tiny + rotate: false + xy: 1379, 126 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-arkyid-xlarge + rotate: false + xy: 451, 316 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-atrax-large + rotate: false + xy: 1363, 723 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-atrax-medium + rotate: false + xy: 1629, 532 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-atrax-small + rotate: false + xy: 1093, 81 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-atrax-tiny + rotate: false + xy: 1371, 108 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-atrax-xlarge + rotate: false + xy: 501, 366 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-beta-large + rotate: false + xy: 1321, 681 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-beta-medium + rotate: false + xy: 1629, 498 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-beta-small + rotate: false + xy: 1119, 107 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-beta-tiny + rotate: false + xy: 1371, 90 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-beta-xlarge + rotate: false + xy: 551, 416 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-bryde-large + rotate: false + xy: 1531, 849 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-bryde-medium + rotate: false + xy: 1625, 464 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-bryde-small + rotate: false + xy: 1145, 133 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-bryde-tiny + rotate: false + xy: 1371, 72 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-bryde-xlarge + rotate: false + xy: 601, 466 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-crawler-large + rotate: false + xy: 1489, 807 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-crawler-medium + rotate: false + xy: 1625, 430 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-crawler-small + rotate: false + xy: 1171, 159 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-crawler-tiny + rotate: false + xy: 1371, 54 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-crawler-xlarge + rotate: false + xy: 651, 516 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-dagger-large + rotate: false + xy: 1447, 765 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-dagger-medium + rotate: false + xy: 1625, 396 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-dagger-small + rotate: false + xy: 1197, 185 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-dagger-tiny + rotate: false + xy: 1371, 36 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-dagger-xlarge + rotate: false + xy: 701, 566 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-eclipse-large + rotate: false + xy: 1405, 723 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-eclipse-medium + rotate: false + xy: 1625, 362 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-eclipse-small + rotate: false + xy: 1223, 211 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-eclipse-tiny + rotate: false + xy: 1371, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-eclipse-xlarge + rotate: false + xy: 351, 166 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-flare-large + rotate: false + xy: 1363, 681 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-flare-medium + rotate: false + xy: 1625, 328 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-flare-small + rotate: false + xy: 1249, 237 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-flare-tiny + rotate: false + xy: 1405, 147 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-flare-xlarge + rotate: false + xy: 401, 216 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-fortress-large + rotate: false + xy: 1573, 849 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-fortress-medium + rotate: false + xy: 1663, 532 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-fortress-small + rotate: false + xy: 1379, 315 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-fortress-tiny + rotate: false + xy: 1397, 129 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-fortress-xlarge + rotate: false + xy: 451, 266 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-gamma-large + rotate: false + xy: 1531, 807 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-gamma-medium + rotate: false + xy: 1663, 498 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-gamma-small + rotate: false + xy: 1067, 29 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-gamma-tiny + rotate: false + xy: 1389, 108 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-gamma-xlarge + rotate: false + xy: 501, 316 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-horizon-large + rotate: false + xy: 1489, 765 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-horizon-medium + rotate: false + xy: 1659, 464 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-horizon-small + rotate: false + xy: 1093, 55 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-horizon-tiny + rotate: false + xy: 1389, 90 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-horizon-xlarge + rotate: false + xy: 551, 366 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-mace-large + rotate: false + xy: 1447, 723 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-mace-medium + rotate: false + xy: 1659, 430 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-mace-small + rotate: false + xy: 1119, 81 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-mace-tiny + rotate: false + xy: 1389, 72 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-mace-xlarge + rotate: false + xy: 601, 416 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-mega-large + rotate: false + xy: 1405, 681 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-mega-medium + rotate: false + xy: 1659, 396 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-mega-small + rotate: false + xy: 1145, 107 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-mega-tiny + rotate: false + xy: 1389, 54 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-mega-xlarge + rotate: false + xy: 651, 466 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-minke-large + rotate: false + xy: 1615, 849 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-minke-medium + rotate: false + xy: 1659, 362 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-minke-small + rotate: false + xy: 1171, 133 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-minke-tiny + rotate: false + xy: 1389, 36 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-minke-xlarge + rotate: false + xy: 701, 516 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-mono-large + rotate: false + xy: 1573, 807 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-mono-medium + rotate: false + xy: 1659, 328 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-mono-small + rotate: false + xy: 1197, 159 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-mono-tiny + rotate: false + xy: 1389, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-mono-xlarge + rotate: false + xy: 351, 116 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-nova-large + rotate: false + xy: 1531, 765 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-nova-medium + rotate: false + xy: 1625, 294 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-nova-small + rotate: false + xy: 1223, 185 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-nova-tiny + rotate: false + xy: 1415, 129 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-nova-xlarge + rotate: false + xy: 401, 166 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-poly-large + rotate: false + xy: 1489, 723 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-poly-medium + rotate: false + xy: 1659, 294 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-poly-small + rotate: false + xy: 1249, 211 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-poly-tiny + rotate: false + xy: 1407, 111 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-poly-xlarge + rotate: false + xy: 451, 216 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-pulsar-large + rotate: false + xy: 1447, 681 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-pulsar-medium + rotate: false + xy: 1653, 752 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-pulsar-small + rotate: false + xy: 1275, 237 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-pulsar-tiny + rotate: false + xy: 1407, 93 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-pulsar-xlarge + rotate: false + xy: 501, 266 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-quasar-large + rotate: false + xy: 1657, 849 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-quasar-medium + rotate: false + xy: 1695, 794 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-quasar-small + rotate: false + xy: 1301, 252 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-quasar-tiny + rotate: false + xy: 1407, 75 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-quasar-xlarge + rotate: false + xy: 551, 316 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-risse-large + rotate: false + xy: 1615, 807 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-risse-medium + rotate: false + xy: 1729, 794 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-risse-small + rotate: false + xy: 1327, 273 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-risse-tiny + rotate: false + xy: 1407, 57 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-risse-xlarge + rotate: false + xy: 601, 366 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-spiroct-large + rotate: false + xy: 1573, 765 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-spiroct-medium + rotate: false + xy: 1763, 794 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-spiroct-small + rotate: false + xy: 1405, 315 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-spiroct-tiny + rotate: false + xy: 1407, 39 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-spiroct-xlarge + rotate: false + xy: 651, 416 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-zenith-large + rotate: false + xy: 1531, 723 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-zenith-medium + rotate: false + xy: 1797, 794 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-zenith-small + rotate: false + xy: 1093, 29 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-zenith-tiny + rotate: false + xy: 1407, 21 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-zenith-xlarge + rotate: false + xy: 701, 466 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 whiteui rotate: false xy: 821, 928 @@ -17195,7 +18748,7 @@ whiteui index: -1 window-empty rotate: false - xy: 1514, 629 + xy: 1924, 765 size: 27, 61 split: 4, 4, 2, 2 orig: 27, 61 diff --git a/core/assets/sprites/fallback/sprites.png b/core/assets/sprites/fallback/sprites.png index 5b30418964..6b05408ab2 100644 Binary files a/core/assets/sprites/fallback/sprites.png and b/core/assets/sprites/fallback/sprites.png differ diff --git a/core/assets/sprites/fallback/sprites2.png b/core/assets/sprites/fallback/sprites2.png index 052962843f..6ee45516ec 100644 Binary files a/core/assets/sprites/fallback/sprites2.png and b/core/assets/sprites/fallback/sprites2.png differ diff --git a/core/assets/sprites/fallback/sprites3.png b/core/assets/sprites/fallback/sprites3.png index b5f687a13e..d7621ba8ac 100644 Binary files a/core/assets/sprites/fallback/sprites3.png and b/core/assets/sprites/fallback/sprites3.png differ diff --git a/core/assets/sprites/fallback/sprites4.png b/core/assets/sprites/fallback/sprites4.png index 73085c9826..00dd54576b 100644 Binary files a/core/assets/sprites/fallback/sprites4.png and b/core/assets/sprites/fallback/sprites4.png differ diff --git a/core/assets/sprites/fallback/sprites5.png b/core/assets/sprites/fallback/sprites5.png index 8ae612c4ed..e662f75c4e 100644 Binary files a/core/assets/sprites/fallback/sprites5.png and b/core/assets/sprites/fallback/sprites5.png differ diff --git a/core/assets/sprites/fallback/sprites6.png b/core/assets/sprites/fallback/sprites6.png index 7066e76ee9..1bb460f317 100644 Binary files a/core/assets/sprites/fallback/sprites6.png and b/core/assets/sprites/fallback/sprites6.png differ diff --git a/core/assets/sprites/fallback/sprites7.png b/core/assets/sprites/fallback/sprites7.png new file mode 100644 index 0000000000..19952fb37c Binary files /dev/null and b/core/assets/sprites/fallback/sprites7.png differ diff --git a/core/assets/sprites/noiseAlpha.png b/core/assets/sprites/noiseAlpha.png new file mode 100644 index 0000000000..3553bc5891 Binary files /dev/null and b/core/assets/sprites/noiseAlpha.png differ diff --git a/core/assets/sprites/sprites.atlas b/core/assets/sprites/sprites.atlas index d0dd6b3113..8deffc814e 100644 --- a/core/assets/sprites/sprites.atlas +++ b/core/assets/sprites/sprites.atlas @@ -6,5763 +6,6421 @@ filter: nearest,nearest repeat: none core-silo rotate: false - xy: 291, 759 + xy: 1097, 563 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 data-processor rotate: false - xy: 3013, 1081 + xy: 1877, 931 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 data-processor-2 rotate: false - xy: 2121, 525 + xy: 3487, 369 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 data-processor-top rotate: false - xy: 3045, 983 + xy: 1975, 931 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 launch-pad rotate: false - xy: 3699, 1081 + xy: 2529, 747 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 launch-pad-large rotate: false - xy: 1233, 887 + xy: 3121, 1273 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 launch-pad-light rotate: false - xy: 3535, 885 + xy: 2627, 747 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 launchpod rotate: false - xy: 3099, 1483 - size: 66, 64 - orig: 66, 64 + xy: 3691, 649 + size: 64, 64 + orig: 64, 64 offset: 0, 0 index: -1 force-projector rotate: false - xy: 1657, 719 + xy: 1941, 637 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 force-projector-top rotate: false - xy: 3307, 1081 + xy: 2039, 735 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 large-overdrive-projector rotate: false - xy: 3405, 1081 + xy: 2137, 648 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 large-overdrive-projector-top rotate: false - xy: 3503, 1081 + xy: 2235, 783 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 mend-projector rotate: false - xy: 2479, 621 + xy: 3757, 537 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 mend-projector-top rotate: false - xy: 2545, 621 + xy: 3823, 537 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 mender rotate: false - xy: 2915, 1303 + xy: 2393, 177 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 mender-top rotate: false - xy: 2949, 1303 + xy: 2427, 149 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 overdrive-projector rotate: false - xy: 2677, 621 + xy: 3889, 537 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 overdrive-projector-top rotate: false - xy: 2319, 555 + xy: 3691, 517 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 shock-mine rotate: false - xy: 1397, 203 + xy: 3549, 59 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-loader rotate: false - xy: 854, 57 + xy: 2755, 845 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-unloader rotate: false - xy: 2555, 983 + xy: 3771, 1195 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 bridge-arrow rotate: false - xy: 3745, 751 + xy: 2597, 251 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-conveyor rotate: false - xy: 3847, 785 + xy: 2767, 251 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-conveyor-bridge rotate: false - xy: 3745, 683 + xy: 2801, 251 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-conveyor-end rotate: false - xy: 3779, 717 + xy: 2835, 251 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 center rotate: false - xy: 3813, 751 + xy: 2869, 251 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-0-0 rotate: false - xy: 1371, 237 + xy: 269, 1 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-armored-conveyor-full rotate: false - xy: 1371, 237 + xy: 269, 1 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-0-1 rotate: false - xy: 1405, 237 + xy: 303, 1 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-0-2 rotate: false - xy: 1439, 237 + xy: 337, 1 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-0-3 rotate: false - xy: 1473, 237 + xy: 371, 1 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-1-0 rotate: false - xy: 1507, 237 + xy: 405, 1 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-1-1 rotate: false - xy: 756, 7 + xy: 439, 1 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-1-2 rotate: false - xy: 790, 7 + xy: 473, 1 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-1-3 rotate: false - xy: 824, 7 + xy: 4063, 977 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-2-0 rotate: false - xy: 4062, 1445 + xy: 4063, 943 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-2-1 rotate: false - xy: 1673, 271 + xy: 4061, 2015 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-2-2 rotate: false - xy: 1707, 271 + xy: 3252, 408 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-2-3 rotate: false - xy: 2785, 619 + xy: 2143, 236 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-3-0 rotate: false - xy: 2819, 619 + xy: 2223, 271 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-3-1 rotate: false - xy: 2853, 619 + xy: 4061, 1981 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-3-2 rotate: false - xy: 2887, 619 + xy: 4061, 1947 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-3-3 rotate: false - xy: 2781, 585 + xy: 4061, 1913 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-4-0 rotate: false - xy: 2781, 551 + xy: 4061, 1879 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-4-1 rotate: false - xy: 2815, 585 + xy: 4061, 1845 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-4-2 rotate: false - xy: 2781, 517 + xy: 4061, 1811 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-4-3 rotate: false - xy: 2815, 551 + xy: 4063, 1777 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-0-1 rotate: false - xy: 3881, 683 + xy: 2665, 217 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-0-2 rotate: false - xy: 3915, 717 + xy: 2699, 217 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-0-3 rotate: false - xy: 3949, 751 + xy: 2733, 217 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-1-0 rotate: false - xy: 3915, 683 + xy: 2767, 217 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-1-1 rotate: false - xy: 3949, 717 + xy: 2801, 217 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-1-2 rotate: false - xy: 3949, 683 + xy: 2835, 217 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-1-3 rotate: false - xy: 3983, 771 + xy: 2869, 217 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-2-0 rotate: false - xy: 4017, 771 + xy: 2903, 217 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-2-1 rotate: false - xy: 3983, 737 + xy: 2937, 217 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-2-2 rotate: false - xy: 3983, 703 + xy: 2971, 217 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-2-3 rotate: false - xy: 4017, 737 + xy: 3005, 217 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-3-0 rotate: false - xy: 4051, 753 + xy: 3039, 301 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-3-1 rotate: false - xy: 4017, 703 + xy: 3039, 267 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-3-2 rotate: false - xy: 4051, 719 + xy: 3039, 233 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-3-3 rotate: false - xy: 3983, 669 + xy: 3039, 199 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-4-0 rotate: false - xy: 4017, 669 + xy: 3073, 269 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-4-1 rotate: false - xy: 4051, 685 + xy: 3107, 269 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-4-2 rotate: false - xy: 4051, 651 + xy: 3073, 235 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-4-3 rotate: false - xy: 3643, 641 + xy: 3141, 269 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plastanium-conveyor rotate: false - xy: 3265, 619 + xy: 2835, 149 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plastanium-conveyor-0 rotate: false - xy: 3299, 627 + xy: 2869, 149 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plastanium-conveyor-1 rotate: false - xy: 3333, 627 + xy: 2903, 149 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plastanium-conveyor-2 rotate: false - xy: 3367, 627 + xy: 2937, 149 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plastanium-conveyor-edge rotate: false - xy: 3401, 627 + xy: 2971, 149 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plastanium-conveyor-stack rotate: false - xy: 3435, 627 + xy: 3005, 149 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-0-1 rotate: false - xy: 3503, 593 + xy: 3583, 23 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-0-2 rotate: false - xy: 3537, 593 + xy: 3617, 23 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-0-3 rotate: false - xy: 3571, 593 + xy: 2185, 233 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-1-0 rotate: false - xy: 3605, 593 + xy: 2185, 199 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-1-1 rotate: false - xy: 3639, 573 + xy: 2185, 165 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-1-2 rotate: false - xy: 3673, 581 + xy: 2185, 131 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-1-3 rotate: false - xy: 3707, 581 + xy: 2185, 97 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-2-0 rotate: false - xy: 3741, 581 + xy: 2219, 203 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-2-1 rotate: false - xy: 3775, 581 + xy: 2253, 203 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-2-2 rotate: false - xy: 3809, 581 + xy: 2219, 169 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-2-3 rotate: false - xy: 3843, 581 + xy: 2219, 135 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-3-0 rotate: false - xy: 3877, 581 + xy: 2253, 169 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-3-1 rotate: false - xy: 3911, 581 + xy: 2219, 101 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-3-2 rotate: false - xy: 3945, 581 + xy: 2253, 135 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-3-3 rotate: false - xy: 3979, 567 + xy: 2253, 101 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-4-0 rotate: false - xy: 4013, 567 + xy: 2287, 173 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-4-1 rotate: false - xy: 4047, 549 + xy: 2321, 173 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-4-2 rotate: false - xy: 1737, 329 + xy: 2287, 139 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-4-3 rotate: false - xy: 1771, 330 + xy: 2355, 173 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cross rotate: false - xy: 3983, 635 + xy: 3243, 256 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 distributor rotate: false - xy: 2215, 655 + xy: 3559, 773 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 inverted-sorter rotate: false - xy: 1052, 143 + xy: 3379, 193 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 junction rotate: false - xy: 1222, 166 + xy: 2971, 183 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 mass-conveyor rotate: false - xy: 3731, 983 + xy: 2529, 649 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 mass-conveyor-edge rotate: false - xy: 3895, 1081 + xy: 2627, 649 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 mass-conveyor-top rotate: false - xy: 3731, 885 + xy: 2725, 649 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 payload-router-top rotate: false - xy: 3731, 885 + xy: 2725, 649 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 mass-driver-base rotate: false - xy: 3829, 885 + xy: 2235, 587 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 overflow-gate rotate: false - xy: 3017, 1303 + xy: 2495, 149 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 payload-router rotate: false - xy: 1629, 523 + xy: 2823, 551 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 payload-router-edge rotate: false - xy: 1755, 789 + xy: 2235, 489 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 payload-router-over rotate: false - xy: 1755, 691 + xy: 2333, 489 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 phase-conveyor rotate: false - xy: 3095, 619 + xy: 2665, 149 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conveyor-arrow rotate: false - xy: 3129, 619 + xy: 2699, 149 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conveyor-bridge rotate: false - xy: 3163, 619 + xy: 2733, 149 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conveyor-end rotate: false - xy: 3197, 619 + xy: 2767, 149 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 router rotate: false - xy: 4017, 601 + xy: 3549, 161 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sorter rotate: false - xy: 1465, 203 + xy: 3617, 57 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 underflow-gate rotate: false - xy: 3299, 559 + xy: 2321, 105 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 blast-drill rotate: false - xy: 453, 859 + xy: 1561, 1143 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 blast-drill-rim rotate: false - xy: 453, 729 + xy: 1821, 1403 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 blast-drill-rotator rotate: false - xy: 453, 599 + xy: 1821, 1273 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 blast-drill-top rotate: false - xy: 453, 469 + xy: 1691, 1143 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 drill-top rotate: false - xy: 3099, 1351 + xy: 3559, 575 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 turbine-generator-liquid rotate: false - xy: 3099, 1351 + xy: 3559, 575 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 laser-drill rotate: false - xy: 3437, 983 + xy: 2235, 685 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 laser-drill-rim rotate: false - xy: 3601, 1081 + xy: 2333, 783 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 laser-drill-rotator rotate: false - xy: 3437, 885 + xy: 2333, 685 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 laser-drill-top rotate: false - xy: 3535, 983 + xy: 2431, 747 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 mechanical-drill rotate: false - xy: 2677, 687 + xy: 3889, 735 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 mechanical-drill-rotator rotate: false - xy: 2347, 621 + xy: 3889, 669 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 mechanical-drill-top rotate: false - xy: 2413, 621 + xy: 3889, 603 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 oil-extractor rotate: false - xy: 3993, 1081 + xy: 2431, 551 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 oil-extractor-liquid rotate: false - xy: 1531, 609 + xy: 2529, 551 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 oil-extractor-rotator rotate: false - xy: 1531, 511 + xy: 2627, 551 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 oil-extractor-top rotate: false - xy: 1629, 621 + xy: 2725, 551 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 pneumatic-drill rotate: false - xy: 2451, 489 + xy: 3955, 670 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 pneumatic-drill-rotator rotate: false - xy: 2517, 489 + xy: 3955, 604 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 pneumatic-drill-top rotate: false - xy: 2583, 489 + xy: 3955, 538 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 water-extractor rotate: false - xy: 952, 37 + xy: 729, 22 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 water-extractor-liquid rotate: false - xy: 3985, 805 + xy: 795, 22 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 water-extractor-rotator rotate: false - xy: 1699, 429 + xy: 861, 22 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 water-extractor-top rotate: false - xy: 1765, 429 + xy: 4015, 142 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-border rotate: false - xy: 2883, 585 + xy: 4063, 1607 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-middle rotate: false - xy: 2405, 1319 + xy: 2893, 319 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-select rotate: false - xy: 3643, 743 + xy: 2801, 285 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-liquid rotate: false - xy: 3847, 717 + xy: 2461, 217 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 message rotate: false - xy: 2983, 1303 + xy: 2461, 149 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 place-arrow rotate: false - xy: 1727, 593 + xy: 2431, 453 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 bridge-conduit rotate: false - xy: 3813, 785 + xy: 2631, 251 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-conduit-arrow rotate: false - xy: 3711, 683 + xy: 2665, 251 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-conveyor-arrow rotate: false - xy: 3711, 683 + xy: 2665, 251 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-conduit-bridge rotate: false - xy: 3745, 717 + xy: 2699, 251 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-conduit-end rotate: false - xy: 3779, 751 + xy: 2733, 251 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom rotate: false - xy: 3813, 717 + xy: 2971, 251 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-0 rotate: false - xy: 3847, 751 + xy: 3005, 251 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-1 rotate: false - xy: 3915, 785 + xy: 2393, 245 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-2 rotate: false - xy: 3813, 683 + xy: 2427, 217 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-3 rotate: false - xy: 3813, 683 + xy: 2427, 217 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-4 rotate: false - xy: 3813, 683 + xy: 2427, 217 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-0 rotate: false - xy: 3881, 751 + xy: 2495, 217 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-1 rotate: false - xy: 3949, 785 + xy: 2529, 217 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-2 rotate: false - xy: 3847, 683 + xy: 2563, 217 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-3 rotate: false - xy: 3881, 717 + xy: 2597, 217 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-3 rotate: false - xy: 3881, 717 + xy: 2597, 217 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-4 rotate: false - xy: 3915, 751 + xy: 2631, 217 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-junction rotate: false - xy: 1222, 132 + xy: 3073, 167 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-overflow-gate rotate: false - xy: 1222, 64 + xy: 3175, 156 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-overflow-gate-top rotate: false - xy: 1154, 30 + xy: 3209, 156 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-router-bottom rotate: false - xy: 1188, 30 + xy: 3243, 154 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-router-liquid rotate: false - xy: 1222, 30 + xy: 3277, 126 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-router-top rotate: false - xy: 1261, 199 + xy: 3311, 126 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-tank-bottom rotate: false - xy: 3633, 983 + xy: 2725, 747 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 liquid-tank-liquid rotate: false - xy: 3797, 1081 + xy: 2823, 747 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 liquid-tank-top rotate: false - xy: 3633, 885 + xy: 2431, 649 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 mechanical-pump rotate: false - xy: 2813, 1303 + xy: 2291, 207 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 mechanical-pump-liquid rotate: false - xy: 2847, 1303 + xy: 2325, 207 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 rotary-pump-liquid rotate: false - xy: 2847, 1303 + xy: 2325, 207 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 thermal-pump-liquid rotate: false - xy: 2847, 1303 + xy: 2325, 207 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conduit rotate: false - xy: 3051, 1303 + xy: 2529, 149 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conduit-arrow rotate: false - xy: 2993, 619 + xy: 2563, 149 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conduit-bridge rotate: false - xy: 3027, 611 + xy: 2597, 149 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conduit-end rotate: false - xy: 3061, 611 + xy: 2631, 149 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plated-conduit-cap rotate: false - xy: 3503, 627 + xy: 3073, 133 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plated-conduit-top-0 rotate: false - xy: 3537, 627 + xy: 3107, 133 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plated-conduit-top-1 rotate: false - xy: 3571, 627 + xy: 3141, 133 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plated-conduit-top-2 rotate: false - xy: 3605, 627 + xy: 3175, 122 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plated-conduit-top-3 rotate: false - xy: 3639, 607 + xy: 3209, 122 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plated-conduit-top-4 rotate: false - xy: 1868, 345 + xy: 3243, 120 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-0 rotate: false - xy: 3745, 615 + xy: 3379, 91 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-1 rotate: false - xy: 3779, 615 + xy: 3413, 91 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-2 rotate: false - xy: 3813, 615 + xy: 3447, 91 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-4 rotate: false - xy: 3847, 615 + xy: 3481, 91 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 rotary-pump rotate: false - xy: 2121, 459 + xy: 4021, 472 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 thermal-pump rotate: false - xy: 1951, 723 + xy: 3019, 551 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 battery rotate: false - xy: 2849, 585 + xy: 4063, 1743 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 battery-large rotate: false - xy: 658, 111 + xy: 3673, 1045 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 battery-large-top rotate: false - xy: 756, 139 + xy: 509, 695 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 battery-top rotate: false - xy: 2781, 483 + xy: 4063, 1709 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 combustion-generator rotate: false - xy: 3881, 785 + xy: 2903, 251 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 combustion-generator-top rotate: false - xy: 3779, 683 + xy: 2937, 251 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 differential-generator rotate: false - xy: 3045, 885 + xy: 1811, 817 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 differential-generator-liquid rotate: false - xy: 3111, 1081 + xy: 1909, 833 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 differential-generator-top rotate: false - xy: 3143, 983 + xy: 2007, 833 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 diode rotate: false - xy: 4017, 635 + xy: 3243, 222 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 diode-arrow rotate: false - xy: 4051, 617 + xy: 3175, 190 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 illuminator rotate: false - xy: 1018, 143 + xy: 3311, 228 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 illuminator-top rotate: false - xy: 1052, 177 + xy: 3311, 194 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 impact-reactor rotate: false - xy: 843, 627 + xy: 2861, 1403 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 impact-reactor-bottom rotate: false - xy: 973, 757 + xy: 2861, 1273 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 impact-reactor-light rotate: false - xy: 1103, 887 + xy: 2731, 1143 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 impact-reactor-plasma-0 rotate: false - xy: 713, 367 + xy: 2991, 1403 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 impact-reactor-plasma-1 rotate: false - xy: 843, 497 + xy: 2991, 1273 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 impact-reactor-plasma-2 rotate: false - xy: 973, 627 + xy: 2861, 1143 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 impact-reactor-plasma-3 rotate: false - xy: 1103, 757 + xy: 3121, 1403 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 power-node rotate: false - xy: 1902, 345 + xy: 3277, 92 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 power-node-large rotate: false - xy: 2649, 489 + xy: 3955, 472 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 power-source rotate: false - xy: 3677, 615 + xy: 3311, 92 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 power-void rotate: false - xy: 3711, 615 + xy: 3345, 91 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 rtg-generator rotate: false - xy: 2187, 457 + xy: 3559, 509 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 rtg-generator-top rotate: false - xy: 4051, 583 + xy: 3549, 127 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 solar-panel rotate: false - xy: 1431, 203 + xy: 3583, 57 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 solar-panel-large rotate: false - xy: 2049, 821 + xy: 3019, 649 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 surge-tower rotate: false - xy: 1547, 379 + xy: 3619, 311 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 thermal-generator rotate: false - xy: 1349, 313 + xy: 3817, 207 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 thorium-reactor rotate: false - xy: 2147, 821 + xy: 3019, 453 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 thorium-reactor-lights rotate: false - xy: 2049, 723 + xy: 3117, 747 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 thorium-reactor-top rotate: false - xy: 2147, 723 + xy: 3117, 649 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 turbine-generator rotate: false - xy: 1547, 313 + xy: 3949, 273 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 turbine-generator-cap rotate: false - xy: 1613, 313 + xy: 3949, 207 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 turbine-generator-top rotate: false - xy: 957, 301 + xy: 4015, 340 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 turbine-generator-turbine0 rotate: false - xy: 957, 235 + xy: 4015, 274 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 turbine-generator-turbine1 rotate: false - xy: 952, 169 + xy: 4015, 208 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 alloy-smelter rotate: false - xy: 1087, 361 + xy: 3477, 1045 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 alloy-smelter-top rotate: false - xy: 1185, 360 + xy: 3575, 1045 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 blast-mixer rotate: false - xy: 3655, 819 + xy: 3289, 530 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-forge rotate: false - xy: 2229, 1081 + xy: 2265, 881 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 coal-centrifuge rotate: false - xy: 4020, 1479 + xy: 3355, 435 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cryofluidmixer-bottom rotate: false - xy: 1923, 525 + xy: 3493, 765 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cryofluidmixer-liquid rotate: false - xy: 1989, 591 + xy: 3493, 699 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cryofluidmixer-top rotate: false - xy: 1989, 525 + xy: 3493, 633 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cultivator rotate: false - xy: 2055, 591 + xy: 3493, 567 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cultivator-middle rotate: false - xy: 2055, 525 + xy: 3487, 501 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cultivator-top rotate: false - xy: 2121, 591 + xy: 3487, 435 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 disassembler rotate: false - xy: 3143, 885 + xy: 2105, 844 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 disassembler-liquid rotate: false - xy: 3209, 1081 + xy: 2979, 963 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 disassembler-spinner rotate: false - xy: 3241, 983 + xy: 3077, 943 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 graphite-press rotate: false - xy: 3297, 1328 + xy: 3625, 707 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 incinerator rotate: false - xy: 1018, 109 + xy: 3345, 193 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-source rotate: false - xy: 1120, 65 + xy: 2631, 183 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-void rotate: false - xy: 1188, 132 + xy: 2937, 183 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 kiln rotate: false - xy: 2281, 655 + xy: 3625, 641 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 kiln-top rotate: false - xy: 2253, 589 + xy: 3625, 575 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 silicon-smelter-top rotate: false - xy: 2253, 589 + xy: 3625, 575 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 liquid-source rotate: false - xy: 1256, 97 + xy: 3413, 125 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-void rotate: false - xy: 1256, 63 + xy: 3447, 125 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 melter rotate: false - xy: 2881, 1303 + xy: 2359, 207 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 multi-press rotate: false - xy: 3927, 983 + xy: 2333, 587 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 phase-weaver rotate: false - xy: 2451, 555 + xy: 3889, 471 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 phase-weaver-bottom rotate: false - xy: 2517, 555 + xy: 3909, 868 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 phase-weaver-weave rotate: false - xy: 2583, 555 + xy: 3909, 802 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 plastanium-compressor rotate: false - xy: 2649, 555 + xy: 3975, 868 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 plastanium-compressor-top rotate: false - xy: 2319, 489 + xy: 3975, 802 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 pulverizer rotate: false - xy: 3881, 615 + xy: 3515, 91 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulverizer-rotator rotate: false - xy: 3915, 615 + xy: 3520, 229 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pyratite-mixer rotate: false - xy: 1923, 459 + xy: 4021, 670 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 separator rotate: false - xy: 1303, 445 + xy: 3955, 406 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 separator-liquid rotate: false - xy: 1369, 445 + xy: 4021, 406 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 separator-spinner rotate: false - xy: 1435, 447 + xy: 3751, 339 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 silicon-crucible rotate: false - xy: 1825, 495 + xy: 3049, 845 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 silicon-crucible-top rotate: false - xy: 1951, 821 + xy: 3019, 747 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 silicon-smelter rotate: false - xy: 1283, 379 + xy: 3817, 339 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 spore-press rotate: false - xy: 1349, 379 + xy: 3883, 339 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 spore-press-frame0 rotate: false - xy: 1501, 445 + xy: 3685, 319 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 spore-press-frame1 rotate: false - xy: 1567, 445 + xy: 3751, 273 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 spore-press-frame2 rotate: false - xy: 1633, 457 + xy: 3817, 273 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 spore-press-liquid rotate: false - xy: 1415, 379 + xy: 3883, 273 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 spore-press-top rotate: false - xy: 1481, 379 + xy: 3553, 311 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 rock1 rotate: false - xy: 3143, 653 + xy: 2952, 353 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 rock2 rotate: false - xy: 3193, 653 + xy: 3002, 353 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 sand-boulder1 rotate: false - xy: 2349, 1201 + xy: 3549, 93 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sand-boulder2 rotate: false - xy: 1295, 199 + xy: 3583, 193 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shale-boulder1 rotate: false - xy: 1329, 203 + xy: 3583, 91 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shale-boulder2 rotate: false - xy: 1363, 203 + xy: 3617, 91 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 snowrock1 rotate: false - xy: 3343, 661 + xy: 3202, 292 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 snowrock2 rotate: false - xy: 3393, 661 + xy: 3252, 348 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 spore-cluster1 rotate: false - xy: 1433, 271 + xy: 2354, 347 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 spore-cluster2 rotate: false - xy: 1475, 271 + xy: 2185, 305 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 spore-cluster3 rotate: false - xy: 1517, 271 + xy: 2227, 305 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 white-tree rotate: false - xy: 1, 1083 + xy: 1, 761 size: 320, 320 orig: 320, 320 offset: 0, 0 index: -1 white-tree-dead rotate: false - xy: 323, 1405 + xy: 323, 1083 size: 320, 320 orig: 320, 320 offset: 0, 0 index: -1 container rotate: false - xy: 2409, 753 + xy: 3457, 831 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 core-foundation rotate: false - xy: 583, 729 + xy: 2341, 1403 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 core-foundation-team rotate: false - xy: 583, 599 + xy: 2341, 1273 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 core-nucleus rotate: false - xy: 2613, 1387 + xy: 1161, 887 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 core-nucleus-team rotate: false - xy: 2775, 1387 + xy: 1323, 887 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 core-shard rotate: false - xy: 2555, 885 + xy: 3771, 1097 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 core-shard-team rotate: false - xy: 2621, 1081 + xy: 3869, 1195 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 unloader rotate: false - xy: 3333, 559 + xy: 2355, 139 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 unloader-center rotate: false - xy: 3367, 559 + xy: 2355, 105 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 vault rotate: false - xy: 2245, 787 + xy: 3117, 453 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 arc-heat rotate: false - xy: 1337, 237 + xy: 1711, 749 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-1 rotate: false - xy: 2815, 517 + xy: 4063, 1675 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-2 rotate: false - xy: 3099, 1417 + xy: 3289, 464 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-3 rotate: false - xy: 854, 155 + xy: 2469, 943 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-4 rotate: false - xy: 453, 339 + xy: 1951, 1403 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 hail-heat rotate: false - xy: 1139, 319 + xy: 829, 547 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 lancer-heat rotate: false - xy: 2347, 687 + xy: 3691, 715 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 meltdown-heat rotate: false - xy: 843, 367 + xy: 3121, 1143 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 ripple-heat rotate: false - xy: 1853, 789 + xy: 2627, 453 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 salvo-heat rotate: false - xy: 2319, 423 + xy: 3553, 443 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 salvo-panel-left rotate: false - xy: 2385, 423 + xy: 3553, 377 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 salvo-panel-right rotate: false - xy: 2451, 423 + xy: 3619, 443 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 scorch-heat rotate: false - xy: 1290, 131 + xy: 3583, 159 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 wave-liquid rotate: false - xy: 1679, 363 + xy: 1796, 418 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 additive-reconstructor rotate: false - xy: 2131, 1081 + xy: 3183, 1045 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 additive-reconstructor-top rotate: false - xy: 1205, 458 + xy: 3281, 1045 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 air-factory rotate: false - xy: 1595, 817 + xy: 3379, 1045 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 command-center rotate: false - xy: 2343, 753 + xy: 3355, 369 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 exponential-reconstructor rotate: false - xy: 1517, 1017 + xy: 935, 985 size: 224, 224 orig: 224, 224 offset: 0, 0 index: -1 exponential-reconstructor-top rotate: false - xy: 1805, 1275 + xy: 1193, 1049 size: 224, 224 orig: 224, 224 offset: 0, 0 index: -1 factory-in-3 rotate: false - xy: 3241, 885 + xy: 1843, 719 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 factory-in-5 rotate: false - xy: 3534, 1435 + xy: 1148, 239 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 factory-in-7 rotate: false - xy: 2063, 1533 + xy: 903, 759 size: 224, 224 orig: 224, 224 offset: 0, 0 index: -1 factory-in-9 rotate: false - xy: 1225, 1469 + xy: 2127, 1759 size: 288, 288 orig: 288, 288 offset: 0, 0 index: -1 factory-out-3 rotate: false - xy: 1461, 707 + xy: 1843, 621 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 factory-out-5 rotate: false - xy: 3696, 1435 + xy: 1310, 239 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 factory-out-7 rotate: false - xy: 2289, 1565 + xy: 871, 533 size: 224, 224 orig: 224, 224 offset: 0, 0 index: -1 factory-out-9 rotate: false - xy: 1515, 1759 + xy: 2417, 1759 size: 288, 288 orig: 288, 288 offset: 0, 0 index: -1 factory-top-3 rotate: false - xy: 1559, 719 + xy: 1941, 735 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 ground-factory rotate: false - xy: 3339, 885 + xy: 2137, 746 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 multiplicative-reconstructor rotate: false - xy: 3858, 1435 + xy: 1472, 239 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 multiplicative-reconstructor-top rotate: false - xy: 3363, 1273 + xy: 1634, 239 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 naval-factory rotate: false - xy: 3927, 885 + xy: 2137, 550 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 rally-point rotate: false - xy: 1989, 459 + xy: 4021, 604 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 repair-point-base rotate: false - xy: 3983, 601 + xy: 3549, 195 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 resupply-point rotate: false - xy: 2055, 459 + xy: 4021, 538 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 tetrative-reconstructor rotate: false - xy: 1515, 1469 + xy: 2707, 1759 size: 288, 288 orig: 288, 288 offset: 0, 0 index: -1 tetrative-reconstructor-top rotate: false - xy: 1805, 1759 + xy: 2997, 1759 size: 288, 288 orig: 288, 288 offset: 0, 0 index: -1 copper-wall rotate: false - xy: 3677, 649 + xy: 3073, 201 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 copper-wall-large rotate: false - xy: 2475, 753 + xy: 3427, 765 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 door rotate: false - xy: 1023, 211 + xy: 3209, 190 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 door-large rotate: false - xy: 2187, 589 + xy: 3559, 707 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 door-large-open rotate: false - xy: 2187, 523 + xy: 3559, 641 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 door-open rotate: false - xy: 1057, 211 + xy: 3243, 188 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-wall rotate: false - xy: 3231, 619 + xy: 2801, 149 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-wall-large rotate: false - xy: 2385, 555 + xy: 3823, 471 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 plastanium-wall rotate: false - xy: 3469, 627 + xy: 3039, 131 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plastanium-wall-large rotate: false - xy: 2385, 489 + xy: 3955, 736 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 scrap-wall-gigantic rotate: false - xy: 973, 497 + xy: 3511, 1143 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 scrap-wall-huge2 rotate: false - xy: 1853, 691 + xy: 2921, 453 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 scrap-wall-huge3 rotate: false - xy: 1825, 593 + xy: 2951, 845 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 scrap-wall-large1 rotate: false - xy: 2583, 423 + xy: 3691, 451 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 scrap-wall-large2 rotate: false - xy: 2649, 423 + xy: 3685, 385 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 scrap-wall-large3 rotate: false - xy: 2715, 555 + xy: 3757, 405 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 scrap-wall-large4 rotate: false - xy: 2715, 489 + xy: 3823, 405 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 scrap-wall2 rotate: false - xy: 1290, 97 + xy: 3583, 125 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap-wall3 rotate: false - xy: 1290, 63 + xy: 3617, 159 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap-wall4 rotate: false - xy: 1290, 29 + xy: 3617, 125 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap-wall5 rotate: false - xy: 1290, 29 + xy: 3617, 125 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 surge-wall rotate: false - xy: 3435, 593 + xy: 3515, 57 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 surge-wall-large rotate: false - xy: 1613, 379 + xy: 3685, 253 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 thorium-wall rotate: false - xy: 3469, 593 + xy: 3549, 25 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 thorium-wall-large rotate: false - xy: 1415, 313 + xy: 3883, 207 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 thruster rotate: false - xy: 1233, 757 + xy: 3641, 1143 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 titanium-wall rotate: false - xy: 1567, 203 + xy: 2287, 105 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-wall-large rotate: false - xy: 1481, 313 + xy: 3949, 339 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 bullet rotate: false - xy: 2739, 765 + xy: 3655, 851 size: 52, 52 orig: 52, 52 offset: 0, 0 index: -1 bullet-back rotate: false - xy: 2625, 1333 + xy: 2152, 496 size: 52, 52 orig: 52, 52 offset: 0, 0 index: -1 casing rotate: false - xy: 1733, 915 + xy: 1931, 603 size: 8, 16 orig: 8, 16 offset: 0, 0 index: -1 circle-end rotate: false - xy: 1233, 556 + xy: 2163, 942 size: 100, 199 orig: 100, 199 offset: 0, 0 index: -1 circle-mid rotate: false - xy: 4085, 586 + xy: 4081, 205 size: 1, 199 orig: 1, 199 offset: 0, 0 index: -1 circle-shadow rotate: false - xy: 3169, 1588 + xy: 727, 88 size: 201, 201 orig: 201, 201 offset: 0, 0 index: -1 error rotate: false - xy: 2893, 703 + xy: 2078, 34 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 laser rotate: false - xy: 607, 1065 + xy: 607, 743 size: 4, 48 orig: 4, 48 offset: 0, 0 index: -1 laser-end rotate: false - xy: 3433, 811 + xy: 3215, 664 size: 72, 72 orig: 72, 72 offset: 0, 0 index: -1 minelaser rotate: false - xy: 4091, 887 + xy: 3553, 517 size: 4, 48 orig: 4, 48 offset: 0, 0 index: -1 minelaser-end rotate: false - xy: 3507, 811 + xy: 3215, 590 size: 72, 72 orig: 72, 72 offset: 0, 0 index: -1 missile rotate: false - xy: 1559, 275 + xy: 2269, 309 size: 36, 36 orig: 36, 36 offset: 0, 0 index: -1 missile-back rotate: false - xy: 1597, 275 + xy: 2307, 309 size: 36, 36 orig: 36, 36 offset: 0, 0 index: -1 +parallax-laser + rotate: false + xy: 3685, 459 + size: 4, 48 + orig: 4, 48 + offset: 0, 0 + index: -1 +parallax-laser-end + rotate: false + xy: 3215, 516 + size: 72, 72 + orig: 72, 72 + offset: 0, 0 + index: -1 particle rotate: false - xy: 1391, 271 + xy: 2312, 347 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 scale_marker rotate: false - xy: 1081, 377 + xy: 3355, 590 size: 4, 4 orig: 4, 4 offset: 0, 0 index: -1 shell rotate: false - xy: 1635, 275 + xy: 2345, 309 size: 36, 36 orig: 36, 36 offset: 0, 0 index: -1 shell-back rotate: false - xy: 1265, 233 + xy: 2185, 267 size: 36, 36 orig: 36, 36 offset: 0, 0 index: -1 transfer rotate: false - xy: 607, 1015 + xy: 607, 693 size: 4, 48 orig: 4, 48 offset: 0, 0 index: -1 transfer-arrow rotate: false - xy: 1601, 207 + xy: 2321, 139 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 white rotate: false - xy: 952, 248 + xy: 1856, 348 size: 3, 3 orig: 3, 3 offset: 0, 0 index: -1 +alpha-wreck0 + rotate: false + xy: 2093, 334 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +alpha-wreck1 + rotate: false + xy: 2093, 284 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +alpha-wreck2 + rotate: false + xy: 1856, 246 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +antumbra-wreck0 + rotate: false + xy: 509, 389 + size: 216, 240 + orig: 216, 240 + offset: 0, 0 + index: -1 +antumbra-wreck1 + rotate: false + xy: 509, 147 + size: 216, 240 + orig: 216, 240 + offset: 0, 0 + index: -1 +antumbra-wreck2 + rotate: false + xy: 291, 35 + size: 216, 240 + orig: 216, 240 + offset: 0, 0 + index: -1 arc rotate: false - xy: 1303, 237 + xy: 1711, 783 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +arkyid-wreck0 + rotate: false + xy: 1561, 1273 + size: 128, 128 + orig: 128, 128 + offset: 0, 0 + index: -1 +arkyid-wreck1 + rotate: false + xy: 1691, 1403 + size: 128, 128 + orig: 128, 128 + offset: 0, 0 + index: -1 +arkyid-wreck2 + rotate: false + xy: 1691, 1273 + size: 128, 128 + orig: 128, 128 + offset: 0, 0 + index: -1 +atrax-wreck0 + rotate: false + xy: 3459, 979 + size: 88, 64 + orig: 88, 64 + offset: 0, 0 + index: -1 +atrax-wreck1 + rotate: false + xy: 3549, 979 + size: 88, 64 + orig: 88, 64 + offset: 0, 0 + index: -1 +atrax-wreck2 + rotate: false + xy: 3639, 979 + size: 88, 64 + orig: 88, 64 + offset: 0, 0 + index: -1 +beta-wreck0 + rotate: false + xy: 1885, 146 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +beta-wreck1 + rotate: false + xy: 1935, 220 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +beta-wreck2 + rotate: false + xy: 1935, 170 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 block-additive-reconstructor-full rotate: false - xy: 1363, 707 + xy: 2567, 943 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-air-factory-full rotate: false - xy: 1335, 609 + xy: 2665, 943 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-arc-full rotate: false - xy: 2849, 551 + xy: 4063, 1641 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-blast-drill-full rotate: false - xy: 3954, 1725 + xy: 1951, 1273 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 block-char-full rotate: false - xy: 2781, 449 + xy: 927, 4 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-cliffs-full rotate: false - xy: 2815, 483 + xy: 961, 4 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-conduit-full rotate: false - xy: 2849, 517 + xy: 995, 4 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-conveyor-full rotate: false - xy: 2883, 551 + xy: 1029, 4 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-0-0 rotate: false - xy: 2883, 551 + xy: 1029, 4 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-core-foundation-full rotate: false - xy: 453, 209 + xy: 1821, 1143 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 block-core-nucleus-full rotate: false - xy: 2289, 1403 + xy: 1, 19 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 block-core-shard-full rotate: false - xy: 1335, 511 + xy: 2763, 943 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-craters-full rotate: false - xy: 2815, 449 + xy: 1063, 4 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-cryofluidmixer-full rotate: false - xy: 3721, 819 + xy: 3289, 398 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-cultivator-full rotate: false - xy: 3787, 819 + xy: 3711, 913 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-cyclone-full rotate: false - xy: 3987, 1337 + xy: 2861, 943 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-dark-metal-full rotate: false - xy: 2849, 483 + xy: 2383, 313 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-darksand-full rotate: false - xy: 2883, 517 + xy: 2417, 319 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dunerocks-full rotate: false - xy: 2849, 449 + xy: 2451, 319 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-duo-full rotate: false - xy: 2883, 483 + xy: 2485, 319 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-exponential-reconstructor-full rotate: false - xy: 645, 1243 + xy: 1193, 1275 size: 224, 224 orig: 224, 224 offset: 0, 0 index: -1 block-fuse-full rotate: false - xy: 2261, 983 + xy: 2363, 881 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-grass-full rotate: false - xy: 2883, 449 + xy: 2519, 319 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ground-factory-full rotate: false - xy: 2261, 885 + xy: 2461, 845 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-hail-full rotate: false - xy: 2781, 415 + xy: 2553, 319 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-holostone-full rotate: false - xy: 2815, 415 + xy: 2587, 319 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-hotrock-full rotate: false - xy: 2849, 415 + xy: 2621, 319 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ice-full rotate: false - xy: 2883, 415 + xy: 2655, 319 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ice-snow-full rotate: false - xy: 2371, 1303 + xy: 2689, 319 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-icerocks-full rotate: false - xy: 1541, 237 + xy: 2723, 319 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ignarock-full rotate: false - xy: 1575, 241 + xy: 2757, 319 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-impact-reactor-full rotate: false - xy: 398, 79 + xy: 2081, 1403 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 block-lancer-full rotate: false - xy: 3853, 819 + xy: 3777, 933 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-laser-drill-full rotate: false - xy: 658, 13 + xy: 2559, 845 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-liquid-router-full rotate: false - xy: 1609, 241 + xy: 2791, 319 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-liquid-tank-full rotate: false - xy: 756, 41 + xy: 2657, 845 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-magmarock-full rotate: false - xy: 858, 23 + xy: 2825, 319 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-mass-conveyor-full rotate: false - xy: 2327, 1081 + xy: 2853, 845 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 mass-conveyor-icon rotate: false - xy: 2327, 1081 + xy: 2853, 845 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-mass-driver-full rotate: false - xy: 2359, 983 + xy: 930, 38 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-mechanical-drill-full rotate: false - xy: 3919, 819 + xy: 3843, 933 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-meltdown-full rotate: false - xy: 528, 79 + xy: 2081, 1273 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 block-metal-floor-damaged-full rotate: false - xy: 892, 23 + xy: 2859, 319 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-moss-full rotate: false - xy: 2371, 1269 + xy: 2927, 319 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-multiplicative-reconstructor-full rotate: false - xy: 2451, 1387 + xy: 3841, 1435 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 block-naval-factory-full rotate: false - xy: 2359, 885 + xy: 1028, 38 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-oil-extractor-full rotate: false - xy: 2425, 1081 + xy: 1126, 15 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-ore-coal-full rotate: false - xy: 2405, 1285 + xy: 2961, 319 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-copper-full rotate: false - xy: 2439, 1295 + xy: 2995, 319 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-lead-full rotate: false - xy: 2473, 1295 + xy: 2257, 271 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-scrap-full rotate: false - xy: 2507, 1295 + xy: 2291, 275 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-thorium-full rotate: false - xy: 2541, 1295 + xy: 2325, 275 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-titanium-full rotate: false - xy: 2575, 1295 + xy: 2359, 275 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +block-parallax-full + rotate: false + xy: 3777, 867 + size: 64, 64 + orig: 64, 64 + offset: 0, 0 + index: -1 block-payload-router-full rotate: false - xy: 2457, 983 + xy: 1224, 15 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 payload-router-icon rotate: false - xy: 2457, 983 + xy: 1224, 15 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-pebbles-full rotate: false - xy: 2365, 1235 + xy: 2393, 279 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-phase-weaver-full rotate: false - xy: 2245, 721 + xy: 3843, 867 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-plated-conduit-full rotate: false - xy: 2405, 1251 + xy: 2427, 285 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-pneumatic-drill-full rotate: false - xy: 398, 13 + xy: 3711, 847 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-pulse-conduit-full rotate: false - xy: 2439, 1261 + xy: 2461, 285 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-pulverizer-full rotate: false - xy: 2473, 1261 + xy: 2495, 285 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-repair-point-full rotate: false - xy: 2507, 1261 + xy: 2529, 285 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ripple-full rotate: false - xy: 2457, 885 + xy: 1322, 15 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-rock-full rotate: false - xy: 2779, 1337 + xy: 1985, 220 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-rocks-full rotate: false - xy: 2541, 1261 + xy: 2563, 285 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-saltrocks-full rotate: false - xy: 2575, 1261 + xy: 2597, 285 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-salvo-full rotate: false - xy: 464, 13 + xy: 3777, 801 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-sand-boulder-full rotate: false - xy: 2609, 1295 + xy: 2631, 285 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-sand-full rotate: false - xy: 2609, 1261 + xy: 2665, 285 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-sandrocks-full rotate: false - xy: 2643, 1299 + xy: 2699, 285 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-scatter-full rotate: false - xy: 530, 13 + xy: 3843, 801 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-scorch-full rotate: false - xy: 2643, 1265 + xy: 2733, 285 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-scrap-wall-full rotate: false - xy: 3643, 777 + xy: 2767, 285 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap-wall1 rotate: false - xy: 3643, 777 + xy: 2767, 285 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-scrap-wall-huge-full rotate: false - xy: 2523, 1081 + xy: 1420, 15 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 scrap-wall-huge1 rotate: false - xy: 2523, 1081 + xy: 1420, 15 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 block-scrap-wall-large-full rotate: false - xy: 4025, 871 + xy: 3325, 831 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-segment-full rotate: false - xy: 2193, 1467 + xy: 3391, 831 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-shale-boulder-full rotate: false - xy: 3643, 709 + xy: 2835, 285 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-shale-full rotate: false - xy: 3643, 675 + xy: 2869, 285 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-shalerocks-full rotate: false - xy: 3677, 785 + xy: 2903, 285 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-shrubs-full rotate: false - xy: 3711, 785 + xy: 2937, 285 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-snow-full rotate: false - xy: 3677, 751 + xy: 2971, 285 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-snowrock-full rotate: false - xy: 2829, 1337 + xy: 1985, 170 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-snowrocks-full rotate: false - xy: 3745, 785 + xy: 3005, 285 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-spectre-full rotate: false - xy: 3525, 1179 + xy: 1951, 1143 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 block-spore-cluster-full rotate: false - xy: 4020, 1437 + xy: 3729, 1003 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-spore-moss-full rotate: false - xy: 3677, 717 + xy: 2427, 251 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-spore-press-full rotate: false - xy: 2193, 1401 + xy: 3361, 765 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-sporerocks-full rotate: false - xy: 3711, 751 + xy: 2461, 251 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-stone-full rotate: false - xy: 3779, 785 + xy: 2495, 251 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-swarmer-full rotate: false - xy: 2193, 1335 + xy: 3361, 699 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-tendrils-full rotate: false - xy: 3677, 683 + xy: 2529, 251 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-tetrative-reconstructor-full rotate: false - xy: 645, 1759 + xy: 645, 1437 size: 288, 288 orig: 288, 288 offset: 0, 0 index: -1 block-titanium-conveyor-full rotate: false - xy: 3711, 717 + xy: 2563, 251 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-0-0 rotate: false - xy: 3711, 717 + xy: 2563, 251 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-turbine-generator-full rotate: false - xy: 2259, 1337 + xy: 3361, 633 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-water-extractor-full rotate: false - xy: 2325, 1337 + xy: 3361, 567 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-wave-full rotate: false - xy: 4020, 1545 + xy: 3355, 501 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 +bryde-wreck0 + rotate: false + xy: 3841, 1293 + size: 140, 140 + orig: 140, 140 + offset: 0, 0 + index: -1 +bryde-wreck1 + rotate: false + xy: 1419, 1359 + size: 140, 140 + orig: 140, 140 + offset: 0, 0 + index: -1 +bryde-wreck2 + rotate: false + xy: 1419, 1217 + size: 140, 140 + orig: 140, 140 + offset: 0, 0 + index: -1 core-foundation-team-crux rotate: false - xy: 583, 469 + xy: 2211, 1143 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 core-foundation-team-sharded rotate: false - xy: 583, 339 + xy: 2471, 1403 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 core-nucleus-team-crux rotate: false - xy: 2937, 1387 + xy: 1129, 725 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 core-nucleus-team-sharded rotate: false - xy: 291, 921 + xy: 1291, 725 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 core-shard-team-crux rotate: false - xy: 2653, 983 + xy: 3869, 1097 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 core-shard-team-sharded rotate: false - xy: 2653, 885 + xy: 3967, 1109 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 cracks-1-0 rotate: false - xy: 3711, 649 + xy: 3107, 235 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-1 rotate: false - xy: 3745, 649 + xy: 3107, 201 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-2 rotate: false - xy: 3779, 649 + xy: 3141, 235 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-3 rotate: false - xy: 3813, 649 + xy: 3141, 201 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-4 rotate: false - xy: 3847, 649 + xy: 3175, 258 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-5 rotate: false - xy: 3881, 649 + xy: 3209, 258 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-6 rotate: false - xy: 3915, 649 + xy: 3175, 224 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-1-7 rotate: false - xy: 3949, 649 + xy: 3209, 224 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cracks-2-0 rotate: false - xy: 2541, 753 + xy: 3427, 699 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cracks-2-1 rotate: false - xy: 2607, 753 + xy: 3427, 633 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cracks-2-2 rotate: false - xy: 2673, 753 + xy: 3427, 567 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cracks-2-3 rotate: false - xy: 1951, 657 + xy: 3421, 501 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cracks-2-4 rotate: false - xy: 2017, 657 + xy: 3421, 435 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cracks-2-5 rotate: false - xy: 2083, 657 + xy: 3421, 369 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cracks-2-6 rotate: false - xy: 2149, 657 + xy: 3523, 839 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cracks-2-7 rotate: false - xy: 1923, 591 + xy: 3589, 839 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cracks-3-0 rotate: false - xy: 2719, 1081 + xy: 3771, 999 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 cracks-3-1 rotate: false - xy: 2751, 983 + xy: 3869, 999 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 cracks-3-2 rotate: false - xy: 2751, 885 + xy: 3967, 1011 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 cracks-3-3 rotate: false - xy: 2817, 1081 + xy: 1485, 915 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 cracks-3-4 rotate: false - xy: 2849, 983 + xy: 1583, 915 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 cracks-3-5 rotate: false - xy: 2849, 885 + xy: 1681, 915 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 cracks-3-6 rotate: false - xy: 2915, 1081 + xy: 1615, 817 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 cracks-3-7 rotate: false - xy: 2947, 983 + xy: 1713, 817 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 cracks-4-0 rotate: false - xy: 583, 209 + xy: 2471, 1273 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 cracks-4-1 rotate: false - xy: 713, 887 + xy: 2341, 1143 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 cracks-4-2 rotate: false - xy: 713, 757 + xy: 2601, 1403 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 cracks-4-3 rotate: false - xy: 843, 887 + xy: 2601, 1273 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 cracks-4-4 rotate: false - xy: 713, 627 + xy: 2471, 1143 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 cracks-4-5 rotate: false - xy: 843, 757 + xy: 2731, 1403 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 cracks-4-6 rotate: false - xy: 973, 887 + xy: 2731, 1273 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 cracks-4-7 rotate: false - xy: 713, 497 + xy: 2601, 1143 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 cracks-5-0 rotate: false - xy: 291, 597 + xy: 1259, 563 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 cracks-5-1 rotate: false - xy: 291, 435 + xy: 1148, 401 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 cracks-5-2 rotate: false - xy: 291, 273 + xy: 1310, 401 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 cracks-5-3 rotate: false - xy: 1743, 887 + xy: 1421, 563 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 cracks-5-4 rotate: false - xy: 1937, 919 + xy: 1453, 725 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 cracks-5-5 rotate: false - xy: 2031, 1339 + xy: 1472, 401 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 cracks-5-6 rotate: false - xy: 2099, 919 + xy: 1583, 563 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 cracks-5-7 rotate: false - xy: 3372, 1435 + xy: 1634, 401 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 cracks-6-0 rotate: false - xy: 3901, 1855 + xy: 945, 136 size: 192, 192 orig: 192, 192 offset: 0, 0 index: -1 cracks-6-1 rotate: false - xy: 3372, 1597 + xy: 3287, 1597 size: 192, 192 orig: 192, 192 offset: 0, 0 index: -1 cracks-6-2 rotate: false - xy: 3566, 1597 + xy: 3481, 1597 size: 192, 192 orig: 192, 192 offset: 0, 0 index: -1 cracks-6-3 rotate: false - xy: 3760, 1597 + xy: 3675, 1597 size: 192, 192 orig: 192, 192 offset: 0, 0 index: -1 cracks-6-4 rotate: false - xy: 204, 19 + xy: 3869, 1597 size: 192, 192 orig: 192, 192 offset: 0, 0 index: -1 cracks-6-5 rotate: false - xy: 3169, 1394 + xy: 3259, 1403 size: 192, 192 orig: 192, 192 offset: 0, 0 index: -1 cracks-6-6 rotate: false - xy: 1743, 1049 + xy: 3453, 1403 size: 192, 192 orig: 192, 192 offset: 0, 0 index: -1 cracks-6-7 rotate: false - xy: 1937, 1081 + xy: 3647, 1403 size: 192, 192 orig: 192, 192 offset: 0, 0 index: -1 cracks-7-0 rotate: false - xy: 871, 1243 + xy: 1451, 1533 size: 224, 224 orig: 224, 224 offset: 0, 0 index: -1 cracks-7-1 rotate: false - xy: 1097, 1243 + xy: 1677, 1533 size: 224, 224 orig: 224, 224 offset: 0, 0 index: -1 cracks-7-2 rotate: false - xy: 1323, 1243 + xy: 1903, 1533 size: 224, 224 orig: 224, 224 offset: 0, 0 index: -1 cracks-7-3 rotate: false - xy: 1549, 1243 + xy: 2129, 1533 size: 224, 224 orig: 224, 224 offset: 0, 0 index: -1 cracks-7-4 rotate: false - xy: 613, 1017 + xy: 2355, 1533 size: 224, 224 orig: 224, 224 offset: 0, 0 index: -1 cracks-7-5 rotate: false - xy: 839, 1017 + xy: 2581, 1533 size: 224, 224 orig: 224, 224 offset: 0, 0 index: -1 cracks-7-6 rotate: false - xy: 1065, 1017 + xy: 2807, 1533 size: 224, 224 orig: 224, 224 offset: 0, 0 index: -1 cracks-7-7 rotate: false - xy: 1291, 1017 + xy: 3033, 1533 size: 224, 224 orig: 224, 224 offset: 0, 0 index: -1 cracks-8-0 rotate: false - xy: 1805, 1501 + xy: 3287, 1791 size: 256, 256 orig: 256, 256 offset: 0, 0 index: -1 cracks-8-1 rotate: false - xy: 2095, 1791 + xy: 3545, 1791 size: 256, 256 orig: 256, 256 offset: 0, 0 index: -1 cracks-8-2 rotate: false - xy: 2353, 1791 + xy: 3803, 1791 size: 256, 256 orig: 256, 256 offset: 0, 0 index: -1 cracks-8-3 rotate: false - xy: 2611, 1791 + xy: 645, 889 size: 256, 256 orig: 256, 256 offset: 0, 0 index: -1 cracks-8-4 rotate: false - xy: 2869, 1791 + xy: 613, 631 size: 256, 256 orig: 256, 256 offset: 0, 0 index: -1 cracks-8-5 rotate: false - xy: 3127, 1791 + xy: 935, 1469 size: 256, 256 orig: 256, 256 offset: 0, 0 index: -1 cracks-8-6 rotate: false - xy: 3385, 1791 + xy: 935, 1211 size: 256, 256 orig: 256, 256 offset: 0, 0 index: -1 cracks-8-7 rotate: false - xy: 3643, 1791 + xy: 1193, 1501 size: 256, 256 orig: 256, 256 offset: 0, 0 index: -1 cracks-9-0 rotate: false - xy: 1, 793 + xy: 967, 1759 size: 288, 288 orig: 288, 288 offset: 0, 0 index: -1 cracks-9-1 rotate: false - xy: 323, 1115 + xy: 1, 471 size: 288, 288 orig: 288, 288 offset: 0, 0 index: -1 cracks-9-2 rotate: false - xy: 645, 1469 + xy: 323, 793 size: 288, 288 orig: 288, 288 offset: 0, 0 index: -1 cracks-9-3 rotate: false - xy: 935, 1759 + xy: 645, 1147 size: 288, 288 orig: 288, 288 offset: 0, 0 index: -1 cracks-9-4 rotate: false - xy: 1, 503 + xy: 1257, 1759 size: 288, 288 orig: 288, 288 offset: 0, 0 index: -1 cracks-9-5 rotate: false - xy: 935, 1469 + xy: 1, 181 size: 288, 288 orig: 288, 288 offset: 0, 0 index: -1 cracks-9-6 rotate: false - xy: 1225, 1759 + xy: 1547, 1759 size: 288, 288 orig: 288, 288 offset: 0, 0 index: -1 cracks-9-7 rotate: false - xy: 1, 213 + xy: 1837, 1759 size: 288, 288 orig: 288, 288 offset: 0, 0 index: -1 +crawler-wreck0 + rotate: false + xy: 1985, 120 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +crawler-wreck1 + rotate: false + xy: 2035, 120 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +crawler-wreck2 + rotate: false + xy: 2085, 134 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 cyclone rotate: false - xy: 2947, 885 + xy: 1779, 915 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 +dagger-wreck0 + rotate: false + xy: 1978, 20 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +dagger-wreck1 + rotate: false + xy: 2028, 70 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +dagger-wreck2 + rotate: false + xy: 2028, 20 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 duo rotate: false - xy: 1091, 211 + xy: 3277, 228 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -fuse - rotate: false - xy: 3339, 983 - size: 96, 96 - orig: 96, 96 - offset: 0, 0 - index: -1 -hail - rotate: false - xy: 1018, 177 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -item-blast-compound-large - rotate: false - xy: 2743, 623 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -item-blast-compound-medium - rotate: false - xy: 1018, 75 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -item-blast-compound-small - rotate: false - xy: 1897, 469 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-blast-compound-tiny - rotate: false - xy: 1697, 915 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -item-blast-compound-xlarge - rotate: false - xy: 3193, 753 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -item-coal-large - rotate: false - xy: 1697, 975 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -item-coal-medium - rotate: false - xy: 1086, 143 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -item-coal-small - rotate: false - xy: 926, 31 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-coal-tiny - rotate: false - xy: 1265, 342 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -item-coal-xlarge - rotate: false - xy: 2943, 695 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -item-copper-large - rotate: false - xy: 1693, 823 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -item-copper-medium - rotate: false - xy: 1052, 75 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -item-copper-small - rotate: false - xy: 1897, 443 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-copper-tiny - rotate: false - xy: 1715, 915 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -item-copper-xlarge - rotate: false - xy: 2993, 703 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -item-graphite-large - rotate: false - xy: 2231, 1193 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -item-graphite-medium - rotate: false - xy: 1052, 41 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -item-graphite-small - rotate: false - xy: 613, 1379 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-graphite-tiny - rotate: false - xy: 1265, 324 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -item-graphite-xlarge - rotate: false - xy: 3243, 753 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -item-lead-large - rotate: false - xy: 1139, 277 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -item-lead-medium - rotate: false - xy: 1086, 41 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -item-lead-small - rotate: false - xy: 2095, 1765 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-lead-tiny - rotate: false - xy: 204, 1 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -item-lead-xlarge - rotate: false - xy: 3043, 695 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -item-metaglass-large - rotate: false - xy: 1697, 933 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -item-metaglass-medium - rotate: false - xy: 2315, 1211 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -item-metaglass-small - rotate: false - xy: 1775, 1443 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-metaglass-tiny - rotate: false - xy: 222, 1 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -item-metaglass-xlarge - rotate: false - xy: 3093, 703 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -item-phase-fabric-large - rotate: false - xy: 4051, 829 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -item-phase-fabric-medium - rotate: false - xy: 2439, 1227 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -item-phase-fabric-small - rotate: false - xy: 323, 1089 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-phase-fabric-tiny - rotate: false - xy: 240, 1 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -item-phase-fabric-xlarge - rotate: false - xy: 3143, 703 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -item-plastanium-large - rotate: false - xy: 2281, 1245 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -item-plastanium-medium - rotate: false - xy: 2507, 1227 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -item-plastanium-small - rotate: false - xy: 1335, 731 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-plastanium-tiny - rotate: false - xy: 258, 1 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -item-plastanium-xlarge - rotate: false - xy: 3193, 703 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -item-pyratite-large - rotate: false - xy: 2323, 1245 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -item-pyratite-medium - rotate: false - xy: 2575, 1227 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -item-pyratite-small - rotate: false - xy: 1465, 861 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-pyratite-tiny - rotate: false - xy: 276, 1 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -item-pyratite-xlarge - rotate: false - xy: 3243, 703 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -item-sand-large - rotate: false - xy: 1181, 318 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -item-sand-medium - rotate: false - xy: 2643, 1231 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -item-sand-small - rotate: false - xy: 1905, 1023 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-sand-tiny - rotate: false - xy: 294, 1 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -item-sand-xlarge - rotate: false - xy: 3293, 761 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -item-scrap-large - rotate: false - xy: 1223, 318 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -item-scrap-medium - rotate: false - xy: 1120, 167 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -item-scrap-small - rotate: false - xy: 2063, 1507 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-scrap-tiny - rotate: false - xy: 312, 1 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -item-scrap-xlarge - rotate: false - xy: 3293, 711 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -item-silicon-large - rotate: false - xy: 1181, 276 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -item-silicon-medium - rotate: false - xy: 1120, 99 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -item-silicon-small - rotate: false - xy: 2259, 1507 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-silicon-tiny - rotate: false - xy: 330, 1 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -item-silicon-xlarge - rotate: false - xy: 3343, 761 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -item-spore-pod-large - rotate: false - xy: 1223, 276 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -item-spore-pod-medium - rotate: false - xy: 1159, 200 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -item-spore-pod-small - rotate: false - xy: 1923, 665 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-spore-pod-tiny - rotate: false - xy: 348, 1 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -item-spore-pod-xlarge - rotate: false - xy: 3343, 711 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -item-surge-alloy-large - rotate: false - xy: 1139, 235 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -item-surge-alloy-medium - rotate: false - xy: 1227, 200 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -item-surge-alloy-small - rotate: false - xy: 2311, 761 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-surge-alloy-tiny - rotate: false - xy: 366, 1 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -item-surge-alloy-xlarge - rotate: false - xy: 3393, 761 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -item-thorium-large - rotate: false - xy: 1181, 234 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -item-thorium-medium - rotate: false - xy: 1154, 132 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -item-thorium-small - rotate: false - xy: 2319, 629 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-thorium-tiny - rotate: false - xy: 1209, 609 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -item-thorium-xlarge - rotate: false - xy: 3393, 711 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -item-titanium-large - rotate: false - xy: 1223, 234 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -item-titanium-medium - rotate: false - xy: 1154, 98 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -item-titanium-small - rotate: false - xy: 1303, 530 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -item-titanium-tiny - rotate: false - xy: 2921, 635 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -item-titanium-xlarge - rotate: false - xy: 3443, 761 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -lancer - rotate: false - xy: 2253, 523 - size: 64, 64 - orig: 64, 64 - offset: 0, 0 - index: -1 -liquid-cryofluid-large - rotate: false - xy: 4051, 787 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -liquid-cryofluid-medium - rotate: false - xy: 1188, 98 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -liquid-cryofluid-small - rotate: false - xy: 1699, 497 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -liquid-cryofluid-tiny - rotate: false - xy: 3079, 1369 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -liquid-cryofluid-xlarge - rotate: false - xy: 3493, 711 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -liquid-oil-large - rotate: false - xy: 1265, 271 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -liquid-oil-medium - rotate: false - xy: 1222, 98 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -liquid-oil-small - rotate: false - xy: 4025, 1311 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -liquid-oil-tiny - rotate: false - xy: 1737, 311 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -liquid-oil-xlarge - rotate: false - xy: 3543, 761 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -liquid-slag-large - rotate: false - xy: 1307, 271 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -liquid-slag-medium - rotate: false - xy: 1256, 131 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -liquid-slag-small - rotate: false - xy: 1643, 249 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -liquid-slag-tiny - rotate: false - xy: 613, 1361 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -liquid-slag-xlarge - rotate: false - xy: 3543, 711 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -liquid-water-large - rotate: false - xy: 1349, 271 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -liquid-water-medium - rotate: false - xy: 2779, 1303 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -liquid-water-small - rotate: false - xy: 3401, 567 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -liquid-water-tiny - rotate: false - xy: 2121, 1773 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -liquid-water-xlarge - rotate: false - xy: 3593, 761 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -mass-driver - rotate: false - xy: 3829, 983 - size: 96, 96 - orig: 96, 96 - offset: 0, 0 - index: -1 -meltdown - rotate: false - xy: 713, 237 - size: 128, 128 - orig: 128, 128 - offset: 0, 0 - index: -1 -repair-point - rotate: false - xy: 3949, 615 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -ripple - rotate: false - xy: 1727, 495 - size: 96, 96 - orig: 96, 96 - offset: 0, 0 - index: -1 -salvo - rotate: false - xy: 2253, 457 - size: 64, 64 - orig: 64, 64 - offset: 0, 0 - index: -1 -scatter - rotate: false - xy: 2517, 423 - size: 64, 64 - orig: 64, 64 - offset: 0, 0 - index: -1 -scorch - rotate: false - xy: 1290, 165 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -segment - rotate: false - xy: 2715, 423 - size: 64, 64 - orig: 64, 64 - offset: 0, 0 - index: -1 -spectre - rotate: false - xy: 1103, 627 - size: 128, 128 - orig: 128, 128 - offset: 0, 0 - index: -1 -splash-0 - rotate: false - xy: 1499, 203 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -splash-1 - rotate: false - xy: 1533, 203 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -splash-10 - rotate: false - xy: 3367, 593 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -splash-11 - rotate: false - xy: 3401, 593 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -splash-2 - rotate: false - xy: 3095, 585 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -splash-3 - rotate: false - xy: 3129, 585 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -splash-4 - rotate: false - xy: 3163, 585 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -splash-5 - rotate: false - xy: 3197, 585 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -splash-6 - rotate: false - xy: 3231, 585 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -splash-7 - rotate: false - xy: 3265, 585 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -splash-8 - rotate: false - xy: 3299, 593 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -splash-9 - rotate: false - xy: 3333, 593 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -swarmer - rotate: false - xy: 1283, 313 - size: 64, 64 - orig: 64, 64 - offset: 0, 0 - index: -1 -unit-alpha-full - rotate: false - xy: 2131, 1231 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -unit-cix-full - rotate: false - xy: 1363, 887 - size: 128, 128 - orig: 128, 128 - offset: 0, 0 - index: -1 -unit-crawler-full - rotate: false - xy: 2131, 1181 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -unit-dagger-full - rotate: false - xy: 1693, 865 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -unit-draug-full - rotate: false - xy: 1868, 379 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -unit-eruptor-full - rotate: false - xy: 2703, 819 - size: 88, 64 - orig: 88, 64 - offset: 0, 0 - index: -1 -unit-fortress-full - rotate: false - xy: 1493, 853 - size: 100, 80 - orig: 100, 80 - offset: 0, 0 - index: -1 -unit-ghoul-full - rotate: false - xy: 3581, 811 - size: 72, 72 - orig: 72, 72 - offset: 0, 0 - index: -1 -unit-lich-full - rotate: false - xy: 2951, 1549 - size: 216, 240 - orig: 216, 240 - offset: 0, 0 - index: -1 -unit-mace-full - rotate: false - xy: 952, 103 - size: 64, 64 - orig: 64, 64 - offset: 0, 0 - index: -1 -unit-oculon-full - rotate: false - xy: 3203, 803 - size: 80, 80 - orig: 80, 80 - offset: 0, 0 - index: -1 -unit-phantom-full - rotate: false - xy: 2509, 1329 - size: 56, 56 - orig: 56, 56 - offset: 0, 0 - index: -1 -unit-reaper-full +eclipse-wreck0 rotate: false xy: 323, 1727 size: 320, 320 orig: 320, 320 offset: 0, 0 index: -1 -unit-revenant-full +eclipse-wreck1 rotate: false - xy: 973, 383 - size: 112, 112 - orig: 112, 112 + xy: 1, 1083 + size: 320, 320 + orig: 320, 320 offset: 0, 0 index: -1 -unit-spirit-full +eclipse-wreck2 rotate: false - xy: 2171, 1285 + xy: 323, 1405 + size: 320, 320 + orig: 320, 320 + offset: 0, 0 + index: -1 +flare-wreck0 + rotate: false + xy: 2152, 396 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -unit-tau-full +flare-wreck1 rotate: false - xy: 2567, 1329 + xy: 2202, 439 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +flare-wreck2 + rotate: false + xy: 2252, 439 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +fortress-wreck0 + rotate: false + xy: 2265, 979 + size: 100, 80 + orig: 100, 80 + offset: 0, 0 + index: -1 +fortress-wreck1 + rotate: false + xy: 2367, 1061 + size: 100, 80 + orig: 100, 80 + offset: 0, 0 + index: -1 +fortress-wreck2 + rotate: false + xy: 2367, 979 + size: 100, 80 + orig: 100, 80 + offset: 0, 0 + index: -1 +fuse + rotate: false + xy: 2039, 637 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 +gamma-wreck0 + rotate: false + xy: 1978, 502 size: 56, 56 orig: 56, 56 offset: 0, 0 index: -1 -unit-trident-full +gamma-wreck1 rotate: false - xy: 1103, 459 - size: 100, 100 - orig: 100, 100 + xy: 1920, 444 + size: 56, 56 + orig: 56, 56 offset: 0, 0 index: -1 -unit-vanguard-full +gamma-wreck2 rotate: false - xy: 2221, 1285 + xy: 2036, 502 + size: 56, 56 + orig: 56, 56 + offset: 0, 0 + index: -1 +hail + rotate: false + xy: 3277, 194 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +horizon-wreck0 + rotate: false + xy: 3637, 905 + size: 72, 72 + orig: 72, 72 + offset: 0, 0 + index: -1 +horizon-wreck1 + rotate: false + xy: 3243, 812 + size: 72, 72 + orig: 72, 72 + offset: 0, 0 + index: -1 +horizon-wreck2 + rotate: false + xy: 3215, 738 + size: 72, 72 + orig: 72, 72 + offset: 0, 0 + index: -1 +item-blast-compound-large + rotate: false + xy: 1885, 104 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +item-blast-compound-medium + rotate: false + xy: 3447, 193 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +item-blast-compound-small + rotate: false + xy: 1419, 1049 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-blast-compound-tiny + rotate: false + xy: 1, 1 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-blast-compound-xlarge + rotate: false + xy: 2252, 389 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -unit-wraith-full +item-coal-large rotate: false - xy: 2271, 1287 + xy: 3600, 269 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +item-coal-medium + rotate: false + xy: 3277, 160 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +item-coal-small + rotate: false + xy: 1445, 1049 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-coal-tiny + rotate: false + xy: 19, 1 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-coal-xlarge + rotate: false + xy: 2302, 389 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -wave +item-copper-large rotate: false - xy: 1831, 429 + xy: 3642, 269 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +item-copper-medium + rotate: false + xy: 3345, 159 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +item-copper-small + rotate: false + xy: 613, 1057 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-copper-tiny + rotate: false + xy: 37, 1 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-copper-xlarge + rotate: false + xy: 2352, 389 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +item-graphite-large + rotate: false + xy: 2178, 26 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +item-graphite-medium + rotate: false + xy: 3413, 159 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +item-graphite-small + rotate: false + xy: 967, 1733 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-graphite-tiny + rotate: false + xy: 55, 1 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-graphite-xlarge + rotate: false + xy: 2402, 403 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +item-lead-large + rotate: false + xy: 3352, 227 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +item-lead-medium + rotate: false + xy: 3481, 159 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +item-lead-small + rotate: false + xy: 903, 1121 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-lead-tiny + rotate: false + xy: 73, 1 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-lead-xlarge + rotate: false + xy: 2452, 403 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +item-metaglass-large + rotate: false + xy: 3394, 227 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +item-metaglass-medium + rotate: false + xy: 3515, 159 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +item-metaglass-small + rotate: false + xy: 871, 863 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-metaglass-tiny + rotate: false + xy: 91, 1 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-metaglass-xlarge + rotate: false + xy: 2502, 403 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +item-phase-fabric-large + rotate: false + xy: 3436, 227 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +item-phase-fabric-medium + rotate: false + xy: 2257, 237 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +item-phase-fabric-small + rotate: false + xy: 1161, 1185 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-phase-fabric-tiny + rotate: false + xy: 109, 1 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-phase-fabric-xlarge + rotate: false + xy: 2552, 403 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +item-plastanium-large + rotate: false + xy: 3478, 227 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +item-plastanium-medium + rotate: false + xy: 2325, 241 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +item-plastanium-small + rotate: false + xy: 1129, 959 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-plastanium-tiny + rotate: false + xy: 127, 1 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-plastanium-xlarge + rotate: false + xy: 2602, 403 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +item-pyratite-large + rotate: false + xy: 3600, 227 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +item-pyratite-medium + rotate: false + xy: 2393, 211 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +item-pyratite-small + rotate: false + xy: 1097, 733 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-pyratite-tiny + rotate: false + xy: 145, 1 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-pyratite-xlarge + rotate: false + xy: 2652, 403 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +item-sand-large + rotate: false + xy: 3642, 227 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +item-sand-medium + rotate: false + xy: 2461, 183 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +item-sand-small + rotate: false + xy: 1097, 537 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-sand-tiny + rotate: false + xy: 3029, 335 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-sand-xlarge + rotate: false + xy: 2702, 403 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +item-scrap-large + rotate: false + xy: 3684, 211 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +item-scrap-medium + rotate: false + xy: 2529, 183 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +item-scrap-small + rotate: false + xy: 1451, 1507 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-scrap-tiny + rotate: false + xy: 2959, 1023 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-scrap-xlarge + rotate: false + xy: 2752, 403 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +item-silicon-large + rotate: false + xy: 1805, 579 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +item-silicon-medium + rotate: false + xy: 2597, 183 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +item-silicon-small + rotate: false + xy: 323, 767 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-silicon-tiny + rotate: false + xy: 3147, 848 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-silicon-xlarge + rotate: false + xy: 2802, 403 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +item-spore-pod-large + rotate: false + xy: 1847, 579 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +item-spore-pod-medium + rotate: false + xy: 2699, 183 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +item-spore-pod-small + rotate: false + xy: 2431, 855 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-spore-pod-tiny + rotate: false + xy: 3757, 829 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-spore-pod-xlarge + rotate: false + xy: 2852, 403 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +item-surge-alloy-large + rotate: false + xy: 1889, 579 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +item-surge-alloy-medium + rotate: false + xy: 2767, 183 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +item-surge-alloy-small + rotate: false + xy: 2073, 937 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-surge-alloy-tiny + rotate: false + xy: 4041, 808 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-surge-alloy-xlarge + rotate: false + xy: 2902, 403 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +item-thorium-large + rotate: false + xy: 2144, 354 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +item-thorium-medium + rotate: false + xy: 2835, 183 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +item-thorium-small + rotate: false + xy: 2203, 866 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-thorium-tiny + rotate: false + xy: 3729, 985 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-thorium-xlarge + rotate: false + xy: 2952, 403 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +item-titanium-large + rotate: false + xy: 2143, 312 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +item-titanium-medium + rotate: false + xy: 2903, 183 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +item-titanium-small + rotate: false + xy: 2206, 524 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +item-titanium-tiny + rotate: false + xy: 3726, 235 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +item-titanium-xlarge + rotate: false + xy: 3002, 403 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +lancer + rotate: false + xy: 3691, 781 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 +liquid-cryofluid-large + rotate: false + xy: 2143, 270 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +liquid-cryofluid-medium + rotate: false + xy: 3039, 165 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +liquid-cryofluid-small + rotate: false + xy: 2402, 463 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +liquid-cryofluid-tiny + rotate: false + xy: 3073, 317 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +liquid-cryofluid-xlarge + rotate: false + xy: 3152, 403 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +liquid-oil-large + rotate: false + xy: 2186, 347 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +liquid-oil-medium + rotate: false + xy: 3141, 167 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +liquid-oil-small + rotate: false + xy: 1561, 889 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +liquid-oil-tiny + rotate: false + xy: 3277, 272 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +liquid-oil-xlarge + rotate: false + xy: 3202, 392 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +liquid-slag-large + rotate: false + xy: 2228, 347 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +liquid-slag-medium + rotate: false + xy: 3379, 125 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +liquid-slag-small + rotate: false + xy: 4065, 1181 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +liquid-slag-tiny + rotate: false + xy: 3651, 209 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +liquid-slag-xlarge + rotate: false + xy: 3102, 353 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +liquid-water-large + rotate: false + xy: 2270, 347 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +liquid-water-medium + rotate: false + xy: 3515, 125 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +liquid-water-small + rotate: false + xy: 1097, 12 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +liquid-water-tiny + rotate: false + xy: 2185, 68 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +liquid-water-xlarge + rotate: false + xy: 3152, 353 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +mace-wreck0 + rotate: false + xy: 3757, 603 + size: 64, 64 + orig: 64, 64 + offset: 0, 0 + index: -1 +mace-wreck1 + rotate: false + xy: 3823, 669 + size: 64, 64 + orig: 64, 64 + offset: 0, 0 + index: -1 +mace-wreck2 + rotate: false + xy: 3823, 603 + size: 64, 64 + orig: 64, 64 + offset: 0, 0 + index: -1 +mass-driver + rotate: false + xy: 2823, 649 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 +mega-wreck0 + rotate: false + xy: 2673, 1041 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +mega-wreck1 + rotate: false + xy: 2775, 1041 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +mega-wreck2 + rotate: false + xy: 2877, 1041 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +meltdown + rotate: false + xy: 2991, 1143 + size: 128, 128 + orig: 128, 128 + offset: 0, 0 + index: -1 +minke-wreck0 + rotate: false + xy: 3381, 1273 + size: 128, 128 + orig: 128, 128 + offset: 0, 0 + index: -1 +minke-wreck1 + rotate: false + xy: 3381, 1143 + size: 128, 128 + orig: 128, 128 + offset: 0, 0 + index: -1 +minke-wreck2 + rotate: false + xy: 3511, 1273 + size: 128, 128 + orig: 128, 128 + offset: 0, 0 + index: -1 +mono-wreck0 + rotate: false + xy: 2552, 353 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +mono-wreck1 + rotate: false + xy: 2602, 353 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +mono-wreck2 + rotate: false + xy: 2652, 353 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +nova-wreck0 + rotate: false + xy: 1920, 386 + size: 56, 56 + orig: 56, 56 + offset: 0, 0 + index: -1 +nova-wreck1 + rotate: false + xy: 1978, 386 + size: 56, 56 + orig: 56, 56 + offset: 0, 0 + index: -1 +nova-wreck2 + rotate: false + xy: 2036, 386 + size: 56, 56 + orig: 56, 56 + offset: 0, 0 + index: -1 +parallax + rotate: false + xy: 3757, 471 + size: 64, 64 + orig: 64, 64 + offset: 0, 0 + index: -1 +poly-wreck0 + rotate: false + xy: 2035, 328 + size: 56, 56 + orig: 56, 56 + offset: 0, 0 + index: -1 +poly-wreck1 + rotate: false + xy: 1861, 296 + size: 56, 56 + orig: 56, 56 + offset: 0, 0 + index: -1 +poly-wreck2 + rotate: false + xy: 1919, 270 + size: 56, 56 + orig: 56, 56 + offset: 0, 0 + index: -1 +pulsar-wreck0 + rotate: false + xy: 663, 97 + size: 58, 48 + orig: 58, 48 + offset: 0, 0 + index: -1 +pulsar-wreck1 + rotate: false + xy: 1796, 303 + size: 58, 48 + orig: 58, 48 + offset: 0, 0 + index: -1 +pulsar-wreck2 + rotate: false + xy: 1796, 253 + size: 58, 48 + orig: 58, 48 + offset: 0, 0 + index: -1 +quasar-wreck0 + rotate: false + xy: 1846, 15 + size: 80, 80 + orig: 80, 80 + offset: 0, 0 + index: -1 +quasar-wreck1 + rotate: false + xy: 3243, 886 + size: 80, 80 + orig: 80, 80 + offset: 0, 0 + index: -1 +quasar-wreck2 + rotate: false + xy: 3325, 897 + size: 80, 80 + orig: 80, 80 + offset: 0, 0 + index: -1 +repair-point + rotate: false + xy: 3554, 229 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +ripple + rotate: false + xy: 2529, 453 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 +risse-wreck0 + rotate: false + xy: 2921, 747 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 +risse-wreck1 + rotate: false + xy: 2921, 649 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 +risse-wreck2 + rotate: false + xy: 2921, 551 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 +salvo + rotate: false + xy: 3625, 509 + size: 64, 64 + orig: 64, 64 + offset: 0, 0 + index: -1 +scatter + rotate: false + xy: 3619, 377 + size: 64, 64 + orig: 64, 64 + offset: 0, 0 + index: -1 +scorch + rotate: false + xy: 3617, 193 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +segment + rotate: false + xy: 3889, 405 + size: 64, 64 + orig: 64, 64 + offset: 0, 0 + index: -1 +spectre + rotate: false + xy: 3641, 1273 + size: 128, 128 + orig: 128, 128 + offset: 0, 0 + index: -1 +spiroct-wreck0 + rotate: false + xy: 2037, 560 + size: 94, 75 + orig: 94, 75 + offset: 0, 0 + index: -1 +spiroct-wreck1 + rotate: false + xy: 3967, 934 + size: 94, 75 + orig: 94, 75 + offset: 0, 0 + index: -1 +spiroct-wreck2 + rotate: false + xy: 3147, 866 + size: 94, 75 + orig: 94, 75 + offset: 0, 0 + index: -1 +splash-0 + rotate: false + xy: 3107, 99 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +splash-1 + rotate: false + xy: 3141, 99 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +splash-10 + rotate: false + xy: 3447, 57 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +splash-11 + rotate: false + xy: 3481, 57 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +splash-2 + rotate: false + xy: 3175, 88 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +splash-3 + rotate: false + xy: 3209, 88 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +splash-4 + rotate: false + xy: 3243, 86 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +splash-5 + rotate: false + xy: 3277, 58 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +splash-6 + rotate: false + xy: 3311, 58 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +splash-7 + rotate: false + xy: 3345, 57 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +splash-8 + rotate: false + xy: 3379, 57 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +splash-9 + rotate: false + xy: 3413, 57 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +swarmer + rotate: false + xy: 3751, 207 + size: 64, 64 + orig: 64, 64 + offset: 0, 0 + index: -1 +unit-alpha-full + rotate: false + xy: 3302, 312 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-antumbra-full + rotate: false + xy: 727, 291 + size: 216, 240 + orig: 216, 240 + offset: 0, 0 + index: -1 +unit-arkyid-full + rotate: false + xy: 1561, 1013 + size: 128, 128 + orig: 128, 128 + offset: 0, 0 + index: -1 +unit-atrax-full + rotate: false + xy: 4003, 1531 + size: 88, 64 + orig: 88, 64 + offset: 0, 0 + index: -1 +unit-beta-full + rotate: false + xy: 3352, 319 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-bryde-full + rotate: false + xy: 1419, 1075 + size: 140, 140 + orig: 140, 140 + offset: 0, 0 + index: -1 +unit-crawler-full + rotate: false + xy: 3402, 319 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-dagger-full + rotate: false + xy: 3452, 319 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-eclipse-full + rotate: false + xy: 645, 1727 + size: 320, 320 + orig: 320, 320 + offset: 0, 0 + index: -1 +unit-flare-full + rotate: false + xy: 3502, 319 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-fortress-full + rotate: false + xy: 2979, 1061 + size: 100, 80 + orig: 100, 80 + offset: 0, 0 + index: -1 +unit-gamma-full + rotate: false + xy: 2035, 270 + size: 56, 56 + orig: 56, 56 + offset: 0, 0 + index: -1 +unit-horizon-full + rotate: false + xy: 3215, 442 + size: 72, 72 + orig: 72, 72 + offset: 0, 0 + index: -1 +unit-mace-full + rotate: false + xy: 663, 22 + size: 64, 64 + orig: 64, 64 + offset: 0, 0 + index: -1 +unit-mega-full + rotate: false + xy: 3081, 1041 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +unit-minke-full + rotate: false + xy: 1691, 1013 + size: 128, 128 + orig: 128, 128 + offset: 0, 0 + index: -1 +unit-mono-full + rotate: false + xy: 3302, 262 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-nova-full + rotate: false + xy: 2094, 492 + size: 56, 56 + orig: 56, 56 + offset: 0, 0 + index: -1 +unit-poly-full + rotate: false + xy: 2094, 434 + size: 56, 56 + orig: 56, 56 + offset: 0, 0 + index: -1 +unit-pulsar-full + rotate: false + xy: 1485, 1025 + size: 58, 48 + orig: 58, 48 + offset: 0, 0 + index: -1 +unit-quasar-full + rotate: false + xy: 3407, 897 + size: 80, 80 + orig: 80, 80 + offset: 0, 0 + index: -1 +unit-risse-full + rotate: false + xy: 3117, 551 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 +unit-spiroct-full + rotate: false + xy: 3183, 968 + size: 94, 75 + orig: 94, 75 + offset: 0, 0 + index: -1 +unit-zenith-full + rotate: false + xy: 3983, 1321 + size: 112, 112 + orig: 112, 112 + offset: 0, 0 + index: -1 +wave + rotate: false + xy: 1796, 484 + size: 64, 64 + orig: 64, 64 + offset: 0, 0 + index: -1 +zenith-wreck0 + rotate: false + xy: 1821, 1029 + size: 112, 112 + orig: 112, 112 + offset: 0, 0 + index: -1 +zenith-wreck1 + rotate: false + xy: 1935, 1029 + size: 112, 112 + orig: 112, 112 + offset: 0, 0 + index: -1 +zenith-wreck2 + rotate: false + xy: 2049, 1029 + size: 112, 112 + orig: 112, 112 + offset: 0, 0 + index: -1 item-blast-compound rotate: false - xy: 1086, 177 + xy: 3413, 193 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-coal rotate: false - xy: 1052, 109 + xy: 3481, 193 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-copper rotate: false - xy: 1018, 41 + xy: 3311, 160 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-graphite rotate: false - xy: 1086, 109 + xy: 3379, 159 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-lead rotate: false - xy: 1086, 75 + xy: 3447, 159 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-metaglass rotate: false - xy: 2281, 1211 + xy: 3515, 193 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-phase-fabric rotate: false - xy: 2399, 1217 + xy: 2223, 237 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-plastanium rotate: false - xy: 2473, 1227 + xy: 2291, 241 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-pyratite rotate: false - xy: 2541, 1227 + xy: 2359, 241 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-sand rotate: false - xy: 2609, 1227 + xy: 2427, 183 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-scrap rotate: false - xy: 1125, 201 + xy: 2495, 183 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-silicon rotate: false - xy: 1120, 133 + xy: 2563, 183 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-spore-pod rotate: false - xy: 1120, 31 + xy: 2665, 183 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-surge-alloy rotate: false - xy: 1193, 200 + xy: 2733, 183 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-thorium rotate: false - xy: 1154, 166 + xy: 2801, 183 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-titanium rotate: false - xy: 1188, 166 + xy: 2869, 183 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-cryofluid rotate: false - xy: 1154, 64 + xy: 3005, 183 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-oil rotate: false - xy: 1188, 64 + xy: 3107, 167 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-slag rotate: false - xy: 1256, 165 + xy: 3345, 125 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-water rotate: false - xy: 1256, 29 + xy: 3481, 125 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 blank rotate: false - xy: 3951, 1852 + xy: 3352, 395 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 circle rotate: false - xy: 1, 10 + xy: 945, 330 size: 201, 201 orig: 201, 201 offset: 0, 0 index: -1 shape-3 rotate: false - xy: 1745, 364 + xy: 1796, 353 size: 63, 63 orig: 63, 63 offset: 0, 0 index: -1 alpha rotate: false - xy: 3901, 1805 + xy: 2152, 446 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 alpha-cell rotate: false - xy: 2679, 1337 + xy: 2094, 384 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -chaos-array +antumbra rotate: false - xy: 3655, 1179 + xy: 291, 519 + size: 216, 240 + orig: 216, 240 + offset: 0, 0 + index: -1 +antumbra-cell + rotate: false + xy: 291, 277 + size: 216, 240 + orig: 216, 240 + offset: 0, 0 + index: -1 +arkyid + rotate: false + xy: 1561, 1403 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 -cix +chaos-array rotate: false - xy: 3655, 1179 + xy: 1561, 1403 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 +arkyid-cell + rotate: false + xy: 2073, 963 + size: 88, 64 + orig: 88, 64 + offset: 0, 0 + index: -1 +arkyid-foot + rotate: false + xy: 3289, 740 + size: 70, 70 + orig: 70, 70 + offset: 0, 0 + index: -1 +arkyid-joint-base + rotate: false + xy: 3289, 668 + size: 70, 70 + orig: 70, 70 + offset: 0, 0 + index: -1 +arkyid-leg + rotate: false + xy: 3909, 941 + size: 56, 56 + orig: 56, 56 + offset: 0, 0 + index: -1 +arkyid-leg-base + rotate: false + xy: 163, 1 + size: 104, 64 + orig: 104, 64 + offset: 0, 0 + index: -1 +atrax + rotate: false + xy: 3279, 979 + size: 88, 64 + orig: 88, 64 + offset: 0, 0 + index: -1 +atrax-base + rotate: false + xy: 3771, 1337 + size: 64, 64 + orig: 64, 64 + offset: 0, 0 + index: -1 +atrax-cell + rotate: false + xy: 3369, 979 + size: 88, 64 + orig: 88, 64 + offset: 0, 0 + index: -1 +atrax-foot + rotate: false + xy: 829, 589 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +atrax-joint + rotate: false + xy: 3259, 1731 + size: 26, 26 + orig: 26, 26 + offset: 0, 0 + index: -1 +atrax-leg + rotate: false + xy: 1485, 887 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +atrax-leg-base + rotate: false + xy: 1523, 887 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +beta + rotate: false + xy: 2093, 234 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +beta-cell + rotate: false + xy: 1885, 196 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +bryde + rotate: false + xy: 1601, 97 + size: 140, 140 + orig: 140, 140 + offset: 0, 0 + index: -1 +bryde-cell + rotate: false + xy: 1743, 97 + size: 140, 140 + orig: 140, 140 + offset: 0, 0 + index: -1 chaos-array-base rotate: false - xy: 3785, 1179 + xy: 2211, 1403 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 chaos-array-cell rotate: false - xy: 3915, 1179 + xy: 2211, 1273 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 chaos-array-leg rotate: false - xy: 583, 859 + xy: 2081, 1143 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 -cix-cell - rotate: false - xy: 2343, 819 - size: 88, 64 - orig: 88, 64 - offset: 0, 0 - index: -1 -cix-foot - rotate: false - xy: 4025, 1009 - size: 70, 70 - orig: 70, 70 - offset: 0, 0 - index: -1 -cix-joint-base - rotate: false - xy: 4025, 937 - size: 70, 70 - orig: 70, 70 - offset: 0, 0 - index: -1 -cix-leg - rotate: false - xy: 291, 215 - size: 56, 56 - orig: 56, 56 - offset: 0, 0 - index: -1 -cix-leg-base - rotate: false - xy: 1103, 561 - size: 104, 64 - orig: 104, 64 - offset: 0, 0 - index: -1 -cix-old - rotate: false - xy: 2433, 819 - size: 88, 64 - orig: 88, 64 - offset: 0, 0 - index: -1 crawler rotate: false - xy: 2879, 1337 + xy: 2035, 220 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 crawler-base rotate: false - xy: 2929, 1337 + xy: 2035, 170 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 crawler-cell rotate: false - xy: 2979, 1337 + xy: 2085, 184 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 crawler-leg rotate: false - xy: 3029, 1337 + xy: 1935, 120 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 dagger rotate: false - xy: 2743, 715 + xy: 1928, 70 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 dagger-base rotate: false - xy: 2793, 753 + xy: 1928, 20 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 dagger-leg rotate: false - xy: 2743, 665 + xy: 1978, 70 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -delta - rotate: false - xy: 2793, 703 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -delta-cell - rotate: false - xy: 2843, 753 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -draug - rotate: false - xy: 2843, 703 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -draug-cell - rotate: false - xy: 2893, 753 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -eradicator - rotate: false - xy: 3525, 1309 - size: 152, 124 - orig: 152, 124 - offset: 0, 0 - index: -1 -eradicator-base - rotate: false - xy: 3679, 1309 - size: 152, 124 - orig: 152, 124 - offset: 0, 0 - index: -1 -eradicator-cell - rotate: false - xy: 3833, 1309 - size: 152, 124 - orig: 152, 124 - offset: 0, 0 - index: -1 -eradicator-leg - rotate: false - xy: 453, 989 - size: 152, 124 - orig: 152, 124 - offset: 0, 0 - index: -1 -eruptor - rotate: false - xy: 2523, 819 - size: 88, 64 - orig: 88, 64 - offset: 0, 0 - index: -1 -eruptor-base - rotate: false - xy: 3165, 1328 - size: 64, 64 - orig: 64, 64 - offset: 0, 0 - index: -1 -eruptor-cell - rotate: false - xy: 2613, 819 - size: 88, 64 - orig: 88, 64 - offset: 0, 0 - index: -1 -eruptor-foot - rotate: false - xy: 407, 231 - size: 40, 40 - orig: 40, 40 - offset: 0, 0 - index: -1 -eruptor-joint - rotate: false - xy: 1727, 691 - size: 26, 26 - orig: 26, 26 - offset: 0, 0 - index: -1 -eruptor-leg - rotate: false - xy: 713, 209 - size: 36, 26 - orig: 36, 26 - offset: 0, 0 - index: -1 -eruptor-leg-base - rotate: false - xy: 3987, 1309 - size: 36, 26 - orig: 36, 26 - offset: 0, 0 - index: -1 -fortress - rotate: false - xy: 1363, 805 - size: 100, 80 - orig: 100, 80 - offset: 0, 0 - index: -1 -fortress-base - rotate: false - xy: 3231, 1328 - size: 64, 64 - orig: 64, 64 - offset: 0, 0 - index: -1 -fortress-cell - rotate: false - xy: 1493, 935 - size: 100, 80 - orig: 100, 80 - offset: 0, 0 - index: -1 -fortress-leg - rotate: false - xy: 2031, 1277 - size: 80, 60 - orig: 80, 60 - offset: 0, 0 - index: -1 -ghoul - rotate: false - xy: 3285, 811 - size: 72, 72 - orig: 72, 72 - offset: 0, 0 - index: -1 -ghoul-cell - rotate: false - xy: 3359, 811 - size: 72, 72 - orig: 72, 72 - offset: 0, 0 - index: -1 -glaive - rotate: false - xy: 596, 21 - size: 56, 56 - orig: 56, 56 - offset: 0, 0 - index: -1 -glaive-cell - rotate: false - xy: 2113, 1281 - size: 56, 56 - orig: 56, 56 - offset: 0, 0 - index: -1 -lich - rotate: false - xy: 2515, 1549 - size: 216, 240 - orig: 216, 240 - offset: 0, 0 - index: -1 -lich-cell - rotate: false - xy: 2733, 1549 - size: 216, 240 - orig: 216, 240 - offset: 0, 0 - index: -1 -mace - rotate: false - xy: 2413, 687 - size: 64, 64 - orig: 64, 64 - offset: 0, 0 - index: -1 -mace-base - rotate: false - xy: 2479, 687 - size: 64, 64 - orig: 64, 64 - offset: 0, 0 - index: -1 -mace-cell - rotate: false - xy: 2545, 687 - size: 64, 64 - orig: 64, 64 - offset: 0, 0 - index: -1 -mace-leg - rotate: false - xy: 2611, 687 - size: 64, 64 - orig: 64, 64 - offset: 0, 0 - index: -1 -oculon - rotate: false - xy: 2875, 803 - size: 80, 80 - orig: 80, 80 - offset: 0, 0 - index: -1 -oculon-armor - rotate: false - xy: 2611, 621 - size: 64, 64 - orig: 64, 64 - offset: 0, 0 - index: -1 -oculon-base - rotate: false - xy: 2957, 803 - size: 80, 80 - orig: 80, 80 - offset: 0, 0 - index: -1 -oculon-base-old - rotate: false - xy: 2893, 653 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -oculon-cell - rotate: false - xy: 3039, 803 - size: 80, 80 - orig: 80, 80 - offset: 0, 0 - index: -1 -oculon-cell-old - rotate: false - xy: 2943, 645 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -oculon-leg - rotate: false - xy: 3121, 803 - size: 80, 80 - orig: 80, 80 - offset: 0, 0 - index: -1 -oculon-leg-old - rotate: false - xy: 2993, 653 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -oculon-old - rotate: false - xy: 2391, 1353 - size: 58, 48 - orig: 58, 48 - offset: 0, 0 - index: -1 -phantom - rotate: false - xy: 1810, 371 - size: 56, 56 - orig: 56, 56 - offset: 0, 0 - index: -1 -phantom-cell - rotate: false - xy: 349, 215 - size: 56, 56 - orig: 56, 56 - offset: 0, 0 - index: -1 -power-cell - rotate: false - xy: 1081, 303 - size: 56, 56 - orig: 56, 56 - offset: 0, 0 - index: -1 -reaper +eclipse rotate: false xy: 1, 1727 size: 320, 320 orig: 320, 320 offset: 0, 0 index: -1 -reaper-cell +eclipse-cell rotate: false xy: 1, 1405 size: 320, 320 orig: 320, 320 offset: 0, 0 index: -1 -revenant +eradicator rotate: false - xy: 3954, 1611 - size: 112, 112 - orig: 112, 112 + xy: 509, 21 + size: 152, 124 + orig: 152, 124 offset: 0, 0 index: -1 -revenant-cell +eradicator-base rotate: false - xy: 843, 253 - size: 112, 112 - orig: 112, 112 + xy: 1139, 113 + size: 152, 124 + orig: 152, 124 offset: 0, 0 index: -1 -spirit +eradicator-cell rotate: false - xy: 3443, 661 + xy: 1293, 113 + size: 152, 124 + orig: 152, 124 + offset: 0, 0 + index: -1 +eradicator-leg + rotate: false + xy: 1447, 113 + size: 152, 124 + orig: 152, 124 + offset: 0, 0 + index: -1 +flare + rotate: false + xy: 2128, 18 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -spirit-cell +fortress rotate: false - xy: 3493, 661 - size: 48, 48 - orig: 48, 48 + xy: 727, 549 + size: 100, 80 + orig: 100, 80 offset: 0, 0 index: -1 -tau +fortress-base rotate: false - xy: 1081, 245 + xy: 3625, 773 + size: 64, 64 + orig: 64, 64 + offset: 0, 0 + index: -1 +fortress-cell + rotate: false + xy: 2265, 1061 + size: 100, 80 + orig: 100, 80 + offset: 0, 0 + index: -1 +fortress-leg + rotate: false + xy: 509, 633 + size: 80, 60 + orig: 80, 60 + offset: 0, 0 + index: -1 +gamma + rotate: false + xy: 1861, 354 size: 56, 56 orig: 56, 56 offset: 0, 0 index: -1 -tau-base +gamma-cell rotate: false - xy: 3543, 661 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -tau-cell - rotate: false - xy: 1679, 305 + xy: 1920, 502 size: 56, 56 orig: 56, 56 offset: 0, 0 index: -1 -tau-leg +horizon rotate: false - xy: 3593, 661 - size: 48, 48 - orig: 48, 48 + xy: 3489, 905 + size: 72, 72 + orig: 72, 72 offset: 0, 0 index: -1 -trident +horizon-cell rotate: false - xy: 1595, 915 + xy: 3563, 905 + size: 72, 72 + orig: 72, 72 + offset: 0, 0 + index: -1 +mace + rotate: false + xy: 3691, 583 + size: 64, 64 + orig: 64, 64 + offset: 0, 0 + index: -1 +mace-base + rotate: false + xy: 3757, 735 + size: 64, 64 + orig: 64, 64 + offset: 0, 0 + index: -1 +mace-cell + rotate: false + xy: 3757, 669 + size: 64, 64 + orig: 64, 64 + offset: 0, 0 + index: -1 +mace-leg + rotate: false + xy: 3823, 735 + size: 64, 64 + orig: 64, 64 + offset: 0, 0 + index: -1 +mega + rotate: false + xy: 2469, 1041 size: 100, 100 orig: 100, 100 offset: 0, 0 index: -1 -trident-cell +mega-cell rotate: false - xy: 2451, 1329 + xy: 2571, 1041 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +minke + rotate: false + xy: 3251, 1273 + size: 128, 128 + orig: 128, 128 + offset: 0, 0 + index: -1 +minke-cell + rotate: false + xy: 3251, 1143 + size: 128, 128 + orig: 128, 128 + offset: 0, 0 + index: -1 +mono + rotate: false + xy: 2452, 353 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +mono-cell + rotate: false + xy: 2502, 353 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +nova + rotate: false + xy: 1978, 444 size: 56, 56 orig: 56, 56 offset: 0, 0 index: -1 +nova-base + rotate: false + xy: 2802, 353 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +nova-cell + rotate: false + xy: 2036, 444 + size: 56, 56 + orig: 56, 56 + offset: 0, 0 + index: -1 +nova-leg + rotate: false + xy: 2852, 353 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +poly + rotate: false + xy: 1919, 328 + size: 56, 56 + orig: 56, 56 + offset: 0, 0 + index: -1 +poly-cell + rotate: false + xy: 1977, 328 + size: 56, 56 + orig: 56, 56 + offset: 0, 0 + index: -1 +power-cell + rotate: false + xy: 1977, 270 + size: 56, 56 + orig: 56, 56 + offset: 0, 0 + index: -1 +pulsar + rotate: false + xy: 1745, 573 + size: 58, 48 + orig: 58, 48 + offset: 0, 0 + index: -1 +pulsar-base + rotate: false + xy: 2902, 353 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +pulsar-cell + rotate: false + xy: 2203, 892 + size: 58, 48 + orig: 58, 48 + offset: 0, 0 + index: -1 +pulsar-leg + rotate: false + xy: 4021, 736 + size: 64, 64 + orig: 64, 64 + offset: 0, 0 + index: -1 +quasar + rotate: false + xy: 4003, 1449 + size: 80, 80 + orig: 80, 80 + offset: 0, 0 + index: -1 +quasar-base + rotate: false + xy: 1600, 15 + size: 80, 80 + orig: 80, 80 + offset: 0, 0 + index: -1 +quasar-cell + rotate: false + xy: 1682, 15 + size: 80, 80 + orig: 80, 80 + offset: 0, 0 + index: -1 +quasar-leg + rotate: false + xy: 1764, 15 + size: 80, 80 + orig: 80, 80 + offset: 0, 0 + index: -1 +risse + rotate: false + xy: 2725, 453 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 +risse-cell + rotate: false + xy: 2823, 453 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 +spiroct + rotate: false + xy: 1615, 740 + size: 94, 75 + orig: 94, 75 + offset: 0, 0 + index: -1 +spiroct-cell + rotate: false + xy: 1941, 560 + size: 94, 75 + orig: 94, 75 + offset: 0, 0 + index: -1 +spiroct-foot + rotate: false + xy: 3552, 263 + size: 46, 46 + orig: 46, 46 + offset: 0, 0 + index: -1 +spiroct-joint + rotate: false + xy: 3073, 99 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +spiroct-leg + rotate: false + xy: 3771, 1301 + size: 48, 34 + orig: 48, 34 + offset: 0, 0 + index: -1 +spiroct-leg-base + rotate: false + xy: 3302, 362 + size: 48, 34 + orig: 48, 34 + offset: 0, 0 + index: -1 vanguard rotate: false - xy: 2321, 1287 + xy: 3352, 269 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 vanguard-cell rotate: false - xy: 2181, 1235 + xy: 3402, 269 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +antumbra-missiles + rotate: false + xy: 4041, 884 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 artillery rotate: false - xy: 2729, 1329 + xy: 4041, 826 size: 48, 56 orig: 48, 56 offset: 0, 0 index: -1 +artillery-mount + rotate: false + xy: 3289, 596 + size: 70, 70 + orig: 70, 70 + offset: 0, 0 + index: -1 +beam-weapon + rotate: false + xy: 1518, 31 + size: 80, 80 + orig: 80, 80 + offset: 0, 0 + index: -1 chaos rotate: false - xy: 1023, 245 + xy: 1862, 412 size: 56, 136 orig: 56, 136 offset: 0, 0 index: -1 +eclipse-weapon + rotate: false + xy: 2085, 84 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 eradication rotate: false - xy: 1433, 513 + xy: 1745, 623 size: 96, 192 orig: 96, 192 offset: 0, 0 index: -1 eruption rotate: false - xy: 2943, 745 + xy: 2135, 176 size: 48, 56 orig: 48, 56 offset: 0, 0 index: -1 flakgun rotate: false - xy: 2993, 753 + xy: 2135, 126 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 flamethrower rotate: false - xy: 3043, 745 + xy: 2135, 68 size: 48, 56 orig: 48, 56 offset: 0, 0 index: -1 +heal-shotgun-weapon + rotate: false + xy: 2302, 439 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 heal-weapon rotate: false - xy: 3093, 753 + xy: 2352, 439 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 heal-weapon-mount rotate: false - xy: 3143, 753 + xy: 2202, 389 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 +large-artillery + rotate: false + xy: 3052, 385 + size: 48, 66 + orig: 48, 66 + offset: 0, 0 + index: -1 large-weapon rotate: false - xy: 3443, 711 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -lich-missiles - rotate: false - xy: 3493, 761 + xy: 3102, 403 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 missiles rotate: false - xy: 3593, 711 + xy: 3202, 342 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 missiles-mount rotate: false - xy: 2793, 653 + xy: 2402, 353 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +mount-purple-weapon + rotate: false + xy: 2702, 353 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 mount-weapon rotate: false - xy: 2843, 653 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -reaper-weapon - rotate: false - xy: 3043, 645 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -revenant-missiles - rotate: false - xy: 3093, 653 + xy: 2752, 353 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 small-basic-weapon rotate: false - xy: 3243, 653 + xy: 3052, 335 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +small-mount-weapon + rotate: false + xy: 3102, 303 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 small-weapon rotate: false - xy: 3293, 661 + xy: 3152, 303 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 +spiroct-weapon + rotate: false + xy: 3252, 290 + size: 48, 56 + orig: 48, 56 + offset: 0, 0 + index: -1 weapon rotate: false - xy: 2181, 1185 + xy: 3452, 269 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -wraith +zenith-missiles rotate: false - xy: 2231, 1235 + xy: 3502, 269 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -beam-weapon +zenith rotate: false - xy: 2793, 803 - size: 80, 80 - orig: 80, 80 + xy: 3983, 1207 + size: 112, 112 + orig: 112, 112 offset: 0, 0 index: -1 -beam-weapon +zenith-cell rotate: false - xy: 2793, 803 - size: 80, 80 - orig: 80, 80 + xy: 163, 67 + size: 112, 112 + orig: 112, 112 offset: 0, 0 index: -1 @@ -6059,147 +6717,147 @@ filter: nearest,nearest repeat: none char1 rotate: false - xy: 2311, 213 + xy: 51, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 char2 rotate: false - xy: 101, 17 + xy: 1717, 81 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 char3 rotate: false - xy: 2345, 213 + xy: 1997, 163 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cliff rotate: false - xy: 135, 17 + xy: 2047, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cliffs1 rotate: false - xy: 2379, 213 + xy: 85, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 coal1 rotate: false - xy: 169, 17 + xy: 1751, 81 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 coal2 rotate: false - xy: 2413, 213 + xy: 1997, 129 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 coal3 rotate: false - xy: 203, 17 + xy: 2081, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 copper1 rotate: false - xy: 2447, 213 + xy: 119, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 copper2 rotate: false - xy: 237, 17 + xy: 1785, 81 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 copper3 rotate: false - xy: 2481, 213 + xy: 2115, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 craters1 rotate: false - xy: 271, 17 + xy: 153, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 craters2 rotate: false - xy: 2515, 213 + xy: 1819, 81 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 craters3 rotate: false - xy: 305, 17 + xy: 2149, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 craters4 rotate: false - xy: 2549, 213 + xy: 187, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 craters5 rotate: false - xy: 339, 17 + xy: 1853, 81 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 craters6 rotate: false - xy: 2583, 213 + xy: 2183, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-metal-large rotate: false - xy: 1569, 83 + xy: 1667, 181 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 dark-metal1 rotate: false - xy: 373, 17 + xy: 221, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-metal2 rotate: false - xy: 2617, 213 + xy: 1887, 81 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-panel-1 rotate: false - xy: 407, 17 + xy: 2217, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6213,7 +6871,7 @@ dark-panel-1-edge index: -1 dark-panel-2 rotate: false - xy: 2651, 213 + xy: 255, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6227,7 +6885,7 @@ dark-panel-2-edge index: -1 dark-panel-3 rotate: false - xy: 441, 17 + xy: 1921, 81 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6241,7 +6899,7 @@ dark-panel-3-edge index: -1 dark-panel-4 rotate: false - xy: 2685, 213 + xy: 2251, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6255,7 +6913,7 @@ dark-panel-4-edge index: -1 dark-panel-5 rotate: false - xy: 475, 17 + xy: 289, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6269,7 +6927,7 @@ dark-panel-5-edge index: -1 dark-panel-6 rotate: false - xy: 2719, 213 + xy: 1955, 81 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6290,7 +6948,7 @@ darksand-edge index: -1 darksand-tainted-water rotate: false - xy: 2787, 213 + xy: 357, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6304,28 +6962,28 @@ darksand-tainted-water-edge index: -1 darksand-tainted-water1 rotate: false - xy: 577, 17 + xy: 2353, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 darksand-tainted-water2 rotate: false - xy: 2821, 213 + xy: 391, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 darksand-tainted-water3 rotate: false - xy: 611, 17 + xy: 2387, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 darksand-water rotate: false - xy: 2855, 213 + xy: 425, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6339,49 +6997,49 @@ darksand-water-edge index: -1 darksand-water1 rotate: false - xy: 645, 17 + xy: 2421, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 darksand-water2 rotate: false - xy: 2889, 213 + xy: 459, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 darksand-water3 rotate: false - xy: 679, 17 + xy: 2455, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 darksand1 rotate: false - xy: 509, 17 + xy: 2285, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 darksand2 rotate: false - xy: 2753, 213 + xy: 323, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 darksand3 rotate: false - xy: 543, 17 + xy: 2319, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 deepwater rotate: false - xy: 2923, 213 + xy: 493, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6395,28 +7053,28 @@ deepwater-edge index: -1 dunerocks-large rotate: false - xy: 1667, 181 + xy: 1667, 115 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 dunerocks1 rotate: false - xy: 713, 17 + xy: 2489, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dunerocks2 rotate: false - xy: 2957, 213 + xy: 527, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 edge rotate: false - xy: 747, 17 + xy: 2523, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6430,7 +7088,7 @@ edge-stencil index: -1 edgier rotate: false - xy: 2991, 213 + xy: 561, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6444,21 +7102,21 @@ grass-edge index: -1 grass1 rotate: false - xy: 781, 17 + xy: 2557, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 grass2 rotate: false - xy: 3025, 213 + xy: 595, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 grass3 rotate: false - xy: 815, 17 + xy: 2591, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6472,42 +7130,42 @@ holostone-edge index: -1 holostone1 rotate: false - xy: 3059, 213 + xy: 629, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 holostone2 rotate: false - xy: 849, 17 + xy: 2625, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 holostone3 rotate: false - xy: 3093, 213 + xy: 663, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 hotrock1 rotate: false - xy: 883, 17 + xy: 2659, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 hotrock2 rotate: false - xy: 3127, 213 + xy: 697, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 hotrock3 rotate: false - xy: 917, 17 + xy: 2693, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6528,42 +7186,42 @@ ice-snow-edge index: -1 ice-snow1 rotate: false - xy: 985, 17 + xy: 2761, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice-snow2 rotate: false - xy: 3229, 213 + xy: 799, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice-snow3 rotate: false - xy: 1019, 17 + xy: 2795, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice1 rotate: false - xy: 3161, 213 + xy: 731, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice2 rotate: false - xy: 951, 17 + xy: 2727, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice3 rotate: false - xy: 3195, 213 + xy: 765, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6577,14 +7235,14 @@ icerocks-large index: -1 icerocks1 rotate: false - xy: 3263, 213 + xy: 833, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 icerocks2 rotate: false - xy: 1053, 17 + xy: 2829, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6598,77 +7256,77 @@ ignarock-edge index: -1 ignarock1 rotate: false - xy: 3297, 213 + xy: 867, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ignarock2 rotate: false - xy: 1087, 17 + xy: 2863, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ignarock3 rotate: false - xy: 3331, 213 + xy: 901, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 lead1 rotate: false - xy: 1121, 17 + xy: 2897, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 lead2 rotate: false - xy: 3365, 213 + xy: 935, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 lead3 rotate: false - xy: 1155, 17 + xy: 2931, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 magmarock1 rotate: false - xy: 3399, 213 + xy: 969, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 magmarock2 rotate: false - xy: 1189, 17 + xy: 2965, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 magmarock3 rotate: false - xy: 3433, 213 + xy: 1003, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor rotate: false - xy: 1223, 17 + xy: 2999, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-2 rotate: false - xy: 3467, 213 + xy: 1037, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6682,7 +7340,7 @@ metal-floor-2-edge index: -1 metal-floor-3 rotate: false - xy: 1257, 17 + xy: 3033, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6696,7 +7354,7 @@ metal-floor-3-edge index: -1 metal-floor-5 rotate: false - xy: 3501, 213 + xy: 1071, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6717,21 +7375,21 @@ metal-floor-damaged-edge index: -1 metal-floor-damaged1 rotate: false - xy: 1291, 17 + xy: 3067, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-damaged2 rotate: false - xy: 3535, 213 + xy: 1105, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-damaged3 rotate: false - xy: 1325, 17 + xy: 3101, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6752,168 +7410,168 @@ moss-edge index: -1 moss1 rotate: false - xy: 3569, 213 + xy: 1139, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 moss2 rotate: false - xy: 1359, 17 + xy: 3135, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 moss3 rotate: false - xy: 3603, 213 + xy: 1173, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-coal1 rotate: false - xy: 1393, 17 + xy: 3169, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-coal2 rotate: false - xy: 3637, 213 + xy: 1207, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-coal3 rotate: false - xy: 1427, 17 + xy: 3203, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-copper1 rotate: false - xy: 3671, 213 + xy: 1241, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-copper2 rotate: false - xy: 1461, 17 + xy: 3237, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-copper3 rotate: false - xy: 3705, 213 + xy: 1275, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-lead1 rotate: false - xy: 1495, 17 + xy: 3271, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-lead2 rotate: false - xy: 3739, 213 + xy: 1309, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-lead3 rotate: false - xy: 1529, 17 + xy: 3305, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-scrap1 rotate: false - xy: 3773, 213 + xy: 1343, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-scrap2 rotate: false - xy: 3807, 213 + xy: 3339, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-scrap3 rotate: false - xy: 3841, 213 + xy: 1377, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-thorium1 rotate: false - xy: 3875, 213 + xy: 3373, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-thorium2 rotate: false - xy: 3909, 213 + xy: 1411, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-thorium3 rotate: false - xy: 3943, 213 + xy: 3407, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-titanium1 rotate: false - xy: 3977, 213 + xy: 1445, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-titanium2 rotate: false - xy: 4011, 213 + xy: 3441, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-titanium3 rotate: false - xy: 4045, 213 + xy: 1479, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pebbles1 rotate: false - xy: 1569, 49 + xy: 3475, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pebbles2 rotate: false - xy: 1635, 115 + xy: 1513, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pebbles3 rotate: false - xy: 1603, 49 + xy: 3509, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6925,499 +7583,506 @@ pine orig: 48, 48 offset: 0, 0 index: -1 -rocks-large - rotate: false - xy: 1799, 181 - size: 64, 64 - orig: 64, 64 - offset: 0, 0 - index: -1 -rocks1 - rotate: false - xy: 1563, 15 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -rocks2 - rotate: false - xy: 1597, 15 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -salt - rotate: false - xy: 2261, 163 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -salt-edge +ripples rotate: false xy: 1079, 149 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 -saltrocks-large +rocks-large rotate: false - xy: 1865, 181 + xy: 1733, 115 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 -saltrocks1 +rocks1 rotate: false - xy: 2311, 179 + xy: 1547, 17 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -saltrocks2 +rocks2 rotate: false - xy: 2345, 179 + xy: 3543, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -sand-edge +salt + rotate: false + xy: 1581, 17 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +salt-edge rotate: false xy: 1079, 51 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 -sand-water +saltrocks-large rotate: false - xy: 2481, 179 + xy: 1799, 181 + size: 64, 64 + orig: 64, 64 + offset: 0, 0 + index: -1 +saltrocks1 + rotate: false + xy: 3577, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -sand-water-edge +saltrocks2 + rotate: false + xy: 1615, 17 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +sand-edge rotate: false xy: 1177, 149 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 -sand-water1 +sand-water rotate: false - xy: 2515, 179 + xy: 3713, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -sand-water2 - rotate: false - xy: 2549, 179 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -sand-water3 - rotate: false - xy: 2583, 179 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -sand1 - rotate: false - xy: 2379, 179 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -sand2 - rotate: false - xy: 2413, 179 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -sand3 - rotate: false - xy: 2447, 179 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -sandrocks-large - rotate: false - xy: 1931, 181 - size: 64, 64 - orig: 64, 64 - offset: 0, 0 - index: -1 -sandrocks1 - rotate: false - xy: 2617, 179 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -sandrocks2 - rotate: false - xy: 2651, 179 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -scrap1 - rotate: false - xy: 2685, 179 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -scrap2 - rotate: false - xy: 2719, 179 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -scrap3 - rotate: false - xy: 2753, 179 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -shale-edge +sand-water-edge rotate: false xy: 1177, 51 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 -shale1 +sand-water1 rotate: false - xy: 2787, 179 + xy: 3747, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -shale2 +sand-water2 rotate: false - xy: 2821, 179 + xy: 3781, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -shale3 +sand-water3 rotate: false - xy: 2855, 179 + xy: 3815, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -shalerocks-large +sand1 rotate: false - xy: 1997, 181 + xy: 3611, 213 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +sand2 + rotate: false + xy: 3645, 213 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +sand3 + rotate: false + xy: 3679, 213 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +sandrocks-large + rotate: false + xy: 1799, 115 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 -shalerocks1 +sandrocks1 rotate: false - xy: 2889, 179 + xy: 3849, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -shalerocks2 +sandrocks2 rotate: false - xy: 2923, 179 + xy: 3883, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -shrubs-large +scrap1 rotate: false - xy: 2063, 181 - size: 64, 64 - orig: 64, 64 - offset: 0, 0 - index: -1 -shrubs1 - rotate: false - xy: 2957, 179 + xy: 3917, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -shrubs2 +scrap2 rotate: false - xy: 2991, 179 + xy: 3951, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -slag +scrap3 rotate: false - xy: 3025, 179 + xy: 3985, 213 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -slag-edge +shale-edge rotate: false xy: 1275, 149 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 -snow-edge +shale1 + rotate: false + xy: 4019, 213 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +shale2 + rotate: false + xy: 4053, 213 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +shale3 + rotate: false + xy: 1649, 17 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +shalerocks-large + rotate: false + xy: 1865, 181 + size: 64, 64 + orig: 64, 64 + offset: 0, 0 + index: -1 +shalerocks1 + rotate: false + xy: 1683, 31 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +shalerocks2 + rotate: false + xy: 1717, 47 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +shrubs-large + rotate: false + xy: 1865, 115 + size: 64, 64 + orig: 64, 64 + offset: 0, 0 + index: -1 +shrubs1 + rotate: false + xy: 1751, 47 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +shrubs2 + rotate: false + xy: 1785, 47 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +slag + rotate: false + xy: 1819, 47 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +slag-edge rotate: false xy: 1275, 51 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 -snow-pine - rotate: false - xy: 2261, 197 - size: 48, 48 - orig: 48, 48 - offset: 0, 0 - index: -1 -snow1 - rotate: false - xy: 3059, 179 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -snow2 - rotate: false - xy: 3093, 179 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -snow3 - rotate: false - xy: 3127, 179 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -snowrocks-large - rotate: false - xy: 2129, 181 - size: 64, 64 - orig: 64, 64 - offset: 0, 0 - index: -1 -snowrocks1 - rotate: false - xy: 3161, 179 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -snowrocks2 - rotate: false - xy: 3195, 179 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -spawn - rotate: false - xy: 3229, 179 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -spore-moss-edge +snow-edge rotate: false xy: 1373, 149 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 -spore-moss1 +snow-pine rotate: false - xy: 3263, 179 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -spore-moss2 - rotate: false - xy: 3297, 179 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -spore-moss3 - rotate: false - xy: 3331, 179 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -spore-pine - rotate: false - xy: 51, 1 + xy: 1667, 65 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -sporerocks-large +snow1 rotate: false - xy: 2195, 181 + xy: 1853, 47 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +snow2 + rotate: false + xy: 1887, 47 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +snow3 + rotate: false + xy: 1921, 47 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +snowrocks-large + rotate: false + xy: 1931, 181 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 -sporerocks1 +snowrocks1 rotate: false - xy: 3365, 179 + xy: 1955, 47 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -sporerocks2 +snowrocks2 rotate: false - xy: 3399, 179 + xy: 2031, 163 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -stone-edge +spawn + rotate: false + xy: 2031, 129 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +spore-moss-edge rotate: false xy: 1373, 51 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 -stone1 +spore-moss1 rotate: false - xy: 3433, 179 + xy: 2065, 179 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -stone2 +spore-moss2 rotate: false - xy: 3467, 179 + xy: 2065, 145 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -stone3 +spore-moss3 rotate: false - xy: 3501, 179 + xy: 2099, 179 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -tainted-water +spore-pine rotate: false - xy: 3535, 179 + xy: 1997, 197 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +sporerocks-large + rotate: false + xy: 1931, 115 + size: 64, 64 + orig: 64, 64 + offset: 0, 0 + index: -1 +sporerocks1 + rotate: false + xy: 2099, 145 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -tainted-water-edge +sporerocks2 + rotate: false + xy: 2133, 179 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +stone-edge rotate: false xy: 1471, 149 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 -tar +stone1 rotate: false - xy: 3569, 179 + xy: 2133, 145 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -tar-edge +stone2 + rotate: false + xy: 2167, 179 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +stone3 + rotate: false + xy: 2167, 145 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +tainted-water + rotate: false + xy: 2201, 179 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +tainted-water-edge rotate: false xy: 1471, 51 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 +tar + rotate: false + xy: 2201, 145 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +tar-edge + rotate: false + xy: 1569, 149 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 tendrils1 rotate: false - xy: 3603, 179 + xy: 2235, 179 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 tendrils2 rotate: false - xy: 3637, 179 + xy: 2235, 145 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 tendrils3 rotate: false - xy: 3671, 179 + xy: 2269, 179 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 thorium1 rotate: false - xy: 3705, 179 + xy: 2269, 145 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 thorium2 rotate: false - xy: 3739, 179 + xy: 2303, 179 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 thorium3 rotate: false - xy: 3773, 179 + xy: 2303, 145 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium1 rotate: false - xy: 3807, 179 + xy: 2337, 179 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium2 rotate: false - xy: 3841, 179 + xy: 2337, 145 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium3 rotate: false - xy: 3875, 179 + xy: 2371, 179 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 water rotate: false - xy: 3909, 179 + xy: 2371, 145 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 water-edge rotate: false - xy: 1569, 149 + xy: 1569, 51 size: 96, 96 orig: 96, 96 offset: 0, 0 @@ -7451,21 +8116,21 @@ alloy-smelter-icon-editor index: -1 arc-icon-editor rotate: false - xy: 995, 177 + xy: 1085, 227 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 armored-conveyor-icon-editor rotate: false - xy: 1029, 177 + xy: 1565, 225 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 battery-icon-editor rotate: false - xy: 1063, 177 + xy: 1119, 227 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -7493,7 +8158,7 @@ blast-mixer-icon-editor index: -1 block-border-editor rotate: false - xy: 1097, 177 + xy: 1599, 225 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -7521,28 +8186,28 @@ block-unloader-icon-editor index: -1 bridge-conduit-icon-editor rotate: false - xy: 1357, 225 + xy: 1633, 225 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-conveyor-icon-editor rotate: false - xy: 1391, 225 + xy: 1667, 225 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 char-icon-editor rotate: false - xy: 1425, 225 + xy: 1701, 225 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-char1 rotate: false - xy: 1425, 225 + xy: 1701, 225 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -7556,14 +8221,14 @@ clear-editor index: -1 cliff-icon-editor rotate: false - xy: 1459, 225 + xy: 1735, 225 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cliffs-icon-editor rotate: false - xy: 1493, 225 + xy: 1769, 225 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -7577,14 +8242,14 @@ coal-centrifuge-icon-editor index: -1 combustion-generator-icon-editor rotate: false - xy: 1527, 225 + xy: 1803, 225 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-icon-editor rotate: false - xy: 1561, 225 + xy: 1847, 257 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -7598,14 +8263,14 @@ container-icon-editor index: -1 conveyor-icon-editor rotate: false - xy: 1595, 225 + xy: 1881, 257 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 copper-wall-icon-editor rotate: false - xy: 1629, 225 + xy: 1915, 257 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -7640,14 +8305,14 @@ core-shard-icon-editor index: -1 craters-icon-editor rotate: false - xy: 1663, 225 + xy: 1979, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-craters1 rotate: false - xy: 1663, 225 + xy: 1979, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -7675,119 +8340,119 @@ cyclone-icon-editor index: -1 dark-metal-icon-editor rotate: false - xy: 1697, 225 + xy: 2013, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-panel-1-icon-editor rotate: false - xy: 1731, 225 + xy: 2047, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-dark-panel-1 rotate: false - xy: 1731, 225 + xy: 2047, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-panel-2-icon-editor rotate: false - xy: 1765, 225 + xy: 2081, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-dark-panel-2 rotate: false - xy: 1765, 225 + xy: 2081, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-panel-3-icon-editor rotate: false - xy: 1799, 225 + xy: 2115, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-dark-panel-3 rotate: false - xy: 1799, 225 + xy: 2115, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-panel-4-icon-editor rotate: false - xy: 1847, 257 + xy: 2149, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-dark-panel-4 rotate: false - xy: 1847, 257 + xy: 2149, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-panel-5-icon-editor rotate: false - xy: 1881, 257 + xy: 2183, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-dark-panel-5 rotate: false - xy: 1881, 257 + xy: 2183, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dark-panel-6-icon-editor rotate: false - xy: 1915, 257 + xy: 2217, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-dark-panel-6 rotate: false - xy: 1915, 257 + xy: 2217, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 darksand-icon-editor rotate: false - xy: 1979, 289 + xy: 2251, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-darksand1 rotate: false - xy: 1979, 289 + xy: 2251, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 darksand-tainted-water-icon-editor rotate: false - xy: 2013, 289 + xy: 2285, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 darksand-water-icon-editor rotate: false - xy: 2047, 289 + xy: 2319, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -7801,14 +8466,14 @@ data-processor-icon-editor index: -1 deepwater-icon-editor rotate: false - xy: 2081, 289 + xy: 2353, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-deepwater rotate: false - xy: 2081, 289 + xy: 2353, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -7822,7 +8487,7 @@ differential-generator-icon-editor index: -1 diode-icon-editor rotate: false - xy: 2115, 289 + xy: 2387, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -7843,7 +8508,7 @@ distributor-icon-editor index: -1 door-icon-editor rotate: false - xy: 2149, 289 + xy: 2421, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -7857,805 +8522,805 @@ door-large-icon-editor index: -1 dunerocks-icon-editor rotate: false - xy: 2183, 289 + xy: 2455, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 duo-icon-editor rotate: false - xy: 2217, 289 + xy: 2489, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-char2 rotate: false - xy: 2251, 289 + xy: 2523, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-char3 rotate: false - xy: 2285, 289 + xy: 2557, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-craters2 rotate: false - xy: 2319, 289 + xy: 2591, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-craters3 rotate: false - xy: 2353, 289 + xy: 2625, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-darksand-tainted-water1 rotate: false - xy: 2455, 289 + xy: 2727, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-darksand-tainted-water2 rotate: false - xy: 2489, 289 + xy: 2761, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-darksand-tainted-water3 rotate: false - xy: 2523, 289 + xy: 2795, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-darksand-water1 rotate: false - xy: 2557, 289 + xy: 2829, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-darksand-water2 rotate: false - xy: 2591, 289 + xy: 2863, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-darksand-water3 rotate: false - xy: 2625, 289 + xy: 2897, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-darksand2 rotate: false - xy: 2387, 289 + xy: 2659, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-darksand3 rotate: false - xy: 2421, 289 + xy: 2693, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-grass1 rotate: false - xy: 2659, 289 + xy: 2931, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 grass-icon-editor rotate: false - xy: 2659, 289 + xy: 2931, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-grass2 rotate: false - xy: 2693, 289 + xy: 2965, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-grass3 rotate: false - xy: 2727, 289 + xy: 2999, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-holostone1 rotate: false - xy: 2761, 289 + xy: 3033, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 holostone-icon-editor rotate: false - xy: 2761, 289 + xy: 3033, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-holostone2 rotate: false - xy: 2795, 289 + xy: 3067, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-holostone3 rotate: false - xy: 2829, 289 + xy: 3101, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-hotrock1 rotate: false - xy: 2863, 289 + xy: 3135, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 hotrock-icon-editor rotate: false - xy: 2863, 289 + xy: 3135, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-hotrock2 rotate: false - xy: 2897, 289 + xy: 3169, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-hotrock3 rotate: false - xy: 2931, 289 + xy: 3203, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ice-snow1 rotate: false - xy: 3067, 289 + xy: 3339, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice-snow-icon-editor rotate: false - xy: 3067, 289 + xy: 3339, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ice-snow2 rotate: false - xy: 3101, 289 + xy: 3373, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ice-snow3 rotate: false - xy: 3135, 289 + xy: 3407, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ice1 rotate: false - xy: 2965, 289 + xy: 3237, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice-icon-editor rotate: false - xy: 2965, 289 + xy: 3237, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ice2 rotate: false - xy: 2999, 289 + xy: 3271, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ice3 rotate: false - xy: 3033, 289 + xy: 3305, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ignarock1 rotate: false - xy: 3169, 289 + xy: 3441, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ignarock-icon-editor rotate: false - xy: 3169, 289 + xy: 3441, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ignarock2 rotate: false - xy: 3203, 289 + xy: 3475, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ignarock3 rotate: false - xy: 3237, 289 + xy: 3509, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-magmarock1 rotate: false - xy: 3271, 289 + xy: 3543, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 magmarock-icon-editor rotate: false - xy: 3271, 289 + xy: 3543, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-magmarock2 rotate: false - xy: 3305, 289 + xy: 3577, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-magmarock3 rotate: false - xy: 3339, 289 + xy: 3611, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-metal-floor rotate: false - xy: 3373, 289 + xy: 3645, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-icon-editor rotate: false - xy: 3373, 289 + xy: 3645, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-metal-floor-2 rotate: false - xy: 3407, 289 + xy: 3679, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-2-icon-editor rotate: false - xy: 3407, 289 + xy: 3679, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-metal-floor-3 rotate: false - xy: 3441, 289 + xy: 3713, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-3-icon-editor rotate: false - xy: 3441, 289 + xy: 3713, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-metal-floor-5 rotate: false - xy: 3475, 289 + xy: 3747, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-5-icon-editor rotate: false - xy: 3475, 289 + xy: 3747, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-metal-floor-damaged1 rotate: false - xy: 3509, 289 + xy: 3781, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-damaged-icon-editor rotate: false - xy: 3509, 289 + xy: 3781, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-metal-floor-damaged2 rotate: false - xy: 3543, 289 + xy: 3815, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-metal-floor-damaged3 rotate: false - xy: 3577, 289 + xy: 3849, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-moss1 rotate: false - xy: 3611, 289 + xy: 3883, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 moss-icon-editor rotate: false - xy: 3611, 289 + xy: 3883, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-moss2 rotate: false - xy: 3645, 289 + xy: 3917, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-moss3 rotate: false - xy: 3679, 289 + xy: 3951, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-coal1 rotate: false - xy: 3713, 289 + xy: 3985, 289 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-coal2 rotate: false - xy: 3747, 289 + xy: 163, 1 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-coal3 rotate: false - xy: 3781, 289 + xy: 197, 1 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-copper1 rotate: false - xy: 3815, 289 + xy: 231, 1 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-copper2 rotate: false - xy: 3849, 289 + xy: 265, 1 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-copper3 rotate: false - xy: 3883, 289 + xy: 299, 1 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-lead1 rotate: false - xy: 3917, 289 + xy: 333, 1 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-lead2 rotate: false - xy: 3951, 289 + xy: 367, 1 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-lead3 rotate: false - xy: 3985, 289 + xy: 401, 1 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-scrap1 rotate: false - xy: 163, 1 + xy: 435, 1 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-scrap2 rotate: false - xy: 197, 1 + xy: 469, 1 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-scrap3 rotate: false - xy: 231, 1 + xy: 503, 1 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-thorium1 rotate: false - xy: 265, 1 + xy: 915, 65 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-thorium2 rotate: false - xy: 299, 1 + xy: 915, 31 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-thorium3 rotate: false - xy: 333, 1 + xy: 4025, 321 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-titanium1 rotate: false - xy: 367, 1 + xy: 4059, 321 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-titanium2 rotate: false - xy: 401, 1 + xy: 4019, 287 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-titanium3 rotate: false - xy: 435, 1 + xy: 4053, 287 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-pebbles1 rotate: false - xy: 469, 1 + xy: 1837, 223 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-pebbles2 rotate: false - xy: 503, 1 + xy: 1871, 223 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-pebbles3 rotate: false - xy: 915, 65 + xy: 1905, 223 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-salt rotate: false - xy: 915, 31 + xy: 945, 177 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 salt-icon-editor rotate: false - xy: 915, 31 + xy: 945, 177 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-sand-water1 rotate: false - xy: 4053, 287 + xy: 979, 143 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-sand-water2 rotate: false - xy: 1833, 223 + xy: 1013, 177 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-sand-water3 rotate: false - xy: 1867, 223 + xy: 979, 109 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-sand1 rotate: false - xy: 4025, 321 + xy: 945, 143 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sand-icon-editor rotate: false - xy: 4025, 321 + xy: 945, 143 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-sand2 rotate: false - xy: 4059, 321 + xy: 979, 177 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-sand3 rotate: false - xy: 4019, 287 + xy: 945, 109 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-shale1 rotate: false - xy: 1901, 223 + xy: 1013, 143 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shale-icon-editor rotate: false - xy: 1901, 223 + xy: 1013, 143 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-shale2 rotate: false - xy: 995, 143 + xy: 1047, 177 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-shale3 rotate: false - xy: 1029, 143 + xy: 1013, 109 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-slag rotate: false - xy: 1063, 143 + xy: 1047, 143 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 slag-icon-editor rotate: false - xy: 1063, 143 + xy: 1047, 143 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-snow1 rotate: false - xy: 1097, 143 + xy: 1047, 109 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-snow2 rotate: false - xy: 987, 109 + xy: 949, 75 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-snow3 rotate: false - xy: 1021, 109 + xy: 949, 41 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-spawn rotate: false - xy: 1055, 109 + xy: 983, 75 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-spore-moss1 rotate: false - xy: 1089, 109 + xy: 983, 41 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spore-moss-icon-editor rotate: false - xy: 1089, 109 + xy: 983, 41 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-spore-moss2 rotate: false - xy: 1935, 223 + xy: 1017, 75 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-spore-moss3 rotate: false - xy: 949, 85 + xy: 1017, 41 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-stone1 rotate: false - xy: 949, 51 + xy: 1051, 75 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 stone-icon-editor rotate: false - xy: 949, 51 + xy: 1051, 75 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-stone2 rotate: false - xy: 983, 75 + xy: 1051, 41 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-stone3 rotate: false - xy: 1017, 75 + xy: 1423, 175 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-tainted-water rotate: false - xy: 1051, 75 + xy: 1457, 175 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 tainted-water-icon-editor rotate: false - xy: 1051, 75 + xy: 1457, 175 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-tar rotate: false - xy: 1085, 75 + xy: 1491, 175 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 tar-icon-editor rotate: false - xy: 1085, 75 + xy: 1491, 175 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-tendrils1 rotate: false - xy: 983, 41 + xy: 1525, 183 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-tendrils2 rotate: false - xy: 1017, 41 + xy: 1085, 193 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-tendrils3 rotate: false - xy: 1051, 41 + xy: 1119, 193 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-water rotate: false - xy: 1085, 41 + xy: 1081, 159 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 water-icon-editor rotate: false - xy: 1085, 41 + xy: 1081, 159 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -8697,21 +9362,21 @@ ground-factory-icon-editor index: -1 hail-icon-editor rotate: false - xy: 949, 17 + xy: 1081, 125 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 icerocks-icon-editor rotate: false - xy: 983, 7 + xy: 1115, 159 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 illuminator-icon-editor rotate: false - xy: 1017, 7 + xy: 1115, 125 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -8725,35 +9390,35 @@ impact-reactor-icon-editor index: -1 incinerator-icon-editor rotate: false - xy: 1051, 7 + xy: 1153, 193 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 inverted-sorter-icon-editor rotate: false - xy: 1085, 7 + xy: 1149, 159 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-source-icon-editor rotate: false - xy: 1123, 109 + xy: 1187, 193 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-void-icon-editor rotate: false - xy: 1119, 75 + xy: 1149, 125 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 junction-icon-editor rotate: false - xy: 1119, 41 + xy: 1183, 159 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -8802,21 +9467,21 @@ launch-pad-large-icon-editor index: -1 liquid-junction-icon-editor rotate: false - xy: 1119, 7 + xy: 1221, 193 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-router-icon-editor rotate: false - xy: 1131, 177 + xy: 1183, 125 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-source-icon-editor rotate: false - xy: 1131, 143 + xy: 1217, 159 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -8830,7 +9495,7 @@ liquid-tank-icon-editor index: -1 liquid-void-icon-editor rotate: false - xy: 1165, 193 + xy: 1255, 193 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -8858,7 +9523,7 @@ mechanical-drill-icon-editor index: -1 mechanical-pump-icon-editor rotate: false - xy: 1199, 193 + xy: 1217, 125 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -8872,7 +9537,7 @@ meltdown-icon-editor index: -1 melter-icon-editor rotate: false - xy: 1165, 159 + xy: 1251, 159 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -8886,14 +9551,14 @@ mend-projector-icon-editor index: -1 mender-icon-editor rotate: false - xy: 1233, 193 + xy: 1289, 193 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 message-icon-editor rotate: false - xy: 1199, 159 + xy: 1323, 193 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -8935,11 +9600,18 @@ overdrive-projector-icon-editor index: -1 overflow-gate-icon-editor rotate: false - xy: 1267, 193 + xy: 1251, 125 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +parallax-icon-editor + rotate: false + xy: 2639, 323 + size: 64, 64 + orig: 64, 64 + offset: 0, 0 + index: -1 payload-router-icon-editor rotate: false xy: 847, 99 @@ -8949,42 +9621,42 @@ payload-router-icon-editor index: -1 pebbles-icon-editor rotate: false - xy: 1233, 159 + xy: 1285, 159 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conduit-icon-editor rotate: false - xy: 1301, 193 + xy: 1285, 125 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conveyor-icon-editor rotate: false - xy: 1267, 159 + xy: 1319, 159 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-wall-icon-editor rotate: false - xy: 1301, 159 + xy: 1319, 125 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-wall-large-icon-editor rotate: false - xy: 2639, 323 + xy: 2705, 323 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 phase-weaver-icon-editor rotate: false - xy: 2705, 323 + xy: 2771, 323 size: 64, 64 orig: 64, 64 offset: 0, 0 @@ -8998,105 +9670,105 @@ pine-icon-editor index: -1 plastanium-compressor-icon-editor rotate: false - xy: 2771, 323 + xy: 2837, 323 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 plastanium-conveyor-icon-editor rotate: false - xy: 1165, 125 + xy: 1353, 159 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plastanium-wall-icon-editor rotate: false - xy: 1199, 125 + xy: 1353, 125 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plastanium-wall-large-icon-editor rotate: false - xy: 2837, 323 + xy: 2903, 323 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 plated-conduit-icon-editor rotate: false - xy: 1233, 125 + xy: 1387, 159 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pneumatic-drill-icon-editor rotate: false - xy: 2903, 323 + xy: 2969, 323 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 power-node-icon-editor rotate: false - xy: 1267, 125 + xy: 1387, 125 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 power-node-large-icon-editor rotate: false - xy: 2969, 323 + xy: 3035, 323 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 power-source-icon-editor rotate: false - xy: 1301, 125 + xy: 1421, 141 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 power-void-icon-editor rotate: false - xy: 1335, 191 + xy: 1455, 141 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-icon-editor rotate: false - xy: 1335, 157 + xy: 1489, 141 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulverizer-icon-editor rotate: false - xy: 1369, 191 + xy: 1085, 91 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pyratite-mixer-icon-editor rotate: false - xy: 3035, 323 + xy: 3101, 323 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 repair-point-icon-editor rotate: false - xy: 1369, 157 + xy: 1085, 57 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 resupply-point-icon-editor rotate: false - xy: 3101, 323 + xy: 3167, 323 size: 64, 64 orig: 64, 64 offset: 0, 0 @@ -9110,84 +9782,84 @@ ripple-icon-editor index: -1 rock-icon-editor rotate: false - xy: 985, 211 + xy: 1423, 209 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 rocks-icon-editor rotate: false - xy: 1403, 191 + xy: 1119, 91 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 rotary-pump-icon-editor rotate: false - xy: 3167, 323 + xy: 3233, 323 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 router-icon-editor rotate: false - xy: 1403, 157 + xy: 1119, 57 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 rtg-generator-icon-editor rotate: false - xy: 3233, 323 + xy: 3299, 323 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 saltrocks-icon-editor rotate: false - xy: 1437, 191 + xy: 1153, 91 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 salvo-icon-editor rotate: false - xy: 3299, 323 + xy: 3365, 323 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 sand-boulder-icon-editor rotate: false - xy: 1437, 157 + xy: 1153, 57 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sand-water-icon-editor rotate: false - xy: 1471, 191 + xy: 1187, 91 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sandrocks-icon-editor rotate: false - xy: 1471, 157 + xy: 1187, 57 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scatter-icon-editor rotate: false - xy: 3365, 323 + xy: 3431, 323 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 scorch-icon-editor rotate: false - xy: 1505, 191 + xy: 1221, 91 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -9208,56 +9880,56 @@ scrap-wall-huge-icon-editor index: -1 scrap-wall-icon-editor rotate: false - xy: 1505, 157 + xy: 1221, 57 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap-wall-large-icon-editor rotate: false - xy: 3431, 323 + xy: 3497, 323 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 segment-icon-editor rotate: false - xy: 3497, 323 + xy: 3563, 323 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 separator-icon-editor rotate: false - xy: 3563, 323 + xy: 3629, 323 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 shale-boulder-icon-editor rotate: false - xy: 1539, 191 + xy: 1255, 91 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shalerocks-icon-editor rotate: false - xy: 1539, 157 + xy: 1255, 57 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shock-mine-icon-editor rotate: false - xy: 1573, 191 + xy: 1289, 91 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shrubs-icon-editor rotate: false - xy: 1573, 157 + xy: 1289, 57 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -9271,42 +9943,42 @@ silicon-crucible-icon-editor index: -1 silicon-smelter-icon-editor rotate: false - xy: 3629, 323 + xy: 3695, 323 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 snow-icon-editor rotate: false - xy: 1607, 191 + xy: 1323, 91 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 snow-pine-icon-editor rotate: false - xy: 1035, 211 + xy: 985, 211 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 snowrock-icon-editor rotate: false - xy: 1085, 211 + xy: 1473, 209 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 snowrocks-icon-editor rotate: false - xy: 1607, 157 + xy: 1323, 57 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 solar-panel-icon-editor rotate: false - xy: 1641, 191 + xy: 1357, 91 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -9320,14 +9992,14 @@ solar-panel-large-icon-editor index: -1 sorter-icon-editor rotate: false - xy: 1641, 157 + xy: 1357, 57 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spawn-icon-editor rotate: false - xy: 1675, 191 + xy: 1391, 91 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -9341,63 +10013,63 @@ spectre-icon-editor index: -1 spore-cluster-icon-editor rotate: false - xy: 945, 119 + xy: 1523, 217 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 spore-pine-icon-editor rotate: false - xy: 945, 161 + xy: 1035, 211 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 spore-press-icon-editor rotate: false - xy: 3695, 323 + xy: 3761, 323 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 sporerocks-icon-editor rotate: false - xy: 1675, 157 + xy: 1391, 57 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 surge-tower-icon-editor rotate: false - xy: 3761, 323 + xy: 3827, 323 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 surge-wall-icon-editor rotate: false - xy: 1709, 191 + xy: 1425, 107 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 surge-wall-large-icon-editor rotate: false - xy: 3827, 323 + xy: 3893, 323 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 swarmer-icon-editor rotate: false - xy: 3893, 323 + xy: 3959, 323 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 tendrils-icon-editor rotate: false - xy: 1709, 157 + xy: 1425, 73 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -9411,7 +10083,7 @@ tetrative-reconstructor-icon-editor index: -1 thermal-generator-icon-editor rotate: false - xy: 3959, 323 + xy: 553, 1 size: 64, 64 orig: 64, 64 offset: 0, 0 @@ -9432,14 +10104,14 @@ thorium-reactor-icon-editor index: -1 thorium-wall-icon-editor rotate: false - xy: 1743, 191 + xy: 1459, 107 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 thorium-wall-large-icon-editor rotate: false - xy: 553, 1 + xy: 651, 33 size: 64, 64 orig: 64, 64 offset: 0, 0 @@ -9453,42 +10125,42 @@ thruster-icon-editor index: -1 titanium-conveyor-icon-editor rotate: false - xy: 1743, 157 + xy: 1459, 73 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-wall-icon-editor rotate: false - xy: 1777, 191 + xy: 1493, 107 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-wall-large-icon-editor rotate: false - xy: 651, 33 + xy: 717, 33 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 turbine-generator-icon-editor rotate: false - xy: 717, 33 + xy: 783, 33 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 underflow-gate-icon-editor rotate: false - xy: 1777, 157 + xy: 1493, 73 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 unloader-icon-editor rotate: false - xy: 1335, 123 + xy: 1085, 23 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -9502,14 +10174,14 @@ vault-icon-editor index: -1 water-extractor-icon-editor rotate: false - xy: 783, 33 + xy: 849, 33 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 wave-icon-editor rotate: false - xy: 849, 33 + xy: 1357, 193 size: 64, 64 orig: 64, 64 offset: 0, 0 @@ -9536,14 +10208,14 @@ filter: nearest,nearest repeat: none alpha-bg rotate: false - xy: 1, 13 + xy: 1, 15 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 bar rotate: false - xy: 3243, 244 + xy: 3793, 196 size: 27, 36 split: 9, 9, 9, 9 orig: 27, 36 @@ -9551,7 +10223,7 @@ bar index: -1 bar-top rotate: false - xy: 3214, 244 + xy: 3764, 196 size: 27, 36 split: 9, 10, 9, 10 orig: 27, 36 @@ -9559,7112 +10231,7147 @@ bar-top index: -1 block-additive-reconstructor-large rotate: false - xy: 2809, 418 + xy: 131, 3 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-additive-reconstructor-medium rotate: false - xy: 821, 429 + xy: 821, 431 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-additive-reconstructor-small rotate: false - xy: 781, 175 + xy: 781, 177 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-additive-reconstructor-tiny rotate: false - xy: 3283, 201 + xy: 4079, 274 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-additive-reconstructor-xlarge rotate: false - xy: 131, 93 + xy: 131, 95 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-air-factory-large rotate: false - xy: 2851, 418 + xy: 173, 3 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-air-factory-medium rotate: false - xy: 2777, 376 + xy: 2797, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-air-factory-small rotate: false - xy: 3301, 256 + xy: 3822, 208 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-air-factory-tiny rotate: false - xy: 257, 25 + xy: 4079, 256 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-air-factory-xlarge rotate: false - xy: 771, 413 + xy: 771, 415 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-alloy-smelter-large rotate: false - xy: 2893, 418 + xy: 215, 3 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-alloy-smelter-medium rotate: false - xy: 2157, 208 + xy: 2831, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-alloy-smelter-small rotate: false - xy: 3301, 230 + xy: 915, 79 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-alloy-smelter-tiny rotate: false - xy: 4069, 359 + xy: 257, 27 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-alloy-smelter-xlarge rotate: false - xy: 259, 304 + xy: 259, 306 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-arc-large rotate: false - xy: 2935, 418 + xy: 845, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-arc-medium rotate: false - xy: 1091, 166 + xy: 2865, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-arc-small rotate: false - xy: 3327, 256 + xy: 944, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-arc-tiny rotate: false - xy: 881, 14 + xy: 1331, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-arc-xlarge rotate: false - xy: 131, 43 + xy: 131, 45 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-armored-conveyor-large rotate: false - xy: 2977, 418 + xy: 887, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-armored-conveyor-medium rotate: false - xy: 1125, 166 + xy: 2899, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-armored-conveyor-small rotate: false - xy: 3327, 230 + xy: 3848, 208 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-armored-conveyor-tiny rotate: false - xy: 309, 163 + xy: 309, 165 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-armored-conveyor-xlarge rotate: false - xy: 181, 93 + xy: 181, 95 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-battery-large rotate: false - xy: 3019, 418 + xy: 929, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-battery-large-large rotate: false - xy: 3061, 418 + xy: 971, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-battery-large-medium rotate: false - xy: 1159, 166 + xy: 2933, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-battery-large-small rotate: false - xy: 3353, 256 + xy: 915, 53 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-battery-large-tiny rotate: false - xy: 257, 7 + xy: 257, 9 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-battery-large-xlarge rotate: false - xy: 259, 254 + xy: 259, 256 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-battery-medium rotate: false - xy: 1193, 166 + xy: 2967, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-battery-small rotate: false - xy: 3353, 230 + xy: 944, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-battery-tiny rotate: false - xy: 2796, 256 + xy: 1331, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-battery-xlarge rotate: false - xy: 181, 43 + xy: 181, 45 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-blast-drill-large rotate: false - xy: 3103, 418 + xy: 1013, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-blast-drill-medium rotate: false - xy: 1227, 166 + xy: 3001, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-blast-drill-small rotate: false - xy: 3379, 256 + xy: 970, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-blast-drill-tiny rotate: false - xy: 881, 153 + xy: 1349, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-blast-drill-xlarge rotate: false - xy: 259, 204 + xy: 259, 206 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-blast-mixer-large rotate: false - xy: 3145, 418 + xy: 1055, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-blast-mixer-medium rotate: false - xy: 1261, 166 + xy: 3035, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-blast-mixer-small rotate: false - xy: 3379, 230 + xy: 3874, 208 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-blast-mixer-tiny rotate: false - xy: 899, 153 + xy: 1349, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-blast-mixer-xlarge rotate: false - xy: 259, 154 + xy: 259, 156 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-block-forge-large rotate: false - xy: 3187, 418 + xy: 1097, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-block-forge-medium rotate: false - xy: 1295, 166 + xy: 3069, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-block-forge-small rotate: false - xy: 3405, 256 + xy: 915, 27 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-block-forge-tiny rotate: false - xy: 917, 153 + xy: 1367, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-block-forge-xlarge rotate: false - xy: 857, 460 + xy: 857, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-block-loader-large rotate: false - xy: 3229, 418 + xy: 1139, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-block-loader-medium rotate: false - xy: 1329, 166 + xy: 3103, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-block-loader-small rotate: false - xy: 3405, 230 + xy: 970, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-block-loader-tiny rotate: false - xy: 907, 135 + xy: 1367, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-block-loader-xlarge rotate: false - xy: 907, 460 + xy: 907, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-block-unloader-large rotate: false - xy: 3271, 418 + xy: 1181, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-block-unloader-medium rotate: false - xy: 1363, 166 + xy: 3137, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-block-unloader-small rotate: false - xy: 3431, 256 + xy: 996, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-block-unloader-tiny rotate: false - xy: 935, 153 + xy: 1385, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-block-unloader-xlarge rotate: false - xy: 957, 460 + xy: 957, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-bridge-conduit-large rotate: false - xy: 3313, 418 + xy: 1223, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-bridge-conduit-medium rotate: false - xy: 1397, 166 + xy: 3171, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-bridge-conduit-small rotate: false - xy: 3431, 230 + xy: 3900, 208 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-bridge-conduit-tiny rotate: false - xy: 907, 117 + xy: 1385, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-bridge-conduit-xlarge rotate: false - xy: 1007, 460 + xy: 1007, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-bridge-conveyor-large rotate: false - xy: 3355, 418 + xy: 1265, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-bridge-conveyor-medium rotate: false - xy: 1431, 166 + xy: 3205, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-bridge-conveyor-small rotate: false - xy: 3457, 256 + xy: 996, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-bridge-conveyor-tiny rotate: false - xy: 925, 135 + xy: 1403, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-bridge-conveyor-xlarge rotate: false - xy: 1057, 460 + xy: 1057, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-char-large rotate: false - xy: 3397, 418 + xy: 1307, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-char-medium rotate: false - xy: 1465, 166 + xy: 3239, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-char-small rotate: false - xy: 3457, 230 + xy: 1022, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-char-tiny rotate: false - xy: 953, 153 + xy: 1403, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-char-xlarge rotate: false - xy: 1107, 460 + xy: 1107, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-cliff-large rotate: false - xy: 3439, 418 + xy: 1349, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-cliff-medium rotate: false - xy: 1499, 166 + xy: 3273, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-cliff-small rotate: false - xy: 3483, 256 + xy: 3926, 208 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-cliff-tiny rotate: false - xy: 907, 99 + xy: 1421, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-cliff-xlarge rotate: false - xy: 1157, 460 + xy: 1157, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-cliffs-large rotate: false - xy: 3481, 418 + xy: 1391, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-cliffs-medium rotate: false - xy: 1533, 166 + xy: 3307, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-cliffs-small rotate: false - xy: 3483, 230 + xy: 1022, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-cliffs-tiny rotate: false - xy: 925, 117 + xy: 1421, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-cliffs-xlarge rotate: false - xy: 1207, 460 + xy: 1207, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-coal-centrifuge-large rotate: false - xy: 3523, 418 + xy: 1433, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-coal-centrifuge-medium rotate: false - xy: 1567, 166 + xy: 3341, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-coal-centrifuge-small rotate: false - xy: 3509, 256 + xy: 1048, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-coal-centrifuge-tiny rotate: false - xy: 943, 135 + xy: 1439, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-coal-centrifuge-xlarge rotate: false - xy: 1257, 460 + xy: 1257, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-combustion-generator-large rotate: false - xy: 3565, 418 + xy: 1475, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-combustion-generator-medium rotate: false - xy: 1601, 166 + xy: 3375, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-combustion-generator-small rotate: false - xy: 3509, 230 + xy: 3952, 208 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-combustion-generator-tiny rotate: false - xy: 971, 153 + xy: 1439, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-combustion-generator-xlarge rotate: false - xy: 1307, 460 + xy: 1307, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-conduit-large rotate: false - xy: 3607, 418 + xy: 1517, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-conduit-medium rotate: false - xy: 1635, 166 + xy: 3409, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-conduit-small rotate: false - xy: 3535, 256 + xy: 1048, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-conduit-tiny rotate: false - xy: 907, 81 + xy: 1457, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-conduit-xlarge rotate: false - xy: 1357, 460 + xy: 1357, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-container-large rotate: false - xy: 3649, 418 + xy: 1559, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-container-medium rotate: false - xy: 1669, 166 + xy: 3443, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-container-small rotate: false - xy: 3535, 230 + xy: 1074, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-container-tiny rotate: false - xy: 925, 99 + xy: 1457, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-container-xlarge rotate: false - xy: 1407, 460 + xy: 1407, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-conveyor-large rotate: false - xy: 3691, 418 + xy: 1601, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-conveyor-medium rotate: false - xy: 1703, 166 + xy: 3477, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-conveyor-small rotate: false - xy: 3561, 256 + xy: 3978, 208 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-conveyor-tiny rotate: false - xy: 943, 117 + xy: 1475, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-conveyor-xlarge rotate: false - xy: 1457, 460 + xy: 1457, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-copper-wall-large rotate: false - xy: 3733, 418 + xy: 1643, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-copper-wall-large-large rotate: false - xy: 3775, 418 + xy: 1685, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-copper-wall-large-medium rotate: false - xy: 1737, 166 + xy: 3511, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-copper-wall-large-small rotate: false - xy: 3561, 230 + xy: 1074, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-copper-wall-large-tiny rotate: false - xy: 961, 135 + xy: 1475, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-copper-wall-large-xlarge rotate: false - xy: 1507, 460 + xy: 1507, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-copper-wall-medium rotate: false - xy: 1771, 166 + xy: 3545, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-copper-wall-small rotate: false - xy: 3587, 256 + xy: 1100, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-copper-wall-tiny rotate: false - xy: 989, 153 + xy: 1493, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-copper-wall-xlarge rotate: false - xy: 1557, 460 + xy: 1557, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-core-foundation-large rotate: false - xy: 3817, 418 + xy: 1727, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-core-foundation-medium rotate: false - xy: 1805, 166 + xy: 3579, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-core-foundation-small rotate: false - xy: 3587, 230 + xy: 4004, 208 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-core-foundation-tiny rotate: false - xy: 907, 63 + xy: 1493, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-core-foundation-xlarge rotate: false - xy: 1607, 460 + xy: 1607, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-core-nucleus-large rotate: false - xy: 3859, 418 + xy: 1769, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-core-nucleus-medium rotate: false - xy: 1839, 166 + xy: 3613, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-core-nucleus-small rotate: false - xy: 3613, 256 + xy: 1100, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-core-nucleus-tiny rotate: false - xy: 925, 81 + xy: 1511, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-core-nucleus-xlarge rotate: false - xy: 1657, 460 + xy: 1657, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-core-shard-large rotate: false - xy: 3901, 418 + xy: 1811, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-core-shard-medium rotate: false - xy: 1873, 166 + xy: 3647, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-core-shard-small rotate: false - xy: 3613, 230 + xy: 1126, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-core-shard-tiny rotate: false - xy: 943, 99 + xy: 1511, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-core-shard-xlarge rotate: false - xy: 1707, 460 + xy: 1707, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-craters-large rotate: false - xy: 3943, 418 + xy: 1853, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-craters-medium rotate: false - xy: 1907, 166 + xy: 3681, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-craters-small rotate: false - xy: 3639, 256 + xy: 1126, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-craters-tiny rotate: false - xy: 961, 117 + xy: 1529, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-craters-xlarge rotate: false - xy: 1757, 460 + xy: 1757, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-cryofluidmixer-large rotate: false - xy: 3985, 418 + xy: 1895, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-cryofluidmixer-medium rotate: false - xy: 1941, 166 + xy: 3715, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-cryofluidmixer-small rotate: false - xy: 3639, 230 + xy: 1152, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-cryofluidmixer-tiny rotate: false - xy: 979, 135 + xy: 1529, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-cryofluidmixer-xlarge rotate: false - xy: 1807, 460 + xy: 1807, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-cultivator-large rotate: false - xy: 131, 1 + xy: 1937, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-cultivator-medium rotate: false - xy: 1975, 166 + xy: 3749, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-cultivator-small rotate: false - xy: 3665, 256 + xy: 1152, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-cultivator-tiny rotate: false - xy: 1007, 153 + xy: 1547, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-cultivator-xlarge rotate: false - xy: 1857, 460 + xy: 1857, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-cyclone-large rotate: false - xy: 173, 1 + xy: 1979, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-cyclone-medium rotate: false - xy: 2009, 166 + xy: 3783, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-cyclone-small rotate: false - xy: 3665, 230 + xy: 1178, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-cyclone-tiny rotate: false - xy: 907, 45 + xy: 1547, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-cyclone-xlarge rotate: false - xy: 1907, 460 + xy: 1907, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-dark-metal-large rotate: false - xy: 215, 1 + xy: 2021, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-dark-metal-medium rotate: false - xy: 2043, 166 + xy: 3817, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-metal-small rotate: false - xy: 3691, 256 + xy: 1178, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-dark-metal-tiny rotate: false - xy: 925, 63 + xy: 1565, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-dark-metal-xlarge rotate: false - xy: 1957, 460 + xy: 1957, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-dark-panel-1-large rotate: false - xy: 4027, 418 + xy: 2063, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-dark-panel-1-medium rotate: false - xy: 2077, 166 + xy: 3851, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-panel-1-small rotate: false - xy: 3691, 230 + xy: 1204, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-dark-panel-1-tiny rotate: false - xy: 943, 81 + xy: 1565, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-dark-panel-1-xlarge rotate: false - xy: 2007, 460 + xy: 2007, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-dark-panel-2-large rotate: false - xy: 845, 368 + xy: 2105, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-dark-panel-2-medium rotate: false - xy: 2811, 384 + xy: 3885, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-panel-2-small rotate: false - xy: 3717, 256 + xy: 1204, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-dark-panel-2-tiny rotate: false - xy: 961, 99 + xy: 1583, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-dark-panel-2-xlarge rotate: false - xy: 2057, 460 + xy: 2057, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-dark-panel-3-large rotate: false - xy: 887, 368 + xy: 2147, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-dark-panel-3-medium rotate: false - xy: 2845, 384 + xy: 3919, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-panel-3-small rotate: false - xy: 3717, 230 + xy: 1230, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-dark-panel-3-tiny rotate: false - xy: 979, 117 + xy: 1583, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-dark-panel-3-xlarge rotate: false - xy: 2107, 460 + xy: 2107, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-dark-panel-4-large rotate: false - xy: 929, 368 + xy: 2189, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-dark-panel-4-medium rotate: false - xy: 2879, 384 + xy: 3953, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-panel-4-small rotate: false - xy: 3743, 256 + xy: 1230, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-dark-panel-4-tiny rotate: false - xy: 997, 135 + xy: 1601, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-dark-panel-4-xlarge rotate: false - xy: 2157, 460 + xy: 2157, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-dark-panel-5-large rotate: false - xy: 971, 368 + xy: 2231, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-dark-panel-5-medium rotate: false - xy: 2913, 384 + xy: 3987, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-panel-5-small rotate: false - xy: 3743, 230 + xy: 1256, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-dark-panel-5-tiny rotate: false - xy: 1025, 153 + xy: 1601, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-dark-panel-5-xlarge rotate: false - xy: 2207, 460 + xy: 2207, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-dark-panel-6-large rotate: false - xy: 1013, 368 + xy: 2273, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-dark-panel-6-medium rotate: false - xy: 2947, 384 + xy: 2455, 278 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dark-panel-6-small rotate: false - xy: 3769, 256 + xy: 1256, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-dark-panel-6-tiny rotate: false - xy: 925, 45 + xy: 1619, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-dark-panel-6-xlarge rotate: false - xy: 2257, 460 + xy: 2257, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-darksand-large rotate: false - xy: 1055, 368 + xy: 2315, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-darksand-medium rotate: false - xy: 2981, 384 + xy: 2489, 278 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-darksand-small rotate: false - xy: 3769, 230 + xy: 1282, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-darksand-tainted-water-large rotate: false - xy: 1097, 368 + xy: 2357, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-darksand-tainted-water-medium rotate: false - xy: 3015, 384 + xy: 2523, 278 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-darksand-tainted-water-small rotate: false - xy: 3795, 256 + xy: 1282, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-darksand-tainted-water-tiny rotate: false - xy: 943, 63 + xy: 1619, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-darksand-tainted-water-xlarge rotate: false - xy: 2307, 460 + xy: 2307, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-darksand-tiny rotate: false - xy: 961, 81 + xy: 1637, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-darksand-water-large rotate: false - xy: 1139, 368 + xy: 2399, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-darksand-water-medium rotate: false - xy: 3049, 384 + xy: 2557, 278 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-darksand-water-small rotate: false - xy: 3795, 230 + xy: 1308, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-darksand-water-tiny rotate: false - xy: 979, 99 + xy: 1637, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-darksand-water-xlarge rotate: false - xy: 2357, 460 + xy: 2357, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-darksand-xlarge rotate: false - xy: 2407, 460 + xy: 2407, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-data-processor-large rotate: false - xy: 1181, 368 + xy: 2441, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-data-processor-medium rotate: false - xy: 3083, 384 + xy: 2591, 278 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-data-processor-small rotate: false - xy: 3821, 256 + xy: 1308, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-data-processor-tiny rotate: false - xy: 997, 117 + xy: 1655, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-data-processor-xlarge rotate: false - xy: 2457, 460 + xy: 2457, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-deepwater-large rotate: false - xy: 1223, 368 + xy: 2483, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-deepwater-medium rotate: false - xy: 3117, 384 + xy: 2625, 278 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-deepwater-small rotate: false - xy: 3821, 230 + xy: 1334, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-deepwater-tiny rotate: false - xy: 1015, 135 + xy: 1655, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-deepwater-xlarge rotate: false - xy: 2507, 460 + xy: 2507, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-differential-generator-large rotate: false - xy: 1265, 368 + xy: 2525, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-differential-generator-medium rotate: false - xy: 3151, 384 + xy: 2659, 278 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-differential-generator-small rotate: false - xy: 3847, 256 + xy: 1334, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-differential-generator-tiny rotate: false - xy: 1043, 153 + xy: 1673, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-differential-generator-xlarge rotate: false - xy: 2557, 460 + xy: 2557, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-diode-large rotate: false - xy: 1307, 368 + xy: 2567, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-diode-medium rotate: false - xy: 3185, 384 + xy: 2693, 278 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-diode-small rotate: false - xy: 3847, 230 + xy: 1360, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-diode-tiny rotate: false - xy: 943, 45 + xy: 1673, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-diode-xlarge rotate: false - xy: 2607, 460 + xy: 2607, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-disassembler-large rotate: false - xy: 1349, 368 + xy: 2609, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-disassembler-medium rotate: false - xy: 3219, 384 + xy: 2727, 278 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-disassembler-small rotate: false - xy: 3873, 256 + xy: 1360, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-disassembler-tiny rotate: false - xy: 961, 63 + xy: 1691, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-disassembler-xlarge rotate: false - xy: 2657, 460 + xy: 2657, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-distributor-large rotate: false - xy: 1391, 368 + xy: 2651, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-distributor-medium rotate: false - xy: 3253, 384 + xy: 2761, 278 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-distributor-small rotate: false - xy: 3873, 230 + xy: 1386, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-distributor-tiny rotate: false - xy: 979, 81 + xy: 1691, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-distributor-xlarge rotate: false - xy: 2707, 460 + xy: 2707, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-door-large rotate: false - xy: 1433, 368 + xy: 2693, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-door-large-large rotate: false - xy: 1475, 368 + xy: 2735, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-door-large-medium rotate: false - xy: 3287, 384 + xy: 938, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-door-large-small rotate: false - xy: 3899, 256 + xy: 1386, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-door-large-tiny rotate: false - xy: 997, 99 + xy: 1709, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-door-large-xlarge rotate: false - xy: 2757, 460 + xy: 2757, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-door-medium rotate: false - xy: 3321, 384 + xy: 972, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-door-small rotate: false - xy: 3899, 230 + xy: 1412, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-door-tiny rotate: false - xy: 1015, 117 + xy: 1709, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-door-xlarge rotate: false - xy: 2807, 460 + xy: 2807, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-dunerocks-large rotate: false - xy: 1517, 368 + xy: 2777, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-dunerocks-medium rotate: false - xy: 3355, 384 + xy: 1006, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-dunerocks-small rotate: false - xy: 3925, 256 + xy: 1412, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-dunerocks-tiny rotate: false - xy: 1033, 135 + xy: 1727, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-dunerocks-xlarge rotate: false - xy: 2857, 460 + xy: 2857, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-duo-large rotate: false - xy: 1559, 368 + xy: 2819, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-duo-medium rotate: false - xy: 3389, 384 + xy: 1040, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-duo-small rotate: false - xy: 3925, 230 + xy: 1438, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-duo-tiny rotate: false - xy: 1061, 153 + xy: 1727, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-duo-xlarge rotate: false - xy: 2907, 460 + xy: 2907, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-exponential-reconstructor-large rotate: false - xy: 1601, 368 + xy: 2861, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-exponential-reconstructor-medium rotate: false - xy: 3423, 384 + xy: 1074, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-exponential-reconstructor-small rotate: false - xy: 3951, 256 + xy: 1438, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-exponential-reconstructor-tiny rotate: false - xy: 961, 45 + xy: 1745, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-exponential-reconstructor-xlarge rotate: false - xy: 2957, 460 + xy: 2957, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-force-projector-large rotate: false - xy: 1643, 368 + xy: 2903, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-force-projector-medium rotate: false - xy: 3457, 384 + xy: 1108, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-force-projector-small rotate: false - xy: 3951, 230 + xy: 1464, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-force-projector-tiny rotate: false - xy: 979, 63 + xy: 1745, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-force-projector-xlarge rotate: false - xy: 3007, 460 + xy: 3007, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-fuse-large rotate: false - xy: 1685, 368 + xy: 2945, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-fuse-medium rotate: false - xy: 3491, 384 + xy: 1142, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-fuse-small rotate: false - xy: 3977, 256 + xy: 1464, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-fuse-tiny rotate: false - xy: 997, 81 + xy: 1763, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-fuse-xlarge rotate: false - xy: 3057, 460 + xy: 3057, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-graphite-press-large rotate: false - xy: 1727, 368 + xy: 2987, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-graphite-press-medium rotate: false - xy: 3525, 384 + xy: 1176, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-graphite-press-small rotate: false - xy: 3977, 230 + xy: 1490, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-graphite-press-tiny rotate: false - xy: 1015, 99 + xy: 1763, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-graphite-press-xlarge rotate: false - xy: 3107, 460 + xy: 3107, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-grass-large rotate: false - xy: 1769, 368 + xy: 3029, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-grass-medium rotate: false - xy: 3559, 384 + xy: 1210, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-grass-small rotate: false - xy: 4003, 256 + xy: 1490, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-grass-tiny rotate: false - xy: 1033, 117 + xy: 1781, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-grass-xlarge rotate: false - xy: 3157, 460 + xy: 3157, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-ground-factory-large rotate: false - xy: 1811, 368 + xy: 3071, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ground-factory-medium rotate: false - xy: 3593, 384 + xy: 1244, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ground-factory-small rotate: false - xy: 4003, 230 + xy: 1516, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ground-factory-tiny rotate: false - xy: 1051, 135 + xy: 1781, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-ground-factory-xlarge rotate: false - xy: 3207, 460 + xy: 3207, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-hail-large rotate: false - xy: 1853, 368 + xy: 3113, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-hail-medium rotate: false - xy: 3627, 384 + xy: 1278, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-hail-small rotate: false - xy: 4029, 256 + xy: 1516, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-hail-tiny rotate: false - xy: 979, 45 + xy: 1799, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-hail-xlarge rotate: false - xy: 3257, 460 + xy: 3257, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-holostone-large rotate: false - xy: 1895, 368 + xy: 3155, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-holostone-medium rotate: false - xy: 3661, 384 + xy: 1312, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-holostone-small rotate: false - xy: 4029, 230 + xy: 1542, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-holostone-tiny rotate: false - xy: 997, 63 + xy: 1799, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-holostone-xlarge rotate: false - xy: 3307, 460 + xy: 3307, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-hotrock-large rotate: false - xy: 1937, 368 + xy: 3197, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-hotrock-medium rotate: false - xy: 3695, 384 + xy: 1346, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-hotrock-small rotate: false - xy: 4055, 256 + xy: 1542, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-hotrock-tiny rotate: false - xy: 1015, 81 + xy: 1817, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-hotrock-xlarge rotate: false - xy: 3357, 460 + xy: 3357, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-ice-large rotate: false - xy: 1979, 368 + xy: 3239, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ice-medium rotate: false - xy: 3729, 384 + xy: 1380, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ice-small rotate: false - xy: 4055, 230 + xy: 1568, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ice-snow-large rotate: false - xy: 2021, 368 + xy: 3281, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ice-snow-medium rotate: false - xy: 3763, 384 + xy: 1414, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ice-snow-small rotate: false - xy: 3301, 204 + xy: 1568, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ice-snow-tiny rotate: false - xy: 1033, 99 + xy: 1817, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-ice-snow-xlarge rotate: false - xy: 3407, 460 + xy: 3407, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-ice-tiny rotate: false - xy: 1051, 117 + xy: 1835, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-ice-xlarge rotate: false - xy: 3457, 460 + xy: 3457, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-icerocks-large rotate: false - xy: 2063, 368 + xy: 3323, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-icerocks-medium rotate: false - xy: 3797, 384 + xy: 1448, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-icerocks-small rotate: false - xy: 3327, 204 + xy: 1594, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-icerocks-tiny rotate: false - xy: 997, 45 + xy: 1835, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-icerocks-xlarge rotate: false - xy: 3507, 460 + xy: 3507, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-ignarock-large rotate: false - xy: 2105, 368 + xy: 3365, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ignarock-medium rotate: false - xy: 3831, 384 + xy: 1482, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ignarock-small rotate: false - xy: 3353, 204 + xy: 1594, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ignarock-tiny rotate: false - xy: 1015, 63 + xy: 1853, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-ignarock-xlarge rotate: false - xy: 3557, 460 + xy: 3557, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-illuminator-large rotate: false - xy: 2147, 368 + xy: 3407, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-illuminator-medium rotate: false - xy: 3865, 384 + xy: 1516, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-illuminator-small rotate: false - xy: 3379, 204 + xy: 1620, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-illuminator-tiny rotate: false - xy: 1033, 81 + xy: 1853, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-illuminator-xlarge rotate: false - xy: 3607, 460 + xy: 3607, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-impact-reactor-large rotate: false - xy: 2189, 368 + xy: 3449, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-impact-reactor-medium rotate: false - xy: 3899, 384 + xy: 1550, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-impact-reactor-small rotate: false - xy: 3405, 204 + xy: 1620, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-impact-reactor-tiny rotate: false - xy: 1051, 99 + xy: 1871, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-impact-reactor-xlarge rotate: false - xy: 3657, 460 + xy: 3657, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-incinerator-large rotate: false - xy: 2231, 368 + xy: 3491, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-incinerator-medium rotate: false - xy: 3933, 384 + xy: 1584, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-incinerator-small rotate: false - xy: 3431, 204 + xy: 1646, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-incinerator-tiny rotate: false - xy: 1015, 45 + xy: 1871, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-incinerator-xlarge rotate: false - xy: 3707, 460 + xy: 3707, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-inverted-sorter-large rotate: false - xy: 2273, 368 + xy: 3533, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-inverted-sorter-medium rotate: false - xy: 3967, 384 + xy: 1618, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-inverted-sorter-small rotate: false - xy: 3457, 204 + xy: 1646, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-inverted-sorter-tiny rotate: false - xy: 1033, 63 + xy: 1889, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-inverted-sorter-xlarge rotate: false - xy: 3757, 460 + xy: 3757, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-item-source-large rotate: false - xy: 2315, 368 + xy: 3575, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-item-source-medium rotate: false - xy: 4001, 384 + xy: 1652, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-item-source-small rotate: false - xy: 3483, 204 + xy: 1672, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-item-source-tiny rotate: false - xy: 1051, 81 + xy: 1889, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-item-source-xlarge rotate: false - xy: 3807, 460 + xy: 3807, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-item-void-large rotate: false - xy: 2357, 368 + xy: 3617, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-item-void-medium rotate: false - xy: 4035, 384 + xy: 1686, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-item-void-small rotate: false - xy: 3509, 204 + xy: 1672, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-item-void-tiny rotate: false - xy: 1033, 45 + xy: 1907, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-item-void-xlarge rotate: false - xy: 3857, 460 + xy: 3857, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-junction-large rotate: false - xy: 2399, 368 + xy: 3659, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-junction-medium rotate: false - xy: 2203, 305 + xy: 1720, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-junction-small rotate: false - xy: 3535, 204 + xy: 1698, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-junction-tiny rotate: false - xy: 1051, 63 + xy: 1907, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-junction-xlarge rotate: false - xy: 3907, 460 + xy: 3907, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-kiln-large rotate: false - xy: 2441, 368 + xy: 3701, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-kiln-medium rotate: false - xy: 2237, 305 + xy: 1754, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-kiln-small rotate: false - xy: 3561, 204 + xy: 1698, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-kiln-tiny rotate: false - xy: 1051, 45 + xy: 1925, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-kiln-xlarge rotate: false - xy: 3957, 460 + xy: 3957, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-lancer-large rotate: false - xy: 2483, 368 + xy: 3743, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-lancer-medium rotate: false - xy: 2271, 305 + xy: 1788, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-lancer-small rotate: false - xy: 3587, 204 + xy: 1724, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-lancer-tiny rotate: false - xy: 907, 27 + xy: 1925, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-lancer-xlarge rotate: false - xy: 4007, 460 + xy: 4007, 462 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-large-overdrive-projector-large rotate: false - xy: 2525, 368 + xy: 3785, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-large-overdrive-projector-medium rotate: false - xy: 2305, 305 + xy: 1822, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-large-overdrive-projector-small rotate: false - xy: 3613, 204 + xy: 1724, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-large-overdrive-projector-tiny rotate: false - xy: 925, 27 + xy: 1943, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-large-overdrive-projector-xlarge rotate: false - xy: 345, 351 + xy: 345, 353 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-laser-drill-large rotate: false - xy: 2567, 368 + xy: 3827, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-laser-drill-medium rotate: false - xy: 2339, 305 + xy: 1856, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-laser-drill-small rotate: false - xy: 3639, 204 + xy: 1750, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-laser-drill-tiny rotate: false - xy: 943, 27 + xy: 1943, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-laser-drill-xlarge rotate: false - xy: 395, 351 + xy: 395, 353 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-launch-pad-large rotate: false - xy: 2609, 368 + xy: 3869, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-launch-pad-large-large rotate: false - xy: 2651, 368 + xy: 3911, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-launch-pad-large-medium rotate: false - xy: 2373, 305 + xy: 1890, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-launch-pad-large-small rotate: false - xy: 3665, 204 + xy: 1750, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-launch-pad-large-tiny rotate: false - xy: 961, 27 + xy: 1961, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-launch-pad-large-xlarge rotate: false - xy: 445, 351 + xy: 445, 353 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-launch-pad-medium rotate: false - xy: 2407, 305 + xy: 1924, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-launch-pad-small rotate: false - xy: 3691, 204 + xy: 1776, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-launch-pad-tiny rotate: false - xy: 979, 27 + xy: 1961, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-launch-pad-xlarge rotate: false - xy: 495, 351 + xy: 495, 353 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-liquid-junction-large rotate: false - xy: 2693, 368 + xy: 3953, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-liquid-junction-medium rotate: false - xy: 2441, 305 + xy: 1958, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-liquid-junction-small rotate: false - xy: 3717, 204 + xy: 1776, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-liquid-junction-tiny rotate: false - xy: 997, 27 + xy: 1979, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-liquid-junction-xlarge rotate: false - xy: 545, 351 + xy: 545, 353 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-liquid-router-large rotate: false - xy: 2735, 368 + xy: 3995, 370 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-liquid-router-medium rotate: false - xy: 2475, 305 + xy: 1992, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-liquid-router-small rotate: false - xy: 3743, 204 + xy: 1802, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-liquid-router-tiny rotate: false - xy: 1015, 27 + xy: 1979, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-liquid-router-xlarge rotate: false - xy: 595, 351 + xy: 595, 353 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-liquid-source-large rotate: false - xy: 859, 326 + xy: 859, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-liquid-source-medium rotate: false - xy: 2509, 305 + xy: 2026, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-liquid-source-small rotate: false - xy: 3769, 204 + xy: 1802, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-liquid-source-tiny rotate: false - xy: 1033, 27 + xy: 1997, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-liquid-source-xlarge rotate: false - xy: 645, 351 + xy: 645, 353 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-liquid-tank-large rotate: false - xy: 859, 284 + xy: 859, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-liquid-tank-medium rotate: false - xy: 2543, 305 + xy: 2060, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-liquid-tank-small rotate: false - xy: 3795, 204 + xy: 1828, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-liquid-tank-tiny rotate: false - xy: 1051, 27 + xy: 1997, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-liquid-tank-xlarge rotate: false - xy: 695, 351 + xy: 695, 353 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-liquid-void-large rotate: false - xy: 901, 326 + xy: 901, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-liquid-void-medium rotate: false - xy: 2577, 305 + xy: 2094, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-liquid-void-small rotate: false - xy: 3821, 204 + xy: 1828, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-liquid-void-tiny rotate: false - xy: 1069, 135 + xy: 2015, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-liquid-void-xlarge rotate: false - xy: 231, 93 + xy: 231, 95 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-magmarock-large rotate: false - xy: 859, 242 + xy: 859, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-magmarock-medium rotate: false - xy: 2611, 305 + xy: 2128, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-magmarock-small rotate: false - xy: 3847, 204 + xy: 1854, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-magmarock-tiny rotate: false - xy: 1069, 117 + xy: 2015, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-magmarock-xlarge rotate: false - xy: 231, 43 + xy: 231, 45 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-mass-conveyor-large rotate: false - xy: 901, 284 + xy: 901, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-mass-conveyor-medium rotate: false - xy: 2645, 305 + xy: 2162, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-mass-conveyor-small rotate: false - xy: 3873, 204 + xy: 1854, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-mass-conveyor-tiny rotate: false - xy: 1069, 99 + xy: 2033, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-mass-conveyor-xlarge rotate: false - xy: 745, 351 + xy: 745, 353 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-mass-driver-large rotate: false - xy: 943, 326 + xy: 943, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-mass-driver-medium rotate: false - xy: 2679, 305 + xy: 2196, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-mass-driver-small rotate: false - xy: 3899, 204 + xy: 1880, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-mass-driver-tiny rotate: false - xy: 1069, 81 + xy: 2033, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-mass-driver-xlarge rotate: false - xy: 281, 104 + xy: 281, 106 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-mechanical-drill-large rotate: false - xy: 859, 200 + xy: 859, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-mechanical-drill-medium rotate: false - xy: 2713, 305 + xy: 2230, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-mechanical-drill-small rotate: false - xy: 3925, 204 + xy: 1880, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-mechanical-drill-tiny rotate: false - xy: 1069, 63 + xy: 2051, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-mechanical-drill-xlarge rotate: false - xy: 281, 54 + xy: 281, 56 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-mechanical-pump-large rotate: false - xy: 901, 242 + xy: 901, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-mechanical-pump-medium rotate: false - xy: 2199, 271 + xy: 2264, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-mechanical-pump-small rotate: false - xy: 3951, 204 + xy: 1906, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-mechanical-pump-tiny rotate: false - xy: 1069, 45 + xy: 2051, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-mechanical-pump-xlarge rotate: false - xy: 795, 363 + xy: 795, 365 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-meltdown-large rotate: false - xy: 943, 284 + xy: 943, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-meltdown-medium rotate: false - xy: 2233, 271 + xy: 2298, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-meltdown-small rotate: false - xy: 3977, 204 + xy: 1906, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-meltdown-tiny rotate: false - xy: 1069, 27 + xy: 2069, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-meltdown-xlarge rotate: false - xy: 309, 301 + xy: 309, 303 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-melter-large rotate: false - xy: 985, 326 + xy: 985, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-melter-medium rotate: false - xy: 2267, 271 + xy: 2332, 168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-melter-small rotate: false - xy: 4003, 204 + xy: 1932, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-melter-tiny rotate: false - xy: 3283, 183 + xy: 2069, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-melter-xlarge rotate: false - xy: 309, 251 + xy: 309, 253 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-mend-projector-large rotate: false - xy: 901, 200 + xy: 901, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-mend-projector-medium rotate: false - xy: 2301, 271 + xy: 2797, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-mend-projector-small rotate: false - xy: 4029, 204 + xy: 1932, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-mend-projector-tiny rotate: false - xy: 3301, 186 + xy: 2087, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-mend-projector-xlarge rotate: false - xy: 359, 301 + xy: 359, 303 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-mender-large rotate: false - xy: 943, 242 + xy: 943, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-mender-medium rotate: false - xy: 2335, 271 + xy: 2831, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-mender-small rotate: false - xy: 4055, 204 + xy: 1958, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-mender-tiny rotate: false - xy: 3319, 186 + xy: 2087, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-mender-xlarge rotate: false - xy: 309, 201 + xy: 309, 203 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-message-large rotate: false - xy: 985, 284 + xy: 985, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-message-medium rotate: false - xy: 2369, 271 + xy: 2865, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-message-small rotate: false - xy: 2191, 216 + xy: 1958, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-message-tiny rotate: false - xy: 3337, 186 + xy: 2105, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-message-xlarge rotate: false - xy: 359, 251 + xy: 359, 253 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-metal-floor-2-large rotate: false - xy: 1027, 326 + xy: 1027, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-metal-floor-2-medium rotate: false - xy: 2403, 271 + xy: 2899, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-metal-floor-2-small rotate: false - xy: 2198, 242 + xy: 1984, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-metal-floor-2-tiny rotate: false - xy: 3355, 186 + xy: 2105, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-metal-floor-2-xlarge rotate: false - xy: 409, 301 + xy: 409, 303 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-metal-floor-3-large rotate: false - xy: 943, 200 + xy: 943, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-metal-floor-3-medium rotate: false - xy: 2437, 271 + xy: 2933, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-metal-floor-3-small rotate: false - xy: 2224, 245 + xy: 1984, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-metal-floor-3-tiny rotate: false - xy: 3373, 186 + xy: 2123, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-metal-floor-3-xlarge rotate: false - xy: 359, 201 + xy: 359, 203 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-metal-floor-5-large rotate: false - xy: 985, 242 + xy: 985, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-metal-floor-5-medium rotate: false - xy: 2471, 271 + xy: 2967, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-metal-floor-5-small rotate: false - xy: 2250, 245 + xy: 2010, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-metal-floor-5-tiny rotate: false - xy: 3391, 186 + xy: 2123, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-metal-floor-5-xlarge rotate: false - xy: 409, 251 + xy: 409, 253 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-metal-floor-damaged-large rotate: false - xy: 1027, 284 + xy: 1027, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-metal-floor-damaged-medium rotate: false - xy: 2505, 271 + xy: 3001, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-metal-floor-damaged-small rotate: false - xy: 2276, 245 + xy: 2010, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-metal-floor-damaged-tiny rotate: false - xy: 3409, 186 + xy: 2141, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-metal-floor-damaged-xlarge rotate: false - xy: 459, 301 + xy: 459, 303 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-metal-floor-large rotate: false - xy: 1069, 326 + xy: 1069, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-metal-floor-medium rotate: false - xy: 2539, 271 + xy: 3035, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-metal-floor-small rotate: false - xy: 2302, 245 + xy: 2036, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-metal-floor-tiny rotate: false - xy: 3427, 186 + xy: 2141, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-metal-floor-xlarge rotate: false - xy: 409, 201 + xy: 409, 203 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-moss-large rotate: false - xy: 985, 200 + xy: 985, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-moss-medium rotate: false - xy: 2573, 271 + xy: 3069, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-moss-small rotate: false - xy: 2328, 245 + xy: 2036, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-moss-tiny rotate: false - xy: 3445, 186 + xy: 2159, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-moss-xlarge rotate: false - xy: 459, 251 + xy: 459, 253 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-multi-press-large rotate: false - xy: 1027, 242 + xy: 1027, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-multi-press-medium rotate: false - xy: 2607, 271 + xy: 3103, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-multi-press-small rotate: false - xy: 2354, 245 + xy: 2062, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-multi-press-tiny rotate: false - xy: 3463, 186 + xy: 2159, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-multi-press-xlarge rotate: false - xy: 509, 301 + xy: 509, 303 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-multiplicative-reconstructor-large rotate: false - xy: 1069, 284 + xy: 1069, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-multiplicative-reconstructor-medium rotate: false - xy: 2641, 271 + xy: 3137, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-multiplicative-reconstructor-small rotate: false - xy: 2380, 245 + xy: 2062, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-multiplicative-reconstructor-tiny rotate: false - xy: 3481, 186 + xy: 2177, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-multiplicative-reconstructor-xlarge rotate: false - xy: 459, 201 + xy: 459, 203 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-naval-factory-large rotate: false - xy: 1111, 326 + xy: 1111, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-naval-factory-medium rotate: false - xy: 2675, 271 + xy: 3171, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-naval-factory-small rotate: false - xy: 2406, 245 + xy: 2088, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-naval-factory-tiny rotate: false - xy: 3499, 186 + xy: 2177, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-naval-factory-xlarge rotate: false - xy: 509, 251 + xy: 509, 253 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-oil-extractor-large rotate: false - xy: 1027, 200 + xy: 1027, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-oil-extractor-medium rotate: false - xy: 2709, 271 + xy: 3205, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-oil-extractor-small rotate: false - xy: 2432, 245 + xy: 2088, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-oil-extractor-tiny rotate: false - xy: 3517, 186 + xy: 2195, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-oil-extractor-xlarge rotate: false - xy: 559, 301 + xy: 559, 303 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-ore-coal-large rotate: false - xy: 1069, 242 + xy: 1069, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ore-coal-medium rotate: false - xy: 2747, 305 + xy: 3239, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-coal-small rotate: false - xy: 2458, 245 + xy: 2114, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ore-coal-tiny rotate: false - xy: 3535, 186 + xy: 2195, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-ore-coal-xlarge rotate: false - xy: 509, 201 + xy: 509, 203 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-ore-copper-large rotate: false - xy: 1111, 284 + xy: 1111, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ore-copper-medium rotate: false - xy: 2743, 271 + xy: 3273, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-copper-small rotate: false - xy: 2484, 245 + xy: 2114, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ore-copper-tiny rotate: false - xy: 3553, 186 + xy: 2213, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-ore-copper-xlarge rotate: false - xy: 559, 251 + xy: 559, 253 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-ore-lead-large rotate: false - xy: 1153, 326 + xy: 1153, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ore-lead-medium rotate: false - xy: 2119, 179 + xy: 3307, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-lead-small rotate: false - xy: 2510, 245 + xy: 2140, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ore-lead-tiny rotate: false - xy: 3571, 186 + xy: 2213, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-ore-lead-xlarge rotate: false - xy: 609, 301 + xy: 609, 303 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-ore-scrap-large rotate: false - xy: 1069, 200 + xy: 1069, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ore-scrap-medium rotate: false - xy: 2153, 174 + xy: 3341, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-scrap-small rotate: false - xy: 2536, 245 + xy: 2140, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ore-scrap-tiny rotate: false - xy: 3589, 186 + xy: 2231, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-ore-scrap-xlarge rotate: false - xy: 559, 201 + xy: 559, 203 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-ore-thorium-large rotate: false - xy: 1111, 242 + xy: 1111, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ore-thorium-medium rotate: false - xy: 2811, 350 + xy: 3375, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-thorium-small rotate: false - xy: 2562, 245 + xy: 2166, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ore-thorium-tiny rotate: false - xy: 3607, 186 + xy: 2231, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-ore-thorium-xlarge rotate: false - xy: 609, 251 + xy: 609, 253 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-ore-titanium-large rotate: false - xy: 1153, 284 + xy: 1153, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ore-titanium-medium rotate: false - xy: 2845, 350 + xy: 3409, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ore-titanium-small rotate: false - xy: 2588, 245 + xy: 2166, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ore-titanium-tiny rotate: false - xy: 3625, 186 + xy: 2249, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-ore-titanium-xlarge rotate: false - xy: 659, 301 + xy: 659, 303 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-overdrive-projector-large rotate: false - xy: 1195, 326 + xy: 1195, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-overdrive-projector-medium rotate: false - xy: 2777, 342 + xy: 3443, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-overdrive-projector-small rotate: false - xy: 2614, 245 + xy: 2192, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-overdrive-projector-tiny rotate: false - xy: 3643, 186 + xy: 2249, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-overdrive-projector-xlarge rotate: false - xy: 609, 201 + xy: 609, 203 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-overflow-gate-large rotate: false - xy: 1111, 200 + xy: 1111, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-overflow-gate-medium rotate: false - xy: 2879, 350 + xy: 3477, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-overflow-gate-small rotate: false - xy: 2640, 245 + xy: 2192, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-overflow-gate-tiny rotate: false - xy: 3661, 186 + xy: 2267, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-overflow-gate-xlarge rotate: false - xy: 659, 251 + xy: 659, 253 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +block-parallax-large + rotate: false + xy: 1153, 244 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +block-parallax-medium + rotate: false + xy: 3511, 302 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +block-parallax-small + rotate: false + xy: 2218, 142 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-parallax-tiny + rotate: false + xy: 2267, 54 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-parallax-xlarge + rotate: false + xy: 709, 303 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-payload-router-large rotate: false - xy: 1153, 242 + xy: 1195, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-payload-router-medium rotate: false - xy: 2913, 350 + xy: 3545, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-payload-router-small rotate: false - xy: 2666, 245 + xy: 2218, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-payload-router-tiny rotate: false - xy: 3679, 186 + xy: 2285, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-payload-router-xlarge rotate: false - xy: 709, 301 + xy: 659, 203 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-pebbles-large rotate: false - xy: 1195, 284 + xy: 1237, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-pebbles-medium rotate: false - xy: 2947, 350 + xy: 3579, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-pebbles-small rotate: false - xy: 2692, 245 + xy: 2244, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-pebbles-tiny rotate: false - xy: 3697, 186 + xy: 2285, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-pebbles-xlarge rotate: false - xy: 659, 201 + xy: 709, 253 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-phase-conduit-large rotate: false - xy: 1237, 326 + xy: 1153, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-phase-conduit-medium rotate: false - xy: 2981, 350 + xy: 3613, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-phase-conduit-small rotate: false - xy: 2718, 245 + xy: 2244, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-phase-conduit-tiny rotate: false - xy: 3715, 186 + xy: 2303, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-phase-conduit-xlarge rotate: false - xy: 709, 251 + xy: 709, 203 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-phase-conveyor-large rotate: false - xy: 1153, 200 + xy: 1195, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-phase-conveyor-medium rotate: false - xy: 3015, 350 + xy: 3647, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-phase-conveyor-small rotate: false - xy: 2744, 245 + xy: 2270, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-phase-conveyor-tiny rotate: false - xy: 3733, 186 + xy: 2303, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-phase-conveyor-xlarge rotate: false - xy: 709, 201 + xy: 759, 303 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-phase-wall-large rotate: false - xy: 1195, 242 + xy: 1237, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-phase-wall-large-large rotate: false - xy: 1237, 284 + xy: 1279, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-phase-wall-large-medium rotate: false - xy: 3049, 350 + xy: 3681, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-phase-wall-large-small rotate: false - xy: 2191, 190 + xy: 2270, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-phase-wall-large-tiny rotate: false - xy: 3751, 186 + xy: 2321, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-phase-wall-large-xlarge rotate: false - xy: 759, 301 + xy: 759, 253 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-phase-wall-medium rotate: false - xy: 3083, 350 + xy: 3715, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-phase-wall-small rotate: false - xy: 2187, 164 + xy: 2296, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-phase-wall-tiny rotate: false - xy: 3769, 186 + xy: 2321, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-phase-wall-xlarge rotate: false - xy: 759, 251 + xy: 759, 203 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-phase-weaver-large rotate: false - xy: 1279, 326 + xy: 1195, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-phase-weaver-medium rotate: false - xy: 3117, 350 + xy: 3749, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-phase-weaver-small rotate: false - xy: 2217, 216 + xy: 2296, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-phase-weaver-tiny rotate: false - xy: 3787, 186 + xy: 2339, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-phase-weaver-xlarge rotate: false - xy: 759, 201 + xy: 809, 315 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-pine-large rotate: false - xy: 1195, 200 + xy: 1237, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-pine-medium rotate: false - xy: 3151, 350 + xy: 3783, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-pine-small rotate: false - xy: 2217, 190 + xy: 2322, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-pine-tiny rotate: false - xy: 3805, 186 + xy: 2339, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-pine-xlarge rotate: false - xy: 809, 313 + xy: 809, 265 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-plastanium-compressor-large rotate: false - xy: 1237, 242 + xy: 1279, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-plastanium-compressor-medium rotate: false - xy: 3185, 350 + xy: 3817, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-plastanium-compressor-small rotate: false - xy: 2213, 164 + xy: 2322, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-plastanium-compressor-tiny rotate: false - xy: 3823, 186 + xy: 2357, 72 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-plastanium-compressor-xlarge rotate: false - xy: 809, 263 + xy: 809, 215 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-plastanium-conveyor-large rotate: false - xy: 1279, 284 + xy: 1321, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-plastanium-conveyor-medium rotate: false - xy: 3219, 350 + xy: 3851, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-plastanium-conveyor-small rotate: false - xy: 2243, 219 + xy: 4037, 370 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-plastanium-conveyor-tiny rotate: false - xy: 3841, 186 + xy: 2357, 54 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-plastanium-conveyor-xlarge rotate: false - xy: 809, 213 + xy: 809, 165 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-plastanium-wall-large rotate: false - xy: 1321, 326 + xy: 1237, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-plastanium-wall-large-large rotate: false - xy: 1237, 200 + xy: 1279, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-plastanium-wall-large-medium rotate: false - xy: 3253, 350 + xy: 3885, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-plastanium-wall-large-small rotate: false - xy: 2243, 193 + xy: 4063, 370 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-plastanium-wall-large-tiny rotate: false - xy: 3859, 186 + xy: 1331, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-plastanium-wall-large-xlarge rotate: false - xy: 809, 163 + xy: 281, 6 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-plastanium-wall-medium rotate: false - xy: 3287, 350 + xy: 3919, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-plastanium-wall-small rotate: false - xy: 2269, 219 + xy: 4055, 344 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-plastanium-wall-tiny rotate: false - xy: 3877, 186 + xy: 1349, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-plastanium-wall-xlarge rotate: false - xy: 281, 4 + xy: 331, 153 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-plated-conduit-large rotate: false - xy: 1279, 242 + xy: 1321, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-plated-conduit-medium rotate: false - xy: 3321, 350 + xy: 3953, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-plated-conduit-small rotate: false - xy: 2269, 193 + xy: 4055, 318 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-plated-conduit-tiny rotate: false - xy: 3895, 186 + xy: 1367, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-plated-conduit-xlarge rotate: false - xy: 331, 151 + xy: 331, 103 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-pneumatic-drill-large rotate: false - xy: 1321, 284 + xy: 1363, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-pneumatic-drill-medium rotate: false - xy: 3355, 350 + xy: 3987, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-pneumatic-drill-small rotate: false - xy: 2295, 219 + xy: 915, 1 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-pneumatic-drill-tiny rotate: false - xy: 3913, 186 + xy: 1385, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-pneumatic-drill-xlarge rotate: false - xy: 331, 101 + xy: 381, 153 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-power-node-large rotate: false - xy: 1363, 326 + xy: 1279, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-power-node-large-large rotate: false - xy: 1279, 200 + xy: 1321, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-power-node-large-medium rotate: false - xy: 3389, 350 + xy: 881, 142 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-power-node-large-small rotate: false - xy: 2295, 193 + xy: 4030, 208 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-power-node-large-tiny rotate: false - xy: 3931, 186 + xy: 1403, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-power-node-large-xlarge rotate: false - xy: 381, 151 + xy: 331, 53 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-power-node-medium rotate: false - xy: 3423, 350 + xy: 881, 108 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-power-node-small rotate: false - xy: 2321, 219 + xy: 2348, 142 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-power-node-tiny rotate: false - xy: 3949, 186 + xy: 1421, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-power-node-xlarge rotate: false - xy: 331, 51 + xy: 381, 103 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-power-source-large rotate: false - xy: 1321, 242 + xy: 1363, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-power-source-medium rotate: false - xy: 3457, 350 + xy: 881, 74 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-power-source-small rotate: false - xy: 2321, 193 + xy: 2348, 116 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-power-source-tiny rotate: false - xy: 3967, 186 + xy: 1439, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-power-source-xlarge rotate: false - xy: 381, 101 + xy: 431, 153 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-power-void-large rotate: false - xy: 1363, 284 + xy: 1405, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-power-void-medium rotate: false - xy: 3491, 350 + xy: 881, 40 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-power-void-small rotate: false - xy: 2347, 219 + xy: 4055, 292 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-power-void-tiny rotate: false - xy: 3985, 186 + xy: 1457, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-power-void-xlarge rotate: false - xy: 431, 151 + xy: 381, 53 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-pulse-conduit-large rotate: false - xy: 1405, 326 + xy: 1321, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-pulse-conduit-medium rotate: false - xy: 3525, 350 + xy: 881, 6 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-pulse-conduit-small rotate: false - xy: 2347, 193 + xy: 4053, 266 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-pulse-conduit-tiny rotate: false - xy: 4003, 186 + xy: 1475, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-pulse-conduit-xlarge rotate: false - xy: 381, 51 + xy: 431, 103 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-pulverizer-large rotate: false - xy: 1321, 200 + xy: 1363, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-pulverizer-medium rotate: false - xy: 3559, 350 + xy: 2795, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-pulverizer-small rotate: false - xy: 2373, 219 + xy: 4049, 240 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-pulverizer-tiny rotate: false - xy: 4021, 186 + xy: 1493, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-pulverizer-xlarge rotate: false - xy: 431, 101 + xy: 481, 153 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-pyratite-mixer-large rotate: false - xy: 1363, 242 + xy: 1405, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-pyratite-mixer-medium rotate: false - xy: 3593, 350 + xy: 2829, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-pyratite-mixer-small rotate: false - xy: 2373, 193 + xy: 2374, 155 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-pyratite-mixer-tiny rotate: false - xy: 4039, 186 + xy: 1511, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-pyratite-mixer-xlarge rotate: false - xy: 481, 151 + xy: 431, 53 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-repair-point-large rotate: false - xy: 1405, 284 + xy: 1447, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-repair-point-medium rotate: false - xy: 3627, 350 + xy: 2863, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-repair-point-small rotate: false - xy: 2399, 219 + xy: 2374, 129 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-repair-point-tiny rotate: false - xy: 4057, 186 + xy: 1529, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-repair-point-xlarge rotate: false - xy: 431, 51 + xy: 481, 103 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-resupply-point-large rotate: false - xy: 1447, 326 + xy: 1363, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-resupply-point-medium rotate: false - xy: 3661, 350 + xy: 2897, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-resupply-point-small rotate: false - xy: 2399, 193 + xy: 4056, 214 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-resupply-point-tiny rotate: false - xy: 4075, 186 + xy: 1547, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-resupply-point-xlarge rotate: false - xy: 481, 101 + xy: 531, 153 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-ripple-large rotate: false - xy: 1363, 200 + xy: 1405, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-ripple-medium rotate: false - xy: 3695, 350 + xy: 2931, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-ripple-small rotate: false - xy: 2425, 219 + xy: 2374, 103 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-ripple-tiny rotate: false - xy: 4073, 341 + xy: 1565, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-ripple-xlarge rotate: false - xy: 531, 151 + xy: 481, 53 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-rock-large rotate: false - xy: 1405, 242 + xy: 1447, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-rock-medium rotate: false - xy: 3729, 350 + xy: 2965, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-rock-small rotate: false - xy: 2425, 193 + xy: 3822, 182 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-rock-tiny rotate: false - xy: 4073, 323 + xy: 1583, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-rock-xlarge rotate: false - xy: 481, 51 + xy: 531, 103 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-rocks-large rotate: false - xy: 1447, 284 + xy: 1489, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-rocks-medium rotate: false - xy: 3763, 350 + xy: 2999, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-rocks-small rotate: false - xy: 2451, 219 + xy: 3848, 182 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-rocks-tiny rotate: false - xy: 4073, 305 + xy: 1601, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-rocks-xlarge rotate: false - xy: 531, 101 + xy: 581, 153 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-rotary-pump-large rotate: false - xy: 1489, 326 + xy: 1405, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-rotary-pump-medium rotate: false - xy: 3797, 350 + xy: 3033, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-rotary-pump-small rotate: false - xy: 2451, 193 + xy: 3874, 182 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-rotary-pump-tiny rotate: false - xy: 4073, 287 + xy: 1619, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-rotary-pump-xlarge rotate: false - xy: 581, 151 + xy: 531, 53 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-router-large rotate: false - xy: 1405, 200 + xy: 1447, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-router-medium rotate: false - xy: 3831, 350 + xy: 3067, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-router-small rotate: false - xy: 2477, 219 + xy: 3900, 182 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-router-tiny rotate: false - xy: 899, 9 + xy: 1637, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-router-xlarge rotate: false - xy: 531, 51 + xy: 581, 103 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-rtg-generator-large rotate: false - xy: 1447, 242 + xy: 1489, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-rtg-generator-medium rotate: false - xy: 3865, 350 + xy: 3101, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-rtg-generator-small rotate: false - xy: 2477, 193 + xy: 3926, 182 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-rtg-generator-tiny rotate: false - xy: 917, 9 + xy: 1655, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-rtg-generator-xlarge rotate: false - xy: 581, 101 + xy: 631, 153 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-salt-large rotate: false - xy: 1489, 284 + xy: 1531, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-salt-medium rotate: false - xy: 3899, 350 + xy: 3135, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-salt-small rotate: false - xy: 2503, 219 + xy: 3952, 182 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-salt-tiny rotate: false - xy: 935, 9 + xy: 1673, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-salt-xlarge rotate: false - xy: 631, 151 + xy: 581, 53 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-saltrocks-large rotate: false - xy: 1531, 326 + xy: 1447, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-saltrocks-medium rotate: false - xy: 3933, 350 + xy: 3169, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-saltrocks-small rotate: false - xy: 2503, 193 + xy: 3978, 182 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-saltrocks-tiny rotate: false - xy: 953, 9 + xy: 1691, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-saltrocks-xlarge rotate: false - xy: 581, 51 + xy: 631, 103 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-salvo-large rotate: false - xy: 1447, 200 + xy: 1489, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-salvo-medium rotate: false - xy: 3967, 350 + xy: 3203, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-salvo-small rotate: false - xy: 2529, 219 + xy: 4004, 182 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-salvo-tiny rotate: false - xy: 971, 9 + xy: 1709, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-salvo-xlarge rotate: false - xy: 631, 101 + xy: 681, 153 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-sand-boulder-large rotate: false - xy: 1489, 242 + xy: 1531, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-sand-boulder-medium rotate: false - xy: 4001, 350 + xy: 3237, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-sand-boulder-small rotate: false - xy: 2529, 193 + xy: 4030, 182 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-sand-boulder-tiny rotate: false - xy: 989, 9 + xy: 1727, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-sand-boulder-xlarge rotate: false - xy: 681, 151 + xy: 631, 53 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-sand-large rotate: false - xy: 1531, 284 + xy: 1573, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-sand-medium rotate: false - xy: 4035, 350 + xy: 3271, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-sand-small rotate: false - xy: 2555, 219 + xy: 4056, 188 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-sand-tiny rotate: false - xy: 1007, 9 + xy: 1745, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-sand-water-large rotate: false - xy: 1573, 326 + xy: 1489, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-sand-water-medium rotate: false - xy: 2781, 308 + xy: 3305, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-sand-water-small rotate: false - xy: 2555, 193 + xy: 944, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-sand-water-tiny rotate: false - xy: 1025, 9 + xy: 1763, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-sand-water-xlarge rotate: false - xy: 631, 51 + xy: 681, 103 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-sand-xlarge rotate: false - xy: 681, 101 + xy: 731, 153 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-sandrocks-large rotate: false - xy: 1489, 200 + xy: 1531, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-sandrocks-medium rotate: false - xy: 2815, 316 + xy: 3339, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-sandrocks-small rotate: false - xy: 2581, 219 + xy: 970, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-sandrocks-tiny rotate: false - xy: 1043, 9 + xy: 1781, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-sandrocks-xlarge rotate: false - xy: 731, 151 + xy: 681, 53 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-scatter-large rotate: false - xy: 1531, 242 + xy: 1573, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-scatter-medium rotate: false - xy: 2849, 316 + xy: 3373, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-scatter-small rotate: false - xy: 2581, 193 + xy: 996, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-scatter-tiny rotate: false - xy: 1061, 9 + xy: 1799, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-scatter-xlarge rotate: false - xy: 681, 51 + xy: 731, 103 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-scorch-large rotate: false - xy: 1573, 284 + xy: 1615, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-scorch-medium rotate: false - xy: 2883, 316 + xy: 3407, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-scorch-small rotate: false - xy: 2607, 219 + xy: 1022, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-scorch-tiny rotate: false - xy: 1079, 9 + xy: 1817, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-scorch-xlarge rotate: false - xy: 731, 101 + xy: 731, 53 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-scrap-wall-gigantic-large rotate: false - xy: 1615, 326 + xy: 1531, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-scrap-wall-gigantic-medium rotate: false - xy: 2917, 316 + xy: 3441, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-scrap-wall-gigantic-small rotate: false - xy: 2607, 193 + xy: 1048, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-scrap-wall-gigantic-tiny rotate: false - xy: 2239, 172 + xy: 1835, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-scrap-wall-gigantic-xlarge rotate: false - xy: 731, 51 + xy: 331, 3 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-scrap-wall-huge-large rotate: false - xy: 1531, 200 + xy: 1573, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-scrap-wall-huge-medium rotate: false - xy: 2951, 316 + xy: 3475, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-scrap-wall-huge-small rotate: false - xy: 2633, 219 + xy: 1074, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-scrap-wall-huge-tiny rotate: false - xy: 2257, 175 + xy: 1853, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-scrap-wall-huge-xlarge rotate: false - xy: 331, 1 + xy: 381, 3 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-scrap-wall-large rotate: false - xy: 1573, 242 + xy: 1615, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-scrap-wall-large-large rotate: false - xy: 1615, 284 + xy: 1657, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-scrap-wall-large-medium rotate: false - xy: 2985, 316 + xy: 3509, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-scrap-wall-large-small rotate: false - xy: 2633, 193 + xy: 1100, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-scrap-wall-large-tiny rotate: false - xy: 2275, 175 + xy: 1871, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-scrap-wall-large-xlarge rotate: false - xy: 381, 1 + xy: 431, 3 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-scrap-wall-medium rotate: false - xy: 3019, 316 + xy: 3543, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-scrap-wall-small rotate: false - xy: 2659, 219 + xy: 1126, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-scrap-wall-tiny rotate: false - xy: 2293, 175 + xy: 1889, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-scrap-wall-xlarge rotate: false - xy: 431, 1 + xy: 481, 3 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-segment-large rotate: false - xy: 1657, 326 + xy: 1573, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-segment-medium rotate: false - xy: 3053, 316 + xy: 3577, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-segment-small rotate: false - xy: 2659, 193 + xy: 1152, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-segment-tiny rotate: false - xy: 2311, 175 + xy: 1907, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-segment-xlarge rotate: false - xy: 481, 1 + xy: 531, 3 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-separator-large rotate: false - xy: 1573, 200 + xy: 1615, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-separator-medium rotate: false - xy: 3087, 316 + xy: 3611, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-separator-small rotate: false - xy: 2685, 219 + xy: 1178, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-separator-tiny rotate: false - xy: 2329, 175 + xy: 1925, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-separator-xlarge rotate: false - xy: 531, 1 + xy: 581, 3 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-shale-boulder-large rotate: false - xy: 1615, 242 + xy: 1657, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-shale-boulder-medium rotate: false - xy: 3121, 316 + xy: 3645, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-shale-boulder-small rotate: false - xy: 2685, 193 + xy: 1204, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-shale-boulder-tiny rotate: false - xy: 2347, 175 + xy: 1943, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-shale-boulder-xlarge rotate: false - xy: 581, 1 + xy: 631, 3 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-shale-large rotate: false - xy: 1657, 284 + xy: 1699, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-shale-medium rotate: false - xy: 3155, 316 + xy: 3679, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-shale-small rotate: false - xy: 2711, 219 + xy: 1230, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-shale-tiny rotate: false - xy: 2365, 175 + xy: 1961, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-shale-xlarge rotate: false - xy: 631, 1 + xy: 681, 3 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-shalerocks-large rotate: false - xy: 1699, 326 + xy: 1615, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-shalerocks-medium rotate: false - xy: 3189, 316 + xy: 3713, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-shalerocks-small rotate: false - xy: 2711, 193 + xy: 1256, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-shalerocks-tiny rotate: false - xy: 2383, 175 + xy: 1979, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-shalerocks-xlarge rotate: false - xy: 681, 1 + xy: 731, 3 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-shock-mine-large rotate: false - xy: 1615, 200 + xy: 1657, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-shock-mine-medium rotate: false - xy: 3223, 316 + xy: 3747, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-shock-mine-small rotate: false - xy: 2737, 219 + xy: 1282, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-shock-mine-tiny rotate: false - xy: 2401, 175 + xy: 1997, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-shock-mine-xlarge rotate: false - xy: 731, 1 + xy: 781, 115 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-shrubs-large rotate: false - xy: 1657, 242 + xy: 1699, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-shrubs-medium rotate: false - xy: 3257, 316 + xy: 3781, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-shrubs-small rotate: false - xy: 2737, 193 + xy: 1308, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-shrubs-tiny rotate: false - xy: 2419, 175 + xy: 2015, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-shrubs-xlarge rotate: false - xy: 781, 113 + xy: 781, 65 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-silicon-crucible-large rotate: false - xy: 1699, 284 + xy: 1741, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-silicon-crucible-medium rotate: false - xy: 3291, 316 + xy: 3815, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-silicon-crucible-small rotate: false - xy: 2770, 245 + xy: 1334, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-silicon-crucible-tiny rotate: false - xy: 2437, 175 + xy: 2033, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-silicon-crucible-xlarge rotate: false - xy: 781, 63 + xy: 781, 15 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-silicon-smelter-large rotate: false - xy: 1741, 326 + xy: 1657, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-silicon-smelter-medium rotate: false - xy: 3325, 316 + xy: 3849, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-silicon-smelter-small rotate: false - xy: 2763, 219 + xy: 1360, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-silicon-smelter-tiny rotate: false - xy: 2455, 175 + xy: 2051, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-silicon-smelter-xlarge rotate: false - xy: 781, 13 + xy: 831, 115 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-slag-large rotate: false - xy: 1657, 200 + xy: 1699, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-slag-medium rotate: false - xy: 3359, 316 + xy: 3883, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-slag-small rotate: false - xy: 2763, 193 + xy: 1386, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-slag-tiny rotate: false - xy: 2473, 175 + xy: 2069, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-slag-xlarge rotate: false - xy: 831, 113 + xy: 831, 65 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-snow-large rotate: false - xy: 1699, 242 + xy: 1741, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-snow-medium rotate: false - xy: 3393, 316 + xy: 3917, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-snow-pine-large rotate: false - xy: 1741, 284 + xy: 1783, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-snow-pine-medium rotate: false - xy: 3427, 316 + xy: 3951, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-snow-pine-small rotate: false - xy: 2789, 219 + xy: 1412, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-snow-pine-tiny rotate: false - xy: 2491, 175 + xy: 2087, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-snow-pine-xlarge rotate: false - xy: 831, 63 + xy: 831, 15 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-snow-small rotate: false - xy: 2789, 193 + xy: 1438, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-snow-tiny rotate: false - xy: 2509, 175 + xy: 2105, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-snow-xlarge rotate: false - xy: 831, 13 + xy: 859, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-snowrock-large rotate: false - xy: 1783, 326 + xy: 1699, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-snowrock-medium rotate: false - xy: 3461, 316 + xy: 3985, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-snowrock-small rotate: false - xy: 2815, 222 + xy: 1464, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-snowrock-tiny rotate: false - xy: 2527, 175 + xy: 2123, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-snowrock-xlarge rotate: false - xy: 859, 410 + xy: 909, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-snowrocks-large rotate: false - xy: 1699, 200 + xy: 1741, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-snowrocks-medium rotate: false - xy: 3495, 316 + xy: 2451, 244 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-snowrocks-small rotate: false - xy: 2841, 222 + xy: 1490, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-snowrocks-tiny rotate: false - xy: 2545, 175 + xy: 2141, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-snowrocks-xlarge rotate: false - xy: 909, 410 + xy: 959, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-solar-panel-large rotate: false - xy: 1741, 242 + xy: 1783, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-solar-panel-large-large rotate: false - xy: 1783, 284 + xy: 1825, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-solar-panel-large-medium rotate: false - xy: 3529, 316 + xy: 2485, 244 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-solar-panel-large-small rotate: false - xy: 2815, 196 + xy: 1516, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-solar-panel-large-tiny rotate: false - xy: 2563, 175 + xy: 2159, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-solar-panel-large-xlarge rotate: false - xy: 959, 410 + xy: 1009, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-solar-panel-medium rotate: false - xy: 3563, 316 + xy: 2519, 244 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-solar-panel-small rotate: false - xy: 2867, 222 + xy: 1542, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-solar-panel-tiny rotate: false - xy: 2581, 175 + xy: 2177, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-solar-panel-xlarge rotate: false - xy: 1009, 410 + xy: 1059, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-sorter-large rotate: false - xy: 1825, 326 + xy: 1741, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-sorter-medium rotate: false - xy: 3597, 316 + xy: 2553, 244 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-sorter-small rotate: false - xy: 2841, 196 + xy: 1568, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-sorter-tiny rotate: false - xy: 2599, 175 + xy: 2195, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-sorter-xlarge rotate: false - xy: 1059, 410 + xy: 1109, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-spawn-large rotate: false - xy: 1741, 200 + xy: 1783, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-spawn-medium rotate: false - xy: 3631, 316 + xy: 2587, 244 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-spawn-small rotate: false - xy: 2893, 222 + xy: 1594, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-spawn-tiny rotate: false - xy: 2617, 175 + xy: 2213, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-spawn-xlarge rotate: false - xy: 1109, 410 + xy: 1159, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-spectre-large rotate: false - xy: 1783, 242 + xy: 1825, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-spectre-medium rotate: false - xy: 3665, 316 + xy: 2621, 244 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-spectre-small rotate: false - xy: 2867, 196 + xy: 1620, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-spectre-tiny rotate: false - xy: 2635, 175 + xy: 2231, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-spectre-xlarge rotate: false - xy: 1159, 410 + xy: 1209, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-spore-cluster-large rotate: false - xy: 1825, 284 + xy: 1867, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-spore-cluster-medium rotate: false - xy: 3699, 316 + xy: 2655, 244 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-spore-cluster-small rotate: false - xy: 2919, 222 + xy: 1646, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-spore-cluster-tiny rotate: false - xy: 2653, 175 + xy: 2249, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-spore-cluster-xlarge rotate: false - xy: 1209, 410 + xy: 1259, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-spore-moss-large rotate: false - xy: 1867, 326 + xy: 1783, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-spore-moss-medium rotate: false - xy: 3733, 316 + xy: 2689, 244 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-spore-moss-small rotate: false - xy: 2893, 196 + xy: 1672, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-spore-moss-tiny rotate: false - xy: 2671, 175 + xy: 2267, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-spore-moss-xlarge rotate: false - xy: 1259, 410 + xy: 1309, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-spore-pine-large rotate: false - xy: 1783, 200 + xy: 1825, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-spore-pine-medium rotate: false - xy: 3767, 316 + xy: 2723, 244 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-spore-pine-small rotate: false - xy: 2945, 222 + xy: 1698, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-spore-pine-tiny rotate: false - xy: 2689, 175 + xy: 2285, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-spore-pine-xlarge rotate: false - xy: 1309, 410 + xy: 1359, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-spore-press-large rotate: false - xy: 1825, 242 + xy: 1867, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-spore-press-medium rotate: false - xy: 3801, 316 + xy: 2757, 244 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-spore-press-small rotate: false - xy: 2919, 196 + xy: 1724, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-spore-press-tiny rotate: false - xy: 2707, 175 + xy: 2303, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-spore-press-xlarge rotate: false - xy: 1359, 410 + xy: 1409, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-sporerocks-large rotate: false - xy: 1867, 284 + xy: 1909, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-sporerocks-medium rotate: false - xy: 3835, 316 + xy: 2791, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-sporerocks-small rotate: false - xy: 2971, 222 + xy: 1750, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-sporerocks-tiny rotate: false - xy: 2725, 175 + xy: 2321, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-sporerocks-xlarge rotate: false - xy: 1409, 410 + xy: 1459, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-stone-large rotate: false - xy: 1909, 326 + xy: 1825, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-stone-medium rotate: false - xy: 3869, 316 + xy: 2825, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-stone-small rotate: false - xy: 2945, 196 + xy: 1776, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-stone-tiny rotate: false - xy: 2743, 175 + xy: 2339, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-stone-xlarge rotate: false - xy: 1459, 410 + xy: 1509, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-surge-tower-large rotate: false - xy: 1825, 200 + xy: 1867, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-surge-tower-medium rotate: false - xy: 3903, 316 + xy: 2859, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-surge-tower-small rotate: false - xy: 2997, 222 + xy: 1802, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-surge-tower-tiny rotate: false - xy: 2761, 175 + xy: 2357, 36 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-surge-tower-xlarge rotate: false - xy: 1509, 410 + xy: 1559, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-surge-wall-large rotate: false - xy: 1867, 242 + xy: 1909, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-surge-wall-large-large rotate: false - xy: 1909, 284 + xy: 1951, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-surge-wall-large-medium rotate: false - xy: 3937, 316 + xy: 2893, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-surge-wall-large-small rotate: false - xy: 2971, 196 + xy: 1828, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-surge-wall-large-tiny rotate: false - xy: 2779, 175 + xy: 1071, 20 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-surge-wall-large-xlarge rotate: false - xy: 1559, 410 + xy: 1609, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-surge-wall-medium rotate: false - xy: 3971, 316 + xy: 2927, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-surge-wall-small rotate: false - xy: 3023, 222 + xy: 1854, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-surge-wall-tiny rotate: false - xy: 2797, 175 + xy: 1089, 20 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-surge-wall-xlarge rotate: false - xy: 1609, 410 + xy: 1659, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-swarmer-large rotate: false - xy: 1951, 326 + xy: 1867, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-swarmer-medium rotate: false - xy: 4005, 316 + xy: 2961, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-swarmer-small rotate: false - xy: 2997, 196 + xy: 1880, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-swarmer-tiny rotate: false - xy: 2815, 178 + xy: 1107, 20 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-swarmer-xlarge rotate: false - xy: 1659, 410 + xy: 1709, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-tainted-water-large rotate: false - xy: 1867, 200 + xy: 1909, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-tainted-water-medium rotate: false - xy: 4039, 316 + xy: 2995, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-tainted-water-small rotate: false - xy: 3049, 222 + xy: 1906, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-tainted-water-tiny rotate: false - xy: 2833, 178 + xy: 1125, 20 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-tainted-water-xlarge rotate: false - xy: 1709, 410 + xy: 1759, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-tar-large rotate: false - xy: 1909, 242 + xy: 1951, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-tar-medium rotate: false - xy: 2815, 282 + xy: 3029, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-tar-small rotate: false - xy: 3023, 196 + xy: 1932, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-tar-tiny rotate: false - xy: 2851, 178 + xy: 1143, 20 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-tar-xlarge rotate: false - xy: 1759, 410 + xy: 1809, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-tendrils-large rotate: false - xy: 1951, 284 + xy: 1993, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-tendrils-medium rotate: false - xy: 2849, 282 + xy: 3063, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-tendrils-small rotate: false - xy: 3075, 222 + xy: 1958, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-tendrils-tiny rotate: false - xy: 2869, 178 + xy: 1161, 20 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-tendrils-xlarge rotate: false - xy: 1809, 410 + xy: 1859, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-tetrative-reconstructor-large rotate: false - xy: 1993, 326 + xy: 1909, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-tetrative-reconstructor-medium rotate: false - xy: 2883, 282 + xy: 3097, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-tetrative-reconstructor-small rotate: false - xy: 3049, 196 + xy: 1984, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-tetrative-reconstructor-tiny rotate: false - xy: 2887, 178 + xy: 1179, 20 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-tetrative-reconstructor-xlarge rotate: false - xy: 1859, 410 + xy: 1909, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-thermal-generator-large rotate: false - xy: 1909, 200 + xy: 1951, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-thermal-generator-medium rotate: false - xy: 2917, 282 + xy: 3131, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-thermal-generator-small rotate: false - xy: 3075, 196 + xy: 2010, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-thermal-generator-tiny rotate: false - xy: 2905, 178 + xy: 1197, 20 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-thermal-generator-xlarge rotate: false - xy: 1909, 410 + xy: 1959, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-thermal-pump-large rotate: false - xy: 1951, 242 + xy: 1993, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-thermal-pump-medium rotate: false - xy: 2951, 282 + xy: 3165, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-thermal-pump-small rotate: false - xy: 3101, 216 + xy: 2036, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-thermal-pump-tiny rotate: false - xy: 2923, 178 + xy: 1215, 20 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-thermal-pump-xlarge rotate: false - xy: 1959, 410 + xy: 2009, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-thorium-reactor-large rotate: false - xy: 1993, 284 + xy: 2035, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-thorium-reactor-medium rotate: false - xy: 2985, 282 + xy: 3199, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-thorium-reactor-small rotate: false - xy: 3127, 216 + xy: 2062, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-thorium-reactor-tiny rotate: false - xy: 2941, 178 + xy: 1233, 20 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-thorium-reactor-xlarge rotate: false - xy: 2009, 410 + xy: 2059, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-thorium-wall-large rotate: false - xy: 2035, 326 + xy: 1951, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-thorium-wall-large-large rotate: false - xy: 1951, 200 + xy: 1993, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-thorium-wall-large-medium rotate: false - xy: 3019, 282 + xy: 3233, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-thorium-wall-large-small rotate: false - xy: 3153, 216 + xy: 2088, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-thorium-wall-large-tiny rotate: false - xy: 2959, 178 + xy: 1251, 20 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-thorium-wall-large-xlarge rotate: false - xy: 2059, 410 + xy: 2109, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-thorium-wall-medium rotate: false - xy: 3053, 282 + xy: 3267, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-thorium-wall-small rotate: false - xy: 3179, 216 + xy: 2114, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-thorium-wall-tiny rotate: false - xy: 2977, 178 + xy: 1269, 20 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-thorium-wall-xlarge rotate: false - xy: 2109, 410 + xy: 2159, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-thruster-large rotate: false - xy: 1993, 242 + xy: 2035, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-thruster-medium rotate: false - xy: 3087, 282 + xy: 3301, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-thruster-small rotate: false - xy: 3101, 190 + xy: 2140, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-thruster-tiny rotate: false - xy: 2995, 178 + xy: 1287, 20 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-thruster-xlarge rotate: false - xy: 2159, 410 + xy: 2209, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-titanium-conveyor-large rotate: false - xy: 2035, 284 + xy: 2077, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-titanium-conveyor-medium rotate: false - xy: 3121, 282 + xy: 3335, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-titanium-conveyor-small rotate: false - xy: 3127, 190 + xy: 2166, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-titanium-conveyor-tiny rotate: false - xy: 3013, 178 + xy: 1305, 20 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-titanium-conveyor-xlarge rotate: false - xy: 2209, 410 + xy: 2259, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-titanium-wall-large rotate: false - xy: 2077, 326 + xy: 1993, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-titanium-wall-large-large rotate: false - xy: 1993, 200 + xy: 2035, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-titanium-wall-large-medium rotate: false - xy: 3155, 282 + xy: 3369, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-titanium-wall-large-small rotate: false - xy: 3153, 190 + xy: 2192, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-titanium-wall-large-tiny rotate: false - xy: 3031, 178 + xy: 993, 4 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-titanium-wall-large-xlarge rotate: false - xy: 2259, 410 + xy: 2309, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-titanium-wall-medium rotate: false - xy: 3189, 282 + xy: 3403, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-titanium-wall-small rotate: false - xy: 3179, 190 + xy: 2218, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-titanium-wall-tiny rotate: false - xy: 3049, 178 + xy: 1011, 4 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-titanium-wall-xlarge rotate: false - xy: 2309, 410 + xy: 2359, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-turbine-generator-large rotate: false - xy: 2035, 242 + xy: 2077, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-turbine-generator-medium rotate: false - xy: 3223, 282 + xy: 3437, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-turbine-generator-small rotate: false - xy: 3205, 216 + xy: 2244, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-turbine-generator-tiny rotate: false - xy: 3067, 178 + xy: 1029, 4 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-turbine-generator-xlarge rotate: false - xy: 2359, 410 + xy: 2409, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-underflow-gate-large rotate: false - xy: 2077, 284 + xy: 2119, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-underflow-gate-medium rotate: false - xy: 3257, 282 + xy: 3471, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-underflow-gate-small rotate: false - xy: 3205, 190 + xy: 2270, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-underflow-gate-tiny rotate: false - xy: 2239, 154 + xy: 1047, 9 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-underflow-gate-xlarge rotate: false - xy: 2409, 410 + xy: 2459, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-unloader-large rotate: false - xy: 2119, 326 + xy: 2035, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-unloader-medium rotate: false - xy: 3291, 282 + xy: 3505, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-unloader-small rotate: false - xy: 3231, 218 + xy: 2296, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-unloader-tiny rotate: false - xy: 2257, 157 + xy: 1323, 18 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-unloader-xlarge rotate: false - xy: 2459, 410 + xy: 2509, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-vault-large rotate: false - xy: 2035, 200 + xy: 2077, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-vault-medium rotate: false - xy: 3325, 282 + xy: 3539, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-vault-small rotate: false - xy: 3231, 192 + xy: 2322, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-vault-tiny rotate: false - xy: 2275, 157 + xy: 1341, 18 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-vault-xlarge rotate: false - xy: 2509, 410 + xy: 2559, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-water-extractor-large rotate: false - xy: 2077, 242 + xy: 2119, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-water-extractor-medium rotate: false - xy: 3359, 282 + xy: 3573, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-water-extractor-small rotate: false - xy: 3257, 193 + xy: 2348, 90 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-water-extractor-tiny rotate: false - xy: 2293, 157 + xy: 1359, 18 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-water-extractor-xlarge rotate: false - xy: 2559, 410 + xy: 2609, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-water-large rotate: false - xy: 2119, 284 + xy: 2161, 328 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-water-medium rotate: false - xy: 3393, 282 + xy: 3607, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-water-small rotate: false - xy: 2111, 153 + xy: 941, 64 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-water-tiny rotate: false - xy: 2311, 157 + xy: 1377, 18 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-water-xlarge rotate: false - xy: 2609, 410 + xy: 2659, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-wave-large rotate: false - xy: 2161, 326 + xy: 2077, 202 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-wave-medium rotate: false - xy: 3427, 282 + xy: 3641, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-wave-small rotate: false - xy: 4069, 455 + xy: 941, 38 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-wave-tiny rotate: false - xy: 2329, 157 + xy: 1395, 18 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-wave-xlarge rotate: false - xy: 2659, 410 + xy: 2709, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-white-tree-dead-large rotate: false - xy: 2077, 200 + xy: 2119, 244 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-white-tree-dead-medium rotate: false - xy: 3461, 282 + xy: 3675, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-white-tree-dead-small rotate: false - xy: 4069, 429 + xy: 967, 64 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-white-tree-dead-tiny rotate: false - xy: 2347, 157 + xy: 1413, 18 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-white-tree-dead-xlarge rotate: false - xy: 2709, 410 + xy: 2759, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 block-white-tree-large rotate: false - xy: 2119, 242 + xy: 2161, 286 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 block-white-tree-medium rotate: false - xy: 3495, 282 + xy: 3709, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-white-tree-small rotate: false - xy: 4069, 403 + xy: 941, 12 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-white-tree-tiny rotate: false - xy: 2365, 157 + xy: 1431, 18 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-white-tree-xlarge rotate: false - xy: 2759, 410 + xy: 2809, 412 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 button rotate: false - xy: 2659, 339 + xy: 2645, 341 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16672,7 +17379,7 @@ button index: -1 button-disabled rotate: false - xy: 4057, 481 + xy: 4057, 483 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16680,7 +17387,7 @@ button-disabled index: -1 button-down rotate: false - xy: 2161, 297 + xy: 4059, 454 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16688,7 +17395,7 @@ button-down index: -1 button-edge-1 rotate: false - xy: 2203, 339 + xy: 4059, 425 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16696,7 +17403,7 @@ button-edge-1 index: -1 button-edge-2 rotate: false - xy: 2119, 213 + xy: 4059, 396 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16704,7 +17411,7 @@ button-edge-2 index: -1 button-edge-3 rotate: false - xy: 2161, 268 + xy: 2455, 341 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16712,7 +17419,7 @@ button-edge-3 index: -1 button-edge-4 rotate: false - xy: 2241, 339 + xy: 2371, 215 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16720,7 +17427,7 @@ button-edge-4 index: -1 button-edge-over-4 rotate: false - xy: 2279, 339 + xy: 2413, 257 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16728,7 +17435,7 @@ button-edge-over-4 index: -1 button-over rotate: false - xy: 2317, 339 + xy: 2455, 312 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16736,7 +17443,7 @@ button-over index: -1 button-red rotate: false - xy: 2355, 339 + xy: 2493, 341 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16744,7 +17451,7 @@ button-red index: -1 button-right rotate: false - xy: 2469, 339 + xy: 2531, 312 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16752,7 +17459,7 @@ button-right index: -1 button-right-down rotate: false - xy: 2393, 339 + xy: 2493, 312 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16760,7 +17467,7 @@ button-right-down index: -1 button-right-over rotate: false - xy: 2431, 339 + xy: 2531, 341 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16768,7 +17475,7 @@ button-right-over index: -1 button-select rotate: false - xy: 4069, 377 + xy: 967, 38 size: 24, 24 split: 4, 4, 4, 4 orig: 24, 24 @@ -16776,7 +17483,7 @@ button-select index: -1 button-square rotate: false - xy: 2583, 339 + xy: 2607, 341 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16784,7 +17491,7 @@ button-square index: -1 button-square-down rotate: false - xy: 2507, 339 + xy: 2569, 341 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16792,7 +17499,7 @@ button-square-down index: -1 button-square-over rotate: false - xy: 2545, 339 + xy: 2569, 312 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16800,7 +17507,7 @@ button-square-over index: -1 button-trans rotate: false - xy: 2621, 339 + xy: 2607, 312 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16808,77 +17515,77 @@ button-trans index: -1 check-disabled rotate: false - xy: 3529, 282 + xy: 3743, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-off rotate: false - xy: 3563, 282 + xy: 3777, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-on rotate: false - xy: 3597, 282 + xy: 3811, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-on-disabled rotate: false - xy: 3631, 282 + xy: 3845, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-on-over rotate: false - xy: 3665, 282 + xy: 3879, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-over rotate: false - xy: 3699, 282 + xy: 3913, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 clear rotate: false - xy: 771, 401 + xy: 771, 403 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 crater rotate: false - xy: 309, 181 + xy: 309, 183 size: 18, 18 orig: 18, 18 offset: 0, 0 index: -1 cursor rotate: false - xy: 3101, 242 + xy: 4049, 234 size: 4, 4 orig: 4, 4 offset: 0, 0 index: -1 discord-banner rotate: false - xy: 771, 463 + xy: 771, 465 size: 84, 45 orig: 84, 45 offset: 0, 0 index: -1 flat-down-base rotate: false - xy: 2697, 339 + xy: 2645, 312 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -16886,14 +17593,14 @@ flat-down-base index: -1 info-banner rotate: false - xy: 259, 354 + xy: 259, 356 size: 84, 45 orig: 84, 45 offset: 0, 0 index: -1 inventory rotate: false - xy: 881, 111 + xy: 993, 48 size: 24, 40 split: 10, 10, 10, 14 orig: 24, 40 @@ -16901,161 +17608,161 @@ inventory index: -1 item-blast-compound-icon rotate: false - xy: 3733, 282 + xy: 3947, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-coal-icon rotate: false - xy: 3767, 282 + xy: 3981, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-copper-icon rotate: false - xy: 3801, 282 + xy: 4021, 336 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-graphite-icon rotate: false - xy: 3835, 282 + xy: 4021, 302 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-lead-icon rotate: false - xy: 3869, 282 + xy: 4019, 268 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-metaglass-icon rotate: false - xy: 3903, 282 + xy: 4015, 234 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-phase-fabric-icon rotate: false - xy: 3937, 282 + xy: 2371, 181 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-plastanium-icon rotate: false - xy: 3971, 282 + xy: 2413, 223 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-pyratite-icon rotate: false - xy: 4005, 282 + xy: 2447, 210 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-sand-icon rotate: false - xy: 4039, 282 + xy: 2481, 210 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-scrap-icon rotate: false - xy: 2781, 274 + xy: 2515, 210 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-silicon-icon rotate: false - xy: 2815, 248 + xy: 2549, 210 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-spore-pod-icon rotate: false - xy: 2849, 248 + xy: 2583, 210 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-surge-alloy-icon rotate: false - xy: 2883, 248 + xy: 2617, 210 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-thorium-icon rotate: false - xy: 2917, 248 + xy: 2651, 210 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-titanium-icon rotate: false - xy: 2951, 248 + xy: 2685, 210 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-cryofluid-icon rotate: false - xy: 2985, 248 + xy: 2719, 210 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-oil-icon rotate: false - xy: 3019, 248 + xy: 2753, 210 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-slag-icon rotate: false - xy: 3053, 248 + xy: 2787, 200 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-water-icon rotate: false - xy: 3087, 248 + xy: 2821, 200 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 logo rotate: false - xy: 1, 401 + xy: 1, 403 size: 768, 107 orig: 768, 107 offset: 0, 0 index: -1 nomap rotate: false - xy: 1, 143 + xy: 1, 145 size: 256, 256 orig: 256, 256 offset: 0, 0 index: -1 pane rotate: false - xy: 901, 171 + xy: 2683, 312 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17063,7 +17770,7 @@ pane index: -1 pane-2 rotate: false - xy: 2735, 339 + xy: 2683, 341 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17071,7 +17778,7 @@ pane-2 index: -1 scroll rotate: false - xy: 881, 32 + xy: 1045, 53 size: 24, 35 split: 10, 10, 6, 5 orig: 24, 35 @@ -17079,7 +17786,7 @@ scroll index: -1 scroll-horizontal rotate: false - xy: 2161, 242 + xy: 901, 176 size: 35, 24 split: 6, 5, 10, 10 orig: 35, 24 @@ -17087,70 +17794,70 @@ scroll-horizontal index: -1 scroll-knob-horizontal-black rotate: false - xy: 859, 174 + xy: 859, 176 size: 40, 24 orig: 40, 24 offset: 0, 0 index: -1 scroll-knob-vertical-black rotate: false - xy: 881, 69 + xy: 1019, 48 size: 24, 40 orig: 24, 40 offset: 0, 0 index: -1 scroll-knob-vertical-thin rotate: false - xy: 4081, 245 + xy: 4081, 328 size: 12, 40 orig: 12, 40 offset: 0, 0 index: -1 selection rotate: false - xy: 2199, 268 + xy: 941, 102 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 slider rotate: false - xy: 259, 144 + xy: 941, 92 size: 1, 8 orig: 1, 8 offset: 0, 0 index: -1 slider-knob rotate: false - xy: 3121, 242 + xy: 3671, 194 size: 29, 38 orig: 29, 38 offset: 0, 0 index: -1 slider-knob-down rotate: false - xy: 3152, 242 + xy: 3702, 194 size: 29, 38 orig: 29, 38 offset: 0, 0 index: -1 slider-knob-over rotate: false - xy: 3183, 242 + xy: 3733, 194 size: 29, 38 orig: 29, 38 offset: 0, 0 index: -1 slider-vertical rotate: false - xy: 309, 351 + xy: 309, 353 size: 8, 1 orig: 8, 1 offset: 0, 0 index: -1 underline rotate: false - xy: 1053, 171 + xy: 2759, 312 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17158,7 +17865,7 @@ underline index: -1 underline-2 rotate: false - xy: 939, 171 + xy: 2721, 341 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17166,7 +17873,7 @@ underline-2 index: -1 underline-disabled rotate: false - xy: 977, 171 + xy: 2721, 312 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -17174,22 +17881,862 @@ underline-disabled index: -1 underline-red rotate: false - xy: 1015, 171 + xy: 2759, 341 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 offset: 0, 0 index: -1 +unit-alpha-large + rotate: false + xy: 2203, 328 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-alpha-medium + rotate: false + xy: 2855, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-alpha-small + rotate: false + xy: 967, 12 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-alpha-tiny + rotate: false + xy: 1449, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-alpha-xlarge + rotate: false + xy: 2859, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-antumbra-large + rotate: false + xy: 2119, 202 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-antumbra-medium + rotate: false + xy: 2889, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-antumbra-small + rotate: false + xy: 993, 22 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-antumbra-tiny + rotate: false + xy: 1467, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-antumbra-xlarge + rotate: false + xy: 2909, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-arkyid-large + rotate: false + xy: 2161, 244 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-arkyid-medium + rotate: false + xy: 2923, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-arkyid-small + rotate: false + xy: 1071, 64 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-arkyid-tiny + rotate: false + xy: 1485, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-arkyid-xlarge + rotate: false + xy: 2959, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-atrax-large + rotate: false + xy: 2203, 286 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-atrax-medium + rotate: false + xy: 2957, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-atrax-small + rotate: false + xy: 1019, 22 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-atrax-tiny + rotate: false + xy: 1503, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-atrax-xlarge + rotate: false + xy: 3009, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-beta-large + rotate: false + xy: 2245, 328 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-beta-medium + rotate: false + xy: 2991, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-beta-small + rotate: false + xy: 1045, 27 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-beta-tiny + rotate: false + xy: 1521, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-beta-xlarge + rotate: false + xy: 3059, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-bryde-large + rotate: false + xy: 2161, 202 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-bryde-medium + rotate: false + xy: 3025, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-bryde-small + rotate: false + xy: 1071, 38 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-bryde-tiny + rotate: false + xy: 1539, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-bryde-xlarge + rotate: false + xy: 3109, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-crawler-large + rotate: false + xy: 2203, 244 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-crawler-medium + rotate: false + xy: 3059, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-crawler-small + rotate: false + xy: 1097, 64 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-crawler-tiny + rotate: false + xy: 1557, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-crawler-xlarge + rotate: false + xy: 3159, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-dagger-large + rotate: false + xy: 2245, 286 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-dagger-medium + rotate: false + xy: 3093, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-dagger-small + rotate: false + xy: 1097, 38 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-dagger-tiny + rotate: false + xy: 1575, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-dagger-xlarge + rotate: false + xy: 3209, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-eclipse-large + rotate: false + xy: 2287, 328 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-eclipse-medium + rotate: false + xy: 3127, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-eclipse-small + rotate: false + xy: 1123, 64 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-eclipse-tiny + rotate: false + xy: 1593, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-eclipse-xlarge + rotate: false + xy: 3259, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-flare-large + rotate: false + xy: 2203, 202 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-flare-medium + rotate: false + xy: 3161, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-flare-small + rotate: false + xy: 1123, 38 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-flare-tiny + rotate: false + xy: 1611, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-flare-xlarge + rotate: false + xy: 3309, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-fortress-large + rotate: false + xy: 2245, 244 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-fortress-medium + rotate: false + xy: 3195, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-fortress-small + rotate: false + xy: 1149, 64 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-fortress-tiny + rotate: false + xy: 1629, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-fortress-xlarge + rotate: false + xy: 3359, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-gamma-large + rotate: false + xy: 2287, 286 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-gamma-medium + rotate: false + xy: 3229, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-gamma-small + rotate: false + xy: 1149, 38 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-gamma-tiny + rotate: false + xy: 1647, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-gamma-xlarge + rotate: false + xy: 3409, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-horizon-large + rotate: false + xy: 2329, 328 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-horizon-medium + rotate: false + xy: 3263, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-horizon-small + rotate: false + xy: 1175, 64 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-horizon-tiny + rotate: false + xy: 1665, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-horizon-xlarge + rotate: false + xy: 3459, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-mace-large + rotate: false + xy: 2245, 202 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-mace-medium + rotate: false + xy: 3297, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-mace-small + rotate: false + xy: 1175, 38 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-mace-tiny + rotate: false + xy: 1683, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-mace-xlarge + rotate: false + xy: 3509, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-mega-large + rotate: false + xy: 2287, 244 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-mega-medium + rotate: false + xy: 3331, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-mega-small + rotate: false + xy: 1201, 64 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-mega-tiny + rotate: false + xy: 1701, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-mega-xlarge + rotate: false + xy: 3559, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-minke-large + rotate: false + xy: 2329, 286 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-minke-medium + rotate: false + xy: 3365, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-minke-small + rotate: false + xy: 1201, 38 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-minke-tiny + rotate: false + xy: 1719, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-minke-xlarge + rotate: false + xy: 3609, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-mono-large + rotate: false + xy: 2371, 328 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-mono-medium + rotate: false + xy: 3399, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-mono-small + rotate: false + xy: 1227, 64 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-mono-tiny + rotate: false + xy: 1737, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-mono-xlarge + rotate: false + xy: 3659, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-nova-large + rotate: false + xy: 2287, 202 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-nova-medium + rotate: false + xy: 3433, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-nova-small + rotate: false + xy: 1227, 38 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-nova-tiny + rotate: false + xy: 1755, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-nova-xlarge + rotate: false + xy: 3709, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-poly-large + rotate: false + xy: 2329, 244 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-poly-medium + rotate: false + xy: 3467, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-poly-small + rotate: false + xy: 1253, 64 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-poly-tiny + rotate: false + xy: 1773, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-poly-xlarge + rotate: false + xy: 3759, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-pulsar-large + rotate: false + xy: 2371, 286 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-pulsar-medium + rotate: false + xy: 3501, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-pulsar-small + rotate: false + xy: 1253, 38 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-pulsar-tiny + rotate: false + xy: 1791, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-pulsar-xlarge + rotate: false + xy: 3809, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-quasar-large + rotate: false + xy: 2413, 328 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-quasar-medium + rotate: false + xy: 3535, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-quasar-small + rotate: false + xy: 1279, 64 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-quasar-tiny + rotate: false + xy: 1809, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-quasar-xlarge + rotate: false + xy: 3859, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-risse-large + rotate: false + xy: 2329, 202 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-risse-medium + rotate: false + xy: 3569, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-risse-small + rotate: false + xy: 1279, 38 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-risse-tiny + rotate: false + xy: 1827, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-risse-xlarge + rotate: false + xy: 3909, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-spiroct-large + rotate: false + xy: 2371, 244 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-spiroct-medium + rotate: false + xy: 3603, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-spiroct-small + rotate: false + xy: 1305, 64 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-spiroct-tiny + rotate: false + xy: 1845, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-spiroct-xlarge + rotate: false + xy: 3959, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +unit-zenith-large + rotate: false + xy: 2413, 286 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +unit-zenith-medium + rotate: false + xy: 3637, 200 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +unit-zenith-small + rotate: false + xy: 1305, 38 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +unit-zenith-tiny + rotate: false + xy: 1863, 18 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +unit-zenith-xlarge + rotate: false + xy: 4009, 412 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 whiteui rotate: false - xy: 845, 363 + xy: 845, 365 size: 3, 3 orig: 3, 3 offset: 0, 0 index: -1 window-empty rotate: false - xy: 3272, 219 + xy: 915, 105 size: 27, 61 split: 4, 4, 2, 2 orig: 27, 61 diff --git a/core/assets/sprites/sprites.png b/core/assets/sprites/sprites.png index 6e4f65b559..ca0c55b20e 100644 Binary files a/core/assets/sprites/sprites.png and b/core/assets/sprites/sprites.png differ diff --git a/core/assets/sprites/sprites2.png b/core/assets/sprites/sprites2.png index 4ee730f636..92d12e2698 100644 Binary files a/core/assets/sprites/sprites2.png and b/core/assets/sprites/sprites2.png differ diff --git a/core/assets/sprites/sprites3.png b/core/assets/sprites/sprites3.png index 1eea132b68..0832279113 100644 Binary files a/core/assets/sprites/sprites3.png and b/core/assets/sprites/sprites3.png differ diff --git a/core/assets/sprites/sprites4.png b/core/assets/sprites/sprites4.png index e82d67c8c4..002a279138 100644 Binary files a/core/assets/sprites/sprites4.png and b/core/assets/sprites/sprites4.png differ diff --git a/core/assets/sprites/sprites5.png b/core/assets/sprites/sprites5.png index 4bb06f5214..c2488b7ee3 100644 Binary files a/core/assets/sprites/sprites5.png and b/core/assets/sprites/sprites5.png differ diff --git a/core/src/mindustry/Vars.java b/core/src/mindustry/Vars.java index 39691d48d6..34b4e99e8a 100644 --- a/core/src/mindustry/Vars.java +++ b/core/src/mindustry/Vars.java @@ -78,8 +78,10 @@ public class Vars implements Loadable{ public static final float miningRange = 70f; /** range for building */ public static final float buildingRange = 220f; - /** duration of one turn in ticks */ - public static final float turnDuration = 5 * Time.toMinutes; + /** duration of time between turns in ticks */ + public static final float turnDuration = 20 * Time.toMinutes; + /** turns needed to destroy a sector completely */ + public static final float sectorDestructionTurns = 3f; /** min armor fraction damage; e.g. 0.05 = at least 5% damage */ public static final float minArmorDamage = 0.05f; /** launch animation duration */ @@ -286,7 +288,13 @@ public class Vars implements Loadable{ if(!headless && (ui == null || ui.scriptfrag == null)){ logBuffer.add(result); }else if(!headless){ - ui.scriptfrag.addMessage(result); + if(!OS.isWindows){ + for(String code : ColorCodes.values){ + result = result.replace(code, ""); + } + } + + ui.scriptfrag.addMessage(Log.removeCodes(result)); } }); @@ -327,6 +335,7 @@ public class Vars implements Loadable{ settings.defaults("locale", "default", "blocksync", true); keybinds.setDefaults(Binding.values()); + settings.setAutosave(false); settings.load(); Scl.setProduct(settings.getInt("uiscale", 100) / 100f); diff --git a/core/src/mindustry/ai/BaseAI.java b/core/src/mindustry/ai/BaseAI.java index 88e224db76..df2fc26302 100644 --- a/core/src/mindustry/ai/BaseAI.java +++ b/core/src/mindustry/ai/BaseAI.java @@ -25,7 +25,7 @@ public class BaseAI{ private static final float step = 5; private static final int attempts = 5; private static final float emptyChance = 0.01f; - private final static int timerStep = 0, timerSpawn = 1; + private static final int timerStep = 0, timerSpawn = 1; private static int correct = 0, incorrect = 0; diff --git a/core/src/mindustry/ai/BaseRegistry.java b/core/src/mindustry/ai/BaseRegistry.java index da6a11a562..98e4744da0 100644 --- a/core/src/mindustry/ai/BaseRegistry.java +++ b/core/src/mindustry/ai/BaseRegistry.java @@ -62,7 +62,7 @@ public class BaseRegistry{ //calculate averages if(tile.block instanceof Drill || tile.block instanceof Pump){ - Tmp.v1.add(tile.x*tilesize + tile.block.offset(), tile.y*tilesize + tile.block.offset()); + Tmp.v1.add(tile.x*tilesize + tile.block.offset, tile.y*tilesize + tile.block.offset); drills ++; } } diff --git a/core/src/mindustry/ai/BlockIndexer.java b/core/src/mindustry/ai/BlockIndexer.java index 8f560a4072..5931068c48 100644 --- a/core/src/mindustry/ai/BlockIndexer.java +++ b/core/src/mindustry/ai/BlockIndexer.java @@ -6,7 +6,6 @@ import arc.math.*; import arc.math.geom.*; import arc.struct.EnumSet; import arc.struct.*; -import arc.util.*; import mindustry.content.*; import mindustry.game.EventType.*; import mindustry.game.*; @@ -23,7 +22,7 @@ import static mindustry.Vars.*; /** Class used for indexing special target blocks for AI. */ public class BlockIndexer{ /** Size of one quadrant. */ - private final static int quadrantSize = 16; + private static final int quadrantSize = 16; /** Set of all ores that are being scanned. */ private final ObjectSet scanOres = new ObjectSet<>(); @@ -34,7 +33,7 @@ public class BlockIndexer{ /** Maps each team ID to a quarant. A quadrant is a grid of bits, where each bit is set if and only if there is a block of that team in that quadrant. */ private GridBits[] structQuadrants; /** Stores all damaged tile entities by team. */ - private TileArray[] damagedTiles = new TileArray[Team.all.length]; + private BuildingArray[] damagedTiles = new BuildingArray[Team.all.length]; /** All ores available on this map. */ private ObjectSet allOres = new ObjectSet<>(); /** Stores teams that are present here as tiles. */ @@ -49,6 +48,8 @@ public class BlockIndexer{ private TileArray emptySet = new TileArray(); /** Array used for returning and reusing. */ private Seq returnArray = new Seq<>(); + /** Array used for returning and reusing. */ + private Seq breturnArray = new Seq<>(); public BlockIndexer(){ Events.on(BuildinghangeEvent.class, event -> { @@ -69,7 +70,7 @@ public class BlockIndexer{ Events.on(WorldLoadEvent.class, event -> { scanOres.clear(); scanOres.addAll(Item.getAllOres()); - damagedTiles = new TileArray[Team.all.length]; + damagedTiles = new BuildingArray[Team.all.length]; flagMap = new TileArray[Team.all.length][BlockFlag.all.length]; unitCaps = new int[Team.all.length]; @@ -111,11 +112,10 @@ public class BlockIndexer{ } private GridBits structQuadrant(Team t){ - int id = Pack.u(t.id); - if(structQuadrants[id] == null){ - structQuadrants[id] = new GridBits(Mathf.ceil(world.width() / (float)quadrantSize), Mathf.ceil(world.height() / (float)quadrantSize)); + if(structQuadrants[t.id] == null){ + structQuadrants[t.id] = new GridBits(Mathf.ceil(world.width() / (float)quadrantSize), Mathf.ceil(world.height() / (float)quadrantSize)); } - return structQuadrants[id]; + return structQuadrants[t.id]; } /** Updates all the structure quadrants for a newly activated team. */ @@ -138,21 +138,21 @@ public class BlockIndexer{ } /** Returns all damaged tiles by team. */ - public TileArray getDamaged(Team team){ + public BuildingArray getDamaged(Team team){ returnArray.clear(); if(damagedTiles[team.id] == null){ - damagedTiles[team.id] = new TileArray(); + damagedTiles[team.id] = new BuildingArray(); } - TileArray set = damagedTiles[team.id]; - for(Tile tile : set){ - if((tile.build == null || tile.build.team() != team || !tile.build.damaged()) || tile.block() instanceof BuildBlock){ - returnArray.add(tile); + BuildingArray set = damagedTiles[team.id]; + for(Building build : set){ + if((!build.isValid() || build.team != team || !build.damaged()) || build.block instanceof BuildBlock){ + breturnArray.add(build); } } - for(Tile tile : returnArray){ + for(Building tile : breturnArray){ set.remove(tile); } @@ -181,7 +181,7 @@ public class BlockIndexer{ for(int y = -tileRange + ty; y <= tileRange + ty; y++){ if(!Mathf.within(x * tilesize, y * tilesize, wx, wy, range)) continue; - Building other = world.ent(x, y); + Building other = world.build(x, y); if(other == null) continue; @@ -212,17 +212,15 @@ public class BlockIndexer{ } public void notifyTileDamaged(Building entity){ - if(damagedTiles[(int)entity.team().id] == null){ - damagedTiles[(int)entity.team().id] = new TileArray(); + if(damagedTiles[entity.team().id] == null){ + damagedTiles[entity.team().id] = new BuildingArray(); } - TileArray set = damagedTiles[(int)entity.team().id]; - set.add(entity.tile()); + damagedTiles[entity.team().id].add(entity); } public Building findEnemyTile(Team team, float x, float y, float range, Boolf pred){ - for(Team enemy : activeTeams){ - if(!team.isEnemy(enemy)) continue; + for(Team enemy : team.enemies()){ Building entity = indexer.findTile(enemy, x, y, range, pred, true); if(entity != null){ @@ -249,7 +247,7 @@ public class BlockIndexer{ for(int tx = rx * quadrantSize; tx < (rx + 1) * quadrantSize && tx < world.width(); tx++){ for(int ty = ry * quadrantSize; ty < (ry + 1) * quadrantSize && ty < world.height(); ty++){ - Building e = world.ent(tx, ty); + Building e = world.build(tx, ty); if(e == null) continue; @@ -390,7 +388,7 @@ public class BlockIndexer{ outer: for(int x = quadrantX * quadrantSize; x < world.width() && x < (quadrantX + 1) * quadrantSize; x++){ for(int y = quadrantY * quadrantSize; y < world.height() && y < (quadrantY + 1) * quadrantSize; y++){ - Building result = world.ent(x, y); + Building result = world.build(x, y); //when a targetable block is found, mark this quadrant as occupied and stop searching if(result != null && result.team() == team){ bits.set(quadrantX, quadrantY); @@ -474,4 +472,35 @@ public class BlockIndexer{ return tiles.iterator(); } } + + //TODO copy-pasted code, generics would be nice here + public static class BuildingArray implements Iterable{ + private Seq tiles = new Seq<>(false, 16); + private IntSet contained = new IntSet(); + + public void add(Building tile){ + if(contained.add(tile.pos())){ + tiles.add(tile); + } + } + + public void remove(Building tile){ + if(contained.remove(tile.pos())){ + tiles.remove(tile); + } + } + + public int size(){ + return tiles.size; + } + + public Building first(){ + return tiles.first(); + } + + @Override + public Iterator iterator(){ + return tiles.iterator(); + } + } } diff --git a/core/src/mindustry/ai/Pathfinder.java b/core/src/mindustry/ai/Pathfinder.java index c7c7ac00bf..222cc7df74 100644 --- a/core/src/mindustry/ai/Pathfinder.java +++ b/core/src/mindustry/ai/Pathfinder.java @@ -68,7 +68,7 @@ public class Pathfinder implements Runnable{ /** Packs a tile into its internal representation. */ private int packTile(Tile tile){ - return PathTile.get(tile.cost, tile.getTeamID(), !tile.solid() && tile.floor().drownTime <= 0f, !tile.solid() && tile.floor().isLiquid); + return PathTile.get(tile.cost, (byte)tile.getTeamID(), !tile.solid() && tile.floor().drownTime <= 0f, !tile.solid() && tile.floor().isLiquid); } /** Starts or restarts the pathfinding thread. */ @@ -86,11 +86,6 @@ public class Pathfinder implements Runnable{ queue.clear(); } - //public int debugValue(Team team, int x, int y){ - // if(pathMap[team.id][FlagTarget.enemyCores.ordinal()] == null) return 0; - // return pathMap[team.id][FlagTarget.enemyCores.ordinal()].weights[x][y]; - //} - /** Update a tile in the internal pathfinding grid. * Causes a complete pathfinding reclaculation. Main thread only. */ public void updateTile(Tile tile){ @@ -144,9 +139,9 @@ public class Pathfinder implements Runnable{ Core.app.post(() -> { //remove its used state - if(fieldMap[team.uid] != null){ - fieldMap[team.uid].remove(data.target); - fieldMapUsed[team.uid].remove(data.target); + if(fieldMap[team.id] != null){ + fieldMap[team.id].remove(data.target); + fieldMapUsed[team.id].remove(data.target); } //remove from main thread list mainList.remove(data); @@ -172,24 +167,24 @@ public class Pathfinder implements Runnable{ } } - public Tile getTargetTile(Tile tile, Team team, Position target){ + public @Nullable Tile getTargetTile(Tile tile, Team team, Position target){ return getTargetTile(tile, team, getTarget(target)); } /** Gets next tile to travel to. Main thread only. */ - public Tile getTargetTile(Tile tile, Team team, PathTarget target){ + public @Nullable Tile getTargetTile(Tile tile, Team team, PathTarget target){ if(tile == null) return null; - if(fieldMap[team.uid] == null){ - fieldMap[team.uid] = new ObjectMap<>(); - fieldMapUsed[team.uid] = new ObjectSet<>(); + if(fieldMap[team.id] == null){ + fieldMap[team.id] = new ObjectMap<>(); + fieldMapUsed[team.id] = new ObjectSet<>(); } - Flowfield data = fieldMap[team.uid].get(target); + Flowfield data = fieldMap[team.id].get(target); if(data == null){ //if this combination is not found, create it on request - if(fieldMapUsed[team.uid].add(target)){ + if(fieldMapUsed[team.id].add(target)){ //grab targets since this is run on main thread IntSeq targets = target.getPositions(team, new IntSeq()); queue.post(() -> createPath(team, target, targets)); @@ -311,8 +306,8 @@ public class Pathfinder implements Runnable{ //add to main thread's list of paths Core.app.post(() -> { mainList.add(path); - if(fieldMap[team.uid] != null){ - fieldMap[team.uid].put(target, path); + if(fieldMap[team.id] != null){ + fieldMap[team.id].put(target, path); } }); diff --git a/core/src/mindustry/ai/WaveSpawner.java b/core/src/mindustry/ai/WaveSpawner.java index 5ce4921baf..7f75b594af 100644 --- a/core/src/mindustry/ai/WaveSpawner.java +++ b/core/src/mindustry/ai/WaveSpawner.java @@ -88,7 +88,7 @@ public class WaveSpawner{ Building firstCore = state.teams.playerCores().first(); for(Building core : state.rules.waveTeam.cores()){ Tmp.v1.set(firstCore).sub(core).limit(coreMargin + core.block().size * tilesize); - cons.accept(core.x() + Tmp.v1.x, core.y() + Tmp.v1.y, false); + cons.accept(core.x + Tmp.v1.x, core.y + Tmp.v1.y, false); } } } @@ -105,7 +105,7 @@ public class WaveSpawner{ if(state.rules.attackMode && state.teams.isActive(state.rules.waveTeam)){ for(Building core : state.teams.get(state.rules.waveTeam).cores){ - cons.get(core.x(), core.y()); + cons.get(core.x, core.y); } } } diff --git a/core/src/mindustry/ai/types/BuilderAI.java b/core/src/mindustry/ai/types/BuilderAI.java index 68953a8d7b..a606592b26 100644 --- a/core/src/mindustry/ai/types/BuilderAI.java +++ b/core/src/mindustry/ai/types/BuilderAI.java @@ -69,7 +69,7 @@ public class BuilderAI extends AIController{ float length = circleLength <= 0.001f ? 1f : Mathf.clamp((unit.dst(target) - circleLength) / 100f, -1f, 1f); - vec.setLength(unit.type().speed * Time.delta() * length); + vec.setLength(unit.type().speed * Time.delta * length); if(length < -0.5f){ vec.rotate(180f); }else if(length < 0){ diff --git a/core/src/mindustry/ai/types/FlyingAI.java b/core/src/mindustry/ai/types/FlyingAI.java index a85a657fa3..e71de21f7e 100644 --- a/core/src/mindustry/ai/types/FlyingAI.java +++ b/core/src/mindustry/ai/types/FlyingAI.java @@ -61,7 +61,7 @@ public class FlyingAI extends AIController{ vec.rotate((circleLength - vec.len()) / circleLength * 180f); } - vec.setLength(speed * Time.delta()); + vec.setLength(speed * Time.delta); unit.moveAt(vec); } @@ -73,7 +73,7 @@ public class FlyingAI extends AIController{ float length = circleLength <= 0.001f ? 1f : Mathf.clamp((unit.dst(target) - circleLength) / 100f, -1f, 1f); - vec.setLength(unit.type().speed * Time.delta() * length); + vec.setLength(unit.type().speed * Time.delta * length); if(length < -0.5f){ vec.rotate(180f); }else if(length < 0){ @@ -95,7 +95,7 @@ public class FlyingAI extends AIController{ vec.setAngle(Mathf.slerpDelta(unit.vel().angle(), vec.angle(), 0.6f)); } - vec.setLength(unit.type().speed * Time.delta()); + vec.setLength(unit.type().speed * Time.delta); unit.moveAt(vec); } diff --git a/core/src/mindustry/ai/types/FormationAI.java b/core/src/mindustry/ai/types/FormationAI.java index 66ca6a9d21..884dc2150c 100644 --- a/core/src/mindustry/ai/types/FormationAI.java +++ b/core/src/mindustry/ai/types/FormationAI.java @@ -35,8 +35,10 @@ public class FormationAI extends AIController implements FormationMember{ if(leader.isShooting){ unit.aimLook(leader.aimX(), leader.aimY()); }else{ - if(!unit.moving()){ - unit.lookAt(unit.vel.angle()); + if(!leader.moving() || !unit.type().rotateShooting){ + if(unit.moving()){ + unit.lookAt(unit.vel.angle()); + } }else{ unit.lookAt(leader.rotation); } diff --git a/core/src/mindustry/async/TeamIndexProcess.java b/core/src/mindustry/async/TeamIndexProcess.java index b31ebcbe0b..c4dbede3a7 100644 --- a/core/src/mindustry/async/TeamIndexProcess.java +++ b/core/src/mindustry/async/TeamIndexProcess.java @@ -4,6 +4,7 @@ import arc.math.geom.*; import mindustry.*; import mindustry.game.*; import mindustry.gen.*; +import mindustry.type.*; import java.util.*; @@ -11,19 +12,40 @@ import java.util.*; public class TeamIndexProcess implements AsyncProcess{ private QuadTree[] trees = new QuadTree[Team.all.length]; private int[] counts = new int[Team.all.length]; + private int[][] typeCounts = new int[Team.all.length][0]; + private int[][] activeCounts = new int[Team.all.length][0]; public QuadTree tree(Team team){ - if(trees[team.uid] == null) trees[team.uid] = new QuadTree<>(Vars.world.getQuadBounds(new Rect())); + if(trees[team.id] == null) trees[team.id] = new QuadTree<>(Vars.world.getQuadBounds(new Rect())); - return trees[team.uid]; + return trees[team.id]; } public int count(Team team){ return counts[team.id]; } - public void updateCount(Team team, int amount){ + public int countType(Team team, UnitType type){ + return typeCounts[team.id].length <= type.id ? 0 : typeCounts[team.id][type.id]; + } + + public int countActive(Team team, UnitType type){ + return activeCounts[team.id].length <= type.id ? 0 : activeCounts[team.id][type.id]; + } + + public void updateCount(Team team, UnitType type, int amount){ counts[team.id] += amount; + if(typeCounts[team.id].length <= type.id){ + typeCounts[team.id] = new int[Vars.content.units().size]; + } + typeCounts[team.id][type.id] += amount; + } + + public void updateActiveCount(Team team, UnitType type, int amount){ + if(activeCounts[team.id].length <= type.id){ + activeCounts[team.id] = new int[Vars.content.units().size]; + } + activeCounts[team.id][type.id] += amount; } @Override @@ -36,16 +58,21 @@ public class TeamIndexProcess implements AsyncProcess{ public void begin(){ for(Team team : Team.all){ - if(trees[team.uid] != null){ - trees[team.uid].clear(); + if(trees[team.id] != null){ + trees[team.id].clear(); } + + Arrays.fill(typeCounts[team.id], 0); + Arrays.fill(activeCounts[team.id], 0); } Arrays.fill(counts, 0); for(Unit unit : Groups.unit){ tree(unit.team).insert(unit); - counts[unit.team.id] ++; + + updateCount(unit.team, unit.type(), 1); + if(!unit.deactivated) updateActiveCount(unit.team, unit.type(), 1); } } diff --git a/core/src/mindustry/audio/MusicControl.java b/core/src/mindustry/audio/MusicControl.java index c1bd7d0866..afb48a8d59 100644 --- a/core/src/mindustry/audio/MusicControl.java +++ b/core/src/mindustry/audio/MusicControl.java @@ -136,10 +136,10 @@ public class MusicControl{ silenced = false; }else if(current == music && music != null){ //fade in the playing track - fade = Mathf.clamp(fade + Time.delta()/finTime); + fade = Mathf.clamp(fade + Time.delta /finTime); }else if(current != null){ //fade out the current track - fade = Mathf.clamp(fade - Time.delta()/foutTime); + fade = Mathf.clamp(fade - Time.delta /foutTime); if(fade <= 0.01f){ //stop current track when it hits 0 volume diff --git a/core/src/mindustry/audio/SoundLoop.java b/core/src/mindustry/audio/SoundLoop.java index cfdf380753..99d6837251 100644 --- a/core/src/mindustry/audio/SoundLoop.java +++ b/core/src/mindustry/audio/SoundLoop.java @@ -27,9 +27,9 @@ public class SoundLoop{ }else{ //fade the sound in or out if(play){ - volume = Mathf.clamp(volume + fadeSpeed * Time.delta()); + volume = Mathf.clamp(volume + fadeSpeed * Time.delta); }else{ - volume = Mathf.clamp(volume - fadeSpeed * Time.delta()); + volume = Mathf.clamp(volume - fadeSpeed * Time.delta); if(volume <= 0.001f){ sound.stop(id); id = -1; diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index b127ed7407..8c9ba68f18 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -3,10 +3,7 @@ package mindustry.content; import arc.*; import arc.graphics.*; import arc.graphics.g2d.*; -import arc.math.*; -import arc.util.*; import mindustry.ctype.*; -import mindustry.entities.*; import mindustry.entities.bullet.*; import mindustry.gen.*; import mindustry.graphics.*; @@ -76,7 +73,7 @@ public class Blocks implements ContentList{ coreShard, coreFoundation, coreNucleus, vault, container, unloader, //turrets - duo, scatter, scorch, hail, arc, wave, lancer, swarmer, salvo, fuse, ripple, cyclone, spectre, meltdown, segment, + duo, scatter, scorch, hail, arc, wave, lancer, swarmer, salvo, fuse, ripple, cyclone, spectre, meltdown, segment, parallax, //units groundFactory, airFactory, navalFactory, @@ -228,6 +225,10 @@ public class Blocks implements ContentList{ attributes.set(Attribute.heat, 0.5f); attributes.set(Attribute.water, -0.2f); blendGroup = ignarock; + + emitLight = true; + lightRadius = 30f; + lightColor = Color.orange.cpy().a(0.15f); }}; magmarock = new Floor("magmarock"){{ @@ -235,6 +236,10 @@ public class Blocks implements ContentList{ attributes.set(Attribute.water, -0.5f); updateEffect = Fx.magmasmoke; blendGroup = ignarock; + + emitLight = true; + lightRadius = 60f; + lightColor = Color.orange.cpy().a(0.3f); }}; sand = new Floor("sand"){{ @@ -749,26 +754,30 @@ public class Blocks implements ContentList{ size = 2; }}; - phaseWall = new DeflectorWall("phase-wall"){{ + phaseWall = new Wall("phase-wall"){{ requirements(Category.defense, with(Items.phasefabric, 6)); health = 150 * wallHealthMultiplier; + flashWhite = deflect = true; }}; - phaseWallLarge = new DeflectorWall("phase-wall-large"){{ + phaseWallLarge = new Wall("phase-wall-large"){{ requirements(Category.defense, ItemStack.mult(phaseWall.requirements, 4)); health = 150 * 4 * wallHealthMultiplier; size = 2; + flashWhite = deflect = true; }}; - surgeWall = new SurgeWall("surge-wall"){{ + surgeWall = new Wall("surge-wall"){{ requirements(Category.defense, with(Items.surgealloy, 6)); health = 230 * wallHealthMultiplier; + lightningChance = 0.05f; }}; - surgeWallLarge = new SurgeWall("surge-wall-large"){{ + surgeWallLarge = new Wall("surge-wall-large"){{ requirements(Category.defense, ItemStack.mult(surgeWall.requirements, 4)); health = 230 * 4 * wallHealthMultiplier; size = 2; + lightningChance = 0.05f; }}; door = new Door("door"){{ @@ -861,8 +870,15 @@ public class Blocks implements ContentList{ forceProjector = new ForceProjector("force-projector"){{ requirements(Category.effect, with(Items.lead, 100, Items.titanium, 75, Items.silicon, 125)); size = 3; + phaseRadiusBoost = 80f; + radius = 101.7f; + breakage = 750f; + cooldownNormal = 1.5f; + cooldownLiquid = 1.2f; + cooldownBrokenBase = 0.35f; + consumes.item(Items.phasefabric).boost(); - consumes.power(3f); + consumes.power(4f); }}; shockMine = new ShockMine("shock-mine"){{ @@ -895,8 +911,9 @@ public class Blocks implements ContentList{ plastaniumConveyor = new StackConveyor("plastanium-conveyor"){{ requirements(Category.distribution, with(Items.plastanium, 1, Items.silicon, 1, Items.graphite, 1)); health = 75; - speed = 2.5f / 60f; - recharge = 2f; + speed = 3.5f / 60f; + itemCapacity = 10; + displayedSpeed = 30f; }}; armoredConveyor = new ArmoredConveyor("armored-conveyor"){{ @@ -988,17 +1005,17 @@ public class Blocks implements ContentList{ rotaryPump = new Pump("rotary-pump"){{ requirements(Category.liquid, with(Items.copper, 70, Items.metaglass, 50, Items.silicon, 20, Items.titanium, 35)); - pumpAmount = 0.8f; - consumes.power(0.15f); + pumpAmount = 0.2f; + consumes.power(0.3f); liquidCapacity = 30f; hasPower = true; size = 2; }}; thermalPump = new Pump("thermal-pump"){{ - requirements(Category.liquid, with(Items.copper, 80, Items.metaglass, 70, Items.silicon, 30, Items.titanium, 40, Items.thorium, 35)); - pumpAmount = 1.5f; - consumes.power(0.30f); + requirements(Category.liquid, with(Items.copper, 80, Items.metaglass, 90, Items.silicon, 30, Items.titanium, 40, Items.thorium, 35)); + pumpAmount = 0.22f; + consumes.power(1.3f); liquidCapacity = 40f; hasPower = true; size = 3; @@ -1115,14 +1132,14 @@ public class Blocks implements ContentList{ differentialGenerator = new SingleTypeGenerator("differential-generator"){{ requirements(Category.power, with(Items.copper, 70, Items.titanium, 50, Items.lead, 100, Items.silicon, 65, Items.metaglass, 50)); - powerProduction = 16f; - itemDuration = 140f; + powerProduction = 17f; + itemDuration = 200f; hasLiquids = true; hasItems = true; size = 3; consumes.item(Items.pyratite).optional(true, false); - consumes.liquid(Liquids.cryofluid, 0.15f); + consumes.liquid(Liquids.cryofluid, 0.14f); }}; rtgGenerator = new DecayGenerator("rtg-generator"){{ @@ -1212,6 +1229,9 @@ public class Blocks implements ContentList{ rotateSpeed = 6f; warmupSpeed = 0.01f; + //more than the laser drill + liquidBoostIntensity = 1.8f; + consumes.power(3f); consumes.liquid(Liquids.water, 0.1f).boost(); }}; @@ -1264,25 +1284,34 @@ public class Blocks implements ContentList{ requirements(Category.effect, BuildVisibility.hidden, with(Items.copper, 1000, Items.lead, 1000)); alwaysUnlocked = true; + unitType = UnitTypes.alpha; health = 1100; itemCapacity = 4000; size = 3; + + unitCapModifier = 8; }}; coreFoundation = new CoreBlock("core-foundation"){{ requirements(Category.effect, with(Items.copper, 3000, Items.lead, 3000, Items.silicon, 2000)); + unitType = UnitTypes.beta; health = 2000; itemCapacity = 9000; size = 4; + + unitCapModifier = 16; }}; coreNucleus = new CoreBlock("core-nucleus"){{ requirements(Category.effect, with(Items.copper, 1000, Items.lead, 1000)); + unitType = UnitTypes.gamma; health = 4000; itemCapacity = 13000; size = 5; + + unitCapModifier = 24; }}; vault = new StorageBlock("vault"){{ @@ -1335,7 +1364,7 @@ public class Blocks implements ContentList{ Items.metaglass, Bullets.flakGlass ); reloadTime = 18f; - range = 170f; + range = 160f; size = 2; burstSpacing = 5f; shots = 2; @@ -1357,8 +1386,8 @@ public class Blocks implements ContentList{ Items.pyratite, Bullets.pyraFlame ); recoilAmount = 0f; - reloadTime = 5f; - coolantMultiplier = 2f; + reloadTime = 6f; + coolantMultiplier = 1.5f; range = 60f; shootCone = 50f; targetAir = false; @@ -1392,7 +1421,6 @@ public class Blocks implements ContentList{ Liquids.cryofluid, Bullets.cryoShot, Liquids.oil, Bullets.oilShot ); - targetAir = false; size = 2; recoilAmount = 0f; reloadTime = 2f; @@ -1411,7 +1439,6 @@ public class Blocks implements ContentList{ chargeTime = 50f; chargeMaxDelay = 30f; chargeEffects = 7; - shootType = Bullets.lancerLaser; recoilAmount = 2f; reloadTime = 90f; cooldown = 0.03f; @@ -1426,11 +1453,24 @@ public class Blocks implements ContentList{ health = 280 * size * size; targetAir = false; shootSound = Sounds.laser; + + shootType = new LaserBulletType(140){{ + colors = new Color[]{Pal.lancerLaser.cpy().mul(1f, 1f, 1f, 0.4f), Pal.lancerLaser, Color.white}; + hitEffect = Fx.hitLancer; + despawnEffect = Fx.none; + hitSize = 4; + lifetime = 16f; + drawSize = 400f; + }}; }}; arc = new PowerTurret("arc"){{ requirements(Category.turret, with(Items.copper, 35, Items.lead, 50)); - shootType = Bullets.arc; + shootType = new LightningBulletType(){{ + damage = 21; + lightningLength = 25; + collidesAir = false; + }}; reloadTime = 35f; shootCone = 40f; rotatespeed = 8f; @@ -1504,42 +1544,11 @@ public class Blocks implements ContentList{ health = 220 * size * size; shootSound = Sounds.shotgun; - ammo(Items.thorium, new BulletType(0.01f, 105){ - int rays = 1; - float rayLength = range + 10f; - - { - hitEffect = Fx.hitLancer; - shootEffect = smokeEffect = Fx.lightningShoot; - lifetime = 10f; - despawnEffect = Fx.none; - ammoMultiplier = 6f; - pierce = true; - } - - @Override - public void init(Bullet b){ - for(int i = 0; i < rays; i++){ - Damage.collideLine(b, b.team(), hitEffect, b.x(), b.y(), b.rotation(), rayLength - Math.abs(i - (rays / 2)) * 20f); - } - } - - @Override - public void draw(Bullet b){ - super.draw(b); - Draw.color(Color.white, Pal.lancerLaser, b.fin()); - //Draw.alpha(b.fout()); - for(int i = 0; i < 7; i++){ - Tmp.v1.trns(b.rotation(), i * 8f); - float sl = Mathf.clamp(b.fout() - 0.5f) * (80f - i * 10); - Drawf.tri(b.x() + Tmp.v1.x, b.y() + Tmp.v1.y, 4f, sl, b.rotation() + 90); - Drawf.tri(b.x() + Tmp.v1.x, b.y() + Tmp.v1.y, 4f, sl, b.rotation() - 90); - } - Drawf.tri(b.x(), b.y(), 20f * b.fout(), (rayLength + 50), b.rotation()); - Drawf.tri(b.x(), b.y(), 20f * b.fout(), 10f, b.rotation() + 180f); - Draw.reset(); - } - }); + ammo(Items.thorium, new ShrapnelBulletType(){{ + length = range + 10f; + damage = 105f; + ammoMultiplier = 6f; + }}); }}; ripple = new ItemTurret("ripple"){{ @@ -1574,10 +1583,10 @@ public class Blocks implements ContentList{ cyclone = new ItemTurret("cyclone"){{ requirements(Category.turret, with(Items.copper, 200, Items.titanium, 125, Items.plastanium, 80)); ammo( - Items.metaglass, Bullets.flakGlass, - Items.blastCompound, Bullets.flakExplosive, - Items.plastanium, Bullets.flakPlastic, - Items.surgealloy, Bullets.flakSurge + Items.metaglass, Bullets.fragGlass, + Items.blastCompound, Bullets.fragExplosive, + Items.plastanium, Bullets.fragPlastic, + Items.surgealloy, Bullets.fragSurge ); xRand = 4f; reloadTime = 6f; @@ -1620,7 +1629,6 @@ public class Blocks implements ContentList{ meltdown = new LaserTurret("meltdown"){{ requirements(Category.turret, with(Items.copper, 250, Items.lead, 350, Items.graphite, 300, Items.surgealloy, 325, Items.silicon, 325)); - shootType = Bullets.meltdownLaser; shootEffect = Fx.shootBigSmoke2; shootCone = 40f; recoilAmount = 4f; @@ -1635,6 +1643,16 @@ public class Blocks implements ContentList{ activeSound = Sounds.beam; activeSoundVolume = 2f; + shootType = new ContinuousLaserBulletType(70){{ + length = 220f; + hitEffect = Fx.hitMeltdown; + drawSize = 420f; + + incendChance = 0.4f; + incendSpread = 5f; + incendAmount = 1; + }}; + health = 200 * size * size; consumes.add(new ConsumeLiquidFilter(liquid -> liquid.temperature <= 0.5f && liquid.flammability < 0.1f, 0.5f)).update(false); }}; @@ -1651,15 +1669,30 @@ public class Blocks implements ContentList{ health = 190 * size * size; }}; + parallax = new TractorBeamTurret("parallax"){{ + requirements(Category.turret, with(Items.silicon, 120, Items.titanium, 90)); + + hasPower = true; + size = 2; + force = 2.5f; + scaledForce = 5f; + range = 170f; + damage = 0.08f; + health = 160 * size * size; + rotateSpeed = 10; + + consumes.power(3f); + }}; + //endregion //region units groundFactory = new UnitFactory("ground-factory"){{ - requirements(Category.units, with(Items.copper, 30, Items.lead, 70)); + requirements(Category.units, with(Items.copper, 50, Items.lead, 120, Items.silicon, 80)); plans = new UnitPlan[]{ - new UnitPlan(UnitTypes.dagger, 200f, with(Items.silicon, 10, Items.lead, 10)), - new UnitPlan(UnitTypes.crawler, 200f, with(Items.silicon, 10, Items.blastCompound, 5)), - new UnitPlan(UnitTypes.tau, 200f, with(Items.silicon, 20, Items.lead, 10)), + new UnitPlan(UnitTypes.dagger, 60f * 20, with(Items.silicon, 10, Items.lead, 10)), + new UnitPlan(UnitTypes.crawler, 60f * 15, with(Items.silicon, 10, Items.blastCompound, 10)), + new UnitPlan(UnitTypes.nova, 60f * 40, with(Items.silicon, 30, Items.lead, 20, Items.titanium, 20)), }; size = 3; consumes.power(1.2f); @@ -1668,10 +1701,8 @@ public class Blocks implements ContentList{ airFactory = new UnitFactory("air-factory"){{ requirements(Category.units, with(Items.copper, 30, Items.lead, 70)); plans = new UnitPlan[]{ - new UnitPlan(UnitTypes.wraith, 200f, with(Items.silicon, 10)), - new UnitPlan(UnitTypes.spirit, 200f, with(Items.silicon, 10)), - new UnitPlan(UnitTypes.draug, 200f, with(Items.silicon, 10)), - new UnitPlan(UnitTypes.phantom, 200f, with(Items.silicon, 10)), + new UnitPlan(UnitTypes.flare, 60f * 15, with(Items.silicon, 10)), + new UnitPlan(UnitTypes.mono, 60f * 35, with(Items.silicon, 30, Items.lead, 15)), }; size = 3; consumes.power(1.2f); @@ -1680,7 +1711,7 @@ public class Blocks implements ContentList{ navalFactory = new UnitFactory("naval-factory"){{ requirements(Category.units, with(Items.copper, 30, Items.lead, 70)); plans = new UnitPlan[]{ - new UnitPlan(UnitTypes.vanguard, 200f, with(Items.silicon, 10)), + new UnitPlan(UnitTypes.risse, 60f * 30f, with(Items.silicon, 20, Items.metaglass, 25)), }; size = 3; requiresWater = true; @@ -1692,15 +1723,17 @@ public class Blocks implements ContentList{ size = 3; consumes.power(3f); - consumes.items(with(Items.silicon, 40, Items.graphite, 30)); + consumes.items(with(Items.silicon, 40, Items.graphite, 40)); - constructTime = 60f * 5f; + constructTime = 60f * 10f; upgrades = new UnitType[][]{ - {UnitTypes.tau, UnitTypes.oculon}, + {UnitTypes.nova, UnitTypes.quasar}, {UnitTypes.dagger, UnitTypes.mace}, - {UnitTypes.crawler, UnitTypes.eruptor}, - {UnitTypes.wraith, UnitTypes.ghoul}, + {UnitTypes.crawler, UnitTypes.atrax}, + {UnitTypes.flare, UnitTypes.horizon}, + {UnitTypes.mono, UnitTypes.poly}, + {UnitTypes.risse, UnitTypes.minke}, }; }}; @@ -1709,13 +1742,17 @@ public class Blocks implements ContentList{ size = 5; consumes.power(6f); - consumes.items(with(Items.silicon, 120, Items.titanium, 80)); + consumes.items(with(Items.silicon, 130, Items.titanium, 80, Items.metaglass, 30)); - constructTime = 60f * 15f; + constructTime = 60f * 30f; upgrades = new UnitType[][]{ - {UnitTypes.ghoul, UnitTypes.revenant}, + {UnitTypes.horizon, UnitTypes.zenith}, {UnitTypes.mace, UnitTypes.fortress}, + {UnitTypes.poly, UnitTypes.mega}, + {UnitTypes.minke, UnitTypes.bryde}, + {UnitTypes.quasar, UnitTypes.pulsar}, + {UnitTypes.atrax, UnitTypes.spiroct}, }; }}; @@ -1724,13 +1761,14 @@ public class Blocks implements ContentList{ size = 7; consumes.power(12f); - consumes.items(with(Items.silicon, 200, Items.titanium, 200, Items.surgealloy, 200)); + consumes.items(with(Items.silicon, 250, Items.titanium, 500, Items.plastanium, 400)); consumes.liquid(Liquids.cryofluid, 1f); - constructTime = 60f * 60f; + constructTime = 60f * 60f * 1.5f; + liquidCapacity = 60f; upgrades = new UnitType[][]{ - {UnitTypes.revenant, UnitTypes.lich}, + {UnitTypes.zenith, UnitTypes.antumbra}, }; }}; @@ -1739,13 +1777,14 @@ public class Blocks implements ContentList{ size = 9; consumes.power(25f); - consumes.items(with(Items.silicon, 300, Items.plastanium, 300, Items.surgealloy, 300, Items.phasefabric, 250)); + consumes.items(with(Items.silicon, 350, Items.plastanium, 450, Items.surgealloy, 400, Items.phasefabric, 150)); consumes.liquid(Liquids.cryofluid, 3f); - constructTime = 60f * 60f * 3; + constructTime = 60f * 60f * 4; + liquidCapacity = 180f; upgrades = new UnitType[][]{ - {UnitTypes.lich, UnitTypes.reaper}, + {UnitTypes.antumbra, UnitTypes.eclipse}, }; }}; @@ -1803,10 +1842,10 @@ public class Blocks implements ContentList{ }}; illuminator = new LightBlock("illuminator"){{ - requirements(Category.effect, BuildVisibility.lightingOnly, with(Items.graphite, 4, Items.silicon, 2)); + requirements(Category.effect, BuildVisibility.lightingOnly, with(Items.graphite, 12, Items.silicon, 8)); brightness = 0.67f; - radius = 120f; - consumes.power(0.05f); + radius = 140f; + consumes.power(0.06f); }}; //endregion @@ -1829,8 +1868,9 @@ public class Blocks implements ContentList{ consumes.power(4f); }}; + //TODO remove launchPadLarge = new LaunchPad("launch-pad-large"){{ - requirements(Category.effect, BuildVisibility.campaignOnly, with(Items.titanium, 200, Items.silicon, 150, Items.lead, 250, Items.plastanium, 75)); + //requirements(Category.effect, BuildVisibility.campaignOnly, with(Items.titanium, 200, Items.silicon, 150, Items.lead, 250, Items.plastanium, 75)); size = 4; itemCapacity = 300; launchTime = 60f * 35; @@ -1839,7 +1879,7 @@ public class Blocks implements ContentList{ }}; dataProcessor = new ResearchBlock("data-processor"){{ - requirements(Category.effect, BuildVisibility.campaignOnly, with(Items.copper, 200, Items.lead, 100)); + //requirements(Category.effect, BuildVisibility.campaignOnly, with(Items.copper, 200, Items.lead, 100)); size = 3; alwaysUnlocked = true; diff --git a/core/src/mindustry/content/Bullets.java b/core/src/mindustry/content/Bullets.java index 78af69229f..6a002dd42a 100644 --- a/core/src/mindustry/content/Bullets.java +++ b/core/src/mindustry/content/Bullets.java @@ -9,6 +9,7 @@ import mindustry.entities.*; import mindustry.entities.bullet.*; import mindustry.gen.*; import mindustry.graphics.*; +import mindustry.io.*; import mindustry.world.*; import static mindustry.Vars.*; @@ -20,23 +21,23 @@ public class Bullets implements ContentList{ artilleryDense, artilleryPlastic, artilleryPlasticFrag, artilleryHoming, artilleryIncendiary, artilleryExplosive, //flak - flakScrap, flakLead, flakPlastic, flakExplosive, flakSurge, flakGlass, glassFrag, + flakScrap, flakLead, flakGlass, flakGlassFrag, + + //frag (flak-like but hits ground) + fragGlass, fragExplosive, fragPlastic, fragSurge, fragGlassFrag, fragPlasticFrag, //missiles - missileExplosive, missileIncendiary, missileSurge, missileJavelin, missileSwarm, + missileExplosive, missileIncendiary, missileSurge, //standard standardCopper, standardDense, standardThorium, standardHoming, standardIncendiary, standardMechSmall, standardGlaive, standardDenseBig, standardThoriumBig, standardIncendiaryBig, - //electric - lancerLaser, meltdownLaser, arc, damageLightning, - //liquid waterShot, cryoShot, slagShot, oilShot, //environment, misc. - fireball, basicFlame, pyraFlame, driverBolt, healBullet, healBulletBig, frag, + damageLightning, damageLightningGround, fireball, basicFlame, pyraFlame, driverBolt, healBullet, healBulletBig, frag, //bombs bombExplosive, bombIncendiary, bombOil; @@ -47,7 +48,7 @@ public class Bullets implements ContentList{ artilleryDense = new ArtilleryBulletType(3f, 12, "shell"){{ hitEffect = Fx.flakExplosion; knockback = 0.8f; - lifetime = 50f; + lifetime = 80f; width = height = 11f; collidesTiles = false; splashDamageRadius = 25f; @@ -62,12 +63,13 @@ public class Bullets implements ContentList{ backColor = Pal.plastaniumBack; frontColor = Pal.plastaniumFront; despawnEffect = Fx.none; + collidesAir = false; }}; artilleryPlastic = new ArtilleryBulletType(3.4f, 12, "shell"){{ hitEffect = Fx.plasticExplosion; knockback = 1f; - lifetime = 55f; + lifetime = 80f; width = height = 13f; collidesTiles = false; splashDamageRadius = 35f; @@ -81,7 +83,7 @@ public class Bullets implements ContentList{ artilleryHoming = new ArtilleryBulletType(3f, 12, "shell"){{ hitEffect = Fx.flakExplosion; knockback = 0.8f; - lifetime = 45f; + lifetime = 80f; width = height = 11f; collidesTiles = false; splashDamageRadius = 25f; @@ -95,7 +97,7 @@ public class Bullets implements ContentList{ artilleryIncendiary = new ArtilleryBulletType(3f, 12, "shell"){{ hitEffect = Fx.blastExplosion; knockback = 0.8f; - lifetime = 60f; + lifetime = 80f; width = height = 13f; collidesTiles = false; splashDamageRadius = 25f; @@ -109,7 +111,7 @@ public class Bullets implements ContentList{ artilleryExplosive = new ArtilleryBulletType(2f, 12, "shell"){{ hitEffect = Fx.blastExplosion; knockback = 0.8f; - lifetime = 70f; + lifetime = 80f; width = height = 14f; collidesTiles = false; ammoMultiplier = 4f; @@ -122,7 +124,7 @@ public class Bullets implements ContentList{ statusDuration = 60f; }}; - glassFrag = new BasicBulletType(3f, 5, "bullet"){{ + flakGlassFrag = new BasicBulletType(3f, 5, "bullet"){{ width = 5f; height = 12f; shrinkY = 1f; @@ -130,6 +132,7 @@ public class Bullets implements ContentList{ backColor = Pal.gray; frontColor = Color.white; despawnEffect = Fx.none; + collidesGround = false; }}; flakLead = new FlakBulletType(4.2f, 3){{ @@ -165,37 +168,78 @@ public class Bullets implements ContentList{ hitEffect = Fx.flakExplosion; splashDamage = 20f; splashDamageRadius = 20f; - fragBullet = glassFrag; + fragBullet = flakGlassFrag; fragBullets = 5; }}; - flakPlastic = new FlakBulletType(4f, 6){{ - splashDamageRadius = 50f; + fragGlassFrag = new BasicBulletType(3f, 5, "bullet"){{ + width = 5f; + height = 12f; + shrinkY = 1f; + lifetime = 20f; + backColor = Pal.gray; + frontColor = Color.white; + despawnEffect = Fx.none; + }}; + + fragPlasticFrag = new BasicBulletType(2.5f, 10, "bullet"){{ + width = 10f; + height = 12f; + shrinkY = 1f; + lifetime = 15f; + backColor = Pal.plastaniumBack; + frontColor = Pal.plastaniumFront; + despawnEffect = Fx.none; + }}; + + fragGlass = new FlakBulletType(4f, 3){{ + lifetime = 70f; + ammoMultiplier = 5f; + shootEffect = Fx.shootSmall; + reloadMultiplier = 0.8f; + width = 6f; + height = 8f; + hitEffect = Fx.flakExplosion; + splashDamage = 18f; + splashDamageRadius = 16f; + fragBullet = flakGlassFrag; + fragBullets = 3; + explodeRange = 20f; + collidesGround = true; + }}; + + fragPlastic = new FlakBulletType(4f, 6){{ + splashDamageRadius = 40f; splashDamage = 25f; - fragBullet = artilleryPlasticFrag; - fragBullets = 6; + fragBullet = fragPlasticFrag; + fragBullets = 5; hitEffect = Fx.plasticExplosion; frontColor = Pal.plastaniumFront; backColor = Pal.plastaniumBack; shootEffect = Fx.shootBig; + collidesGround = true; + explodeRange = 20f; }}; - flakExplosive = new FlakBulletType(4f, 5){{ + fragExplosive = new FlakBulletType(4f, 5){{ shootEffect = Fx.shootBig; ammoMultiplier = 4f; splashDamage = 15f; splashDamageRadius = 34f; + collidesGround = true; status = StatusEffects.blasted; statusDuration = 60f; }}; - flakSurge = new FlakBulletType(4.5f, 13){{ + fragSurge = new FlakBulletType(4.5f, 13){{ splashDamage = 45f; splashDamageRadius = 40f; lightning = 2; lightningLength = 7; shootEffect = Fx.shootBig; + collidesGround = true; + explodeRange = 20f; }}; missileExplosive = new MissileBulletType(2.7f, 10, "missile"){{ @@ -243,43 +287,6 @@ public class Bullets implements ContentList{ lightningLength = 14; }}; - missileJavelin = new MissileBulletType(5f, 10.5f, "missile"){{ - width = 8f; - height = 8f; - shrinkY = 0f; - drag = -0.003f; - keepVelocity = false; - splashDamageRadius = 20f; - splashDamage = 1f; - lifetime = 90f; - trailColor = Color.valueOf("b6c6fd"); - hitEffect = Fx.blastExplosion; - despawnEffect = Fx.blastExplosion; - backColor = Pal.bulletYellowBack; - frontColor = Pal.bulletYellow; - weaveScale = 8f; - weaveMag = 2f; - }}; - - missileSwarm = new MissileBulletType(2.7f, 12, "missile"){{ - width = 8f; - height = 8f; - shrinkY = 0f; - drag = -0.003f; - homingRange = 60f; - keepVelocity = false; - splashDamageRadius = 25f; - splashDamage = 10f; - lifetime = 120f; - trailColor = Color.gray; - backColor = Pal.bulletYellowBack; - frontColor = Pal.bulletYellow; - hitEffect = Fx.blastExplosion; - despawnEffect = Fx.blastExplosion; - weaveScale = 8f; - weaveMag = 2f; - }}; - standardCopper = new BasicBulletType(2.5f, 9, "bullet"){{ width = 7f; height = 9f; @@ -372,6 +379,12 @@ public class Bullets implements ContentList{ hittable = false; }}; + //this is just a copy of the damage lightning bullet that doesn't damage air units + damageLightningGround = new BulletType(0.0001f, 0f){{ + collidesAir = false; + }}; + JsonIO.copy(damageLightning, damageLightningGround); + healBullet = new HealBulletType(5.2f, 13){{ healPercent = 3f; }}; @@ -391,36 +404,36 @@ public class Bullets implements ContentList{ @Override public void init(Bullet b){ - b.vel().setLength(0.6f + Mathf.random(2f)); + b.vel.setLength(0.6f + Mathf.random(2f)); } @Override public void draw(Bullet b){ Draw.color(Pal.lightFlame, Pal.darkFlame, Color.gray, b.fin()); - Fill.circle(b.x(), b.y(), 3f * b.fout()); + Fill.circle(b.x, b.y, 3f * b.fout()); Draw.reset(); } @Override public void update(Bullet b){ - if(Mathf.chance(0.04 * Time.delta())){ - Tile tile = world.tileWorld(b.x(), b.y()); + if(Mathf.chance(0.04 * Time.delta)){ + Tile tile = world.tileWorld(b.x, b.y); if(tile != null){ Fires.create(tile); } } - if(Mathf.chance(0.1 * Time.delta())){ - Fx.fireballsmoke.at(b.x(), b.y()); + if(Mathf.chance(0.1 * Time.delta)){ + Fx.fireballsmoke.at(b.x, b.y); } - if(Mathf.chance(0.1 * Time.delta())){ - Fx.ballfire.at(b.x(), b.y()); + if(Mathf.chance(0.1 * Time.delta)){ + Fx.ballfire.at(b.x, b.y); } } }; - basicFlame = new BulletType(3f, 30f){ + basicFlame = new BulletType(3f, 15f){ { ammoMultiplier = 3f; hitSize = 7f; @@ -440,49 +453,20 @@ public class Bullets implements ContentList{ public float range(){ return 50f; } - - @Override - public void draw(Bullet b){ - } }; - pyraFlame = new BulletType(3.3f, 45f){ - { - ammoMultiplier = 4f; - hitSize = 7f; - lifetime = 42f; - pierce = true; - drag = 0.05f; - statusDuration = 60f * 6; - shootEffect = Fx.shootPyraFlame; - hitEffect = Fx.hitFlameSmall; - despawnEffect = Fx.none; - status = StatusEffects.burning; - hittable = false; - } - - @Override - public void draw(Bullet b){ - } - }; - - lancerLaser = new LaserBulletType(140){{ - colors = new Color[]{Pal.lancerLaser.cpy().mul(1f, 1f, 1f, 0.4f), Pal.lancerLaser, Color.white}; - hitEffect = Fx.hitLancer; + pyraFlame = new BulletType(3.3f, 22f){{ + ammoMultiplier = 4f; + hitSize = 7f; + lifetime = 42f; + pierce = true; + drag = 0.05f; + statusDuration = 60f * 6; + shootEffect = Fx.shootPyraFlame; + hitEffect = Fx.hitFlameSmall; despawnEffect = Fx.none; - hitSize = 4; - lifetime = 16f; - drawSize = 400f; - }}; - - meltdownLaser = new ContinuousLaserBulletType(70){{ - length = 220f; - hitEffect = Fx.hitMeltdown; - drawSize = 420f; - - incendChance = 0.4f; - incendSpread = 5f; - incendAmount = 1; + status = StatusEffects.burning; + hittable = false; }}; waterShot = new LiquidBulletType(Liquids.water){{ @@ -502,11 +486,6 @@ public class Bullets implements ContentList{ drag = 0.03f; }}; - arc = new LightningBulletType(){{ - damage = 21; - lightningLength = 25; - }}; - driverBolt = new MassDriverBolt(); frag = new BasicBulletType(5f, 8, "bullet"){{ diff --git a/core/src/mindustry/content/Fx.java b/core/src/mindustry/content/Fx.java index e813220290..6cbcc79268 100644 --- a/core/src/mindustry/content/Fx.java +++ b/core/src/mindustry/content/Fx.java @@ -38,6 +38,14 @@ public class Fx{ }), + unitCapKill = new Effect(80f, e -> { + color(Color.scarlet); + alpha(e.fout(Interp.pow4Out)); + + float size = 10f + e.fout(Interp.pow10In) * 25f; + Draw.rect(Icon.warning.getRegion(), e.x, e.y, size, size); + }), + unitControl = new Effect(30f, e -> { if(!(e.data instanceof Unit)) return; @@ -183,6 +191,27 @@ public class Fx{ Fill.circle(e.x, e.y, (7f - e.fin() * 7f)/2f); }), + fallSmoke = new Effect(110, e -> { + color(Color.gray, Color.darkGray, e.rotation); + Fill.circle(e.x, e.y, e.fout() * 3.5f); + }), + + unitWreck = new Effect(200f, e -> { + if(!(e.data instanceof TextureRegion)) return; + + Draw.mixcol(Pal.rubble, 1f); + + TextureRegion reg = e.data(); + float vel = e.fin(Interp.pow5Out) * 2f * Mathf.randomSeed(e.id, 1f); + float totalRot = Mathf.randomSeed(e.id + 1, 10f); + Tmp.v1.trns(Mathf.randomSeed(e.id + 2, 360f), vel); + + Draw.z(Mathf.lerp(Layer.flyingUnitLow, Layer.debris, e.fin())); + Draw.alpha(e.fout(Interp.pow5Out)); + + Draw.rect(reg, e.x + Tmp.v1.x, e.y + Tmp.v1.y, e.rotation - 90 + totalRot * e.fin(Interp.pow5Out)); + }), + rocketSmoke = new Effect(120, e -> { color(Color.gray); alpha(Mathf.clamp(e.fout()*1.6f - Interp.pow3In.apply(e.rotation)*1.2f)); @@ -270,6 +299,18 @@ public class Fx{ Lines.circle(e.x, e.y, 2f + e.finpow() * 7f); }), + shieldWave = new Effect(22, e -> { + color(Pal.shield); + stroke(e.fout() * 2f); + Lines.circle(e.x, e.y, 4f + e.finpow() * 60f); + }), + + shieldApply = new Effect(11, e -> { + color(Pal.shield); + stroke(e.fout() * 2f); + Lines.circle(e.x, e.y, 2f + e.finpow() * 7f); + }), + hitBulletSmall = new Effect(14, e -> { color(Color.white, Pal.lightOrange, e.fin()); @@ -471,6 +512,29 @@ public class Fx{ }), + massiveExplosion = new Effect(30, e -> { + + color(Pal.missileYellow); + e.scaled(7, i -> { + stroke(3f * i.fout()); + Lines.circle(e.x, e.y, 4f + i.fin() * 30f); + }); + + color(Color.gray); + + randLenVectors(e.id, 8, 2f + 30f * e.finpow(), (x, y) -> { + Fill.circle(e.x + x, e.y + y, e.fout() * 4f + 0.5f); + }); + + color(Pal.missileYellowBack); + stroke(1f * e.fout()); + + randLenVectors(e.id + 1, 6, 1f + 29f * e.finpow(), (x, y) -> { + lineAngle(e.x + x, e.y + y, Mathf.angle(x, y), 1f + e.fout() * 4f); + }); + + }), + artilleryTrail = new Effect(50, e -> { color(e.color); Fill.circle(e.x, e.y, e.rotation * e.fout()); @@ -599,6 +663,15 @@ public class Fx{ }), + sapped = new Effect(40f, e -> { + color(Pal.sap); + + randLenVectors(e.id, 2, 1f + e.fin() * 2f, (x, y) -> { + Fill.square(e.x + x, e.y + y, e.fslope() * 1.1f, 45f); + }); + + }), + oily = new Effect(42f, e -> { color(Liquids.oil.color); @@ -617,6 +690,12 @@ public class Fx{ }), + overclocked = new Effect(50f, e -> { + color(Pal.accent); + + Fill.square(e.x, e.y, e.fslope() * 2f, 45f); + }), + dropItem = new Effect(20f, e -> { float length = 20f * e.finpow(); float size = 7f * e.fout(); @@ -1254,9 +1333,9 @@ public class Fx{ }), shieldBreak = new Effect(40, e -> { - color(Pal.accent); + color(e.color); stroke(3f * e.fout()); - Lines.poly(e.x, e.y, 6, e.rotation + e.fin(), 90); + Lines.poly(e.x, e.y, 6, e.rotation + e.fin()); }), unitShieldBreak = new Effect(35, e -> { diff --git a/core/src/mindustry/content/Items.java b/core/src/mindustry/content/Items.java index 1aea6e89c1..a671f25b57 100644 --- a/core/src/mindustry/content/Items.java +++ b/core/src/mindustry/content/Items.java @@ -1,9 +1,8 @@ package mindustry.content; -import arc.graphics.Color; -import mindustry.ctype.ContentList; -import mindustry.type.Item; -import mindustry.type.ItemType; +import arc.graphics.*; +import mindustry.ctype.*; +import mindustry.type.*; public class Items implements ContentList{ public static Item scrap, copper, lead, graphite, coal, titanium, thorium, silicon, plastanium, phasefabric, surgealloy, @@ -12,26 +11,22 @@ public class Items implements ContentList{ @Override public void load(){ copper = new Item("copper", Color.valueOf("d99d73")){{ - type = ItemType.material; hardness = 1; cost = 0.5f; alwaysUnlocked = true; }}; lead = new Item("lead", Color.valueOf("8c7fa9")){{ - type = ItemType.material; hardness = 1; cost = 0.7f; alwaysUnlocked = true; }}; metaglass = new Item("metaglass", Color.valueOf("ebeef5")){{ - type = ItemType.material; cost = 1.5f; }}; graphite = new Item("graphite", Color.valueOf("b2c6d2")){{ - type = ItemType.material; cost = 1f; }}; @@ -46,13 +41,11 @@ public class Items implements ContentList{ }}; titanium = new Item("titanium", Color.valueOf("8da1e3")){{ - type = ItemType.material; hardness = 3; cost = 1f; }}; thorium = new Item("thorium", Color.valueOf("f9a3c7")){{ - type = ItemType.material; explosiveness = 0.2f; hardness = 4; radioactivity = 1f; @@ -64,25 +57,21 @@ public class Items implements ContentList{ }}; silicon = new Item("silicon", Color.valueOf("53565c")){{ - type = ItemType.material; cost = 0.8f; }}; plastanium = new Item("plastanium", Color.valueOf("cbd97f")){{ - type = ItemType.material; flammability = 0.1f; explosiveness = 0.2f; cost = 1.3f; }}; phasefabric = new Item("phase-fabric", Color.valueOf("f4ba6e")){{ - type = ItemType.material; cost = 1.3f; radioactivity = 0.6f; }}; surgealloy = new Item("surge-alloy", Color.valueOf("f3e979")){{ - type = ItemType.material; }}; sporePod = new Item("spore-pod", Color.valueOf("7457ce")){{ @@ -95,7 +84,7 @@ public class Items implements ContentList{ }}; pyratite = new Item("pyratite", Color.valueOf("ffaa5f")){{ - flammability = 1.4f; + flammability = 1.5f; explosiveness = 0.4f; }}; } diff --git a/core/src/mindustry/content/StatusEffects.java b/core/src/mindustry/content/StatusEffects.java index 173a8bd6fc..8f2c4bae71 100644 --- a/core/src/mindustry/content/StatusEffects.java +++ b/core/src/mindustry/content/StatusEffects.java @@ -9,7 +9,7 @@ import mindustry.type.StatusEffect; import static mindustry.Vars.*; public class StatusEffects implements ContentList{ - public static StatusEffect none, burning, freezing, wet, melting, tarred, overdrive, shielded, shocked, blasted, corroded, boss; + public static StatusEffect none, burning, freezing, wet, melting, sapped, tarred, overdrive, overclock, shielded, shocked, blasted, corroded, boss; @Override public void load(){ @@ -17,7 +17,7 @@ public class StatusEffects implements ContentList{ none = new StatusEffect("none"); burning = new StatusEffect("burning"){{ - damage = 0.075f; + damage = 0.08f; //over 10 seconds, this would be 48 damage effect = Fx.burning; init(() -> { @@ -74,6 +74,13 @@ public class StatusEffects implements ContentList{ }); }}; + sapped = new StatusEffect("sapped"){{ + speedMultiplier = 0.7f; + armorMultiplier = 0.8f; + effect = Fx.sapped; + effectChance = 0.1f; + }}; + tarred = new StatusEffect("tarred"){{ speedMultiplier = 0.6f; effect = Fx.oily; @@ -93,6 +100,14 @@ public class StatusEffects implements ContentList{ permanent = true; }}; + overclock = new StatusEffect("overclock"){{ + speedMultiplier = 1.15f; + damageMultiplier = 1.15f; + reloadMultiplier = 1.25f; + effectChance = 0.07f; + effect = Fx.overclocked; + }}; + shielded = new StatusEffect("shielded"){{ armorMultiplier = 3f; }}; diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index dca93f7822..7812d01714 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -1,76 +1,69 @@ package mindustry.content; import arc.graphics.*; -import arc.math.*; import arc.struct.*; import mindustry.ai.types.*; import mindustry.annotations.Annotations.*; import mindustry.ctype.*; +import mindustry.entities.abilities.*; import mindustry.entities.bullet.*; import mindustry.gen.*; import mindustry.graphics.*; import mindustry.type.*; public class UnitTypes implements ContentList{ + //region definitions //ground - public static @EntityDef({Unitc.class, Mechc.class}) UnitType mace, dagger, crawler, fortress, chaosArray, eradicator; + public static @EntityDef({Unitc.class, Mechc.class}) UnitType mace, dagger, crawler, fortress, vestige, cataclyst; //ground + builder - public static @EntityDef({Unitc.class, Mechc.class, Builderc.class}) UnitType tau; + public static @EntityDef({Unitc.class, Mechc.class, Builderc.class}) UnitType nova; //ground + builder + miner + commander - public static @EntityDef({Unitc.class, Mechc.class, Builderc.class, Minerc.class, Commanderc.class}) UnitType oculon; + public static @EntityDef({Unitc.class, Mechc.class, Builderc.class, Minerc.class, Commanderc.class}) UnitType pulsar, quasar; //legs - public static @EntityDef({Unitc.class, Legsc.class}) UnitType cix, eruptor; + public static @EntityDef({Unitc.class, Legsc.class}) UnitType atrax; - //air - public static @EntityDef({Unitc.class}) UnitType wraith, reaper, ghoul, revenant, lich; + //legs + building + public static @EntityDef({Unitc.class, Legsc.class, Builderc.class}) UnitType spiroct, arkyid; + + //air (no special traits) + public static @EntityDef({Unitc.class}) UnitType flare, eclipse, horizon, zenith, antumbra; //air + mining - public static @EntityDef({Unitc.class, Minerc.class}) UnitType draug; - - //air + building - public static @EntityDef({Unitc.class, Builderc.class}) UnitType phantom, spirit; + public static @EntityDef({Unitc.class, Minerc.class}) UnitType mono; //air + building + mining - //TODO implement other starter drones - public static @EntityDef({Unitc.class, Builderc.class, Minerc.class, Trailc.class}) UnitType alpha, beta, gamma; + public static @EntityDef({Unitc.class, Builderc.class, Minerc.class}) UnitType poly; //air + building + mining + payload - public static @EntityDef({Unitc.class, Builderc.class, Minerc.class, Payloadc.class}) UnitType trident; + public static @EntityDef({Unitc.class, Builderc.class, Minerc.class, Payloadc.class}) UnitType mega; + + //air + building + mining + public static @EntityDef({Unitc.class, Builderc.class, Minerc.class, Trailc.class}) UnitType alpha, beta, gamma; //water - public static @EntityDef({Unitc.class, WaterMovec.class, Commanderc.class}) UnitType vanguard; + public static @EntityDef({Unitc.class, WaterMovec.class, Commanderc.class}) UnitType risse, minke, bryde; //special block unit type public static @EntityDef({Unitc.class, BlockUnitc.class}) UnitType block; + //endregion + @Override public void load(){ - block = new UnitType("block"){ - { - speed = 0f; - hitsize = 0f; - health = 1; - rotateSpeed = 360f; - } - - @Override - public boolean isHidden(){ - return true; - } - }; + //region ground attack dagger = new UnitType("dagger"){{ speed = 0.5f; hitsize = 8f; - health = 130; + health = 140; weapons.add(new Weapon("large-weapon"){{ reload = 14f; x = 4f; - alternate = true; + y = 2f; ejectEffect = Fx.shellEjectSmall; bullet = Bullets.standardCopper; }}); @@ -80,7 +73,8 @@ public class UnitTypes implements ContentList{ speed = 0.4f; hitsize = 9f; range = 10f; - health = 460; + health = 500; + armor = 3f; immunities.add(StatusEffects.burning); @@ -88,92 +82,21 @@ public class UnitTypes implements ContentList{ shootSound = Sounds.flame; shootY = 2f; reload = 14f; - alternate = true; recoil = 1f; ejectEffect = Fx.none; - bullet = Bullets.basicFlame; - }}); - }}; - - tau = new UnitType("tau"){{ - itemCapacity = 60; - canBoost = true; - boostMultiplier = 1.5f; - speed = 0.5f; - hitsize = 8f; - health = 100f; - buildSpeed = 0.8f; - - weapons.add(new Weapon("heal-weapon"){{ - shootY = 1.5f; - reload = 24f; - x = 1f; - shootX = 3.5f; - alternate = false; - ejectEffect = Fx.none; - recoil = 2f; - bullet = Bullets.healBullet; - shootSound = Sounds.pew; - }}); - } - - /* - - float healRange = 60f; - float healAmount = 10f; - float healReload = 160f; - boolean wasHealed; - - @Override - public void update(Unitc player){ - - if(player.timer().get(Player.timerAbility, healReload)){ - wasHealed = false; - - Units.nearby(player.team(), player.x, player.y, healRange, unit -> { - if(unit.health < unit.maxHealth()){ - Fx.heal.at(unit); - wasHealed = true; - } - unit.heal(healAmount); - }); - - if(wasHealed){ - Fx.healWave.at(player); - } - } - }*/ - }; - - oculon = new UnitType("oculon"){{ - drillTier = 1; - hitsize = 9f; - boostMultiplier = 2f; - itemCapacity = 20; - health = 230f; - buildSpeed = 1.5f; - canBoost = true; - - speed = 0.4f; - hitsize = 10f; - - weapons.add(new Weapon("beam-weapon"){{ - shake = 2f; - shootY = 4f; - shootX = 6f; - x = 0.25f; - reload = 50f; - alternate = true; - recoil = 4f; - shootSound = Sounds.laser; - - bullet = new LaserBulletType(){{ - damage = 20f; - recoil = 1f; - sideAngle = 45f; - sideWidth = 1f; - sideLength = 70f; - colors = new Color[]{Pal.heal.cpy().a(0.4f), Pal.heal, Color.white}; + bullet = new BulletType(3f, 30f){{ + ammoMultiplier = 3f; + hitSize = 7f; + lifetime = 42f; + pierce = true; + drag = 0.05f; + statusDuration = 60f * 4; + shootEffect = Fx.shootSmallFlame; + hitEffect = Fx.hitFlameSmall; + despawnEffect = Fx.none; + status = StatusEffects.burning; + keepVelocity = false; + hittable = false; }}; }}); }}; @@ -183,12 +106,13 @@ public class UnitTypes implements ContentList{ hitsize = 13f; rotateSpeed = 3f; targetAir = false; - health = 750; + health = 790; + armor = 8f; + weapons.add(new Weapon("artillery"){{ y = 1f; x = 9f; reload = 60f; - alternate = true; recoil = 4f; shake = 2f; ejectEffect = Fx.shellEjectMedium; @@ -200,7 +124,7 @@ public class UnitTypes implements ContentList{ width = height = 14f; collides = true; collidesTiles = true; - splashDamageRadius = 20f; + splashDamageRadius = 24f; splashDamage = 38f; backColor = Pal.bulletYellowBack; frontColor = Pal.bulletYellow; @@ -208,12 +132,123 @@ public class UnitTypes implements ContentList{ }}); }}; + //endregion + //region ground support + + nova = new UnitType("nova"){{ + itemCapacity = 60; + canBoost = true; + boostMultiplier = 1.5f; + speed = 0.52f; + hitsize = 8f; + health = 110f; + buildSpeed = 0.8f; + armor = 1f; + + abilities.add(new HealFieldAbility(10f, 60f * 4, 60f)); + + weapons.add(new Weapon("heal-weapon"){{ + shootY = 2f; + reload = 24f; + x = 4.5f; + alternate = false; + ejectEffect = Fx.none; + recoil = 2f; + bullet = Bullets.healBullet; + shootSound = Sounds.pew; + }}); + }}; + + pulsar = new UnitType("pulsar"){{ + itemCapacity = 60; + canBoost = true; + boostMultiplier = 1.5f; + speed = 0.48f; + hitsize = 10f; + health = 300f; + buildSpeed = 0.9f; + armor = 4f; + + mineTier = 2; + mineSpeed = 5f; + commandLimit = 8; + + abilities.add(new ShieldFieldAbility(15f, 30f, 60f * 5, 60f)); + + weapons.add(new Weapon("heal-shotgun-weapon"){{ + x = 5f; + shake = 2.2f; + y = 0.5f; + shootY = 5f; + + shootY = 2.5f; + reload = 38f; + shots = 3; + inaccuracy = 35; + shotDelay = 0.5f; + spacing = 0f; + ejectEffect = Fx.none; + recoil = 2.5f; + shootSound = Sounds.pew; + + bullet = new LightningBulletType(){{ + lightningColor = hitColor = Pal.heal; + damage = 11f; + lightningLength = 7; + lightningLengthRand = 7; + shootEffect = Fx.shootHeal; + }}; + }}); + }}; + + quasar = new UnitType("quasar"){{ + mineTier = 1; + hitsize = 12f; + boostMultiplier = 2f; + itemCapacity = 80; + health = 640f; + buildSpeed = 1.7f; + canBoost = true; + armor = 9f; + landShake = 2f; + + speed = 0.4f; + hitsize = 10f; + + mineTier = 2; + mineSpeed = 7f; + drawShields = false; + + abilities.add(new ForceFieldAbility(60f, 0.12f, 200f, 60f * 8)); + + weapons.add(new Weapon("beam-weapon"){{ + shake = 2f; + shootY = 4f; + x = 6.5f; + reload = 50f; + recoil = 4f; + shootSound = Sounds.laser; + + bullet = new LaserBulletType(){{ + damage = 27f; + recoil = 1f; + sideAngle = 45f; + sideWidth = 1f; + sideLength = 70f; + colors = new Color[]{Pal.heal.cpy().a(0.4f), Pal.heal, Color.white}; + }}; + }}); + }}; + + //endregion + //region ground legs + crawler = new UnitType("crawler"){{ defaultController = SuicideAI::new; - speed = 0.8f; + speed = 0.85f; hitsize = 8f; - health = 140; + health = 170; sway = 0.25f; range = 40f; @@ -228,15 +263,15 @@ public class UnitTypes implements ContentList{ speed = 1f; splashDamageRadius = 55f; instantDisappear = true; - splashDamage = 30f; + splashDamage = 40f; killShooter = true; hittable = false; }}; }}); }}; - eruptor = new UnitType("eruptor"){{ - speed = 0.4f; + atrax = new UnitType("atrax"){{ + speed = 0.5f; drag = 0.4f; hitsize = 10f; rotateSpeed = 3f; @@ -247,11 +282,16 @@ public class UnitTypes implements ContentList{ legLength = 9f; legTrns = 0.6f; legMoveSpace = 1.4f; + hovering = true; + armor = 3f; + + allowLegStep = true; + visualElevation = 0.2f; + groundLayer = Layer.legUnit - 1f; weapons.add(new Weapon("eruption"){{ shootY = 3f; reload = 10f; - alternate = true; ejectEffect = Fx.none; recoil = 1f; x = 7f; @@ -260,18 +300,85 @@ public class UnitTypes implements ContentList{ bullet = new LiquidBulletType(Liquids.slag){{ damage = 11; speed = 2.3f; - drag = 0.02f; + drag = 0.01f; shootEffect = Fx.shootSmall; + lifetime = 56f; + collidesAir = false; }}; }}); }}; - cix = new UnitType("cix"){{ + spiroct = new UnitType("spiroct"){{ + speed = 0.4f; + drag = 0.4f; + hitsize = 12f; + rotateSpeed = 3f; + health = 600; + immunities = ObjectSet.with(StatusEffects.burning, StatusEffects.melting); + legCount = 6; + legLength = 13f; + legTrns = 0.8f; + legMoveSpace = 1.4f; + legBaseOffset = 2f; + hovering = true; + armor = 5f; + + buildSpeed = 0.75f; + + allowLegStep = true; + visualElevation = 0.3f; + groundLayer = Layer.legUnit; + + weapons.add(new Weapon("spiroct-weapon"){{ + shootY = 4f; + reload = 15f; + ejectEffect = Fx.none; + recoil = 2f; + rotate = true; + shootSound = Sounds.flame; + + x = 8.5f; + y = -1.5f; + + bullet = new SapBulletType(){{ + sapStrength = 0.3f; + length = 75f; + damage = 15; + shootEffect = Fx.shootSmall; + hitColor = color = Color.valueOf("bf92f9"); + despawnEffect = Fx.none; + width = 0.54f; + lifetime = 35f; + knockback = -1.2f; + }}; + }}); + + weapons.add(new Weapon("mount-purple-weapon"){{ + reload = 20f; + rotate = true; + x = 4f; + y = 3f; + + bullet = new SapBulletType(){{ + sapStrength = 0.65f; + length = 40f; + damage = 12; + shootEffect = Fx.shootSmall; + hitColor = color = Color.valueOf("bf92f9"); + despawnEffect = Fx.none; + width = 0.4f; + lifetime = 25f; + knockback = -0.6f; + }}; + }}); + }}; + + //TODO implement + arkyid = new UnitType("arkyid"){{ drag = 0.1f; speed = 0.5f; hitsize = 9f; health = 140; - baseElevation = 0.51f; legCount = 6; legMoveSpace = 1f; @@ -288,21 +395,37 @@ public class UnitTypes implements ContentList{ legSplashDamage = 32; legSplashRange = 30; - for(boolean b : Mathf.booleans){ - weapons.add( - new Weapon("missiles-mount"){{ - reload = 20f; - x = 4f * Mathf.sign(b); - rotate = true; - mirror = false; - flipSprite = !b; - shake = 1f; - bullet = Bullets.missileSwarm; - }}); - } + weapons.add( + new Weapon("missiles-mount"){{ + reload = 20f; + x = 4f; + rotate = true; + shake = 1f; + bullet = new MissileBulletType(2.7f, 12, "missile"){{ + width = 8f; + height = 8f; + shrinkY = 0f; + drag = -0.003f; + homingRange = 60f; + keepVelocity = false; + splashDamageRadius = 25f; + splashDamage = 10f; + lifetime = 120f; + trailColor = Color.gray; + backColor = Pal.bulletYellowBack; + frontColor = Pal.bulletYellow; + hitEffect = Fx.blastExplosion; + despawnEffect = Fx.blastExplosion; + weaveScale = 8f; + weaveMag = 2f; + }}; + }}); }}; - wraith = new UnitType("wraith"){{ + //endregion + //region air attack + + flare = new UnitType("flare"){{ speed = 3f; accel = 0.08f; drag = 0.01f; @@ -315,15 +438,14 @@ public class UnitTypes implements ContentList{ y = 0f; x = 2f; reload = 15f; - alternate = true; ejectEffect = Fx.shellEjectSmall; bullet = Bullets.standardCopper; shootSound = Sounds.shoot; }}); }}; - ghoul = new UnitType("ghoul"){{ - health = 220; + horizon = new UnitType("horizon"){{ + health = 300; speed = 2f; accel = 0.08f; drag = 0.016f; @@ -332,13 +454,13 @@ public class UnitTypes implements ContentList{ engineOffset = 7.8f; range = 140f; faceTarget = false; + armor = 2f; weapons.add(new Weapon(){{ x = 3f; shootY = 0f; reload = 12f; shootCone = 180f; - alternate = true; ejectEffect = Fx.none; inaccuracy = 15f; ignoreRotation = true; @@ -347,8 +469,8 @@ public class UnitTypes implements ContentList{ }}); }}; - revenant = new UnitType("revenant"){{ - health = 220; + zenith = new UnitType("zenith"){{ + health = 1000; speed = 1.9f; accel = 0.04f; drag = 0.016f; @@ -356,160 +478,412 @@ public class UnitTypes implements ContentList{ range = 140f; hitsize = 18f; lowAltitude = true; + armor = 4f; engineOffset = 12f; engineSize = 3f; - for(boolean b : Mathf.booleans){ - weapons.add( - new Weapon("revenant-missiles"){{ - reload = 70f; - x = 7f * Mathf.sign(b); - rotate = true; - mirror = false; - flipSprite = !b; - shake = 1f; + weapons.add(new Weapon("zenith-missiles"){{ + reload = 32f; + x = 7f; + rotate = true; + shake = 1f; + shots = 2; + inaccuracy = 5f; + velocityRnd = 0.2f; - bullet = new MissileBulletType(2.7f, 12, "missile"){{ - width = 8f; - height = 8f; - shrinkY = 0f; - drag = -0.003f; - homingRange = 60f; - keepVelocity = false; - splashDamageRadius = 25f; - splashDamage = 10f; - lifetime = 60f; - trailColor = Pal.unitBack; - backColor = Pal.unitBack; - frontColor = Pal.unitFront; - hitEffect = Fx.blastExplosion; - despawnEffect = Fx.blastExplosion; - weaveScale = 6f; - weaveMag = 1f; - }}; - }}); - } + bullet = new MissileBulletType(3f, 12){{ + width = 8f; + height = 8f; + shrinkY = 0f; + drag = -0.003f; + homingRange = 60f; + keepVelocity = false; + splashDamageRadius = 25f; + splashDamage = 10f; + lifetime = 60f; + trailColor = Pal.unitBack; + backColor = Pal.unitBack; + frontColor = Pal.unitFront; + hitEffect = Fx.blastExplosion; + despawnEffect = Fx.blastExplosion; + weaveScale = 6f; + weaveMag = 1f; + }}; + }}); }}; - reaper = new UnitType("reaper"){{ - speed = 1.1f; - accel = 0.02f; + antumbra = new UnitType("antumbra"){{ + speed = 1.25f; + accel = 0.035f; drag = 0.05f; - rotateSpeed = 2.5f; + rotateSpeed = 3.5f; flying = true; lowAltitude = true; - health = 75000; - engineOffset = 38; - engineSize = 7.3f; + health = 7000; + armor = 9f; + engineOffset = 21; + engineSize = 5.3f; hitsize = 58f; weapons.add(new Weapon(){{ y = 1.5f; reload = 28f; - alternate = true; ejectEffect = Fx.shellEjectSmall; bullet = Bullets.standardCopper; shootSound = Sounds.shoot; }}); }}; - lich = new UnitType("lich"){{ + eclipse = new UnitType("eclipse"){{ speed = 1.1f; accel = 0.02f; drag = 0.05f; rotateSpeed = 2.5f; flying = true; lowAltitude = true; - health = 75000; + health = 13000; engineOffset = 38; engineSize = 7.3f; hitsize = 58f; + destructibleWreck = false; + armor = 13f; weapons.add(new Weapon(){{ y = 1.5f; reload = 28f; - alternate = true; ejectEffect = Fx.shellEjectSmall; bullet = Bullets.standardCopper; shootSound = Sounds.shoot; }}); }}; - vanguard = new UnitType("vanguard"){{ - speed = 1.3f; - drag = 0.1f; + //endregion + //region air support + + mono = new UnitType("mono"){{ + flying = true; + drag = 0.05f; + accel = 0.15f; + speed = 2f; + health = 100; + engineSize = 1.8f; + engineOffset = 5.7f; + + mineTier = 1; + mineSpeed = 2.5f; + + //no weapon, mining only + /* + weapons.add(new Weapon(){{ + y = 1.5f; + x = 0f; + + reload = 40f; + ejectEffect = Fx.none; + recoil = 2f; + shootSound = Sounds.pew; + mirror = false; + + bullet = new HealBulletType(5.2f, 10){{ + healPercent = 4f; + }}; + }});*/ + }}; + + poly = new UnitType("poly"){{ + defaultController = BuilderAI::new; + + flying = true; + drag = 0.05f; + speed = 2f; + rotateSpeed = 15f; + accel = 0.1f; + range = 70f; + itemCapacity = 70; + health = 400; + buildSpeed = 0.5f; + engineOffset = 6.5f; hitsize = 8f; - health = 130; - immunities = ObjectSet.with(StatusEffects.wet); - weapons.add(new Weapon("mount-weapon"){{ - reload = 10f; - x = 1.25f; + lowAltitude = true; + + mineTier = 2; + mineSpeed = 3.5f; + + abilities.add(new HealFieldAbility(5f, 60f * 5, 50f)); + + weapons.add(new Weapon("heal-weapon-mount"){{ + y = -2.5f; + x = 3.5f; + reload = 34f; + ejectEffect = Fx.none; + recoil = 2f; + shootSound = Sounds.pew; + shots = 1; + velocityRnd = 0.5f; + inaccuracy = 15f; alternate = true; + + bullet = new MissileBulletType(4f, 10){{ + homingPower = 0.08f; + weaveMag = 4; + weaveScale = 4; + lifetime = 50f; + keepVelocity = false; + shootEffect = Fx.shootHeal; + smokeEffect = Fx.hitLaser; + frontColor = Color.white; + + backColor = Pal.heal; + trailColor = Pal.heal; + }}; + }}); + }}; + + mega = new UnitType("mega"){{ + + health = 500; + speed = 1.8f; + accel = 0.06f; + drag = 0.017f; + lowAltitude = true; + flying = true; + engineOffset = 10.5f; + rotateShooting = false; + hitsize = 15f; + engineSize = 3f; + payloadCapacity = 3; + + weapons.add( + new Weapon("heal-weapon-mount"){{ + reload = 25f; + x = 8f; + y = -6f; + rotate = true; + bullet = Bullets.healBulletBig; + }}, + new Weapon("heal-weapon-mount"){{ + reload = 15f; + x = 4f; + y = 5f; + rotate = true; + bullet = Bullets.healBullet; + }}); + }}; + + //endregion + //region naval attack + + risse = new UnitType("risse"){{ + speed = 1.1f; + drag = 0.13f; + hitsize = 9f; + health = 280; + accel = 0.4f; + rotateSpeed = 3.3f; + immunities = ObjectSet.with(StatusEffects.wet); + trailLength = 20; + + armor = 2f; + + weapons.add(new Weapon("mount-weapon"){{ + reload = 12f; + x = 4f; + shootY = 4f; + y = 1.5f; rotate = true; ejectEffect = Fx.shellEjectSmall; bullet = Bullets.standardCopper; }}); - }}; - draug = new UnitType("draug"){{ - flying = true; - drag = 0.05f; - speed = 2f; - range = 50f; - accel = 0.2f; - health = 80; - mineSpeed = 0.9f; - engineSize = 1.8f; - engineOffset = 5.7f; - drillTier = 1; - }}; - - spirit = new UnitType("spirit"){{ - flying = true; - drag = 0.05f; - accel = 0.2f; - speed = 2f; - range = 50f; - health = 100; - engineSize = 1.8f; - engineOffset = 5.7f; - weapons.add(new Weapon(){{ - y = 1.5f; - reload = 40f; - x = 0.5f; - alternate = true; - ejectEffect = Fx.none; - recoil = 2f; - bullet = Bullets.healBulletBig; - shootSound = Sounds.pew; + weapons.add(new Weapon("missiles-mount"){{ + mirror = false; + reload = 20f; + x = 0f; + y = -5f; + rotate = true; + ejectEffect = Fx.shellEjectSmall; + bullet = new MissileBulletType(2.7f, 12, "missile"){{ + width = 8f; + height = 8f; + shrinkY = 0f; + drag = -0.003f; + homingRange = 60f; + keepVelocity = false; + splashDamageRadius = 25f; + splashDamage = 10f; + lifetime = 80f; + trailColor = Color.gray; + backColor = Pal.bulletYellowBack; + frontColor = Pal.bulletYellow; + hitEffect = Fx.blastExplosion; + despawnEffect = Fx.blastExplosion; + weaveScale = 8f; + weaveMag = 2f; + }}; }}); }}; + minke = new UnitType("minke"){{ + health = 600; + speed = 0.9f; + drag = 0.15f; + hitsize = 11f; + armor = 4f; + accel = 0.3f; + rotateSpeed = 2.6f; + immunities = ObjectSet.with(StatusEffects.wet); + + trailLength = 20; + trailX = 5.5f; + trailY = -4f; + trailScl = 1.9f; + + abilities.add(new StatusFieldAbility(StatusEffects.overclock, 60f * 6, 60f * 6f, 60f)); + + weapons.add(new Weapon("mount-weapon"){{ + reload = 15f; + x = 5f; + y = 3.5f; + rotate = true; + rotateSpeed = 5f; + inaccuracy = 10f; + ejectEffect = Fx.shellEjectSmall; + bullet = Bullets.flakLead; + }}); + + weapons.add(new Weapon("artillery-mount"){{ + reload = 30f; + x = 5f; + y = -5f; + rotate = true; + inaccuracy = 2f; + rotateSpeed = 2f; + shake = 1.5f; + ejectEffect = Fx.shellEjectMedium; + bullet = Bullets.artilleryIncendiary; + }}); + }}; + + bryde = new UnitType("bryde"){{ + health = 900; + speed = 0.85f; + accel = 0.2f; + rotateSpeed = 1.8f; + drag = 0.17f; + hitsize = 14f; + armor = 6f; + immunities = ObjectSet.with(StatusEffects.wet); + + trailLength = 22; + trailX = 7f; + trailY = -9f; + trailScl = 1.5f; + + abilities.add(new HealFieldAbility(22f, 60f * 4, 70f), new ShieldFieldAbility(20f, 40f, 60f * 4, 60f)); + + weapons.add(new Weapon("large-artillery"){{ + reload = 65f; + mirror = false; + x = 0f; + y = -3.5f; + rotateSpeed = 1.7f; + rotate = true; + shootY = 7f; + shake = 5f; + recoil = 4f; + occlusion = 17f; + + shots = 1; + inaccuracy = 3f; + + ejectEffect = Fx.shellEjectBig; + + bullet = new ArtilleryBulletType(3.2f, 12){{ + trailMult = 0.8f; + hitEffect = Fx.massiveExplosion; + knockback = 1.5f; + lifetime = 140f; + height = 15.5f; + width = 15f; + collidesTiles = false; + ammoMultiplier = 4f; + splashDamageRadius = 60f; + splashDamage = 85f; + backColor = Pal.missileYellowBack; + frontColor = Pal.missileYellow; + trailEffect = Fx.artilleryTrail; + trailSize = 6f; + hitShake = 4f; + + shootEffect = Fx.shootBig2; + + status = StatusEffects.blasted; + statusDuration = 60f; + }}; + }}); + + weapons.add(new Weapon("missiles-mount"){{ + reload = 20f; + x = 8.5f; + y = -9f; + + occlusion = 6f; + + rotateSpeed = 4f; + rotate = true; + shots = 2; + shotDelay = 3f; + inaccuracy = 5f; + velocityRnd = 0.1f; + + ejectEffect = Fx.none; + bullet = new MissileBulletType(2.7f, 12){{ + width = 8f; + height = 8f; + shrinkY = 0f; + drag = -0.003f; + homingRange = 60f; + keepVelocity = false; + splashDamageRadius = 25f; + splashDamage = 10f; + lifetime = 80f; + trailColor = Color.gray; + backColor = Pal.bulletYellowBack; + frontColor = Pal.bulletYellow; + hitEffect = Fx.blastExplosion; + despawnEffect = Fx.blastExplosion; + weaveScale = 8f; + weaveMag = 1f; + }}; + }}); + }}; + + //endregion + //region core + alpha = new UnitType("alpha"){{ //TODO maybe these should be changed defaultController = BuilderAI::new; isCounted = false; flying = true; - mineSpeed = 2f; + mineSpeed = 6f; + mineTier = 1; buildSpeed = 0.5f; drag = 0.05f; - speed = 2.4f; + speed = 2.6f; rotateSpeed = 15f; accel = 0.1f; - range = 70f; itemCapacity = 30; health = 80f; engineOffset = 6f; hitsize = 8f; weapons.add(new Weapon("small-basic-weapon"){{ - reload = 15f; - x = -1f; - y = -1f; - shootX = 3.5f; - alternate = true; + reload = 20f; + x = 2.75f; + y = 1f; bullet = new BasicBulletType(2.5f, 9){{ width = 7f; @@ -522,492 +896,102 @@ public class UnitTypes implements ContentList{ }}); }}; - phantom = new UnitType("phantom"){{ + beta = new UnitType("beta"){{ + //TODO maybe these should be changed defaultController = BuilderAI::new; + isCounted = false; flying = true; + mineSpeed = 7f; + mineTier = 1; + buildSpeed = 0.75f; drag = 0.05f; - speed = 3f; - rotateSpeed = 15f; - accel = 0.3f; - range = 70f; - itemCapacity = 70; - health = 400; - buildSpeed = 0.5f; - engineOffset = 6.5f; - hitsize = 8f; - }}; - - trident = new UnitType("trident"){{ - - health = 500; - speed = 2f; - accel = 0.05f; - drag = 0.016f; - lowAltitude = true; - flying = true; - engineOffset = 10.5f; + speed = 2.9f; + rotateSpeed = 17f; + accel = 0.1f; + itemCapacity = 50; + health = 120f; + engineOffset = 6f; + hitsize = 9f; rotateShooting = false; - hitsize = 14f; - engineSize = 3f; + lowAltitude = true; - for(boolean b : Mathf.booleans){ - weapons.add( - new Weapon("heal-weapon-mount"){{ - reload = 25f; - x = 8f * Mathf.sign(b); - y = -6f; - rotate = true; - mirror = false; - flipSprite = !b; - bullet = Bullets.healBulletBig; - }}, - new Weapon("heal-weapon-mount"){{ - reload = 15f; - x = 4f * Mathf.sign(b); - y = 5f; - rotate = true; - mirror = false; - flipSprite = !b; - bullet = Bullets.healBullet; - }} - ); - } - }}; - - /* - chaosArray = new UnitType("chaos-array", GroundUnit::new){{ - maxVelocity = 0.68f; - speed = 0.12f; - drag = 0.4f; - mass = 5f; - hitsize = 20f; - rotatespeed = 0.06f; - health = 3000; - weapons.add(new Weapon("chaos"){{ - length = 8f; - reload = 50f; - width = 17f; - alternate = true; - recoil = 3f; - shake = 2f; - shots = 4; - spacing = 4f; - shotDelay = 5; - ejectEffect = Fx.shellEjectMedium; - bullet = Bullets.flakSurge; - shootSound = Sounds.shootBig; - }}); - }}; - - eradicator = new UnitType("eradicator", GroundUnit::new){{ - maxVelocity = 0.68f; - speed = 0.12f; - drag = 0.4f; - mass = 5f; - hitsize = 20f; - rotatespeed = 0.06f; - health = 9000; - weapons.add(new Weapon("eradication"){{ - length = 13f; - reload = 30f; - width = 22f; - alternate = true; - recoil = 3f; - shake = 2f; - inaccuracy = 3f; - shots = 4; + weapons.add(new Weapon("small-mount-weapon"){{ + reload = 20f; + x = 3f; + y = 0.5f; + rotate = true; + shots = 2; + shotDelay = 4f; spacing = 0f; - shotDelay = 3; - ejectEffect = Fx.shellEjectMedium; - bullet = Bullets.standardThoriumBig; - shootSound = Sounds.shootBig; + + bullet = new BasicBulletType(3f, 9){{ + width = 7f; + height = 9f; + lifetime = 60f; + shootEffect = Fx.shootSmall; + smokeEffect = Fx.shootSmallSmoke; + tileDamageMultiplier = 0.1f; + }}; }}); }}; - lich = new UnitType("lich", HoverUnit::new){{ - health = 6000; - mass = 20f; - hitsize = 40f; - speed = 0.01f; - maxVelocity = 0.6f; - drag = 0.02f; - range = 80f; - shootCone = 20f; - flying = true; - //rotateWeapons = true; - engineOffset = 21; - engineSize = 5.3f; - rotatespeed = 0.01f; - attackLength = 90f; - baseRotateSpeed = 0.04f; - weapons.add(new Weapon("lich-missiles"){{ - length = 4f; - reload = 160f; - width = 22f; - shots = 16; - shootCone = 100f; - shotDelay = 2; - inaccuracy = 10f; - alternate = true; - ejectEffect = Fx.none; - velocityRnd = 0.2f; - spacing = 1f; - bullet = Bullets.missileRevenant; - shootSound = Sounds.artillery; - }}); - }}; + gamma = new UnitType("gamma"){{ + //TODO maybe these should be changed + defaultController = BuilderAI::new; + isCounted = false; - reaper = new UnitType("reaper", HoverUnit::new){{ - health = 11000; - mass = 30f; - hitsize = 56f; - speed = 0.01f; - maxVelocity = 0.6f; - drag = 0.02f; - range = 80f; - shootCone = 30f; flying = true; - //rotateWeapons = true; - engineOffset = 40; - engineSize = 7.3f; - rotatespeed = 0.01f; - baseRotateSpeed = 0.04f; - weapons.add(new Weapon("reaper-gun"){{ - length = 3f; - reload = 10f; - width = 32f; - shots = 1; - shootCone = 100f; + mineSpeed = 8f; + mineTier = 2; + buildSpeed = 1f; + drag = 0.05f; + speed = 3.4f; + rotateSpeed = 19f; + accel = 0.11f; + itemCapacity = 70; + health = 160f; + engineOffset = 6f; + hitsize = 10f; - shake = 1f; + weapons.add(new Weapon("small-mount-weapon"){{ + reload = 15f; + x = 1f; + y = 2f; + shots = 2; + spacing = 2f; inaccuracy = 3f; - alternate = true; - ejectEffect = Fx.none; - bullet = new BasicBulletType(7f, 42, "bullet"){ - { - bulletWidth = 15f; - bulletHeight = 21f; - shootEffect = Fx.shootBig; - } + shotDelay = 3f; - @Override - public float range(){ - return 165f; - } - }; - shootSound = Sounds.shootBig; + bullet = new BasicBulletType(3.5f, 9){{ + width = 6.5f; + height = 11f; + lifetime = 70f; + shootEffect = Fx.shootSmall; + smokeEffect = Fx.shootSmallSmoke; + tileDamageMultiplier = 0.1f; + homingPower = 0.04f; + }}; }}); }}; + + //endregion + //region internal + + block = new UnitType("block"){ + { + speed = 0f; + hitsize = 0f; + health = 1; + rotateSpeed = 360f; } @Override - public boolean alwaysUnlocked(){ + public boolean isHidden(){ return true; } - - @Override - public void update(Player player){ - if(player.timer.get(Player.timerAbility, healReload)){ - if(indexer.eachBlock(player, healRange, other -> other.entity.damaged(), other -> { - other.entity.heal(other.entity.maxHealth() * healPercent / 100f); - Fx.healBlockFull.at(other.drawx(), other.drawy(), other.block().size, Pal.heal); - })){ - Fx.healWave.at(player); - } - } - } }; - delta = new UnitType("delta-mech", false){ - { - drillPower = 1; - mineSpeed = 1.5f; - mass = 1.2f; - speed = 0.5f; - itemCapacity = 40; - boostSpeed = 0.95f; - buildSpeed = 1.2f; - engineColor = Color.valueOf("ffd37f"); - health = 250f; - weaponOffsetX = 4f; - - weapons.add(new Weapon("flamethrower"){{ - length = 1.5f; - reload = 30f; - width = 4f; - alternate = true; - shots = 3; - inaccuracy = 40f; - shootSound = Sounds.spark; - bullet = new LightningBulletType(){{ - damage = 5; - lightningLength = 10; - lightningColor = Pal.lightFlame; - }}); - }}; - } - }; - - tau = new UnitType("tau-mech", false){ - float healRange = 60f; - float healAmount = 10f; - float healReload = 160f; - boolean wasHealed; - - { - drillPower = 4; - mineSpeed = 3f; - itemCapacity = 70; - weaponOffsetY = -1; - weaponOffsetX = 1; - mass = 1.75f; - speed = 0.44f; - drag = 0.35f; - boostSpeed = 0.8f; - canHeal = true; - health = 200f; - buildSpeed = 1.6f; - engineColor = Pal.heal; - - weapons.add(new Weapon("heal-gun"){{ - length = 1.5f; - reload = 24f; - alternate = false; - ejectEffect = Fx.none; - recoil = 2f; - bullet = Bullets.healBullet; - shootSound = Sounds.pew; - }}; - } - - @Override - public void update(Player player){ - - if(player.timer.get(Player.timerAbility, healReload)){ - wasHealed = false; - - Units.nearby(player.team(), player.x, player.y, healRange, unit -> { - if(unit.health < unit.maxHealth()){ - Fx.heal.at(unit); - wasHealed = true; - } - unit.heal(healAmount); - }); - - if(wasHealed){ - Fx.healWave.at(player); - } - } - } - }; - - omega = new UnitType("omega-mech", false){ - protected TextureRegion armorRegion; - - { - drillPower = 2; - mineSpeed = 1.5f; - itemCapacity = 80; - speed = 0.36f; - boostSpeed = 0.6f; - mass = 4f; - shake = 4f; - weaponOffsetX = 1; - weaponOffsetY = 0; - engineColor = Color.valueOf("feb380"); - health = 350f; - buildSpeed = 1.5f; - weapons.add(new Weapon("missiles"){{ - length = 1.5f; - recoil = 4f; - reload = 38f; - shots = 4; - spacing = 8f; - inaccuracy = 8f; - alternate = true; - ejectEffect = Fx.none; - shake = 3f; - bullet = Bullets.missileSwarm; - shootSound = Sounds.shootBig; - }}; - } - - @Override - public float getRotationAlpha(Player player){ - return 0.6f - player.shootHeat * 0.3f; - } - - @Override - public float spreadX(Player player){ - return player.shootHeat * 2f; - } - - @Override - public void load(){ - super.load(); - armorRegion = Core.atlas.find(name + "-armor"); - } - - @Override - public void update(Player player){ - float scl = 1f - player.shootHeat / 2f*Time.delta(); - player.vel().scl(scl); - } - - @Override - public float getExtraArmor(Player player){ - return player.shootHeat * 30f; - } - - @Override - public void draw(Player player){ - if(player.shootHeat <= 0.01f) return; - - Shaders.build.progress = player.shootHeat; - Shaders.build.region = armorRegion; - Shaders.build.time = Time.time() / 10f; - Shaders.build.color.set(Pal.accent).a = player.shootHeat; - Draw.shader(Shaders.build); - Draw.rect(armorRegion, player.x, player.y, player.rotation); - Draw.shader(); - } - }; - - dart = new UnitType("dart-ship"){ - float effectRange = 60f; - float effectReload = 60f * 5; - float effectDuration = 60f * 10f; - - { - flying = true; - drillPower = 1; - mineSpeed = 2f; - speed = 0.5f; - drag = 0.09f; - health = 200f; - weaponOffsetX = -1; - weaponOffsetY = -1; - engineColor = Pal.lightTrail; - cellTrnsY = 1f; - buildSpeed = 1.1f; - weapons.add(new Weapon("gun"){{ - length = 1.5f; - reload = 15f; - alternate = true; - ejectEffect = Fx.shellEjectSmall; - bullet = Bullets.standardCopper; - }}; - } - - @Override - public void update(Player player){ - super.update(player); - - if(player.timer.get(Player.timerAbility, effectReload)){ - - Units.nearby(player.team(), player.x, player.y, effectRange, unit -> { - //unit.applyEffect(StatusEffects.overdrive, effectDuration); - }); - - indexer.eachBlock(player, effectRange, other -> other.entity.damaged(), other -> { - other.entity.applyBoost(1.5f, effectDuration); - Fx.healBlockFull.at(other.drawx(), other.drawy(), other.block().size, Pal.heal); - }); - - Fx.overdriveWave.at(player); - } - } - }; - - javelin = new UnitType("javelin-ship"){ - float minV = 3.6f; - float maxV = 6f; - TextureRegion shield; - - { - flying = true; - drillPower = -1; - speed = 0.11f; - drag = 0.01f; - mass = 2f; - health = 170f; - engineColor = Color.valueOf("d3ddff"); - cellTrnsY = 1f; - weapons.add(new Weapon("missiles"){{ - length = 1.5f; - reload = 70f; - shots = 4; - inaccuracy = 2f; - alternate = true; - ejectEffect = Fx.none; - velocityRnd = 0.2f; - spacing = 1f; - bullet = Bullets.missileJavelin; - shootSound = Sounds.missile; - }}; - } - - @Override - public void load(){ - super.load(); - shield = Core.atlas.find(name + "-shield"); - } - - @Override - public float getRotationAlpha(Player player){ - return 0.5f; - } - - @Override - public void update(Player player){ - float scl = scld(player); - if(Mathf.chanceDelta((0.15 * scl))){ - Fx.hitLancer.at(Pal.lancerLaser, player.x, player.y); - Lightning.create(player.team(), Pal.lancerLaser, 10f * Vars.state.rules.playerDamageMultiplier, - player.x + player.vel().x, player.y + player.vel().y, player.rotation, 14); - } - } - - @Override - public void draw(Player player){ - float scl = scld(player); - if(scl < 0.01f) return; - Draw.color(Pal.lancerLaser); - Draw.alpha(scl / 2f); - Draw.blend(Blending.additive); - Draw.rect(shield, player.x + Mathf.range(scl / 2f), player.y + Mathf.range(scl / 2f), player.rotation - 90); - Draw.blend(); - } - - float scld(Player player){ - return Mathf.clamp((player.vel().len() - minV) / (maxV - minV)); - } - }; - - glaive = new UnitType("glaive-ship"){ - { - flying = true; - drillPower = 4; - mineSpeed = 1.3f; - speed = 0.32f; - drag = 0.06f; - mass = 3f; - health = 240f; - itemCapacity = 60; - engineColor = Color.valueOf("feb380"); - cellTrnsY = 1f; - buildSpeed = 1.2f; - - weapons.add(new Weapon("bomber"){{ - length = 1.5f; - reload = 13f; - alternate = true; - ejectEffect = Fx.shellEjectSmall; - bullet = Bullets.standardGlaive; - shootSound = Sounds.shootSnap; - }}; - } - };*/ + //endregion } } diff --git a/core/src/mindustry/content/Weathers.java b/core/src/mindustry/content/Weathers.java index beceac902a..9c3a16ea44 100644 --- a/core/src/mindustry/content/Weathers.java +++ b/core/src/mindustry/content/Weathers.java @@ -2,6 +2,7 @@ package mindustry.content; import arc.*; import arc.graphics.*; +import arc.graphics.Texture.*; import arc.graphics.g2d.*; import arc.math.*; import arc.math.geom.*; @@ -158,15 +159,22 @@ public class Weathers implements ContentList{ sandstorm = new Weather("sandstorm"){ TextureRegion region; - float yspeed = 0.3f, xspeed = 6f, padding = 110f, size = 110f, invDensity = 800f; + float yspeed = 0.3f, xspeed = 6f, size = 140f, padding = size, invDensity = 1500f; Vec2 force = new Vec2(0.45f, 0.01f); Color color = Color.valueOf("f7cba4"); + Texture noise; @Override public void load(){ - super.load(); - region = Core.atlas.find("circle-shadow"); + noise = new Texture("sprites/noiseAlpha.png"); + noise.setWrap(TextureWrap.repeat); + noise.setFilter(TextureFilter.linear); + } + + @Override + public void dispose(){ + noise.dispose(); } @Override @@ -179,6 +187,16 @@ public class Weathers implements ContentList{ @Override public void drawOver(WeatherState state){ + Draw.tint(color); + + float scale = 1f / 2000f; + float scroll = Time.time() * scale; + Tmp.tr1.setTexture(noise); + Core.camera.bounds(Tmp.r1); + Tmp.tr1.set(Tmp.r1.x*scale, Tmp.r1.y*scale, (Tmp.r1.x + Tmp.r1.width)*scale, (Tmp.r1.y + Tmp.r1.height)*scale); + Tmp.tr1.scroll(-xspeed * scroll, -yspeed * scroll); + Draw.rect(Tmp.tr1, Core.camera.position.x, Core.camera.position.y, Core.camera.width, -Core.camera.height); + rand.setSeed(0); Tmp.r1.setCentered(Core.camera.position.x, Core.camera.position.y, Core.graphics.getWidth() / renderer.minScale(), Core.graphics.getHeight() / renderer.minScale()); Tmp.r1.grow(padding); @@ -206,7 +224,6 @@ public class Weathers implements ContentList{ if(Tmp.r3.setCentered(x, y, size * sscl).overlaps(Tmp.r2)){ Draw.alpha(alpha * baseAlpha); - //Fill.circle(x, y, size * sscl / 2f); Draw.rect(region, x, y, size * sscl, size * sscl); } } diff --git a/core/src/mindustry/core/ContentLoader.java b/core/src/mindustry/core/ContentLoader.java index 16897778c1..604d04059c 100644 --- a/core/src/mindustry/core/ContentLoader.java +++ b/core/src/mindustry/core/ContentLoader.java @@ -22,8 +22,8 @@ import static mindustry.Vars.mods; */ @SuppressWarnings("unchecked") public class ContentLoader{ - private ObjectMap[] contentNameMap = new ObjectMap[ContentType.values().length]; - private Seq[] contentMap = new Seq[ContentType.values().length]; + private ObjectMap[] contentNameMap = new ObjectMap[ContentType.all.length]; + private Seq[] contentMap = new Seq[ContentType.all.length]; private MappableContent[][] temporaryMapper; private @Nullable LoadedMod currentMod; private @Nullable Content lastAdded; @@ -48,11 +48,11 @@ public class ContentLoader{ /** Clears all initialized content.*/ public void clear(){ - contentNameMap = new ObjectMap[ContentType.values().length]; - contentMap = new Seq[ContentType.values().length]; + contentNameMap = new ObjectMap[ContentType.all.length]; + contentMap = new Seq[ContentType.all.length]; initialization = new ObjectSet<>(); - for(ContentType type : ContentType.values()){ + for(ContentType type : ContentType.all){ contentMap[type.ordinal()] = new Seq<>(); contentNameMap[type.ordinal()] = new ObjectMap<>(); } @@ -87,9 +87,9 @@ public class ContentLoader{ Log.debug("--- CONTENT INFO ---"); for(int k = 0; k < contentMap.length; k++){ - Log.debug("[@]: loaded @", ContentType.values()[k].name(), contentMap[k].size); + Log.debug("[@]: loaded @", ContentType.all[k].name(), contentMap[k].size); } - Log.debug("Total content loaded: @", Seq.with(ContentType.values()).mapInt(c -> contentMap[c.ordinal()].size).sum()); + Log.debug("Total content loaded: @", Seq.with(ContentType.all).mapInt(c -> contentMap[c.ordinal()].size).sum()); Log.debug("-------------------"); } @@ -107,7 +107,7 @@ public class ContentLoader{ private void initialize(Cons callable){ if(initialization.contains(callable)) return; - for(ContentType type : ContentType.values()){ + for(ContentType type : ContentType.all){ for(Content content : contentMap[type.ordinal()]){ try{ callable.get(content); diff --git a/core/src/mindustry/core/Control.java b/core/src/mindustry/core/Control.java index e1432fad55..cb6d914aa0 100644 --- a/core/src/mindustry/core/Control.java +++ b/core/src/mindustry/core/Control.java @@ -9,6 +9,7 @@ import arc.math.*; import arc.scene.ui.*; import arc.struct.*; import arc.util.*; +import arc.util.ArcAnnotate.*; import mindustry.*; import mindustry.audio.*; import mindustry.content.*; @@ -110,7 +111,7 @@ public class Control implements ApplicationListener, Loadable{ state.stats.wavesLasted = state.wave; Effects.shake(5, 6, Core.camera.position.x, Core.camera.position.y); //the restart dialog can show info for any number of scenarios - Call.onGameOver(event.winner); + Call.gameOver(event.winner); }); //autohost for pvp maps @@ -157,6 +158,19 @@ public class Control implements ApplicationListener, Loadable{ } }); + //delete save on campaign game over + Events.on(GameOverEvent.class, e -> { + if(state.isCampaign() && !net.client() && !headless){ + + //delete the save, it is gone. + if(saves.getCurrent() != null && !state.rules.tutorial){ + Sector sector = state.getSector(); + sector.save = null; + saves.getCurrent().delete(); + } + } + }); + Events.on(Trigger.newGame, () -> { Building core = player.closestCore(); @@ -177,6 +191,7 @@ public class Control implements ApplicationListener, Loadable{ Effects.shake(5f, 5f, core); }); }); + } @Override @@ -251,9 +266,14 @@ public class Control implements ApplicationListener, Loadable{ //remove schematic requirements from core tile.items.remove(universe.getLastLoadout().requirements()); + tile.items.remove(universe.getLaunchResources()); } public void playSector(Sector sector){ + playSector(sector, sector); + } + + public void playSector(@Nullable Sector origin, Sector sector){ ui.loadAnd(() -> { ui.planet.hide(); SaveSlot slot = sector.save; @@ -293,7 +313,7 @@ public class Control implements ApplicationListener, Loadable{ sector.save = null; Time.runTask(10f, () -> ui.showErrorMessage("$save.corrupted")); slot.delete(); - playSector(sector); + playSector(origin, sector); } ui.planet.hide(); }else{ @@ -301,6 +321,8 @@ public class Control implements ApplicationListener, Loadable{ logic.reset(); world.loadSector(sector); state.rules.sector = sector; + //assign origin when launching + state.secinfo.origin = origin; logic.play(); control.saves.saveSector(sector); Events.fire(Trigger.newGame); @@ -407,16 +429,12 @@ public class Control implements ApplicationListener, Loadable{ //just a regular reminder if(!OS.prop("user.name").equals("anuke") && !OS.hasEnv("iknowwhatimdoing")){ - if(mobile){ - ui.showInfo("[scarlet]6.0 doesn't work on mobile.[] Don't play it."); - }else{ - ui.showInfo("[scarlet]6.0 is not supposed to be played.[] Go do something else."); - } + ui.showInfo("[scarlet]6.0 is not supposed to be played.[] Go do something else."); } //play tutorial on stop if(!settings.getBool("playedtutorial", false)){ - Core.app.post(() -> Core.app.post(this::playTutorial)); + //Core.app.post(() -> Core.app.post(this::playTutorial)); } //display UI scale changed dialog @@ -437,7 +455,7 @@ public class Control implements ApplicationListener, Loadable{ if(countdown[0] <= 0){ exit.run(); } - return Core.bundle.format("uiscale.reset", (int)((countdown[0] -= Time.delta()) / 60f)); + return Core.bundle.format("uiscale.reset", (int)((countdown[0] -= Time.delta) / 60f)); }).pad(10f).expand().center(); dialog.buttons.defaults().size(200f, 60f); @@ -474,7 +492,6 @@ public class Control implements ApplicationListener, Loadable{ music.update(); loops.update(); - Time.updateGlobal(); if(Core.input.keyTap(Binding.fullscreen)){ boolean full = settings.getBool("fullscreen"); @@ -498,7 +515,7 @@ public class Control implements ApplicationListener, Loadable{ platform.updateRPC(); } - if(Core.input.keyTap(Binding.pause) && !scene.hasDialog() && !scene.hasKeyboard() && !ui.restart.isShown() && (state.is(State.paused) || state.is(State.playing))){ + if(Core.input.keyTap(Binding.pause) && !state.isOutOfTime() && !scene.hasDialog() && !scene.hasKeyboard() && !ui.restart.isShown() && (state.is(State.paused) || state.is(State.playing))){ state.set(state.is(State.playing) ? State.paused : State.playing); } @@ -516,6 +533,7 @@ public class Control implements ApplicationListener, Loadable{ } }else{ + //this runs in the menu if(!state.isPaused()){ Time.update(); } diff --git a/core/src/mindustry/core/GameState.java b/core/src/mindustry/core/GameState.java index 88cb0b6dac..b006aae76f 100644 --- a/core/src/mindustry/core/GameState.java +++ b/core/src/mindustry/core/GameState.java @@ -47,6 +47,11 @@ public class GameState{ return rules.sector != null; } + /** @return whether the player is in a campaign and they are out of sector time */ + public boolean isOutOfTime(){ + return isCampaign() && isGame() && getSector().getTimeSpent() >= turnDuration; + } + public boolean hasSector(){ return rules.sector != null; } diff --git a/core/src/mindustry/core/Logic.java b/core/src/mindustry/core/Logic.java index 848749871d..1371ec72a0 100644 --- a/core/src/mindustry/core/Logic.java +++ b/core/src/mindustry/core/Logic.java @@ -2,6 +2,7 @@ package mindustry.core; import arc.*; import arc.math.*; +import arc.struct.*; import arc.util.*; import mindustry.annotations.Annotations.*; import mindustry.content.*; @@ -16,6 +17,7 @@ import mindustry.type.Weather.*; import mindustry.world.*; import mindustry.world.blocks.*; import mindustry.world.blocks.BuildBlock.*; +import mindustry.world.blocks.storage.CoreBlock.*; import java.util.*; @@ -86,23 +88,50 @@ public class Logic implements ApplicationListener{ //when loading a 'damaged' sector, propagate the damage Events.on(WorldLoadEvent.class, e -> { - if(state.isCampaign() && state.rules.sector.hasWaves() && state.rules.sector.getTurnsPassed() > 0){ - SectorDamage.apply(state.rules.sector.getTurnsPassed()); - state.rules.sector.setTurnsPassed(0); + if(state.isCampaign() && state.rules.sector.getSecondsPassed() > 0 && state.rules.sector.hasBase()){ + long seconds = state.rules.sector.getSecondsPassed(); + CoreEntity core = state.rules.defaultTeam.core(); + + //apply fractional damage based on how many turns have passed for this sector + float turnsPassed = seconds / (turnDuration / 60f); + + if(state.rules.sector.hasWaves()){ + SectorDamage.apply(turnsPassed / sectorDestructionTurns); + } + + //add resources based on turns passed + if(state.rules.sector.save != null && core != null){ + + //add produced items + //TODO move to received items + state.rules.sector.save.meta.secinfo.production.each((item, stat) -> { + core.items.add(item, (int)(stat.mean * seconds)); + }); + + //add received items + state.rules.sector.getReceivedItems().each(stack -> core.items.add(stack.item, stack.amount)); + + //clear received items + state.rules.sector.setReceivedItems(new Seq<>()); + + //validation + for(Item item : content.items()){ + //ensure positive items + if(core.items.get(item) < 0) core.items.set(item, 0); + //cap the items + if(core.items.get(item) > core.storageCapacity) core.items.set(item, core.storageCapacity); + } + } + + state.rules.sector.setSecondsPassed(0); } //enable infinite ammo for wave team by default state.rules.waveTeam.rules().infiniteAmmo = true; - }); - //TODO dying takes up a turn (?) - /* - Events.on(GameOverEvent.class, e -> { - //simulate a turn on a normal non-launch gameover - if(state.isCampaign() && !state.launched){ - universe.runTurn(); - } - });*/ + //save settings + Core.settings.manualSave(); + }); } @@ -134,9 +163,21 @@ public class Logic implements ApplicationListener{ //fire change event, since it was technically changed Events.fire(new StateChangeEvent(prev, State.menu)); - Groups.all.clear(); + Groups.clear(); Time.clear(); Events.fire(new ResetEvent()); + + //save settings on reset + Core.settings.manualSave(); + } + + public void skipWave(){ + if(state.isCampaign()){ + //warp time spent forward because the wave was just skipped. + state.secinfo.internalTimeSpent += state.wavetime; + } + + state.wavetime = 0; } public void runWave(){ @@ -203,7 +244,7 @@ public class Logic implements ApplicationListener{ for(WeatherEntry entry : state.rules.weather){ //update cooldown - entry.cooldown -= Time.delta(); + entry.cooldown -= Time.delta; //create new event when not active if(entry.cooldown < 0 && !entry.weather.isActive()){ @@ -216,32 +257,37 @@ public class Logic implements ApplicationListener{ @Remote(called = Loc.both) public static void launchZone(){ + if(!state.isCampaign()) return; + if(!headless){ ui.hudfrag.showLaunch(); } - //TODO core launch effect + //TODO better core launch effect for(Building tile : state.teams.playerCores()){ Fx.launch.at(tile); } - if(state.isCampaign()){ - //TODO implement? - //state.getSector().setLaunched(); - } - Sector sector = state.rules.sector; //TODO containers must be launched too Time.runTask(30f, () -> { - for(Building entity : state.teams.playerCores()){ - for(Item item : content.items()){ - //TODO where do the items go? - //data.addItem(item, entity.items.get(item)); - //Events.fire(new LaunchItemEvent(new ItemStack(item, entity.items.get(item)))); + Sector origin = sector.save.meta.secinfo.origin; + if(origin != null){ + Seq stacks = origin.getReceivedItems(); + + //add up all items into list + for(Building entity : state.teams.playerCores()){ + entity.items.each((item, amount) -> ItemStack.insert(stacks, item, amount)); } - entity.tile().remove(); + + //save received items + origin.setReceivedItems(stacks); } + + //remove all the cores + state.teams.playerCores().each(b -> b.tile.remove()); + state.launched = true; state.gameOver = true; @@ -250,8 +296,11 @@ public class Logic implements ApplicationListener{ //run a turn, since launching takes up a turn universe.runTurn(); - sector.setTurnsPassed(sector.getTurnsPassed() + 3); + //TODO apply extra damage to sector + //sector.setTurnsPassed(sector.getTurnsPassed() + 3); + + //TODO load the sector that was launched from Events.fire(new LaunchEvent()); //manually fire game over event now Events.fire(new GameOverEvent(state.rules.defaultTeam)); @@ -259,12 +308,18 @@ public class Logic implements ApplicationListener{ } @Remote(called = Loc.both) - public static void onGameOver(Team winner){ + public static void gameOver(Team winner){ state.stats.wavesLasted = state.wave; ui.restart.show(winner); netClient.setQuiet(); } + @Override + public void dispose(){ + //save the settings before quitting + Core.settings.manualSave(); + } + @Override public void update(){ Events.fire(Trigger.update); @@ -275,6 +330,11 @@ public class Logic implements ApplicationListener{ state.enemies = Groups.unit.count(u -> u.team() == state.rules.waveTeam && u.type().isCounted); } + //force pausing when the player is out of sector time + if(state.isOutOfTime()){ + state.set(State.paused); + } + if(!state.isPaused()){ state.secinfo.update(); @@ -296,7 +356,7 @@ public class Logic implements ApplicationListener{ if(state.rules.waves && state.rules.waveTimer && !state.gameOver){ if(!isWaitingWave()){ - state.wavetime = Math.max(state.wavetime - Time.delta(), 0); + state.wavetime = Math.max(state.wavetime - Time.delta, 0); } } diff --git a/core/src/mindustry/core/NetClient.java b/core/src/mindustry/core/NetClient.java index 15649dafb5..01f663f8ab 100644 --- a/core/src/mindustry/core/NetClient.java +++ b/core/src/mindustry/core/NetClient.java @@ -28,8 +28,8 @@ import java.util.zip.*; import static mindustry.Vars.*; public class NetClient implements ApplicationListener{ - private final static float dataTimeout = 60 * 18; - private final static float playerSyncTime = 2; + private static final float dataTimeout = 60 * 18; + private static final float playerSyncTime = 2; public final static float viewScale = 2f; private long ping; @@ -67,9 +67,7 @@ public class NetClient implements ApplicationListener{ ui.loadfrag.setButton(() -> { ui.loadfrag.hide(); - connecting = false; - quiet = true; - net.disconnect(); + disconnectQuietly(); }); ConnectPacket c = new ConnectPacket(); @@ -118,7 +116,7 @@ public class NetClient implements ApplicationListener{ }); net.handleClient(WorldStream.class, data -> { - Log.info("Recieved world data: @ bytes.", data.stream.available()); + Log.info("Received world data: @ bytes.", data.stream.available()); NetworkIO.loadWorld(new InflaterInputStream(data.stream)); finishConnecting(); @@ -172,7 +170,7 @@ public class NetClient implements ApplicationListener{ } } - //called when a server recieves a chat message from a player + //called when a server receives a chat message from a player @Remote(called = Loc.server, targets = Loc.client) public static void sendChatMessage(Player player, String message){ if(message.length() > maxTextLength){ @@ -230,7 +228,7 @@ public class NetClient implements ApplicationListener{ } @Remote(called = Loc.client, variants = Variant.one) - public static void onConnect(String ip, int port){ + public static void connect(String ip, int port){ netClient.disconnectQuietly(); logic.reset(); @@ -238,24 +236,24 @@ public class NetClient implements ApplicationListener{ } @Remote(targets = Loc.client) - public static void onPing(Player player, long time){ - Call.onPingResponse(player.con, time); + public static void ping(Player player, long time){ + Call.pingResponse(player.con, time); } @Remote(variants = Variant.one) - public static void onPingResponse(long time){ + public static void pingResponse(long time){ netClient.ping = Time.timeSinceMillis(time); } @Remote(variants = Variant.one) - public static void onTraceInfo(Player player, TraceInfo info){ + public static void traceInfo(Player player, TraceInfo info){ if(player != null){ ui.traces.show(player, info); } } @Remote(variants = Variant.one, priority = PacketPriority.high) - public static void onKick(KickReason reason){ + public static void kick(KickReason reason){ netClient.disconnectQuietly(); logic.reset(); @@ -270,7 +268,7 @@ public class NetClient implements ApplicationListener{ } @Remote(variants = Variant.one, priority = PacketPriority.high) - public static void onKick(String reason){ + public static void kick(String reason){ netClient.disconnectQuietly(); logic.reset(); ui.showText("$disconnect", reason, Align.left); @@ -296,21 +294,21 @@ public class NetClient implements ApplicationListener{ } @Remote(variants = Variant.both) - public static void onInfoMessage(String message){ + public static void infoMessage(String message){ if(message == null) return; ui.showText("", message); } @Remote(variants = Variant.both) - public static void onInfoPopup(String message, float duration, int align, int top, int left, int bottom, int right){ + public static void infoPopup(String message, float duration, int align, int top, int left, int bottom, int right){ if(message == null) return; ui.showInfoPopup(message, duration, align, top, left, bottom, right); } @Remote(variants = Variant.both) - public static void onLabel(String message, float duration, float worldx, float worldy){ + public static void label(String message, float duration, float worldx, float worldy){ if(message == null) return; ui.showLabel(message, duration, worldx, worldy); @@ -330,20 +328,20 @@ public class NetClient implements ApplicationListener{ }*/ @Remote(variants = Variant.both) - public static void onInfoToast(String message, float duration){ + public static void infoToast(String message, float duration){ if(message == null) return; ui.showInfoToast(message, duration); } @Remote(variants = Variant.both) - public static void onSetRules(Rules rules){ + public static void setRules(Rules rules){ state.rules = rules; } @Remote(variants = Variant.both) - public static void onWorldDataBegin(){ - Groups.all.clear(); + public static void worldDataBegin(){ + Groups.clear(); netClient.removed.clear(); logic.reset(); @@ -353,24 +351,24 @@ public class NetClient implements ApplicationListener{ ui.loadfrag.setButton(() -> { ui.loadfrag.hide(); - netClient.connecting = false; - netClient.quiet = true; - net.disconnect(); + + netClient.disconnectQuietly(); }); } @Remote(variants = Variant.one) - public static void onPositionSet(float x, float y){ + public static void setPosition(float x, float y){ + player.unit().set(x, y); player.set(x, y); } @Remote - public static void onPlayerDisconnect(int playerid){ + public static void playerDisconnect(int playerid){ Groups.player.removeByID(playerid); } @Remote(variants = Variant.one, priority = PacketPriority.low, unreliable = true) - public static void onEntitySnapshot(short amount, short dataLen, byte[] data){ + public static void entitySnapshot(short amount, short dataLen, byte[] data){ try{ netClient.byteStream.setBytes(net.decompressSnapshot(data, dataLen)); DataInputStream input = netClient.dataStream; @@ -417,7 +415,7 @@ public class NetClient implements ApplicationListener{ } @Remote(variants = Variant.both, priority = PacketPriority.low, unreliable = true) - public static void onBlockSnapshot(short amount, short dataLen, byte[] data){ + public static void blockSnapshot(short amount, short dataLen, byte[] data){ try{ netClient.byteStream.setBytes(net.decompressSnapshot(data, dataLen)); DataInputStream input = netClient.dataStream; @@ -437,7 +435,7 @@ public class NetClient implements ApplicationListener{ } @Remote(variants = Variant.one, priority = PacketPriority.low, unreliable = true) - public static void onStateSnapshot(float waveTime, int wave, int enemies, boolean paused, short coreDataLen, byte[] coreData){ + public static void stateSnapshot(float waveTime, int wave, int enemies, boolean paused, short coreDataLen, byte[] coreData){ try{ if(wave > state.wave){ state.wave = wave; @@ -478,7 +476,7 @@ public class NetClient implements ApplicationListener{ }else if(!connecting){ net.disconnect(); }else{ //...must be connecting - timeoutTime += Time.delta(); + timeoutTime += Time.delta; if(timeoutTime > dataTimeout){ Log.err("Failed to load data!"); ui.loadfrag.hide(); @@ -505,7 +503,7 @@ public class NetClient implements ApplicationListener{ net.setClientLoaded(true); Core.app.post(Call::connectConfirm); Time.runTask(40f, platform::updateRPC); - Core.app.post(() -> ui.loadfrag.hide()); + Core.app.post(ui.loadfrag::hide); } private void reset(){ @@ -517,7 +515,7 @@ public class NetClient implements ApplicationListener{ quiet = false; lastSent = 0; - Groups.all.clear(); + Groups.clear(); ui.chatfrag.clearMessages(); } @@ -528,6 +526,7 @@ public class NetClient implements ApplicationListener{ /** Disconnects, resetting state to the menu. */ public void disconnectQuietly(){ quiet = true; + connecting = false; net.disconnect(); } @@ -565,21 +564,22 @@ public class NetClient implements ApplicationListener{ Unit unit = player.dead() ? Nulls.unit : player.unit(); - Call.onClientShapshot(lastSent++, + Call.clientShapshot(lastSent++, + player.dead(), unit.x, unit.y, player.unit().aimX(), player.unit().aimY(), unit.rotation, unit instanceof Mechc ? ((Mechc)unit).baseRotation() : 0, unit.vel.x, unit.vel.y, player.miner().mineTile(), - control.input.isBoosting, control.input.isShooting, ui.chatfrag.shown(), + player.boosting, player.shooting, ui.chatfrag.shown(), requests, Core.camera.position.x, Core.camera.position.y, Core.camera.width * viewScale, Core.camera.height * viewScale); } if(timer.get(1, 60)){ - Call.onPing(Time.millis()); + Call.ping(Time.millis()); } } diff --git a/core/src/mindustry/core/NetServer.java b/core/src/mindustry/core/NetServer.java index 06149f36e3..42dfb92edb 100644 --- a/core/src/mindustry/core/NetServer.java +++ b/core/src/mindustry/core/NetServer.java @@ -34,13 +34,13 @@ import static arc.util.Log.*; import static mindustry.Vars.*; public class NetServer implements ApplicationListener{ - private final static int maxSnapshotSize = 430, timerBlockSync = 0; - private final static float serverSyncTime = 12, blockSyncTime = 60 * 8; - private final static FloatBuffer fbuffer = FloatBuffer.allocate(20); - private final static Vec2 vector = new Vec2(); - private final static Rect viewport = new Rect(); + private static final int maxSnapshotSize = 430, timerBlockSync = 0; + private static final float serverSyncTime = 12, blockSyncTime = 60 * 8; + private static final FloatBuffer fbuffer = FloatBuffer.allocate(20); + private static final Vec2 vector = new Vec2(); + private static final Rect viewport = new Rect(); /** If a player goes away of their server-side coordinates by this distance, they get teleported back. */ - private final static float correctDist = 16f; + private static final float correctDist = 16f; public final Administration admins = new Administration(); public final CommandHandler clientCommands = new CommandHandler("/"); @@ -162,7 +162,7 @@ public class NetServer implements ApplicationListener{ info.lastName = packet.name; info.id = packet.uuid; admins.save(); - Call.onInfoMessage(con, "You are not whitelisted here."); + Call.infoMessage(con, "You are not whitelisted here."); Log.info("&lcDo &lywhitelist-add @&lc to whitelist the player &lb'@'", packet.uuid, packet.name); con.kick(KickReason.whitelist); return; @@ -330,8 +330,8 @@ public class NetServer implements ApplicationListener{ votes += d; voted.addAll(player.uuid(), admins.getInfo(player.uuid()).lastIP); - Call.sendMessage(Strings.format("[orange]@[lightgray] has voted on kicking[orange] @[].[accent] (@/@)\n[lightgray]Type[orange] /vote [] to agree.", - player.name, target.name, votes, votesRequired())); + Call.sendMessage(Strings.format("[lightgray]A player has voted on kicking[orange] @[].[accent] (@/@)\n[lightgray]Type[orange] /vote [] to agree.", + target.name, votes, votesRequired())); } boolean checkPass(){ @@ -453,7 +453,7 @@ public class NetServer implements ApplicationListener{ } player.getInfo().lastSyncTime = Time.millis(); - Call.onWorldDataBegin(player.con); + Call.worldDataBegin(player.con); netServer.sendWorldData(player); } }); @@ -501,7 +501,7 @@ public class NetServer implements ApplicationListener{ if(player.con.hasConnected){ Events.fire(new PlayerLeave(player)); if(Config.showConnectMessages.bool()) Call.sendMessage("[accent]" + player.name + "[accent] has disconnected."); - Call.onPlayerDisconnect(player.id()); + Call.playerDisconnect(player.id()); } if(Config.showConnectMessages.bool()) Log.info("&lm[@] &lc@ has disconnected. &lg&fi(@)", player.uuid(), player.name, reason); @@ -526,9 +526,10 @@ public class NetServer implements ApplicationListener{ } @Remote(targets = Loc.client, unreliable = true) - public static void onClientShapshot( + public static void clientShapshot( Player player, int snapshotID, + boolean dead, float x, float y, float pointerX, float pointerY, float rotation, float baseRotation, @@ -538,23 +539,24 @@ public class NetServer implements ApplicationListener{ @Nullable BuildPlan[] requests, float viewX, float viewY, float viewWidth, float viewHeight ){ - NetConnection connection = player.con; - if(connection == null || snapshotID < connection.lastRecievedClientSnapshot) return; + NetConnection con = player.con; + if(con == null || snapshotID < con.lastReceivedClientSnapshot) return; boolean verifyPosition = !player.dead() && netServer.admins.getStrict() && headless; - if(connection.lastRecievedClientTime == 0) connection.lastRecievedClientTime = Time.millis() - 16; + if(con.lastReceivedClientTime == 0) con.lastReceivedClientTime = Time.millis() - 16; - connection.viewX = viewX; - connection.viewY = viewY; - connection.viewWidth = viewWidth; - connection.viewHeight = viewHeight; + con.viewX = viewX; + con.viewY = viewY; + con.viewWidth = viewWidth; + con.viewHeight = viewHeight; //disable shooting when a mech flies if(!player.dead() && player.unit().isFlying() && player.unit() instanceof Mechc){ shooting = false; } + //TODO these need to be assigned elsewhere player.mouseX = pointerX; player.mouseY = pointerY; player.typing = chatting; @@ -582,7 +584,7 @@ public class NetServer implements ApplicationListener{ continue; }else if(!req.breaking && tile.block() == req.block && (!req.block.rotate || tile.rotation() == req.rotation)){ continue; - }else if(connection.rejectedRequests.contains(r -> r.breaking == req.breaking && r.x == req.x && r.y == req.y)){ //check if request was recently rejected, and skip it if so + }else if(con.rejectedRequests.contains(r -> r.breaking == req.breaking && r.x == req.x && r.y == req.y)){ //check if request was recently rejected, and skip it if so continue; }else if(!netServer.admins.allowAction(player, req.breaking ? ActionType.breakBlock : ActionType.placeBlock, tile, action -> { //make sure request is allowed by the server action.block = req.block; @@ -591,33 +593,39 @@ public class NetServer implements ApplicationListener{ })){ //force the player to remove this request if that's not the case Call.removeQueueBlock(player.con, req.x, req.y, req.breaking); - connection.rejectedRequests.add(req); + con.rejectedRequests.add(req); continue; } player.builder().plans().addLast(req); } } - connection.rejectedRequests.clear(); + con.rejectedRequests.clear(); if(!player.dead()){ Unit unit = player.unit(); - unit.vel().set(xVelocity, yVelocity).limit(unit.type().speed); - long elapsed = Time.timeSinceMillis(connection.lastRecievedClientTime); - float maxSpeed = player.dead() ? Float.MAX_VALUE : player.unit().type().speed; + unit.vel.set(xVelocity, yVelocity).limit(unit.type().speed); + long elapsed = Time.timeSinceMillis(con.lastReceivedClientTime); + float maxSpeed = player.unit().type().speed; float maxMove = elapsed / 1000f * 60f * maxSpeed * 1.1f; - if(connection.lastUnit != unit && !player.dead()){ - connection.lastUnit = unit; - connection.lastPosition.set(unit); + if(con.lastUnit != unit){ + con.lastUnit = unit; + con.lastPosition.set(unit); } - vector.set(x, y).sub(connection.lastPosition); + //if the player think they're dead their position should be ignored + if(dead){ + x = unit.x; + y = unit.y; + } + + vector.set(x, y).sub(con.lastPosition); vector.limit(maxMove); - float prevx = unit.x(), prevy = unit.y(); - unit.set(connection.lastPosition); + float prevx = unit.x, prevy = unit.y; + unit.set(con.lastPosition); if(!unit.isFlying()){ unit.move(vector.x, vector.y); }else{ @@ -625,21 +633,15 @@ public class NetServer implements ApplicationListener{ } //set last position after movement - connection.lastPosition.set(unit); - float newx = unit.x(), newy = unit.y(); + con.lastPosition.set(unit); + float newx = unit.x, newy = unit.y; if(!verifyPosition){ unit.set(prevx, prevy); newx = x; newy = y; - }else if(!Mathf.within(x, y, newx, newy, correctDist)){ - Call.onPositionSet(player.con, newx, newy); //teleport and correct position when necessary - } - - //reset player to previous synced position so it gets interpolated - //the server does not interpolate - if(!headless){ - unit.set(prevx, prevy); + }else if(!Mathf.within(x, y, newx, newy, correctDist) && !dead){ + Call.setPosition(player.con, newx, newy); //teleport and correct position when necessary } //write sync data to the buffer @@ -647,8 +649,8 @@ public class NetServer implements ApplicationListener{ fbuffer.position(0); //now, put the new position, rotation and baserotation into the buffer so it can be read + //TODO this is terrible if(unit instanceof Mechc) fbuffer.put(baseRotation); //base rotation is optional - fbuffer.put(unit.elevation()); fbuffer.put(rotation); //rotation is always there fbuffer.put(newx); fbuffer.put(newy); @@ -657,16 +659,16 @@ public class NetServer implements ApplicationListener{ //read sync data so it can be used for interpolation for the server unit.readSyncManual(fbuffer); }else{ - player.x(x); - player.y(y); + player.x = x; + player.y = y; } - connection.lastRecievedClientSnapshot = snapshotID; - connection.lastRecievedClientTime = Time.millis(); + con.lastReceivedClientSnapshot = snapshotID; + con.lastReceivedClientTime = Time.millis(); } @Remote(targets = Loc.client, called = Loc.server) - public static void onAdminRequest(Player player, Player other, AdminAction action){ + public static void adminRequest(Player player, Player other, AdminAction action){ if(!player.admin){ Log.warn("ACCESS DENIED: Player @ / @ attempted to perform admin action without proper security access.", @@ -682,7 +684,7 @@ public class NetServer implements ApplicationListener{ if(action == AdminAction.wave){ //no verification is done, so admins can hypothetically spam waves //not a real issue, because server owners may want to do just that - state.wavetime = 0f; + logic.skipWave(); }else if(action == AdminAction.ban){ netServer.admins.banPlayerIP(other.con.address); other.kick(KickReason.banned); @@ -693,9 +695,9 @@ public class NetServer implements ApplicationListener{ }else if(action == AdminAction.trace){ TraceInfo info = new TraceInfo(other.con.address, other.uuid(), other.con.modclient, other.con.mobile); if(player.con != null){ - Call.onTraceInfo(player.con, other, info); + Call.traceInfo(player.con, other, info); }else{ - NetClient.onTraceInfo(other, info); + NetClient.traceInfo(other, info); } Log.info("&lc@ has requested trace info of @.", player.name, other.name); } @@ -785,7 +787,7 @@ public class NetServer implements ApplicationListener{ if(syncStream.size() > maxSnapshotSize){ dataStream.close(); byte[] stateBytes = syncStream.toByteArray(); - Call.onBlockSnapshot(sent, (short)stateBytes.length, net.compressSnapshot(stateBytes)); + Call.blockSnapshot(sent, (short)stateBytes.length, net.compressSnapshot(stateBytes)); sent = 0; syncStream.reset(); } @@ -794,7 +796,7 @@ public class NetServer implements ApplicationListener{ if(sent > 0){ dataStream.close(); byte[] stateBytes = syncStream.toByteArray(); - Call.onBlockSnapshot(sent, (short)stateBytes.length, net.compressSnapshot(stateBytes)); + Call.blockSnapshot(sent, (short)stateBytes.length, net.compressSnapshot(stateBytes)); } } @@ -813,7 +815,7 @@ public class NetServer implements ApplicationListener{ byte[] stateBytes = syncStream.toByteArray(); //write basic state data. - Call.onStateSnapshot(player.con, state.wavetime, state.wave, state.enemies, state.serverPaused, (short)stateBytes.length, net.compressSnapshot(stateBytes)); + Call.stateSnapshot(player.con, state.wavetime, state.wave, state.enemies, state.serverPaused, (short)stateBytes.length, net.compressSnapshot(stateBytes)); viewport.setSize(player.con.viewWidth, player.con.viewHeight).setCenter(player.con.viewX, player.con.viewY); @@ -832,7 +834,7 @@ public class NetServer implements ApplicationListener{ if(syncStream.size() > maxSnapshotSize){ dataStream.close(); byte[] syncBytes = syncStream.toByteArray(); - Call.onEntitySnapshot(player.con, (short)sent, (short)syncBytes.length, net.compressSnapshot(syncBytes)); + Call.entitySnapshot(player.con, (short)sent, (short)syncBytes.length, net.compressSnapshot(syncBytes)); sent = 0; syncStream.reset(); } @@ -842,7 +844,7 @@ public class NetServer implements ApplicationListener{ dataStream.close(); byte[] syncBytes = syncStream.toByteArray(); - Call.onEntitySnapshot(player.con, (short)sent, (short)syncBytes.length, net.compressSnapshot(syncBytes)); + Call.entitySnapshot(player.con, (short)sent, (short)syncBytes.length, net.compressSnapshot(syncBytes)); } } diff --git a/core/src/mindustry/core/Platform.java b/core/src/mindustry/core/Platform.java index 767bfa993d..83c0c46c5a 100644 --- a/core/src/mindustry/core/Platform.java +++ b/core/src/mindustry/core/Platform.java @@ -1,11 +1,9 @@ package mindustry.core; import arc.*; -import arc.Input.*; import arc.files.*; import arc.func.*; import arc.math.*; -import arc.scene.ui.*; import arc.struct.*; import arc.util.*; import arc.util.serialization.*; @@ -59,29 +57,6 @@ public interface Platform{ return c; } - /** Add a text input dialog that should show up after the field is tapped. */ - default void addDialog(TextField field){ - addDialog(field, 16); - } - - /** See addDialog(). */ - default void addDialog(TextField field, int maxLength){ - if(!mobile) return; //this is mobile only, desktop doesn't need dialogs - - field.tapped(() -> { - TextInput input = new TextInput(); - input.text = field.getText(); - input.maxLength = maxLength; - input.accepted = text -> { - field.clearText(); - field.appendText(text); - field.change(); - Core.input.setOnscreenKeyboardVisible(false); - }; - Core.input.getTextInput(input); - }); - } - /** Update discord RPC. */ default void updateRPC(){ } @@ -136,7 +111,7 @@ public interface Platform{ * @param extension File extension to filter */ default void showFileChooser(boolean open, String extension, Cons cons){ - new FileChooser(open ? "$open" : "$save", file -> file.extension().toLowerCase().equals(extension), open, file -> { + new FileChooser(open ? "$open" : "$save", file -> file.extEquals(extension), open, file -> { if(!open){ cons.get(file.parent().child(file.nameWithoutExtension() + "." + extension)); }else{ @@ -145,6 +120,19 @@ public interface Platform{ }).show(); } + /** + * Show a file chooser for multiple file types. Only supported on desktop. + * @param cons Selection listener + * @param extensions File extensions to filter + */ + default void showMultiFileChooser(Cons cons, String... extensions){ + if(mobile){ + showFileChooser(true, extensions[0], cons); + }else{ + new FileChooser("$open", file -> Structs.contains(extensions, file.extension().toLowerCase()), true, cons).show(); + } + } + /** Hide the app. Android only. */ default void hide(){ } diff --git a/core/src/mindustry/core/Renderer.java b/core/src/mindustry/core/Renderer.java index a60dbbefc6..5b0b0a00ef 100644 --- a/core/src/mindustry/core/Renderer.java +++ b/core/src/mindustry/core/Renderer.java @@ -63,7 +63,7 @@ public class Renderer implements ApplicationListener{ camerascale = Mathf.lerpDelta(camerascale, targetscale, 0.1f); if(landTime > 0){ - landTime -= Time.delta(); + landTime -= Time.delta; landscale = Interp.pow5In.apply(minZoomScl, Scl.scl(4f), 1f - landTime / Fx.coreLand.lifetime); camerascale = landscale; weatherAlpha = 0f; @@ -172,8 +172,8 @@ public class Renderer implements ApplicationListener{ if(shaketime > 0){ float intensity = shakeIntensity * (settings.getInt("screenshake", 4) / 4f) * scale; camera.position.add(Mathf.range(intensity), Mathf.range(intensity)); - shakeIntensity -= 0.25f * Time.delta(); - shaketime -= Time.delta(); + shakeIntensity -= 0.25f * Time.delta; + shaketime -= Time.delta; shakeIntensity = Mathf.clamp(shakeIntensity, 0f, 100f); }else{ shakeIntensity = 0f; diff --git a/core/src/mindustry/core/UI.java b/core/src/mindustry/core/UI.java index 904dcb9b80..196937d548 100644 --- a/core/src/mindustry/core/UI.java +++ b/core/src/mindustry/core/UI.java @@ -63,7 +63,7 @@ public class UI implements ApplicationListener, Loadable{ public DatabaseDialog database; public ContentInfoDialog content; public PlanetDialog planet; - public TechTreeDialog tech; + public ResearchDialog research; public SchematicsDialog schematics; public ModsDialog mods; public ColorPicker picker; @@ -175,17 +175,17 @@ public class UI implements ApplicationListener, Loadable{ maps = new MapsDialog(); content = new ContentInfoDialog(); planet = new PlanetDialog(); - tech = new TechTreeDialog(); + research = new ResearchDialog(); mods = new ModsDialog(); schematics = new SchematicsDialog(); Group group = Core.scene.root; menuGroup.setFillParent(true); - menuGroup.touchable(Touchable.childrenOnly); + menuGroup.touchable = Touchable.childrenOnly; menuGroup.visible(() -> state.isMenu()); hudGroup.setFillParent(true); - hudGroup.touchable(Touchable.childrenOnly); + hudGroup.touchable = Touchable.childrenOnly; hudGroup.visible(() -> state.isGame()); Core.scene.add(menuGroup); @@ -292,7 +292,7 @@ public class UI implements ApplicationListener, Loadable{ public void showInfoToast(String info, float duration){ Table table = new Table(); table.setFillParent(true); - table.touchable(Touchable.disabled); + table.touchable = Touchable.disabled; table.update(() -> { if(state.isMenu()) table.remove(); }); @@ -305,7 +305,7 @@ public class UI implements ApplicationListener, Loadable{ public void showInfoPopup(String info, float duration, int align, int top, int left, int bottom, int right){ Table table = new Table(); table.setFillParent(true); - table.touchable(Touchable.disabled); + table.touchable = Touchable.disabled; table.update(() -> { if(state.isMenu()) table.remove(); }); @@ -318,7 +318,7 @@ public class UI implements ApplicationListener, Loadable{ public void showLabel(String info, float duration, float worldx, float worldy){ Table table = new Table(); table.setFillParent(true); - table.touchable(Touchable.disabled); + table.touchable = Touchable.disabled; table.update(() -> { if(state.isMenu()) table.remove(); }); @@ -467,6 +467,15 @@ public class UI implements ApplicationListener, Loadable{ dialog.show(); } + public void announce(String text){ + Table t = new Table(); + t.background(Styles.black3).margin(8f) + .add(text).style(Styles.outlineLabel); + t.update(() -> t.setPosition(Core.graphics.getWidth()/2f, Core.graphics.getHeight()/2f, Align.center)); + t.actions(Actions.fadeOut(3, Interp.pow4In)); + Core.scene.add(t); + } + public void showOkText(String title, String text, Runnable confirmed){ BaseDialog dialog = new BaseDialog(title); dialog.cont.add(text).width(500f).wrap().pad(4f).get().setAlignment(Align.center, Align.center); diff --git a/core/src/mindustry/core/World.java b/core/src/mindustry/core/World.java index fb9d5585eb..09d70ed31a 100644 --- a/core/src/mindustry/core/World.java +++ b/core/src/mindustry/core/World.java @@ -110,14 +110,14 @@ public class World{ } @Nullable - public Building ent(int x, int y){ + public Building build(int x, int y){ Tile tile = tile(x, y); if(tile == null) return null; return tile.build; } @Nullable - public Building ent(int pos){ + public Building build(int pos){ Tile tile = tile(pos); if(tile == null) return null; return tile.build; @@ -134,8 +134,8 @@ public class World{ } @Nullable - public Building entWorld(float x, float y){ - return ent(Math.round(x / tilesize), Math.round(y / tilesize)); + public Building buildWorld(float x, float y){ + return build(Math.round(x / tilesize), Math.round(y / tilesize)); } public int toTile(float coord){ diff --git a/core/src/mindustry/editor/DrawOperation.java b/core/src/mindustry/editor/DrawOperation.java index 0d6607e8ff..c28219f629 100755 --- a/core/src/mindustry/editor/DrawOperation.java +++ b/core/src/mindustry/editor/DrawOperation.java @@ -52,7 +52,7 @@ public class DrawOperation{ }else if(type == OpType.rotation.ordinal()){ return tile.rotation(); }else if(type == OpType.team.ordinal()){ - return tile.getTeamID(); + return (byte)tile.getTeamID(); }else if(type == OpType.overlay.ordinal()){ return tile.overlayID(); } diff --git a/core/src/mindustry/editor/EditorTile.java b/core/src/mindustry/editor/EditorTile.java index 69bfbb21fd..45965b4dab 100644 --- a/core/src/mindustry/editor/EditorTile.java +++ b/core/src/mindustry/editor/EditorTile.java @@ -55,7 +55,7 @@ public class EditorTile extends Tile{ op(OpType.block, block.id); if(rotation != 0) op(OpType.rotation, (byte)rotation); - if(team() != Team.derelict) op(OpType.team, team().id); + if(team() != Team.derelict) op(OpType.team, (byte)team().id); super.setBlock(type, team, rotation); } @@ -67,7 +67,7 @@ public class EditorTile extends Tile{ } if(getTeamID() == team.id) return; - op(OpType.team, getTeamID()); + op(OpType.team, (byte)getTeamID()); super.setTeam(team); } @@ -125,7 +125,7 @@ public class EditorTile extends Tile{ if(block.hasEntity()){ build = entityprov.get().init(this, team, false); build.cons(new ConsumeModule(build)); - if(block.hasItems) build.items(new ItemModule()); + if(block.hasItems) build.items = new ItemModule(); if(block.hasLiquids) build.liquids(new LiquidModule()); if(block.hasPower) build.power(new PowerModule()); } diff --git a/core/src/mindustry/editor/EditorTool.java b/core/src/mindustry/editor/EditorTool.java index a6493d4401..47053049e2 100644 --- a/core/src/mindustry/editor/EditorTool.java +++ b/core/src/mindustry/editor/EditorTool.java @@ -139,7 +139,7 @@ public enum EditorTool{ if(tile.synthetic()){ Team dest = tile.team(); if(dest == editor.drawTeam) return; - fill(editor, x, y, false, t -> t.getTeamID() == (int)dest.id && t.synthetic(), t -> t.setTeam(editor.drawTeam)); + fill(editor, x, y, false, t -> t.getTeamID() == dest.id && t.synthetic(), t -> t.setTeam(editor.drawTeam)); } } } diff --git a/core/src/mindustry/editor/MapEditorDialog.java b/core/src/mindustry/editor/MapEditorDialog.java index c62dcfecfd..8fcd9f8d44 100644 --- a/core/src/mindustry/editor/MapEditorDialog.java +++ b/core/src/mindustry/editor/MapEditorDialog.java @@ -234,6 +234,7 @@ public class MapEditorDialog extends Dialog implements Disposable{ show(); state.rules = (lastSavedRules == null ? new Rules() : lastSavedRules); lastSavedRules = null; + saved = false; editor.renderer().updateAll(); } @@ -248,10 +249,10 @@ public class MapEditorDialog extends Dialog implements Disposable{ state.rules = Gamemode.editor.apply(lastSavedRules.copy()); state.rules.sector = null; state.map = new Map(StringMap.of( - "name", "Editor Playtesting", - "width", editor.width(), - "height", editor.height() - )); + "name", "Editor Playtesting", + "width", editor.width(), + "height", editor.height() + )); world.endMapLoad(); //add entities so they update. is this really needed? for(Tile tile : world.tiles){ @@ -474,7 +475,7 @@ public class MapEditorDialog extends Dialog implements Disposable{ mode.setColor(Pal.remove); mode.update(() -> mode.setText(tool.mode == -1 ? "" : "M" + (tool.mode + 1) + " ")); mode.setAlignment(Align.bottomRight, Align.bottomRight); - mode.touchable(Touchable.disabled); + mode.touchable = Touchable.disabled; tools.stack(button, mode); }; diff --git a/core/src/mindustry/editor/MapGenerateDialog.java b/core/src/mindustry/editor/MapGenerateDialog.java index 0fafa14815..ff372999d1 100644 --- a/core/src/mindustry/editor/MapGenerateDialog.java +++ b/core/src/mindustry/editor/MapGenerateDialog.java @@ -214,7 +214,7 @@ public class MapGenerateDialog extends BaseDialog{ } void rebuildFilters(){ - int cols = Math.max((int)(Math.max(filterTable.getParent().getWidth(), Core.graphics.getWidth()/2f * 0.9f) / Scl.scl(290f)), 1); + int cols = Math.max((int)(Math.max(filterTable.parent.getWidth(), Core.graphics.getWidth()/2f * 0.9f) / Scl.scl(290f)), 1); filterTable.clearChildren(); filterTable.top().left(); int i = 0; @@ -409,7 +409,7 @@ public class MapGenerateDialog extends BaseDialog{ this.floor = floor.id; this.block = wall.id; this.ore = ore.id; - this.team = team.id; + this.team = (byte)team.id; this.rotation = (byte)rotation; } diff --git a/core/src/mindustry/editor/MapInfoDialog.java b/core/src/mindustry/editor/MapInfoDialog.java index a4b6176375..b5a7e435ea 100644 --- a/core/src/mindustry/editor/MapInfoDialog.java +++ b/core/src/mindustry/editor/MapInfoDialog.java @@ -37,7 +37,7 @@ public class MapInfoDialog extends BaseDialog{ TextField name = t.field(tags.get("name", ""), text -> { tags.put("name", text); - }).size(400, 55f).get(); + }).size(400, 55f).addInputDialog(50).get(); name.setMessageText("$unknown"); t.row(); @@ -45,7 +45,7 @@ public class MapInfoDialog extends BaseDialog{ TextArea description = t.area(tags.get("description", ""), Styles.areaField, text -> { tags.put("description", text); - }).size(400f, 140f).get(); + }).size(400f, 140f).addInputDialog(1000).get(); t.row(); t.add("$editor.author").padRight(8).left(); @@ -53,7 +53,7 @@ public class MapInfoDialog extends BaseDialog{ TextField author = t.field(tags.get("author", Core.settings.getString("mapAuthor", "")), text -> { tags.put("author", text); Core.settings.put("mapAuthor", text); - }).size(400, 55f).get(); + }).size(400, 55f).addInputDialog(50).get(); author.setMessageText("$unknown"); t.row(); @@ -82,9 +82,6 @@ public class MapInfoDialog extends BaseDialog{ description.change(); author.change(); - Vars.platform.addDialog(name, 50); - Vars.platform.addDialog(author, 50); - Vars.platform.addDialog(description, 1000); t.margin(16f); }); } diff --git a/core/src/mindustry/editor/MapRenderer.java b/core/src/mindustry/editor/MapRenderer.java index 91345b37ea..63c27ade24 100644 --- a/core/src/mindustry/editor/MapRenderer.java +++ b/core/src/mindustry/editor/MapRenderer.java @@ -112,14 +112,14 @@ public class MapRenderer implements Disposable{ if(wall.rotate){ mesh.draw(idxWall, region, - wx * tilesize + wall.offset(), wy * tilesize + wall.offset(), + wx * tilesize + wall.offset, wy * tilesize + wall.offset, region.getWidth() * Draw.scl, region.getHeight() * Draw.scl, tile.rotdeg() - 90); }else{ float width = region.getWidth() * Draw.scl, height = region.getHeight() * Draw.scl; mesh.draw(idxWall, region, - wx * tilesize + wall.offset() + (tilesize - width) / 2f, - wy * tilesize + wall.offset() + (tilesize - height) / 2f, + wx * tilesize + wall.offset + (tilesize - width) / 2f, + wy * tilesize + wall.offset + (tilesize - height) / 2f, width, height); } }else{ diff --git a/core/src/mindustry/editor/MapResizeDialog.java b/core/src/mindustry/editor/MapResizeDialog.java index 0b493fc477..29178f3976 100644 --- a/core/src/mindustry/editor/MapResizeDialog.java +++ b/core/src/mindustry/editor/MapResizeDialog.java @@ -5,7 +5,6 @@ import arc.math.*; import arc.scene.ui.TextField.*; import arc.scene.ui.layout.*; import arc.util.*; -import mindustry.*; import mindustry.ui.dialogs.*; public class MapResizeDialog extends BaseDialog{ @@ -25,10 +24,10 @@ public class MapResizeDialog extends BaseDialog{ table.add(w ? "$width" : "$height").padRight(8f); table.defaults().height(60f).padTop(8); - Vars.platform.addDialog(table.field((w ? width : height) + "", TextFieldFilter.digitsOnly, value -> { + table.field((w ? width : height) + "", TextFieldFilter.digitsOnly, value -> { int val = Integer.parseInt(value); if(w) width = val; else height = val; - }).valid(value -> Strings.canParsePostiveInt(value) && Integer.parseInt(value) <= maxSize && Integer.parseInt(value) >= minSize).get()); + }).valid(value -> Strings.canParsePositiveInt(value) && Integer.parseInt(value) <= maxSize && Integer.parseInt(value) >= minSize).addInputDialog(3); table.row(); } diff --git a/core/src/mindustry/editor/MapSaveDialog.java b/core/src/mindustry/editor/MapSaveDialog.java deleted file mode 100644 index 0bd9775d14..0000000000 --- a/core/src/mindustry/editor/MapSaveDialog.java +++ /dev/null @@ -1,73 +0,0 @@ -package mindustry.editor; - -import arc.func.*; -import arc.scene.ui.*; -import mindustry.*; -import mindustry.maps.*; -import mindustry.ui.dialogs.*; - -import static mindustry.Vars.ui; - -public class MapSaveDialog extends BaseDialog{ - private TextField field; - private Cons listener; - - public MapSaveDialog(Cons cons){ - super("$editor.savemap"); - field = new TextField(); - listener = cons; - - Vars.platform.addDialog(field); - - shown(() -> { - cont.clear(); - cont.label(() -> { - Map map = Vars.maps.byName(field.getText()); - if(map != null){ - if(map.custom){ - return "$editor.overwrite"; - }else{ - return "$editor.failoverwrite"; - } - } - return ""; - }).colspan(2); - cont.row(); - cont.add("$editor.mapname").padRight(14f); - cont.add(field).size(220f, 48f); - }); - - buttons.defaults().size(200f, 50f).pad(2f); - buttons.button("$cancel", this::hide); - - TextButton button = new TextButton("$save"); - button.clicked(() -> { - if(!invalid()){ - cons.get(field.getText()); - hide(); - } - }); - button.setDisabled(this::invalid); - buttons.add(button); - } - - public void save(){ - if(!invalid()){ - listener.get(field.getText()); - }else{ - ui.showErrorMessage("$editor.failoverwrite"); - } - } - - public void setFieldText(String text){ - field.setText(text); - } - - private boolean invalid(){ - if(field.getText().isEmpty()){ - return true; - } - Map map = Vars.maps.byName(field.getText()); - return map != null && !map.custom; - } -} diff --git a/core/src/mindustry/editor/MapView.java b/core/src/mindustry/editor/MapView.java index 728a5a2440..45dfa8d73a 100644 --- a/core/src/mindustry/editor/MapView.java +++ b/core/src/mindustry/editor/MapView.java @@ -46,7 +46,7 @@ public class MapView extends Element implements GestureListener{ } Core.input.getInputProcessors().insert(0, new GestureDetector(20, 0.5f, 2, 0.15f, this)); - touchable(Touchable.enabled); + this.touchable = Touchable.enabled; Point2 firstTouch = new Point2(); diff --git a/core/src/mindustry/editor/OperationStack.java b/core/src/mindustry/editor/OperationStack.java index 623bd1a3cd..0558de14bc 100755 --- a/core/src/mindustry/editor/OperationStack.java +++ b/core/src/mindustry/editor/OperationStack.java @@ -3,7 +3,7 @@ package mindustry.editor; import arc.struct.Seq; public class OperationStack{ - private final static int maxSize = 10; + private static final int maxSize = 10; private Seq stack = new Seq<>(); private int index = 0; diff --git a/core/src/mindustry/editor/WaveInfoDialog.java b/core/src/mindustry/editor/WaveInfoDialog.java index 77574793af..d3c8cbc693 100644 --- a/core/src/mindustry/editor/WaveInfoDialog.java +++ b/core/src/mindustry/editor/WaveInfoDialog.java @@ -25,7 +25,7 @@ import static mindustry.Vars.*; import static mindustry.game.SpawnGroup.never; public class WaveInfoDialog extends BaseDialog{ - private final static int displayed = 20; + private static final int displayed = 20; private Seq groups = new Seq<>(); private Table table, preview; @@ -93,7 +93,7 @@ public class WaveInfoDialog extends BaseDialog{ }).growX().height(70f); }), new Label("$waves.none"){{ visible(() -> groups.isEmpty()); - touchable(Touchable.disabled); + this.touchable = Touchable.disabled; setWrap(true); setAlignment(Align.center, Align.center); }}).width(390f).growY(); @@ -104,7 +104,7 @@ public class WaveInfoDialog extends BaseDialog{ m.button("-", () -> { }).update(t -> { if(t.getClickListener().isPressed()){ - updateTimer += Time.delta(); + updateTimer += Time.delta; if(updateTimer >= updatePeriod){ start = Math.max(start - 1, 0); updateTimer = 0f; @@ -118,7 +118,7 @@ public class WaveInfoDialog extends BaseDialog{ m.button("+", () -> { }).update(t -> { if(t.getClickListener().isPressed()){ - updateTimer += Time.delta(); + updateTimer += Time.delta; if(updateTimer >= updatePeriod){ start++; updateTimer = 0f; @@ -149,14 +149,14 @@ public class WaveInfoDialog extends BaseDialog{ t.row(); t.table(spawns -> { spawns.field("" + (group.begin + 1), TextFieldFilter.digitsOnly, text -> { - if(Strings.canParsePostiveInt(text)){ + if(Strings.canParsePositiveInt(text)){ group.begin = Strings.parseInt(text) - 1; updateWaves(); } }).width(100f); spawns.add("$waves.to").padLeft(4).padRight(4); spawns.field(group.end == never ? "" : (group.end + 1) + "", TextFieldFilter.digitsOnly, text -> { - if(Strings.canParsePostiveInt(text)){ + if(Strings.canParsePositiveInt(text)){ group.end = Strings.parseInt(text) - 1; updateWaves(); }else if(text.isEmpty()){ @@ -169,7 +169,7 @@ public class WaveInfoDialog extends BaseDialog{ t.table(p -> { p.add("$waves.every").padRight(4); p.field(group.spacing + "", TextFieldFilter.digitsOnly, text -> { - if(Strings.canParsePostiveInt(text) && Strings.parseInt(text) > 0){ + if(Strings.canParsePositiveInt(text) && Strings.parseInt(text) > 0){ group.spacing = Strings.parseInt(text); updateWaves(); } @@ -180,7 +180,7 @@ public class WaveInfoDialog extends BaseDialog{ t.row(); t.table(a -> { a.field(group.unitAmount + "", TextFieldFilter.digitsOnly, text -> { - if(Strings.canParsePostiveInt(text)){ + if(Strings.canParsePositiveInt(text)){ group.unitAmount = Strings.parseInt(text); updateWaves(); } @@ -198,7 +198,7 @@ public class WaveInfoDialog extends BaseDialog{ t.row(); t.table(a -> { a.field((int)group.shields + "", TextFieldFilter.digitsOnly, text -> { - if(Strings.canParsePostiveInt(text)){ + if(Strings.canParsePositiveInt(text)){ group.shields = Strings.parseInt(text); updateWaves(); } @@ -206,7 +206,7 @@ public class WaveInfoDialog extends BaseDialog{ a.add(" + "); a.field((int)group.shieldScaling + "", TextFieldFilter.digitsOnly, text -> { - if(Strings.canParsePostiveInt(text)){ + if(Strings.canParsePositiveInt(text)){ group.shieldScaling = Strings.parseInt(text); updateWaves(); } diff --git a/core/src/mindustry/entities/Damage.java b/core/src/mindustry/entities/Damage.java index f488dcbfc4..a8d743a320 100644 --- a/core/src/mindustry/entities/Damage.java +++ b/core/src/mindustry/entities/Damage.java @@ -26,6 +26,8 @@ public class Damage{ private static GridBits bits = new GridBits(30, 30); private static IntQueue propagation = new IntQueue(); private static IntSet collidedBlocks = new IntSet(); + private static Building tmpBuilding; + private static Unit tmpUnit; /** Creates a dynamic explosion based on specified parameters. */ public static void dynamicExplosion(float x, float y, float flammability, float explosiveness, float power, float radius, Color color){ @@ -84,23 +86,25 @@ public class Damage{ collidedBlocks.clear(); tr.trns(angle, length); Intc2 collider = (cx, cy) -> { - Building tile = world.ent(cx, cy); + Building tile = world.build(cx, cy); if(tile != null && !collidedBlocks.contains(tile.pos()) && tile.team() != team && tile.collide(hitter)){ tile.collision(hitter); collidedBlocks.add(tile.pos()); - hitter.type().hit(hitter, tile.x(), tile.y()); + hitter.type.hit(hitter, tile.x, tile.y); } }; - world.raycastEachWorld(x, y, x + tr.x, y + tr.y, (cx, cy) -> { - collider.get(cx, cy); - if(large){ - for(Point2 p : Geometry.d4){ - collider.get(cx + p.x, cy + p.y); + if(hitter.type.collidesGround){ + world.raycastEachWorld(x, y, x + tr.x, y + tr.y, (cx, cy) -> { + collider.get(cx, cy); + if(large){ + for(Point2 p : Geometry.d4){ + collider.get(cx + p.x, cy + p.y); + } } - } - return false; - }); + return false; + }); + } rect.setPosition(x, y).setSize(tr.x, tr.y); float x2 = tr.x + x, y2 = tr.y + y; @@ -123,6 +127,8 @@ public class Damage{ rect.height += expand * 2; Cons cons = e -> { + if(!e.checkTarget(hitter.type.collidesAir, hitter.type.collidesGround)) return; + e.hitbox(hitrect); Rect other = hitrect; other.y -= expand; @@ -142,6 +148,73 @@ public class Damage{ Units.nearbyEnemies(team, rect, cons); } + /** + * Casts forward in a line. + * @return the first encountered object. + */ + public static Healthc linecast(Bullet hitter, float x, float y, float angle, float length){ + tr.trns(angle, length); + + if(hitter.type.collidesGround){ + tmpBuilding = null; + + world.raycastEachWorld(x, y, x + tr.x, y + tr.y, (cx, cy) -> { + Building tile = world.build(cx, cy); + if(tile != null && tile.team != hitter.team){ + tmpBuilding = tile; + //TODO return tile + return true; + } + return false; + }); + + if(tmpBuilding != null) return tmpBuilding; + } + + rect.setPosition(x, y).setSize(tr.x, tr.y); + float x2 = tr.x + x, y2 = tr.y + y; + + if(rect.width < 0){ + rect.x += rect.width; + rect.width *= -1; + } + + if(rect.height < 0){ + rect.y += rect.height; + rect.height *= -1; + } + + float expand = 3f; + + rect.y -= expand; + rect.x -= expand; + rect.width += expand * 2; + rect.height += expand * 2; + + tmpUnit = null; + + Cons cons = e -> { + if((tmpUnit != null && e.dst2(x, y) > tmpUnit.dst2(x, y)) || !e.checkTarget(hitter.type.collidesAir, hitter.type.collidesGround)) return; + + e.hitbox(hitrect); + Rect other = hitrect; + other.y -= expand; + other.x -= expand; + other.width += expand * 2; + other.height += expand * 2; + + Vec2 vec = Geometry.raycastRect(x, y, x2, y2, other); + + if(vec != null){ + tmpUnit = e; + } + }; + + Units.nearbyEnemies(hitter.team, rect, cons); + + return tmpUnit; + } + /** Damages all entities and blocks in a radius that are enemies of the team. */ public static void damageUnits(Team team, float x, float y, float size, float damage, Boolf predicate, Cons acceptor){ Cons cons = entity -> { @@ -225,14 +298,16 @@ public class Damage{ Units.nearby(rect, cons); } - if(!complete){ - int trad = (int)(radius / tilesize); - Tile tile = world.tileWorld(x, y); - if(tile != null){ - tileDamage(team, tile.x, tile.y, trad, damage); + if(ground){ + if(!complete){ + int trad = (int)(radius / tilesize); + Tile tile = world.tileWorld(x, y); + if(tile != null){ + tileDamage(team, tile.x, tile.y, trad, damage); + } + }else{ + completeDamage(team, x, y, radius, damage); } - }else{ - completeDamage(team, x, y, radius, damage); } } diff --git a/core/src/mindustry/entities/Effects.java b/core/src/mindustry/entities/Effects.java index d016a69091..ed4cca412f 100644 --- a/core/src/mindustry/entities/Effects.java +++ b/core/src/mindustry/entities/Effects.java @@ -55,9 +55,16 @@ public class Effects{ } } + public static void decal(TextureRegion region, float x, float y, float rotation){ + decal(region, x, y, rotation, 3600f, Pal.rubble); + } + public static void decal(TextureRegion region, float x, float y, float rotation, float lifetime, Color color){ if(headless || region == null || !Core.atlas.isFound(region)) return; + Tile tile = world.tileWorld(x, y); + if(tile == null || tile.floor().isLiquid) return; + Decal decal = Decal.create(); decal.set(x, y); decal.rotation(rotation); @@ -70,22 +77,15 @@ public class Effects{ public static void scorch(float x, float y, int size){ if(headless) return; - Tile tile = world.tileWorld(x, y); - if(tile == null || tile.floor().isLiquid) return; - size = Mathf.clamp(size, 0, 9); TextureRegion region = Core.atlas.find("scorch-" + size + "-" + Mathf.random(2)); decal(region, x, y, Mathf.random(4) * 90, 3600, Pal.rubble); - } public static void rubble(float x, float y, int blockSize){ if(headless) return; - Tile tile = world.tileWorld(x, y); - if(tile == null || tile.floor().isLiquid) return; - TextureRegion region = Core.atlas.find("rubble-" + blockSize + "-" + (Core.atlas.has("rubble-" + blockSize + "-1") ? Mathf.random(0, 1) : "0")); decal(region, x, y, Mathf.random(4) * 90, 3600, Pal.rubble); } diff --git a/core/src/mindustry/entities/EntityCollisions.java b/core/src/mindustry/entities/EntityCollisions.java index 41a9f21276..2d8402e92c 100644 --- a/core/src/mindustry/entities/EntityCollisions.java +++ b/core/src/mindustry/entities/EntityCollisions.java @@ -24,6 +24,12 @@ public class EntityCollisions{ //entity collisions private Seq arrOut = new Seq<>(); + public void moveCheck(Hitboxc entity, float deltax, float deltay, SolidPred solidCheck){ + if(!solidCheck.solid(entity.tileX(), entity.tileY())){ + move(entity, deltax, deltay, solidCheck); + } + } + public void move(Hitboxc entity, float deltax, float deltay){ move(entity, deltax, deltay, EntityCollisions::solid); } @@ -119,14 +125,19 @@ public class EntityCollisions{ }); } + public static boolean legsSolid(int x, int y){ + Tile tile = world.tile(x, y); + return tile == null || tile.staticDarkness() >= 2; + } + public static boolean waterSolid(int x, int y){ Tile tile = world.tile(x, y); - return tile != null && (tile.solid() || !tile.floor().isLiquid); + return tile == null || (tile.solid() || !tile.floor().isLiquid); } public static boolean solid(int x, int y){ Tile tile = world.tile(x, y); - return tile != null && tile.solid(); + return tile == null || tile.solid(); } private void checkCollide(Hitboxc a, Hitboxc b){ diff --git a/core/src/mindustry/entities/EntityGroup.java b/core/src/mindustry/entities/EntityGroup.java index 80d01ea9cd..f9c6d55316 100644 --- a/core/src/mindustry/entities/EntityGroup.java +++ b/core/src/mindustry/entities/EntityGroup.java @@ -166,6 +166,9 @@ public class EntityGroup implements Iterable{ int idx = array.indexOf(type, true); if(idx != -1){ array.remove(idx); + if(map != null){ + map.remove(type.id()); + } //fix iteration index when removing if(index >= idx){ diff --git a/core/src/mindustry/entities/Fires.java b/core/src/mindustry/entities/Fires.java index 6d329e8f50..e24d34dac4 100644 --- a/core/src/mindustry/entities/Fires.java +++ b/core/src/mindustry/entities/Fires.java @@ -52,9 +52,9 @@ public class Fires{ public static void extinguish(Tile tile, float intensity){ if(tile != null && map.containsKey(tile.pos())){ Fire fire = map.get(tile.pos()); - fire.time(fire.time() + intensity * Time.delta()); + fire.time(fire.time + intensity * Time.delta); Fx.steam.at(fire); - if(fire.time() >= fire.lifetime()){ + if(fire.time >= fire.lifetime){ Events.fire(Trigger.fireExtinguish); } } diff --git a/core/src/mindustry/entities/GroupDefs.java b/core/src/mindustry/entities/GroupDefs.java index 95c456026d..3d2dcc1580 100644 --- a/core/src/mindustry/entities/GroupDefs.java +++ b/core/src/mindustry/entities/GroupDefs.java @@ -4,7 +4,7 @@ import mindustry.annotations.Annotations.*; import mindustry.gen.*; class GroupDefs{ - @GroupDef(value = Entityc.class, mapping = true) G all; + @GroupDef(value = Entityc.class) G all; @GroupDef(value = Playerc.class, mapping = true) G player; @GroupDef(value = Bulletc.class, spatial = true, collide = true) G bullet; @GroupDef(value = Unitc.class, spatial = true, mapping = true) G unit; diff --git a/core/src/mindustry/entities/Lightning.java b/core/src/mindustry/entities/Lightning.java index db37d6c39b..dbc7f616c9 100644 --- a/core/src/mindustry/entities/Lightning.java +++ b/core/src/mindustry/entities/Lightning.java @@ -5,6 +5,7 @@ import arc.math.*; import arc.math.geom.*; import arc.struct.*; import mindustry.content.*; +import mindustry.entities.bullet.*; import mindustry.game.*; import mindustry.gen.*; import mindustry.world.*; @@ -21,22 +22,28 @@ public class Lightning{ private static boolean bhit = false; private static int lastSeed = 0; - /** Create a lighting branch at a location. Use Team.none to damage everyone. */ + /** Create a lighting branch at a location. Use Team.derelict to damage everyone. */ public static void create(Team team, Color color, float damage, float x, float y, float targetAngle, int length){ - createLightingInternal(lastSeed++, team, color, damage, x, y, targetAngle, length); + createLightingInternal(null, lastSeed++, team, color, damage, x, y, targetAngle, length); + } + + /** Create a lighting branch at a location. Uses bullet parameters. */ + public static void create(Bullet bullet, Color color, float damage, float x, float y, float targetAngle, int length){ + createLightingInternal(bullet, lastSeed++, bullet.team, color, damage, x, y, targetAngle, length); } //TODO remote method //@Remote(called = Loc.server, unreliable = true) - private static void createLightingInternal(int seed, Team team, Color color, float damage, float x, float y, float rotation, int length){ + private static void createLightingInternal(Bullet hitter, int seed, Team team, Color color, float damage, float x, float y, float rotation, int length){ random.setSeed(seed); hit.clear(); + BulletType bulletType = hitter != null && !hitter.type.collidesAir ? Bullets.damageLightningGround : Bullets.damageLightning; Seq lines = new Seq<>(); bhit = false; for(int i = 0; i < length / 2; i++){ - Bullets.damageLightning.create(null, team, x, y, 0f, damage, 1f, 1f, null); + bulletType.create(null, team, x, y, 0f, damage, 1f, 1f, hitter); lines.add(new Vec2(x + Mathf.range(3f), y + Mathf.range(3f))); if(lines.size > 1){ @@ -61,7 +68,7 @@ public class Lightning{ entities.clear(); if(hit.size < maxChain){ Units.nearbyEnemies(team, rect, u -> { - if(!hit.contains(u.id())){ + if(!hit.contains(u.id()) && (hitter == null || u.checkTarget(hitter.type.collidesAir, hitter.type.collidesGround))){ entities.add(u); } }); diff --git a/core/src/mindustry/entities/Predict.java b/core/src/mindustry/entities/Predict.java index ef2cd43ad0..03c41e5778 100644 --- a/core/src/mindustry/entities/Predict.java +++ b/core/src/mindustry/entities/Predict.java @@ -24,8 +24,8 @@ public class Predict{ * @return the intercept location */ public static Vec2 intercept(float srcx, float srcy, float dstx, float dsty, float dstvx, float dstvy, float v){ - dstvx /= Time.delta(); - dstvy /= Time.delta(); + dstvx /= Time.delta; + dstvy /= Time.delta; float tx = dstx - srcx, ty = dsty - srcy; @@ -58,8 +58,8 @@ public class Predict{ ddy += ((Hitboxc)dst).deltaY(); } if(src instanceof Hitboxc){ - ddx -= ((Hitboxc)src).deltaX()/(Time.delta()); - ddy -= ((Hitboxc)src).deltaY()/(Time.delta()); + ddx -= ((Hitboxc)src).deltaX()/(Time.delta); + ddy -= ((Hitboxc)src).deltaY()/(Time.delta); } return intercept(src.getX(), src.getY(), dst.getX(), dst.getY(), ddx, ddy, v); } @@ -68,7 +68,7 @@ public class Predict{ * See {@link #intercept(float, float, float, float, float, float, float)}. */ public static Vec2 intercept(Hitboxc src, Hitboxc dst, float v){ - return intercept(src.getX(), src.getY(), dst.getX(), dst.getY(), dst.deltaX() - src.deltaX()/(2f*Time.delta()), dst.deltaY() - src.deltaX()/(2f*Time.delta()), v); + return intercept(src.getX(), src.getY(), dst.getX(), dst.getY(), dst.deltaX() - src.deltaX()/(2f* Time.delta), dst.deltaY() - src.deltaX()/(2f* Time.delta), v); } private static Vec2 quad(float a, float b, float c){ diff --git a/core/src/mindustry/entities/Units.java b/core/src/mindustry/entities/Units.java index ea45bbff6f..d32030775f 100644 --- a/core/src/mindustry/entities/Units.java +++ b/core/src/mindustry/entities/Units.java @@ -3,30 +3,42 @@ package mindustry.entities; import arc.func.*; import arc.math.geom.*; import mindustry.annotations.Annotations.*; +import mindustry.content.*; import mindustry.game.*; import mindustry.gen.*; +import mindustry.type.*; import mindustry.world.*; import static mindustry.Vars.*; /** Utility class for unit and team interactions.*/ public class Units{ - private static Rect hitrect = new Rect(); + private static final Rect hitrect = new Rect(); private static Unit result; private static float cdist; private static boolean boolResult; @Remote(called = Loc.server) - public static void onUnitDeath(Unit unit){ + public static void unitDeath(Unit unit){ unit.killed(); } + @Remote(called = Loc.server) + public static void unitDespawn(Unit unit){ + Fx.unitDespawn.at(unit.x, unit.y, 0, unit); + unit.remove(); + } + /** @return whether a new instance of a unit of this team can be created. */ - public static boolean canCreate(Team team){ - return teamIndex.count(team) < getCap(team); + public static boolean canCreate(Team team, UnitType type){ + return teamIndex.countType(team, type) < getCap(team); } public static int getCap(Team team){ + //wave team has no cap + if((team == state.rules.waveTeam && state.rules.waves) || (state.isCampaign() && team == state.rules.waveTeam)){ + return Integer.MAX_VALUE; + } return state.rules.unitCap + indexer.getExtraUnits(team); } @@ -92,8 +104,7 @@ public class Units{ /** Returns the neareset damaged tile. */ public static Building findDamagedTile(Team team, float x, float y){ - Tile tile = Geometry.findClosest(x, y, indexer.getDamaged(team)); - return tile == null ? null : tile.build; + return Geometry.findClosest(x, y, indexer.getDamaged(team)); } /** Returns the neareset ally tile in a range. */ diff --git a/core/src/mindustry/entities/abilities/Ability.java b/core/src/mindustry/entities/abilities/Ability.java new file mode 100644 index 0000000000..d8aed57239 --- /dev/null +++ b/core/src/mindustry/entities/abilities/Ability.java @@ -0,0 +1,8 @@ +package mindustry.entities.abilities; + +import mindustry.gen.*; + +public interface Ability{ + default void update(Unit unit){} + default void draw(Unit unit){} +} diff --git a/core/src/mindustry/entities/abilities/ForceFieldAbility.java b/core/src/mindustry/entities/abilities/ForceFieldAbility.java new file mode 100644 index 0000000000..bdfa3a9cb5 --- /dev/null +++ b/core/src/mindustry/entities/abilities/ForceFieldAbility.java @@ -0,0 +1,82 @@ +package mindustry.entities.abilities; + +import arc.func.*; +import arc.graphics.*; +import arc.graphics.g2d.*; +import arc.math.*; +import arc.math.geom.*; +import arc.util.*; +import mindustry.content.*; +import mindustry.gen.*; +import mindustry.graphics.*; + +public class ForceFieldAbility implements Ability{ + /** Shield radius. */ + public float radius = 60f; + /** Shield regen speed in damage/tick. */ + public float regen = 0.1f; + /** Maximum shield. */ + public float max = 200f; + /** Cooldown after the shield is broken, in ticks. */ + public float cooldown = 60f * 5; + + private float realRad; + private Unit paramUnit; + private final Cons shieldConsumer = trait -> { + if(trait.team() != paramUnit.team && Intersector.isInsideHexagon(paramUnit.x, paramUnit.y, realRad * 2f, trait.x(), trait.y()) && paramUnit.shield > 0){ + trait.absorb(); + Fx.absorb.at(trait); + + //break shield + if(paramUnit.shield <= trait.damage()){ + paramUnit.shield -= cooldown * regen; + Fx.shieldBreak.at(paramUnit.x, paramUnit.y, radius, paramUnit.team.color); + } + + paramUnit.shield -= trait.damage(); + paramUnit.shieldAlpha = 1f; + } + }; + + public ForceFieldAbility(float radius, float regen, float max, float cooldown){ + this.radius = radius; + this.regen = regen; + this.max = max; + this.cooldown = cooldown; + } + + ForceFieldAbility(){} + + @Override + public void update(Unit unit){ + if(unit.shield < max){ + unit.shield += Time.delta * regen; + } + + if(unit.shield > 0){ + unit.timer2 = Mathf.lerpDelta(unit.timer2, 1f, 0.06f); + paramUnit = unit; + checkRadius(unit); + + Groups.bullet.intersect(unit.x - realRad, unit.y - realRad, realRad * 2f, realRad * 2f, shieldConsumer); + }else{ + unit.timer2 = 0f; + } + } + + @Override + public void draw(Unit unit){ + checkRadius(unit); + + if(unit.shield > 0){ + Draw.z(Layer.shields); + Draw.color(unit.team.color, Color.white, Mathf.clamp(unit.shieldAlpha)); + Fill.poly(unit.x, unit.y, 6, realRad); + } + } + + private void checkRadius(Unit unit){ + //timer2 is used to store radius scale as an effect + realRad = unit.timer2 * radius; + } +} diff --git a/core/src/mindustry/entities/abilities/HealFieldAbility.java b/core/src/mindustry/entities/abilities/HealFieldAbility.java new file mode 100644 index 0000000000..3e12e96963 --- /dev/null +++ b/core/src/mindustry/entities/abilities/HealFieldAbility.java @@ -0,0 +1,45 @@ +package mindustry.entities.abilities; + +import arc.util.*; +import mindustry.content.*; +import mindustry.entities.*; +import mindustry.gen.*; + +public class HealFieldAbility implements Ability{ + public float amount = 1, reload = 100, range = 60; + public Effect healEffect = Fx.heal; + public Effect activeEffect = Fx.healWave; + + private boolean wasHealed = false; + + HealFieldAbility(){} + + public HealFieldAbility(float amount, float reload, float range){ + this.amount = amount; + this.reload = reload; + this.range = range; + } + + @Override + public void update(Unit unit){ + unit.timer1 += Time.delta; + + if(unit.timer1 >= reload){ + wasHealed = false; + + Units.nearby(unit.team, unit.x, unit.y, range, other -> { + if(other.damaged()){ + healEffect.at(unit); + wasHealed = true; + } + other.heal(amount); + }); + + if(wasHealed){ + activeEffect.at(unit); + } + + unit.timer1 = 0f; + } + } +} diff --git a/core/src/mindustry/entities/abilities/ShieldFieldAbility.java b/core/src/mindustry/entities/abilities/ShieldFieldAbility.java new file mode 100644 index 0000000000..f7726e8e92 --- /dev/null +++ b/core/src/mindustry/entities/abilities/ShieldFieldAbility.java @@ -0,0 +1,47 @@ +package mindustry.entities.abilities; + +import arc.util.*; +import mindustry.content.*; +import mindustry.entities.*; +import mindustry.gen.*; + +public class ShieldFieldAbility implements Ability{ + public float amount = 1, max = 100f, reload = 100, range = 60; + public Effect applyEffect = Fx.shieldApply; + public Effect activeEffect = Fx.shieldWave; + + private boolean applied = false; + + ShieldFieldAbility(){} + + public ShieldFieldAbility(float amount, float max, float reload, float range){ + this.amount = amount; + this.max = max; + this.reload = reload; + this.range = range; + } + + @Override + public void update(Unit unit){ + unit.timer1 += Time.delta; + + if(unit.timer1 >= reload){ + applied = false; + + Units.nearby(unit.team, unit.x, unit.y, range, other -> { + if(other.shield < max){ + other.shield = Math.max(other.shield + amount, max); + other.shieldAlpha = 1f; //TODO may not be necessary + applyEffect.at(unit); + applied = true; + } + }); + + if(applied){ + activeEffect.at(unit); + } + + unit.timer1 = 0f; + } + } +} diff --git a/core/src/mindustry/entities/abilities/StatusFieldAbility.java b/core/src/mindustry/entities/abilities/StatusFieldAbility.java new file mode 100644 index 0000000000..641e068a0f --- /dev/null +++ b/core/src/mindustry/entities/abilities/StatusFieldAbility.java @@ -0,0 +1,40 @@ +package mindustry.entities.abilities; + +import arc.util.ArcAnnotate.*; +import arc.util.*; +import mindustry.content.*; +import mindustry.entities.*; +import mindustry.gen.*; +import mindustry.type.*; + +public class StatusFieldAbility implements Ability{ + public @NonNull StatusEffect effect; + public float duration = 60, reload = 100, range = 20; + public Effect applyEffect = Fx.heal; + public Effect activeEffect = Fx.overdriveWave; + + StatusFieldAbility(){} + + public StatusFieldAbility(@NonNull StatusEffect effect, float duration, float reload, float range){ + this.duration = duration; + this.reload = reload; + this.range = range; + this.effect = effect; + } + + @Override + public void update(Unit unit){ + unit.timer2 += Time.delta; + + if(unit.timer2 >= reload){ + + Units.nearby(unit.team, unit.x, unit.y, range, other -> { + other.apply(effect, duration); + }); + + activeEffect.at(unit); + + unit.timer2 = 0f; + } + } +} diff --git a/core/src/mindustry/entities/bullet/ArtilleryBulletType.java b/core/src/mindustry/entities/bullet/ArtilleryBulletType.java index fcbb331bb3..a35c670316 100644 --- a/core/src/mindustry/entities/bullet/ArtilleryBulletType.java +++ b/core/src/mindustry/entities/bullet/ArtilleryBulletType.java @@ -2,12 +2,11 @@ package mindustry.entities.bullet; import arc.graphics.g2d.*; import mindustry.content.*; -import mindustry.entities.*; import mindustry.gen.*; //TODO scale velocity depending on fslope() public class ArtilleryBulletType extends BasicBulletType{ - protected Effect trailEffect = Fx.artilleryTrail; + public float trailMult = 1f, trailSize = 4f; public ArtilleryBulletType(float speed, float damage, String bulletSprite){ super(speed, damage, bulletSprite); @@ -17,6 +16,12 @@ public class ArtilleryBulletType extends BasicBulletType{ scaleVelocity = true; hitShake = 1f; hitSound = Sounds.explosion; + shootEffect = Fx.shootBig; + trailEffect = Fx.artilleryTrail; + } + + public ArtilleryBulletType(float speed, float damage){ + this(speed, damage, "shell"); } public ArtilleryBulletType(){ @@ -27,8 +32,8 @@ public class ArtilleryBulletType extends BasicBulletType{ public void update(Bullet b){ super.update(b); - if(b.timer(0, 3 + b.fslope() * 2f)){ - trailEffect.at(b.x(), b.y(), b.fslope() * 4f, backColor); + if(b.timer(0, (3 + b.fslope() * 2f) * trailMult)){ + trailEffect.at(b.x, b.y, b.fslope() * trailSize, backColor); } } @@ -40,9 +45,9 @@ public class ArtilleryBulletType extends BasicBulletType{ float height = this.height * ((1f - shrinkY) + shrinkY * b.fout()); Draw.color(backColor); - Draw.rect(backRegion, b.x(), b.y(), width * scale, height * scale, b.rotation() - 90); + Draw.rect(backRegion, b.x, b.y, width * scale, height * scale, b.rotation() - 90); Draw.color(frontColor); - Draw.rect(frontRegion, b.x(), b.y(), width * scale, height * scale, b.rotation() - 90); + Draw.rect(frontRegion, b.x, b.y, width * scale, height * scale, b.rotation() - 90); Draw.color(); } } diff --git a/core/src/mindustry/entities/bullet/BasicBulletType.java b/core/src/mindustry/entities/bullet/BasicBulletType.java index f4f7a75d97..e2a829e966 100644 --- a/core/src/mindustry/entities/bullet/BasicBulletType.java +++ b/core/src/mindustry/entities/bullet/BasicBulletType.java @@ -4,6 +4,7 @@ import arc.Core; import arc.graphics.Color; import arc.graphics.g2d.Draw; import arc.graphics.g2d.TextureRegion; +import arc.math.*; import mindustry.gen.*; import mindustry.graphics.Pal; @@ -12,6 +13,7 @@ public class BasicBulletType extends BulletType{ public Color backColor = Pal.bulletYellowBack, frontColor = Pal.bulletYellow; public float width = 5f, height = 7f; public float shrinkX = 0f, shrinkY = 0.5f; + public float spin = 0; public String sprite; public TextureRegion backRegion; @@ -21,8 +23,7 @@ public class BasicBulletType extends BulletType{ super(speed, damage); this.sprite = bulletSprite; } - - + public BasicBulletType(float speed, float damage){ this(speed, damage, "bullet"); } @@ -42,11 +43,12 @@ public class BasicBulletType extends BulletType{ public void draw(Bullet b){ float height = this.height * ((1f - shrinkY) + shrinkY * b.fout()); float width = this.width * ((1f - shrinkX) + shrinkX * b.fout()); + float offset = -90 + (spin != 0 ? Mathf.randomSeed(b.id, 360f) + b.time * spin : 0f); Draw.color(backColor); - Draw.rect(backRegion, b.x(), b.y(), width, height, b.rotation() - 90); + Draw.rect(backRegion, b.x, b.y, width, height, b.rotation() + offset); Draw.color(frontColor); - Draw.rect(frontRegion, b.x(), b.y(), width, height, b.rotation() - 90); + Draw.rect(frontRegion, b.x, b.y, width, height, b.rotation() + offset); Draw.color(); } } diff --git a/core/src/mindustry/entities/bullet/BulletType.java b/core/src/mindustry/entities/bullet/BulletType.java index cd37fc677e..5977a9ed22 100644 --- a/core/src/mindustry/entities/bullet/BulletType.java +++ b/core/src/mindustry/entities/bullet/BulletType.java @@ -15,7 +15,7 @@ import mindustry.graphics.*; import mindustry.type.*; public abstract class BulletType extends Content{ - public float lifetime; + public float lifetime = 40f; public float speed; public float damage; public float hitSize = 4; @@ -75,6 +75,11 @@ public abstract class BulletType extends Content{ public BulletType fragBullet = null; public Color hitColor = Color.white; + public Color trailColor = Pal.missileYellowBack; + public float trailChance = -0.0001f; + public Effect trailEffect = Fx.missileTrail; + public float trailParam = 2f; + /** Use a negative value to disable splash damage. */ public float splashDamageRadius = -1f; @@ -100,11 +105,14 @@ public abstract class BulletType extends Content{ public BulletType(float speed, float damage){ this.speed = speed; this.damage = damage; - lifetime = 40f; hitEffect = Fx.hitBulletSmall; despawnEffect = Fx.hitBulletSmall; } + public BulletType(){ + this(1f, 1f); + } + /** Returns maximum distance the bullet this bullet type has can travel. */ public float range(){ return speed * lifetime * (1f - drag); @@ -119,7 +127,7 @@ public abstract class BulletType extends Content{ } public void hit(Bullet b){ - hit(b, b.getX(), b.getY()); + hit(b, b.x, b.y); } public void hit(Bullet b, float x, float y){ @@ -141,20 +149,20 @@ public abstract class BulletType extends Content{ } if(splashDamageRadius > 0){ - Damage.damage(b.team(), x, y, splashDamageRadius, splashDamage * b.damageMultiplier(), collidesAir, collidesGround); + Damage.damage(b.team, x, y, splashDamageRadius, splashDamage * b.damageMultiplier(), collidesAir, collidesGround); if(status != StatusEffects.none){ - Damage.status(b.team(), x, y, splashDamageRadius, status, statusDuration, collidesAir, collidesGround); + Damage.status(b.team, x, y, splashDamageRadius, status, statusDuration, collidesAir, collidesGround); } } for(int i = 0; i < lightning; i++){ - Lightning.create(b.team(), Pal.surge, lightningDamage < 0 ? damage : lightningDamage, b.getX(), b.getY(), Mathf.random(360f), lightningLength); + Lightning.create(b, Pal.surge, lightningDamage < 0 ? damage : lightningDamage, b.x, b.y, Mathf.random(360f), lightningLength); } } public void despawned(Bullet b){ - despawnEffect.at(b.getX(), b.getY(), b.rotation()); + despawnEffect.at(b.x, b.y, b.rotation(), hitColor); hitSound.at(b); if(fragBullet != null || splashDamageRadius > 0 || lightning > 0){ @@ -166,7 +174,7 @@ public abstract class BulletType extends Content{ } public void drawLight(Bullet b){ - Drawf.light(b.team(), b, lightRadius, lightColor, lightOpacity); + Drawf.light(b.team, b, lightRadius, lightColor, lightOpacity); } public void init(Bullet b){ @@ -181,14 +189,20 @@ public abstract class BulletType extends Content{ public void update(Bullet b){ if(homingPower > 0.0001f){ - Teamc target = Units.closestTarget(b.team(), b.getX(), b.getY(), homingRange, e -> (e.isGrounded() && collidesGround) || (e.isFlying() && collidesAir), t -> collidesGround); + Teamc target = Units.closestTarget(b.team, b.x, b.y, homingRange, e -> (e.isGrounded() && collidesGround) || (e.isFlying() && collidesAir), t -> collidesGround); if(target != null){ - b.vel().setAngle(Mathf.slerpDelta(b.rotation(), b.angleTo(target), homingPower)); + b.vel.setAngle(Mathf.slerpDelta(b.rotation(), b.angleTo(target), homingPower)); } } if(weaveMag > 0){ - b.vel().rotate(Mathf.sin(Time.time() + b.id() * 3, weaveScale, weaveMag) * Time.delta()); + b.vel.rotate(Mathf.sin(Mathf.randomSeed(b.id, 10f) + b.time, weaveScale, weaveMag) * Time.delta); + } + + if(trailChance > 0){ + if(Mathf.chanceDelta(trailChance)){ + trailEffect.at(b.x, b.y, trailParam, trailColor); + } } } @@ -214,28 +228,28 @@ public abstract class BulletType extends Content{ } public Bullet create(Bullet parent, float x, float y, float angle){ - return create(parent.owner(), parent.team(), x, y, angle); + return create(parent.owner(), parent.team, x, y, angle); } public Bullet create(Bullet parent, float x, float y, float angle, float velocityScl){ - return create(parent.owner(), parent.team(), x, y, angle, velocityScl); + return create(parent.owner(), parent.team, x, y, angle, velocityScl); } public Bullet create(@Nullable Entityc owner, Team team, float x, float y, float angle, float damage, float velocityScl, float lifetimeScl, Object data){ Bullet bullet = Bullet.create(); - bullet.type(this); - bullet.owner(owner); - bullet.team(team); - bullet.vel().trns(angle, speed * velocityScl); - bullet.set(x - bullet.vel().x * Time.delta(), y - bullet.vel().y * Time.delta()); - bullet.lifetime(lifetime * lifetimeScl); - bullet.data(data); - bullet.drag(drag); - bullet.hitSize(hitSize); - bullet.damage(damage < 0 ? this.damage : damage); + bullet.type = this; + bullet.owner = owner; + bullet.team = team; + bullet.vel.trns(angle, speed * velocityScl); + bullet.set(x - bullet.vel.x * Time.delta, y - bullet.vel.y * Time.delta); + bullet.lifetime = lifetime * lifetimeScl; + bullet.data = data; + bullet.drag = drag; + bullet.hitSize = hitSize; + bullet.damage = damage < 0 ? this.damage : damage; bullet.add(); - if(keepVelocity && owner instanceof Hitboxc) bullet.vel().add(((Hitboxc)owner).deltaX(), ((Hitboxc)owner).deltaY()); + if(keepVelocity && owner instanceof Hitboxc) bullet.vel.add(((Hitboxc)owner).deltaX(), ((Hitboxc)owner).deltaY()); return bullet; } diff --git a/core/src/mindustry/entities/bullet/ContinuousLaserBulletType.java b/core/src/mindustry/entities/bullet/ContinuousLaserBulletType.java index 910569957c..ef40d9b95b 100644 --- a/core/src/mindustry/entities/bullet/ContinuousLaserBulletType.java +++ b/core/src/mindustry/entities/bullet/ContinuousLaserBulletType.java @@ -48,7 +48,7 @@ public class ContinuousLaserBulletType extends BulletType{ //damage every 5 ticks if(b.timer(1, 5f)){ - Damage.collideLine(b, b.team(), hitEffect, b.x(), b.y(), b.rotation(), length, true); + Damage.collideLine(b, b.team, hitEffect, b.x, b.y, b.rotation(), length, true); } if(shake > 0){ @@ -60,19 +60,19 @@ public class ContinuousLaserBulletType extends BulletType{ public void draw(Bullet b){ float baseLen = length * b.fout(); - Lines.lineAngle(b.x(), b.y(), b.rotation(), baseLen); + Lines.lineAngle(b.x, b.y, b.rotation(), baseLen); for(int s = 0; s < colors.length; s++){ Draw.color(Tmp.c1.set(colors[s]).mul(1f + Mathf.absin(Time.time(), 1f, 0.1f))); for(int i = 0; i < tscales.length; i++){ Tmp.v1.trns(b.rotation() + 180f, (lenscales[i] - 1f) * 35f); Lines.stroke((9f + Mathf.absin(Time.time(), 0.8f, 1.5f)) * b.fout() * strokes[s] * tscales[i]); - Lines.lineAngle(b.x() + Tmp.v1.x, b.y() + Tmp.v1.y, b.rotation(), baseLen * lenscales[i], CapStyle.none); + Lines.lineAngle(b.x + Tmp.v1.x, b.y + Tmp.v1.y, b.rotation(), baseLen * lenscales[i], CapStyle.none); } } Tmp.v1.trns(b.rotation(), baseLen * 1.1f); - Drawf.light(b.team(), b.x(), b.y(), b.x() + Tmp.v1.x, b.y() + Tmp.v1.y, 40, Color.orange, 0.7f); + Drawf.light(b.team, b.x, b.y, b.x + Tmp.v1.x, b.y + Tmp.v1.y, 40, Color.orange, 0.7f); Draw.reset(); } diff --git a/core/src/mindustry/entities/bullet/FlakBulletType.java b/core/src/mindustry/entities/bullet/FlakBulletType.java index edbf02184f..ad5f8be7fa 100644 --- a/core/src/mindustry/entities/bullet/FlakBulletType.java +++ b/core/src/mindustry/entities/bullet/FlakBulletType.java @@ -28,8 +28,8 @@ public class FlakBulletType extends BasicBulletType{ if(b.data() instanceof Integer) return; if(b.timer(2, 6)){ - Units.nearbyEnemies(b.team(), Tmp.r1.setSize(explodeRange * 2f).setCenter(b.x(), b.y()), unit -> { - if(b.data() instanceof Float || (unit.isFlying() && !collidesAir) || (unit.isGrounded() && !collidesGround)) return; + Units.nearbyEnemies(b.team, Tmp.r1.setSize(explodeRange * 2f).setCenter(b.x, b.y), unit -> { + if(b.data() instanceof Float || !unit.checkTarget(collidesAir, collidesGround)) return; if(unit.dst(b) < explodeRange){ b.data(0); diff --git a/core/src/mindustry/entities/bullet/HealBulletType.java b/core/src/mindustry/entities/bullet/HealBulletType.java index 89814f2634..af66a4c931 100644 --- a/core/src/mindustry/entities/bullet/HealBulletType.java +++ b/core/src/mindustry/entities/bullet/HealBulletType.java @@ -9,7 +9,7 @@ import mindustry.world.blocks.*; public class HealBulletType extends BulletType{ protected float healPercent = 3f; - protected float bulletHeight = 7f, bulletWidth = 2f; + protected float height = 7f, width = 2f; protected Color backColor = Pal.heal, frontColor = Color.white; public HealBulletType(float speed, float damage){ @@ -29,16 +29,16 @@ public class HealBulletType extends BulletType{ @Override public boolean collides(Bullet b, Building tile){ - return tile.team() != b.team() || tile.healthf() < 1f; + return tile.team() != b.team || tile.healthf() < 1f; } @Override public void draw(Bullet b){ Draw.color(backColor); - Lines.stroke(bulletWidth); - Lines.lineAngleCenter(b.x(), b.y(), b.rotation(), bulletHeight); + Lines.stroke(width); + Lines.lineAngleCenter(b.x, b.y, b.rotation(), height); Draw.color(frontColor); - Lines.lineAngleCenter(b.x(), b.y(), b.rotation(), bulletHeight / 2f); + Lines.lineAngleCenter(b.x, b.y, b.rotation(), height / 2f); Draw.reset(); } @@ -46,8 +46,8 @@ public class HealBulletType extends BulletType{ public void hitTile(Bullet b, Building tile){ super.hit(b); - if(tile.team() == b.team() && !(tile.block() instanceof BuildBlock)){ - Fx.healBlockFull.at(tile.x(), tile.y(), tile.block().size, Pal.heal); + if(tile.team() == b.team && !(tile.block() instanceof BuildBlock)){ + Fx.healBlockFull.at(tile.x, tile.y, tile.block().size, Pal.heal); tile.heal(healPercent / 100f * tile.maxHealth()); } } diff --git a/core/src/mindustry/entities/bullet/LaserBulletType.java b/core/src/mindustry/entities/bullet/LaserBulletType.java index 5931899511..571a78826d 100644 --- a/core/src/mindustry/entities/bullet/LaserBulletType.java +++ b/core/src/mindustry/entities/bullet/LaserBulletType.java @@ -53,15 +53,15 @@ public class LaserBulletType extends BulletType{ furthest = null; - world.raycast(b.tileX(), b.tileY(), world.toTile(b.x() + Tmp.v1.x), world.toTile(b.y() + Tmp.v1.y), - (x, y) -> (furthest = world.tile(x, y)) != null && furthest.team() != b.team() && furthest.block().absorbLasers); + world.raycast(b.tileX(), b.tileY(), world.toTile(b.x + Tmp.v1.x), world.toTile(b.y + Tmp.v1.y), + (x, y) -> (furthest = world.tile(x, y)) != null && furthest.team() != b.team && furthest.block().absorbLasers); float resultLength = furthest != null ? Math.max(6f, b.dst(furthest.worldx(), furthest.worldy())) : length; - Damage.collideLine(b, b.team(), hitEffect, b.x(), b.y(), b.rotation(), resultLength); + Damage.collideLine(b, b.team, hitEffect, b.x, b.y, b.rotation(), resultLength); if(furthest != null) b.data(resultLength); - laserEffect.at(b.x(), b.y(), b.rotation(), resultLength * 0.75f); + laserEffect.at(b.x, b.y, b.rotation(), resultLength * 0.75f); } @Override @@ -73,18 +73,18 @@ public class LaserBulletType extends BulletType{ float cwidth = width; float compound = 1f; - Lines.lineAngle(b.x(), b.y(), b.rotation(), baseLen); + Lines.lineAngle(b.x, b.y, b.rotation(), baseLen); Lines.precise(true); for(Color color : colors){ Draw.color(color); Lines.stroke((cwidth *= lengthFalloff) * b.fout()); - Lines.lineAngle(b.x(), b.y(), b.rotation(), baseLen, CapStyle.none); + Lines.lineAngle(b.x, b.y, b.rotation(), baseLen, CapStyle.none); Tmp.v1.trns(b.rotation(), baseLen); - Drawf.tri(b.x() + Tmp.v1.x, b.y() + Tmp.v1.y, Lines.getStroke() * 1.22f, cwidth * 2f + width / 2f, b.rotation()); + Drawf.tri(b.x + Tmp.v1.x, b.y + Tmp.v1.y, Lines.getStroke() * 1.22f, cwidth * 2f + width / 2f, b.rotation()); - Fill.circle(b.x(), b.y(), 1f * cwidth * b.fout()); + Fill.circle(b.x, b.y, 1f * cwidth * b.fout()); for(int i : Mathf.signs){ - Drawf.tri(b.x(), b.y(), sideWidth * b.fout() * cwidth, sideLength * compound, b.rotation() + sideAngle * i); + Drawf.tri(b.x, b.y, sideWidth * b.fout() * cwidth, sideLength * compound, b.rotation() + sideAngle * i); } compound *= lengthFalloff; @@ -93,7 +93,7 @@ public class LaserBulletType extends BulletType{ Draw.reset(); Tmp.v1.trns(b.rotation(), baseLen * 1.1f); - Drawf.light(b.team(), b.x(), b.y(), b.x() + Tmp.v1.x, b.y() + Tmp.v1.y, width * 1.4f * b.fout(), colors[0], 0.6f); + Drawf.light(b.team, b.x, b.y, b.x + Tmp.v1.x, b.y + Tmp.v1.y, width * 1.4f * b.fout(), colors[0], 0.6f); } @Override diff --git a/core/src/mindustry/entities/bullet/LightningBulletType.java b/core/src/mindustry/entities/bullet/LightningBulletType.java index e8d6a749dc..dbfbcc0301 100644 --- a/core/src/mindustry/entities/bullet/LightningBulletType.java +++ b/core/src/mindustry/entities/bullet/LightningBulletType.java @@ -1,6 +1,7 @@ package mindustry.entities.bullet; import arc.graphics.*; +import arc.math.*; import mindustry.content.*; import mindustry.entities.*; import mindustry.gen.*; @@ -8,7 +9,7 @@ import mindustry.graphics.*; public class LightningBulletType extends BulletType{ protected Color lightningColor = Pal.lancerLaser; - protected int lightningLength = 25; + protected int lightningLength = 25, lightningLengthRand = 0; public LightningBulletType(){ super(0.0001f, 1f); @@ -22,7 +23,7 @@ public class LightningBulletType extends BulletType{ @Override public float range(){ - return lightningLength * 2.33f; + return (lightningLength + lightningLengthRand/2f) * 6f; } @Override @@ -31,6 +32,6 @@ public class LightningBulletType extends BulletType{ @Override public void init(Bullet b){ - Lightning.create(b.team(), lightningColor, damage, b.x(), b.y(), b.rotation(), lightningLength); + Lightning.create(b, lightningColor, damage, b.x, b.y, b.rotation(), lightningLength + Mathf.random(lightningLengthRand)); } } diff --git a/core/src/mindustry/entities/bullet/LiquidBulletType.java b/core/src/mindustry/entities/bullet/LiquidBulletType.java index 534cc8a416..155ed32973 100644 --- a/core/src/mindustry/entities/bullet/LiquidBulletType.java +++ b/core/src/mindustry/entities/bullet/LiquidBulletType.java @@ -14,7 +14,7 @@ import static mindustry.Vars.*; public class LiquidBulletType extends BulletType{ public @NonNull Liquid liquid; - public float puddleSize = 5f; + public float puddleSize = 6f; public LiquidBulletType(@Nullable Liquid liquid){ super(3.5f, 0); @@ -48,7 +48,7 @@ public class LiquidBulletType extends BulletType{ super.update(b); if(liquid.canExtinguish()){ - Tile tile = world.tileWorld(b.x(), b.y()); + Tile tile = world.tileWorld(b.x, b.y); if(tile != null && Fires.has(tile.x, tile.y)){ Fires.extinguish(tile, 100f); b.remove(); @@ -61,14 +61,15 @@ public class LiquidBulletType extends BulletType{ public void draw(Bullet b){ Draw.color(liquid.color, Color.white, b.fout() / 100f); - Fill.circle(b.x(), b.y(), 3f); + Fill.circle(b.x, b.y, 3f); } @Override public void despawned(Bullet b){ super.despawned(b); - hit(b, b.x(), b.y()); + //don't create liquids when the projectile despawns + hitEffect.at(b.x, b.y, liquid.color); } @Override diff --git a/core/src/mindustry/entities/bullet/MassDriverBolt.java b/core/src/mindustry/entities/bullet/MassDriverBolt.java index 9eef1af150..70d3c6de9b 100644 --- a/core/src/mindustry/entities/bullet/MassDriverBolt.java +++ b/core/src/mindustry/entities/bullet/MassDriverBolt.java @@ -26,10 +26,10 @@ public class MassDriverBolt extends BulletType{ float w = 11f, h = 13f; Draw.color(Pal.bulletYellowBack); - Draw.rect("shell-back", b.x(), b.y(), w, h, b.rotation() + 90); + Draw.rect("shell-back", b.x, b.y, w, h, b.rotation() + 90); Draw.color(Pal.bulletYellow); - Draw.rect("shell", b.x(), b.y(), w, h, b.rotation() + 90); + Draw.rect("shell", b.x, b.y, w, h, b.rotation() + 90); Draw.reset(); } @@ -66,14 +66,14 @@ public class MassDriverBolt extends BulletType{ if(Angles.near(angleTo, baseAngle, 2f)){ intersect = true; //snap bullet position back; this is used for low-FPS situations - b.set(data.to.x() + Angles.trnsx(baseAngle, hitDst), data.to.y() + Angles.trnsy(baseAngle, hitDst)); + b.set(data.to.x + Angles.trnsx(baseAngle, hitDst), data.to.y + Angles.trnsy(baseAngle, hitDst)); } } //if on course and it's in range of the target if(Math.abs(dst1 + dst2 - baseDst) < 4f && dst2 <= hitDst){ intersect = true; - } //else, bullet has gone off course, does not get recieved. + } //else, bullet has gone off course, does not get received. if(intersect){ data.to.handlePayload(b, data); @@ -92,7 +92,7 @@ public class MassDriverBolt extends BulletType{ int amountDropped = Mathf.random(0, data.items[i]); if(amountDropped > 0){ float angle = b.rotation() + Mathf.range(100f); - Fx.dropItem.at(b.x(), b.y(), angle, Color.white, content.item(i)); + Fx.dropItem.at(b.x, b.y, angle, Color.white, content.item(i)); } } } diff --git a/core/src/mindustry/entities/bullet/MissileBulletType.java b/core/src/mindustry/entities/bullet/MissileBulletType.java index b2f4ca0d6a..a3670ac3c0 100644 --- a/core/src/mindustry/entities/bullet/MissileBulletType.java +++ b/core/src/mindustry/entities/bullet/MissileBulletType.java @@ -1,32 +1,27 @@ package mindustry.entities.bullet; -import arc.graphics.*; -import arc.math.*; -import mindustry.content.*; import mindustry.gen.*; import mindustry.graphics.*; public class MissileBulletType extends BasicBulletType{ - protected Color trailColor = Pal.missileYellowBack; public MissileBulletType(float speed, float damage, String bulletSprite){ super(speed, damage, bulletSprite); backColor = Pal.missileYellowBack; frontColor = Pal.missileYellow; homingPower = 0.08f; + shrinkY = 0f; + width = 8f; + height = 8f; hitSound = Sounds.explosion; + trailChance = 0.2f; + } + + public MissileBulletType(float speed, float damage){ + this(speed, damage, "missile"); } public MissileBulletType(){ this(1f, 1f, "missile"); } - - @Override - public void update(Bullet b){ - super.update(b); - - if(Mathf.chanceDelta(0.2)){ - Fx.missileTrail.at(b.x(), b.y(), 2f, trailColor); - } - } } diff --git a/core/src/mindustry/entities/bullet/SapBulletType.java b/core/src/mindustry/entities/bullet/SapBulletType.java new file mode 100644 index 0000000000..6dab6ce13c --- /dev/null +++ b/core/src/mindustry/entities/bullet/SapBulletType.java @@ -0,0 +1,82 @@ +package mindustry.entities.bullet; + +import arc.*; +import arc.graphics.*; +import arc.graphics.g2d.*; +import arc.math.geom.*; +import arc.util.*; +import mindustry.content.*; +import mindustry.entities.*; +import mindustry.gen.*; +import mindustry.graphics.*; + +public class SapBulletType extends BulletType{ + public float length = 100f; + public float sapStrength = 0.5f; + public Color color = Color.white.cpy(); + public float width = 0.4f; + + public SapBulletType(){ + speed = 0.0001f; + despawnEffect = Fx.none; + pierce = true; + hitSize = 0f; + hittable = false; + hitEffect = Fx.hitLiquid; + status = StatusEffects.sapped; + statusDuration = 60f * 3f; + } + + @Override + public void draw(Bullet b){ + if(b.data instanceof Position){ + Position data = (Position)b.data; + Tmp.v1.set(data).lerp(b, b.fin()); + + Draw.color(color); + Drawf.laser(b.team, Core.atlas.find("laser"), Core.atlas.find("laser-end"), + b.x, b.y, Tmp.v1.x, Tmp.v1.y, width * b.fout()); + + Draw.reset(); + + Drawf.light(b.team, b.x, b.y, b.x + Tmp.v1.x, b.y + Tmp.v1.y, 15f * b.fout(), lightColor, 0.6f); + } + } + + @Override + public float range(){ + return length; + } + + @Override + public void init(Bullet b){ + super.init(b); + + Healthc target = Damage.linecast(b, b.x, b.y, b.rotation(), length); + b.data = target; + + if(target != null){ + float result = Math.min(target.health(), damage); + + if(b.owner instanceof Healthc){ + ((Healthc)b.owner).heal(result * sapStrength); + } + } + + if(target instanceof Hitboxc){ + Hitboxc hit = (Hitboxc)target; + + hit.collision(b, hit.x(), hit.y()); + b.collision(hit, hit.x(), hit.y()); + }else if(target instanceof Building){ + Building tile = (Building)target; + + if(tile.collide(b)){ + tile.collision(b); + hit(b, tile.x, tile.y); + } + }else{ + b.data = new Vec2().trns(b.rotation(), length).add(b.x, b.y); + } + } +} diff --git a/core/src/mindustry/entities/bullet/ShrapnelBulletType.java b/core/src/mindustry/entities/bullet/ShrapnelBulletType.java new file mode 100644 index 0000000000..8f26efeaae --- /dev/null +++ b/core/src/mindustry/entities/bullet/ShrapnelBulletType.java @@ -0,0 +1,47 @@ +package mindustry.entities.bullet; + +import arc.graphics.*; +import arc.graphics.g2d.*; +import arc.math.*; +import arc.util.*; +import mindustry.content.*; +import mindustry.entities.*; +import mindustry.gen.*; +import mindustry.graphics.*; + +public class ShrapnelBulletType extends BulletType{ + public float length = 100f; + public float width = 20f; + public Color fromColor = Color.white, toColor = Pal.lancerLaser; + + public int serrations = 7; + public float serrationLenScl = 10f, serrationWidth = 4f, serrationSpacing = 8f, serrationSpaceOffset = 80f; + + public ShrapnelBulletType(){ + speed = 0.01f; + hitEffect = Fx.hitLancer; + shootEffect = smokeEffect = Fx.lightningShoot; + lifetime = 10f; + despawnEffect = Fx.none; + pierce = true; + } + + @Override + public void init(Bullet b){ + Damage.collideLine(b, b.team, hitEffect, b.x, b.y, b.rotation(), length); + } + + @Override + public void draw(Bullet b){ + Draw.color(fromColor, toColor, b.fin()); + for(int i = 0; i < serrations; i++){ + Tmp.v1.trns(b.rotation(), i * serrationSpacing); + float sl = Mathf.clamp(b.fout() - 0.5f) * (serrationSpaceOffset - i * serrationLenScl); + Drawf.tri(b.x + Tmp.v1.x, b.y + Tmp.v1.y, serrationWidth, sl, b.rotation() + 90); + Drawf.tri(b.x + Tmp.v1.x, b.y + Tmp.v1.y, serrationWidth, sl, b.rotation() - 90); + } + Drawf.tri(b.x, b.y, width * b.fout(), (length + 50), b.rotation()); + Drawf.tri(b.x, b.y, width * b.fout(), 10f, b.rotation() + 180f); + Draw.reset(); + } +} diff --git a/core/src/mindustry/entities/comp/BlockUnitComp.java b/core/src/mindustry/entities/comp/BlockUnitComp.java index 5adec13c6a..4ae698db2a 100644 --- a/core/src/mindustry/entities/comp/BlockUnitComp.java +++ b/core/src/mindustry/entities/comp/BlockUnitComp.java @@ -1,10 +1,12 @@ package mindustry.entities.comp; +import arc.graphics.g2d.*; import mindustry.annotations.Annotations.*; import mindustry.game.*; import mindustry.gen.*; +import mindustry.ui.*; -import static mindustry.Vars.tilesize; +import static mindustry.Vars.*; @Component abstract class BlockUnitComp implements Unitc{ @@ -29,6 +31,12 @@ abstract class BlockUnitComp implements Unitc{ } } + @Replace + @Override + public TextureRegion icon(){ + return tile.block.icon(Cicon.full); + } + @Override public void killed(){ tile.kill(); diff --git a/core/src/mindustry/entities/comp/BuilderComp.java b/core/src/mindustry/entities/comp/BuilderComp.java index 07dca1da8e..2ea4da78fe 100644 --- a/core/src/mindustry/entities/comp/BuilderComp.java +++ b/core/src/mindustry/entities/comp/BuilderComp.java @@ -28,18 +28,18 @@ abstract class BuilderComp implements Unitc{ @Import float x, y, rotation; - Queue plans = new Queue<>(); - transient boolean building = true; + @SyncLocal Queue plans = new Queue<>(); + transient boolean updateBuilding = true; @Override public void controller(UnitController next){ //reset building state so AI controlled units will always start off building - building = true; + updateBuilding = true; } @Override public void update(){ - if(!building) return; + if(!updateBuilding) return; float finalPlaceDst = state.rules.infiniteResources ? Float.MAX_VALUE : buildingRange; @@ -72,11 +72,11 @@ abstract class BuilderComp implements Unitc{ BuildPlan current = buildPlan(); - if(dst(current.tile()) > finalPlaceDst) return; + if(!within(current.tile(), finalPlaceDst)) return; Tile tile = world.tile(current.x, current.y); - if(dst(tile) <= finalPlaceDst){ + if(!within(tile, finalPlaceDst)){ rotation = Mathf.slerpDelta(rotation, angleTo(tile), 0.4f); } @@ -114,11 +114,11 @@ abstract class BuilderComp implements Unitc{ BuildEntity entity = tile.bc(); if(current.breaking){ - entity.deconstruct(base(), core, 1f / entity.buildCost * Time.delta() * type().buildSpeed * state.rules.buildSpeedMultiplier); + entity.deconstruct(base(), core, 1f / entity.buildCost * Time.delta * type().buildSpeed * state.rules.buildSpeedMultiplier); }else{ - if(entity.construct(base(), core, 1f / entity.buildCost * Time.delta() * type().buildSpeed * state.rules.buildSpeedMultiplier, current.hasConfig)){ + if(entity.construct(base(), core, 1f / entity.buildCost * Time.delta * type().buildSpeed * state.rules.buildSpeedMultiplier, current.hasConfig)){ if(current.hasConfig){ - Call.onTileConfig(null, tile.build, current.config); + Call.tileConfig(null, tile.build, current.config); } } } @@ -208,7 +208,7 @@ abstract class BuilderComp implements Unitc{ @Override public void draw(){ - if(!isBuilding()) return; + if(!isBuilding() || !updateBuilding) return; //TODO check correctness Draw.z(Layer.flyingUnit); diff --git a/core/src/mindustry/entities/comp/BuildingComp.java b/core/src/mindustry/entities/comp/BuildingComp.java index c100067e2f..b9f557fd28 100644 --- a/core/src/mindustry/entities/comp/BuildingComp.java +++ b/core/src/mindustry/entities/comp/BuildingComp.java @@ -174,12 +174,12 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, public void configure(Object value){ //save last used config block.lastConfig = value; - Call.onTileConfig(player, base(), value); + Call.tileConfig(player, base(), value); } /** Configure from a server. */ public void configureAny(Object value){ - Call.onTileConfig(null, base(), value); + Call.tileConfig(null, base(), value); } /** Deselect this tile from configuration. */ @@ -201,14 +201,14 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, } public Building nearby(int dx, int dy){ - return world.ent(tile.x + dx, tile.y + dy); + return world.build(tile.x + dx, tile.y + dy); } public Building nearby(int rotation){ - if(rotation == 0) return world.ent(tile.x + 1, tile.y); - if(rotation == 1) return world.ent(tile.x, tile.y + 1); - if(rotation == 2) return world.ent(tile.x - 1, tile.y); - if(rotation == 3) return world.ent(tile.x, tile.y - 1); + if(rotation == 0) return world.build(tile.x + 1, tile.y); + if(rotation == 1) return world.build(tile.x, tile.y + 1); + if(rotation == 2) return world.build(tile.x - 1, tile.y); + if(rotation == 3) return world.build(tile.x, tile.y - 1); return null; } @@ -290,7 +290,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, /** Scaled delta. */ public float delta(){ - return Time.delta() * timeScale; + return Time.delta * timeScale; } /** Efficiency * delta. */ @@ -305,7 +305,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, /** Call when nothing is happening to the entity. This increments the internal sleep timer. */ public void sleep(){ - sleepTime += Time.delta(); + sleepTime += Time.delta; if(!sleeping && sleepTime >= timeToSleep){ remove(); sleeping = true; @@ -514,18 +514,18 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, return flow; }else if(ofract > 0.1f && fract > 0.1f){ //TODO these are incorrect effect positions - float fx = (x + next.x()) / 2f, fy = (y + next.y()) / 2f; + float fx = (x + next.x) / 2f, fy = (y + next.y) / 2f; Liquid other = next.liquids().current(); if((other.flammability > 0.3f && liquid.temperature > 0.7f) || (liquid.flammability > 0.3f && other.temperature > 0.7f)){ - damage(1 * Time.delta()); - next.damage(1 * Time.delta()); - if(Mathf.chance(0.1 * Time.delta())){ + damage(1 * Time.delta); + next.damage(1 * Time.delta); + if(Mathf.chance(0.1 * Time.delta)){ Fx.fire.at(fx, fy); } }else if((liquid.temperature > 0.7f && other.temperature < 0.55f) || (other.temperature > 0.7f && liquid.temperature < 0.55f)){ - liquids.remove(liquid, Math.min(liquids.get(liquid), 0.7f * Time.delta())); - if(Mathf.chance(0.2f * Time.delta())){ + liquids.remove(liquid, Math.min(liquids.get(liquid), 0.7f * Time.delta)); + if(Mathf.chance(0.2f * Time.delta)){ Fx.steam.at(fx, fy); } } @@ -539,6 +539,10 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, return base(); } + public @Nullable Payload getPayload(){ + return null; + } + /** Tries to take the payload. Returns null if no payload is present. */ public @Nullable Payload takePayload(){ return null; @@ -659,8 +663,8 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, public void updatePowerGraph(){ for(Building other : getPowerConnections(tempTileEnts)){ - if(other.power() != null){ - other.power().graph.addGraph(power.graph); + if(other.power != null){ + other.power.graph.addGraph(power.graph); } } } @@ -684,7 +688,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, if(power == null) return out; for(Building other : proximity){ - if(other != null && other.power() != null + if(other != null && other.power != null && !(block.consumesPower && other.block.consumesPower && !block.outputsPower && !other.block.outputsPower) && !power.links.contains(other.pos())){ out.add(other); @@ -747,8 +751,8 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, public void drawTeamTop(){ if(block.teamRegion.found()){ - if(block.teamRegions[team.uid] == block.teamRegion) Draw.color(team.color); - Draw.rect(block.teamRegions[team.uid], x, y); + if(block.teamRegions[team.id] == block.teamRegion) Draw.color(team.color); + Draw.rect(block.teamRegions[team.id], x, y); Draw.color(); } } @@ -793,10 +797,10 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, int range = 10; tempTiles.clear(); Geometry.circle(tileX(), tileY(), range, (x, y) -> { - Building other = world.ent(x, y); + Building other = world.build(x, y); if(other != null && other.block instanceof PowerNode && ((PowerNode)other.block).linkValid(other, base()) && !PowerNode.insulated(other, base()) && !other.proximity().contains(this.base()) && - !(block.outputsPower && proximity.contains(p -> p.power() != null && p.power().graph == other.power().graph))){ + !(block.outputsPower && proximity.contains(p -> p.power != null && p.power.graph == other.power.graph))){ tempTiles.add(other.tile()); } }); @@ -922,60 +926,63 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, table.row(); - table.table(bars -> { - bars.defaults().growX().height(18f).pad(4); + //only display everything else if the team is the same + if(team == player.team()){ + table.table(bars -> { + bars.defaults().growX().height(18f).pad(4); - displayBars(bars); - }).growX(); - table.row(); - table.table(this::displayConsumption).growX(); + displayBars(bars); + }).growX(); + table.row(); + table.table(this::displayConsumption).growX(); - boolean displayFlow = (block.category == Category.distribution || block.category == Category.liquid) && Core.settings.getBool("flow"); + boolean displayFlow = (block.category == Category.distribution || block.category == Category.liquid) && Core.settings.getBool("flow"); - if(displayFlow){ - String ps = " " + StatUnit.perSecond.localized(); + if(displayFlow){ + String ps = " " + StatUnit.perSecond.localized(); - if(items != null){ - table.row(); - table.left(); - table.table(l -> { - Bits current = new Bits(); + if(items != null){ + table.row(); + table.left(); + table.table(l -> { + Bits current = new Bits(); - Runnable rebuild = () -> { - l.clearChildren(); + Runnable rebuild = () -> { + l.clearChildren(); + l.left(); + for(Item item : content.items()){ + if(items.hasFlowItem(item)){ + l.image(item.icon(Cicon.small)).padRight(3f); + l.label(() -> items.getFlowRate(item) < 0 ? "..." : Strings.fixed(items.getFlowRate(item), 1) + ps).color(Color.lightGray); + l.row(); + } + } + }; + + rebuild.run(); + l.update(() -> { + for(Item item : content.items()){ + if(items.hasFlowItem(item) && !current.get(item.id)){ + current.set(item.id); + rebuild.run(); + } + } + }); + }).left(); + } + + if(liquids != null){ + table.row(); + table.table(l -> { l.left(); - for(Item item : content.items()){ - if(items.hasFlowItem(item)){ - l.image(item.icon(Cicon.small)).padRight(3f); - l.label(() -> items.getFlowRate(item) < 0 ? "..." : Strings.fixed(items.getFlowRate(item), 1) + ps).color(Color.lightGray); - l.row(); - } - } - }; - - rebuild.run(); - l.update(() -> { - for(Item item : content.items()){ - if(items.hasFlowItem(item) && !current.get(item.id)){ - current.set(item.id); - rebuild.run(); - } - } - }); - }).left(); + l.image(() -> liquids.current().icon(Cicon.small)).padRight(3f); + l.label(() -> liquids.getFlowRate() < 0 ? "..." : Strings.fixed(liquids.getFlowRate(), 2) + ps).color(Color.lightGray); + }).left(); + } } - if(liquids != null){ - table.row(); - table.table(l -> { - l.left(); - l.image(() -> liquids.current().icon(Cicon.small)).padRight(3f); - l.label(() -> liquids.getFlowRate() < 0 ? "..." : Strings.fixed(liquids.getFlowRate(), 2) + ps).color(Color.lightGray); - }); - } + table.marginBottom(-5); } - - table.marginBottom(-5); } public void displayConsumption(Table table){ @@ -1061,7 +1068,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, Point2[] nearby = Edges.getEdges(block.size); for(Point2 point : nearby){ - Building other = world.ent(tile.x + point.x, tile.y + point.y); + Building other = world.build(tile.x + point.x, tile.y + point.y); //remove this tile from all nearby tile's proximities if(other != null){ tmpTiles.add(other); @@ -1080,7 +1087,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, Point2[] nearby = Edges.getEdges(block.size); for(Point2 point : nearby){ - Building other = world.ent(tile.x + point.x, tile.y + point.y); + Building other = world.build(tile.x + point.x, tile.y + point.y); if(other == null || !(other.tile.interactable(team))) continue; @@ -1128,6 +1135,30 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, return tile.build == base() && !dead(); } + @Replace + @Override + public void kill(){ + Call.tileDestroyed(base()); + } + + @Replace + @Override + public void damage(float damage){ + if(dead()) return; + + if(Mathf.zero(state.rules.blockHealthMultiplier)){ + damage = health + 1; + }else{ + damage /= state.rules.blockHealthMultiplier; + } + + Call.tileDamage(base(), health - handleDamage(damage)); + + if(health <= 0){ + Call.tileDestroyed(base()); + } + } + @Override public void remove(){ if(sound != null){ @@ -1147,7 +1178,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, @Final @Override public void update(){ - timeScaleDuration -= Time.delta(); + timeScaleDuration -= Time.delta; if(timeScaleDuration <= 0f || !block.canOverdrive){ timeScale = 1f; } diff --git a/core/src/mindustry/entities/comp/BulletComp.java b/core/src/mindustry/entities/comp/BulletComp.java index 8843069d37..c94216c923 100644 --- a/core/src/mindustry/entities/comp/BulletComp.java +++ b/core/src/mindustry/entities/comp/BulletComp.java @@ -19,6 +19,7 @@ import static mindustry.Vars.*; abstract class BulletComp implements Timedc, Damagec, Hitboxc, Teamc, Posc, Drawc, Shielderc, Ownerc, Velc, Bulletc, Timerc{ @Import Team team; @Import Entityc owner; + @Import float x,y; IntSeq collided = new IntSeq(6); Object data; @@ -27,7 +28,7 @@ abstract class BulletComp implements Timedc, Damagec, Hitboxc, Teamc, Posc, Draw @Override public void getCollisions(Cons consumer){ - for(Team team : state.teams.enemiesOf(team)){ + for(Team team : team.enemies()){ consumer.get(teamIndex.tree(team)); } } @@ -75,7 +76,7 @@ abstract class BulletComp implements Timedc, Damagec, Hitboxc, Teamc, Posc, Draw @Override public boolean collides(Hitboxc other){ return type.collides && (other instanceof Teamc && ((Teamc)other).team() != team) - && !(other instanceof Flyingc && ((((Flyingc)other).isFlying() && !type.collidesAir) || (((Flyingc)other).isGrounded() && !type.collidesGround))) + && !(other instanceof Flyingc && !((Flyingc)other).checkTarget(type.collidesAir, type.collidesGround)) && !(type.pierce && collided.contains(other.id())); //prevent multiple collisions } @@ -91,7 +92,7 @@ abstract class BulletComp implements Timedc, Damagec, Hitboxc, Teamc, Posc, Draw if(other instanceof Unit){ Unit unit = (Unit)other; - unit.vel.add(Tmp.v3.set(unit).sub(x, y).setLength(type.knockback / unit.mass())); + unit.impulse(Tmp.v3.set(unit).sub(this.x, this.y).nor().scl(type.knockback * 80f)); unit.apply(type.status, type.statusDuration); } @@ -107,20 +108,20 @@ abstract class BulletComp implements Timedc, Damagec, Hitboxc, Teamc, Posc, Draw public void update(){ type.update(base()); - if(type.collidesTiles && type.collides){ + if(type.collidesTiles && type.collides && type.collidesGround){ world.raycastEach(world.toTile(lastX()), world.toTile(lastY()), tileX(), tileY(), (x, y) -> { - Building tile = world.ent(x, y); + Building tile = world.build(x, y); if(tile == null) return false; - if(tile.collide(base()) && type.collides(base(), tile) && !tile.dead() && (type.collidesTeam || tile.team() != team())){ + if(tile.collide(base()) && type.collides(base(), tile) && !tile.dead() && (type.collidesTeam || tile.team != team)){ boolean remove = false; - if(tile.team() != team()){ + if(tile.team != team){ remove = tile.collision(base()); } - if(remove){ + if(remove || type.collidesTeam){ type.hitTile(base(), tile); remove(); } diff --git a/core/src/mindustry/entities/comp/DecalComp.java b/core/src/mindustry/entities/comp/DecalComp.java index f6ee0ef02b..6db6b58f53 100644 --- a/core/src/mindustry/entities/comp/DecalComp.java +++ b/core/src/mindustry/entities/comp/DecalComp.java @@ -19,10 +19,10 @@ abstract class DecalComp implements Drawc, Timedc, Rotc, Posc{ public void draw(){ Draw.z(Layer.scorch); - Draw.color(color); + Draw.mixcol(color, color.a); Draw.alpha(1f - Mathf.curve(fin(), 0.98f)); Draw.rect(region, x, y, rotation); - Draw.color(); + Draw.reset(); } @Replace diff --git a/core/src/mindustry/entities/comp/ElevationMoveComp.java b/core/src/mindustry/entities/comp/ElevationMoveComp.java index 6e8b30a1cb..af4b58571d 100644 --- a/core/src/mindustry/entities/comp/ElevationMoveComp.java +++ b/core/src/mindustry/entities/comp/ElevationMoveComp.java @@ -19,4 +19,5 @@ abstract class ElevationMoveComp implements Velc, Posc, Flyingc, Hitboxc{ collisions.move(this, cx, cy); } } + } diff --git a/core/src/mindustry/entities/comp/EntityComp.java b/core/src/mindustry/entities/comp/EntityComp.java index a0082ec9d5..3e49ea01ce 100644 --- a/core/src/mindustry/entities/comp/EntityComp.java +++ b/core/src/mindustry/entities/comp/EntityComp.java @@ -32,6 +32,10 @@ abstract class EntityComp{ return ((Object)this) == player || ((Object)this) instanceof Unitc && ((Unitc)((Object)this)).controller() == player; } + boolean isRemote(){ + return ((Object)this) instanceof Unitc && ((Unitc)((Object)this)).isPlayer() && !isLocal(); + } + boolean isNull(){ return false; } diff --git a/core/src/mindustry/entities/comp/FireComp.java b/core/src/mindustry/entities/comp/FireComp.java index 74f5199ab6..075a96416b 100644 --- a/core/src/mindustry/entities/comp/FireComp.java +++ b/core/src/mindustry/entities/comp/FireComp.java @@ -26,19 +26,19 @@ abstract class FireComp implements Timedc, Posc, Firec{ @Override public void update(){ - if(Mathf.chance(0.1 * Time.delta())){ + if(Mathf.chance(0.1 * Time.delta)){ Fx.fire.at(x + Mathf.range(4f), y + Mathf.range(4f)); } - if(Mathf.chance(0.05 * Time.delta())){ + if(Mathf.chance(0.05 * Time.delta)){ Fx.fireSmoke.at(x + Mathf.range(4f), y + Mathf.range(4f)); } - if(Mathf.chance(0.001 * Time.delta())){ + if(Mathf.chance(0.001 * Time.delta)){ Sounds.fire.at(this); } - time = Mathf.clamp(time + Time.delta(), 0, lifetime()); + time = Mathf.clamp(time + Time.delta, 0, lifetime()); if(Vars.net.client()){ return; @@ -55,7 +55,7 @@ abstract class FireComp implements Timedc, Posc, Firec{ float flammability = baseFlammability + puddleFlammability; if(!damage && flammability <= 0){ - time += Time.delta() * 8; + time += Time.delta * 8; } if(baseFlammability < 0 || block != tile.block()){ @@ -64,20 +64,20 @@ abstract class FireComp implements Timedc, Posc, Firec{ } if(damage){ - lifetime += Mathf.clamp(flammability / 8f, 0f, 0.6f) * Time.delta(); + lifetime += Mathf.clamp(flammability / 8f, 0f, 0.6f) * Time.delta; } - if(flammability > 1f && Mathf.chance(spreadChance * Time.delta() * Mathf.clamp(flammability / 5f, 0.3f, 2f))){ + if(flammability > 1f && Mathf.chance(spreadChance * Time.delta * Mathf.clamp(flammability / 5f, 0.3f, 2f))){ Point2 p = Geometry.d4[Mathf.random(3)]; Tile other = world.tile(tile.x + p.x, tile.y + p.y); Fires.create(other); - if(Mathf.chance(fireballChance * Time.delta() * Mathf.clamp(flammability / 10f))){ + if(Mathf.chance(fireballChance * Time.delta * Mathf.clamp(flammability / 10f))){ Bullets.fireball.createNet(Team.derelict, x, y, Mathf.random(360f), -1f, 1, 1); } } - if(Mathf.chance(0.1 * Time.delta())){ + if(Mathf.chance(0.1 * Time.delta)){ Puddlec p = Puddles.get(tile); puddleFlammability = p != null ? p.getFlammability() / 3f : 0; diff --git a/core/src/mindustry/entities/comp/FlyingComp.java b/core/src/mindustry/entities/comp/FlyingComp.java index f79fd3c3a1..bc27a2b084 100644 --- a/core/src/mindustry/entities/comp/FlyingComp.java +++ b/core/src/mindustry/entities/comp/FlyingComp.java @@ -17,11 +17,16 @@ abstract class FlyingComp implements Posc, Velc, Healthc, Hitboxc{ @Import float x, y; @Import Vec2 vel; - @SyncField(value = true, clamped = true) @SyncLocal float elevation; + @SyncLocal float elevation; private transient boolean wasFlying; + transient boolean hovering; transient float drownTime; transient float splashTimer; + boolean checkTarget(boolean targetAir, boolean targetGround){ + return (isGrounded() && targetGround) || (isFlying() && targetAir); + } + boolean isGrounded(){ return elevation < 0.001f; } @@ -31,7 +36,7 @@ abstract class FlyingComp implements Posc, Velc, Healthc, Hitboxc{ } boolean canDrown(){ - return isGrounded(); + return isGrounded() && !hovering; } void landed(){ @@ -39,18 +44,18 @@ abstract class FlyingComp implements Posc, Velc, Healthc, Hitboxc{ } void wobble(){ - x += Mathf.sin(Time.time() + id() * 99, 25f, 0.05f) * Time.delta() * elevation; - y += Mathf.cos(Time.time() + id() * 99, 25f, 0.05f) * Time.delta() * elevation; + x += Mathf.sin(Time.time() + id() * 99, 25f, 0.05f) * Time.delta * elevation; + y += Mathf.cos(Time.time() + id() * 99, 25f, 0.05f) * Time.delta * elevation; } void moveAt(Vec2 vector, float acceleration){ Vec2 t = tmp1.set(vector).scl(floorSpeedMultiplier()); //target vector - tmp2.set(t).sub(vel).limit(acceleration * vector.len()); //delta vector + tmp2.set(t).sub(vel).limit(acceleration * vector.len() * Time.delta); //delta vector vel.add(tmp2); } float floorSpeedMultiplier(){ - Floor on = isFlying() ? Blocks.air.asFloor() : floorOn(); + Floor on = isFlying() || hovering ? Blocks.air.asFloor() : floorOn(); return on.speedMultiplier; } @@ -68,15 +73,15 @@ abstract class FlyingComp implements Posc, Velc, Healthc, Hitboxc{ wasFlying = isFlying(); } - if(isGrounded() && floor.isLiquid){ + if(!hovering && isGrounded() && floor.isLiquid){ if((splashTimer += Mathf.dst(deltaX(), deltaY())) >= 7f){ - floor.walkEffect.at(x, y, 1f, floor.mapColor); + floor.walkEffect.at(x, y, hitSize() / 8f, floor.mapColor); splashTimer = 0f; } } if(canDrown() && floor.isLiquid && floor.drownTime > 0){ - drownTime += Time.delta() * 1f / floor.drownTime; + drownTime += Time.delta * 1f / floor.drownTime; drownTime = Mathf.clamp(drownTime); if(Mathf.chanceDelta(0.05f)){ floor.drownUpdateEffect.at(x, y, 1f, floor.mapColor); diff --git a/core/src/mindustry/entities/comp/HealthComp.java b/core/src/mindustry/entities/comp/HealthComp.java index d906adb714..609f3da46f 100644 --- a/core/src/mindustry/entities/comp/HealthComp.java +++ b/core/src/mindustry/entities/comp/HealthComp.java @@ -24,7 +24,7 @@ abstract class HealthComp implements Entityc{ @Override public void update(){ - hitTime -= Time.delta() / hitDuration; + hitTime -= Time.delta / hitDuration; } void killed(){ @@ -82,19 +82,25 @@ abstract class HealthComp implements Entityc{ } void damageContinuous(float amount){ - damage(amount * Time.delta(), hitTime <= -20 + hitDuration); + damage(amount * Time.delta, hitTime <= -10 + hitDuration); } void damageContinuousPierce(float amount){ - damagePierce(amount * Time.delta(), hitTime <= -20 + hitDuration); + damagePierce(amount * Time.delta, hitTime <= -20 + hitDuration); } void clampHealth(){ health = Mathf.clamp(health, 0, maxHealth); } + /** Heals by a flat amount. */ void heal(float amount){ health += amount; clampHealth(); } + + /** Heals by a 0-1 fraction of max health. */ + void healFract(float amount){ + heal(amount * maxHealth); + } } diff --git a/core/src/mindustry/entities/comp/LegsComp.java b/core/src/mindustry/entities/comp/LegsComp.java index 452452b844..e516c6befe 100644 --- a/core/src/mindustry/entities/comp/LegsComp.java +++ b/core/src/mindustry/entities/comp/LegsComp.java @@ -12,8 +12,10 @@ import mindustry.graphics.*; import mindustry.type.*; import mindustry.world.blocks.environment.*; +import static mindustry.Vars.*; + @Component -abstract class LegsComp implements Posc, Rotc, Hitboxc, Flyingc, Unitc, ElevationMovec{ +abstract class LegsComp implements Posc, Rotc, Hitboxc, Flyingc, Unitc{ @Import float x, y; @Import UnitType type; @@ -22,6 +24,12 @@ abstract class LegsComp implements Posc, Rotc, Hitboxc, Flyingc, Unitc, Elevatio transient float moveSpace; transient float baseRotation; + @Replace + @Override + public void move(float cx, float cy){ + collisions.moveCheck(this, cx, cy, !type.allowLegStep ? EntityCollisions::solid : EntityCollisions::legsSolid); + } + @Override public void update(){ if(Mathf.dst(deltaX(), deltaY()) > 0.001f){ diff --git a/core/src/mindustry/entities/comp/MechComp.java b/core/src/mindustry/entities/comp/MechComp.java index 0c0a6f4962..60e9a7dbde 100644 --- a/core/src/mindustry/entities/comp/MechComp.java +++ b/core/src/mindustry/entities/comp/MechComp.java @@ -14,6 +14,6 @@ abstract class MechComp implements Posc, Flyingc, Hitboxc, Unitc, Mechc, Elevati public void update(){ float len = deltaLen(); baseRotation = Angles.moveToward(baseRotation, deltaAngle(), type().baseRotateSpeed * Mathf.clamp(len / type().speed)); - walkTime += Time.delta()*len; + walkTime += Time.delta *len; } } diff --git a/core/src/mindustry/entities/comp/MinerComp.java b/core/src/mindustry/entities/comp/MinerComp.java index 4c3b1ba175..23b566c534 100644 --- a/core/src/mindustry/entities/comp/MinerComp.java +++ b/core/src/mindustry/entities/comp/MinerComp.java @@ -17,17 +17,20 @@ import mindustry.world.*; import static mindustry.Vars.*; @Component -abstract class MinerComp implements Itemsc, Posc, Teamc, Rotc, Drawc{ +abstract class MinerComp implements Itemsc, Posc, Teamc, Rotc, Drawc, Unitc{ @Import float x, y, rotation; + @Import UnitType type; transient float mineTimer; - @Nullable Tile mineTile; + @Nullable @SyncLocal Tile mineTile; - abstract boolean canMine(Item item); + public boolean canMine(Item item){ + return type.mineTier >= item.hardness; + } - abstract float miningSpeed(); - - abstract boolean offloadImmediately(); + public boolean offloadImmediately(){ + return isPlayer(); + } boolean mining(){ return mineTile != null; @@ -37,7 +40,7 @@ abstract class MinerComp implements Itemsc, Posc, Teamc, Rotc, Drawc{ public void update(){ Building core = closestCore(); - if(core != null && mineTile != null && mineTile.drop() != null && !acceptsItem(mineTile.drop()) && dst(core) < mineTransferRange){ + if(core != null && mineTile != null && mineTile.drop() != null && !acceptsItem(mineTile.drop()) && within(core, mineTransferRange)){ int accepted = core.acceptStack(item(), stack().amount, this); if(accepted > 0){ Call.transferItemTo(item(), accepted, @@ -55,12 +58,12 @@ abstract class MinerComp implements Itemsc, Posc, Teamc, Rotc, Drawc{ }else{ Item item = mineTile.drop(); rotation(Mathf.slerpDelta(rotation(), angleTo(mineTile.worldx(), mineTile.worldy()), 0.4f)); - mineTimer += Time.delta()*miningSpeed(); + mineTimer += Time.delta *type.mineSpeed; if(mineTimer >= 50f + item.hardness*10f){ mineTimer = 0; - if(dst(core) < mineTransferRange && core.acceptStack(item, 1, this) == 1 && offloadImmediately()){ + if(within(core, mineTransferRange) && core.acceptStack(item, 1, this) == 1 && offloadImmediately()){ Call.transferItemTo(item, 1, mineTile.worldx() + Mathf.range(tilesize / 2f), mineTile.worldy() + Mathf.range(tilesize / 2f), core.tile()); @@ -73,7 +76,7 @@ abstract class MinerComp implements Itemsc, Posc, Teamc, Rotc, Drawc{ } } - if(Mathf.chance(0.06 * Time.delta())){ + if(Mathf.chance(0.06 * Time.delta)){ Fx.pulverizeSmall.at(mineTile.worldx() + Mathf.range(tilesize / 2f), mineTile.worldy() + Mathf.range(tilesize / 2f), 0f, item.color); } } @@ -92,6 +95,8 @@ abstract class MinerComp implements Itemsc, Posc, Teamc, Rotc, Drawc{ float ex = mineTile.worldx() + Mathf.sin(Time.time() + 48, swingScl, swingMag); float ey = mineTile.worldy() + Mathf.sin(Time.time() + 48, swingScl + 2f, swingMag); + Draw.z(Layer.flyingUnit + 0.1f); + Draw.color(Color.lightGray, Color.white, 1f - flashScl + Mathf.absin(Time.time(), 0.5f, flashScl)); Drawf.laser(team(), Core.atlas.find("minelaser"), Core.atlas.find("minelaser-end"), px, py, ex, ey, 0.75f); diff --git a/core/src/mindustry/entities/comp/PayloadComp.java b/core/src/mindustry/entities/comp/PayloadComp.java index c655180e30..87d9e7509a 100644 --- a/core/src/mindustry/entities/comp/PayloadComp.java +++ b/core/src/mindustry/entities/comp/PayloadComp.java @@ -12,7 +12,7 @@ import mindustry.world.blocks.payloads.*; /** An entity that holds a payload. */ @Component -abstract class PayloadComp implements Posc, Rotc{ +abstract class PayloadComp implements Posc, Rotc, Hitboxc{ @Import float x, y, rotation; Seq payloads = new Seq<>(); @@ -68,7 +68,6 @@ abstract class PayloadComp implements Posc, Rotc{ } boolean dropUnit(UnitPayload payload){ - //TODO create an effect here and/or make them be at a lower elevation Unit u = payload.unit; //can't drop ground units @@ -88,7 +87,7 @@ abstract class PayloadComp implements Posc, Rotc{ /** @return whether the tile has been successfully placed. */ boolean dropBlock(BlockPayload payload){ Building tile = payload.entity; - int tx = Vars.world.toTile(x - tile.block().offset()), ty = Vars.world.toTile(y - tile.block().offset()); + int tx = Vars.world.toTile(x - tile.block().offset), ty = Vars.world.toTile(y - tile.block().offset); Tile on = Vars.world.tile(tx, ty); if(on != null && Build.validPlace(tile.block(), tile.team(), tx, ty, tile.rotation())){ int rot = (int)((rotation + 45f) / 90f) % 4; diff --git a/core/src/mindustry/entities/comp/PhysicsComp.java b/core/src/mindustry/entities/comp/PhysicsComp.java index 8db4ab12ff..12972935ee 100644 --- a/core/src/mindustry/entities/comp/PhysicsComp.java +++ b/core/src/mindustry/entities/comp/PhysicsComp.java @@ -1,6 +1,7 @@ package mindustry.entities.comp; import arc.math.*; +import arc.math.geom.*; import mindustry.annotations.Annotations.*; import mindustry.async.PhysicsProcess.*; import mindustry.gen.*; @@ -11,6 +12,7 @@ import mindustry.gen.*; @Component abstract class PhysicsComp implements Velc, Hitboxc, Flyingc{ @Import float hitSize; + @Import Vec2 vel; transient PhysicRef physref; @@ -21,6 +23,10 @@ abstract class PhysicsComp implements Velc, Hitboxc, Flyingc{ void impulse(float x, float y){ float mass = mass(); - vel().add(x / mass, y / mass); + vel.add(x / mass, y / mass); + } + + void impulse(Vec2 v){ + impulse(v.x, v.y); } } diff --git a/core/src/mindustry/entities/comp/PlayerComp.java b/core/src/mindustry/entities/comp/PlayerComp.java index 4c11266019..4f4800daa7 100644 --- a/core/src/mindustry/entities/comp/PlayerComp.java +++ b/core/src/mindustry/entities/comp/PlayerComp.java @@ -12,8 +12,8 @@ import mindustry.annotations.Annotations.*; import mindustry.content.*; import mindustry.core.*; import mindustry.entities.units.*; -import mindustry.game.*; import mindustry.game.EventType.*; +import mindustry.game.*; import mindustry.gen.*; import mindustry.graphics.*; import mindustry.net.Administration.*; @@ -37,10 +37,10 @@ abstract class PlayerComp implements UnitController, Entityc, Syncc, Timerc, Dra transient @Nullable NetConnection con; @ReadOnly Team team = Team.sharded; + @SyncLocal boolean admin, typing, shooting, boosting; + @SyncLocal float mouseX, mouseY; String name = "noname"; - boolean admin, typing, shooting, boosting; Color color = new Color(); - float mouseX, mouseY; transient float deathTimer; transient String lastText = ""; @@ -63,9 +63,10 @@ abstract class PlayerComp implements UnitController, Entityc, Syncc, Timerc, Dra } public TextureRegion icon(){ + //display default icon for dead players if(dead()) return core() == null ? UnitTypes.alpha.icon(Cicon.full) : ((CoreBlock)core().block).unitType.icon(Cicon.full); - return unit.type().icon(Cicon.full); + return unit.icon(); } public void reset(){ @@ -78,6 +79,11 @@ abstract class PlayerComp implements UnitController, Entityc, Syncc, Timerc, Dra } } + @Override + public boolean isValidController(){ + return isAdded(); + } + @Replace public float clipSize(){ return unit.isNull() ? 20 : unit.type().hitsize * 2f; @@ -113,7 +119,7 @@ abstract class PlayerComp implements UnitController, Entityc, Syncc, Timerc, Dra }else if(core != null){ //have a small delay before death to prevent the camera from jumping around too quickly //(this is not for balance) - deathTimer += Time.delta(); + deathTimer += Time.delta; if(deathTimer >= deathDelay){ //request spawn - this happens serverside only core.requestSpawn(base()); @@ -121,10 +127,18 @@ abstract class PlayerComp implements UnitController, Entityc, Syncc, Timerc, Dra } } - textFadeTime -= Time.delta() / (60 * 5); + textFadeTime -= Time.delta / (60 * 5); } + @Override + public void remove(){ + //clear unit upon removal + if(!unit.isNull()){ + clearUnit(); + } + } + public void team(Team team){ this.team = team; unit.team(team); diff --git a/core/src/mindustry/entities/comp/PuddleComp.java b/core/src/mindustry/entities/comp/PuddleComp.java index 61eed49b69..35ab03416c 100644 --- a/core/src/mindustry/entities/comp/PuddleComp.java +++ b/core/src/mindustry/entities/comp/PuddleComp.java @@ -43,13 +43,13 @@ abstract class PuddleComp implements Posc, Puddlec, Drawc{ //update code float addSpeed = accepting > 0 ? 3f : 0f; - amount -= Time.delta() * (1f - liquid.viscosity) / (5f + addSpeed); + amount -= Time.delta * (1f - liquid.viscosity) / (5f + addSpeed); amount += accepting; accepting = 0f; if(amount >= maxLiquid / 1.5f && generation < maxGeneration){ - float deposited = Math.min((amount - maxLiquid / 1.5f) / 4f, 0.3f) * Time.delta(); + float deposited = Math.min((amount - maxLiquid / 1.5f) / 4f, 0.3f) * Time.delta; for(Point2 point : Geometry.d4){ Tile other = world.tile(tile.x + point.x, tile.y + point.y); if(other != null && other.block() == Blocks.air){ @@ -68,26 +68,26 @@ abstract class PuddleComp implements Posc, Puddlec, Drawc{ //effects-only code if(amount >= maxLiquid / 2f && updateTime <= 0f){ Units.nearby(rect.setSize(Mathf.clamp(amount / (maxLiquid / 1.5f)) * 10f).setCenter(x, y), unit -> { - if(unit.isGrounded()){ + if(unit.isGrounded() && !unit.hovering){ unit.hitbox(rect2); if(rect.overlaps(rect2)){ unit.apply(liquid.effect, 60 * 2); - if(unit.vel().len() > 0.1){ - Fx.ripple.at(unit.x(), unit.y(), unit.type().rippleScale, liquid.color); + if(unit.vel.len() > 0.1){ + Fx.ripple.at(unit.x, unit.y, unit.type().rippleScale, liquid.color); } } } }); - if(liquid.temperature > 0.7f && (tile.build != null) && Mathf.chance(0.3 * Time.delta())){ + if(liquid.temperature > 0.7f && (tile.build != null) && Mathf.chance(0.5)){ Fires.create(tile); } - updateTime = 20f; + updateTime = 40f; } - updateTime -= Time.delta(); + updateTime -= Time.delta; } @Override diff --git a/core/src/mindustry/entities/comp/ShieldComp.java b/core/src/mindustry/entities/comp/ShieldComp.java index 204efff128..5125faa96e 100644 --- a/core/src/mindustry/entities/comp/ShieldComp.java +++ b/core/src/mindustry/entities/comp/ShieldComp.java @@ -34,7 +34,7 @@ abstract class ShieldComp implements Healthc, Posc{ shieldAlpha = 1f; } - float shieldDamage = Math.min(shield, amount); + float shieldDamage = Math.min(Math.max(shield, 0), amount); shield -= shieldDamage; amount -= shieldDamage; @@ -52,7 +52,7 @@ abstract class ShieldComp implements Healthc, Posc{ @Override public void update(){ - shieldAlpha -= Time.delta() / 15f; + shieldAlpha -= Time.delta / 15f; if(shieldAlpha < 0) shieldAlpha = 0f; } } diff --git a/core/src/mindustry/entities/comp/StatusComp.java b/core/src/mindustry/entities/comp/StatusComp.java index f244500262..bf61535026 100644 --- a/core/src/mindustry/entities/comp/StatusComp.java +++ b/core/src/mindustry/entities/comp/StatusComp.java @@ -20,7 +20,7 @@ abstract class StatusComp implements Posc, Flyingc{ private Seq statuses = new Seq<>(); private transient Bits applied = new Bits(content.getBy(ContentType.status).size); - @ReadOnly transient float speedMultiplier, damageMultiplier, armorMultiplier; + @ReadOnly transient float speedMultiplier = 1, damageMultiplier = 1, armorMultiplier = 1, reloadMultiplier = 1; /** @return damage taken based on status armor multipliers */ float getShieldDamage(float amount){ @@ -108,7 +108,7 @@ abstract class StatusComp implements Posc, Flyingc{ } applied.clear(); - speedMultiplier = damageMultiplier = armorMultiplier = 1f; + speedMultiplier = damageMultiplier = armorMultiplier = reloadMultiplier = 1f; if(statuses.isEmpty()) return; @@ -117,7 +117,7 @@ abstract class StatusComp implements Posc, Flyingc{ while(index < statuses.size){ StatusEntry entry = statuses.get(index++); - entry.time = Math.max(entry.time - Time.delta(), 0); + entry.time = Math.max(entry.time - Time.delta, 0); applied.set(entry.effect.id); if(entry.time <= 0 && !entry.effect.permanent){ @@ -128,6 +128,7 @@ abstract class StatusComp implements Posc, Flyingc{ speedMultiplier *= entry.effect.speedMultiplier; armorMultiplier *= entry.effect.armorMultiplier; damageMultiplier *= entry.effect.damageMultiplier; + reloadMultiplier *= entry.effect.reloadMultiplier; entry.effect.update(base(), entry.time); } } diff --git a/core/src/mindustry/entities/comp/SyncComp.java b/core/src/mindustry/entities/comp/SyncComp.java index 550c2e8363..0fd3d06cae 100644 --- a/core/src/mindustry/entities/comp/SyncComp.java +++ b/core/src/mindustry/entities/comp/SyncComp.java @@ -22,8 +22,19 @@ abstract class SyncComp implements Entityc{ @Override public void update(){ - if(Vars.net.client() && !isLocal()){ + //interpolate the player if: + //- this is a client and the entity is everything except the local player + //- this is a server and the entity is a remote player + if((Vars.net.client() && !isLocal()) || isRemote()){ interpolate(); } } + + @Override + public void remove(){ + //notify client of removal + if(Vars.net.client()){ + Vars.netClient.addRemovedEntity(id()); + } + } } diff --git a/core/src/mindustry/entities/comp/TimedComp.java b/core/src/mindustry/entities/comp/TimedComp.java index 15dbb737d6..f6a0225bd5 100644 --- a/core/src/mindustry/entities/comp/TimedComp.java +++ b/core/src/mindustry/entities/comp/TimedComp.java @@ -13,7 +13,7 @@ abstract class TimedComp implements Entityc, Scaled{ @MethodPriority(100) @Override public void update(){ - time = Math.min(time + Time.delta(), lifetime); + time = Math.min(time + Time.delta, lifetime); if(time >= lifetime){ remove(); diff --git a/core/src/mindustry/entities/comp/UnitComp.java b/core/src/mindustry/entities/comp/UnitComp.java index 9b17b9dd68..e4aac95a3a 100644 --- a/core/src/mindustry/entities/comp/UnitComp.java +++ b/core/src/mindustry/entities/comp/UnitComp.java @@ -1,6 +1,7 @@ package mindustry.entities.comp; import arc.*; +import arc.graphics.g2d.*; import arc.math.*; import arc.math.geom.*; import arc.scene.ui.layout.*; @@ -24,13 +25,16 @@ import static mindustry.Vars.*; @Component(base = true) abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, Itemsc, Rotc, Unitc, Weaponsc, Drawc, Boundedc, Syncc, Shieldc, Displayable{ + @Import boolean hovering; @Import float x, y, rotation, elevation, maxHealth, drag, armor, hitSize, health; @Import boolean dead; @Import Team team; private UnitController controller; private UnitType type; - boolean spawnedByCore; + boolean spawnedByCore, deactivated; + + transient float timer1, timer2; public void moveAt(Vec2 vector){ moveAt(vector, type.accel); @@ -99,7 +103,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I } public void lookAt(float angle){ - rotation = Angles.moveToward(rotation, angle, type.rotateSpeed * Time.delta()); + rotation = Angles.moveToward(rotation, angle, type.rotateSpeed * Time.delta); } public void lookAt(Position pos){ @@ -114,13 +118,22 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I return controller instanceof AIController; } + public int count(){ + return teamIndex.countType(team, type); + } + + public int cap(){ + return Units.getCap(team); + } + private void setStats(UnitType type){ this.type = type; this.maxHealth = type.health; this.drag = type.drag; - this.elevation = type.flying ? 1f : type.baseElevation; + this.elevation = type.flying ? 1f : 0; this.armor = type.armor; this.hitSize = type.hitsize; + this.hovering = type.hovering; if(controller == null) controller(type.createController()); if(mounts().length != type.weapons.size) setupWeapons(type); @@ -142,12 +155,19 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I @Override public void add(){ - teamIndex.updateCount(team, 1); + teamIndex.updateCount(team, type, 1); + + //check if over unit cap + if(count() > cap() && !spawnedByCore){ + deactivated = true; + }else{ + teamIndex.updateActiveCount(team, type, 1); + } } @Override public void remove(){ - teamIndex.updateCount(team, -1); + teamIndex.updateCount(team, type, -1); controller.removed(base()); } @@ -162,34 +182,65 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I @Override public void update(){ - type.update(base()); + //activate the unit when possible + if(!net.client() && deactivated && teamIndex.countActive(team, type) < Units.getCap(team)){ + teamIndex.updateActiveCount(team, type, 1); + deactivated = false; + } - drag(type.drag * (isGrounded() ? (floorOn().dragMultiplier) : 1f)); + if(!deactivated) type.update(base()); + + drag = type.drag * (isGrounded() ? (floorOn().dragMultiplier) : 1f); //apply knockback based on spawns if(team != state.rules.waveTeam){ float relativeSize = state.rules.dropZoneRadius + bounds()/2f + 1f; for(Tile spawn : spawner.getSpawns()){ if(within(spawn.worldx(), spawn.worldy(), relativeSize)){ - vel().add(Tmp.v1.set(this).sub(spawn.worldx(), spawn.worldy()).setLength(0.1f + 1f - dst(spawn) / relativeSize).scl(0.45f * Time.delta())); + vel().add(Tmp.v1.set(this).sub(spawn.worldx(), spawn.worldy()).setLength(0.1f + 1f - dst(spawn) / relativeSize).scl(0.45f * Time.delta)); } } } + //simulate falling down + if(dead){ + //less drag when dead + drag = 0.01f; + + //standard fall smoke + if(Mathf.chanceDelta(0.1)){ + Tmp.v1.setToRandomDirection().scl(hitSize); + type.fallEffect.at(x + Tmp.v1.x, y + Tmp.v1.y); + } + + //thruster fall trail + if(Mathf.chanceDelta(0.2)){ + float offset = type.engineOffset/2f + type.engineOffset/2f*elevation; + float range = Mathf.range(type.engineSize); + type.fallThrusterEffect.at( + x + Angles.trnsx(rotation + 180, offset) + Mathf.range(range), + y + Angles.trnsy(rotation + 180, offset) + Mathf.range(range), + Mathf.random() + ); + } + + //move down + elevation -= type.fallSpeed * Time.delta; + + if(isGrounded()){ + destroy(); + } + } + Tile tile = tileOn(); Floor floor = floorOn(); - if(tile != null && isGrounded()){ + if(tile != null && isGrounded() && !type.hovering){ //unit block update if(tile.build != null){ tile.build.unitOn(base()); } - //kill when stuck in wall - if(tile.solid()){ - kill(); - } - //apply damage if(floor.damageTaken > 0f){ damageContinuous(floor.damageTaken); @@ -197,17 +248,63 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I } //AI only updates on the server - if(!net.client()){ + if(!net.client() && !dead && !deactivated){ controller.updateUnit(); } + //do not control anything when deactivated + if(deactivated){ + controlWeapons(false, false); + } + //remove units spawned by the core if(spawnedByCore && !isPlayer()){ - Fx.unitDespawn.at(x, y, 0, this); - remove(); + Call.unitDespawn(base()); } } + /** @return a preview icon for this unit. */ + public TextureRegion icon(){ + return type.icon(Cicon.full); + } + + /** Actually destroys the unit, removing it and creating explosions. **/ + public void destroy(){ + float explosiveness = 2f + item().explosiveness * stack().amount; + float flammability = item().flammability * stack().amount; + Damage.dynamicExplosion(x, y, flammability, explosiveness, 0f, bounds() / 2f, Pal.darkFlame); + + float shake = hitSize / 3f; + + Effects.scorch(x, y, (int)(hitSize / 5)); + Fx.explosion.at(this); + Effects.shake(shake, shake, this); + type.deathSound.at(this); + + Events.fire(new UnitDestroyEvent(base())); + + if(explosiveness > 7f && isLocal()){ + Events.fire(Trigger.suicideBomb); + } + + //if this unit crash landed (was flying), damage stuff in a radius + if(type.flying){ + Damage.damage(team,x, y, hitSize * 1.1f, hitSize * type.crashDamageMultiplier, true, false, true); + } + + if(!headless){ + for(int i = 0; i < type.wreckRegions.length; i++){ + if(type.wreckRegions[i].found()){ + float range = type.hitsize/4f; + Tmp.v1.rnd(range); + Effects.decal(type.wreckRegions[i], x + Tmp.v1.x, y + Tmp.v1.y, rotation - 90); + } + } + } + + remove(); + } + @Override public void display(Table table){ type.display(base(), table); @@ -238,22 +335,10 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I health = 0; dead = true; - float explosiveness = 2f + item().explosiveness * stack().amount; - float flammability = item().flammability * stack().amount; - Damage.dynamicExplosion(x, y, flammability, explosiveness, 0f, bounds() / 2f, Pal.darkFlame); - - Effects.scorch(x, y, (int)(hitSize / 5)); - Fx.explosion.at(this); - Effects.shake(2f, 2f, this); - type.deathSound.at(this); - - Events.fire(new UnitDestroyEvent(base())); - - if(explosiveness > 7f && isLocal()){ - Events.fire(Trigger.suicideBomb); + //don't waste time when the unit is already on the ground, just destroy it + if(isGrounded()){ + destroy(); } - - remove(); } @Override @@ -262,21 +347,6 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I if(dead || net.client()) return; //deaths are synced; this calls killed() - Call.onUnitDeath(base()); - } - - @Override - public boolean canMine(Item item){ - return type.drillTier >= item.hardness; - } - - @Override - public float miningSpeed(){ - return type.mineSpeed; - } - - @Override - public boolean offloadImmediately(){ - return false; + Call.unitDeath(base()); } } diff --git a/core/src/mindustry/entities/comp/VelComp.java b/core/src/mindustry/entities/comp/VelComp.java index 6e3a31c76b..b01e6322ce 100644 --- a/core/src/mindustry/entities/comp/VelComp.java +++ b/core/src/mindustry/entities/comp/VelComp.java @@ -17,8 +17,8 @@ abstract class VelComp implements Posc{ @MethodPriority(-1) @Override public void update(){ - move(vel.x * Time.delta(), vel.y * Time.delta()); - vel.scl(1f - drag * Time.delta()); + move(vel.x * Time.delta, vel.y * Time.delta); + vel.scl(1f - drag * Time.delta); } boolean moving(){ diff --git a/core/src/mindustry/entities/comp/WaterMoveComp.java b/core/src/mindustry/entities/comp/WaterMoveComp.java index 07c607f6ab..3cc371eade 100644 --- a/core/src/mindustry/entities/comp/WaterMoveComp.java +++ b/core/src/mindustry/entities/comp/WaterMoveComp.java @@ -1,25 +1,60 @@ package mindustry.entities.comp; +import arc.graphics.*; +import arc.graphics.g2d.*; +import arc.math.*; +import arc.util.*; import mindustry.annotations.Annotations.*; import mindustry.content.*; import mindustry.entities.*; import mindustry.gen.*; +import mindustry.graphics.*; +import mindustry.type.*; import mindustry.world.blocks.environment.*; -import static mindustry.Vars.collisions; +import static mindustry.Vars.*; //just a proof of concept @Component -abstract class WaterMoveComp implements Posc, Velc, Hitboxc, Flyingc{ - @Import float x, y; +abstract class WaterMoveComp implements Posc, Velc, Hitboxc, Flyingc, Unitc{ + @Import float x, y, rotation; + @Import UnitType type; + + private transient Trail tleft = new Trail(1), tright = new Trail(1); + private transient Color trailColor = Blocks.water.mapColor.cpy().mul(1.5f); + + @Override + public void update(){ + for(int i = 0; i < 2; i++){ + Trail t = i == 0 ? tleft : tright; + t.length = type.trailLength; + + int sign = i == 0 ? -1 : 1; + float cx = Angles.trnsx(rotation - 90, type.trailX * sign, type.trailY) + x, cy = Angles.trnsy(rotation - 90, type.trailX * sign, type.trailY) + y; + t.update(cx, cy); + } + } + + public void draw(){ + float z = Draw.z(); + + Draw.z(Layer.debris); + + Floor floor = floorOn(); + Color color = Tmp.c1.set(floor.mapColor).mul(1.5f); + trailColor.lerp(color, Mathf.clamp(Time.delta * 0.04f)); + + tleft.draw(trailColor, type.trailScl); + tright.draw(trailColor, type.trailScl); + + Draw.z(z); + } @Replace @Override public void move(float cx, float cy){ if(isGrounded()){ - if(!EntityCollisions.waterSolid(tileX(), tileY())){ - collisions.move(this, cx, cy, EntityCollisions::waterSolid); - } + collisions.moveCheck(this, cx, cy, EntityCollisions::waterSolid); }else{ x += cx; y += cy; diff --git a/core/src/mindustry/entities/comp/WeaponsComp.java b/core/src/mindustry/entities/comp/WeaponsComp.java index 350b123163..b05800d702 100644 --- a/core/src/mindustry/entities/comp/WeaponsComp.java +++ b/core/src/mindustry/entities/comp/WeaponsComp.java @@ -14,10 +14,10 @@ import static mindustry.Vars.*; @Component abstract class WeaponsComp implements Teamc, Posc, Rotc{ - @Import float x, y, rotation; + @Import float x, y, rotation, reloadMultiplier; /** minimum cursor distance from unit, fixes 'cross-eyed' shooting */ - static final float minAimDst = 20f; + static final float minAimDst = 18f; /** temporary weapon sequence number */ static int sequenceNum = 0; @@ -26,7 +26,7 @@ abstract class WeaponsComp implements Teamc, Posc, Rotc{ @ReadOnly transient float range, aimX, aimY; @ReadOnly transient boolean isRotate; boolean isShooting; - int ammo; + float ammo; void setWeaponRotation(float rotation){ for(WeaponMount mount : mounts){ @@ -47,6 +47,10 @@ abstract class WeaponsComp implements Teamc, Posc, Rotc{ } } + void controlWeapons(boolean rotateShoot){ + controlWeapons(rotateShoot, rotateShoot); + } + void controlWeapons(boolean rotate, boolean shoot){ for(WeaponMount mount : mounts){ mount.rotate = rotate; @@ -82,46 +86,52 @@ abstract class WeaponsComp implements Teamc, Posc, Rotc{ public void update(){ for(WeaponMount mount : mounts){ Weapon weapon = mount.weapon; - mount.reload = Math.max(mount.reload - Time.delta(), 0); + mount.reload = Math.max(mount.reload - Time.delta * reloadMultiplier, 0); + + //flip weapon shoot side for alternating weapons at half reload + if(weapon.otherSide != -1 && weapon.alternate && mount.side == weapon.flipSprite && + mount.reload + Time.delta > weapon.reload/2f && mount.reload <= weapon.reload/2f){ + mounts[weapon.otherSide].side = !mounts[weapon.otherSide].side; + mount.side = !mount.side; + } //rotate if applicable if(weapon.rotate && (mount.rotate || mount.shoot)){ - float axisXOffset = weapon.mirror ? 0f : weapon.x; - float axisX = this.x + Angles.trnsx(rotation, axisXOffset, weapon.y), - axisY = this.y + Angles.trnsy(rotation, axisXOffset, weapon.y); + float axisX = this.x + Angles.trnsx(rotation - 90, weapon.x, weapon.y), + axisY = this.y + Angles.trnsy(rotation - 90, weapon.x, weapon.y); - mount.targetRotation = Angles.angle(axisX, axisY, mount.aimX, mount.aimY) - rotation(); - mount.rotation = Angles.moveToward(mount.rotation, mount.targetRotation, weapon.rotateSpeed * Time.delta()); + mount.targetRotation = Angles.angle(axisX, axisY, mount.aimX, mount.aimY) - rotation; + mount.rotation = Angles.moveToward(mount.rotation, mount.targetRotation, weapon.rotateSpeed * Time.delta); }else{ mount.rotation = 0; mount.targetRotation = angleTo(mount.aimX, mount.aimY); } - if(mount.shoot && (ammo > 0 || !state.rules.unitAmmo || team().rules().infiniteAmmo)){ + //shoot if applicable + if(mount.shoot && //must be shooting + (ammo > 0 || !state.rules.unitAmmo || team().rules().infiniteAmmo) && //check ammo + (!weapon.alternate || mount.side == weapon.flipSprite) && + mount.reload <= 0.0001f && //reload has to be 0 + Angles.within(weapon.rotate ? mount.rotation : this.rotation, mount.targetRotation, mount.weapon.shootCone) //has to be within the cone + ){ + float rotation = this.rotation - 90; + float weaponRotation = rotation + (weapon.rotate ? mount.rotation : 0); - //shoot if applicable - if(mount.reload <= 0.0001f && Angles.within(weapon.rotate ? mount.rotation : this.rotation, mount.targetRotation, mount.weapon.shootCone)){ - for(int i : (weapon.mirror && !weapon.alternate ? Mathf.signs : Mathf.one)){ - i *= Mathf.sign(weapon.flipped) * (mount.weapon.mirror ? Mathf.sign(mount.side) : 1); + //m a t h - //m a t h - float weaponRotation = rotation + (weapon.rotate ? mount.rotation : 0); - float mountX = this.x + Angles.trnsx(rotation, weapon.x * i, weapon.y), - mountY = this.y + Angles.trnsy(rotation, weapon.x * i, weapon.y); - float shootX = mountX + Angles.trnsx(weaponRotation, weapon.shootX * i, weapon.shootY), - shootY = mountY + Angles.trnsy(weaponRotation, weapon.shootX * i, weapon.shootY); - float shootAngle = weapon.rotate ? weaponRotation + 90 : Angles.angle(shootX, shootY, mount.aimX, mount.aimY) + (this.rotation - angleTo(mount.aimX, mount.aimY)); + float mountX = this.x + Angles.trnsx(rotation, weapon.x, weapon.y), + mountY = this.y + Angles.trnsy(rotation, weapon.x, weapon.y); + float shootX = mountX + Angles.trnsx(weaponRotation, weapon.shootX, weapon.shootY), + shootY = mountY + Angles.trnsy(weaponRotation, weapon.shootX, weapon.shootY); + float shootAngle = weapon.rotate ? weaponRotation + 90 : Angles.angle(shootX, shootY, mount.aimX, mount.aimY) + (this.rotation - angleTo(mount.aimX, mount.aimY)); - shoot(weapon, shootX, shootY, mount.aimX, mount.aimY, shootAngle, -i); - } + shoot(weapon, shootX, shootY, mount.aimX, mount.aimY, shootAngle, Mathf.sign(weapon.x)); - if(mount.weapon.mirror) mount.side = !mount.side; - mount.reload = weapon.reload; + mount.reload = weapon.reload; - ammo --; - if(ammo < 0) ammo = 0; - } + ammo--; + if(ammo < 0) ammo = 0; } } } @@ -145,24 +155,18 @@ abstract class WeaponsComp implements Teamc, Posc, Rotc{ Angles.shotgun(weapon.shots, weapon.spacing, rotation, f -> bullet(weapon, x, y, f + Mathf.range(weapon.inaccuracy), lifeScl)); } - Tmp.v1.trns(rotation + 180f, ammo.recoil); - if(this instanceof Velc){ - //TODO apply force? - ((Velc)this).vel().add(Tmp.v1); + ((Velc)this).vel().add(Tmp.v1.trns(rotation + 180f, ammo.recoil)); } - - Tmp.v1.trns(rotation, 3f); boolean parentize = ammo.keepVelocity; Effects.shake(weapon.shake, weapon.shake, x, y); weapon.ejectEffect.at(x, y, rotation * side); - ammo.shootEffect.at(x + Tmp.v1.x, y + Tmp.v1.y, rotation, parentize ? this : null); - ammo.smokeEffect.at(x + Tmp.v1.x, y + Tmp.v1.y, rotation, parentize ? this : null); + ammo.shootEffect.at(x, y, rotation, parentize ? this : null); + ammo.smokeEffect.at(x, y, rotation, parentize ? this : null); } private void bullet(Weapon weapon, float x, float y, float angle, float lifescl){ - Tmp.v1.trns(angle, 3f); - weapon.bullet.create(this, team(), x + Tmp.v1.x, y + Tmp.v1.y, angle, (1f - weapon.velocityRnd) + Mathf.random(weapon.velocityRnd), lifescl); + weapon.bullet.create(this, team(), x, y, angle, (1f - weapon.velocityRnd) + Mathf.random(weapon.velocityRnd), lifescl); } } diff --git a/core/src/mindustry/entities/units/BuildPlan.java b/core/src/mindustry/entities/units/BuildPlan.java index af7d760219..3e265cba92 100644 --- a/core/src/mindustry/entities/units/BuildPlan.java +++ b/core/src/mindustry/entities/units/BuildPlan.java @@ -117,11 +117,11 @@ public class BuildPlan{ } public float drawx(){ - return x*tilesize + block.offset(); + return x*tilesize + block.offset; } public float drawy(){ - return y*tilesize + block.offset(); + return y*tilesize + block.offset; } public BuildPlan configure(Object config){ diff --git a/core/src/mindustry/entities/units/UnitController.java b/core/src/mindustry/entities/units/UnitController.java index 3b3eaa0342..63aec52ee3 100644 --- a/core/src/mindustry/entities/units/UnitController.java +++ b/core/src/mindustry/entities/units/UnitController.java @@ -6,6 +6,10 @@ public interface UnitController{ void unit(Unit unit); Unit unit(); + default boolean isValidController(){ + return true; + } + default void command(UnitCommand command){ } diff --git a/core/src/mindustry/entities/units/WeaponMount.java b/core/src/mindustry/entities/units/WeaponMount.java index 882c850aa0..89becb6dcf 100644 --- a/core/src/mindustry/entities/units/WeaponMount.java +++ b/core/src/mindustry/entities/units/WeaponMount.java @@ -13,12 +13,12 @@ public class WeaponMount{ public float targetRotation; /** aiming position in world coordinates */ public float aimX, aimY; - /** side that's being shot - only valid for mirrors */ - public boolean side; /** whether to shoot right now */ public boolean shoot = false; /** whether to rotate to face the target right now */ public boolean rotate = false; + /** extra state for alternating weapons */ + public boolean side; public WeaponMount(Weapon weapon){ this.weapon = weapon; diff --git a/core/src/mindustry/game/DefaultWaves.java b/core/src/mindustry/game/DefaultWaves.java index eac0714591..b7388040f5 100644 --- a/core/src/mindustry/game/DefaultWaves.java +++ b/core/src/mindustry/game/DefaultWaves.java @@ -22,7 +22,7 @@ public class DefaultWaves{ unitScaling = 1.5f; }}, - new SpawnGroup(UnitTypes.wraith){{ + new SpawnGroup(UnitTypes.flare){{ begin = 12; end = 16; unitScaling = 1f; @@ -72,7 +72,7 @@ public class DefaultWaves{ effect = StatusEffects.overdrive; }}, - new SpawnGroup(UnitTypes.wraith){{ + new SpawnGroup(UnitTypes.flare){{ begin = 16; unitScaling = 1; spacing = 2; @@ -120,14 +120,14 @@ public class DefaultWaves{ end = 130; }}, - new SpawnGroup(UnitTypes.ghoul){{ + new SpawnGroup(UnitTypes.horizon){{ begin = 40; unitAmount = 2; spacing = 2; unitScaling = 2; }}, - new SpawnGroup(UnitTypes.wraith){{ + new SpawnGroup(UnitTypes.flare){{ begin = 50; unitAmount = 4; unitScaling = 3; @@ -135,7 +135,7 @@ public class DefaultWaves{ effect = StatusEffects.overdrive; }}, - new SpawnGroup(UnitTypes.revenant){{ + new SpawnGroup(UnitTypes.zenith){{ begin = 50; unitAmount = 2; unitScaling = 3; @@ -143,42 +143,42 @@ public class DefaultWaves{ max = 16; }}, - new SpawnGroup(UnitTypes.ghoul){{ + new SpawnGroup(UnitTypes.horizon){{ begin = 53; unitAmount = 2; unitScaling = 3; spacing = 4; }}, - new SpawnGroup(UnitTypes.eruptor){{ + new SpawnGroup(UnitTypes.atrax){{ begin = 31; unitAmount = 4; unitScaling = 1; spacing = 3; }}, - new SpawnGroup(UnitTypes.chaosArray){{ + new SpawnGroup(UnitTypes.vestige){{ begin = 41; unitAmount = 1; unitScaling = 1; spacing = 30; }}, - new SpawnGroup(UnitTypes.eradicator){{ + new SpawnGroup(UnitTypes.cataclyst){{ begin = 81; unitAmount = 1; unitScaling = 1; spacing = 40; }}, - new SpawnGroup(UnitTypes.lich){{ + new SpawnGroup(UnitTypes.antumbra){{ begin = 131; unitAmount = 1; unitScaling = 1; spacing = 40; }}, - new SpawnGroup(UnitTypes.ghoul){{ + new SpawnGroup(UnitTypes.horizon){{ begin = 90; unitAmount = 2; unitScaling = 3; diff --git a/core/src/mindustry/game/EventType.java b/core/src/mindustry/game/EventType.java index 98b074f181..e3915e4b45 100644 --- a/core/src/mindustry/game/EventType.java +++ b/core/src/mindustry/game/EventType.java @@ -32,7 +32,6 @@ public class EventType{ update } - public static class TurnEvent{} public static class WinEvent{} public static class LoseEvent{} public static class LaunchEvent{} @@ -46,11 +45,12 @@ public class EventType{ public static class PlayEvent{} public static class ResetEvent{} public static class WaveEvent{} + public static class TurnEvent{} /** Called when the player places a line, mobile or desktop.*/ public static class LineConfirmEvent{} - /** Called when a turret recieves ammo, but only when the tutorial is active! */ + /** Called when a turret receives ammo, but only when the tutorial is active! */ public static class TurretAmmoDeliverEvent{} - /** Called when a core recieves ammo, but only when the tutorial is active! */ + /** Called when a core receives ammo, but only when the tutorial is active! */ public static class CoreItemDeliverEvent{} /** Called when the player opens info for a specific block.*/ public static class BlockInfoEvent{} @@ -59,6 +59,15 @@ public class EventType{ /** Called when a game begins and the world is loaded. */ public static class WorldLoadEvent{} + /** Called when a sector is destroyed by waves when you're not there. */ + public static class SectorLoseEvent{ + public final Sector sector; + + public SectorLoseEvent(Sector sector){ + this.sector = sector; + } + } + public static class LaunchItemEvent{ public final ItemStack stack; @@ -298,7 +307,7 @@ public class EventType{ } } - /** Called after connecting; when a player recieves world data and is ready to play.*/ + /** Called after connecting; when a player receives world data and is ready to play.*/ public static class PlayerJoin{ public final Player player; diff --git a/core/src/mindustry/game/Rules.java b/core/src/mindustry/game/Rules.java index f41a5bc6e0..83b0c67e6a 100644 --- a/core/src/mindustry/game/Rules.java +++ b/core/src/mindustry/game/Rules.java @@ -134,16 +134,16 @@ public class Rules{ final TeamRule[] values = new TeamRule[Team.all.length]; public TeamRule get(Team team){ - TeamRule out = values[team.uid]; - if(out == null) values[team.uid] = (out = new TeamRule()); + TeamRule out = values[team.id]; + if(out == null) values[team.id] = (out = new TeamRule()); return out; } @Override public void write(Json json){ for(Team team : Team.all){ - if(values[team.uid] != null){ - json.writeValue(team.uid + "", values[team.uid], TeamRule.class); + if(values[team.id] != null){ + json.writeValue(team.id + "", values[team.id], TeamRule.class); } } } diff --git a/core/src/mindustry/game/Saves.java b/core/src/mindustry/game/Saves.java index c54107b646..681887e685 100644 --- a/core/src/mindustry/game/Saves.java +++ b/core/src/mindustry/game/Saves.java @@ -86,7 +86,7 @@ public class Saves{ } if(state.isGame() && !state.gameOver && current != null && current.isAutosave() && !state.rules.tutorial){ - time += Time.delta(); + time += Time.delta; if(time > Core.settings.getInt("saveinterval") * 60){ saving = true; diff --git a/core/src/mindustry/game/Schematics.java b/core/src/mindustry/game/Schematics.java index 400e01a3c7..29b44a6efd 100644 --- a/core/src/mindustry/game/Schematics.java +++ b/core/src/mindustry/game/Schematics.java @@ -345,7 +345,7 @@ public class Schematics implements Loadable{ boolean found = false; for(int cx = x; cx <= x2; cx++){ for(int cy = y; cy <= y2; cy++){ - Building linked = world.ent(cx, cy); + Building linked = world.build(cx, cy); if(linked != null &&linked.block().isVisible() && !(linked.block() instanceof BuildBlock)){ int top = linked.block().size/2; @@ -373,7 +373,7 @@ public class Schematics implements Loadable{ IntSet counted = new IntSet(); for(int cx = ox; cx <= ox2; cx++){ for(int cy = oy; cy <= oy2; cy++){ - Building tile = world.ent(cx, cy); + Building tile = world.build(cx, cy); if(tile != null && !counted.contains(tile.pos()) && !(tile.block() instanceof BuildBlock) && (tile.block().isVisible() || (tile.block() instanceof CoreBlock))){ @@ -399,6 +399,13 @@ public class Schematics implements Loadable{ } } + /** Places the last launch loadout at the coordinates and fills it with the launch resources. */ + public static void placeLaunchLoadout(int x, int y){ + placeLoadout(universe.getLastLoadout(), x, y); + if(world.tile(x, y).build == null) throw new RuntimeException("No core at loadout coordinates!"); + world.tile(x, y).build.items.add(universe.getLaunchResources()); + } + public static void placeLoadout(Schematic schem, int x, int y){ placeLoadout(schem, x, y, state.rules.defaultTeam, Blocks.oreCopper); } @@ -594,7 +601,7 @@ public class Schematics implements Loadable{ }); //rotate actual request, centered on its multiblock position - float wx = (req.x - ox) * tilesize + req.block.offset(), wy = (req.y - oy) * tilesize + req.block.offset(); + float wx = (req.x - ox) * tilesize + req.block.offset, wy = (req.y - oy) * tilesize + req.block.offset; float x = wx; if(direction >= 0){ wx = -wy; @@ -603,8 +610,8 @@ public class Schematics implements Loadable{ wx = wy; wy = -x; } - req.x = (short)(world.toTile(wx - req.block.offset()) + ox); - req.y = (short)(world.toTile(wy - req.block.offset()) + oy); + req.x = (short)(world.toTile(wx - req.block.offset) + ox); + req.y = (short)(world.toTile(wy - req.block.offset) + oy); req.rotation = (byte)Mathf.mod(req.rotation + direction, 4); }); diff --git a/core/src/mindustry/game/SectorInfo.java b/core/src/mindustry/game/SectorInfo.java index 7361acdad7..4192831910 100644 --- a/core/src/mindustry/game/SectorInfo.java +++ b/core/src/mindustry/game/SectorInfo.java @@ -3,6 +3,7 @@ package mindustry.game; import arc.math.*; import arc.struct.*; import arc.util.*; +import arc.util.ArcAnnotate.*; import mindustry.content.*; import mindustry.type.*; import mindustry.world.*; @@ -12,10 +13,13 @@ import mindustry.world.modules.*; import static mindustry.Vars.*; public class SectorInfo{ - /** export window size in seconds */ - private static final int exportWindow = 60; + /** average window size in samples */ + private static final int valueWindow = 60; /** refresh period of export in ticks */ private static final float refreshPeriod = 60; + + /** Core input statistics. */ + public ObjectMap production = new ObjectMap<>(); /** Export statistics. */ public ObjectMap export = new ObjectMap<>(); /** Items stored in all cores. */ @@ -26,6 +30,10 @@ public class SectorInfo{ public int storageCapacity = 0; /** Whether a core is available here. */ public boolean hasCore = true; + /** Sector that was launched from. */ + public @Nullable Sector origin; + /** Time spent at this sector. Do not use unless you know what you're doing. */ + public transient float internalTimeSpent; /** Counter refresh state. */ private transient Interval time = new Interval(); @@ -68,20 +76,33 @@ public class SectorInfo{ hasCore = entity != null; bestCoreType = !hasCore ? Blocks.air : state.rules.defaultTeam.cores().max(e -> e.block.size).block; storageCapacity = entity != null ? entity.storageCapacity : 0; + + //update sector's internal time spent counter1 + state.rules.sector.setTimeSpent(internalTimeSpent); } - /** Update averages of various stats. */ + /** Update averages of various stats. + * Called every frame. */ public void update(){ + internalTimeSpent += Time.delta; + + //time spent exceeds turn duration! + if(internalTimeSpent >= turnDuration && internalTimeSpent - Time.delta < turnDuration){ + universe.displayTimeEnd(); + } + //create last stored core items if(lastCoreItems == null){ lastCoreItems = new int[content.items().size]; updateCoreDeltas(); } + CoreEntity ent = state.rules.defaultTeam.core(); + //refresh throughput if(time.get(refreshPeriod)){ - CoreEntity ent = state.rules.defaultTeam.core(); + //refresh export export.each((item, stat) -> { //initialize stat after loading if(!stat.loaded){ @@ -98,10 +119,38 @@ public class SectorInfo{ stat.mean = stat.means.rawMean(); }); + //refresh core items + for(Item item : content.items()){ + ExportStat stat = production.get(item, ExportStat::new); + if(!stat.loaded){ + stat.means.fill(stat.mean); + stat.loaded = true; + } + + //get item delta + //TODO is preventing negative production a good idea? + int delta = Math.max((ent == null ? 0 : ent.items.get(item)) - lastCoreItems[item.id], 0); + + //store means + stat.means.add(delta); + stat.mean = stat.means.rawMean(); + } + updateCoreDeltas(); } } + /** @return the items in this sector now, taking into account production and items received. */ + public ObjectIntMap getCurrentItems(Sector sector){ + ObjectIntMap map = new ObjectIntMap<>(); + map.putAll(coreItems); + long seconds = sector.getSecondsPassed(); + production.each((item, stat) -> map.increment(item, (int)(stat.mean * seconds))); + //increment based on received items + sector.getReceivedItems().each(stack -> map.increment(stack.item, stack.amount)); + return map; + } + private void updateCoreDeltas(){ CoreEntity ent = state.rules.defaultTeam.core(); for(int i = 0; i < lastCoreItems.length; i++){ @@ -117,8 +166,10 @@ public class SectorInfo{ public static class ExportStat{ public transient float counter; - public transient WindowedMean means = new WindowedMean(exportWindow); + public transient WindowedMean means = new WindowedMean(valueWindow); public transient boolean loaded; + + /** mean in terms of items produced per refresh rate (currently, per second) */ public float mean; } } diff --git a/core/src/mindustry/game/SpawnGroup.java b/core/src/mindustry/game/SpawnGroup.java index ad2cf44592..15f7c98fff 100644 --- a/core/src/mindustry/game/SpawnGroup.java +++ b/core/src/mindustry/game/SpawnGroup.java @@ -5,6 +5,7 @@ import arc.util.serialization.Json.*; import mindustry.content.*; import mindustry.ctype.*; import mindustry.gen.*; +import mindustry.io.legacy.*; import mindustry.type.*; import static mindustry.Vars.content; @@ -93,7 +94,9 @@ public class SpawnGroup implements Serializable{ @Override public void read(Json json, JsonValue data){ - type = content.getByName(ContentType.unit, data.getString("type", "dagger")); + String tname = data.getString("type", "dagger"); + + type = content.getByName(ContentType.unit, LegacyIO.unitMap.get(tname, tname)); if(type == null) type = UnitTypes.dagger; begin = data.getInt("begin", 0); end = data.getInt("end", never); diff --git a/core/src/mindustry/game/Stats.java b/core/src/mindustry/game/Stats.java index 931baa4dcd..4a03f6199e 100644 --- a/core/src/mindustry/game/Stats.java +++ b/core/src/mindustry/game/Stats.java @@ -39,7 +39,7 @@ public class Stats{ //weigh used fractions float frac = 0f; - Seq obtainable = Seq.select(zone.data.resources, i -> i instanceof Item && ((Item)i).type == ItemType.material).as(); + Seq obtainable = Seq.select(zone.data.resources, i -> i instanceof Item).as(); for(Item item : obtainable){ frac += Mathf.clamp((float)itemsDelivered.get(item, 0) / capacity) / (float)obtainable.size; } diff --git a/core/src/mindustry/game/Team.java b/core/src/mindustry/game/Team.java index 278a603d24..b82e8e1f12 100644 --- a/core/src/mindustry/game/Team.java +++ b/core/src/mindustry/game/Team.java @@ -4,18 +4,17 @@ import arc.*; import arc.graphics.*; import arc.math.*; import arc.struct.*; -import arc.util.*; import arc.util.ArcAnnotate.*; import mindustry.game.Rules.*; import mindustry.game.Teams.*; import mindustry.graphics.*; import mindustry.world.blocks.storage.CoreBlock.*; +import mindustry.world.modules.*; import static mindustry.Vars.*; public class Team implements Comparable{ - public final byte id; - public final int uid; + public final int id; public final Color color; public final Color[] palette; public boolean hasPalette; @@ -52,12 +51,10 @@ public class Team implements Comparable{ protected Team(int id, String name, Color color){ this.name = name; this.color = color; - this.id = (byte)id; + this.id = id; - int us = Pack.u(this.id); - uid = us; - if(us < 6) baseTeams[us] = this; - all[us] = this; + if(id < 6) baseTeams[id] = this; + all[id] = this; palette = new Color[3]; palette[0] = color; @@ -75,12 +72,18 @@ public class Team implements Comparable{ hasPalette = true; } + /** @return the core items for this team, or an empty item module. + * Never add to the resulting item module, as it is mutable. */ + public @NonNull ItemModule items(){ + return core() == null ? ItemModule.empty : core().items; + } + /** @return the team-specific rules. */ public TeamRule rules(){ return state.rules.teams.get(this); } - public Seq enemies(){ + public Team[] enemies(){ return state.teams.enemiesOf(this); } diff --git a/core/src/mindustry/game/Teams.java b/core/src/mindustry/game/Teams.java index 0e27ef83d5..592aa9d444 100644 --- a/core/src/mindustry/game/Teams.java +++ b/core/src/mindustry/game/Teams.java @@ -4,7 +4,6 @@ import arc.func.*; import arc.math.geom.*; import arc.struct.*; import arc.util.ArcAnnotate.*; -import arc.util.*; import mindustry.ai.*; import mindustry.gen.*; import mindustry.world.blocks.storage.CoreBlock.*; @@ -23,13 +22,9 @@ public class Teams{ } public @Nullable CoreEntity closestEnemyCore(float x, float y, Team team){ - for(TeamData data : active){ - if(areEnemies(team, data.team)){ - CoreEntity tile = Geometry.findClosest(x, y, data.cores); - if(tile != null){ - return tile; - } - } + for(Team enemy : team.enemies()){ + CoreEntity tile = Geometry.findClosest(x, y, enemy.cores()); + if(tile != null) return tile; } return null; } @@ -38,7 +33,7 @@ public class Teams{ return Geometry.findClosest(x, y, get(team).cores); } - public Seq enemiesOf(Team team){ + public Team[] enemiesOf(Team team){ return get(team).enemies; } @@ -67,10 +62,10 @@ public class Teams{ /** Returns team data by type. */ public TeamData get(Team team){ - if(map[Pack.u(team.id)] == null){ - map[Pack.u(team.id)] = new TeamData(team); + if(map[team.id] == null){ + map[team.id] = new TeamData(team); } - return map[Pack.u(team.id)]; + return map[team.id]; } public Seq playerCores(){ @@ -135,20 +130,23 @@ public class Teams{ } for(TeamData data : active){ - data.enemies.clear(); + Seq enemies = new Seq<>(); + for(TeamData other : active){ if(areEnemies(data.team, other.team)){ - data.enemies.add(other.team); + enemies.add(other.team); } } + + data.enemies = enemies.toArray(Team.class); } } public class TeamData{ public final Seq cores = new Seq<>(); - public final Seq enemies = new Seq<>(); public final Team team; public final BaseAI ai; + public Team[] enemies = {}; public Queue blocks = new Queue<>(); public TeamData(Team team){ diff --git a/core/src/mindustry/game/Tutorial.java b/core/src/mindustry/game/Tutorial.java index 62727a618f..cfaa85a84c 100644 --- a/core/src/mindustry/game/Tutorial.java +++ b/core/src/mindustry/game/Tutorial.java @@ -162,7 +162,7 @@ public class Tutorial{ }, withdraw(() -> event("withdraw")){ void begin(){ - state.teams.playerCores().first().items().add(Items.copper, 10); + state.teams.playerCores().first().items.add(Items.copper, 10); } }, deposit(() -> event("deposit")), @@ -270,7 +270,7 @@ public class Tutorial{ } static int item(Item item){ - return state.rules.defaultTeam.data().noCores() ? 0 : state.rules.defaultTeam.core().items().get(item); + return state.rules.defaultTeam.data().noCores() ? 0 : state.rules.defaultTeam.core().items.get(item); } static boolean toggled(String name){ diff --git a/core/src/mindustry/game/Universe.java b/core/src/mindustry/game/Universe.java index 8a6c11b310..33f14eb1e7 100644 --- a/core/src/mindustry/game/Universe.java +++ b/core/src/mindustry/game/Universe.java @@ -4,11 +4,9 @@ import arc.*; import arc.math.*; import arc.struct.*; import arc.util.*; -import mindustry.*; import mindustry.content.*; +import mindustry.core.GameState.*; import mindustry.game.EventType.*; -import mindustry.game.SectorInfo.*; -import mindustry.io.*; import mindustry.type.*; import mindustry.world.blocks.storage.*; @@ -19,11 +17,19 @@ public class Universe{ private long seconds; private float secondCounter; private int turn; - private float turnCounter; - private Schematic lastLoadout = Loadouts.basicShard; + + private Schematic lastLoadout; + private Seq lastLaunchResources = new Seq<>(); public Universe(){ load(); + + //update base coverage on capture + Events.on(SectorCaptureEvent.class, e -> { + if(state.isCampaign()){ + state.getSector().planet.updateBaseCoverage(); + } + }); } /** Update regardless of whether the player is in the campaign. */ @@ -32,6 +38,10 @@ public class Universe{ updatePlanet(Planets.sun); } + public int turn(){ + return turn; + } + private void updatePlanet(Planet planet){ planet.position.setZero(); planet.addParentOffset(planet.position); @@ -43,9 +53,17 @@ public class Universe{ } } + public void displayTimeEnd(){ + if(!headless){ + state.set(State.paused); + + ui.announce("Next turn incoming."); + } + } + /** Update planet rotations, global time and relevant state. */ public void update(){ - secondCounter += Time.delta() / 60f; + secondCounter += Time.delta / 60f; if(secondCounter >= 1){ seconds += (int)secondCounter; @@ -57,13 +75,6 @@ public class Universe{ } } - //update turn state - happens only in-game - turnCounter += Time.delta(); - - if(turnCounter >= turnDuration){ - runTurn(); - } - if(state.hasSector()){ //update sector light float light = state.getSector().getLight(); @@ -75,6 +86,16 @@ public class Universe{ } } + public Seq getLaunchResources(){ + lastLaunchResources = Core.settings.getJson("launch-resources", Seq.class, ItemStack.class, Seq::new); + return lastLaunchResources; + } + + public void updateLaunchResources(Seq stacks){ + this.lastLaunchResources = stacks; + Core.settings.putJson("launch-resources", ItemStack.class, lastLaunchResources); + } + /** Updates selected loadout for future deployment. */ public void updateLoadout(CoreBlock block, Schematic schem){ Core.settings.put("lastloadout-" + block.name, schem.file == null ? "" : schem.file.nameWithoutExtension()); @@ -82,6 +103,7 @@ public class Universe{ } public Schematic getLastLoadout(){ + if(lastLoadout == null) lastLoadout = Loadouts.basicShard; return lastLoadout; } @@ -100,74 +122,45 @@ public class Universe{ return schem == null ? all.first() : schem; } - public int[] getTotalExports(){ - int[] exports = new int[Vars.content.items().size]; - - for(Planet planet : content.planets()){ - for(Sector sector : planet.sectors){ - - //ignore the current sector if the player is in it right now - if(sector.hasBase() && !sector.isBeingPlayed()){ - SaveMeta meta = sector.save.meta; - - for(ObjectMap.Entry entry : meta.secinfo.export){ - //total is calculated by items/sec (value) * turn duration in seconds - int total = (int)(entry.value.mean * turnDuration / 60f); - - exports[entry.key.id] += total; - } - } - } - } - - return exports; - } - - public void runTurns(int amount){ - for(int i = 0; i < amount; i++){ - runTurn(); - } - } - - /** Runs a turn once. Resets turn counter. */ + /** Runs possible events. Resets event counter. */ public void runTurn(){ - turn ++; - turnCounter = 0; + turn++; - //TODO EVENTS + a notification + int newSecondsPassed = (int)(turnDuration / 60); - //increment turns passed for sectors with waves - //TODO a turn passing may break the core; detect this, send an event and mark the sector as having no base! + //update relevant sectors for(Planet planet : content.planets()){ for(Sector sector : planet.sectors){ - //attacks happen even for sectors without bases - stuff still gets destroyed - if(!sector.isBeingPlayed() && sector.hasSave() && sector.hasWaves()){ - sector.setTurnsPassed(sector.getTurnsPassed() + 1); + if(sector.hasSave()){ + int spent = (int)(sector.getTimeSpent() / 60); + int actuallyPassed = Math.max(newSecondsPassed - spent, 0); + + //increment seconds passed for this sector by the time that just passed with this turn + if(!sector.isBeingPlayed()){ + sector.setSecondsPassed(sector.getSecondsPassed() + actuallyPassed); + + //check if the sector has been attacked too many times... + if(sector.hasBase() && sector.getSecondsPassed() * 60f > turnDuration * sectorDestructionTurns){ + //fire event for losing the sector + Events.fire(new SectorLoseEvent(sector)); + + //if so, just delete the save for now. it's lost. + //TODO don't delete it later maybe + sector.save.delete(); + sector.save = null; + } + } + + //reset time spent to 0 + sector.setTimeSpent(0f); } } } - - //calculate passive item generation - //TODO make exports only update for sector with items - //TODO items should be added directly to cores! - int[] exports = getTotalExports(); - for(int i = 0; i < exports.length; i++){ - //data.addItem(content.item(i), exports[i]); - } + //TODO events Events.fire(new TurnEvent()); - } - public int getTurn(){ - return turn; - } - - public int getSectorsAttacked(){ - int count = 0; - for(Planet planet : content.planets()){ - count += planet.sectors.count(s -> !s.isBeingPlayed() && s.hasSave() && s.hasWaves()); - } - return count; + save(); } public float secondsMod(float mod, float scale){ @@ -185,13 +178,11 @@ public class Universe{ private void save(){ Core.settings.put("utime", seconds); Core.settings.put("turn", turn); - Core.settings.put("turntime", turnCounter); } private void load(){ seconds = Core.settings.getLong("utime"); turn = Core.settings.getInt("turn"); - turnCounter = Core.settings.getFloat("turntime"); } } diff --git a/core/src/mindustry/graphics/BlockRenderer.java b/core/src/mindustry/graphics/BlockRenderer.java index 5d00e88900..97382dd6d7 100644 --- a/core/src/mindustry/graphics/BlockRenderer.java +++ b/core/src/mindustry/graphics/BlockRenderer.java @@ -20,9 +20,9 @@ import static arc.Core.camera; import static mindustry.Vars.*; public class BlockRenderer implements Disposable{ - private final static int initialRequests = 32 * 32; - private final static int expandr = 9; - private final static Color shadowColor = new Color(0, 0, 0, 0.71f); + private static final int initialRequests = 32 * 32; + private static final int expandr = 9; + private static final Color shadowColor = new Color(0, 0, 0, 0.71f); public final FloorRenderer floor = new FloorRenderer(); @@ -114,11 +114,11 @@ public class BlockRenderer implements Disposable{ if(brokenFade > 0.001f){ for(BlockPlan block : state.teams.get(player.team()).blocks){ Block b = content.block(block.block); - if(!camera.bounds(Tmp.r1).grow(tilesize * 2f).overlaps(Tmp.r2.setSize(b.size * tilesize).setCenter(block.x * tilesize + b.offset(), block.y * tilesize + b.offset()))) continue; + if(!camera.bounds(Tmp.r1).grow(tilesize * 2f).overlaps(Tmp.r2.setSize(b.size * tilesize).setCenter(block.x * tilesize + b.offset, block.y * tilesize + b.offset))) continue; Draw.alpha(0.33f * brokenFade); Draw.mixcol(Color.white, 0.2f + Mathf.absin(Time.globalTime(), 6f, 0.2f)); - Draw.rect(b.icon(Cicon.full), block.x * tilesize + b.offset(), block.y * tilesize + b.offset(), b.rotate ? block.rotation * 90 : 0f); + Draw.rect(b.icon(Cicon.full), block.x * tilesize + b.offset, block.y * tilesize + b.offset, b.rotate ? block.rotation * 90 : 0f); } Draw.reset(); } @@ -201,7 +201,7 @@ public class BlockRenderer implements Disposable{ } //lights are drawn even in the expanded range - if(tile.build != null){ + if(tile.build != null || tile.block().emitLight){ lightview.add(tile); } @@ -213,6 +213,11 @@ public class BlockRenderer implements Disposable{ } } } + + //special case for floors + if(block == Blocks.air && tile.floor().emitLight){ + lightview.add(tile); + } } } @@ -257,15 +262,23 @@ public class BlockRenderer implements Disposable{ } } - //draw lights - for(int i = 0; i < lightview.size; i++){ - Tile tile = lightview.items[i]; - Building entity = tile.build; + if(renderer.lights.enabled()){ + //draw lights + for(int i = 0; i < lightview.size; i++){ + Tile tile = lightview.items[i]; + Building entity = tile.build; - if(entity != null){ - entity.drawLight(); + if(entity != null){ + entity.drawLight(); + }else if(tile.block().emitLight){ + tile.block().drawEnvironmentLight(tile); + }else if(tile.floor().emitLight){ + tile.floor().drawEnvironmentLight(tile); + } } } + + } @Override diff --git a/core/src/mindustry/graphics/CacheLayer.java b/core/src/mindustry/graphics/CacheLayer.java index 5807db7490..00bd578dc4 100644 --- a/core/src/mindustry/graphics/CacheLayer.java +++ b/core/src/mindustry/graphics/CacheLayer.java @@ -2,7 +2,6 @@ package mindustry.graphics; import arc.*; import arc.graphics.*; -import arc.graphics.g2d.*; import arc.graphics.gl.*; import static mindustry.Vars.renderer; diff --git a/core/src/mindustry/graphics/Drawf.java b/core/src/mindustry/graphics/Drawf.java index 70a09d55ae..0a5bbb39c0 100644 --- a/core/src/mindustry/graphics/Drawf.java +++ b/core/src/mindustry/graphics/Drawf.java @@ -17,29 +17,6 @@ import static mindustry.Vars.*; public class Drawf{ - //an experiment, to be removed - public static void runes(float x, float y, int[] text){ - int height = 6, width = 5; - float scale = 3; - float th = height * scale, tw = width * scale; - float skewx = width * scale, skewy = 0; - - Draw.color(Pal.accent); - - for(int i = 0; i < text.length; i++){ - float ox = x + i*tw*width; - - for(int j = 0; j < width * height; j++){ - int cx = j % width, cy = j / width; - float rx = ox + cx * tw + skewx * cy, ry = y + cy * th; - - if((text[i] & (1 << j)) != 0){ - Fill.quad(rx, ry, rx + tw, ry, rx + tw + skewx, ry + th + skewy, rx + skewx, ry + th + skewy); - } - } - } - } - public static float text(){ float z = Draw.z(); if(renderer.pixelator.enabled()){ @@ -49,6 +26,10 @@ public class Drawf{ return z; } + public static void light(float x, float y, float radius, Color color, float opacity){ + renderer.lights.add(x, y, radius, color, opacity); + } + public static void light(Team team, float x, float y, float radius, Color color, float opacity){ if(allowLight(team)) renderer.lights.add(x, y, radius, color, opacity); } @@ -87,8 +68,8 @@ public class Drawf{ Point2 p = Geometry.d8edge[i]; float offset = -Math.max(block.size - 1, 0) / 2f * tilesize; Draw.rect("block-select", - x*tilesize + block.offset() + offset * p.x, - y*tilesize + block.offset() + offset * p.y, i * 90); + x*tilesize + block.offset + offset * p.x, + y*tilesize + block.offset + offset * p.y, i * 90); } Draw.reset(); } @@ -200,13 +181,13 @@ public class Drawf{ Shaders.build.time = -time / 20f; Draw.shader(Shaders.build); - Draw.rect(region, t.x(), t.y(), rotation); + Draw.rect(region, t.x, t.y, rotation); Draw.shader(); Draw.color(Pal.accent); Draw.alpha(speed); - Lines.lineAngleCenter(t.x() + Mathf.sin(time, 20f, Vars.tilesize / 2f * t.block().size - 2f), t.y(), 90, t.block().size * Vars.tilesize - 4f); + Lines.lineAngleCenter(t.x + Mathf.sin(time, 20f, Vars.tilesize / 2f * t.block().size - 2f), t.y, 90, t.block().size * Vars.tilesize - 4f); Draw.reset(); } diff --git a/core/src/mindustry/graphics/FloorRenderer.java b/core/src/mindustry/graphics/FloorRenderer.java index fe83e9bbcb..7a7f502473 100644 --- a/core/src/mindustry/graphics/FloorRenderer.java +++ b/core/src/mindustry/graphics/FloorRenderer.java @@ -18,7 +18,7 @@ import static mindustry.Vars.*; public class FloorRenderer implements Disposable{ //TODO find out number with best performance - private final static int chunksize = mobile ? 16 : 32; + private static final int chunksize = mobile ? 16 : 32; private Chunk[][] cache; private MultiCacheBatch cbatch; diff --git a/core/src/mindustry/graphics/IndexedRenderer.java b/core/src/mindustry/graphics/IndexedRenderer.java index a82080cd34..83067c1f96 100644 --- a/core/src/mindustry/graphics/IndexedRenderer.java +++ b/core/src/mindustry/graphics/IndexedRenderer.java @@ -9,32 +9,31 @@ import arc.util.*; //TODO this class is a trainwreck, remove it public class IndexedRenderer implements Disposable{ - private final static int vsize = 5; + private static final int vsize = 5; private Shader program = new Shader( - Strings.join("\n", - "attribute vec4 " + Shader.positionAttribute + ";", - "attribute vec4 " + Shader.colorAttribute + ";", - "attribute vec2 " + Shader.texcoordAttribute + "0;", - "uniform mat4 u_projTrans;", - "varying vec4 v_color;", - "varying vec2 v_texCoords;", - "", - "void main(){", - " v_color = " + Shader.colorAttribute + ";", - " v_color.a = v_color.a * (255.0/254.0);", - " v_texCoords = " + Shader.texcoordAttribute + "0;", - " gl_Position = u_projTrans * " + Shader.positionAttribute + ";", - "}"), - Strings.join("\n", - "varying lowp vec4 v_color;", - "varying vec2 v_texCoords;", - "uniform sampler2D u_texture;", - "", - "void main(){", - " gl_FragColor = v_color * texture2D(u_texture, v_texCoords);", + "attribute vec4 a_position;\n" + + "attribute vec4 a_color;\n" + + "attribute vec2 a_texCoord0;\n" + + "uniform mat4 u_projTrans;\n" + + "varying vec4 v_color;\n" + + "varying vec2 v_texCoords;\n" + + + "void main(){\n" + + " v_color = a_color;\n" + + " v_color.a = v_color.a * (255.0/254.0);\n" + + " v_texCoords = a_texCoord0;\n" + + " gl_Position = u_projTrans * a_position;\n" + + "}", + + "varying lowp vec4 v_color;\n" + + "varying vec2 v_texCoords;\n" + + "uniform sampler2D u_texture;\n" + + + "void main(){\n" + + " gl_FragColor = v_color * texture2D(u_texture, v_texCoords);\n" + "}" - )); + ); private Mesh mesh; private float[] tmpVerts = new float[vsize * 6]; private float[] vertices; diff --git a/core/src/mindustry/graphics/InverseKinematics.java b/core/src/mindustry/graphics/InverseKinematics.java index 196a0bffaa..a920dc6527 100644 --- a/core/src/mindustry/graphics/InverseKinematics.java +++ b/core/src/mindustry/graphics/InverseKinematics.java @@ -7,12 +7,12 @@ public class InverseKinematics{ private static final Vec2[] mat1 = {new Vec2(), new Vec2()}, mat2 = {new Vec2(), new Vec2()}; private static final Vec2 temp = new Vec2(), temp2 = new Vec2(), at1 = new Vec2(); - static public boolean solve(float lengthA, float lengthB, Vec2 end, boolean side, Vec2 result){ + public static boolean solve(float lengthA, float lengthB, Vec2 end, boolean side, Vec2 result){ at1.set(end).rotate(side ? 1 : -1).setLength(lengthA + lengthB).add(end.x / 2f, end.y / 2f); return solve(lengthA, lengthB, end, at1, result); } - static public boolean solve(float lengthA, float lengthB, Vec2 end, Vec2 attractor, Vec2 result){ + public static boolean solve(float lengthA, float lengthB, Vec2 end, Vec2 attractor, Vec2 result){ Vec2 axis = mat2[0].set(end).nor(); mat2[1].set(attractor).sub(temp2.set(axis).scl(attractor.dot(axis))).nor(); mat1[0].set(mat2[0].x, mat2[1].x); diff --git a/core/src/mindustry/graphics/Layer.java b/core/src/mindustry/graphics/Layer.java index 5736aa19da..87892852f2 100644 --- a/core/src/mindustry/graphics/Layer.java +++ b/core/src/mindustry/graphics/Layer.java @@ -38,6 +38,9 @@ public class Layer{ //power lines power = 70, + //certain multi-legged units + legUnit = 75f, + //darkness over block clusters darkness = 80, diff --git a/core/src/mindustry/graphics/LightRenderer.java b/core/src/mindustry/graphics/LightRenderer.java index b8c93823b4..63cd3f2783 100644 --- a/core/src/mindustry/graphics/LightRenderer.java +++ b/core/src/mindustry/graphics/LightRenderer.java @@ -171,7 +171,7 @@ public class LightRenderer{ } public boolean enabled(){ - return state.rules.lighting; + return state.rules.lighting && state.rules.ambientLight.a > 0.00001f; } public void draw(){ diff --git a/core/src/mindustry/graphics/LoadRenderer.java b/core/src/mindustry/graphics/LoadRenderer.java index afbab1b6e2..12ffe9af40 100644 --- a/core/src/mindustry/graphics/LoadRenderer.java +++ b/core/src/mindustry/graphics/LoadRenderer.java @@ -116,7 +116,7 @@ public class LoadRenderer implements Disposable{ //preview : no frametime if(preview){ - testprogress += Time.delta() / (60f * 3); + testprogress += Time.delta / (60f * 3); progress = testprogress; if(input.keyTap(KeyCode.space)){ testprogress = 0; diff --git a/core/src/mindustry/graphics/MenuRenderer.java b/core/src/mindustry/graphics/MenuRenderer.java index e8f8857591..bc72220c77 100644 --- a/core/src/mindustry/graphics/MenuRenderer.java +++ b/core/src/mindustry/graphics/MenuRenderer.java @@ -30,7 +30,7 @@ public class MenuRenderer implements Disposable{ private float time = 0f; private float flyerRot = 45f; private int flyers = Mathf.chance(0.2) ? Mathf.random(35) : Mathf.random(15); - private UnitType flyerType = Structs.select(UnitTypes.wraith, UnitTypes.wraith, UnitTypes.ghoul, UnitTypes.phantom, UnitTypes.phantom, UnitTypes.revenant); + private UnitType flyerType = Structs.select(UnitTypes.flare, UnitTypes.flare, UnitTypes.horizon, UnitTypes.mono, UnitTypes.poly, UnitTypes.mega, UnitTypes.zenith); public MenuRenderer(){ Time.mark(); @@ -206,7 +206,7 @@ public class MenuRenderer implements Disposable{ } public void render(){ - time += Time.delta(); + time += Time.delta; float scaling = Math.max(Scl.scl(4f), Math.max(Core.graphics.getWidth() / ((width - 1f) * tilesize), Core.graphics.getHeight() / ((height - 1f) * tilesize))); camera.position.set(width * tilesize / 2f, height * tilesize / 2f); camera.resize(Core.graphics.getWidth() / scaling, diff --git a/core/src/mindustry/graphics/OverlayRenderer.java b/core/src/mindustry/graphics/OverlayRenderer.java index 5376b11f1a..8b7f940197 100644 --- a/core/src/mindustry/graphics/OverlayRenderer.java +++ b/core/src/mindustry/graphics/OverlayRenderer.java @@ -107,9 +107,9 @@ public class OverlayRenderer{ float dst = core.dst(player); if(dst < state.rules.enemyCoreBuildRadius * 2.2f){ Draw.color(Color.darkGray); - Lines.circle(core.x(), core.y() - 2, state.rules.enemyCoreBuildRadius); + Lines.circle(core.x, core.y - 2, state.rules.enemyCoreBuildRadius); Draw.color(Pal.accent, core.team().color, 0.5f + Mathf.absin(Time.time(), 10f, 0.5f)); - Lines.circle(core.x(), core.y(), state.rules.enemyCoreBuildRadius); + Lines.circle(core.x, core.y, state.rules.enemyCoreBuildRadius); } }); } @@ -129,7 +129,7 @@ public class OverlayRenderer{ //draw selected block if(input.block == null && !Core.scene.hasMouse()){ Vec2 vec = Core.input.mouseWorld(input.getMouseX(), input.getMouseY()); - Building tile = world.entWorld(vec.x, vec.y); + Building tile = world.buildWorld(vec.x, vec.y); if(tile != null && tile.team() == player.team()){ tile.drawSelect(); @@ -137,7 +137,7 @@ public class OverlayRenderer{ if(Core.input.keyDown(Binding.rotateplaced) && tile.block().rotate && tile.interactable(player.team())){ control.input.drawArrow(tile.block(), tile.tileX(), tile.tileY(), tile.rotation(), true); Draw.color(Pal.accent, 0.3f + Mathf.absin(4f, 0.2f)); - Fill.square(tile.x(), tile.y(), tile.block().size * tilesize/2f); + Fill.square(tile.x, tile.y, tile.block().size * tilesize/2f); Draw.color(); } } @@ -152,12 +152,12 @@ public class OverlayRenderer{ Lines.circle(v.x, v.y, 6 + Mathf.absin(Time.time(), 5f, 1f)); Draw.reset(); - Building tile = world.entWorld(v.x, v.y); + Building tile = world.buildWorld(v.x, v.y); if(tile != null && tile.interactable(player.team()) && tile.acceptStack(player.unit().item(), player.unit().stack.amount, player.unit()) > 0){ Lines.stroke(3f, Pal.gray); - Lines.square(tile.x(), tile.y(), tile.block().size * tilesize / 2f + 3 + Mathf.absin(Time.time(), 5f, 1f)); + Lines.square(tile.x, tile.y, tile.block().size * tilesize / 2f + 3 + Mathf.absin(Time.time(), 5f, 1f)); Lines.stroke(1f, Pal.place); - Lines.square(tile.x(), tile.y(), tile.block().size * tilesize / 2f + 2 + Mathf.absin(Time.time(), 5f, 1f)); + Lines.square(tile.x, tile.y, tile.block().size * tilesize / 2f + 2 + Mathf.absin(Time.time(), 5f, 1f)); Draw.reset(); } diff --git a/core/src/mindustry/graphics/Pal.java b/core/src/mindustry/graphics/Pal.java index a7f40ca968..84121a9893 100644 --- a/core/src/mindustry/graphics/Pal.java +++ b/core/src/mindustry/graphics/Pal.java @@ -8,6 +8,8 @@ public class Pal{ items = Color.valueOf("2ea756"), command = Color.valueOf("eab678"), + sap = Color.valueOf("665c9f"), + shield = Color.valueOf("ffd37f").a(0.7f), shieldIn = Color.black.cpy().a(0f), diff --git a/core/src/mindustry/input/Binding.java b/core/src/mindustry/input/Binding.java index b4bacb68af..517e50ca69 100644 --- a/core/src/mindustry/input/Binding.java +++ b/core/src/mindustry/input/Binding.java @@ -8,7 +8,7 @@ import arc.input.*; public enum Binding implements KeyBind{ move_x(new Axis(KeyCode.a, KeyCode.d), "general"), move_y(new Axis(KeyCode.s, KeyCode.w)), - mouse_move(KeyCode.mouseBack), + mouse_move(KeyCode.mouseForward), boost(KeyCode.shiftLeft), control(KeyCode.controlLeft), @@ -34,7 +34,7 @@ public enum Binding implements KeyBind{ schematic_flip_y(KeyCode.x), schematic_menu(KeyCode.t), - category_prev(KeyCode.comma), + category_prev(KeyCode.comma, "blocks"), category_next(KeyCode.period), block_select_left(KeyCode.left), diff --git a/core/src/mindustry/input/DesktopInput.java b/core/src/mindustry/input/DesktopInput.java index 04ccf40bec..5be37fd2a2 100644 --- a/core/src/mindustry/input/DesktopInput.java +++ b/core/src/mindustry/input/DesktopInput.java @@ -13,7 +13,6 @@ import arc.scene.ui.layout.*; import arc.util.ArcAnnotate.*; import arc.util.*; import mindustry.*; -import mindustry.content.*; import mindustry.entities.*; import mindustry.entities.units.*; import mindustry.game.EventType.*; @@ -22,10 +21,9 @@ import mindustry.gen.*; import mindustry.graphics.*; import mindustry.ui.*; import mindustry.world.*; -import mindustry.world.blocks.payloads.*; -import mindustry.world.meta.*; -import static arc.Core.scene; +import static arc.Core.*; +import static mindustry.Vars.net; import static mindustry.Vars.*; import static mindustry.input.PlaceMode.*; @@ -49,9 +47,13 @@ public class DesktopInput extends InputHandler{ @Override public void buildUI(Group group){ group.fill(t -> { - t.bottom().update(() -> t.getColor().a = Mathf.lerpDelta(t.getColor().a, player.builder().isBuilding() ? 1f : 0f, 0.15f)); - t.visible(() -> Core.settings.getBool("hints") && selectRequests.isEmpty()); - t.touchable(() -> t.getColor().a < 0.1f ? Touchable.disabled : Touchable.childrenOnly); + t.bottom(); + t.visible(() -> { + t.color.a = Mathf.lerpDelta(t.color.a, player.builder().isBuilding() ? 1f : 0f, 0.15f); + + return Core.settings.getBool("hints") && selectRequests.isEmpty() && t.color.a > 0.01f; + }); + t.touchable(() -> t.color.a < 0.1f ? Touchable.disabled : Touchable.childrenOnly); t.table(Styles.black6, b -> { b.defaults().left(); b.label(() -> Core.bundle.format(!isBuilding ? "resumebuilding" : "pausebuilding", Core.keybinds.get(Binding.pause_building).key.toString())).style(Styles.outlineLabel); @@ -184,7 +186,7 @@ public class DesktopInput extends InputHandler{ if(!(scene.getKeyboardFocus() instanceof TextField) && !scene.hasDialog()){ //move camera around float camSpeed = !Core.input.keyDown(Binding.boost) ? 3f : 8f; - Core.camera.position.add(Tmp.v1.setZero().add(Core.input.axis(Binding.move_x), Core.input.axis(Binding.move_y)).nor().scl(Time.delta() * camSpeed)); + Core.camera.position.add(Tmp.v1.setZero().add(Core.input.axis(Binding.move_x), Core.input.axis(Binding.move_y)).nor().scl(Time.delta * camSpeed)); if(Core.input.keyDown(Binding.mouse_move)){ Core.camera.position.x += Mathf.clamp((Core.input.mouseX() - Core.graphics.getWidth() / 2f) * 0.005f, -1, 1) * camSpeed; @@ -201,7 +203,7 @@ public class DesktopInput extends InputHandler{ if(Core.input.keyDown(Binding.control) && Core.input.keyTap(Binding.select)){ Unit on = selectedUnit(); if(on != null){ - Call.onUnitControl(player, on); + Call.unitControl(player, on); shouldShoot = false; } } @@ -211,13 +213,13 @@ public class DesktopInput extends InputHandler{ updateMovement(player.unit()); if(Core.input.keyDown(Binding.respawn) && !player.unit().spawnedByCore()){ - Call.onUnitClear(player); + Call.unitClear(player); controlledType = null; } } if(Core.input.keyRelease(Binding.select)){ - isShooting = false; + player.shooting = false; } if(state.isGame() && Core.input.keyTap(Binding.minimap) && !scene.hasDialog() && !(scene.getKeyboardFocus() instanceof TextField)){ @@ -244,8 +246,8 @@ public class DesktopInput extends InputHandler{ mode = none; } - if(isShooting && !canShoot()){ - isShooting = false; + if(player.shooting && !canShoot()){ + player.shooting = false; } if(isPlacing() && player.isBuilder()){ @@ -329,6 +331,19 @@ public class DesktopInput extends InputHandler{ table.button(Icon.paste, Styles.clearPartiali, () -> { ui.schematics.show(); }); + + table.button(Icon.tree, Styles.clearPartiali, () -> { + ui.research.show(); + }).visible(() -> state.isCampaign()); + + table.button(Icon.map, Styles.clearPartiali, () -> { + ui.planet.show(); + }).visible(() -> state.isCampaign()); + + table.button(Icon.up, Styles.clearPartiali, () -> { + ui.planet.show(state.getSector(), player.team().core()); + }).visible(() -> state.isCampaign()) + .disabled(b -> player.team().core() == null || !player.team().core().items.has(player.team().core().block.requirements)); } void pollInput(){ @@ -417,6 +432,10 @@ public class DesktopInput extends InputHandler{ if(Core.input.keyTap(Binding.pause_building)){ isBuilding = !isBuilding; buildWasAutoPaused = false; + + if(isBuilding){ + player.shooting = false; + } } if((cursorX != lastLineX || cursorY != lastLineY) && isPlacing() && mode == placing){ @@ -445,12 +464,12 @@ public class DesktopInput extends InputHandler{ deleting = true; }else if(selected != null){ //only begin shooting if there's no cursor event - if(!tileTapped(selected.build) && !tryTapPlayer(Core.input.mouseWorld().x, Core.input.mouseWorld().y) && (player.builder().plans().size == 0 || !player.builder().isBuilding()) && !droppingItem && + if(!tileTapped(selected.build) && !tryTapPlayer(Core.input.mouseWorld().x, Core.input.mouseWorld().y) && (player.builder().plans().size == 0 || !player.builder().updateBuilding()) && !droppingItem && !tryBeginMine(selected) && player.miner().mineTile() == null && !Core.scene.hasKeyboard()){ - isShooting = shouldShoot; + player.shooting = shouldShoot; } }else if(!Core.scene.hasKeyboard()){ //if it's out of bounds, shooting is just fine - isShooting = shouldShoot; + player.shooting = shouldShoot; } }else if(Core.input.keyTap(Binding.deselect) && isPlacing()){ block = null; @@ -557,8 +576,12 @@ public class DesktopInput extends InputHandler{ boolean boosted = (unit instanceof Mechc && unit.isFlying()); movement.set(xa, ya).nor().scl(speed); - float mouseAngle = Angles.mouseAngle(unit.x(), unit.y()); - boolean aimCursor = omni && isShooting && unit.type().hasWeapons() && unit.type().faceTarget && !boosted && unit.type().rotateShooting; + if(Core.input.keyDown(Binding.mouse_move)){ + movement.add(input.mouseWorld().sub(player).scl(1f / 25f * speed)).limit(speed); + } + + float mouseAngle = Angles.mouseAngle(unit.x, unit.y); + boolean aimCursor = omni && player.shooting && unit.type().hasWeapons() && unit.type().faceTarget && !boosted && unit.type().rotateShooting; if(aimCursor){ unit.lookAt(mouseAngle); @@ -571,53 +594,46 @@ public class DesktopInput extends InputHandler{ if(omni){ unit.moveAt(movement); }else{ - unit.moveAt(Tmp.v2.trns(unit.rotation(), movement.len())); + unit.moveAt(Tmp.v2.trns(unit.rotation, movement.len())); if(!movement.isZero() && legs){ - unit.vel().rotateTo(movement.angle(), unit.type().rotateSpeed * Time.delta()); + unit.vel.rotateTo(movement.angle(), unit.type().rotateSpeed * Time.delta); } } - unit.aim(unit.type().faceTarget ? Core.input.mouseWorld() : Tmp.v1.trns(unit.rotation(), Core.input.mouseWorld().dst(unit)).add(unit.x(), unit.y())); - unit.controlWeapons(true, isShooting && !boosted); + unit.aim(unit.type().faceTarget ? Core.input.mouseWorld() : Tmp.v1.trns(unit.rotation, Core.input.mouseWorld().dst(unit)).add(unit.x, unit.y)); + unit.controlWeapons(true, player.shooting && !boosted); - isBoosting = Core.input.keyDown(Binding.boost) && !movement.isZero(); - player.boosting(isBoosting); + player.boosting = Core.input.keyDown(Binding.boost) && !movement.isZero(); + player.mouseX = unit.aimX(); + player.mouseY = unit.aimY(); - //TODO netsync this + //update payload input if(unit instanceof Payloadc){ Payloadc pay = (Payloadc)unit; if(Core.input.keyTap(Binding.pickupCargo) && pay.payloads().size < unit.type().payloadCapacity){ - Unit target = Units.closest(player.team(), pay.x(), pay.y(), 30f, u -> u.isAI() && u.isGrounded()); + Unit target = Units.closest(player.team(), pay.x(), pay.y(), unit.type().hitsize * 2.5f, u -> u.isAI() && u.isGrounded() && u.mass() < unit.mass() && u.within(unit, u.hitSize + unit.hitSize * 1.2f)); if(target != null){ - pay.pickup(target); + Call.pickupUnitPayload(player, target); }else if(!pay.hasPayload()){ - Building tile = world.entWorld(pay.x(), pay.y()); - if(tile != null && tile.team() == unit.team && tile.block().synthetic()){ - //pick up block directly - if(tile.block().buildVisibility != BuildVisibility.hidden && tile.block().size <= 2){ - pay.pickup(tile); - }else{ //pick up block payload - Payload taken = tile.takePayload(); - if(taken != null){ - pay.addPayload(taken); - Fx.unitPickup.at(tile); - } - } + Building tile = world.buildWorld(pay.x(), pay.y()); + if(tile != null && tile.team() == unit.team){ + Call.pickupBlockPayload(player, tile); } } } if(Core.input.keyTap(Binding.dropCargo)){ + Call.dropPayload(player, player.x, player.y); pay.dropLastPayload(); } } + //update commander inut if(unit instanceof Commanderc){ - if(Core.input.keyTap(Binding.command)){ - Call.onUnitCommand(player); + Call.unitCommand(player); } } } diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index 60bfcf2101..9afc12d0c6 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -33,8 +33,10 @@ import mindustry.ui.fragments.*; import mindustry.world.*; import mindustry.world.blocks.*; import mindustry.world.blocks.BuildBlock.*; +import mindustry.world.blocks.payloads.*; import mindustry.world.blocks.power.*; import mindustry.world.blocks.storage.CoreBlock.*; +import mindustry.world.meta.*; import java.util.*; @@ -58,7 +60,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ public int rotation; public boolean droppingItem; public Group uiGroup; - public boolean isShooting, isBuilding = true, buildWasAutoPaused = false, isBoosting = false; + public boolean isBuilding = true, buildWasAutoPaused = false; public @Nullable UnitType controlledType; protected @Nullable Schematic lastSchematic; @@ -104,6 +106,54 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ player.builder().removeBuild(x, y, breaking); } + @Remote(targets = Loc.both, called = Loc.server, forward = true) + public static void pickupUnitPayload(Player player, Unit target){ + Unit unit = player.unit(); + Payloadc pay = (Payloadc)unit; + + if(target.isAI() && target.isGrounded() && pay.payloads().size < unit.type().payloadCapacity + && target.mass() < unit.mass() + && target.within(unit, unit.type().hitsize * 1.5f + target.type().hitsize)){ + pay.pickup(target); + } + } + + @Remote(targets = Loc.both, called = Loc.server, forward = true) + public static void pickupBlockPayload(Player player, Building tile){ + Unit unit = player.unit(); + Payloadc pay = (Payloadc)unit; + + if(tile != null && tile.team() == unit.team && pay.payloads().size < unit.type().payloadCapacity + && unit.within(tile, tilesize * tile.block.size * 1.2f)){ + //pick up block directly + if(tile.block().buildVisibility != BuildVisibility.hidden && tile.block().size <= 2){ + pay.pickup(tile); + }else{ //pick up block payload + Payload current = tile.getPayload(); + if(current != null && current.canBeTaken(pay)){ + Payload taken = tile.takePayload(); + if(taken != null){ + pay.addPayload(taken); + Fx.unitPickup.at(tile); + } + } + } + } + } + + @Remote(targets = Loc.both, called = Loc.server, forward = true) + public static void dropPayload(Player player, float x, float y){ + Payloadc pay = (Payloadc)player.unit(); + + //allow a slight margin of error + if(pay.within(x, y, tilesize * 2f)){ + float prevx = pay.x(), prevy = pay.y(); + pay.set(x, y); + pay.dropLastPayload(); + pay.set(prevx, prevy); + } + } + @Remote(targets = Loc.client, called = Loc.server) public static void dropItem(Player player, float angle){ if(net.server() && player.unit().stack.amount <= 0){ @@ -150,13 +200,13 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ item, amount, player.x + Angles.trnsx(player.unit().rotation + 180f, backTrns), player.y + Angles.trnsy(player.unit().rotation + 180f, backTrns), - new Vec2(tile.x() + stackTrns.x, tile.y() + stackTrns.y), + new Vec2(tile.x + stackTrns.x, tile.y + stackTrns.y), () -> tile.handleStack(item, accepted, player.unit()) ); } @Remote(targets = Loc.both, called = Loc.server, forward = true) - public static void onTileTapped(Player player, Building tile){ + public static void tileTapped(Player player, Building tile){ if(tile == null || player == null) return; if(net.server() && (!Units.canInteract(player, tile) || !netServer.admins.allowAction(player, ActionType.tapTile, tile.tile(), action -> {}))) throw new ValidateException(player, "Player cannot tap a tile."); @@ -165,7 +215,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ } @Remote(targets = Loc.both, called = Loc.both, forward = true) - public static void onTileConfig(Player player, Building tile, @Nullable Object value){ + public static void tileConfig(Player player, Building tile, @Nullable Object value){ if(tile == null) return; if(net.server() && (!Units.canInteract(player, tile) || !netServer.admins.allowAction(player, ActionType.configure, tile.tile(), action -> action.config = value))) throw new ValidateException(player, "Player cannot configure a tile."); @@ -174,7 +224,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ } @Remote(targets = Loc.both, called = Loc.server, forward = true) - public static void onUnitControl(Player player, @Nullable Unit unit){ + public static void unitControl(Player player, @Nullable Unit unit){ //clear player unit when they possess a core if((unit instanceof BlockUnitc && ((BlockUnitc)unit).tile() instanceof CoreEntity)){ Fx.spawn.at(player); @@ -183,7 +233,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ }else if(unit == null){ //just clear the unit (is this used?) player.clearUnit(); //make sure it's AI controlled, so players can't overwrite each other - }else if(unit.isAI() && unit.team == player.team()){ + }else if(unit.isAI() && unit.team == player.team() && !unit.deactivated){ player.unit(unit); Time.run(Fx.unitSpirit.lifetime, () -> Fx.unitControl.at(unit.x, unit.y, 0f, unit)); if(!player.dead()){ @@ -193,7 +243,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ } @Remote(targets = Loc.both, called = Loc.server, forward = true) - public static void onUnitClear(Player player){ + public static void unitClear(Player player){ //no free core teleports? if(!player.dead() && player.unit().spawnedByCore) return; @@ -203,7 +253,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ } @Remote(targets = Loc.both, called = Loc.server, forward = true) - public static void onUnitCommand(Player player){ + public static void unitCommand(Player player){ if(player.dead() || !(player.unit() instanceof Commanderc)) return; Commanderc commander = (Commanderc)player.unit(); @@ -249,10 +299,10 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ } public void update(){ - player.typing(ui.chatfrag.shown()); + player.typing = ui.chatfrag.shown(); if(player.isBuilder()){ - player.builder().building(isBuilding); + player.builder().updateBuilding(isBuilding); } if(!player.dead()){ @@ -260,24 +310,24 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ } if(controlledType != null && player.dead()){ - Unit unit = Units.closest(player.team(), player.x, player.y, u -> !u.isPlayer() && u.type() == controlledType); + Unit unit = Units.closest(player.team(), player.x, player.y, u -> !u.isPlayer() && u.type() == controlledType && !u.deactivated); if(unit != null){ - Call.onUnitControl(player, unit); + Call.unitControl(player, unit); } } } public void checkUnit(){ if(controlledType != null){ - Unit unit = Units.closest(player.team(), player.x, player.y, u -> !u.isPlayer() && u.type() == controlledType); + Unit unit = Units.closest(player.team(), player.x, player.y, u -> !u.isPlayer() && u.type() == controlledType && !u.deactivated); if(unit == null && controlledType == UnitTypes.block){ - unit = world.entWorld(player.x, player.y) instanceof ControlBlock ? ((ControlBlock)world.entWorld(player.x, player.y)).unit() : null; + unit = world.buildWorld(player.x, player.y) instanceof ControlBlock ? ((ControlBlock)world.buildWorld(player.x, player.y)).unit() : null; } if(unit != null){ if(net.client()){ - Call.onUnitControl(player, unit); + Call.unitControl(player, unit); }else{ unit.controller(player); } @@ -381,7 +431,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ }); //rotate actual request, centered on its multiblock position - float wx = (req.x - ox) * tilesize + req.block.offset(), wy = (req.y - oy) * tilesize + req.block.offset(); + float wx = (req.x - ox) * tilesize + req.block.offset, wy = (req.y - oy) * tilesize + req.block.offset; float x = wx; if(direction >= 0){ wx = -wy; @@ -390,8 +440,8 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ wx = wy; wy = -x; } - req.x = world.toTile(wx - req.block.offset()) + ox; - req.y = world.toTile(wy - req.block.offset()) + oy; + req.x = world.toTile(wx - req.block.offset) + ox; + req.y = world.toTile(wy - req.block.offset) + oy; req.rotation = Mathf.mod(req.rotation + direction, 4); }); } @@ -400,12 +450,12 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ int origin = (x ? schemOriginX() : schemOriginY()) * tilesize; requests.each(req -> { - float value = -((x ? req.x : req.y) * tilesize - origin + req.block.offset()) + origin; + float value = -((x ? req.x : req.y) * tilesize - origin + req.block.offset) + origin; if(x){ - req.x = (int)((value - req.block.offset()) / tilesize); + req.x = (int)((value - req.block.offset) / tilesize); }else{ - req.y = (int)((value - req.block.offset()) / tilesize); + req.y = (int)((value - req.block.offset) / tilesize); } req.pointConfig(p -> { @@ -455,10 +505,10 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ if(!req.breaking){ r1.setSize(req.block.size * tilesize); - r1.setCenter(other.worldx() + req.block.offset(), other.worldy() + req.block.offset()); + r1.setCenter(other.worldx() + req.block.offset, other.worldy() + req.block.offset); }else{ r1.setSize(other.block().size * tilesize); - r1.setCenter(other.worldx() + other.block().offset(), other.worldy() + other.block().offset()); + r1.setCenter(other.worldx() + other.block().offset, other.worldy() + other.block().offset); } return r2.overlaps(r1); @@ -695,7 +745,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ //call tapped event if(!consumed && tile.interactable(player.team())){ - Call.onTileTapped(player, tile); + Call.tileTapped(player, tile); } //consume tap event if necessary @@ -747,10 +797,6 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ && tile.block() == Blocks.air && player.dst(tile.worldx(), tile.worldy()) <= miningRange; } - Building entAt(float x, float y){ - return world.ent(tileX(x), tileY(y)); - } - /** Returns the tile at the specified MOUSE coordinates. */ Tile tileAt(float x, float y){ return world.tile(tileX(x), tileY(y)); @@ -767,7 +813,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ int tileX(float cursorX){ Vec2 vec = Core.input.mouseWorld(cursorX, 0); if(selectedBlock()){ - vec.sub(block.offset(), block.offset()); + vec.sub(block.offset, block.offset); } return world.toTile(vec.x); } @@ -775,7 +821,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ int tileY(float cursorY){ Vec2 vec = Core.input.mouseWorld(0, cursorY); if(selectedBlock()){ - vec.sub(block.offset(), block.offset()); + vec.sub(block.offset, block.offset); } return world.toTile(vec.y); } @@ -797,7 +843,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ } public @Nullable Unit selectedUnit(){ - Unit unit = Units.closest(player.team(), Core.input.mouseWorld().x, Core.input.mouseWorld().y, 40f, Unit::isAI); + Unit unit = Units.closest(player.team(), Core.input.mouseWorld().x, Core.input.mouseWorld().y, 40f, u -> u.isAI() && !u.deactivated); if(unit != null){ unit.hitbox(Tmp.r1); Tmp.r1.grow(6f); @@ -806,7 +852,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ } } - Building tile = world.entWorld(Core.input.mouseWorld().x, Core.input.mouseWorld().y); + Building tile = world.buildWorld(Core.input.mouseWorld().x, Core.input.mouseWorld().y); if(tile instanceof ControlBlock && tile.team() == player.team()){ return ((ControlBlock)tile).unit(); } @@ -844,7 +890,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ } uiGroup = new WidgetGroup(); - uiGroup.touchable(Touchable.childrenOnly); + uiGroup.touchable = Touchable.childrenOnly; uiGroup.setFillParent(true); ui.hudGroup.addChild(uiGroup); buildUI(uiGroup); @@ -854,7 +900,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ } public boolean canShoot(){ - return block == null && !Core.scene.hasMouse() && !onConfigurable() && !isDroppingItem(); + return block == null && !Core.scene.hasMouse() && !onConfigurable() && !isDroppingItem() && !(player.builder().updateBuilding() && player.builder().isBuilding()); } public boolean onConfigurable(){ @@ -939,15 +985,15 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ Draw.color(!valid ? Pal.removeBack : Pal.accentBack); Draw.rect(Core.atlas.find("place-arrow"), - x * tilesize + block.offset() + dx*trns, - y * tilesize + block.offset() - 1 + dy*trns, + x * tilesize + block.offset + dx*trns, + y * tilesize + block.offset - 1 + dy*trns, Core.atlas.find("place-arrow").getWidth() * Draw.scl, Core.atlas.find("place-arrow").getHeight() * Draw.scl, rotation * 90 - 90); Draw.color(!valid ? Pal.remove : Pal.accent); Draw.rect(Core.atlas.find("place-arrow"), - x * tilesize + block.offset() + dx*trns, - y * tilesize + block.offset() + dy*trns, + x * tilesize + block.offset + dx*trns, + y * tilesize + block.offset + dy*trns, Core.atlas.find("place-arrow").getWidth() * Draw.scl, Core.atlas.find("place-arrow").getHeight() * Draw.scl, rotation * 90 - 90); } @@ -1004,7 +1050,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ for(int i = 0; i < points.size; i++){ Point2 point = points.get(i); - if(block != null && Tmp.r2.setSize(block.size * tilesize).setCenter(point.x * tilesize + block.offset(), point.y * tilesize + block.offset()).overlaps(Tmp.r3)){ + if(block != null && Tmp.r2.setSize(block.size * tilesize).setCenter(point.x * tilesize + block.offset, point.y * tilesize + block.offset).overlaps(Tmp.r3)){ continue; } @@ -1019,7 +1065,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ line.last = next == null; cons.get(line); - Tmp.r3.setSize(block.size * tilesize).setCenter(point.x * tilesize + block.offset(), point.y * tilesize + block.offset()); + Tmp.r3.setSize(block.size * tilesize).setCenter(point.x * tilesize + block.offset, point.y * tilesize + block.offset); } } diff --git a/core/src/mindustry/input/MobileInput.java b/core/src/mindustry/input/MobileInput.java index df4c3f0935..709da87626 100644 --- a/core/src/mindustry/input/MobileInput.java +++ b/core/src/mindustry/input/MobileInput.java @@ -1,7 +1,6 @@ package mindustry.input; import arc.*; -import arc.struct.*; import arc.func.*; import arc.graphics.g2d.*; import arc.input.GestureDetector.*; @@ -11,15 +10,17 @@ import arc.math.geom.*; import arc.scene.*; import arc.scene.ui.ImageButton.*; import arc.scene.ui.layout.*; +import arc.struct.*; import arc.util.*; import mindustry.*; import mindustry.content.*; import mindustry.entities.*; -import mindustry.gen.*; import mindustry.entities.units.*; import mindustry.game.EventType.*; import mindustry.game.*; +import mindustry.gen.*; import mindustry.graphics.*; +import mindustry.type.*; import mindustry.ui.*; import mindustry.world.*; @@ -33,7 +34,7 @@ public class MobileInput extends InputHandler implements GestureListener{ private final float edgePan = Scl.scl(60f); //gesture data - private Vec2 vector = new Vec2(); + private Vec2 vector = new Vec2(), movement = new Vec2(), targetPos = new Vec2(); private float lastZoom = -1; /** Position where the player started dragging a line. */ @@ -62,7 +63,7 @@ public class MobileInput extends InputHandler implements GestureListener{ /** Down tracking for panning.*/ private boolean down = false; - private Teamc target; + private Teamc target, moveTarget; //region utility methods @@ -74,16 +75,15 @@ public class MobileInput extends InputHandler implements GestureListener{ player.miner().mineTile(null); target = unit; }else{ - Building tile = world.entWorld(x, y); + Building tile = world.buildWorld(x, y); if(tile != null && player.team().isEnemy(tile.team())){ player.miner().mineTile(null); target = tile; - //TODO implement healing - }//else if(tile != null && player.unit().canHeal && tile.entity != null && tile.team() == player.team() && tile.entity.damaged()){ - /// player.miner().mineTile(null); - // target = tile.entity; - // } + }else if(tile != null && player.unit().type().canHeal && tile.team == player.team() && tile.damaged()){ + player.miner().mineTile(null); + target = tile; + } } } @@ -95,7 +95,7 @@ public class MobileInput extends InputHandler implements GestureListener{ /** Returns whether this block overlaps any selection requests. */ boolean checkOverlapPlacement(int x, int y, Block block){ r2.setSize(block.size * tilesize); - r2.setCenter(x * tilesize + block.offset(), y * tilesize + block.offset()); + r2.setCenter(x * tilesize + block.offset, y * tilesize + block.offset); for(BuildPlan req : selectRequests){ Tile other = req.tile(); @@ -103,7 +103,7 @@ public class MobileInput extends InputHandler implements GestureListener{ if(other == null || req.breaking) continue; r1.setSize(req.block.size * tilesize); - r1.setCenter(other.worldx() + req.block.offset(), other.worldy() + req.block.offset()); + r1.setCenter(other.worldx() + req.block.offset, other.worldy() + req.block.offset); if(r2.overlaps(r1)){ return true; @@ -116,7 +116,7 @@ public class MobileInput extends InputHandler implements GestureListener{ if(other == null || req.breaking) continue; r1.setSize(req.block.size * tilesize); - r1.setCenter(other.worldx() + req.block.offset(), other.worldy() + req.block.offset()); + r1.setCenter(other.worldx() + req.block.offset, other.worldy() + req.block.offset); if(r2.overlaps(r1)){ return true; @@ -137,11 +137,11 @@ public class MobileInput extends InputHandler implements GestureListener{ if(!req.breaking){ r1.setSize(req.block.size * tilesize); - r1.setCenter(other.worldx() + req.block.offset(), other.worldy() + req.block.offset()); + r1.setCenter(other.worldx() + req.block.offset, other.worldy() + req.block.offset); }else{ r1.setSize(other.block().size * tilesize); - r1.setCenter(other.worldx() + other.block().offset(), other.worldy() + other.block().offset()); + r1.setCenter(other.worldx() + other.block().offset, other.worldy() + other.block().offset); } if(r2.overlaps(r1)) return req; @@ -422,6 +422,7 @@ public class MobileInput extends InputHandler implements GestureListener{ lastSchematic = schem; } + @Override public boolean touchDown(int screenX, int screenY, int pointer, KeyCode button){ if(state.isMenu()) return false; @@ -454,7 +455,7 @@ public class MobileInput extends InputHandler implements GestureListener{ lastLineY = tileY; }else if(!tryTapPlayer(worldx, worldy) && Core.settings.getBool("keyboard")){ //shoot on touch down when in keyboard mode - isShooting = true; + player.shooting = true; } } @@ -505,27 +506,40 @@ public class MobileInput extends InputHandler implements GestureListener{ @Override public boolean longPress(float x, float y){ - if(state.isMenu() || mode == none || player.dead()) return false; + if(state.isMenu()|| player.dead()) return false; //get tile on cursor Tile cursor = tileAt(x, y); - //ignore off-screen taps - if(cursor == null || Core.scene.hasMouse(x, y) || schematicMode) return false; + if(Core.scene.hasMouse(x, y) || schematicMode) return false; - //remove request if it's there - //long pressing enables line mode otherwise - lineStartX = cursor.x; - lineStartY = cursor.y; - lastLineX = cursor.x; - lastLineY = cursor.y; - lineMode = true; + //handle long tap when player isn't building + if(mode == none){ - if(mode == breaking){ - Fx.tapBlock.at(cursor.worldx(), cursor.worldy(), 1f); - }else if(block != null){ - updateLine(lineStartX, lineStartY, cursor.x, cursor.y); - Fx.tapBlock.at(cursor.worldx() + block.offset(), cursor.worldy() + block.offset(), block.size); + //control a unit/block + Unit on = selectedUnit(); + if(on != null){ + Call.unitControl(player, on); + } + }else{ + + //ignore off-screen taps + if(cursor == null) return false; + + //remove request if it's there + //long pressing enables line mode otherwise + lineStartX = cursor.x; + lineStartY = cursor.y; + lastLineX = cursor.x; + lastLineY = cursor.y; + lineMode = true; + + if(mode == breaking){ + Fx.tapBlock.at(cursor.worldx(), cursor.worldy(), 1f); + }else if(block != null){ + updateLine(lineStartX, lineStartY, cursor.x, cursor.y); + Fx.tapBlock.at(cursor.worldx() + block.offset, cursor.worldy() + block.offset, block.size); + } } return false; @@ -555,8 +569,16 @@ public class MobileInput extends InputHandler implements GestureListener{ }else if(mode == breaking && validBreak(linked.x,linked.y) && !hasRequest(linked)){ //add to selection queue if it's a valid BREAK position selectRequests.add(new BuildPlan(linked.x, linked.y)); - }else if(!canTapPlayer(worldx, worldy) && !tileTapped(linked.build)){ - tryBeginMine(cursor); + }else{ + if(!canTapPlayer(worldx, worldy) && !tileTapped(linked.build)){ + tryBeginMine(cursor); + } + + //apply command on double tap + if(count == 2 && Mathf.within(worldx, worldy, player.unit().x, player.unit().y, player.unit().hitSize * 2f) && + player.unit() instanceof Commanderc){ + Call.unitCommand(player); + } } return false; @@ -566,7 +588,7 @@ public class MobileInput extends InputHandler implements GestureListener{ public void update(){ super.update(); - if(state.isMenu() ){ + if(state.isMenu()){ selectRequests.clear(); removals.clear(); mode = none; @@ -584,19 +606,23 @@ public class MobileInput extends InputHandler implements GestureListener{ if(!Core.settings.getBool("keyboard")){ //move camera around float camSpeed = 6f; - Core.camera.position.add(Tmp.v1.setZero().add(Core.input.axis(Binding.move_x), Core.input.axis(Binding.move_y)).nor().scl(Time.delta() * camSpeed)); + Core.camera.position.add(Tmp.v1.setZero().add(Core.input.axis(Binding.move_x), Core.input.axis(Binding.move_y)).nor().scl(Time.delta * camSpeed)); } if(Core.settings.getBool("keyboard")){ if(Core.input.keyRelease(Binding.select)){ - isShooting = false; + player.shooting = false; } - if(isShooting && !canShoot()){ - isShooting = false; + if(player.shooting && !canShoot()){ + player.shooting = false; } } + if(!player.dead() && !state.isPaused()){ + updateMovement(player.unit()); + } + //reset state when not placing if(mode == none){ lineMode = false; @@ -755,5 +781,137 @@ public class MobileInput extends InputHandler implements GestureListener{ return true; } + //endregion + //region movement + + protected void updateMovement(Unit unit){ + Rect rect = Tmp.r3; + + UnitType type = unit.type(); + boolean flying = type.flying; + boolean omni = !(unit instanceof WaterMovec); + boolean legs = unit.isGrounded(); + boolean allowHealing = type.canHeal; + boolean validHealTarget = allowHealing && target instanceof Building && ((Building)target).isValid() && target.team() == unit.team && + ((Building)target).damaged() && target.within(unit, type.range); + boolean boosted = (unit instanceof Mechc && unit.isFlying()); + + //reset target if: + // - in the editor, or... + // - it's both an invalid standard target and an invalid heal target + if((Units.invalidateTarget(target, unit, type.range) && !validHealTarget) || state.isEditor()){ + target = null; + } + + targetPos.set(Core.camera.position); + float attractDst = 15f; + float strafePenalty = legs ? 1f : Mathf.lerp(1f, type.strafePenalty, Angles.angleDist(unit.vel.angle(), unit.rotation) / 180f); + float speed = type.speed * Mathf.lerp(1f, type.canBoost ? type.boostMultiplier : 1f, unit.elevation()) * strafePenalty; + float range = unit.hasWeapons() ? unit.range() : 0f; + float bulletSpeed = unit.hasWeapons() ? type.weapons.first().bullet.speed : 0f; + float mouseAngle = unit.angleTo(unit.aimX(), unit.aimY()); + boolean aimCursor = omni && player.shooting && type.hasWeapons() && type.faceTarget && !boosted && type.rotateShooting; + + if(aimCursor){ + unit.lookAt(mouseAngle); + }else{ + if(unit.moving()){ + unit.lookAt(unit.vel.angle()); + } + } + + if(moveTarget != null){ + targetPos.set(moveTarget); + attractDst = 0f; + + if(unit.within(moveTarget, 2f * Time.delta)){ + handleTapTarget(moveTarget); + moveTarget = null; + } + } + + movement.set(targetPos).sub(player).limit(speed); + movement.setAngle(Mathf.slerp(movement.angle(), unit.vel.angle(), 0.05f)); + + //pathfind for ground units + if(!flying && !type.canBoost && !(unit instanceof WaterMovec)){ + Tile on = unit.tileOn(); + if(on != null && !on.solid()){ + Tile to = pathfinder.getTargetTile(unit.tileOn(), unit.team, targetPos); + if(to != null){ + movement.set(to).sub(unit).setLength(speed); + } + } + } + + if(player.within(targetPos, attractDst)){ + movement.setZero(); + } + + float expansion = 3f; + + unit.hitbox(rect); + rect.x -= expansion; + rect.y -= expansion; + rect.width += expansion * 2f; + rect.height += expansion * 2f; + + player.boosting = collisions.overlapsTile(rect) || !unit.within(targetPos, 85f); + + if(omni){ + unit.moveAt(movement); + }else{ + unit.moveAt(Tmp.v2.trns(unit.rotation, movement.len())); + if(!movement.isZero() && legs){ + unit.vel.rotateTo(movement.angle(), type.rotateSpeed * Time.delta); + } + } + + if(flying){ + //hovering effect + unit.x += Mathf.sin(Time.time(), 25f, 0.08f); + unit.y += Mathf.cos(Time.time(), 25f, 0.08f); + } + + //update shooting if not building + not mining + if(!player.builder().isBuilding() && player.miner().mineTile() == null){ + + //autofire + if(target == null){ + player.shooting = false; + if(Core.settings.getBool("autotarget")){ + target = Units.closestTarget(unit.team, unit.x, unit.y, range, u -> u.team != Team.derelict, u -> u.team != Team.derelict); + + if(allowHealing && target == null){ + target = Geometry.findClosest(unit.x, unit.y, indexer.getDamaged(Team.sharded)); + if(target != null && !unit.within(target, range)){ + target = null; + } + } + + if(target != null && player.isMiner()){ + player.miner().mineTile(null); + } + } + }else{ + Vec2 intercept = Predict.intercept(unit, target, bulletSpeed); + + player.mouseX = intercept.x; + player.mouseY = intercept.y; + player.shooting = true; + + unit.aim(player.mouseX, player.mouseY); + } + + } + + unit.controlWeapons(player.shooting && !boosted); + } + + + protected void handleTapTarget(Teamc target){ + + } + //endregion } diff --git a/core/src/mindustry/input/Placement.java b/core/src/mindustry/input/Placement.java index 1d06fbd907..d2c3eb7d41 100644 --- a/core/src/mindustry/input/Placement.java +++ b/core/src/mindustry/input/Placement.java @@ -154,7 +154,7 @@ public class Placement{ public static NormalizeDrawResult normalizeDrawArea(Block block, int startx, int starty, int endx, int endy, boolean snap, int maxLength, float scaling){ normalizeArea(startx, starty, endx, endy, 0, snap, maxLength); - float offset = block.offset(); + float offset = block.offset; drawResult.x = result.x * tilesize; drawResult.y = result.y * tilesize; diff --git a/core/src/mindustry/io/JsonIO.java b/core/src/mindustry/io/JsonIO.java index 6b44f56cdb..3629ddebae 100644 --- a/core/src/mindustry/io/JsonIO.java +++ b/core/src/mindustry/io/JsonIO.java @@ -47,6 +47,11 @@ public class JsonIO{ return json.toJson(object, object.getClass()); } + public static T copy(T object, T dest){ + json.copyFields(object, dest); + return dest; + } + public static T copy(T object){ return read((Class)object.getClass(), write(object)); } diff --git a/core/src/mindustry/io/SaveVersion.java b/core/src/mindustry/io/SaveVersion.java index b37f1e0dbe..e03a22b2a5 100644 --- a/core/src/mindustry/io/SaveVersion.java +++ b/core/src/mindustry/io/SaveVersion.java @@ -97,7 +97,7 @@ public abstract class SaveVersion extends SaveFileReader{ "viewpos", Tmp.v1.set(player == null ? Vec2.ZERO : player).toString(), "controlledType", headless || control.input.controlledType == null ? "null" : control.input.controlledType.name, "nocores", state.rules.defaultTeam.cores().isEmpty(), - "playerteam", player == null ? state.rules.defaultTeam.uid : player.team().uid + "playerteam", player == null ? state.rules.defaultTeam.id : player.team().id ).merge(tags)); } @@ -112,13 +112,18 @@ public abstract class SaveVersion extends SaveFileReader{ if(state.rules.spawns.isEmpty()) state.rules.spawns = defaultWaves.get(); lastReadBuild = map.getInt("build", -1); + //load time spent on sector into state + if(state.rules.sector != null){ + state.secinfo.internalTimeSpent = state.rules.sector.getStoredTimeSpent(); + } + if(!headless){ Tmp.v1.tryFromString(map.get("viewpos")); Core.camera.position.set(Tmp.v1); player.set(Tmp.v1); control.input.controlledType = content.getByName(ContentType.unit, map.get("controlledType", "")); - Team team = Team.get(map.getInt("playerteam", state.rules.defaultTeam.uid)); + Team team = Team.get(map.getInt("playerteam", state.rules.defaultTeam.id)); if(!net.client() && team != Team.derelict){ player.team(team); } @@ -326,10 +331,10 @@ public abstract class SaveVersion extends SaveFileReader{ public void readContentHeader(DataInput stream) throws IOException{ byte mapped = stream.readByte(); - MappableContent[][] map = new MappableContent[ContentType.values().length][0]; + MappableContent[][] map = new MappableContent[ContentType.all.length][0]; for(int i = 0; i < mapped; i++){ - ContentType type = ContentType.values()[stream.readByte()]; + ContentType type = ContentType.all[stream.readByte()]; short total = stream.readShort(); map[type.ordinal()] = new MappableContent[total]; diff --git a/core/src/mindustry/io/TypeIO.java b/core/src/mindustry/io/TypeIO.java index 11b170de44..5330f89af2 100644 --- a/core/src/mindustry/io/TypeIO.java +++ b/core/src/mindustry/io/TypeIO.java @@ -159,7 +159,7 @@ public class TypeIO{ Unit unit = Groups.unit.getByID(id); return unit == null ? Nulls.unit : unit; }else if(type == 1){ //block - Building tile = world.ent(id); + Building tile = world.build(id); return tile instanceof ControlBlock ? ((ControlBlock)tile).unit() : Nulls.unit; } return Nulls.unit; @@ -170,7 +170,7 @@ public class TypeIO{ } public static T readEntity(Reads read){ - return (T)Groups.all.getByID(read.i()); + return (T)Groups.sync.getByID(read.i()); } public static void writeBuilding(Writes write, Building tile){ @@ -178,7 +178,7 @@ public class TypeIO{ } public static Building readBuilding(Reads read){ - return world.ent(read.i()); + return world.build(read.i()); } public static void writeTile(Writes write, Tile tile){ @@ -266,10 +266,10 @@ public class TypeIO{ //no real unit controller state is written, only the type if(control instanceof Player){ write.b(0); - write.i(((Player)control).id()); + write.i(((Player)control).id); }else if(control instanceof FormationAI){ write.b(1); - write.i(((FormationAI)control).leader.id()); + write.i(((FormationAI)control).leader.id); }else{ write.b(2); } diff --git a/core/src/mindustry/io/legacy/LegacyIO.java b/core/src/mindustry/io/legacy/LegacyIO.java index 621533b418..1d0a790159 100644 --- a/core/src/mindustry/io/legacy/LegacyIO.java +++ b/core/src/mindustry/io/legacy/LegacyIO.java @@ -7,6 +7,21 @@ import mindustry.ui.dialogs.JoinDialog.*; import java.io.*; public class LegacyIO{ + /** Maps old unit names to new ones. */ + public static final StringMap unitMap = StringMap.of( + "titan", "mace", + "chaos-array", "vestige", + "eradicator", "cataclyst", + "eruptor", "atrax", + "wraith", "flare", + "ghoul", "horizon", + "revenant", "zenith", + "lich", "antumbra", + "reaper", "eclipse", + "draug", "mono", + "phantom", "poly", + "spirit", "poly" + ); public static Seq readServers(){ Seq arr = new Seq<>(); diff --git a/core/src/mindustry/io/legacy/LegacyTypeTable.java b/core/src/mindustry/io/legacy/LegacyTypeTable.java deleted file mode 100644 index 642c48a189..0000000000 --- a/core/src/mindustry/io/legacy/LegacyTypeTable.java +++ /dev/null @@ -1,139 +0,0 @@ -package mindustry.io.legacy; - -/* -Latest data: [build 81] - -0 = Player -1 = Fire -2 = Puddle -3 = MinerDrone -4 = RepairDrone -5 = BuilderDrone -6 = GroundUnit -7 = GroundUnit -8 = GroundUnit -9 = GroundUnit -10 = GroundUnit -11 = FlyingUnit -12 = FlyingUnit -13 = Revenant - -Before removal of lightining/bullet: [build 80] - -0 = Player -1 = Fire -2 = Puddle -3 = Bullet -4 = Lightning -5 = MinerDrone -6 = RepairDrone -7 = BuilderDrone -8 = GroundUnit -9 = GroundUnit -10 = GroundUnit -11 = GroundUnit -12 = GroundUnit -13 = FlyingUnit -14 = FlyingUnit -15 = Revenant - -Before addition of new units: [build 79 and below] - -0 = Player -1 = Fire -2 = Puddle -3 = Bullet -4 = Lightning -5 = RepairDrone -6 = GroundUnit -7 = GroundUnit -8 = GroundUnit -9 = GroundUnit -10 = GroundUnit -11 = FlyingUnit -12 = FlyingUnit -13 = BuilderDrone -14 = Revenant - */ -public class LegacyTypeTable{ - /* - 0 = Player -1 = Fire -2 = Puddle -3 = Draug -4 = Spirit -5 = Phantom -6 = Dagger -7 = Crawler -8 = Titan -9 = Fortress -10 = Eruptor -11 = Wraith -12 = Ghoul -13 = Revenant - - private static final Prov[] build81Table = { - Player::new, - Fire::new, - Puddle::new, - MinerDrone::new, - RepairDrone::new, - BuilderDrone::new, - GroundUnit::new, - GroundUnit::new, - GroundUnit::new, - GroundUnit::new, - GroundUnit::new, - FlyingUnit::new, - FlyingUnit::new, - HoverUnit::new - }; - - private static final Prov[] build80Table = { - Player::new, - Fire::new, - Puddle::new, - Bullet::new, - Lightning::new, - MinerDrone::new, - RepairDrone::new, - BuilderDrone::new, - GroundUnit::new, - GroundUnit::new, - GroundUnit::new, - GroundUnit::new, - GroundUnit::new, - FlyingUnit::new, - FlyingUnit::new, - HoverUnit::new - }; - - private static final Prov[] build79Table = { - Player::new, - Fire::new, - Puddle::new, - Bullet::new, - Lightning::new, - RepairDrone::new, - GroundUnit::new, - GroundUnit::new, - GroundUnit::new, - GroundUnit::new, - GroundUnit::new, - FlyingUnit::new, - FlyingUnit::new, - BuilderDrone::new, - HoverUnit::new - }; - - public static Prov[] getTable(int build){ - if(build == -1 || build == 81){ - //return most recent one since that's probably it; not guaranteed - return build81Table; - }else if(build == 80){ - return build80Table; - }else{ - return build79Table; - } - }*/ -} diff --git a/core/src/mindustry/maps/SectorDamage.java b/core/src/mindustry/maps/SectorDamage.java index d595705f84..cf0c785d45 100644 --- a/core/src/mindustry/maps/SectorDamage.java +++ b/core/src/mindustry/maps/SectorDamage.java @@ -3,7 +3,10 @@ package mindustry.maps; import arc.math.*; import arc.math.geom.*; import arc.struct.*; +import mindustry.ai.*; import mindustry.content.*; +import mindustry.entities.*; +import mindustry.gen.*; import mindustry.world.*; import mindustry.world.blocks.storage.*; @@ -11,15 +14,14 @@ import static mindustry.Vars.*; public class SectorDamage{ //direct damage is for testing only - private static final boolean direct = false; + private static final boolean direct = false, rubble = true; - //TODO amount of damage could be related to wave spacing - public static void apply(float turns){ + public static void apply(float fraction){ Tiles tiles = world.tiles; Queue frontier = new Queue<>(); float[][] values = new float[tiles.width][tiles.height]; - float damage = turns*50; + float damage = fraction*80; //arbitrary damage value //phase one: find all spawnpoints for(Tile tile : tiles){ @@ -29,6 +31,29 @@ public class SectorDamage{ } } + Building core = state.rules.defaultTeam.core(); + if(core != null && !frontier.isEmpty()){ + for(Tile spawner : frontier){ + //find path from spawn to core + Seq path = Astar.pathfind(spawner, core.tile, t -> t.cost, t -> !(t.block().isStatic() && t.solid())); + int amount = (int)(path.size * fraction); + for(int i = 0; i < amount; i++){ + Tile t = path.get(i); + Geometry.circle(t.x, t.y, tiles.width, tiles.height, 5, (cx, cy) -> { + Tile other = tiles.getn(cx, cy); + //just remove all the buildings in the way - as long as they're not cores! + if(other.build != null && other.team() == state.rules.defaultTeam && !(other.block() instanceof CoreBlock)){ + if(rubble && !other.floor().solid && !other.floor().isLiquid && Mathf.chance(0.4)){ + Effects.rubble(other.build.x, other.build.y, other.block().size); + } + + other.remove(); + } + }); + } + } + } + float falloff = (damage) / (Math.max(tiles.width, tiles.height) * Mathf.sqrt2); int peak = 0; @@ -53,14 +78,16 @@ public class SectorDamage{ if(direct){ other.build.damage(currDamage); }else{ //indirect damage happens at game load time - other.build.health(other.build.health() - currDamage); + other.build.health -= currDamage; + //don't kill the core! + if(other.block() instanceof CoreBlock) other.build.health = Math.max(other.build.health, 1f); //remove the block when destroyed - if(other.build.health() < 0){ - //rubble currently disabled - //if(!other.floor().solid && !other.floor().isLiquid && Mathf.chance(0.4)){ - // Effects.rubble(other.entity.x(), other.entity.y(), other.block().size); - //} + if(other.build.health < 0){ + //rubble + if(rubble && !other.floor().solid && !other.floor().isLiquid && Mathf.chance(0.4)){ + Effects.rubble(other.build.x, other.build.y, other.block().size); + } other.remove(); } @@ -78,5 +105,7 @@ public class SectorDamage{ } } + + } } diff --git a/core/src/mindustry/maps/generators/BaseGenerator.java b/core/src/mindustry/maps/generators/BaseGenerator.java index 3d8f11c4c2..90cc66418e 100644 --- a/core/src/mindustry/maps/generators/BaseGenerator.java +++ b/core/src/mindustry/maps/generators/BaseGenerator.java @@ -21,7 +21,7 @@ import static mindustry.Vars.*; public class BaseGenerator{ private static final Vec2 axis = new Vec2(), rotator = new Vec2(); - private final static int range = 180; + private static final int range = 180; private Tiles tiles; private Team team; diff --git a/core/src/mindustry/maps/generators/FileMapGenerator.java b/core/src/mindustry/maps/generators/FileMapGenerator.java index 395f8130e5..e0b8bf3946 100644 --- a/core/src/mindustry/maps/generators/FileMapGenerator.java +++ b/core/src/mindustry/maps/generators/FileMapGenerator.java @@ -54,14 +54,9 @@ public class FileMapGenerator implements WorldGenerator{ } if(tile.isCenter() && tile.block() instanceof CoreBlock && tile.team() == state.rules.defaultTeam && !anyCores){ - Schematics.placeLoadout(universe.getLastLoadout(), tile.x, tile.y); + Schematics.placeLaunchLoadout(tile.x, tile.y); anyCores = true; } - - //add random decoration - //if(Mathf.chance(0.015) && !tile.floor().isLiquid && tile.block() == Blocks.air){ - // tile.setBlock(tile.floor().decoration); - //} } if(!anyCores){ diff --git a/core/src/mindustry/maps/generators/PlanetGenerator.java b/core/src/mindustry/maps/generators/PlanetGenerator.java index 132eaf9ae0..2ce0bbae27 100644 --- a/core/src/mindustry/maps/generators/PlanetGenerator.java +++ b/core/src/mindustry/maps/generators/PlanetGenerator.java @@ -1,13 +1,41 @@ package mindustry.maps.generators; import arc.math.geom.*; +import arc.util.noise.*; import mindustry.graphics.g3d.*; +import mindustry.graphics.g3d.PlanetGrid.*; import mindustry.type.*; +import mindustry.type.Sector.*; import mindustry.world.*; public abstract class PlanetGenerator extends BasicGenerator implements HexMesher{ protected Sector sector; + /** Should generate sector bases for a planet. */ + public void generateSector(Sector sector){ + Ptile tile = sector.tile; + + boolean any = false; + float noise = Noise.snoise3(tile.v.x, tile.v.y, tile.v.z, 0.001f, 0.5f); + + if(noise > 0.028){ + any = true; + } + + if(noise < 0.15){ + for(Ptile other : tile.tiles){ + if(sector.planet.getSector(other).is(SectorAttribute.base)){ + any = false; + break; + } + } + } + + if(any){ + sector.data.attributes |= (1 << SectorAttribute.base.ordinal()); + } + } + protected void genTile(Vec3 position, TileGen tile){ } diff --git a/core/src/mindustry/maps/planet/TODOPlanetGenerator.java b/core/src/mindustry/maps/planet/TODOPlanetGenerator.java index f1b5c47f81..648e113558 100644 --- a/core/src/mindustry/maps/planet/TODOPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/TODOPlanetGenerator.java @@ -279,7 +279,7 @@ public class TODOPlanetGenerator extends PlanetGenerator{ } }); - Schematics.placeLoadout(universe.getLastLoadout(), spawn.x, spawn.y); + Schematics.placeLaunchLoadout(spawn.x, spawn.y); if(sector.hasEnemyBase()){ basegen.generate(tiles, enemies.map(r -> tiles.getn(r.x, r.y)), tiles.get(spawn.x, spawn.y), state.rules.waveTeam, sector); @@ -288,6 +288,16 @@ public class TODOPlanetGenerator extends PlanetGenerator{ } state.rules.waves = true; + + float difficulty = sector.baseCoverage; + + //scale up the spawning base on difficulty (this is just for testing) + for(SpawnGroup group : state.rules.spawns){ + group.unitAmount *= difficulty; + if(group.unitScaling != SpawnGroup.never){ + group.unitScaling *= difficulty; + } + } } @Override diff --git a/core/src/mindustry/mod/ContentParser.java b/core/src/mindustry/mod/ContentParser.java index 000d3d6521..d093918062 100644 --- a/core/src/mindustry/mod/ContentParser.java +++ b/core/src/mindustry/mod/ContentParser.java @@ -7,7 +7,6 @@ import arc.files.*; import arc.func.*; import arc.graphics.*; import arc.mock.*; -import arc.struct.Seq; import arc.struct.*; import arc.util.ArcAnnotate.*; import arc.util.*; diff --git a/core/src/mindustry/mod/Mod.java b/core/src/mindustry/mod/Mod.java index 5b4c31b7a0..eea38820c6 100644 --- a/core/src/mindustry/mod/Mod.java +++ b/core/src/mindustry/mod/Mod.java @@ -15,6 +15,11 @@ public class Mod{ } + /** Called on clientside mods. Load content here. */ + public void loadContent(){ + + } + /** Register any commands to be used on the server side, e.g. from the console. */ public void registerServerCommands(CommandHandler handler){ diff --git a/core/src/mindustry/mod/Mods.java b/core/src/mindustry/mod/Mods.java index 7d00599884..c2aad25a20 100644 --- a/core/src/mindustry/mod/Mods.java +++ b/core/src/mindustry/mod/Mods.java @@ -400,7 +400,7 @@ public class Mods implements Loadable{ d.button("$details", Icon.downOpen, Styles.transt, () -> { new Dialog(""){{ setFillParent(true); - cont.pane(e -> e.add(c.minfo.error)).grow(); + cont.pane(e -> e.add(c.minfo.error).wrap().grow()).grow(); cont.row(); cont.button("$ok", Icon.left, this::hide).size(240f, 60f); }}.show(); @@ -460,6 +460,17 @@ public class Mods implements Loadable{ /** Creates all the content found in mod files. */ public void loadContent(){ + //load class mod content first + for(LoadedMod mod : orderedMods()){ + //hidden mods can't load content + if(mod.main != null && !mod.meta.hidden){ + content.setCurrentMod(mod); + mod.main.loadContent(); + } + } + + content.setCurrentMod(null); + class LoadRun implements Comparable{ final ContentType type; final Fi file; @@ -583,7 +594,7 @@ public class Mods implements Loadable{ Fi metaf = zip.child("mod.json").exists() ? zip.child("mod.json") : zip.child("mod.hjson").exists() ? zip.child("mod.hjson") : zip.child("plugin.json"); if(!metaf.exists()){ Log.warn("Mod @ doesn't have a 'mod.json'/'mod.hjson'/'plugin.json' file, skipping.", sourceFile); - throw new IllegalArgumentException("No mod.json found."); + throw new IllegalArgumentException("Invalid file: No mod.json found."); } ModMeta meta = json.fromJson(ModMeta.class, Jval.read(metaf.readString()).toString(Jformat.plain)); @@ -607,9 +618,9 @@ public class Mods implements Loadable{ //make sure the main class exists before loading it; if it doesn't just don't put it there if(mainFile.exists()){ - //other platforms don't have standard java class loaders - if(!headless && Version.build != -1){ - throw new IllegalArgumentException("Java class mods are currently unsupported outside of custom builds."); + //mobile versions don't support class mods + if(mobile){ + throw new IllegalArgumentException("Java class mods are not supported on mobile."); } URLClassLoader classLoader = new URLClassLoader(new URL[]{sourceFile.file().toURI().toURL()}, ClassLoader.getSystemClassLoader()); diff --git a/core/src/mindustry/net/Administration.java b/core/src/mindustry/net/Administration.java index a24610fe3f..9c95b467cf 100644 --- a/core/src/mindustry/net/Administration.java +++ b/core/src/mindustry/net/Administration.java @@ -139,6 +139,9 @@ public class Administration{ /** @return whether this action is allowed by the action filters. */ public boolean allowAction(Player player, ActionType type, Tile tile, Cons setter){ + //some actions are done by the server (null player) and thus are always allowed + if(player == null) return true; + PlayerAction act = Pools.obtain(PlayerAction.class, PlayerAction::new); setter.get(act.set(player, type, tile)); for(ActionFilter filter : actionFilters){ @@ -567,7 +570,10 @@ public class Administration{ socketInputAddress("The bind address for socket input.", "localhost", () -> Events.fire(Trigger.socketConfigChanged)), allowCustomClients("Whether custom clients are allowed to connect.", !headless, "allow-custom"), whitelist("Whether the whitelist is used.", false), - motd("The message displayed to people on connection.", "off"); + motd("The message displayed to people on connection.", "off"), + autosave("Whether the periodically save the map when playing.", false), + autosaveAmount("The maximum amount of autosaves. Older ones get replaced.", 10), + autosaveSpacing("Spacing between autosaves in seconds.", 60 * 5); public static final Config[] all = values(); diff --git a/core/src/mindustry/net/ArcNetProvider.java b/core/src/mindustry/net/ArcNetProvider.java index ea30157955..eff7c3e95d 100644 --- a/core/src/mindustry/net/ArcNetProvider.java +++ b/core/src/mindustry/net/ArcNetProvider.java @@ -85,7 +85,7 @@ public class ArcNetProvider implements NetProvider{ Connect c = new Connect(); c.addressTCP = ip; - Log.debug("&bRecieved connection: @", c.addressTCP); + Log.debug("&bReceived connection: @", c.addressTCP); connections.add(kn); Core.app.post(() -> net.handleServerReceived(kn, c)); diff --git a/core/src/mindustry/net/CrashSender.java b/core/src/mindustry/net/CrashSender.java index 0fb44e1e62..1a64c76e2d 100644 --- a/core/src/mindustry/net/CrashSender.java +++ b/core/src/mindustry/net/CrashSender.java @@ -18,6 +18,7 @@ import java.io.*; import java.text.*; import java.util.*; +import static arc.Core.*; import static mindustry.Vars.net; public class CrashSender{ @@ -39,6 +40,11 @@ public class CrashSender{ try{ exception.printStackTrace(); + //try saving game data + try{ + settings.manualSave(); + }catch(Throwable ignored){} + //don't create crash logs for custom builds, as it's expected if(Version.build == -1 || (System.getProperty("user.name").equals("anuke") && "release".equals(Version.modifier))){ ret(); diff --git a/core/src/mindustry/net/Net.java b/core/src/mindustry/net/Net.java index f99ec4d495..cd25c44143 100644 --- a/core/src/mindustry/net/Net.java +++ b/core/src/mindustry/net/Net.java @@ -85,7 +85,7 @@ public class Net{ } /** - * Sets the client loaded status, or whether it will recieve normal packets from the server. + * Sets the client loaded status, or whether it will receive normal packets from the server. */ public void setClientLoaded(boolean loaded){ clientLoaded = loaded; @@ -138,7 +138,7 @@ public class Net{ */ public void closeServer(){ for(NetConnection con : getConnections()){ - Call.onKick(con, KickReason.serverClose); + Call.kick(con, KickReason.serverClose); } provider.closeServer(); @@ -205,21 +205,21 @@ public class Net{ } /** - * Registers a client listener for when an object is recieved. + * Registers a client listener for when an object is received. */ public void handleClient(Class type, Cons listener){ clientListeners.put(type, listener); } /** - * Registers a server listener for when an object is recieved. + * Registers a server listener for when an object is received. */ public void handleServer(Class type, Cons2 listener){ serverListeners.put(type, (Cons2)listener); } /** - * Call to handle a packet being recieved for the client. + * Call to handle a packet being received for the client. */ public void handleClientReceived(Object object){ @@ -231,7 +231,7 @@ public class Net{ StreamChunk c = (StreamChunk)object; StreamBuilder builder = streams.get(c.id); if(builder == null){ - throw new RuntimeException("Recieved stream chunk without a StreamBegin beforehand!"); + throw new RuntimeException("Received stream chunk without a StreamBegin beforehand!"); } builder.add(c.data); if(builder.isDone()){ @@ -256,7 +256,7 @@ public class Net{ } /** - * Call to handle a packet being recieved for the server. + * Call to handle a packet being received for the server. */ public void handleServerReceived(NetConnection connection, Object object){ diff --git a/core/src/mindustry/net/NetConnection.java b/core/src/mindustry/net/NetConnection.java index a735be7ba0..2cad7d40e8 100644 --- a/core/src/mindustry/net/NetConnection.java +++ b/core/src/mindustry/net/NetConnection.java @@ -22,10 +22,10 @@ public abstract class NetConnection{ public @Nullable Unitc lastUnit; public Vec2 lastPosition = new Vec2(); - /** ID of last recieved client snapshot. */ - public int lastRecievedClientSnapshot = -1; - /** Timestamp of last recieved snapshot. */ - public long lastRecievedClientTime; + /** ID of last received client snapshot. */ + public int lastReceivedClientSnapshot = -1; + /** Timestamp of last received snapshot. */ + public long lastReceivedClientTime; /** Build requests that have been recently rejected. This is cleared every snapshot. */ public Seq rejectedRequests = new Seq<>(); @@ -46,7 +46,7 @@ public abstract class NetConnection{ info.lastKicked = Math.max(Time.millis() + 30 * 1000, info.lastKicked); } - Call.onKick(this, reason); + Call.kick(this, reason); Time.runTask(2f, this::close); @@ -66,7 +66,7 @@ public abstract class NetConnection{ info.timesKicked++; info.lastKicked = Math.max(Time.millis() + kickDuration, info.lastKicked); - Call.onKick(this, reason); + Call.kick(this, reason); Time.runTask(2f, this::close); diff --git a/core/src/mindustry/net/NetworkIO.java b/core/src/mindustry/net/NetworkIO.java index 257fc35b07..f4b4d3a61f 100644 --- a/core/src/mindustry/net/NetworkIO.java +++ b/core/src/mindustry/net/NetworkIO.java @@ -27,7 +27,7 @@ public class NetworkIO{ stream.writeInt(state.wave); stream.writeFloat(state.wavetime); - stream.writeInt(player.id()); + stream.writeInt(player.id); player.write(Writes.get(stream)); SaveIO.getSaveWriter().writeContentHeader(stream); @@ -47,11 +47,11 @@ public class NetworkIO{ state.wave = stream.readInt(); state.wavetime = stream.readFloat(); - Groups.all.clear(); + Groups.clear(); int id = stream.readInt(); player.reset(); player.read(Reads.get(stream)); - player.id(id); + player.id = id; player.add(); SaveIO.getSaveWriter().readContentHeader(stream); diff --git a/core/src/mindustry/type/Item.java b/core/src/mindustry/type/Item.java index bd9e28b66e..6558636343 100644 --- a/core/src/mindustry/type/Item.java +++ b/core/src/mindustry/type/Item.java @@ -12,8 +12,6 @@ import static mindustry.Vars.content; public class Item extends UnlockableContent{ public final Color color; - /** type of the item; used for tabs and core acceptance. default value is {@link ItemType#resource}. */ - public ItemType type = ItemType.resource; /** how explosive this item is. */ public float explosiveness = 0f; /** flammability above 0.3 makes this eleigible for item burners. */ diff --git a/core/src/mindustry/type/ItemStack.java b/core/src/mindustry/type/ItemStack.java index a8a765c4df..dad33a338b 100644 --- a/core/src/mindustry/type/ItemStack.java +++ b/core/src/mindustry/type/ItemStack.java @@ -59,6 +59,15 @@ public class ItemStack implements Comparable{ return stacks; } + public static void insert(Seq stacks, Item item, int amount){ + ItemStack stack = stacks.find(i -> i.item == item); + if(stack == null){ + stacks.add(new ItemStack(item, amount)); + }else{ + stack.amount += amount; + } + } + @Override public int compareTo(ItemStack itemStack){ return item.compareTo(itemStack.item); diff --git a/core/src/mindustry/type/ItemType.java b/core/src/mindustry/type/ItemType.java deleted file mode 100644 index 3d943c478a..0000000000 --- a/core/src/mindustry/type/ItemType.java +++ /dev/null @@ -1,8 +0,0 @@ -package mindustry.type; - -public enum ItemType{ - /** Not used for anything besides crafting inside blocks. */ - resource, - /** Can be used for constructing blocks. Only materials are accepted into the core. */ - material -} diff --git a/core/src/mindustry/type/Planet.java b/core/src/mindustry/type/Planet.java index e1b47919be..f27fc0aace 100644 --- a/core/src/mindustry/type/Planet.java +++ b/core/src/mindustry/type/Planet.java @@ -10,6 +10,7 @@ import arc.struct.*; import arc.util.ArcAnnotate.*; import arc.util.*; import arc.util.io.*; +import arc.util.noise.*; import mindustry.*; import mindustry.ctype.*; import mindustry.graphics.*; @@ -18,7 +19,7 @@ import mindustry.graphics.g3d.PlanetGrid.*; import mindustry.maps.generators.*; import mindustry.type.Sector.*; -import static mindustry.Vars.universe; +import static mindustry.Vars.*; public class Planet extends UnlockableContent{ /** Default spacing between planet orbits in world units. */ @@ -98,10 +99,6 @@ public class Planet extends UnlockableContent{ t.printStackTrace(); } } - - for(Sector sector : sectors){ - sector.generate(); - } }else{ sectors = new Seq<>(); } @@ -183,6 +180,24 @@ public class Planet extends UnlockableContent{ return in; } + /** Updates wave coverage of bases. */ + public void updateBaseCoverage(){ + for(Sector sector : sectors){ + float sum = 1f; + for(Sector other : sector.inRange(2)){ + if(other.is(SectorAttribute.base)){ + sum += 1f; + } + } + + if(sector.hasEnemyBase()){ + sum += 2f; + } + + sector.baseCoverage = sum; + } + } + /** @return the supplied matrix with transformation applied. */ public Mat3D getTransform(Mat3D mat){ return mat.setToTranslation(position).rotate(Vec3.Y, getRotation()); @@ -193,6 +208,21 @@ public class Planet extends UnlockableContent{ mesh = meshLoader.get(); } + @Override + public void init(){ + + if(generator != null){ + Noise.setSeed(id + 1); + + for(Sector sector : sectors){ + generator.generateSector(sector); + } + + updateBaseCoverage(); + } + + } + @Override public void dispose(){ if(mesh != null){ diff --git a/core/src/mindustry/type/Sector.java b/core/src/mindustry/type/Sector.java index db1389fe6a..579b687417 100644 --- a/core/src/mindustry/type/Sector.java +++ b/core/src/mindustry/type/Sector.java @@ -1,21 +1,25 @@ package mindustry.type; import arc.*; +import arc.func.*; import arc.math.geom.*; +import arc.struct.*; import arc.util.ArcAnnotate.*; import arc.util.*; import arc.util.io.*; -import arc.util.noise.*; import mindustry.*; import mindustry.ctype.*; import mindustry.game.Saves.*; import mindustry.graphics.g3d.PlanetGrid.*; import mindustry.world.*; -import static mindustry.Vars.world; +import static mindustry.Vars.*; /** A small section of a planet. */ public class Sector{ + private static final Seq tmpSeq1 = new Seq<>(), tmpSeq2 = new Seq<>(), tmpSeq3 = new Seq<>(); + private static final ObjectSet tmpSet = new ObjectSet<>(); + public final SectorRect rect; public final Plane plane; public final Planet planet; @@ -27,8 +31,7 @@ public class Sector{ public @Nullable SaveSlot save; public @Nullable SectorPreset preset; - /** Sector enemy hostility from 0 to 1 */ - public float hostility; + public float baseCoverage; //TODO implement a dynamic launch period public int launchPeriod = 10; @@ -42,6 +45,45 @@ public class Sector{ this.data = data; } + public Seq inRange(int range){ + //TODO cleanup/remove + if(true){ + tmpSeq1.clear(); + neighbors(tmpSeq1::add); + + return tmpSeq1; + } + + tmpSeq1.clear(); + tmpSeq2.clear(); + tmpSet.clear(); + + tmpSeq1.add(this); + tmpSet.add(this); + for(int i = 0; i < range; i++){ + while(!tmpSeq1.isEmpty()){ + Sector sec = tmpSeq1.pop(); + tmpSet.add(sec); + sec.neighbors(other -> { + if(tmpSet.add(other)){ + tmpSeq2.add(other); + } + }); + } + tmpSeq1.clear(); + tmpSeq1.addAll(tmpSeq2); + } + + tmpSeq3.clear().addAll(tmpSeq2); + return tmpSeq3; + } + + public void neighbors(Cons cons){ + for(Ptile tile : tile.tiles){ + cons.get(planet.getSector(tile)); + } + } + /** @return whether this sector can be landed on at all. * Only sectors adjacent to non-wave sectors can be landed on. * TODO also preset sectors*/ @@ -56,7 +98,7 @@ public class Sector{ /** @return whether the enemy has a generated base here. */ public boolean hasEnemyBase(){ - return hostility >= 0.02f && (save == null || save.meta.rules.waves); + return is(SectorAttribute.base) && (save == null || save.meta.rules.waves); } public boolean isBeingPlayed(){ @@ -77,11 +119,6 @@ public class Sector{ return save != null; } - public void generate(){ - //TODO use simplex and a seed - hostility = Math.max(Noise.snoise3(tile.v.x, tile.v.y, tile.v.z, 0.5f, 0.4f), 0); - } - public boolean locked(){ return !unlocked(); } @@ -110,6 +147,16 @@ public class Sector{ return false; } + //TODO this should be stored in a more efficient structure, and be updated each turn + public Seq getReceivedItems(){ + return Core.settings.getJson(key("received-items"), Seq.class, ItemStack.class, Seq::new); + } + + public void setReceivedItems(Seq stacks){ + Core.settings.putJson(key("received-items"), ItemStack.class, stacks); + } + + //TODO these methods should maybe move somewhere else and/or be contained in a data object public void setSpawnPosition(int position){ put("spawn-position", position); } @@ -120,12 +167,45 @@ public class Sector{ return Core.settings.getInt(key("spawn-position"), Point2.pack(world.width() / 2, world.height() / 2)); } - public void setTurnsPassed(int number){ - put("turns-passed", number); + /** @return time spent in this sector this turn in ticks. */ + public float getTimeSpent(){ + //return currently counting time spent if being played on + if(isBeingPlayed()) return state.secinfo.internalTimeSpent; + + //else return the stored value + return getStoredTimeSpent(); } - public int getTurnsPassed(){ - return Core.settings.getInt(key("turns-passed")); + public void setTimeSpent(float time){ + put("time-spent", time); + + //update counting time + if(isBeingPlayed()){ + state.secinfo.internalTimeSpent = time; + } + } + + public String displayTimeRemaining(){ + float amount = Vars.turnDuration - getTimeSpent(); + int seconds = (int)(amount / 60); + int sf = seconds % 60; + return (seconds / 60) + ":" + (sf < 10 ? "0" : "") + sf; + } + + /** @return the stored amount of time spent in this sector this turn in ticks. + * Do not use unless you know what you're doing. */ + public float getStoredTimeSpent(){ + return Core.settings.getFloat(key("time-spent")); + } + + public void setSecondsPassed(long number){ + put("seconds-passed", number); + } + + /** @return how much time has passed in this sector without the player resuming here. + * Used for resource production calculations. */ + public long getSecondsPassed(){ + return Core.settings.getLong(key("seconds-passed")); } private String key(String key){ @@ -243,6 +323,8 @@ public class Sector{ /** Has snow. */ snowy, /** Has sandstorms. */ - desert + desert, + /** Has an enemy base. */ + base } } diff --git a/core/src/mindustry/type/StatusEffect.java b/core/src/mindustry/type/StatusEffect.java index ae0a773476..1172b4d06c 100644 --- a/core/src/mindustry/type/StatusEffect.java +++ b/core/src/mindustry/type/StatusEffect.java @@ -15,10 +15,14 @@ public class StatusEffect extends MappableContent{ public float damageMultiplier = 1f; /** Unit armor multiplier. */ public float armorMultiplier = 1f; - /** Unit speed multiplier (buggy) */ + /** Unit speed multiplier */ public float speedMultiplier = 1f; + /** Unit speed multiplier */ + public float reloadMultiplier = 1f; /** Damage per frame. */ public float damage; + /** Chance of effect appearing. */ + public float effectChance = 0.15f; /** If true, the effect never disappears. */ public boolean permanent; /** Tint color of effect. */ @@ -48,11 +52,11 @@ public class StatusEffect extends MappableContent{ if(damage > 0){ unit.damageContinuousPierce(damage); }else if(damage < 0){ //heal unit - unit.heal(damage * Time.delta()); + unit.heal(damage * Time.delta); } - if(effect != Fx.none && Mathf.chanceDelta(0.15f)){ - effect.at(unit.x() + Mathf.range(unit.bounds() / 2f), unit.y() + Mathf.range(unit.bounds() / 2f)); + if(effect != Fx.none && Mathf.chanceDelta(effectChance)){ + effect.at(unit.x + Mathf.range(unit.bounds() / 2f), unit.y + Mathf.range(unit.bounds() / 2f)); } } diff --git a/core/src/mindustry/type/UnitType.java b/core/src/mindustry/type/UnitType.java index 3a11ab7f4d..6d211e7860 100644 --- a/core/src/mindustry/type/UnitType.java +++ b/core/src/mindustry/type/UnitType.java @@ -17,6 +17,8 @@ import mindustry.annotations.Annotations.*; import mindustry.content.*; import mindustry.ctype.*; import mindustry.entities.*; +import mindustry.entities.abilities.*; +import mindustry.entities.bullet.*; import mindustry.entities.units.*; import mindustry.game.*; import mindustry.gen.*; @@ -31,21 +33,29 @@ public class UnitType extends UnlockableContent{ public static final float shadowTX = -12, shadowTY = -13, shadowColor = Color.toFloatBits(0, 0, 0, 0.22f); private static final Vec2 legOffset = new Vec2(); + /** If true, the unit is always at elevation 1. */ public boolean flying; public @NonNull Prov constructor; public @NonNull Prov defaultController = () -> !flying ? new GroundAI() : new FlyingAI(); public float speed = 1.1f, boostMultiplier = 1f, rotateSpeed = 5f, baseRotateSpeed = 5f; - public float drag = 0.3f, accel = 0.5f, landShake = 0f, rippleScale = 1f; + public float drag = 0.3f, accel = 0.5f, landShake = 0f, rippleScale = 1f, fallSpeed = 0.018f; public float health = 200f, range = -1, armor = 0f; + public float crashDamageMultiplier = 4f; public boolean targetAir = true, targetGround = true; public boolean faceTarget = true, rotateShooting = true, isCounted = true, lowAltitude = false; public boolean canBoost = false; + public boolean destructibleWreck = true; + public float groundLayer = Layer.groundUnit; public float sway = 1f; public int payloadCapacity = 1; public int commandLimit = 24; - public float baseElevation = 0f; + public float visualElevation = -1f; + public boolean allowLegStep = false; + public boolean hovering = false; + public Effect fallEffect = Fx.fallSmoke; + public Effect fallThrusterEffect = Fx.fallSmoke; + public Seq abilities = new Seq<>(); - //TODO document public int legCount = 4, legGroupSize = 2; public float legLength = 10f, legSpeed = 0.1f, legTrns = 1f, legBaseOffset = 0f, legMoveSpace = 1f, legExtension = 0, legPairOffset = 0, legLengthScl = 1f, kinematicScl = 1f, maxStretch = 1.75f; public float legSplashDamage = 0f, legSplashRange = 5; @@ -53,7 +63,7 @@ public class UnitType extends UnlockableContent{ public int itemCapacity = 30; public int ammoCapacity = 220; - public int drillTier = -1; + public int mineTier = -1; public float buildSpeed = 1f, mineSpeed = 1f; public float engineOffset = 5f, engineSize = 2.5f; @@ -62,9 +72,12 @@ public class UnitType extends UnlockableContent{ public float itemOffsetY = 3f; public float lightRadius = 60f, lightOpacity = 0.6f; public Color lightColor = Pal.powerLight; - public boolean drawCell = true, drawItems = true; + public boolean drawCell = true, drawItems = true, drawShields = true; public int parts = 0; - public int trailLength = 5; + public int trailLength = 3; + public float trailX = 4f, trailY = -3f, trailScl = 1f; + /** Whether the unit can heal blocks. Initialized in init() */ + public boolean canHeal = false; public ObjectSet immunities = new ObjectSet<>(); public Sound deathSound = Sounds.bang; @@ -72,8 +85,7 @@ public class UnitType extends UnlockableContent{ public Seq weapons = new Seq<>(); public TextureRegion baseRegion, legRegion, region, shadowRegion, cellRegion, occlusionRegion, jointRegion, footRegion, legBaseRegion, baseJointRegion; - public TextureRegion[] partRegions; - public TextureRegion[] partCellRegions; + public TextureRegion[] partRegions, partCellRegions, wreckRegions; public UnitType(String name){ super(name); @@ -98,7 +110,13 @@ public class UnitType extends UnlockableContent{ return weapons.size > 0; } - public void update(Unit unit){} + public void update(Unit unit){ + if(abilities.size > 0){ + for(Ability a : abilities){ + a.update(unit); + } + } + } public void landed(Unit unit){} @@ -117,10 +135,19 @@ public class UnitType extends UnlockableContent{ bars.row(); if(state.rules.unitAmmo){ - bars.add(new Bar("blocks.ammo", Pal.ammo, () -> (float)unit.ammo / ammoCapacity)); + bars.add(new Bar("blocks.ammo", Pal.ammo, () -> unit.ammo / ammoCapacity)); bars.row(); } }).growX(); + + table.row(); + if(unit.deactivated){ + table.table(d -> { + d.left(); + d.label(() -> Core.bundle.format("bar.limitreached", unit.count(), unit.cap(), Fonts.getUnicodeStr(name))); + }).left().visible(() -> unit.deactivated); + } + } @Override @@ -131,12 +158,39 @@ public class UnitType extends UnlockableContent{ @CallSuper @Override public void init(){ + if(constructor == null) throw new IllegalArgumentException("no constructor set up for unit '" + name + "'"); + //set up default range if(range < 0){ for(Weapon weapon : weapons){ range = Math.max(range, weapon.bullet.range()); } } + + canHeal = weapons.contains(w -> w.bullet instanceof HealBulletType); + + //add mirrored weapon variants + Seq mapped = new Seq<>(); + for(Weapon w : weapons){ + mapped.add(w); + + //mirrors are copies with X values negated + if(w.mirror){ + Weapon copy = w.copy(); + copy.x *= -1; + copy.shootX *= -1; + copy.flipSprite = !copy.flipSprite; + mapped.add(copy); + + //since there are now two weapons, the reload time must be doubled + w.reload *= 2f; + copy.reload *= 2f; + + w.otherSide = mapped.size - 1; + copy.otherSide = mapped.size - 2; + } + } + this.weapons = mapped; } @CallSuper @@ -161,6 +215,11 @@ public class UnitType extends UnlockableContent{ partRegions[i] = Core.atlas.find(name + "-part" + i); partCellRegions[i] = Core.atlas.find(name + "-cell" + i); } + + wreckRegions = new TextureRegion[3]; + for(int i = 0; i < wreckRegions.length; i++){ + wreckRegions[i] = Core.atlas.find(name + "-wreck" + i); + } } @Override @@ -172,7 +231,7 @@ public class UnitType extends UnlockableContent{ public void draw(Unit unit){ Mechc legs = unit instanceof Mechc ? (Mechc)unit : null; - float z = unit.elevation > 0.5f ? (lowAltitude ? Layer.flyingUnitLow : Layer.flyingUnit) : Layer.groundUnit; + float z = unit.elevation > 0.5f ? (lowAltitude ? Layer.flyingUnitLow : Layer.flyingUnit) : groundLayer; if(unit.controller().isBeingControlled(player.unit())){ drawControl(unit); @@ -213,13 +272,34 @@ public class UnitType extends UnlockableContent{ if(drawItems) drawItems(unit); drawLight(unit); - if(unit.shieldAlpha > 0){ + if(unit.shieldAlpha > 0 && drawShields){ drawShield(unit); } if(legs != null){ unit.trns(-legOffset.x, -legOffset.y); } + + if(unit.deactivated){ + drawDeactive(unit); + } + + if(abilities.size > 0){ + for(Ability a : abilities){ + a.draw(unit); + Draw.reset(); + } + } + } + + public void drawDeactive(Unit unit){ + Draw.color(Color.scarlet); + Draw.alpha(0.8f); + + float size = 8f; + Draw.rect(Icon.warning.getRegion(), unit.x, unit.y, size, size); + + Draw.reset(); } public void drawPayload(T unit){ @@ -247,7 +327,8 @@ public class UnitType extends UnlockableContent{ public void drawShadow(Unit unit){ Draw.color(shadowColor); - Draw.rect(shadowRegion, unit.x + shadowTX * unit.elevation, unit.y + shadowTY * unit.elevation, unit.rotation - 90); + float e = Math.max(unit.elevation, visualElevation); + Draw.rect(shadowRegion, unit.x + shadowTX * e, unit.y + shadowTY * e, unit.rotation - 90); Draw.color(); } @@ -300,7 +381,7 @@ public class UnitType extends UnlockableContent{ if(unit instanceof Trailc){ Trail trail = ((Trailc)unit).trail(); - trail.draw(unit.team.color, (engineSize + Mathf.absin(Time.time(), 2f, engineSize / 4f) * scale)); + trail.draw(unit.team.color, (engineSize + Mathf.absin(Time.time(), 2f, engineSize / 4f) * scale) * trailScl); } Draw.color(unit.team.color); @@ -324,23 +405,21 @@ public class UnitType extends UnlockableContent{ for(WeaponMount mount : unit.mounts){ Weapon weapon = mount.weapon; - for(int i : (weapon.mirror ? Mathf.signs : Mathf.one)){ - i *= Mathf.sign(weapon.flipped); + float rotation = unit.rotation - 90; + float weaponRotation = rotation + (weapon.rotate ? mount.rotation : 0); + float width = weapon.region.getWidth(); + float recoil = -((mount.reload) / weapon.reload * weapon.recoil); + float wx = unit.x + Angles.trnsx(rotation, weapon.x, weapon.y) + Angles.trnsx(weaponRotation, 0, recoil), + wy = unit.y + Angles.trnsy(rotation, weapon.x, weapon.y) + Angles.trnsy(weaponRotation, 0, recoil); - float rotation = unit.rotation - 90; - float weaponRotation = rotation + (weapon.rotate ? mount.rotation : 0); - float width = i > 0 ? -weapon.region.getWidth() : weapon.region.getWidth(); - float recoil = -(mount.reload / weapon.reload * weapon.recoil) * (weapon.alternate ? Mathf.num(i == Mathf.sign(mount.side)) : 1); - - if(weapon.mirror) rotation = weaponRotation; - - Draw.rect(weapon.region, - unit.x + Angles.trnsx(rotation, weapon.x * i, weapon.y) + Angles.trnsx(weaponRotation, 0, recoil), - unit.y + Angles.trnsy(rotation, weapon.x * i, weapon.y) + Angles.trnsy(weaponRotation, 0, recoil), - width * Draw.scl * -Mathf.sign(weapon.flipSprite), - weapon.region.getHeight() * Draw.scl, - weaponRotation); + if(weapon.occlusion > 0){ + Drawf.shadow(wx, wy, weapon.occlusion); } + + Draw.rect(weapon.region, wx, wy, + width * Draw.scl * -Mathf.sign(weapon.flipSprite), + weapon.region.getHeight() * Draw.scl, + weaponRotation); } Draw.reset(); @@ -400,8 +479,8 @@ public class UnitType extends UnlockableContent{ Tmp.v1.set(leg.base).sub(leg.joint).inv().setLength(legExtension); - if(leg.moving && baseElevation > 0){ - float scl = baseElevation; + if(leg.moving && visualElevation > 0){ + float scl = visualElevation; float elev = Mathf.slope(1f - leg.stage) * scl; Draw.color(shadowColor); Draw.rect(footRegion, leg.base.x + shadowTX * elev, leg.base.y + shadowTY * elev, position.angleTo(leg.base)); diff --git a/core/src/mindustry/type/Weapon.java b/core/src/mindustry/type/Weapon.java index 1dde54513f..744011df74 100644 --- a/core/src/mindustry/type/Weapon.java +++ b/core/src/mindustry/type/Weapon.java @@ -8,6 +8,7 @@ import mindustry.content.*; import mindustry.entities.*; import mindustry.entities.bullet.*; import mindustry.gen.*; +import mindustry.io.*; public class Weapon{ /** displayed weapon region */ @@ -16,12 +17,12 @@ public class Weapon{ public @NonNull BulletType bullet; /** shell ejection effect */ public Effect ejectEffect = Fx.none; - /** whether to mirror the weapon (draw two of them, which is the default) */ + /** whether to create a flipped copy of this weapon upon initialization. default: true */ public boolean mirror = true; - /** whether to flip the weapon's position/side on the ship (only valid when mirror is false) */ - public boolean flipped = false, flipSprite = false; + /** whether to flip the weapon's sprite when rendering */ + public boolean flipSprite = false; /** whether to shoot the weapons in different arms one after another, rather than all at once; only valid when mirror = true */ - public boolean alternate = false; + public boolean alternate = true; /** whether to rotate toward the target independently of unit */ public boolean rotate = false; /** rotation speed of weapon when rotation is enabled, in degrees/t*/ @@ -31,7 +32,7 @@ public class Weapon{ /** amount of shots per fire */ public int shots = 1; /** spacing in degrees between multiple shots, if applicable */ - public float spacing = 12f; + public float spacing = 0; /** inaccuracy of degrees of each shot */ public float inaccuracy = 0f; /** intensity and duration of each shot's screen shake */ @@ -42,6 +43,8 @@ public class Weapon{ public float shootX = 0f, shootY = 3f; /** offsets of weapon position on unit */ public float x = 5f, y = 0f; + /** radius of occlusion drawn under the weapon; <0 to diable */ + public float occlusion = -1f; /** fraction of velocity that is random */ public float velocityRnd = 0f; /** delay in ticks between shots */ @@ -50,6 +53,8 @@ public class Weapon{ public float shootCone = 5f; /** whether shooter rotation is ignored when shooting. */ public boolean ignoreRotation = false; + /** internal value used for alternation - do not change! */ + public int otherSide = -1; /** sound used for shooting */ public Sound shootSound = Sounds.pew; /** displayed region (autoloaded) */ @@ -63,6 +68,12 @@ public class Weapon{ this(""); } + public Weapon copy(){ + Weapon out = new Weapon(); + JsonIO.json().copyFields(this, out); + return out; + } + public void load(){ region = Core.atlas.find(name, Core.atlas.find("clear")); } diff --git a/core/src/mindustry/type/Weather.java b/core/src/mindustry/type/Weather.java index 6111dbed92..a1d23a0a76 100644 --- a/core/src/mindustry/type/Weather.java +++ b/core/src/mindustry/type/Weather.java @@ -124,10 +124,10 @@ public abstract class Weather extends MappableContent{ if(life < fadeTime){ opacity = life / fadeTime; }else{ - opacity = Mathf.lerpDelta(opacity, 1f, 0.01f); + opacity = Mathf.lerpDelta(opacity, 1f, 0.004f); } - life -= Time.delta(); + life -= Time.delta; weather.update(base()); diff --git a/core/src/mindustry/ui/BorderImage.java b/core/src/mindustry/ui/BorderImage.java index df077a0c13..fc1c94f044 100644 --- a/core/src/mindustry/ui/BorderImage.java +++ b/core/src/mindustry/ui/BorderImage.java @@ -37,9 +37,6 @@ public class BorderImage extends Image{ public void draw(){ super.draw(); - float scaleX = getScaleX(); - float scaleY = getScaleY(); - Draw.color(borderColor); Draw.alpha(parentAlpha); Lines.stroke(Scl.scl(thickness)); diff --git a/core/src/mindustry/ui/ContentDisplay.java b/core/src/mindustry/ui/ContentDisplay.java index 7208c42f41..524c1dfb7b 100644 --- a/core/src/mindustry/ui/ContentDisplay.java +++ b/core/src/mindustry/ui/ContentDisplay.java @@ -84,9 +84,6 @@ public class ContentDisplay{ table.left().defaults().fillX(); - table.add(Core.bundle.format("item.corestorable", item.type == ItemType.material ? Core.bundle.format("yes") : Core.bundle.format("no"))); - table.row(); - table.add(Core.bundle.format("item.explosiveness", (int)(item.explosiveness * 100))); table.row(); table.add(Core.bundle.format("item.flammability", (int)(item.flammability * 100))); diff --git a/core/src/mindustry/ui/CoreItemsDisplay.java b/core/src/mindustry/ui/CoreItemsDisplay.java index 11d0511376..cb9e92fd47 100644 --- a/core/src/mindustry/ui/CoreItemsDisplay.java +++ b/core/src/mindustry/ui/CoreItemsDisplay.java @@ -3,7 +3,6 @@ package mindustry.ui; import arc.scene.ui.layout.*; import arc.struct.*; import mindustry.*; -import mindustry.gen.*; import mindustry.type.*; import mindustry.world.blocks.storage.CoreBlock.*; @@ -22,7 +21,8 @@ public class CoreItemsDisplay extends Table{ void rebuild(){ clear(); - background(Tex.button); + background(Styles.black6); + margin(4); update(() -> { CoreEntity core = Vars.player.team().core(); @@ -40,10 +40,10 @@ public class CoreItemsDisplay extends Table{ CoreEntity core = Vars.player.team().core(); for(Item item : content.items()){ if(usedItems.contains(item)){ - image(item.icon(Cicon.medium)).padRight(4); - label(() -> core == null ? "0" : ui.formatAmount(core.items.get(item))).padRight(4); + image(item.icon(Cicon.small)).padRight(3); + label(() -> core == null ? "0" : ui.formatAmount(core.items.get(item))).padRight(3); - if(++i % 2 == 0){ + if(++i % 4 == 0){ row(); } } diff --git a/core/src/mindustry/ui/Fonts.java b/core/src/mindustry/ui/Fonts.java index 40d3687fa6..ef10ba3f54 100644 --- a/core/src/mindustry/ui/Fonts.java +++ b/core/src/mindustry/ui/Fonts.java @@ -28,6 +28,7 @@ import java.util.*; public class Fonts{ private static ObjectIntMap unicodeIcons = new ObjectIntMap<>(); + private static ObjectMap stringIcons = new ObjectMap<>(); public static BitmapFont def; public static BitmapFont outline; @@ -39,6 +40,10 @@ public class Fonts{ return unicodeIcons.get(content, 0); } + public static String getUnicodeStr(String content){ + return stringIcons.get(content, ""); + } + /** Called from a static context to make the cursor appear immediately upon startup.*/ public static void loadSystemCursors(){ SystemCursor.arrow.set(Core.graphics.newCursor("cursor", cursorScale())); @@ -86,6 +91,7 @@ public class Fonts{ } unicodeIcons.put(nametex[0], ch); + stringIcons.put(nametex[0], ((char)ch) + ""); Glyph glyph = new Glyph(); glyph.id = ch; diff --git a/core/src/mindustry/ui/ItemsDisplay.java b/core/src/mindustry/ui/ItemsDisplay.java index 4781c4d677..351b3f17f2 100644 --- a/core/src/mindustry/ui/ItemsDisplay.java +++ b/core/src/mindustry/ui/ItemsDisplay.java @@ -30,7 +30,7 @@ public class ItemsDisplay extends Table{ t.marginRight(30f); t.left(); for(Item item : content.items()){ - if(item.type == ItemType.material && item.unlocked()){ + if(item.unlocked()){ t.label(() -> format(item)).left(); t.image(item.icon(Cicon.small)).size(8 * 3).padLeft(4).padRight(4); t.add(item.localizedName).color(Color.lightGray).left(); diff --git a/core/src/mindustry/ui/Minimap.java b/core/src/mindustry/ui/Minimap.java index cac2f08993..dfec82c9fd 100644 --- a/core/src/mindustry/ui/Minimap.java +++ b/core/src/mindustry/ui/Minimap.java @@ -15,7 +15,7 @@ public class Minimap extends Table{ public Minimap(){ background(Tex.pane); float margin = 5f; - touchable(Touchable.enabled); + this.touchable = Touchable.enabled; add(new Element(){ { diff --git a/core/src/mindustry/ui/MultiReqImage.java b/core/src/mindustry/ui/MultiReqImage.java index 715f629088..ebbb4fc359 100644 --- a/core/src/mindustry/ui/MultiReqImage.java +++ b/core/src/mindustry/ui/MultiReqImage.java @@ -17,16 +17,16 @@ public class MultiReqImage extends Stack{ public void act(float delta){ super.act(delta); - time += Time.delta() / 60f; + time += Time.delta / 60f; - displays.each(req -> req.visible(false)); + displays.each(req -> req.visible = false); ReqImage valid = displays.find(ReqImage::valid); if(valid != null){ - valid.visible(true); + valid.visible = true; }else{ if(displays.size > 0){ - displays.get((int)(time) % displays.size).visible(true); + displays.get((int)time % displays.size).visible = true; } } } diff --git a/core/src/mindustry/ui/Styles.java b/core/src/mindustry/ui/Styles.java index d4838ae382..88fde61aab 100644 --- a/core/src/mindustry/ui/Styles.java +++ b/core/src/mindustry/ui/Styles.java @@ -23,7 +23,7 @@ import static mindustry.gen.Tex.*; @StyleDefaults public class Styles{ - public static Drawable black, black9, black8, black6, black3, none, flatDown, flatOver; + public static Drawable black, black9, black8, black6, black3, black5, none, flatDown, flatOver; public static ButtonStyle defaultb, waveb; public static TextButtonStyle defaultt, squaret, nodet, cleart, discordt, infot, clearPartialt, clearTogglet, clearToggleMenut, togglet, transt; public static ImageButtonStyle defaulti, nodei, righti, emptyi, emptytogglei, selecti, cleari, clearFulli, clearPartiali, clearPartial2i, clearTogglei, clearTransi, clearToggleTransi, clearTogglePartiali; @@ -40,6 +40,7 @@ public class Styles{ black9 = whiteui.tint(0f, 0f, 0f, 0.9f); black8 = whiteui.tint(0f, 0f, 0f, 0.8f); black6 = whiteui.tint(0f, 0f, 0f, 0.6f); + black5 = whiteui.tint(0f, 0f, 0f, 0.5f); black3 = whiteui.tint(0f, 0f, 0f, 0.3f); none = whiteui.tint(0f, 0f, 0f, 0f); flatDown = createFlatDown(); @@ -193,6 +194,9 @@ public class Styles{ down = flatDown; up = none; over = flatOver; + disabled = none; + imageDisabledColor = Color.gray; + imageUpColor = Color.white; }}; clearPartial2i = new ImageButtonStyle(){{ down = whiteui; diff --git a/core/src/mindustry/ui/dialogs/CustomGameDialog.java b/core/src/mindustry/ui/dialogs/CustomGameDialog.java index 1d7aa2d07b..f3f4e6b029 100644 --- a/core/src/mindustry/ui/dialogs/CustomGameDialog.java +++ b/core/src/mindustry/ui/dialogs/CustomGameDialog.java @@ -2,7 +2,6 @@ package mindustry.ui.dialogs; import arc.*; import arc.graphics.g2d.*; -import arc.math.*; import arc.scene.style.*; import arc.scene.ui.*; import arc.scene.ui.layout.*; diff --git a/core/src/mindustry/ui/dialogs/CustomRulesDialog.java b/core/src/mindustry/ui/dialogs/CustomRulesDialog.java index 0cb44eca5c..70d0b9a704 100644 --- a/core/src/mindustry/ui/dialogs/CustomRulesDialog.java +++ b/core/src/mindustry/ui/dialogs/CustomRulesDialog.java @@ -1,14 +1,13 @@ package mindustry.ui.dialogs; import arc.*; -import arc.struct.*; import arc.func.*; import arc.graphics.*; import arc.scene.style.*; import arc.scene.ui.*; import arc.scene.ui.layout.*; +import arc.struct.*; import arc.util.*; -import mindustry.*; import mindustry.content.*; import mindustry.game.*; import mindustry.gen.*; @@ -189,10 +188,10 @@ public class CustomRulesDialog extends BaseDialog{ t.left(); t.add(text).left().padRight(5) .update(a -> a.setColor(condition.get() ? Color.white : Color.gray)); - Vars.platform.addDialog(t.field((integer ? (int)prov.get() : prov.get()) + "", s -> cons.get(Strings.parseFloat(s))) + t.field((integer ? (int)prov.get() : prov.get()) + "", s -> cons.get(Strings.parseFloat(s))) .padRight(100f) .update(a -> a.setDisabled(!condition.get())) - .valid(Strings::canParsePositiveFloat).width(120f).left().get()); + .valid(Strings::canParsePositiveFloat).width(120f).left().addInputDialog(); }).padTop(0); main.row(); } diff --git a/core/src/mindustry/ui/dialogs/DatabaseDialog.java b/core/src/mindustry/ui/dialogs/DatabaseDialog.java index 9e2af57df8..df76054322 100644 --- a/core/src/mindustry/ui/dialogs/DatabaseDialog.java +++ b/core/src/mindustry/ui/dialogs/DatabaseDialog.java @@ -37,7 +37,7 @@ public class DatabaseDialog extends BaseDialog{ Seq[] allContent = Vars.content.getContentMap(); for(int j = 0; j < allContent.length; j++){ - ContentType type = ContentType.values()[j]; + ContentType type = ContentType.all[j]; Seq array = allContent[j].select(c -> c instanceof UnlockableContent && !((UnlockableContent)c).isHidden()); if(array.size == 0) continue; @@ -62,7 +62,7 @@ public class DatabaseDialog extends BaseDialog{ image.addListener(listener); if(!Vars.mobile && unlocked(unlock)){ image.addListener(new HandCursorListener()); - image.update(() -> image.getColor().lerp(!listener.isOver() ? Color.lightGray : Color.white, 0.4f * Time.delta())); + image.update(() -> image.color.lerp(!listener.isOver() ? Color.lightGray : Color.white, 0.4f * Time.delta)); } if(unlocked(unlock)){ diff --git a/core/src/mindustry/ui/dialogs/FileChooser.java b/core/src/mindustry/ui/dialogs/FileChooser.java index d2046c435e..ef299cf656 100644 --- a/core/src/mindustry/ui/dialogs/FileChooser.java +++ b/core/src/mindustry/ui/dialogs/FileChooser.java @@ -1,13 +1,13 @@ package mindustry.ui.dialogs; import arc.*; -import arc.struct.*; import arc.files.*; import arc.func.*; import arc.graphics.g2d.*; import arc.scene.event.*; import arc.scene.ui.*; import arc.scene.ui.layout.*; +import arc.struct.*; import arc.util.*; import arc.util.pooling.*; import mindustry.gen.*; @@ -15,8 +15,6 @@ import mindustry.ui.*; import java.util.*; -import static mindustry.Vars.platform; - public class FileChooser extends BaseDialog{ private static final Fi homeDirectory = Core.files.absolute(Core.files.getExternalStoragePath()); private static Fi lastDirectory = homeDirectory; @@ -56,7 +54,7 @@ public class FileChooser extends BaseDialog{ filefield = new TextField(); filefield.setOnlyFontChars(false); - if(!open) platform.addDialog(filefield); + if(!open) filefield.addInputDialog(); filefield.setDisabled(open); ok = new TextButton(open ? "$load" : "$save"); @@ -78,7 +76,7 @@ public class FileChooser extends BaseDialog{ cancel.clicked(this::hide); navigation = new TextField(""); - navigation.touchable(Touchable.disabled); + navigation.touchable = Touchable.disabled; files = new Table(); files.marginRight(10); diff --git a/core/src/mindustry/ui/dialogs/JoinDialog.java b/core/src/mindustry/ui/dialogs/JoinDialog.java index 60d0926e2e..30144e65e8 100644 --- a/core/src/mindustry/ui/dialogs/JoinDialog.java +++ b/core/src/mindustry/ui/dialogs/JoinDialog.java @@ -49,9 +49,7 @@ public class JoinDialog extends BaseDialog{ TextField field = add.cont.field(Core.settings.getString("ip"), text -> { Core.settings.put("ip", text); - }).size(320f, 54f).get(); - - platform.addDialog(field, 100); + }).size(320f, 54f).maxTextLength(100).addInputDialog().get(); add.cont.row(); add.buttons.defaults().size(140f, 60f).pad(4f); @@ -261,7 +259,7 @@ public class JoinDialog extends BaseDialog{ t.field(Core.settings.getString("name"), text -> { player.name(text); Core.settings.put("name", text); - }).grow().pad(8).get().setMaxLength(maxNameLength); + }).grow().pad(8).addInputDialog(maxNameLength); }else{ t.add(player.name).update(l -> l.setColor(player.color())).grow().pad(8); } @@ -288,12 +286,12 @@ public class JoinDialog extends BaseDialog{ pad = 6; } - Cell cell = ((Table)pane.getParent()).getCell(button); + Cell cell = ((Table)pane.parent).getCell(button); if(!Mathf.equal(cell.minWidth(), pw)){ cell.width(pw); cell.padLeft(pad); - pane.getParent().invalidateHierarchy(); + pane.parent.invalidateHierarchy(); } }); } @@ -412,12 +410,12 @@ public class JoinDialog extends BaseDialog{ } float targetWidth(){ - return Math.min(Core.graphics.getWidth() / Scl.scl() * 0.9f, 500f);//Core.graphics.isPortrait() ? 350f : 500f; + return Math.min(Core.graphics.getWidth() / Scl.scl() * 0.9f, 500f); } @SuppressWarnings("unchecked") private void loadServers(){ - servers = Core.settings.getJson("servers", Seq.class, Seq::new); + servers = Core.settings.getJson("servers", Seq.class, Server.class, Seq::new); //load imported legacy data if(Core.settings.has("server-list")){ diff --git a/core/src/mindustry/ui/dialogs/LaunchLoadoutDialog.java b/core/src/mindustry/ui/dialogs/LaunchLoadoutDialog.java index 8a45169b77..3042aba33d 100644 --- a/core/src/mindustry/ui/dialogs/LaunchLoadoutDialog.java +++ b/core/src/mindustry/ui/dialogs/LaunchLoadoutDialog.java @@ -1,8 +1,10 @@ package mindustry.ui.dialogs; import arc.*; +import arc.func.*; import arc.scene.ui.*; import arc.scene.ui.layout.*; +import arc.struct.*; import mindustry.game.*; import mindustry.gen.*; import mindustry.type.*; @@ -14,7 +16,14 @@ import static mindustry.Vars.*; /** Dialog for selecting loadout at sector launch. */ public class LaunchLoadoutDialog extends BaseDialog{ + LoadoutDialog loadout = new LoadoutDialog(); + //total as a map + ObjectIntMap totalMap = new ObjectIntMap<>(); + //total required items + Seq total = new Seq<>(); + //currently selected schematic Schematic selected; + //validity of loadout items boolean valid; public LaunchLoadoutDialog(){ @@ -24,8 +33,51 @@ public class LaunchLoadoutDialog extends BaseDialog{ public void show(CoreBlock core, Building build, Runnable confirm){ cont.clear(); buttons.clear(); + totalMap.clear(); + + Seq stacks = universe.getLaunchResources(); addCloseButton(); + + //updates sum requirements + Runnable update = () -> { + totalMap.clear(); + total.clear(); + selected.requirements().each(i -> totalMap.increment(i.item, i.amount)); + universe.getLaunchResources().each(i -> totalMap.increment(i.item, i.amount)); + for(Item item : content.items()){ + if(totalMap.containsKey(item)) total.add(new ItemStack(item, totalMap.get(item))); + } + valid = build.items.has(total); + }; + + Cons rebuild = table -> { + table.clearChildren(); + int i = 0; + + for(ItemStack s : total){ + table.image(s.item.icon(Cicon.small)).left(); + table.add((build.items.has(s.item, s.amount)) ? "[lightgray]" + s.amount + "" : + "[scarlet]" + (Math.min(build.items.get(s.item), s.amount) + "[lightgray]/" + s.amount)).padLeft(2).left().padRight(4); + + if(++i % 4 == 0){ + table.row(); + } + } + }; + + Table items = new Table(); + + Runnable rebuildItems = () -> rebuild.get(items); + + buttons.button("$resources", Icon.terrain, () -> { + loadout.show(core.itemCapacity, stacks, stacks::clear, () -> {}, () -> { + universe.updateLaunchResources(stacks); + update.run(); + rebuildItems.run(); + }); + }); + buttons.button("$launch.text", Icon.ok, () -> { universe.updateLoadout(core, selected); confirm.run(); @@ -36,24 +88,6 @@ public class LaunchLoadoutDialog extends BaseDialog{ ButtonGroup