Compare commits
210 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5d2e705923 | ||
|
|
65ab869468 | ||
|
|
8ecbb46303 | ||
|
|
8f417ef2d7 | ||
|
|
8b4014876e | ||
|
|
75d8d4f407 | ||
|
|
5aef551bd2 | ||
|
|
efcd84735d | ||
|
|
edef90da58 | ||
|
|
534cfcfdaf | ||
|
|
fa42dc9e17 | ||
|
|
9779478fe7 | ||
|
|
3a4e939dee | ||
|
|
006e27b61f | ||
|
|
544678009a | ||
|
|
aa81805f19 | ||
|
|
51fa2bf30c | ||
|
|
d035a3925b | ||
|
|
304f5b62b3 | ||
|
|
e853ed6419 | ||
|
|
8f53d44278 | ||
|
|
075b7d7dc6 | ||
|
|
cda8a9b3e9 | ||
|
|
6e2f097803 | ||
|
|
4f46486a14 | ||
|
|
f44cad4c08 | ||
|
|
9adb3af430 | ||
|
|
fc94d68e10 | ||
|
|
47844e0204 | ||
|
|
082d157c86 | ||
|
|
1f9ed90cc0 | ||
|
|
cda6a6973d | ||
|
|
a13f7f633e | ||
|
|
d786c8668e | ||
|
|
187cb79265 | ||
|
|
692c4733e8 | ||
|
|
ab604ec1c0 | ||
|
|
801251e1a6 | ||
|
|
e8cfd63bc4 | ||
|
|
e778f1ab5d | ||
|
|
5f1d048eea | ||
|
|
3e03c3e49b | ||
|
|
54ba4b31a1 | ||
|
|
b5e2812d0b | ||
|
|
95c444a004 | ||
|
|
b1b03a7503 | ||
|
|
440c035367 | ||
|
|
e6f60505e6 | ||
|
|
afe3b0d111 | ||
|
|
05dcd7622b | ||
|
|
ae595b4564 | ||
|
|
9c54fcee2e | ||
|
|
4d34f16fcd | ||
|
|
2079cfaece | ||
|
|
df54fb0534 | ||
|
|
51e490e667 | ||
|
|
04fcf06ad5 | ||
|
|
9af8b64046 | ||
|
|
dc1c132e03 | ||
|
|
865beac7fb | ||
|
|
13334451bf | ||
|
|
d68ef73407 | ||
|
|
8d6ea6b197 | ||
|
|
2c29a06eb5 | ||
|
|
b75a03aed8 | ||
|
|
583e286ada | ||
|
|
42b8ece85a | ||
|
|
82ee71013e | ||
|
|
38fad6e15f | ||
|
|
ab947c4fe7 | ||
|
|
4ec8e24bd8 | ||
|
|
e02458122b | ||
|
|
d837879bd8 | ||
|
|
181ad1016c | ||
|
|
466183ffd0 | ||
|
|
60f2c67bde | ||
|
|
28240f730f | ||
|
|
ed93fa45d3 | ||
|
|
a12583eb4d | ||
|
|
de483990ef | ||
|
|
76ff55d7f1 | ||
|
|
784a280bef | ||
|
|
14869041b8 | ||
|
|
17fd3d0bc1 | ||
|
|
968d94904a | ||
|
|
c8e5994b2f | ||
|
|
d48f02ff4a | ||
|
|
73035b9211 | ||
|
|
513ccfe581 | ||
|
|
782307374f | ||
|
|
c0d1ff0f08 | ||
|
|
7cac70010e | ||
|
|
36fdf4afbc | ||
|
|
790a802236 | ||
|
|
b45e7cd8f3 | ||
|
|
ecaa0a4eaa | ||
|
|
a9f5aa9220 | ||
|
|
150343b5f9 | ||
|
|
ae35b2ff7e | ||
|
|
1663497e6c | ||
|
|
fca8d6741c | ||
|
|
97e9cdc1fd | ||
|
|
cd6516786b | ||
|
|
e9089aae68 | ||
|
|
c899cb6a93 | ||
|
|
acc9a5aa9e | ||
|
|
d7cdfbb02d | ||
|
|
afed4c4239 | ||
|
|
3eb655402f | ||
|
|
fc7887399f | ||
|
|
0c1c41efc0 | ||
|
|
43937037db | ||
|
|
0c418d1a09 | ||
|
|
2ad14cc884 | ||
|
|
77e6030c59 | ||
|
|
79624ff7cd | ||
|
|
f2b5553f54 | ||
|
|
bced413810 | ||
|
|
a14ae1bdf8 | ||
|
|
1e3b498671 | ||
|
|
19bc6f6e48 | ||
|
|
3dae157a5e | ||
|
|
55a7089a3d | ||
|
|
44286cee59 | ||
|
|
89c35db811 | ||
|
|
68ab48a1d3 | ||
|
|
e4a8d2cb33 | ||
|
|
e92d26b9e8 | ||
|
|
d77f1b4fc0 | ||
|
|
e1fefd1664 | ||
|
|
9e15434904 | ||
|
|
d539bc0b43 | ||
|
|
4940c277f6 | ||
|
|
fc317939e2 | ||
|
|
53e655698b | ||
|
|
63e4bca098 | ||
|
|
a7d1f98f7e | ||
|
|
d91dd2548d | ||
|
|
a644b64c1c | ||
|
|
2918a0ea86 | ||
|
|
a3abadd8c2 | ||
|
|
9a7e0fb45e | ||
|
|
a78faa57f3 | ||
|
|
024f64678c | ||
|
|
a31e182905 | ||
|
|
a4f54a890a | ||
|
|
7fa9902ee7 | ||
|
|
d84f2e1993 | ||
|
|
41f79b995d | ||
|
|
c122aa85bf | ||
|
|
76124c1b19 | ||
|
|
5582a8bf1b | ||
|
|
8cffab46e0 | ||
|
|
624f004800 | ||
|
|
6eab4ebd1c | ||
|
|
c32c500ad2 | ||
|
|
c0d0edfc89 | ||
|
|
8d7f96bf00 | ||
|
|
909da9de3c | ||
|
|
899f4fe994 | ||
|
|
73ca6eeb74 | ||
|
|
8770bb2422 | ||
|
|
308320b4e7 | ||
|
|
928a831bc4 | ||
|
|
a2181fec48 | ||
|
|
db5298e40c | ||
|
|
0b7c8bdcd8 | ||
|
|
f814fa861c | ||
|
|
7370e398cc | ||
|
|
ca572163d4 | ||
|
|
78afbb3e95 | ||
|
|
23b9556105 | ||
|
|
ad080036c2 | ||
|
|
1e12faaf65 | ||
|
|
6c7428a1fb | ||
|
|
0ab06392c1 | ||
|
|
2a8a00afab | ||
|
|
526b1add26 | ||
|
|
514aa26054 | ||
|
|
5e9c64391e | ||
|
|
1d54e939cb | ||
|
|
a40c49a915 | ||
|
|
103e408cb7 | ||
|
|
1d4da170ef | ||
|
|
3b75527e4c | ||
|
|
83d4825bf2 | ||
|
|
3d47389a39 | ||
|
|
2c03516998 | ||
|
|
062b319ab3 | ||
|
|
8ad4349d18 | ||
|
|
2ec3eee138 | ||
|
|
6b94cbd089 | ||
|
|
7b8a9ff15e | ||
|
|
b4deb6caca | ||
|
|
ba7645e531 | ||
|
|
280f0d6e21 | ||
|
|
5203d17910 | ||
|
|
da3c11a201 | ||
|
|
e7b6013d8d | ||
|
|
ed2825b0d9 | ||
|
|
50410be90a | ||
|
|
0bd07866d8 | ||
|
|
2dd234d960 | ||
|
|
43d1f363e5 | ||
|
|
dec9e8d4aa | ||
|
|
f364892fce | ||
|
|
df0bb9583b | ||
|
|
9b95b97568 | ||
|
|
69b7d15beb | ||
|
|
ba77f8e2aa |
8
.gitignore
vendored
@@ -19,7 +19,6 @@ logs/
|
|||||||
/annotations/out/
|
/annotations/out/
|
||||||
/net/build/
|
/net/build/
|
||||||
/tools/build/
|
/tools/build/
|
||||||
/core/build/
|
|
||||||
/tests/build/
|
/tests/build/
|
||||||
/server/build/
|
/server/build/
|
||||||
changelog
|
changelog
|
||||||
@@ -143,13 +142,6 @@ nb-configuration.xml
|
|||||||
/local.properties
|
/local.properties
|
||||||
.gradle/
|
.gradle/
|
||||||
gradle-app.setting
|
gradle-app.setting
|
||||||
/build/
|
|
||||||
/android/build/
|
|
||||||
/core/build/
|
|
||||||
/desktop/build/
|
|
||||||
/html/build/
|
|
||||||
/ios/build/
|
|
||||||
/ios-moe/build/
|
|
||||||
|
|
||||||
## OS Specific
|
## OS Specific
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|||||||
17
README.md
@@ -61,18 +61,5 @@ Post feature requests and feedback [here](https://github.com/Anuken/Mindustry-Su
|
|||||||
|
|
||||||
## Downloads
|
## Downloads
|
||||||
|
|
||||||
[<img src="https://static.itch.io/images/badge.svg"
|
| [](https://anuke.itch.io/mindustry) | [](https://play.google.com/store/apps/details?id=io.anuke.mindustry) | [](https://f-droid.org/packages/io.anuke.mindustry) | [](https://flathub.org/apps/details/com.github.Anuken.Mindustry) |
|
||||||
alt="Get it on Itch.io"
|
|--- |--- |--- |--- |
|
||||||
height="60">](https://anuke.itch.io/mindustry)
|
|
||||||
|
|
||||||
[<img src="https://play.google.com/intl/en_us/badges/images/generic/en-play-badge.png"
|
|
||||||
alt="Get it on Google Play"
|
|
||||||
height="80">](https://play.google.com/store/apps/details?id=io.anuke.mindustry)
|
|
||||||
|
|
||||||
[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png"
|
|
||||||
alt="Get it on F-Droid"
|
|
||||||
height="80">](https://f-droid.org/packages/io.anuke.mindustry/)
|
|
||||||
|
|
||||||
[<img src="https://flathub.org/assets/badges/flathub-badge-en.svg"
|
|
||||||
alt="Download On Flathub"
|
|
||||||
height="60">](https://flathub.org/apps/details/com.github.Anuken.Mindustry)
|
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ import java.util.*;
|
|||||||
|
|
||||||
import static mindustry.Vars.*;
|
import static mindustry.Vars.*;
|
||||||
|
|
||||||
|
|
||||||
public class AndroidLauncher extends AndroidApplication{
|
public class AndroidLauncher extends AndroidApplication{
|
||||||
public static final int PERMISSION_REQUEST_CODE = 1;
|
public static final int PERMISSION_REQUEST_CODE = 1;
|
||||||
boolean doubleScaleTablets = true;
|
boolean doubleScaleTablets = true;
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ public class AssetsProcess extends BaseProcessor{
|
|||||||
texIcons.each((key, val) -> {
|
texIcons.each((key, val) -> {
|
||||||
String[] split = val.split("\\|");
|
String[] split = val.split("\\|");
|
||||||
String name = Strings.kebabToCamel(split[1]).replace("Medium", "").replace("Icon", "");
|
String name = Strings.kebabToCamel(split[1]).replace("Medium", "").replace("Icon", "");
|
||||||
if(SourceVersion.isKeyword(name) || name.equals("char")) name = name + "i";
|
if(SourceVersion.isKeyword(name) || name.equals("char")) name += "i";
|
||||||
|
|
||||||
ichtype.addField(FieldSpec.builder(char.class, name, Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL).initializer("(char)" + key).build());
|
ichtype.addField(FieldSpec.builder(char.class, name, Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL).initializer("(char)" + key).build());
|
||||||
});
|
});
|
||||||
@@ -115,9 +115,7 @@ public class AssetsProcess extends BaseProcessor{
|
|||||||
names.add(name);
|
names.add(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(SourceVersion.isKeyword(name)){
|
if(SourceVersion.isKeyword(name)) name += "s";
|
||||||
name = name + "s";
|
|
||||||
}
|
|
||||||
|
|
||||||
String filepath = path.substring(path.lastIndexOf("/") + 1) + "/" + fname;
|
String filepath = path.substring(path.lastIndexOf("/") + 1) + "/" + fname;
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ buildscript{
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies{
|
dependencies{
|
||||||
classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.3.8'
|
classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.3.11'
|
||||||
classpath "com.github.anuken:packr:-SNAPSHOT"
|
classpath "com.github.anuken:packr:-SNAPSHOT"
|
||||||
classpath "com.github.Anuken.Arc:packer:$arcHash"
|
classpath "com.github.Anuken.Arc:packer:$arcHash"
|
||||||
classpath "com.github.Anuken.Arc:arc-core:$arcHash"
|
classpath "com.github.Anuken.Arc:arc-core:$arcHash"
|
||||||
@@ -36,7 +36,7 @@ allprojects{
|
|||||||
if(!project.hasProperty("versionType")) versionType = 'official'
|
if(!project.hasProperty("versionType")) versionType = 'official'
|
||||||
appName = 'Mindustry'
|
appName = 'Mindustry'
|
||||||
steamworksVersion = '891ed912791e01fe9ee6237a6497e5212b85c256'
|
steamworksVersion = '891ed912791e01fe9ee6237a6497e5212b85c256'
|
||||||
rhinoVersion = '8437435dab9993769d72739608580d40c5343285'
|
rhinoVersion = '2c3ad8c29560f695ad147a8e8cf5ed9f0ae834b3'
|
||||||
|
|
||||||
loadVersionProps = {
|
loadVersionProps = {
|
||||||
return new Properties().with{p -> p.load(file('../core/assets/version.properties').newReader()); return p }
|
return new Properties().with{p -> p.load(file('../core/assets/version.properties').newReader()); return p }
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 744 B After Width: | Height: | Size: 743 B |
BIN
core/assets-raw/sprites/shapes/circle-small.png
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
@@ -267,6 +267,9 @@ cancel = Cancel
|
|||||||
openlink = Open Link
|
openlink = Open Link
|
||||||
copylink = Copy Link
|
copylink = Copy Link
|
||||||
back = Back
|
back = Back
|
||||||
|
crash.export = Export Crash Logs
|
||||||
|
crash.none = No crash logs found.
|
||||||
|
crash.exported = Crash logs exported.
|
||||||
data.export = Export Data
|
data.export = Export Data
|
||||||
data.import = Import Data
|
data.import = Import Data
|
||||||
data.openfolder = Open Data Folder
|
data.openfolder = Open Data Folder
|
||||||
@@ -463,7 +466,9 @@ load = Load
|
|||||||
save = Save
|
save = Save
|
||||||
fps = FPS: {0}
|
fps = FPS: {0}
|
||||||
ping = Ping: {0}ms
|
ping = Ping: {0}ms
|
||||||
language.restart = Please restart your game for the language settings to take effect.
|
memory = Mem: {0}mb
|
||||||
|
memory2 = Mem:\n {0}mb +\n {1}mb
|
||||||
|
language.restart = Restart your game for the language settings to take effect.
|
||||||
settings = Settings
|
settings = Settings
|
||||||
tutorial = Tutorial
|
tutorial = Tutorial
|
||||||
tutorial.retake = Re-Take Tutorial
|
tutorial.retake = Re-Take Tutorial
|
||||||
@@ -483,6 +488,7 @@ launch.text = Launch
|
|||||||
research.multiplayer = Only the host can research items.
|
research.multiplayer = Only the host can research items.
|
||||||
uncover = Uncover
|
uncover = Uncover
|
||||||
configure = Configure Loadout
|
configure = Configure Loadout
|
||||||
|
|
||||||
#TODO
|
#TODO
|
||||||
loadout = Loadout
|
loadout = Loadout
|
||||||
resources = Resources
|
resources = Resources
|
||||||
@@ -590,6 +596,7 @@ unit.nobuild = [scarlet]Unit can't build
|
|||||||
lastaccessed = [lightgray]Last Accessed: {0}
|
lastaccessed = [lightgray]Last Accessed: {0}
|
||||||
block.unknown = [lightgray]???
|
block.unknown = [lightgray]???
|
||||||
|
|
||||||
|
stat.description = Purpose
|
||||||
stat.input = Input
|
stat.input = Input
|
||||||
stat.output = Output
|
stat.output = Output
|
||||||
stat.booster = Booster
|
stat.booster = Booster
|
||||||
@@ -649,6 +656,8 @@ stat.minetier = Mine Tier
|
|||||||
stat.payloadcapacity = Payload Capacity
|
stat.payloadcapacity = Payload Capacity
|
||||||
stat.commandlimit = Command Limit
|
stat.commandlimit = Command Limit
|
||||||
stat.abilities = Abilities
|
stat.abilities = Abilities
|
||||||
|
stat.canboost = Can Boost
|
||||||
|
stat.flying = Flying
|
||||||
|
|
||||||
ability.forcefield = Force Field
|
ability.forcefield = Force Field
|
||||||
ability.repairfield = Repair Field
|
ability.repairfield = Repair Field
|
||||||
@@ -713,6 +722,7 @@ unit.items = items
|
|||||||
unit.thousands = k
|
unit.thousands = k
|
||||||
unit.millions = mil
|
unit.millions = mil
|
||||||
unit.billions = b
|
unit.billions = b
|
||||||
|
category.purpose = Purpose
|
||||||
category.general = General
|
category.general = General
|
||||||
category.power = Power
|
category.power = Power
|
||||||
category.liquids = Liquids
|
category.liquids = Liquids
|
||||||
@@ -1064,7 +1074,6 @@ block.conveyor.name = Conveyor
|
|||||||
block.titanium-conveyor.name = Titanium Conveyor
|
block.titanium-conveyor.name = Titanium Conveyor
|
||||||
block.plastanium-conveyor.name = Plastanium Conveyor
|
block.plastanium-conveyor.name = Plastanium Conveyor
|
||||||
block.armored-conveyor.name = Armored 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.junction.name = Junction
|
||||||
block.router.name = Router
|
block.router.name = Router
|
||||||
block.distributor.name = Distributor
|
block.distributor.name = Distributor
|
||||||
@@ -1072,7 +1081,6 @@ block.sorter.name = Sorter
|
|||||||
block.inverted-sorter.name = Inverted Sorter
|
block.inverted-sorter.name = Inverted Sorter
|
||||||
block.message.name = Message
|
block.message.name = Message
|
||||||
block.illuminator.name = Illuminator
|
block.illuminator.name = Illuminator
|
||||||
block.illuminator.description = A small, compact, configurable light source. Requires power to function.
|
|
||||||
block.overflow-gate.name = Overflow Gate
|
block.overflow-gate.name = Overflow Gate
|
||||||
block.underflow-gate.name = Underflow Gate
|
block.underflow-gate.name = Underflow Gate
|
||||||
block.silicon-smelter.name = Silicon Smelter
|
block.silicon-smelter.name = Silicon Smelter
|
||||||
@@ -1208,136 +1216,205 @@ tutorial.waves = The[lightgray] enemy[] approaches.\n\nDefend the core for 2 wav
|
|||||||
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.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.
|
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.copper.description = Used in all types of construction and ammunition.
|
||||||
item.lead.description = A basic starter material. Used extensively in electronics and liquid transportation blocks.
|
item.copper.details = Copper. Abnormally abundant metal on Serpulo. Structurally weak unless reinforced.
|
||||||
item.metaglass.description = A super-tough glass compound. Extensively used for liquid distribution and storage.
|
item.lead.description = Used in liquid transportation and electrical structures.
|
||||||
item.graphite.description = Mineralized carbon, used for ammunition and electrical components.
|
item.lead.details = Dense. Inert. Extensively used in batteries.\nNote: Likely toxic to biological life forms. Not that there are many left here.
|
||||||
item.sand.description = A common material that is used extensively in smelting, both in alloying and as a flux.
|
item.metaglass.description = Used in liquid distribution/storage structures.
|
||||||
item.coal.description = Fossilized plant matter, formed long before the seeding event. Used extensively for fuel and resource production.
|
item.graphite.description = Used in electrical components and turret ammunition.
|
||||||
item.titanium.description = A rare super-light metal used extensively in liquid transportation, drills and aircraft.
|
item.sand.description = Used for production of other refined materials.
|
||||||
item.thorium.description = A dense, radioactive metal used as structural support and nuclear fuel.
|
item.coal.description = Used for fuel and refined material production.
|
||||||
item.scrap.description = Leftover remnants of old structures and units. Contains trace amounts of many different metals.
|
item.coal.details = Appears to be fossilized plant matter, formed long before the seeding event.
|
||||||
item.silicon.description = An extremely useful semiconductor. Applications in solar panels, complex electronics and homing turret ammunition.
|
item.titanium.description = Used in liquid transportation structures, drills and aircraft.
|
||||||
item.plastanium.description = A light, ductile material used in advanced aircraft and fragmentation ammunition.
|
item.thorium.description = Used in durable structures and as nuclear fuel.
|
||||||
item.phase-fabric.description = A near-weightless substance used in advanced electronics and self-repairing technology.
|
item.scrap.description = Melted down and refined into other materials.
|
||||||
item.surge-alloy.description = An advanced alloy with unique electrical properties.
|
item.scrap.details = Leftover remnants of old structures and units.
|
||||||
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.silicon.description = Used in solar panels, complex electronics and homing turret ammunition.
|
||||||
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.plastanium.description = Used in advanced units, insulation and fragmentation ammunition.
|
||||||
item.pyratite.description = An extremely flammable substance used in incendiary weapons.
|
item.phase-fabric.description = Used in advanced electronics and self-repairing structures.
|
||||||
liquid.water.description = The most useful liquid. Commonly used for cooling machines and waste processing.
|
item.surge-alloy.description = Used in advanced weaponry and reactive defense structures.
|
||||||
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.
|
item.spore-pod.description = Used for conversion into oil, explosives and fuel.
|
||||||
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.
|
item.spore-pod.details = Spores. Likely a synthetic life form. Emit gases toxic to other biological life. Extremely invasive. Highly flammable in certain conditions.
|
||||||
liquid.cryofluid.description = An inert, non-corrosive liquid created from water and titanium. Has extremely high heat capacity. Extensively used as coolant.
|
item.blast-compound.description = Used in bombs and explosive ammunition.
|
||||||
|
item.pyratite.description = Used in incendiary weapons and combustion-fueled generators.
|
||||||
|
liquid.water.description = Used for cooling machines and waste processing.
|
||||||
|
liquid.slag.description = Refined in separators into constituent metals, or sprayed at enemies as a weapon.
|
||||||
|
liquid.oil.description = Used in advanced material production and as incendiary ammunition.
|
||||||
|
liquid.cryofluid.description = Used as coolant in reactors, turrets and factories.
|
||||||
|
|
||||||
block.message.description = Stores a message. Used for communication between allies.
|
block.armored-conveyor.description = Moves items forward. Does not accept inputs from the sides.
|
||||||
block.graphite-press.description = Compresses chunks of coal into pure sheets of graphite.
|
block.illuminator.description = Emits light.
|
||||||
block.multi-press.description = An upgraded version of the graphite press. Employs water and power to process coal quickly and efficiently.
|
block.message.description = Stores a message for communication between allies.
|
||||||
block.silicon-smelter.description = Reduces sand with pure coal. Produces silicon.
|
block.graphite-press.description = Compresses coal into graphite.
|
||||||
block.kiln.description = Smelts sand and lead into the compound known as metaglass. Requires small amounts of power to run.
|
block.multi-press.description = Compresses coal into graphite. Requires water as coolant.
|
||||||
|
block.silicon-smelter.description = Refines silicon from sand and coal.
|
||||||
|
block.kiln.description = Smelts sand and lead into metaglass.
|
||||||
block.plastanium-compressor.description = Produces plastanium from oil and titanium.
|
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.phase-weaver.description = Synthesizes phase fabric from thorium and sand.
|
||||||
block.alloy-smelter.description = Combines titanium, lead, silicon and copper to produce surge alloy.
|
block.alloy-smelter.description = Fuses titanium, lead, silicon and copper into surge alloy.
|
||||||
block.cryofluid-mixer.description = Mixes water and fine titanium powder into cryofluid. Essential for thorium reactor usage.
|
block.cryofluid-mixer.description = Mixes water and fine titanium powder to produce cryofluid.
|
||||||
block.blast-mixer.description = Crushes and mixes clusters of spores with pyratite to produce blast compound.
|
block.blast-mixer.description = Produces blast compound from pyratite and spore pods.
|
||||||
block.pyratite-mixer.description = Mixes coal, lead and sand into highly flammable pyratite.
|
block.pyratite-mixer.description = Mixes coal, lead and sand into pyratite.
|
||||||
block.melter.description = Melts down scrap into slag for further processing or usage in wave turrets.
|
block.melter.description = Melts down scrap into slag.
|
||||||
block.separator.description = Separates slag into its mineral components. Outputs the cooled result.
|
block.separator.description = Separates slag into its mineral components.
|
||||||
block.spore-press.description = Compresses spore pods under extreme pressure to synthesize oil.
|
block.spore-press.description = Compresses spore pods into oil.
|
||||||
block.pulverizer.description = Crushes scrap into fine sand.
|
block.pulverizer.description = Crushes scrap into fine sand.
|
||||||
block.coal-centrifuge.description = Solidifes oil into chunks of coal.
|
block.coal-centrifuge.description = Transforms oil into coal.
|
||||||
block.incinerator.description = Vaporizes any excess item or liquid it receives.
|
block.incinerator.description = Vaporizes any item or liquid it receives.
|
||||||
block.power-void.description = Voids all power inputted into it. Sandbox only.
|
block.power-void.description = Voids all power inputted.
|
||||||
block.power-source.description = Infinitely outputs power. Sandbox only.
|
block.power-source.description = Infinitely outputs power. Sandbox only.
|
||||||
block.item-source.description = Infinitely outputs items. Sandbox only.
|
block.item-source.description = Infinitely outputs items. Sandbox only.
|
||||||
block.item-void.description = Destroys any items. Sandbox only.
|
block.item-void.description = Destroys any items. Sandbox only.
|
||||||
block.liquid-source.description = Infinitely outputs liquids. Sandbox only.
|
block.liquid-source.description = Infinitely outputs liquids. Sandbox only.
|
||||||
block.liquid-void.description = Removes any 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.description = Protects structures from enemy projectiles.
|
||||||
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.copper-wall-large.description = Protects structures from enemy projectiles.
|
||||||
block.titanium-wall.description = A moderately strong defensive block.\nProvides moderate protection from enemies.
|
block.titanium-wall.description = Protects structures from enemy projectiles.
|
||||||
block.titanium-wall-large.description = A moderately strong defensive block.\nProvides moderate protection from enemies.\nSpans multiple tiles.
|
block.titanium-wall-large.description = Protects structures from enemy projectiles.
|
||||||
block.plastanium-wall.description = A special type of wall that absorbs electric arcs and blocks automatic power node connections.
|
block.plastanium-wall.description = Protects structures from enemy projectiles. Absorbs lasers and electric arcs. Blocks automatic power 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.plastanium-wall-large.description = Protects structures from enemy projectiles. Absorbs lasers and electric arcs. Blocks automatic power connections.
|
||||||
block.thorium-wall.description = A strong defensive block.\nDecent protection from enemies.
|
block.thorium-wall.description = Protects structures from enemy projectiles.
|
||||||
block.thorium-wall-large.description = A strong defensive block.\nDecent protection from enemies.\nSpans multiple tiles.
|
block.thorium-wall-large.description = Protects structures from enemy projectiles.
|
||||||
block.phase-wall.description = A wall coated with special phase-based reflective compound. Deflects most bullets upon impact.
|
block.phase-wall.description = Protects structures from enemy projectiles, reflecting 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.phase-wall-large.description = Protects structures from enemy projectiles, reflecting most bullets upon impact.
|
||||||
block.surge-wall.description = An extremely durable defensive block.\nBuilds up charge on bullet contact, releasing it randomly.
|
block.surge-wall.description = Protects structures from enemy projectiles, periodically releasing electric arcs upon contact.
|
||||||
block.surge-wall-large.description = An extremely durable defensive block.\nBuilds up charge on bullet contact, releasing it randomly.\nSpans multiple tiles.
|
block.surge-wall-large.description = Protects structures from enemy projectiles, periodically releasing electric arcs upon contact.
|
||||||
block.door.description = A small door. Can be opened or closed by tapping.
|
block.door.description = A wall that can be opened and closed.
|
||||||
block.door-large.description = A large door. Can be opened and closed by tapping.\nSpans multiple tiles.
|
block.door-large.description = A wall that can be opened and closed.
|
||||||
block.mender.description = Periodically repairs blocks in its vicinity. Keeps defenses repaired in-between waves.\nOptionally uses silicon to boost range and efficiency.
|
block.mender.description = Periodically repairs blocks in its vicinity.\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.mend-projector.description = 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.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.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 increases shield size.
|
||||||
block.shock-mine.description = Damages enemies stepping on the mine. Nearly invisible to the enemy.
|
block.shock-mine.description = Releases electric arcs upon enemy unit contact.
|
||||||
block.conveyor.description = Basic item transport block. Moves items forward and automatically deposits them into blocks. Rotatable.
|
block.conveyor.description = Transports items forward.
|
||||||
block.titanium-conveyor.description = Advanced item transport block. Moves items faster than standard conveyors.
|
block.titanium-conveyor.description = Transports items forward. Faster than a standard conveyor.
|
||||||
block.plastanium-conveyor.description = Moves items in batches.\nAccepts items at the back, and unloads them in three directions at the front.\nRequires multiple loading and unloading points for peak throughput.
|
block.plastanium-conveyor.description = Transports items forward in batches. Accepts items at the back, and unloads them in three directions at the front. Requires multiple loading and unloading points for peak throughput.
|
||||||
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.junction.description = Acts as a bridge for two crossing conveyor belts.
|
||||||
block.bridge-conveyor.description = Advanced item transport block. Allows transporting items over up to 3 tiles of any terrain or building.
|
block.bridge-conveyor.description = Transports items over terrain or buildings.
|
||||||
block.phase-conveyor.description = Advanced item transport block. Uses power to teleport items to a connected phase conveyor over several tiles.
|
block.phase-conveyor.description = Instantly transports items over terrain or buildings. Longer range than the item bridge, but requires power.
|
||||||
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.sorter.description = If an input item matches the selection, it passes forward. 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.inverted-sorter.description = Similar to 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.router.description = Distributes input items to 3 output directions equally.
|
||||||
block.distributor.description = An advanced router. Splits items to up to 7 other directions equally.
|
block.router.details = A necessary evil. Using next to production inputs is not advised, as they will get clogged by output.
|
||||||
block.overflow-gate.description = Only outputs to the left and right if the front path is blocked.
|
block.distributor.description = Distributes input items to 7 output directions equally.
|
||||||
block.underflow-gate.description = The opposite of an overflow gate. Outputs to the front if the left and right paths are blocked.
|
block.overflow-gate.description = Only outputs items to the left and right if the front path is 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.underflow-gate.description = Opposite of an overflow gate. Outputs to the front if the left and right paths are blocked.
|
||||||
block.mechanical-pump.description = A cheap pump with slow output, but no power consumption.
|
block.mass-driver.description = Long-range item transport structure. Collects batches of items and shoots them to other mass drivers.
|
||||||
block.rotary-pump.description = An advanced pump. Pumps more liquid, but requires power.
|
block.mechanical-pump.description = Pumps and outputs liquids. Does not require power.
|
||||||
block.thermal-pump.description = The ultimate pump.
|
block.rotary-pump.description = Pumps and outputs liquids. Requires power.
|
||||||
block.conduit.description = Basic liquid transport block. Moves liquids forward. Used in conjunction with pumps and other conduits.
|
block.thermal-pump.description = Pumps and outputs liquids.
|
||||||
block.pulse-conduit.description = An advanced liquid transport block. Transports liquids faster and stores more than standard conduits.
|
block.conduit.description = Moves liquids forward. Used in conjunction with pumps and other 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.\nDoes not leak.
|
block.pulse-conduit.description = Moves liquids forward. Transports faster and stores more than standard conduits.
|
||||||
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.plated-conduit.description = Moves liquids forward. Does not accept input from the sides. Does not leak.
|
||||||
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-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.
|
||||||
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.liquid-tank.description = Stores a large amount of liquid. Outputs to all sides, similarly to a liquid router.
|
||||||
block.bridge-conduit.description = Advanced liquid transport block. Allows transporting liquids over up to 3 tiles of any terrain or building.
|
block.liquid-junction.description = Acts as a bridge for two crossing conduits.
|
||||||
block.phase-conduit.description = Advanced liquid transport block. Uses power to teleport liquids to a connected phase conduit over several tiles.
|
block.bridge-conduit.description = Transports liquids over terrain or buildings.
|
||||||
|
block.phase-conduit.description = Transports liquids over terrain or buildings. Longer range than the bridge conduit, but requires power.
|
||||||
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.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.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.surge-tower.description = A 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.diode.description = Moves battery power in 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.description = Stores power in times of surplus energy. Outputs power in times of deficit.
|
||||||
block.battery-large.description = Stores much more power than a regular battery.
|
block.battery-large.description = Stores power in times of surplus energy. Outputs power in times of deficit. Higher capacity than a regular battery.
|
||||||
block.combustion-generator.description = Generates power by burning flammable materials, such as coal.
|
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.thermal-generator.description = Generates power when placed in hot locations.
|
||||||
block.steam-generator.description = An advanced combustion generator. More efficient, but requires additional water for generating steam.
|
block.steam-generator.description = Generates power by burning flammable materials and converting water to steam.
|
||||||
block.differential-generator.description = Generates large amounts of energy. Utilizes the temperature difference between cryofluid and burning pyratite.
|
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.rtg-generator.description = 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.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.solar-panel-large.description = Provides a small amount of power from the sun. More efficient than 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.thorium-reactor.description = Generates significant amounts of power from thorium. Requires constant cooling. Will explode violently if insufficient amounts of coolant are supplied.
|
||||||
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.impact-reactor.description = Creates 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.mechanical-drill.description = When placed on ore, 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.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.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.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.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.cultivator.description = Cultivates tiny concentrations of atmospheric spores into spore pods.
|
||||||
|
block.cultivator.details = Recovered technology. Used to produce massive amounts of biomass as efficiently as possible. Likely the initial incubator of the spores now covering Serpulo.
|
||||||
block.oil-extractor.description = Uses large amounts of power, sand and water to drill for oil.
|
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-shard.description = Core of the base. Once destroyed, the sector is lost.
|
||||||
block.core-foundation.description = The second version of the core. Better armored. Stores more resources.
|
block.core-shard.details = The first iteration. Compact. Self-replicating. Equipped with single-use launch thrusters. Not designed for interplanetary travel.
|
||||||
block.core-nucleus.description = The third and final iteration of the core capsule. Extremely well armored. Stores massive amounts of resources.
|
block.core-foundation.description = Core of the base. Well armored. Stores more resources than a Shard.
|
||||||
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.core-foundation.details = The second iteration.
|
||||||
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.core-nucleus.description = Core of the base. Extremely well armored. Stores massive amounts of resources.
|
||||||
block.unloader.description = Unloads items from any nearby non-transportation block. The type of item to be unloaded can be changed by tapping.
|
block.core-nucleus.details = The third and final iteration.
|
||||||
block.launch-pad.description = Launches batches of items without any need for a core launch.
|
block.vault.description = Stores a large amount of items of each type. Contents can be retrieved with an unloader.
|
||||||
block.launch-pad-large.description = An improved version of the launch pad. Stores more items. Launches more frequently.
|
block.container.description = Stores a small amount of items of each type. Contents can be retrieved with an unloader.
|
||||||
block.duo.description = A small, cheap turret. Useful against ground units.
|
block.unloader.description = Unloads the selected item from nearby blocks.
|
||||||
block.scatter.description = An essential anti-air turret. Sprays clumps of lead, scrap or metaglass flak at enemy units.
|
block.launch-pad.description = Launches batches of items to selected sectors.
|
||||||
|
block.duo.description = Fires alternating bullets at enemies.
|
||||||
|
block.scatter.description = Fires clumps of lead, scrap or metaglass flak at enemy aircraft.
|
||||||
block.scorch.description = Burns any ground enemies close to it. Highly effective at close range.
|
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.hail.description = Fires small shells at ground enemies over long distances.
|
||||||
block.wave.description = A medium-sized turret. Shoots streams of liquid at enemies. Automatically extinguishes fires when supplied with water.
|
block.wave.description = Fires 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.lancer.description = Charges and fires powerful beams of energy at ground targets.
|
||||||
block.arc.description = A small close-range electric turret. Fires arcs of electricity at enemies.
|
block.arc.description = Fires arcs of electricity at ground targets.
|
||||||
block.swarmer.description = A medium-sized missile turret. Attacks both air and ground enemies. Fires homing missiles.
|
block.swarmer.description = Fires homing missiles at enemies.
|
||||||
block.salvo.description = A larger, more advanced version of the Duo turret. Fires quick salvos of bullets at the enemy.
|
block.salvo.description = Fires quick salvos of bullets at enemies.
|
||||||
block.fuse.description = A large, close-range shrapnel turret. Fires three piercing blasts at nearby enemies.
|
block.fuse.description = Fires three close-range piercing blasts at nearby enemies.
|
||||||
block.ripple.description = An extremely powerful artillery turret. Shoots clusters of shells at enemies over long distances.
|
block.ripple.description = Shoots clusters of shells at ground enemies over long distances.
|
||||||
block.cyclone.description = A large anti-air and anti-ground turret. Fires explosive clumps of flak at nearby units.
|
block.cyclone.description = Fires explosive clumps of flak at nearby enemies.
|
||||||
block.spectre.description = A massive dual-barreled cannon. Shoots large armor-piercing bullets at air and ground targets.
|
block.spectre.description = Fires 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.meltdown.description = 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.foreshadow.description = Fires a large single-target bolt over long distances.
|
||||||
|
block.repair-point.description = Continuously repairs the closest damaged unit in its vicinity.
|
||||||
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.
|
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.
|
||||||
|
block.parallax.description = Fires a tractor beam that pulls in air targets, damaging them in the process.
|
||||||
|
block.tsunami.description = Fires powerful streams of liquid at enemies. Automatically extinguishes fires when supplied with water.
|
||||||
|
block.silicon-crucible.description = Refines silicon from sand and coal, using pyratite as an additional heat source. More efficient in hot locations.
|
||||||
|
block.disassembler.description = Separates slag into trace amounts of exotic mineral components at low efficiency. Can produce thorium.
|
||||||
|
block.overdrive-dome.description = Increases the speed of nearby buildings. Requires phase fabric and silicon to operate.
|
||||||
|
block.payload-conveyor.description = Moves large payloads, such as units from factories.
|
||||||
|
block.payload-router.description = Splits input payloads into 3 output directions.
|
||||||
|
block.command-center.description = Controls unit behavior with several different commands.
|
||||||
|
block.ground-factory.description = Produces ground units. Output units can be used directly, or moved into reconstructors for upgrading.
|
||||||
|
block.air-factory.description = Produces air units. Output units can be used directly, or moved into reconstructors for upgrading.
|
||||||
|
block.naval-factory.description = Produces naval units. Output units can be used directly, or moved into reconstructors for upgrading.
|
||||||
|
block.additive-reconstructor.description = Upgrades inputted units to the second tier.
|
||||||
|
block.multiplicative-reconstructor.description = Upgrades inputted units to the third tier.
|
||||||
|
block.exponential-reconstructor.description = Upgrades inputted units to the fourth tier.
|
||||||
|
block.tetrative-reconstructor.description = Upgrades inputted units to the fifth and final tier.
|
||||||
|
block.switch.description = A toggleable switch. State can be read and controlled with logic processors.
|
||||||
|
block.micro-processor.description = Runs a sequence of logic instructions in a loop. Can be used to control units and buildings.
|
||||||
|
block.logic-processor.description = Runs a sequence of logic instructions in a loop. Can be used to control units and buildings. Faster than the micro processor.
|
||||||
|
block.hyper-processor.description = Runs a sequence of logic instructions in a loop. Can be used to control units and buildings. Faster than the logic processor.
|
||||||
|
block.memory-cell.description = Stores information for a logic processor.
|
||||||
|
block.memory-bank.description = Stores information for a logic processor. High capacity.
|
||||||
|
block.logic-display.description = Displays arbitrary graphics from a logic processor.
|
||||||
|
block.large-logic-display.description = Displays arbitrary graphics from a logic processor.
|
||||||
|
|
||||||
|
unit.dagger.description = Fires standard bullets at all nearby enemies.
|
||||||
|
unit.mace.description = Fires streams of flame at all nearby enemies.
|
||||||
|
unit.fortress.description = Fires long-range artillery at ground targets.
|
||||||
|
unit.scepter.description = Fires a barrage of charged bullets at all nearby enemies.
|
||||||
|
unit.reign.description = Fires a barrage of massive piercing bullets at all nearby enemies.
|
||||||
|
unit.nova.description = Fires laser bolts that damage enemies and repair allied structures. Capable of flight.
|
||||||
|
unit.pulsar.description = Fires arcs of electricity that damage enemies and repair allied structures. Capable of flight.
|
||||||
|
unit.quasar.description = Fires piercing laser beams that damage enemies and repair allied structures. Capable of flight. Shielded.
|
||||||
|
unit.vela.description = Fires a massive continuous laser beam that damages enemies, causes fires and repair allied structures. Capable of flight.
|
||||||
|
unit.corvus.description = Fires a massive laser blast that damages enemies and repairs allied structures. Can step over most terrain.
|
||||||
|
unit.crawler.description = Runs toward enemies and self-destructs, causing a large explosion.
|
||||||
|
unit.atrax.description = Fires debilitating orbs of slag at ground targets. Can step over most terrain.
|
||||||
|
unit.spiroct.description = Fires sapping laser beams at enemies, repairing itself in the process. Can step over most terrain.
|
||||||
|
unit.arkyid.description = Fires large sapping laser beams at enemies, repairing itself in the process. Can step over most terrain.
|
||||||
|
unit.toxopid.description = Fires large electric cluster-shells and piercing lasers at enemies. Can step over most terrain.
|
||||||
|
unit.flare.description = Fires standard bullets at nearby ground targets.
|
||||||
|
unit.horizon.description = Drops clusters of bombs on ground targets.
|
||||||
|
unit.zenith.description = Fires salvos of missiles at all nearby enemies.
|
||||||
|
unit.antumbra.description = Fires a barrage of bullets at all nearby enemies.
|
||||||
|
unit.eclipse.description = Fires two piercing lasers and a barrage of flak at all nearby enemies.
|
||||||
|
unit.mono.description = Automatically mines copper and lead, depositing it into the core.
|
||||||
|
unit.poly.description = Automatically rebuilds damaged structures and assists other units in construction.
|
||||||
|
unit.mega.description = Automatically repairs damaged structures. Capable of carrying blocks and small ground units.
|
||||||
|
unit.quad.description = Drops large bombs on ground targets, repairing allied structures and damaging enemies. Capable of carrying medium-sized ground units.
|
||||||
|
unit.oct.description = Protects nearby allies with its regenerating shield. Capable of carrying most ground units.
|
||||||
|
unit.risso.description = Fires a barrage of missiles and bullets at all nearby enemies.
|
||||||
|
unit.minke.description = Fires incendiary shells and standard bullets at nearby ground targets.
|
||||||
|
unit.bryde.description = Fires long-range artillery shells and missiles at enemies.
|
||||||
|
unit.sei.description = Fires a barrage of missiles and armor-piercing bullets at enemies.
|
||||||
|
unit.omura.description = Fires a long-range piercing railgun bolt at enemies. Constructs flare units.
|
||||||
|
unit.alpha.description = Defends the Shard core from enemies. Builds structures.
|
||||||
|
unit.beta.description = Defends the Foundation core from enemies. Builds structures.
|
||||||
|
unit.gamma.description = Defends the Nucleus core from enemies. Builds structures.
|
||||||
@@ -350,6 +350,7 @@ waves.invalid = Neplatné vlny ve schránce.
|
|||||||
waves.copied = Vlny byly zkopírovány.
|
waves.copied = Vlny byly zkopírovány.
|
||||||
waves.none = Žádní nepřátelé nebyli definováni.\nVlny s prázdným rozložením budou automaticky upraveny na výchozí rozložení.
|
waves.none = Žádní nepřátelé nebyli definováni.\nVlny s prázdným rozložením budou automaticky upraveny na výchozí rozložení.
|
||||||
|
|
||||||
|
#toto je záměrně malými písmeny
|
||||||
wavemode.counts = počty
|
wavemode.counts = počty
|
||||||
wavemode.totals = součty
|
wavemode.totals = součty
|
||||||
wavemode.health = zdraví
|
wavemode.health = zdraví
|
||||||
@@ -419,9 +420,9 @@ toolmode.drawteams.description = Kreslí týmy místo bloků.
|
|||||||
filters.empty = [lightgray]Nejsou zadány žádné filtry, přidej filtr tlačítkem níže.[]
|
filters.empty = [lightgray]Nejsou zadány žádné filtry, přidej filtr tlačítkem níže.[]
|
||||||
filter.distort = Zkreslení
|
filter.distort = Zkreslení
|
||||||
filter.noise = Zašumění
|
filter.noise = Zašumění
|
||||||
filter.enemyspawn = Enemy Spawn Select
|
filter.enemyspawn = Výběr nepřítelské líhně
|
||||||
filter.spawnpath = Path To Spawn
|
filter.spawnpath = Cesta k líhni
|
||||||
filter.corespawn = Core Select
|
filter.corespawn = Váběr ládra
|
||||||
filter.median = Medián
|
filter.median = Medián
|
||||||
filter.oremedian = Medián rud
|
filter.oremedian = Medián rud
|
||||||
filter.blend = Prolnutí
|
filter.blend = Prolnutí
|
||||||
@@ -445,7 +446,7 @@ filter.option.amount = Amount
|
|||||||
filter.option.block = Blok
|
filter.option.block = Blok
|
||||||
filter.option.floor = Povrch
|
filter.option.floor = Povrch
|
||||||
filter.option.flooronto = Cílový povrch
|
filter.option.flooronto = Cílový povrch
|
||||||
filter.option.target = Target
|
filter.option.target = Cíl
|
||||||
filter.option.wall = Stěna
|
filter.option.wall = Stěna
|
||||||
filter.option.ore = Ruda
|
filter.option.ore = Ruda
|
||||||
filter.option.floor2 = Druhotný povrch
|
filter.option.floor2 = Druhotný povrch
|
||||||
@@ -482,6 +483,7 @@ launch.text = Vyslat
|
|||||||
research.multiplayer = Jen hostitel hry může vynalézat nové technologie.
|
research.multiplayer = Jen hostitel hry může vynalézat nové technologie.
|
||||||
uncover = Odkrýt mapu
|
uncover = Odkrýt mapu
|
||||||
configure = Přizpůsobit vybavení
|
configure = Přizpůsobit vybavení
|
||||||
|
#TODO
|
||||||
loadout = Načtení
|
loadout = Načtení
|
||||||
resources = Zdroje
|
resources = Zdroje
|
||||||
bannedblocks = Zakázané bloky
|
bannedblocks = Zakázané bloky
|
||||||
@@ -512,7 +514,7 @@ weather.rain.name = Déšť
|
|||||||
weather.snow.name = Sníh
|
weather.snow.name = Sníh
|
||||||
weather.sandstorm.name = Písečná ouře
|
weather.sandstorm.name = Písečná ouře
|
||||||
weather.sporestorm.name = Spórová bouře
|
weather.sporestorm.name = Spórová bouře
|
||||||
weather.fog.name = Fog
|
weather.fog.name = Mlha
|
||||||
|
|
||||||
sectors.unexplored = [lightgray]Neprozkoumáno
|
sectors.unexplored = [lightgray]Neprozkoumáno
|
||||||
sectors.resources = Zdroje:
|
sectors.resources = Zdroje:
|
||||||
@@ -523,11 +525,13 @@ sectors.launch = Vyslat
|
|||||||
sectors.select = Vybrat
|
sectors.select = Vybrat
|
||||||
sectors.nonelaunch = [lightgray]bez (slunce)[]
|
sectors.nonelaunch = [lightgray]bez (slunce)[]
|
||||||
sectors.rename = Přejmenovat sektor
|
sectors.rename = Přejmenovat sektor
|
||||||
sector.missingresources = [scarlet]Insufficient Core Resources
|
sector.missingresources = [scarlet]Nedostatečné zdroje v jádře[]
|
||||||
|
|
||||||
planet.serpulo.name = Serpulo
|
planet.serpulo.name = Serpulo
|
||||||
|
#TODO better name
|
||||||
planet.sun.name = Sol
|
planet.sun.name = Sol
|
||||||
|
|
||||||
|
#NOTE TO TRANSLATORS: don't bother editing these, they'll be removed and/or rewritten anyway
|
||||||
sector.groundZero.name = Základní tábor
|
sector.groundZero.name = Základní tábor
|
||||||
sector.craters.name = Krátery
|
sector.craters.name = Krátery
|
||||||
sector.frozenForest.name = Zamrzlý les
|
sector.frozenForest.name = Zamrzlý les
|
||||||
@@ -540,6 +544,10 @@ sector.tarFields.name = Dehtová pole
|
|||||||
sector.saltFlats.name = Solné nížiny
|
sector.saltFlats.name = Solné nížiny
|
||||||
sector.fungalPass.name = Plísňový průsmyk
|
sector.fungalPass.name = Plísňový průsmyk
|
||||||
|
|
||||||
|
#unused
|
||||||
|
#sector.impact0078.name = Impact 0078
|
||||||
|
#sector.crags.name = Crags
|
||||||
|
|
||||||
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.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.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.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.
|
||||||
@@ -566,14 +574,13 @@ settings.clear.confirm = Jsi si jistý, že chceš vymazat Tvá data ve hře?\nT
|
|||||||
settings.clearall.confirm = [scarlet]Varování![]\nToto vyresetuje všechna Tvá data ve hře, včetně uložení hry, map, odemknutého postupu v kampani a nastavení ovládání.\nJakmile stiskneš "OK", všechna data se vymažou a hra se automaticky ukončí.
|
settings.clearall.confirm = [scarlet]Varování![]\nToto vyresetuje všechna Tvá data ve hře, včetně uložení hry, map, odemknutého postupu v kampani a nastavení ovládání.\nJakmile stiskneš "OK", všechna data se vymažou a hra se automaticky ukončí.
|
||||||
settings.clearsaves.confirm = Opravdu chceš vymazat veškeré Tvé uložené hry?
|
settings.clearsaves.confirm = Opravdu chceš vymazat veškeré Tvé uložené hry?
|
||||||
settings.clearsaves = Vymazat uložené hry
|
settings.clearsaves = Vymazat uložené hry
|
||||||
settings.clearresearch = Clear Research
|
settings.clearresearch = Vymazat výzkum
|
||||||
settings.clearresearch.confirm = Are you sure you want to clear all of your campaign research?
|
settings.clearresearch.confirm = Jsi si jist, že opravdu chceš vymazat veškerý dosažený výzkum v této kampani?
|
||||||
settings.clearcampaignsaves = Clear Campaign Saves
|
settings.clearcampaignsaves = Vymazat uložené hry kampaně
|
||||||
settings.clearcampaignsaves.confirm = Are you sure you want to clear all of your campaign saves?
|
settings.clearcampaignsaves.confirm = Jsi si jist, že opravdu chceš vymazat všechny uložené hry v této kampani?
|
||||||
paused = [accent]< Pozastaveno >[]
|
paused = [accent]< Pozastaveno >[]
|
||||||
clear = Vyčistit
|
clear = Vyčistit
|
||||||
banned = [scarlet]Zakázán[]
|
banned = [scarlet]Zakázán[]
|
||||||
unplaceable.sectorcaptured = [scarlet]Vyžaduje polapený sektor[]
|
|
||||||
yes = Ano
|
yes = Ano
|
||||||
no = Ne
|
no = Ne
|
||||||
info.title = Informace
|
info.title = Informace
|
||||||
@@ -626,28 +633,30 @@ stat.reload = Střel za 1s
|
|||||||
stat.ammo = Střelivo
|
stat.ammo = Střelivo
|
||||||
stat.shieldhealth = Zdraví štítu
|
stat.shieldhealth = Zdraví štítu
|
||||||
stat.cooldowntime = Čas na zchladnutí
|
stat.cooldowntime = Čas na zchladnutí
|
||||||
stat.explosiveness = Explosiveness
|
stat.explosiveness = Výbušnost
|
||||||
stat.basedeflectchance = Base Deflect Chance
|
stat.basedeflectchance = Základní pravděpobnost odražení
|
||||||
stat.lightningchance = Lightning Chance
|
stat.lightningchance = Pravděpodobnost blesku
|
||||||
stat.lightningdamage = Lightning Damage
|
stat.lightningdamage = Poškození bleskem
|
||||||
stat.flammability = Flammability
|
stat.flammability = Hořlavost
|
||||||
stat.radioactivity = Radioactivity
|
stat.radioactivity = Radioaktivita
|
||||||
stat.heatcapacity = HeatCapacity
|
stat.heatcapacity = Tepelná kapacita
|
||||||
stat.viscosity = Viscosity
|
stat.viscosity = Vazkost
|
||||||
stat.temperature = Temperature
|
stat.temperature = Teplota
|
||||||
stat.speed = Speed
|
stat.speed = Rychlost
|
||||||
stat.buildspeed = Build Speed
|
stat.buildspeed = Rychlost stavění
|
||||||
stat.minespeed = Mine Speed
|
stat.minespeed = Rychlost těžení
|
||||||
stat.minetier = Mine Tier
|
stat.minetier = Těžící úroveň
|
||||||
stat.payloadcapacity = Payload Capacity
|
stat.payloadcapacity = Kapacita pro náklad
|
||||||
stat.commandlimit = Command Limit
|
stat.commandlimit = Limit ovládání
|
||||||
stat.abilities = Abilities
|
stat.abilities = Schopnosti
|
||||||
|
stat.canboost = Umí posilovat
|
||||||
|
stat.flying = Létající
|
||||||
|
|
||||||
ability.forcefield = Force Field
|
ability.forcefield = Silové pole
|
||||||
ability.repairfield = Repair Field
|
ability.repairfield = Opravit pole
|
||||||
ability.statusfield = Status Field
|
ability.statusfield = Stav pole
|
||||||
ability.unitspawn = {0} Factory
|
ability.unitspawn = {0} továrna
|
||||||
ability.shieldregenfield = Shield Regen Field
|
ability.shieldregenfield = Silově opravné pole
|
||||||
|
|
||||||
bar.drilltierreq = Je vyžadován lepší vrt
|
bar.drilltierreq = Je vyžadován lepší vrt
|
||||||
bar.noresources = Chybějí zdroje
|
bar.noresources = Chybějí zdroje
|
||||||
@@ -688,7 +697,7 @@ bullet.multiplier = [stat]{0}[lightgray]x více střel[]
|
|||||||
bullet.reload = [stat]{0}[lightgray]x rychlost střelby[]
|
bullet.reload = [stat]{0}[lightgray]x rychlost střelby[]
|
||||||
|
|
||||||
unit.blocks = bloky
|
unit.blocks = bloky
|
||||||
unit.blockssquared = blocks²
|
unit.blockssquared = bloky²
|
||||||
unit.powersecond = energie/sekunda
|
unit.powersecond = energie/sekunda
|
||||||
unit.liquidsecond = kapalin/sekundu
|
unit.liquidsecond = kapalin/sekundu
|
||||||
unit.itemssecond = předmětů/sekundu
|
unit.itemssecond = předmětů/sekundu
|
||||||
@@ -711,7 +720,7 @@ category.power = Energie
|
|||||||
category.liquids = Kapaliny
|
category.liquids = Kapaliny
|
||||||
category.items = Předměty
|
category.items = Předměty
|
||||||
category.crafting = Vstup/Výstup
|
category.crafting = Vstup/Výstup
|
||||||
category.function = Function
|
category.function = Funkce
|
||||||
category.optional = Volitelné vylepšení
|
category.optional = Volitelné vylepšení
|
||||||
setting.landscape.name = Uzamknout krajinu
|
setting.landscape.name = Uzamknout krajinu
|
||||||
setting.shadows.name = Stíny
|
setting.shadows.name = Stíny
|
||||||
@@ -719,8 +728,9 @@ setting.blockreplace.name = Automatický návrh bloků
|
|||||||
setting.linear.name = Lineární filtrování
|
setting.linear.name = Lineární filtrování
|
||||||
setting.hints.name = Rady a tipy
|
setting.hints.name = Rady a tipy
|
||||||
setting.flow.name = Zobrazit rychlost toku zdroje [scarlet](experimentální)[]
|
setting.flow.name = Zobrazit rychlost toku zdroje [scarlet](experimentální)[]
|
||||||
|
setting.backgroundpause.name = Pozastavit na pozadí
|
||||||
setting.buildautopause.name = Automaticky pozastavit stavění
|
setting.buildautopause.name = Automaticky pozastavit stavění
|
||||||
setting.animatedwater.name = Animované tekutiny
|
setting.animatedwater.name = Animované povrchy
|
||||||
setting.animatedshields.name = Animované štíty
|
setting.animatedshields.name = Animované štíty
|
||||||
setting.antialias.name = Použít antialias [lightgray](vyžaduje restart)[]
|
setting.antialias.name = Použít antialias [lightgray](vyžaduje restart)[]
|
||||||
setting.playerindicators.name = Indikátor pro hráče
|
setting.playerindicators.name = Indikátor pro hráče
|
||||||
|
|||||||
@@ -20,8 +20,8 @@ gameover = Der Kern wurde zerstört.
|
|||||||
gameover.pvp = Das[accent] {0}[] Team ist siegreich!
|
gameover.pvp = Das[accent] {0}[] Team ist siegreich!
|
||||||
highscore = [accent]Neuer Highscore!
|
highscore = [accent]Neuer Highscore!
|
||||||
copied = Kopiert.
|
copied = Kopiert.
|
||||||
indev.popup = [accent]v6[] is currently in [accent]alpha[].\n[lightgray]This means:[]\n[scarlet]- The campaign is completely unfinished[]\n- Content is missing\n - Most [scarlet]Unit AI[] does not work properly\n- Many units are unfinished\n- Everything you see is subject to change or removal.\n\nReport bugs or crashes on [accent]Github[].
|
indev.popup = [accent]v6[] ist gerade in der [accent]Beta-Phase[].\n[lightgray]Das bedeutet:[]\n[scarlet]- Die Kampagne ist unfertig[]\n- Musik/SFX sind unfertig\n- Alles kann jederzeit verändert oder entfernt werden\n\nMelde Bugs und Abstürze auf [accent]Github[].
|
||||||
indev.notready = This part of the game isn't ready yet
|
indev.notready = Dieser Teil vom Spiel ist noch unfertig.
|
||||||
|
|
||||||
load.sound = Audio
|
load.sound = Audio
|
||||||
load.map = Karten
|
load.map = Karten
|
||||||
@@ -55,7 +55,7 @@ schematic.saved = Entwurf gespeichert.
|
|||||||
schematic.delete.confirm = Dieser Entwurf wird vollständig vernichtet.
|
schematic.delete.confirm = Dieser Entwurf wird vollständig vernichtet.
|
||||||
schematic.rename = Entwurf umbenennen
|
schematic.rename = Entwurf umbenennen
|
||||||
schematic.info = {0}x{1}, {2} Blöcke
|
schematic.info = {0}x{1}, {2} Blöcke
|
||||||
schematic.disabled = [scarlet]Schematics disabled[]\nYou are not allowed to use schematics on this [accent]map[] or [accent]server.
|
schematic.disabled = [scarlet]Entwürfe deaktiviert[]\nAuf dieser [accent]Karte[] oder [accent]Server[] dürfen keine Entwürfe verwendet werden.
|
||||||
|
|
||||||
stat.wave = Wellen besiegt:[accent] {0}
|
stat.wave = Wellen besiegt:[accent] {0}
|
||||||
stat.enemiesDestroyed = Gegner zerstört:[accent] {0}
|
stat.enemiesDestroyed = Gegner zerstört:[accent] {0}
|
||||||
@@ -63,15 +63,15 @@ stat.built = Gebäude gebaut:[accent] {0}
|
|||||||
stat.destroyed = Gebäude zerstört:[accent] {0}
|
stat.destroyed = Gebäude zerstört:[accent] {0}
|
||||||
stat.deconstructed = Gebäude abgebaut:[accent] {0}
|
stat.deconstructed = Gebäude abgebaut:[accent] {0}
|
||||||
stat.delivered = Übertragene Ressourcen:
|
stat.delivered = Übertragene Ressourcen:
|
||||||
stat.playtime = Time Played:[accent] {0}
|
stat.playtime = Spielzeit:[accent] {0}
|
||||||
stat.rank = Finaler Rang:[accent] {0}
|
stat.rank = Finaler Rang:[accent] {0}
|
||||||
|
|
||||||
globalitems = [accent]Global Items
|
globalitems = [accent]Globale Items
|
||||||
map.delete = Bist du sicher, dass du die Karte "[accent]{0}[]" löschen möchtest?
|
map.delete = Bist du sicher, dass du die Karte "[accent]{0}[]" löschen möchtest?
|
||||||
level.highscore = Highscore: [accent]{0}
|
level.highscore = Highscore: [accent]{0}
|
||||||
level.select = Level-Auswahl
|
level.select = Level-Auswahl
|
||||||
level.mode = Spielmodus:
|
level.mode = Spielmodus:
|
||||||
coreattack = < Die Basis wird angegriffen! >
|
coreattack = < Der Kern wird angegriffen! >
|
||||||
nearpoint = [[ [scarlet]SOFORT DEN SPAWNPUNKT VERLASSEN[] ]\nVernichtung droht
|
nearpoint = [[ [scarlet]SOFORT DEN SPAWNPUNKT VERLASSEN[] ]\nVernichtung droht
|
||||||
database = Kern-Datenbank
|
database = Kern-Datenbank
|
||||||
savegame = Spiel speichern
|
savegame = Spiel speichern
|
||||||
@@ -107,28 +107,28 @@ mods.guide = Modding-Anleitung
|
|||||||
mods.report = Problem melden
|
mods.report = Problem melden
|
||||||
mods.openfolder = Mod-Verzeichnis öffnen
|
mods.openfolder = Mod-Verzeichnis öffnen
|
||||||
mods.reload = Neu laden
|
mods.reload = Neu laden
|
||||||
mods.reloadexit = The game will now exit, to reload mods.
|
mods.reloadexit = Das Spiel wird jetzt beendet, um die Mod-Änderungen anzuwenden.
|
||||||
mod.display = [gray]Mod:[orange] {0}
|
mod.display = [gray]Mod:[orange] {0}
|
||||||
mod.enabled = [lightgray]Aktiviert
|
mod.enabled = [lightgray]Aktiviert
|
||||||
mod.disabled = [scarlet]Deaktiviert
|
mod.disabled = [scarlet]Deaktiviert
|
||||||
mod.disable = Deaktivieren
|
mod.disable = Deaktivieren
|
||||||
mod.content = Content:
|
mod.content = Inhalt:
|
||||||
mod.delete.error = Unfähig Mod zu löschen. Datei könnte in Benutzung sein.
|
mod.delete.error = Unfähig Mod zu löschen. Datei könnte in Benutzung sein.
|
||||||
mod.requiresversion = [scarlet]Benötigt mindestens Version:[accent] {0}
|
mod.requiresversion = [scarlet]Benötigt mindestens Version:[accent] {0}
|
||||||
mod.outdated = [scarlet]Not compatible with V6 (no minGameVersion: 105)
|
mod.outdated = [scarlet]Nicht mit V6 kompatibel (no minGameVersion: 105)
|
||||||
mod.missingdependencies = [scarlet]Fehlende Abhängigkeiten: {0}
|
mod.missingdependencies = [scarlet]Fehlende Abhängigkeiten: {0}
|
||||||
mod.erroredcontent = [scarlet]Inhalt-Fehler
|
mod.erroredcontent = [scarlet]Inhalt-Fehler
|
||||||
mod.errors = Beim Laden von Inhalt sind Fehler aufgetreten.
|
mod.errors = Beim Laden von Inhalt sind Fehler aufgetreten.
|
||||||
mod.noerrorplay = [scarlet]Du hast Mods mit Fehlern.[] Deaktiviere die Mods oder fixe die Fehler, bevor du spielst.
|
mod.noerrorplay = [scarlet]Du hast Mods mit Fehlern.[] Deaktiviere die Mods oder behebe die Fehler, bevor du spielst.
|
||||||
mod.nowdisabled = [scarlet]Mod '{0}' fehlen Abhängigkeiten:[accent] {1}\n[lightgray]Diese Mods müssen erst installiert werden.\nDieser Mod wird automatisch deaktiviert.
|
mod.nowdisabled = [scarlet]Mod '{0}' fehlen Abhängigkeiten:[accent] {1}\n[lightgray]Diese Mods müssen erst installiert werden.\nDieser Mod wird automatisch deaktiviert.
|
||||||
mod.enable = Aktivieren
|
mod.enable = Aktivieren
|
||||||
mod.requiresrestart = Das Spiel wird jetzt beendet, um die Mod-Änderungen anzuwenden.
|
mod.requiresrestart = Das Spiel wird jetzt beendet, um die Mod-Änderungen anzuwenden.
|
||||||
mod.reloadrequired = [scarlet]Neuladen benötigt
|
mod.reloadrequired = [scarlet]Neuladen benötigt
|
||||||
mod.import = Mod importieren
|
mod.import = Mod importieren
|
||||||
mod.import.file = Import File
|
mod.import.file = Datei importieren
|
||||||
mod.import.github = GitHub-Mod importieren
|
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.jarwarn = [scarlet]JAR Mods sind nicht sicher.[]\nInstalliere nur Mods von vertrauenswürdigen Quellen!
|
||||||
mod.item.remove = This item is part of the[accent] '{0}'[] mod. To remove it, uninstall that mod.
|
mod.item.remove = Dies ist Teil vom [accent] '{0}'[] Mod. Deaktivieren sie diesen Mod, um dies zu entfernen.
|
||||||
mod.remove.confirm = Dieser Mod wird gelöscht.
|
mod.remove.confirm = Dieser Mod wird gelöscht.
|
||||||
mod.author = [lightgray]Autor:[] {0}
|
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.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}
|
||||||
@@ -139,8 +139,8 @@ mod.scripts.disable = Ihr Gerät unterstüzt keine Mods mit Scripts. Du musst di
|
|||||||
about.button = Info
|
about.button = Info
|
||||||
name = Name:
|
name = Name:
|
||||||
noname = Wähle zunächst einen[accent] Spielernamen[].
|
noname = Wähle zunächst einen[accent] Spielernamen[].
|
||||||
planetmap = Planet Map
|
planetmap = Planetenkarte
|
||||||
launchcore = Launch Core
|
launchcore = Kern starten
|
||||||
filename = Dateiname:
|
filename = Dateiname:
|
||||||
unlocked = Neuer Inhalt freigeschaltet!
|
unlocked = Neuer Inhalt freigeschaltet!
|
||||||
completed = [accent]Abgeschlossen
|
completed = [accent]Abgeschlossen
|
||||||
@@ -148,11 +148,11 @@ techtree = Forschung
|
|||||||
research.list = [lightgray]Forschung:
|
research.list = [lightgray]Forschung:
|
||||||
research = Erforschen
|
research = Erforschen
|
||||||
researched = [lightgray]{0} erforscht.
|
researched = [lightgray]{0} erforscht.
|
||||||
research.progress = {0}% complete
|
research.progress = Fortschritt: {0}%
|
||||||
players = {0} Spieler online
|
players = {0} Spieler online
|
||||||
players.single = {0} Spieler online
|
players.single = {0} Spieler online
|
||||||
players.search = search
|
players.search = Suche
|
||||||
players.notfound = [gray]no players found
|
players.notfound = [gray]Keine Spieler gefunden
|
||||||
server.closing = [accent]Schließe den Server ...
|
server.closing = [accent]Schließe den Server ...
|
||||||
server.kicked.kick = Du wurdest vom Server geworfen!
|
server.kicked.kick = Du wurdest vom Server geworfen!
|
||||||
server.kicked.whitelist = Du befindest dich nicht auf der Whitelist des Servers.
|
server.kicked.whitelist = Du befindest dich nicht auf der Whitelist des Servers.
|
||||||
@@ -185,9 +185,9 @@ server.refreshing = Server wird aktualisiert
|
|||||||
hosts.none = [lightgray]Keine LAN-Spiele gefunden!
|
hosts.none = [lightgray]Keine LAN-Spiele gefunden!
|
||||||
host.invalid = [scarlet]Kann keine Verbindung zum Host herstellen.
|
host.invalid = [scarlet]Kann keine Verbindung zum Host herstellen.
|
||||||
|
|
||||||
servers.local = Local Servers
|
servers.local = Lokale Server
|
||||||
servers.remote = Remote Servers
|
servers.remote = Andere Server
|
||||||
servers.global = Community Servers
|
servers.global = Community-Server
|
||||||
|
|
||||||
trace = Spieler verfolgen
|
trace = Spieler verfolgen
|
||||||
trace.playername = Spielername: [accent]{0}
|
trace.playername = Spielername: [accent]{0}
|
||||||
@@ -212,7 +212,7 @@ confirmkick = Bist du sicher, dass du diesen Spieler rauswerfen willst?
|
|||||||
confirmvotekick = Bist du sicher, dass du darüber abstimmen willst, diesen Spieler rauszuwerfen?
|
confirmvotekick = Bist du sicher, dass du darüber abstimmen willst, diesen Spieler rauszuwerfen?
|
||||||
confirmunban = Bist du sicher, dass du die Verbannung des Spielers rückgängig machen willst?
|
confirmunban = Bist du sicher, dass du die Verbannung des Spielers rückgängig machen willst?
|
||||||
confirmadmin = Bist du sicher, dass du diesen Spieler zu einem Administrator machen möchtest?
|
confirmadmin = Bist du sicher, dass du diesen Spieler zu einem Administrator machen möchtest?
|
||||||
confirmunadmin = Bis du sicher, dass dieser Spieler kein Administrator mehr sein soll?
|
confirmunadmin = Bist du sicher, dass dieser Spieler kein Administrator mehr sein soll?
|
||||||
joingame.title = Spiel beitreten
|
joingame.title = Spiel beitreten
|
||||||
joingame.ip = IP:
|
joingame.ip = IP:
|
||||||
disconnect = Verbindung unterbrochen.
|
disconnect = Verbindung unterbrochen.
|
||||||
@@ -269,7 +269,7 @@ copylink = Link kopieren
|
|||||||
back = Zurück
|
back = Zurück
|
||||||
data.export = Daten exportieren
|
data.export = Daten exportieren
|
||||||
data.import = Daten importieren
|
data.import = Daten importieren
|
||||||
data.openfolder = Open Data Folder
|
data.openfolder = Datenordner öffnen
|
||||||
data.exported = Daten exportiert.
|
data.exported = Daten exportiert.
|
||||||
data.invalid = Dies sind keine gültigen Spieldaten.
|
data.invalid = Dies sind keine gültigen Spieldaten.
|
||||||
data.import.confirm = Der Import von externen Daten wird [scarlet] alle[] deine gegenwärtigen Spieldaten löschen.\n[accent]Das kann nicht rückgängig gemacht werden![]Sobald der Import abeschlossen ist, wird dein Spiel sofort beendet.
|
data.import.confirm = Der Import von externen Daten wird [scarlet] alle[] deine gegenwärtigen Spieldaten löschen.\n[accent]Das kann nicht rückgängig gemacht werden![]Sobald der Import abeschlossen ist, wird dein Spiel sofort beendet.
|
||||||
@@ -278,21 +278,21 @@ quit.confirm.tutorial = Weißt du, was du tust?\nDu kannst das Tutorial unter[ac
|
|||||||
loading = [accent]Wird geladen...
|
loading = [accent]Wird geladen...
|
||||||
reloading = [accent]Lade Mods neu...
|
reloading = [accent]Lade Mods neu...
|
||||||
saving = [accent]Speichere...
|
saving = [accent]Speichere...
|
||||||
respawn = [accent][[{0}][] to respawn in core
|
respawn = [accent][[{0}][] um im Kern zu spawnen
|
||||||
cancelbuilding = [accent][[{0}][] um den Plan zu leeren
|
cancelbuilding = [accent][[{0}][] um den Plan zu leeren
|
||||||
selectschematic = [accent][[{0}][] zum Auswählen+Kopieren
|
selectschematic = [accent][[{0}][] zum Auswählen+Kopieren
|
||||||
pausebuilding = [accent][[{0}][] um das Bauen zu pausieren
|
pausebuilding = [accent][[{0}][] um das Bauen zu pausieren
|
||||||
resumebuilding = [scarlet][[{0}][] um das Bauen fortzusetzen
|
resumebuilding = [scarlet][[{0}][] um das Bauen fortzusetzen
|
||||||
wave = [accent]Welle {0}
|
wave = [accent]Welle {0}
|
||||||
wave.cap = [accent]Wave {0}/{1}
|
wave.cap = [accent]Welle {0}/{1}
|
||||||
wave.waiting = Welle in {0}
|
wave.waiting = Welle in {0}
|
||||||
wave.waveInProgress = [lightgray]Welle im Gange
|
wave.waveInProgress = [lightgray]Welle im Gange
|
||||||
waiting = Warten...
|
waiting = Warten...
|
||||||
waiting.players = Warte auf Spieler...
|
waiting.players = Warte auf Spieler...
|
||||||
wave.enemies = [lightgray]{0} Gegner verbleiben
|
wave.enemies = [lightgray]{0} Gegner verbleiben
|
||||||
wave.enemy = [lightgray]{0} Gegner verbleiben
|
wave.enemy = [lightgray]{0} Gegner verbleiben
|
||||||
wave.guardianwarn = Guardian approaching in [accent]{0}[] waves.
|
wave.guardianwarn = Boss erscheint in [accent]{0}[] Wellen.
|
||||||
wave.guardianwarn.one = Guardian approaching in [accent]{0}[] wave.
|
wave.guardianwarn.one = Boss erscheint in [accent]{0}[] Welle.
|
||||||
loadimage = Bild laden
|
loadimage = Bild laden
|
||||||
saveimage = Bild speichern
|
saveimage = Bild speichern
|
||||||
unknown = Unbekannt
|
unknown = Unbekannt
|
||||||
@@ -309,7 +309,7 @@ workshop.error = Fehler beim Laden von Workshop-Details: {0}
|
|||||||
map.publish.confirm = Willst du diese Karte wirklich veröffentlichen?\n\n[lightgray]Vergewissere dich, dass du der Workshop-EULA zugestimmt hast, sonst tauchen deine Karten nicht auf!
|
map.publish.confirm = Willst du diese Karte wirklich veröffentlichen?\n\n[lightgray]Vergewissere dich, dass du der Workshop-EULA zugestimmt hast, sonst tauchen deine Karten nicht auf!
|
||||||
workshop.menu = Wähle aus, was du mit diesem Objekt tun willst.
|
workshop.menu = Wähle aus, was du mit diesem Objekt tun willst.
|
||||||
workshop.info = Objekt-Info
|
workshop.info = Objekt-Info
|
||||||
changelog = Changelog (optional):
|
changelog = Änderungen (optional):
|
||||||
eula = Steam EULA
|
eula = Steam EULA
|
||||||
missing = Dieses Objekt wurde gelöscht oder verschoben.\n[lightgray]Die Workshop-Auflistung ist nun automatisch getrennt worden.
|
missing = Dieses Objekt wurde gelöscht oder verschoben.\n[lightgray]Die Workshop-Auflistung ist nun automatisch getrennt worden.
|
||||||
publishing = [accent]Veröffentlichen...
|
publishing = [accent]Veröffentlichen...
|
||||||
@@ -331,17 +331,17 @@ editor.generation = Generator:
|
|||||||
editor.ingame = Im Spiel Bearbeiten
|
editor.ingame = Im Spiel Bearbeiten
|
||||||
editor.publish.workshop = Im Workshop veröffentlichen
|
editor.publish.workshop = Im Workshop veröffentlichen
|
||||||
editor.newmap = Neue Karte
|
editor.newmap = Neue Karte
|
||||||
editor.center = Center
|
editor.center = Zur Mitte
|
||||||
workshop = Workshop
|
workshop = Workshop
|
||||||
waves.title = Wellen
|
waves.title = Wellen
|
||||||
waves.remove = Entfernen
|
waves.remove = Entfernen
|
||||||
waves.never = <nie>
|
waves.never = <nie>
|
||||||
waves.every = alle
|
waves.every = alle
|
||||||
waves.waves = Welle(n)
|
waves.waves = Welle(n)
|
||||||
waves.perspawn = per Spawn
|
waves.perspawn = pro Spawn
|
||||||
waves.shields = shields/wave
|
waves.shields = Schilder pro Welle
|
||||||
waves.to = bis
|
waves.to = bis
|
||||||
waves.guardian = Guardian
|
waves.guardian = Boss
|
||||||
waves.preview = Vorschau
|
waves.preview = Vorschau
|
||||||
waves.edit = Bearbeiten...
|
waves.edit = Bearbeiten...
|
||||||
waves.copy = Aus der Zwischenablage kopieren
|
waves.copy = Aus der Zwischenablage kopieren
|
||||||
@@ -350,9 +350,9 @@ waves.invalid = Ungültige Wellen in der Zwischenablage.
|
|||||||
waves.copied = Wellen kopiert.
|
waves.copied = Wellen kopiert.
|
||||||
waves.none = Keine Gegner definiert.\nInfo: Leere Wellenentwürfe werden automatisch mit dem Standard-Entwurf ersetzt.
|
waves.none = Keine Gegner definiert.\nInfo: Leere Wellenentwürfe werden automatisch mit dem Standard-Entwurf ersetzt.
|
||||||
|
|
||||||
wavemode.counts = counts
|
wavemode.counts = Menge
|
||||||
wavemode.totals = totals
|
wavemode.totals = Gesamtmenge
|
||||||
wavemode.health = health
|
wavemode.health = Lebenspunkte
|
||||||
|
|
||||||
editor.default = [lightgray]<Standard>
|
editor.default = [lightgray]<Standard>
|
||||||
details = Details
|
details = Details
|
||||||
@@ -419,9 +419,9 @@ toolmode.drawteams.description = Zeichnet Teams statt Blöcke.
|
|||||||
filters.empty = [lightgray]Keine Filter! Füge einen mit dem unteren Knopf hinzu.
|
filters.empty = [lightgray]Keine Filter! Füge einen mit dem unteren Knopf hinzu.
|
||||||
filter.distort = Verzerren
|
filter.distort = Verzerren
|
||||||
filter.noise = Rauschen
|
filter.noise = Rauschen
|
||||||
filter.enemyspawn = Enemy Spawn Select
|
filter.enemyspawn = Gegnerischer Spawn Auswahl
|
||||||
filter.spawnpath = Path To Spawn
|
filter.spawnpath = Weg zum Spawn
|
||||||
filter.corespawn = Core Select
|
filter.corespawn = Kernauswahl
|
||||||
filter.median = Median
|
filter.median = Median
|
||||||
filter.oremedian = Erzmedian
|
filter.oremedian = Erzmedian
|
||||||
filter.blend = Mischen
|
filter.blend = Mischen
|
||||||
@@ -432,7 +432,7 @@ filter.mirror = Spiegel
|
|||||||
filter.clear = Löschen
|
filter.clear = Löschen
|
||||||
filter.option.ignore = Ignorieren
|
filter.option.ignore = Ignorieren
|
||||||
filter.scatter = Streuen
|
filter.scatter = Streuen
|
||||||
filter.terrain = Terrain
|
filter.terrain = Landschaft
|
||||||
filter.option.scale = Skalierung
|
filter.option.scale = Skalierung
|
||||||
filter.option.chance = Wahrscheinlichkeit
|
filter.option.chance = Wahrscheinlichkeit
|
||||||
filter.option.mag = Größe
|
filter.option.mag = Größe
|
||||||
@@ -441,11 +441,11 @@ filter.option.circle-scale = Kreisskalierung
|
|||||||
filter.option.octaves = Oktaven
|
filter.option.octaves = Oktaven
|
||||||
filter.option.falloff = Rückgang
|
filter.option.falloff = Rückgang
|
||||||
filter.option.angle = Winkel
|
filter.option.angle = Winkel
|
||||||
filter.option.amount = Amount
|
filter.option.amount = Menge
|
||||||
filter.option.block = Block
|
filter.option.block = Block
|
||||||
filter.option.floor = Boden
|
filter.option.floor = Boden
|
||||||
filter.option.flooronto = Ziel Boden
|
filter.option.flooronto = Ziel Boden
|
||||||
filter.option.target = Target
|
filter.option.target = Ziel
|
||||||
filter.option.wall = Wand
|
filter.option.wall = Wand
|
||||||
filter.option.ore = Erz
|
filter.option.ore = Erz
|
||||||
filter.option.floor2 = Sekundärer Boden
|
filter.option.floor2 = Sekundärer Boden
|
||||||
@@ -475,18 +475,18 @@ locked = Gesperrt
|
|||||||
complete = [lightgray]Abschließen:
|
complete = [lightgray]Abschließen:
|
||||||
requirement.wave = Erreiche Welle {0} in {1}
|
requirement.wave = Erreiche Welle {0} in {1}
|
||||||
requirement.core = Zerstöre den feindlichen Kern in {0}
|
requirement.core = Zerstöre den feindlichen Kern in {0}
|
||||||
requirement.research = Research {0}
|
requirement.research = Erforsche {0}
|
||||||
requirement.capture = Capture {0}
|
requirement.capture = Erobere {0}
|
||||||
bestwave = [lightgray]Beste Welle: {0}
|
bestwave = [lightgray]Beste Welle: {0}
|
||||||
launch.text = Launch
|
launch.text = Start
|
||||||
research.multiplayer = Only the host can research items.
|
research.multiplayer = Nur der Host kann forschen.
|
||||||
uncover = Freischalten
|
uncover = Freischalten
|
||||||
configure = Startitems festlegen
|
configure = Startitems festlegen
|
||||||
loadout = Loadout
|
loadout = Startitems
|
||||||
resources = Resources
|
resources = Ressourcen
|
||||||
bannedblocks = Gesperrte Blöcke
|
bannedblocks = Gesperrte Blöcke
|
||||||
addall = Alle hinzufügen
|
addall = Alle hinzufügen
|
||||||
launch.destination = Destination: {0}
|
launch.destination = Ziel: {0}
|
||||||
configure.invalid = Anzahl muss eine Zahl zwischen 0 und {0} sein.
|
configure.invalid = Anzahl muss eine Zahl zwischen 0 und {0} sein.
|
||||||
zone.unlocked = [lightgray]{0} freigeschaltet.
|
zone.unlocked = [lightgray]{0} freigeschaltet.
|
||||||
zone.requirement.complete = Welle {0} erreicht:\n{1} Anforderungen der Zone erfüllt.
|
zone.requirement.complete = Welle {0} erreicht:\n{1} Anforderungen der Zone erfüllt.
|
||||||
@@ -495,7 +495,7 @@ zone.objective = [lightgray]Ziel: [accent]{0}
|
|||||||
zone.objective.survival = Überlebe
|
zone.objective.survival = Überlebe
|
||||||
zone.objective.attack = Zerstöre den feindlichen Kern
|
zone.objective.attack = Zerstöre den feindlichen Kern
|
||||||
add = Hinzufügen...
|
add = Hinzufügen...
|
||||||
boss.health = Boss-Lebenskraft
|
boss.health = Boss-Lebenspunkte
|
||||||
|
|
||||||
connectfail = [crimson] Verbindung zum Server konnte nicht hergestellt werden: [accent]{0}
|
connectfail = [crimson] Verbindung zum Server konnte nicht hergestellt werden: [accent]{0}
|
||||||
error.unreachable = Server nicht erreichbar.
|
error.unreachable = Server nicht erreichbar.
|
||||||
@@ -508,25 +508,25 @@ error.io = Netzwerk-I/O-Fehler.
|
|||||||
error.any = Unbekannter Netzwerkfehler.
|
error.any = Unbekannter Netzwerkfehler.
|
||||||
error.bloom = Bloom konnte nicht initialisiert werden.\nEs kann sein, dass dein Gerät es nicht unterstützt.
|
error.bloom = Bloom konnte nicht initialisiert werden.\nEs kann sein, dass dein Gerät es nicht unterstützt.
|
||||||
|
|
||||||
weather.rain.name = Rain
|
weather.rain.name = Regen
|
||||||
weather.snow.name = Snow
|
weather.snow.name = Schnee
|
||||||
weather.sandstorm.name = Sandstorm
|
weather.sandstorm.name = Sandsturm
|
||||||
weather.sporestorm.name = Sporestorm
|
weather.sporestorm.name = Sporensturm
|
||||||
weather.fog.name = Fog
|
weather.fog.name = Nebel
|
||||||
|
|
||||||
sectors.unexplored = [lightgray]Unexplored
|
sectors.unexplored = [lightgray]Unentdeckt
|
||||||
sectors.resources = Resources:
|
sectors.resources = Ressourcen:
|
||||||
sectors.production = Production:
|
sectors.production = Produktion:
|
||||||
sectors.stored = Stored:
|
sectors.stored = Gelagert:
|
||||||
sectors.resume = Resume
|
sectors.resume = Weiterspielen
|
||||||
sectors.launch = Launch
|
sectors.launch = Start
|
||||||
sectors.select = Select
|
sectors.select = Select
|
||||||
sectors.nonelaunch = [lightgray]none (sun)
|
sectors.nonelaunch = [lightgray]none (sun)
|
||||||
sectors.rename = Rename Sector
|
sectors.rename = Sektor umbenennen
|
||||||
sector.missingresources = [scarlet]Insufficient Core Resources
|
sector.missingresources = [scarlet]Fehlende Kernressourcen
|
||||||
|
|
||||||
planet.serpulo.name = Serpulo
|
planet.serpulo.name = Serpulo
|
||||||
planet.sun.name = Sun
|
planet.sun.name = Sonne
|
||||||
|
|
||||||
sector.groundZero.name = Ground Zero
|
sector.groundZero.name = Ground Zero
|
||||||
sector.craters.name = The Craters
|
sector.craters.name = The Craters
|
||||||
@@ -556,7 +556,7 @@ settings.language = Sprache
|
|||||||
settings.data = Spieldaten
|
settings.data = Spieldaten
|
||||||
settings.reset = Auf Standard zurücksetzen
|
settings.reset = Auf Standard zurücksetzen
|
||||||
settings.rebind = Zuweisen
|
settings.rebind = Zuweisen
|
||||||
settings.resetKey = Reset
|
settings.resetKey = Zurücksetzen
|
||||||
settings.controls = Steuerung
|
settings.controls = Steuerung
|
||||||
settings.game = Spiel
|
settings.game = Spiel
|
||||||
settings.sound = Audio
|
settings.sound = Audio
|
||||||
@@ -564,30 +564,30 @@ settings.graphics = Grafik
|
|||||||
settings.cleardata = Spieldaten zurücksetzen...
|
settings.cleardata = Spieldaten zurücksetzen...
|
||||||
settings.clear.confirm = Bist du sicher, dass du die Spieldaten zurücksetzen willst?\n Diese Aktion kann nicht rückgängig gemacht werden!
|
settings.clear.confirm = Bist du sicher, dass du die Spieldaten zurücksetzen willst?\n Diese Aktion kann nicht rückgängig gemacht werden!
|
||||||
settings.clearall.confirm = [scarlet]WARNUNG![]\nDas wird jegliche Spieldaten zurücksetzen, inklusive Speicherstände, Karten, Freischaltungen und Tastenbelegungen.\n Sobald du 'OK' drückst, wird alles zurückgesetzt und das Spiel schließt sich automatisch.
|
settings.clearall.confirm = [scarlet]WARNUNG![]\nDas wird jegliche Spieldaten zurücksetzen, inklusive Speicherstände, Karten, Freischaltungen und Tastenbelegungen.\n Sobald du 'OK' drückst, wird alles zurückgesetzt und das Spiel schließt sich automatisch.
|
||||||
settings.clearsaves.confirm = Are you sure you want to clear all your saves?
|
settings.clearsaves.confirm = Möchtest du wirklich alle Speicherstände löschen?
|
||||||
settings.clearsaves = Clear Saves
|
settings.clearsaves = Speicherstände löschen
|
||||||
settings.clearresearch = Clear Research
|
settings.clearresearch = Erforschungen löschen
|
||||||
settings.clearresearch.confirm = Are you sure you want to clear all of your campaign research?
|
settings.clearresearch.confirm = Möchtest du wirklich alle Erforschungen löschen?
|
||||||
settings.clearcampaignsaves = Clear Campaign Saves
|
settings.clearcampaignsaves = Kampagne-Speicherstände löschen
|
||||||
settings.clearcampaignsaves.confirm = Are you sure you want to clear all of your campaign saves?
|
settings.clearcampaignsaves.confirm = Möchtest du wirklich alle Kampagne-Speicherstände löschen?
|
||||||
paused = [accent]< Pausiert >
|
paused = [accent]< Pausiert >
|
||||||
clear = Leeren
|
clear = Leeren
|
||||||
banned = [scarlet]Verbannt
|
banned = [scarlet]Verbannt
|
||||||
unplaceable.sectorcaptured = [scarlet]Requires captured sector
|
unplaceable.sectorcaptured = [scarlet]Erfordert erforderter Sektor
|
||||||
yes = Ja
|
yes = Ja
|
||||||
no = Nein
|
no = Nein
|
||||||
info.title = Info
|
info.title = Info
|
||||||
error.title = [crimson]Ein Fehler ist aufgetreten
|
error.title = [crimson]Ein Fehler ist aufgetreten
|
||||||
error.crashtitle = Ein Fehler ist aufgetreten!
|
error.crashtitle = Ein Fehler ist aufgetreten!
|
||||||
unit.nobuild = [scarlet]Einheit kann nicht bauen!
|
unit.nobuild = [scarlet]Einheit kann nicht bauen!
|
||||||
lastaccessed = [lightgray]Last Accessed: {0}
|
lastaccessed = [lightgray]Zuletzt konfiguriert: {0}
|
||||||
block.unknown = [lightgray]???
|
block.unknown = [lightgray]???
|
||||||
|
|
||||||
stat.input = Eingang
|
stat.input = Eingang
|
||||||
stat.output = Ausgang
|
stat.output = Ausgang
|
||||||
stat.booster = Verstärkung
|
stat.booster = Verstärkung
|
||||||
stat.tiles = Required Tiles
|
stat.tiles = Erforderte Untergründe
|
||||||
stat.affinities = Affinities
|
stat.affinities = Affinitäten
|
||||||
stat.powercapacity = Kapazität
|
stat.powercapacity = Kapazität
|
||||||
stat.powershot = Stromverbrauch/Schuss
|
stat.powershot = Stromverbrauch/Schuss
|
||||||
stat.damage = Schaden
|
stat.damage = Schaden
|
||||||
@@ -597,16 +597,16 @@ stat.itemsmoved = Bewegungsgeschwindigkeit
|
|||||||
stat.launchtime = Zeit zwischen Starts
|
stat.launchtime = Zeit zwischen Starts
|
||||||
stat.shootrange = Reichweite
|
stat.shootrange = Reichweite
|
||||||
stat.size = Größe
|
stat.size = Größe
|
||||||
stat.displaysize = Display Size
|
stat.displaysize = Bildschirmgröße
|
||||||
stat.liquidcapacity = Flüssigkeitskapazität
|
stat.liquidcapacity = Flüssigkeitskapazität
|
||||||
stat.powerrange = Stromreichweite
|
stat.powerrange = Stromreichweite
|
||||||
stat.linkrange = Link Range
|
stat.linkrange = Verbindungsradius
|
||||||
stat.instructions = Instructions
|
stat.instructions = Befehle
|
||||||
stat.powerconnections = Maximale Stromverbindungen
|
stat.powerconnections = Maximale Stromverbindungen
|
||||||
stat.poweruse = Stromverbrauch
|
stat.poweruse = Stromverbrauch
|
||||||
stat.powerdamage = Stromverbrauch/Schadenspunkt
|
stat.powerdamage = Stromverbrauch/Schadenspunkt
|
||||||
stat.itemcapacity = Materialkapazität
|
stat.itemcapacity = Materialkapazität
|
||||||
stat.memorycapacity = Memory Capacity
|
stat.memorycapacity = Speicherkapazität
|
||||||
stat.basepowergeneration = Basis-Stromerzeugung
|
stat.basepowergeneration = Basis-Stromerzeugung
|
||||||
stat.productiontime = Produktionszeit
|
stat.productiontime = Produktionszeit
|
||||||
stat.repairtime = Zeit zur vollständigen Reparatur
|
stat.repairtime = Zeit zur vollständigen Reparatur
|
||||||
@@ -618,52 +618,52 @@ stat.boosteffect = Verstärkungseffekt
|
|||||||
stat.maxunits = Max. aktive Einheiten
|
stat.maxunits = Max. aktive Einheiten
|
||||||
stat.health = Lebenspunkte
|
stat.health = Lebenspunkte
|
||||||
stat.buildtime = Baudauer
|
stat.buildtime = Baudauer
|
||||||
stat.maxconsecutive = Max Consecutive
|
stat.maxconsecutive = Max. Konsekutive
|
||||||
stat.buildcost = Baukosten
|
stat.buildcost = Baukosten
|
||||||
stat.inaccuracy = Ungenauigkeit
|
stat.inaccuracy = Ungenauigkeit
|
||||||
stat.shots = Schüsse
|
stat.shots = Schüsse
|
||||||
stat.reload = Schüsse/Sekunde
|
stat.reload = Schüsse/Sekunde
|
||||||
stat.ammo = Munition
|
stat.ammo = Munition
|
||||||
stat.shieldhealth = Shield Health
|
stat.shieldhealth = Schildlebenspunkte
|
||||||
stat.cooldowntime = Cooldown Time
|
stat.cooldowntime = Cooldown-Zeit
|
||||||
stat.explosiveness = Explosiveness
|
stat.explosiveness = Sprengkraft
|
||||||
stat.basedeflectchance = Base Deflect Chance
|
stat.basedeflectchance = Grundreflektionschance
|
||||||
stat.lightningchance = Lightning Chance
|
stat.lightningchance = Blitzwahrscheinlichkeit
|
||||||
stat.lightningdamage = Lightning Damage
|
stat.lightningdamage = Blitzschaden
|
||||||
stat.flammability = Flammability
|
stat.flammability = Brennbarkeit
|
||||||
stat.radioactivity = Radioactivity
|
stat.radioactivity = Radioaktivität
|
||||||
stat.heatcapacity = HeatCapacity
|
stat.heatcapacity = Hitzekapazität
|
||||||
stat.viscosity = Viscosity
|
stat.viscosity = Viskosität
|
||||||
stat.temperature = Temperature
|
stat.temperature = Temperatur
|
||||||
stat.speed = Speed
|
stat.speed = Geschwindigkeit
|
||||||
stat.buildspeed = Build Speed
|
stat.buildspeed = Baugeschwindigkeit
|
||||||
stat.minespeed = Mine Speed
|
stat.minespeed = Abbaugeschwindigkeit
|
||||||
stat.minetier = Mine Tier
|
stat.minetier = Abbau-Kraft
|
||||||
stat.payloadcapacity = Payload Capacity
|
stat.payloadcapacity = Payload Capacity
|
||||||
stat.commandlimit = Command Limit
|
stat.commandlimit = Kommandier-Limit
|
||||||
stat.abilities = Abilities
|
stat.abilities = Fähigkeiten
|
||||||
|
|
||||||
ability.forcefield = Force Field
|
ability.forcefield = Kraftfeld
|
||||||
ability.repairfield = Repair Field
|
ability.repairfield = Heilungsfeld
|
||||||
ability.statusfield = Status Field
|
ability.statusfield = Statusfeld
|
||||||
ability.unitspawn = {0} Factory
|
ability.unitspawn = {0} Fabrik
|
||||||
ability.shieldregenfield = Shield Regen Field
|
ability.shieldregenfield = Schild-regenerations-Feld
|
||||||
|
|
||||||
bar.drilltierreq = Besserer Bohrer Benötigt
|
bar.drilltierreq = Besserer Bohrer Benötigt
|
||||||
bar.noresources = Missing Resources
|
bar.noresources = Fehlende Ressourcen
|
||||||
bar.corereq = Core Base Required
|
bar.corereq = Kern-Basis erforderlich
|
||||||
bar.drillspeed = Bohrgeschwindigkeit: {0}/s
|
bar.drillspeed = Bohrgeschwindigkeit: {0}/s
|
||||||
bar.pumpspeed = Pump Speed: {0}/s
|
bar.pumpspeed = Pumpengeschwindigkeit: {0}/s
|
||||||
bar.efficiency = Effizienz: {0}%
|
bar.efficiency = Effizienz: {0}%
|
||||||
bar.powerbalance = Strom: {0}/s
|
bar.powerbalance = Strom: {0}/s
|
||||||
bar.powerstored = Gespeichert: {0}/{1}
|
bar.powerstored = Gespeichert: {0}/{1}
|
||||||
bar.poweramount = Strom: {0}
|
bar.poweramount = Strom: {0}
|
||||||
bar.poweroutput = Stromgenerierung: {0}
|
bar.poweroutput = Stromgenerierung: {0}
|
||||||
bar.powerlines = Connections: {0}/{1}
|
bar.powerlines = Verbindungen: {0}/{1}
|
||||||
bar.items = Items: {0}
|
bar.items = Items: {0}
|
||||||
bar.capacity = Kapazität: {0}
|
bar.capacity = Kapazität: {0}
|
||||||
bar.unitcap = {0} {1}/{2}
|
bar.unitcap = {0} {1}/{2}
|
||||||
bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled]
|
bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[Einheit deaktiviert]
|
||||||
bar.liquid = Flüssigkeit
|
bar.liquid = Flüssigkeit
|
||||||
bar.heat = Hitze
|
bar.heat = Hitze
|
||||||
bar.power = Strom
|
bar.power = Strom
|
||||||
@@ -671,7 +671,7 @@ bar.progress = Baufortschritt
|
|||||||
bar.input = Input
|
bar.input = Input
|
||||||
bar.output = Output
|
bar.output = Output
|
||||||
|
|
||||||
units.processorcontrol = [lightgray]Processor Controlled
|
units.processorcontrol = [lightgray]Prozessorgesteuert
|
||||||
|
|
||||||
bullet.damage = [stat]{0}[lightgray] Schaden
|
bullet.damage = [stat]{0}[lightgray] Schaden
|
||||||
bullet.splashdamage = [stat]{0}[lightgray] Flächenschaden ~[stat] {1}[lightgray] Kacheln
|
bullet.splashdamage = [stat]{0}[lightgray] Flächenschaden ~[stat] {1}[lightgray] Kacheln
|
||||||
@@ -680,15 +680,15 @@ bullet.homing = [stat]zielsuchend
|
|||||||
bullet.shock = [stat]schockend
|
bullet.shock = [stat]schockend
|
||||||
bullet.frag = [stat]explosiv
|
bullet.frag = [stat]explosiv
|
||||||
bullet.knockback = [stat]{0}[lightgray] zurückstoßend
|
bullet.knockback = [stat]{0}[lightgray] zurückstoßend
|
||||||
bullet.pierce = [stat]{0}[lightgray]x pierce
|
bullet.pierce = [stat]{0}[lightgray]x Durchstechkraft
|
||||||
bullet.infinitepierce = [stat]pierce
|
bullet.infinitepierce = [stat]Durchstechkraft
|
||||||
bullet.freezing = [stat]frierend
|
bullet.freezing = [stat]frierend
|
||||||
bullet.tarred = [stat]teerend
|
bullet.tarred = [stat]teerend
|
||||||
bullet.multiplier = [stat]{0}[lightgray]x Munition Multiplikator
|
bullet.multiplier = [stat]{0}[lightgray]x Munition Multiplikator
|
||||||
bullet.reload = [stat]{0}[lightgray]x Feuerrate
|
bullet.reload = [stat]{0}[lightgray]x Feuerrate
|
||||||
|
|
||||||
unit.blocks = Blöcke
|
unit.blocks = Blöcke
|
||||||
unit.blockssquared = blocks²
|
unit.blockssquared = Blöcke²
|
||||||
unit.powersecond = Stromeinheiten/Sekunde
|
unit.powersecond = Stromeinheiten/Sekunde
|
||||||
unit.liquidsecond = Flüssigkeitseinheiten/Sekunde
|
unit.liquidsecond = Flüssigkeitseinheiten/Sekunde
|
||||||
unit.itemssecond = Materialeinheiten/Sekunde
|
unit.itemssecond = Materialeinheiten/Sekunde
|
||||||
@@ -701,29 +701,29 @@ unit.persecond = /sek
|
|||||||
unit.perminute = /min
|
unit.perminute = /min
|
||||||
unit.timesspeed = x Geschwindigkeit
|
unit.timesspeed = x Geschwindigkeit
|
||||||
unit.percent = %
|
unit.percent = %
|
||||||
unit.shieldhealth = shield health
|
unit.shieldhealth = Schildlebenspunkte
|
||||||
unit.items = Materialeinheiten
|
unit.items = Materialeinheiten
|
||||||
unit.thousands = k
|
unit.thousands = k
|
||||||
unit.millions = mil
|
unit.millions = Mio
|
||||||
unit.billions = b
|
unit.billions = Mrd
|
||||||
category.general = Allgemeines
|
category.general = Allgemeines
|
||||||
category.power = Strom
|
category.power = Strom
|
||||||
category.liquids = Flüssigkeiten
|
category.liquids = Flüssigkeiten
|
||||||
category.items = Materialien
|
category.items = Materialien
|
||||||
category.crafting = Erzeugung
|
category.crafting = Erzeugung
|
||||||
category.function = Function
|
category.function = Funktion
|
||||||
category.optional = Optionale Zusätze
|
category.optional = Optionale Zusätze
|
||||||
setting.landscape.name = Landschaft sperren
|
setting.landscape.name = Landschaft sperren
|
||||||
setting.shadows.name = Schatten
|
setting.shadows.name = Schatten
|
||||||
setting.blockreplace.name = Automatische Blockvorschläge
|
setting.blockreplace.name = Automatische Blockvorschläge
|
||||||
setting.linear.name = Lineare Filterung
|
setting.linear.name = Lineare Filterung
|
||||||
setting.hints.name = Tipps
|
setting.hints.name = Tipps
|
||||||
setting.flow.name = Display Resource Flow Rate[scarlet] (experimental)
|
setting.flow.name = Ressourcen-Fluss anzeigen [scarlet] (experimentell)
|
||||||
setting.buildautopause.name = Bauen automatisch pausieren
|
setting.buildautopause.name = Bauen automatisch pausieren
|
||||||
setting.animatedwater.name = Animiertes Wasser
|
setting.animatedwater.name = Animiertes Wasser
|
||||||
setting.animatedshields.name = Animierte Schilde
|
setting.animatedshields.name = Animierte Schilde
|
||||||
setting.antialias.name = Antialias[lightgray] (Neustart erforderlich)[]
|
setting.antialias.name = Antialias[lightgray] (Neustart erforderlich)[]
|
||||||
setting.playerindicators.name = Player Indicators
|
setting.playerindicators.name = Spieler-Indikatoren
|
||||||
setting.indicators.name = Verbündeten-Indikatoren
|
setting.indicators.name = Verbündeten-Indikatoren
|
||||||
setting.autotarget.name = Auto-Zielauswahl
|
setting.autotarget.name = Auto-Zielauswahl
|
||||||
setting.keyboard.name = Maus+Tastatur Steuerung
|
setting.keyboard.name = Maus+Tastatur Steuerung
|
||||||
@@ -742,7 +742,7 @@ setting.difficulty.name = Schwierigkeit:
|
|||||||
setting.screenshake.name = Wackeleffekt
|
setting.screenshake.name = Wackeleffekt
|
||||||
setting.effects.name = Effekte anzeigen
|
setting.effects.name = Effekte anzeigen
|
||||||
setting.destroyedblocks.name = Zerstörte Blöcke anzeigen
|
setting.destroyedblocks.name = Zerstörte Blöcke anzeigen
|
||||||
setting.blockstatus.name = Display Block Status
|
setting.blockstatus.name = Block-Status anzeigen
|
||||||
setting.conveyorpathfinding.name = Automatische Wegfindung beim Bau von Förderbändern
|
setting.conveyorpathfinding.name = Automatische Wegfindung beim Bau von Förderbändern
|
||||||
setting.sensitivity.name = Controller-Empfindlichkeit
|
setting.sensitivity.name = Controller-Empfindlichkeit
|
||||||
setting.saveinterval.name = Autosave-Häufigkeit
|
setting.saveinterval.name = Autosave-Häufigkeit
|
||||||
@@ -751,15 +751,15 @@ setting.blockselecttimeout.name = Block-Auswahl Timeout
|
|||||||
setting.milliseconds = {0} Millisekunden
|
setting.milliseconds = {0} Millisekunden
|
||||||
setting.fullscreen.name = Vollbild
|
setting.fullscreen.name = Vollbild
|
||||||
setting.borderlesswindow.name = Randloses Fenster [lightgray](Neustart vielleicht erforderlich)
|
setting.borderlesswindow.name = Randloses Fenster [lightgray](Neustart vielleicht erforderlich)
|
||||||
setting.fps.name = FPS zeigen
|
setting.fps.name = FPS anzeigen
|
||||||
setting.smoothcamera.name = Smooth Camera
|
setting.smoothcamera.name = Sanfte Kamerabewegungen
|
||||||
setting.vsync.name = VSync
|
setting.vsync.name = VSync
|
||||||
setting.pixelate.name = Verpixeln [lightgray](Könnte die Leistung beeinträchtigen)
|
setting.pixelate.name = Verpixeln [lightgray](Könnte die Leistung beeinträchtigen)
|
||||||
setting.minimap.name = Zeige die Minimap
|
setting.minimap.name = Zeige die Minimap
|
||||||
setting.coreitems.name = Display Core Items (WIP)
|
setting.coreitems.name = Kern-Items anzeigen (WIP)
|
||||||
setting.position.name = Spieler-Position anzeigen
|
setting.position.name = Spieler-Position anzeigen
|
||||||
setting.musicvol.name = Musiklautstärke
|
setting.musicvol.name = Musiklautstärke
|
||||||
setting.atmosphere.name = Show Planet Atmosphere
|
setting.atmosphere.name = Planetatmosphäre zeigen
|
||||||
setting.ambientvol.name = Ambient-Lautstärke
|
setting.ambientvol.name = Ambient-Lautstärke
|
||||||
setting.mutemusic.name = Musik stummschalten
|
setting.mutemusic.name = Musik stummschalten
|
||||||
setting.sfxvol.name = Audioeffekt-Lautstärke
|
setting.sfxvol.name = Audioeffekt-Lautstärke
|
||||||
@@ -767,10 +767,10 @@ setting.mutesound.name = Audioeffekte stummschalten
|
|||||||
setting.crashreport.name = Anonyme Absturzberichte senden
|
setting.crashreport.name = Anonyme Absturzberichte senden
|
||||||
setting.savecreate.name = Automatisch speichern
|
setting.savecreate.name = Automatisch speichern
|
||||||
setting.publichost.name = Öffentliche Sichtbarkeit des Spiels
|
setting.publichost.name = Öffentliche Sichtbarkeit des Spiels
|
||||||
setting.playerlimit.name = Player Limit
|
setting.playerlimit.name = Spielerbegrenzung
|
||||||
setting.chatopacity.name = Chat-Deckkraft
|
setting.chatopacity.name = Chat-Deckkraft
|
||||||
setting.lasersopacity.name = Power-Laser-Deckkraft
|
setting.lasersopacity.name = Power-Laser-Deckkraft
|
||||||
setting.bridgeopacity.name = Bridge Opacity
|
setting.bridgeopacity.name = Brücken-Deckkraft
|
||||||
setting.playerchat.name = Chat im Spiel anzeigen
|
setting.playerchat.name = Chat im Spiel anzeigen
|
||||||
public.confirm = Willst du dein Spiel öffentlich zugänglich machen?\n[accent]Jeder kann deinem Spiel beitreten.\n[lightgray]Dies kann später in den Einstellung->Spielt->Öffentliches Spiel geändert werden.
|
public.confirm = Willst du dein Spiel öffentlich zugänglich machen?\n[accent]Jeder kann deinem Spiel beitreten.\n[lightgray]Dies kann später in den Einstellung->Spielt->Öffentliches Spiel geändert werden.
|
||||||
public.beta = Bemerke: Beta-Versionen des Spiels können keine öffentlichen Spiele machen.
|
public.beta = Bemerke: Beta-Versionen des Spiels können keine öffentlichen Spiele machen.
|
||||||
@@ -782,24 +782,24 @@ keybinds.mobile = [scarlet]Die meisten Tastenzuweisungen hier funktionieren auf
|
|||||||
category.general.name = Allgemein
|
category.general.name = Allgemein
|
||||||
category.view.name = Ansicht
|
category.view.name = Ansicht
|
||||||
category.multiplayer.name = Mehrspieler
|
category.multiplayer.name = Mehrspieler
|
||||||
category.blocks.name = Block Select
|
category.blocks.name = Blockauswahl
|
||||||
command.attack = Angreifen
|
command.attack = Angreifen
|
||||||
command.rally = Patrouillieren
|
command.rally = Patrouillieren
|
||||||
command.retreat = Rückzug
|
command.retreat = Rückzug
|
||||||
command.idle = Idle
|
command.idle = Idle
|
||||||
placement.blockselectkeys = \n[lightgray]Taste: [{0},
|
placement.blockselectkeys = \n[lightgray]Taste: [{0},
|
||||||
keybind.respawn.name = Respawn
|
keybind.respawn.name = Respawn
|
||||||
keybind.control.name = Control Unit
|
keybind.control.name = Einheit steuern
|
||||||
keybind.clear_building.name = Bauplan löschen
|
keybind.clear_building.name = Bauplan löschen
|
||||||
keybind.press = Drücke eine Taste...
|
keybind.press = Drücke eine Taste...
|
||||||
keybind.press.axis = Drücke eine Taste oder bewege eine Achse...
|
keybind.press.axis = Drücke eine Taste oder bewege eine Achse...
|
||||||
keybind.screenshot.name = Karten-Screenshot
|
keybind.screenshot.name = Karten-Screenshot
|
||||||
keybind.toggle_power_lines.name = Power Lasers umschalten
|
keybind.toggle_power_lines.name = Power Lasers umschalten
|
||||||
keybind.toggle_block_status.name = Toggle Block Statuses
|
keybind.toggle_block_status.name = Blockstatus umschalten
|
||||||
keybind.move_x.name = X-Achse
|
keybind.move_x.name = X-Achse
|
||||||
keybind.move_y.name = Y-Achse
|
keybind.move_y.name = Y-Achse
|
||||||
keybind.mouse_move.name = Der Maus folgen
|
keybind.mouse_move.name = Der Maus folgen
|
||||||
keybind.pan.name = Pan View
|
keybind.pan.name = Kamera alleine bewegen
|
||||||
keybind.boost.name = Boost
|
keybind.boost.name = Boost
|
||||||
keybind.schematic_select.name = Bereich auswählen
|
keybind.schematic_select.name = Bereich auswählen
|
||||||
keybind.schematic_menu.name = Entwurfsmenü
|
keybind.schematic_menu.name = Entwurfsmenü
|
||||||
@@ -827,9 +827,9 @@ keybind.diagonal_placement.name = Diagonal platzieren
|
|||||||
keybind.pick.name = Block auswählen
|
keybind.pick.name = Block auswählen
|
||||||
keybind.break_block.name = Block zerstören
|
keybind.break_block.name = Block zerstören
|
||||||
keybind.deselect.name = Auswahl aufheben
|
keybind.deselect.name = Auswahl aufheben
|
||||||
keybind.pickupCargo.name = Pickup Cargo
|
keybind.pickupCargo.name = Block aufheben
|
||||||
keybind.dropCargo.name = Drop Cargo
|
keybind.dropCargo.name = Block fallen lassen
|
||||||
keybind.command.name = Command
|
keybind.command.name = Eineiten kommandieren
|
||||||
keybind.shoot.name = Schießen
|
keybind.shoot.name = Schießen
|
||||||
keybind.zoom.name = Zoomen
|
keybind.zoom.name = Zoomen
|
||||||
keybind.menu.name = Menü
|
keybind.menu.name = Menü
|
||||||
@@ -840,7 +840,7 @@ keybind.chat.name = Chat
|
|||||||
keybind.player_list.name = Spielerliste
|
keybind.player_list.name = Spielerliste
|
||||||
keybind.console.name = Konsole
|
keybind.console.name = Konsole
|
||||||
keybind.rotate.name = Drehen
|
keybind.rotate.name = Drehen
|
||||||
keybind.rotateplaced.name = Rotate Existing (Hold)
|
keybind.rotateplaced.name = Gebauten Block drehen (gedrückt halten)
|
||||||
keybind.toggle_menus.name = Menüs umschalten
|
keybind.toggle_menus.name = Menüs umschalten
|
||||||
keybind.chat_history_prev.name = Chat Historie zurück
|
keybind.chat_history_prev.name = Chat Historie zurück
|
||||||
keybind.chat_history_next.name = Chat Historie vor
|
keybind.chat_history_next.name = Chat Historie vor
|
||||||
@@ -861,14 +861,14 @@ mode.custom = Angepasste Regeln
|
|||||||
|
|
||||||
rules.infiniteresources = Unbegrenzte Ressourcen
|
rules.infiniteresources = Unbegrenzte Ressourcen
|
||||||
rules.reactorexplosions = Reaktor-Explosionen
|
rules.reactorexplosions = Reaktor-Explosionen
|
||||||
rules.schematic = Schematics Allowed
|
rules.schematic = Entwürfe erlaubt
|
||||||
rules.wavetimer = Wellen-Timer
|
rules.wavetimer = Wellen-Timer
|
||||||
rules.waves = Wellen
|
rules.waves = Wellen
|
||||||
rules.attack = Angriff-Modus
|
rules.attack = Angriff-Modus
|
||||||
rules.buildai = AI Building
|
rules.buildai = KI kann bauen
|
||||||
rules.enemyCheat = Unbegrenzte Ressourcen für die KI (Rotes Team)
|
rules.enemyCheat = Unbegrenzte Ressourcen für die KI (Rotes Team)
|
||||||
rules.blockhealthmultiplier = Block Health Multiplier
|
rules.blockhealthmultiplier = Block-Lebenspunkte-Multiplikator
|
||||||
rules.blockdamagemultiplier = Block Damage Multiplier
|
rules.blockdamagemultiplier = Block-Schaden-Multiplikator
|
||||||
rules.unitbuildspeedmultiplier = Baugeschwindigkeit-Einheit Multiplikator
|
rules.unitbuildspeedmultiplier = Baugeschwindigkeit-Einheit Multiplikator
|
||||||
rules.unithealthmultiplier = Lebenspunkte-Einheit Multiplikator
|
rules.unithealthmultiplier = Lebenspunkte-Einheit Multiplikator
|
||||||
rules.unitdamagemultiplier = Schaden-Einheit Multiplikator
|
rules.unitdamagemultiplier = Schaden-Einheit Multiplikator
|
||||||
@@ -876,30 +876,29 @@ rules.enemycorebuildradius = Bauverbot Radius druch feindlichen Kern:[lightgray]
|
|||||||
rules.wavespacing = Wellen-Abstand:[lightgray] (Sek)
|
rules.wavespacing = Wellen-Abstand:[lightgray] (Sek)
|
||||||
rules.buildcostmultiplier = Bau-Kosten Multiplikator
|
rules.buildcostmultiplier = Bau-Kosten Multiplikator
|
||||||
rules.buildspeedmultiplier = Bau-Schnelligkeit Multiplikator
|
rules.buildspeedmultiplier = Bau-Schnelligkeit Multiplikator
|
||||||
rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier
|
rules.deconstructrefundmultiplier = Abbau Ressourcen-Rückerstattung
|
||||||
rules.waitForWaveToEnd = Warten bis Welle endet
|
rules.waitForWaveToEnd = Warten bis Welle endet
|
||||||
rules.dropzoneradius = Drop-Zonen-Radius:[lightgray] (Kacheln)
|
rules.dropzoneradius = Drop-Zonen-Radius:[lightgray] (Kacheln)
|
||||||
rules.unitammo = Units Require Ammo
|
rules.unitammo = Einheiten benötigen Munition
|
||||||
rules.title.waves = Wellen
|
rules.title.waves = Wellen
|
||||||
rules.title.resourcesbuilding = Ressourcen & Gebäude
|
rules.title.resourcesbuilding = Ressourcen & Gebäude
|
||||||
rules.title.enemy = Gegner
|
rules.title.enemy = Gegner
|
||||||
rules.title.unit = Einheiten
|
rules.title.unit = Einheiten
|
||||||
rules.title.experimental = Experimentell
|
rules.title.experimental = Experimentell
|
||||||
rules.title.environment = Environment
|
rules.title.environment = Umgebung
|
||||||
rules.lighting = Lighting
|
rules.lighting = Blitze
|
||||||
rules.enemyLights = Enemy Lights
|
rules.enemyLights = Gegnerisches Licht
|
||||||
rules.fire = Fire
|
rules.fire = Feuer
|
||||||
rules.explosions = Block/Unit Explosion Damage
|
rules.explosions = Explosionsschaden
|
||||||
rules.ambientlight = Ambient Light
|
rules.ambientlight = Umgebungslicht
|
||||||
rules.weather = Weather
|
rules.weather = Wetter
|
||||||
rules.weather.frequency = Frequency:
|
rules.weather.frequency = Häufigkeit:
|
||||||
rules.weather.duration = Duration:
|
rules.weather.duration = Dauer:
|
||||||
|
|
||||||
content.item.name = Materialien
|
content.item.name = Materialien
|
||||||
content.liquid.name = Flüssigkeiten
|
content.liquid.name = Flüssigkeiten
|
||||||
content.unit.name = Einheiten
|
content.unit.name = Einheiten
|
||||||
content.block.name = Blöcke
|
content.block.name = Blöcke
|
||||||
|
|
||||||
item.copper.name = Kupfer
|
item.copper.name = Kupfer
|
||||||
item.lead.name = Blei
|
item.lead.name = Blei
|
||||||
item.coal.name = Kohle
|
item.coal.name = Kohle
|
||||||
@@ -929,11 +928,11 @@ unit.pulsar.name = Pulsar
|
|||||||
unit.quasar.name = Quasar
|
unit.quasar.name = Quasar
|
||||||
unit.crawler.name = Crawler
|
unit.crawler.name = Crawler
|
||||||
unit.atrax.name = Atrax
|
unit.atrax.name = Atrax
|
||||||
unit.spiroct.name = Spiroct
|
unit.spiroct.name = Spirokt
|
||||||
unit.arkyid.name = Arkyid
|
unit.arkyid.name = Arkyid
|
||||||
unit.toxopid.name = Toxopid
|
unit.toxopid.name = Toxopid
|
||||||
unit.flare.name = Flare
|
unit.flare.name = Flare
|
||||||
unit.horizon.name = Horizon
|
unit.horizon.name = Horizont
|
||||||
unit.zenith.name = Zenith
|
unit.zenith.name = Zenith
|
||||||
unit.antumbra.name = Antumbra
|
unit.antumbra.name = Antumbra
|
||||||
unit.eclipse.name = Eclipse
|
unit.eclipse.name = Eclipse
|
||||||
@@ -941,7 +940,7 @@ unit.mono.name = Mono
|
|||||||
unit.poly.name = Poly
|
unit.poly.name = Poly
|
||||||
unit.mega.name = Mega
|
unit.mega.name = Mega
|
||||||
unit.quad.name = Quad
|
unit.quad.name = Quad
|
||||||
unit.oct.name = Oct
|
unit.oct.name = Okt
|
||||||
unit.risso.name = Risso
|
unit.risso.name = Risso
|
||||||
unit.minke.name = Minke
|
unit.minke.name = Minke
|
||||||
unit.bryde.name = Bryde
|
unit.bryde.name = Bryde
|
||||||
@@ -953,31 +952,31 @@ unit.gamma.name = Gamma
|
|||||||
unit.scepter.name = Scepter
|
unit.scepter.name = Scepter
|
||||||
unit.reign.name = Reign
|
unit.reign.name = Reign
|
||||||
unit.vela.name = Vela
|
unit.vela.name = Vela
|
||||||
unit.corvus.name = Corvus
|
unit.corvus.name = Korvus
|
||||||
|
|
||||||
block.resupply-point.name = Resupply Point
|
block.resupply-point.name = Nachlade-Punkt
|
||||||
block.parallax.name = Parallax
|
block.parallax.name = Parallax
|
||||||
block.cliff.name = Cliff
|
block.cliff.name = Klippe
|
||||||
block.sand-boulder.name = Sandbrocken
|
block.sand-boulder.name = Sandbrocken
|
||||||
block.grass.name = Gras
|
block.grass.name = Gras
|
||||||
block.slag.name = Slag
|
block.slag.name = Schlacke
|
||||||
block.space.name = Space
|
block.space.name = Weltall
|
||||||
block.salt.name = Salz
|
block.salt.name = Salz
|
||||||
block.salt-wall.name = Salt Wall
|
block.salt-wall.name = Salzwand
|
||||||
block.pebbles.name = Geröll
|
block.pebbles.name = Geröll
|
||||||
block.tendrils.name = Ranken
|
block.tendrils.name = Ranken
|
||||||
block.sand-wall.name = Sand Wall
|
block.sand-wall.name = Sandwand
|
||||||
block.spore-pine.name = Sporenkiefer
|
block.spore-pine.name = Sporenkiefer
|
||||||
block.spore-wall.name = Spore Wall
|
block.spore-wall.name = Sporenwand
|
||||||
block.boulder.name = Boulder
|
block.boulder.name = Felsbrocken
|
||||||
block.snow-boulder.name = Snow Boulder
|
block.snow-boulder.name = Schneebrocken
|
||||||
block.snow-pine.name = Schnee-Kiefer
|
block.snow-pine.name = Schnee-Kiefer
|
||||||
block.shale.name = Schiefer
|
block.shale.name = Schiefer
|
||||||
block.shale-boulder.name = Schiefergeröll
|
block.shale-boulder.name = Schiefergeröll
|
||||||
block.moss.name = Moos
|
block.moss.name = Moos
|
||||||
block.shrubs.name = Gestrüpp
|
block.shrubs.name = Gestrüpp
|
||||||
block.spore-moss.name = Moossporen
|
block.spore-moss.name = Moossporen
|
||||||
block.shale-wall.name = Shale Wall
|
block.shale-wall.name = Schieferwand
|
||||||
block.scrap-wall.name = Schrottmauer
|
block.scrap-wall.name = Schrottmauer
|
||||||
block.scrap-wall-large.name = Große Schrottmauer
|
block.scrap-wall-large.name = Große Schrottmauer
|
||||||
block.scrap-wall-huge.name = Riesige Schrottmauer
|
block.scrap-wall-huge.name = Riesige Schrottmauer
|
||||||
@@ -993,8 +992,8 @@ block.core-foundation.name = Kern: Fundament
|
|||||||
block.core-nucleus.name = Kern: Nukleus
|
block.core-nucleus.name = Kern: Nukleus
|
||||||
block.deepwater.name = Tiefes Wasser
|
block.deepwater.name = Tiefes Wasser
|
||||||
block.water.name = Wasser
|
block.water.name = Wasser
|
||||||
block.tainted-water.name = Unreines Wasser
|
block.tainted-water.name = Dreckiges Wasser
|
||||||
block.darksand-tainted-water.name = Unreines Wasser (Dunkler Sand)
|
block.darksand-tainted-water.name = Dreckiges Wasser (Dunkler Sand)
|
||||||
block.tar.name = Teer
|
block.tar.name = Teer
|
||||||
block.stone.name = Stein
|
block.stone.name = Stein
|
||||||
block.sand.name = Sand
|
block.sand.name = Sand
|
||||||
@@ -1005,18 +1004,18 @@ block.craters.name = Krater
|
|||||||
block.sand-water.name = Sandiges Wasser
|
block.sand-water.name = Sandiges Wasser
|
||||||
block.darksand-water.name = Dunkles sandiges Wasser
|
block.darksand-water.name = Dunkles sandiges Wasser
|
||||||
block.char.name = Holzkohle
|
block.char.name = Holzkohle
|
||||||
block.dacite.name = Dacite
|
block.dacite.name = Dazit
|
||||||
block.dacite-wall.name = Dacite Wall
|
block.dacite-wall.name = Dazitwand
|
||||||
block.dacite-boulder.name = Dacite Boulder
|
block.dacite-boulder.name = Dazitgeröll
|
||||||
block.ice-snow.name = Eisschnee
|
block.ice-snow.name = Eisschnee
|
||||||
block.stone-wall.name = Stone Wall
|
block.stone-wall.name = Steinwand
|
||||||
block.ice-wall.name = Ice Wall
|
block.ice-wall.name = Eiswand
|
||||||
block.snow-wall.name = Snow Wall
|
block.snow-wall.name = Schneewand
|
||||||
block.dune-wall.name = Dune Wall
|
block.dune-wall.name = Dünenwand
|
||||||
block.pine.name = Kiefer
|
block.pine.name = Kiefer
|
||||||
block.dirt.name = Dirt
|
block.dirt.name = Erde
|
||||||
block.dirt-wall.name = Dirt Wall
|
block.dirt-wall.name = Erdwand
|
||||||
block.mud.name = Mud
|
block.mud.name = Schlamm
|
||||||
block.white-tree-dead.name = Weißer Baum (tot)
|
block.white-tree-dead.name = Weißer Baum (tot)
|
||||||
block.white-tree.name = Weißer Baum
|
block.white-tree.name = Weißer Baum
|
||||||
block.spore-cluster.name = Sporen-Cluster
|
block.spore-cluster.name = Sporen-Cluster
|
||||||
@@ -1054,7 +1053,7 @@ block.hail.name = Hail
|
|||||||
block.lancer.name = Lancer
|
block.lancer.name = Lancer
|
||||||
block.conveyor.name = Förderband
|
block.conveyor.name = Förderband
|
||||||
block.titanium-conveyor.name = Titan-Förderband
|
block.titanium-conveyor.name = Titan-Förderband
|
||||||
block.plastanium-conveyor.name = Plastanium Förderband
|
block.plastanium-conveyor.name = Plastanium-Förderband
|
||||||
block.armored-conveyor.name = Gepanzertes 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.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.junction.name = Kreuzung
|
||||||
@@ -1143,38 +1142,38 @@ block.rtg-generator.name = RTG-Generator
|
|||||||
block.spectre.name = Phantom
|
block.spectre.name = Phantom
|
||||||
block.meltdown.name = Meltdown
|
block.meltdown.name = Meltdown
|
||||||
block.foreshadow.name = Foreshadow
|
block.foreshadow.name = Foreshadow
|
||||||
block.container.name = Container
|
block.container.name = Behälter
|
||||||
block.launch-pad.name = Launchpad
|
block.launch-pad.name = Launchpad
|
||||||
block.launch-pad-large.name = Großes Launchpad
|
block.launch-pad-large.name = Großes Launchpad
|
||||||
block.segment.name = Segment
|
block.segment.name = Segment
|
||||||
block.command-center.name = Command Center
|
block.command-center.name = Kommandozentrale
|
||||||
block.ground-factory.name = Ground Factory
|
block.ground-factory.name = Bodenfabrik
|
||||||
block.air-factory.name = Air Factory
|
block.air-factory.name = Luftfabrik
|
||||||
block.naval-factory.name = Naval Factory
|
block.naval-factory.name = Wasserfabrik
|
||||||
block.additive-reconstructor.name = Additive Reconstructor
|
block.additive-reconstructor.name = Hinzufügender Rekonstrukteur
|
||||||
block.multiplicative-reconstructor.name = Multiplicative Reconstructor
|
block.multiplicative-reconstructor.name = Multiplikativer Rekonstrukteur
|
||||||
block.exponential-reconstructor.name = Exponential Reconstructor
|
block.exponential-reconstructor.name = Exponentieller Rekonstrukteur
|
||||||
block.tetrative-reconstructor.name = Tetrative Reconstructor
|
block.tetrative-reconstructor.name = Tetrativer Rekonstrukteur
|
||||||
block.payload-conveyor.name = Mass Conveyor
|
block.payload-conveyor.name = Einheitenförderband
|
||||||
block.payload-router.name = Payload Router
|
block.payload-router.name = Einheitverteiler
|
||||||
block.disassembler.name = Disassembler
|
block.disassembler.name = Großer Trenner
|
||||||
block.silicon-crucible.name = Silicon Crucible
|
block.silicon-crucible.name = Silizium Schmelztiegel
|
||||||
block.overdrive-dome.name = Overdrive Dome
|
block.overdrive-dome.name = Beschleunigungs-Maschine
|
||||||
|
|
||||||
block.switch.name = Switch
|
block.switch.name = Schalter
|
||||||
block.micro-processor.name = Micro Processor
|
block.micro-processor.name = Mikroprozessor
|
||||||
block.logic-processor.name = Logic Processor
|
block.logic-processor.name = Logikprozessor
|
||||||
block.hyper-processor.name = Hyper Processor
|
block.hyper-processor.name = Hyperprocessor
|
||||||
block.logic-display.name = Logic Display
|
block.logic-display.name = Logik-Bildschirm
|
||||||
block.large-logic-display.name = Large Logic Display
|
block.large-logic-display.name = Großer Logik-Bildschirm
|
||||||
block.memory-cell.name = Memory Cell
|
block.memory-cell.name = Speicherzelle
|
||||||
block.memory-bank.name = Memory Bank
|
block.memory-bank.name = Große Speicherzelle
|
||||||
|
|
||||||
team.blue.name = Blau
|
team.blue.name = Blau
|
||||||
team.crux.name = Rot
|
team.crux.name = Rot
|
||||||
team.sharded.name = Orange
|
team.sharded.name = Orange
|
||||||
team.orange.name = Orange
|
team.orange.name = Orange
|
||||||
team.derelict.name = Derelict
|
team.derelict.name = Derelikt
|
||||||
team.green.name = Grün
|
team.green.name = Grün
|
||||||
team.purple.name = Lila
|
team.purple.name = Lila
|
||||||
|
|
||||||
@@ -1332,4 +1331,4 @@ 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.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.meltdown.description = Ein großer Geschützturm, der starke Strahlen mit großer Reichweite abfeuert.
|
||||||
block.repair-point.description = Heilt durchgehend die nächste befreundete, beschädigte Einheit in der Umgebung.
|
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.
|
block.segment.description = Beschädigt und zerstört gegnerische Projektile. Laser werden nicht anvisiert.
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ link.github.description = Código fuente del juego
|
|||||||
link.changelog.description = Lista de actualizaciones
|
link.changelog.description = Lista de actualizaciones
|
||||||
link.dev-builds.description = Versiones en desarrollo inestables
|
link.dev-builds.description = Versiones en desarrollo inestables
|
||||||
link.trello.description = Tablero de Trello oficial para las características planificadas
|
link.trello.description = Tablero de Trello oficial para las características planificadas
|
||||||
link.itch.io.description = itch.io es la página donde podes descargar las versiones para PC y web
|
link.itch.io.description = itch.io es la página donde podes descargar las versiones para PC y Servidor
|
||||||
link.google-play.description = Página de Mindustry en Google Play Store
|
link.google-play.description = Ficha en la Google Play Store
|
||||||
link.f-droid.description = Página de F-Droid del juego
|
link.f-droid.description = Página de F-Droid del juego
|
||||||
link.wiki.description = Wiki oficial de Mindustry
|
link.wiki.description = Wiki oficial de Mindustry
|
||||||
link.suggestions.description = Sugerir nuevas funciones
|
link.suggestions.description = Sugerir nuevas funciones
|
||||||
@@ -20,8 +20,10 @@ gameover = Tu núcleo ha sido destruido.
|
|||||||
gameover.pvp = ¡El equipo[accent] {0}[] ha ganado!
|
gameover.pvp = ¡El equipo[accent] {0}[] ha ganado!
|
||||||
highscore = [accent]¡Nuevo récord de puntuación!
|
highscore = [accent]¡Nuevo récord de puntuación!
|
||||||
copied = Copiado.
|
copied = Copiado.
|
||||||
indev.popup = La [accent]v6[] esta actualmente en la [accent]alpha[].\n[lightgray]Esto significa:[]\n[scarlet]- La campaña no esta completada[]\n- Falta contenido\n - La mayoría de la [scarlet]Inteligencia Artificial[] no funciona correctamente\n- Muchas unidades no están terminadas\n- Todo lo que ves puede ser modificado o eliminado en la versión final.\n\nReporta bugs o crasheos en [accent]Github[].
|
|
||||||
indev.notready = Esta parte del juego no esta lista aún.
|
indev.popup = [accent]v6[] esta actualmente en [accent]alpha[].\n[lightgray]Esto significa que:[]\n[scarlet]- El modo de campaña no esta totalmente acabado[]\n-Falta contenido dentro del juego\n - Mucha de la [scarlet]AI de enemigos[] no funciona totalmente\n- Algunas unidades todavia no estan acabadas\n- Todo lo que ves es probable que sea cambiado o removido.\n\nReporta bugs o crasheos en [accent]Github[].
|
||||||
|
indev.notready = Esta parte del juego no esta lista todavia.
|
||||||
|
|
||||||
|
|
||||||
load.sound = Sonidos
|
load.sound = Sonidos
|
||||||
load.map = Mapas
|
load.map = Mapas
|
||||||
@@ -125,9 +127,11 @@ mod.enable = Activar
|
|||||||
mod.requiresrestart = El juego se cerrará para aplicar los mods.
|
mod.requiresrestart = El juego se cerrará para aplicar los mods.
|
||||||
mod.reloadrequired = [scarlet]Se requiere actualizar
|
mod.reloadrequired = [scarlet]Se requiere actualizar
|
||||||
mod.import = Importar mod
|
mod.import = Importar mod
|
||||||
|
|
||||||
mod.import.file = Importar archivo
|
mod.import.file = Importar archivo
|
||||||
mod.import.github = Importar Mod de Github
|
mod.import.github = Importar Mod de Github
|
||||||
mod.jarwarn = [scarlet]Los mods JAR pueden ser inseguros.[]\nAsegúrate de que los descargaste de una fuente segura!
|
mod.jarwarn = [scarlet]Los mods JAR pueden ser inseguros.[]\nAsegúrate de que los descargaste de una fuente segura!
|
||||||
|
|
||||||
mod.item.remove = Este objeto es parte del[accent] '{0}'[] mod. Para eliminarlo, desinstala ese mod.
|
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.remove.confirm = Este mod va a ser eliminado.\n¿Quieres continuar?
|
||||||
mod.author = [lightgray]Autor:[] {0}
|
mod.author = [lightgray]Autor:[] {0}
|
||||||
@@ -148,7 +152,7 @@ techtree = Árbol de Tecnologías
|
|||||||
research.list = [lightgray]investigación:
|
research.list = [lightgray]investigación:
|
||||||
research = Investigación
|
research = Investigación
|
||||||
researched = [lightgray]{0} investigado.
|
researched = [lightgray]{0} investigado.
|
||||||
research.progress = {0}% complete
|
research.progress = {0}% completado
|
||||||
players = {0} jugadores online
|
players = {0} jugadores online
|
||||||
players.single = {0} jugador online
|
players.single = {0} jugador online
|
||||||
players.search = buscar
|
players.search = buscar
|
||||||
@@ -278,7 +282,9 @@ quit.confirm.tutorial = ¿Estás seguro de que sabes qué estas haciendo?\nSe pu
|
|||||||
loading = [accent]Cargando...
|
loading = [accent]Cargando...
|
||||||
reloading = [accent]Recargando mods...
|
reloading = [accent]Recargando mods...
|
||||||
saving = [accent]Guardando...
|
saving = [accent]Guardando...
|
||||||
respawn = [accent][[{0}][] para reaparecer en el núcleo
|
|
||||||
|
respawn = [accent][[{0}][] para respawnear en el nucleo
|
||||||
|
|
||||||
cancelbuilding = [accent][[{0}][] para limpiar el plan
|
cancelbuilding = [accent][[{0}][] para limpiar el plan
|
||||||
selectschematic = [accent][[{0}][] para seleccionar+copiar
|
selectschematic = [accent][[{0}][] para seleccionar+copiar
|
||||||
pausebuilding = [accent][[{0}][] para pausar la construcción
|
pausebuilding = [accent][[{0}][] para pausar la construcción
|
||||||
@@ -350,10 +356,12 @@ waves.invalid = Oleadas inválidaas en el portapapeles.
|
|||||||
waves.copied = Oleadas copiadas.
|
waves.copied = Oleadas copiadas.
|
||||||
waves.none = No hay enemigos definidos.\nNótese que las listas de oleadas vacías se sustituirán por la lista por defecto.
|
waves.none = No hay enemigos definidos.\nNótese que las listas de oleadas vacías se sustituirán por la lista por defecto.
|
||||||
|
|
||||||
|
|
||||||
wavemode.counts = Cuentas
|
wavemode.counts = Cuentas
|
||||||
wavemode.totals = Totales
|
wavemode.totals = Totales
|
||||||
wavemode.health = Salud
|
wavemode.health = Salud
|
||||||
|
|
||||||
|
|
||||||
editor.default = [lightgray]<Por defecto>
|
editor.default = [lightgray]<Por defecto>
|
||||||
details = Detalles...
|
details = Detalles...
|
||||||
edit = Editar...
|
edit = Editar...
|
||||||
@@ -512,7 +520,8 @@ weather.rain.name = Lluvia
|
|||||||
weather.snow.name = Nieve
|
weather.snow.name = Nieve
|
||||||
weather.sandstorm.name = Tormenta de arena
|
weather.sandstorm.name = Tormenta de arena
|
||||||
weather.sporestorm.name = Tormenta de esporas
|
weather.sporestorm.name = Tormenta de esporas
|
||||||
weather.fog.name = Fog
|
|
||||||
|
weather.fog.name = Niebla
|
||||||
|
|
||||||
sectors.unexplored = [lightgray]No explorado
|
sectors.unexplored = [lightgray]No explorado
|
||||||
sectors.resources = Recursos:
|
sectors.resources = Recursos:
|
||||||
@@ -523,12 +532,12 @@ sectors.launch = Lanzar
|
|||||||
sectors.select = Elegir
|
sectors.select = Elegir
|
||||||
sectors.nonelaunch = [lightgray]ninguno (sun)
|
sectors.nonelaunch = [lightgray]ninguno (sun)
|
||||||
sectors.rename = Rename Sector
|
sectors.rename = Rename Sector
|
||||||
sector.missingresources = [scarlet]Insufficient Core Resources
|
sector.missingresources = [scarlet]Insuficientes recursos
|
||||||
|
|
||||||
planet.serpulo.name = Serpulo
|
planet.serpulo.name = Serpulo
|
||||||
planet.sun.name = Sun
|
planet.sun.name = Sol
|
||||||
|
|
||||||
sector.groundZero.name = Terreno Zero
|
sector.groundZero.name = Zona de impacto
|
||||||
sector.craters.name = Los Cráteres
|
sector.craters.name = Los Cráteres
|
||||||
sector.frozenForest.name = Bosque Congelado
|
sector.frozenForest.name = Bosque Congelado
|
||||||
sector.ruinousShores.name = Costas Ruinosas
|
sector.ruinousShores.name = Costas Ruinosas
|
||||||
@@ -540,17 +549,18 @@ sector.tarFields.name = Campos de alquitrán
|
|||||||
sector.saltFlats.name = Llanuras de sal
|
sector.saltFlats.name = Llanuras de sal
|
||||||
sector.fungalPass.name = Paso de hongos
|
sector.fungalPass.name = Paso de hongos
|
||||||
|
|
||||||
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.groundZero.description = La ubicación óptima para empezar una vez más. Baja amenaza enemiga. Pocos recursos.\nReúna la mayor cantidad de plomo y cobre posible.\nSiga adelante.
|
||||||
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.frozenForest.description = Incluso aquí, más cerca de las montañas, las esporas se han extendido. Las gélidas temperaturas no pueden contenerlos para siempre.\n\nComienza la aventura hacia el poder. Construye generadores de combustión. Aprenda a usar reparadores.
|
||||||
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.saltFlats.description = En las afueras del desierto se encuentran las Salinas. Se pueden encontrar pocos recursos en esta ubicación.\n\nEl enemigo ha erigido un complejo de almacenamiento de recursos aquí. Erradicar su núcleo. No dejes nada en pie.
|
||||||
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.craters.description = El agua se ha acumulado en este cráter, reliquia de las viejas guerras. Recupere el área. Recoge arena. Fundir metavidrio. Bombee agua para enfriar torretas y taladros.
|
||||||
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.ruinousShores.description = Más allá de los páramos, está la costa. Una vez, esta ubicación albergó una serie de defensa costera. No queda mucho. Solo las estructuras de defensa más básicas han quedado ilesas, todo lo demás reducido a chatarra.\nContinúe la expansión hacia afuera. Redescubra la tecnología.
|
||||||
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.stainedMountains.description = Más tierra adentro se encuentran las montañas, pero no contaminadas por esporas.\nExtraiga el abundante titanio de esta zona. Aprenda como usarlo.\n\nLa presencia enemiga es mayor aquí. No les des tiempo para enviar sus unidades más fuertes.
|
||||||
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.overgrowth.description = Esta área está cubierta de maleza, más cerca de la fuente de las esporas.\nEl enemigo ha establecido un puesto de avanzada aquí. Construye unidades Titán. Destruyelo. Recupera lo que se perdió.
|
||||||
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.tarFields.description = Las afueras de una zona de producción de petróleo, entre la montaña y el desierto. Una de las pocas áreas con reservas de alquitrán utilizables.\nAunque está abandonada, esta zona tiene algunas fuerzas enemigas peligrosas cerca. No los subestimes.\n\n[lightgray]Investigue la tecnología de procesamiento de aceite si es posible.
|
||||||
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.desolateRift.description = Una zona extremadamente peligrosa. Recursos abundantes, pero poco espacio. Alto riesgo de destrucción. Vete lo antes posible. No se deje engañar por el gran intervalo entre los ataques enemigos.
|
||||||
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.
|
sector.nuclearComplex.description = Antigua instalación de producción y procesamiento de torio, reducida a ruinas.\n[lightgray] Investiga el torio y sus múltiples usos.\n\nEl enemigo está presente aquí en gran número, constantemente en busca de atacantes.
|
||||||
|
sector.fungalPass.description = Un área de transición entre montañas altas y tierras bajas plagadas de esporas. Aquí se encuentra una pequeña base de reconocimiento enemiga.\nDestroy it.\nUsa unidades Dagger y Crawler. Saca los dos núcleos de funcionamiento!
|
||||||
|
|
||||||
settings.language = Idioma
|
settings.language = Idioma
|
||||||
settings.data = Datos del Juego
|
settings.data = Datos del Juego
|
||||||
@@ -564,12 +574,14 @@ settings.graphics = Gráficos
|
|||||||
settings.cleardata = Limpiar Datos del Juego...
|
settings.cleardata = Limpiar Datos del Juego...
|
||||||
settings.clear.confirm = ¿Estas seguro de querer limpiar estos datos?\n¡Esta acción no puede deshacerse!
|
settings.clear.confirm = ¿Estas seguro de querer limpiar estos datos?\n¡Esta acción no puede deshacerse!
|
||||||
settings.clearall.confirm = [scarlet]ADVERTENCIA![]\nEsto va a eliminar todos tus datos, incluyendo guardados, mapas, desbloqueos y atajos de teclado.\nUna vez presiones 'ok', el juego va a borrrar todos tus datos y saldrá del juego automáticamente.
|
settings.clearall.confirm = [scarlet]ADVERTENCIA![]\nEsto va a eliminar todos tus datos, incluyendo guardados, mapas, desbloqueos y atajos de teclado.\nUna vez presiones 'ok', el juego va a borrrar todos tus datos y saldrá del juego automáticamente.
|
||||||
|
|
||||||
settings.clearsaves.confirm = Estas seguro de que quieres borrar tus partidas guardadas?
|
settings.clearsaves.confirm = Estas seguro de que quieres borrar tus partidas guardadas?
|
||||||
settings.clearsaves = Limpiar partidas guardadas
|
settings.clearsaves = Limpiar partidas guardadas
|
||||||
settings.clearresearch = Clear Research
|
settings.clearresearch = Borrar descubrimientos
|
||||||
settings.clearresearch.confirm = Are you sure you want to clear all of your campaign research?
|
settings.clearresearch.confirm = Estas seguro?
|
||||||
settings.clearcampaignsaves = Clear Campaign Saves
|
settings.clearcampaignsaves = Borrar Guardados de campaña
|
||||||
settings.clearcampaignsaves.confirm = Are you sure you want to clear all of your campaign saves?
|
settings.clearcampaignsaves.confirm = Estas seguro de que quieres borrar tus partidas guardadas en el modo campaña?
|
||||||
|
|
||||||
paused = [accent] < Pausado >
|
paused = [accent] < Pausado >
|
||||||
clear = Limpiar
|
clear = Limpiar
|
||||||
banned = [scarlet]Baneado
|
banned = [scarlet]Baneado
|
||||||
@@ -579,8 +591,9 @@ no = No
|
|||||||
info.title = [accent]Información
|
info.title = [accent]Información
|
||||||
error.title = [crimson]Un error ha ocurrido.
|
error.title = [crimson]Un error ha ocurrido.
|
||||||
error.crashtitle = Un error ha ocurrido.
|
error.crashtitle = Un error ha ocurrido.
|
||||||
|
|
||||||
unit.nobuild = [scarlet]La unidad no puede construir
|
unit.nobuild = [scarlet]La unidad no puede construir
|
||||||
lastaccessed = [lightgray]Last Accessed: {0}
|
lastaccessed = [lightgray]Anteriormente usado: {0}
|
||||||
block.unknown = [lightgray]???
|
block.unknown = [lightgray]???
|
||||||
|
|
||||||
stat.input = Entrada
|
stat.input = Entrada
|
||||||
@@ -627,31 +640,32 @@ stat.ammo = Munición
|
|||||||
stat.shieldhealth = Salud del escudo
|
stat.shieldhealth = Salud del escudo
|
||||||
stat.cooldowntime = Tiempo de enfriamiento
|
stat.cooldowntime = Tiempo de enfriamiento
|
||||||
stat.explosiveness = Explosiveness
|
stat.explosiveness = Explosiveness
|
||||||
stat.basedeflectchance = Base Deflect Chance
|
stat.basedeflectchance = Probabilidad de desvío base
|
||||||
stat.lightningchance = Lightning Chance
|
stat.lightningchance = Probabilidad de rayo
|
||||||
stat.lightningdamage = Lightning Damage
|
stat.lightningdamage = Daño por rayo
|
||||||
stat.flammability = Flammability
|
stat.flammability = Inflamabilidad
|
||||||
stat.radioactivity = Radioactivity
|
stat.radioactivity = Radiactividad
|
||||||
stat.heatcapacity = HeatCapacity
|
stat.heatcapacity = HeatCapacity
|
||||||
stat.viscosity = Viscosity
|
stat.viscosity = Viscosidad
|
||||||
stat.temperature = Temperature
|
stat.temperature = Temperatura
|
||||||
stat.speed = Speed
|
stat.speed = Velocidad
|
||||||
stat.buildspeed = Build Speed
|
stat.buildspeed = Velocidad de construcción
|
||||||
stat.minespeed = Mine Speed
|
stat.minespeed = Velocidad de la mina
|
||||||
stat.minetier = Mine Tier
|
stat.minetier = Nivel de mina
|
||||||
stat.payloadcapacity = Payload Capacity
|
stat.payloadcapacity = Capacidad de carga útil
|
||||||
stat.commandlimit = Command Limit
|
stat.commandlimit = Límite de comando
|
||||||
stat.abilities = Abilities
|
stat.abilities = Habilidades
|
||||||
|
|
||||||
ability.forcefield = Force Field
|
skill.forcefield = Campo de fuerza
|
||||||
ability.repairfield = Repair Field
|
skill.repairfield = Campo de reparación
|
||||||
ability.statusfield = Status Field
|
skill.statusfield = Campo de estado
|
||||||
ability.unitspawn = {0} Factory
|
skill.unitspawn = {0} Fábrica
|
||||||
ability.shieldregenfield = Shield Regen Field
|
skill.shieldregenfield = Campo de regeneración del escudo
|
||||||
|
|
||||||
bar.drilltierreq = Se requiere un mejor taladro.
|
bar.drilltierreq = Se requiere un mejor taladro.
|
||||||
bar.noresources = Recursos faltantes
|
bar.noresources = Recursos faltantes
|
||||||
bar.corereq = Se requiere de un núcleo base
|
bar.corereq = Se requiere de un núcleo base
|
||||||
|
|
||||||
bar.drillspeed = Velocidad del Taladro: {0}/s
|
bar.drillspeed = Velocidad del Taladro: {0}/s
|
||||||
bar.pumpspeed = Velocidad de bombeado: {0}/s
|
bar.pumpspeed = Velocidad de bombeado: {0}/s
|
||||||
bar.efficiency = Eficiencia: {0}%
|
bar.efficiency = Eficiencia: {0}%
|
||||||
@@ -701,7 +715,9 @@ unit.persecond = /seg
|
|||||||
unit.perminute = /min
|
unit.perminute = /min
|
||||||
unit.timesspeed = x velocidad
|
unit.timesspeed = x velocidad
|
||||||
unit.percent = %
|
unit.percent = %
|
||||||
unit.shieldhealth = salud del escudo
|
|
||||||
|
unit.shieldhealth = Vida del escudo
|
||||||
|
|
||||||
unit.items = objetos
|
unit.items = objetos
|
||||||
unit.thousands = k
|
unit.thousands = k
|
||||||
unit.millions = M
|
unit.millions = M
|
||||||
@@ -718,8 +734,10 @@ setting.shadows.name = Sombras
|
|||||||
setting.blockreplace.name = Sugerir bloques al construir
|
setting.blockreplace.name = Sugerir bloques al construir
|
||||||
setting.linear.name = Filtrado Lineal
|
setting.linear.name = Filtrado Lineal
|
||||||
setting.hints.name = Pistas
|
setting.hints.name = Pistas
|
||||||
setting.flow.name = Mostrar flujo de recursos[scarlet] (experimental)
|
|
||||||
|
setting.flow.name = Mostrar tasa de flujo de recursos[scarlet] (experimental)
|
||||||
setting.buildautopause.name = Auto-pausar construcción
|
setting.buildautopause.name = Auto-pausar construcción
|
||||||
|
|
||||||
setting.animatedwater.name = Agua Animada
|
setting.animatedwater.name = Agua Animada
|
||||||
setting.animatedshields.name = Escudos Animados
|
setting.animatedshields.name = Escudos Animados
|
||||||
setting.antialias.name = Antialias[lightgray] (necesita un reinicio)[]
|
setting.antialias.name = Antialias[lightgray] (necesita un reinicio)[]
|
||||||
@@ -753,13 +771,15 @@ setting.fullscreen.name = Pantalla Completa
|
|||||||
setting.borderlesswindow.name = Ventana sin Bordes[lightgray] (podría requerir un reinicio)
|
setting.borderlesswindow.name = Ventana sin Bordes[lightgray] (podría requerir un reinicio)
|
||||||
setting.fps.name = Mostrar FPS
|
setting.fps.name = Mostrar FPS
|
||||||
setting.smoothcamera.name = Cámara suave
|
setting.smoothcamera.name = Cámara suave
|
||||||
|
|
||||||
|
|
||||||
setting.vsync.name = Vsync (Limita los fps a los Hz de tu pantalla)
|
setting.vsync.name = Vsync (Limita los fps a los Hz de tu pantalla)
|
||||||
setting.pixelate.name = Pixelar [lightgray](podría reducir el rendimiento)
|
setting.pixelate.name = Pixelar [lightgray](podría reducir el rendimiento)
|
||||||
setting.minimap.name = Mostrar Minimapa
|
setting.minimap.name = Mostrar Minimapa
|
||||||
setting.coreitems.name = Display Core Items (WIP)
|
setting.coreitems.name = Mostrar elementos en el nucleo (WIP)
|
||||||
setting.position.name = Mostrar posición del jugador.
|
setting.position.name = Mostrar posición del jugador.
|
||||||
setting.musicvol.name = Volumen de la Música
|
setting.musicvol.name = Volumen de la Música
|
||||||
setting.atmosphere.name = Show Planet Atmosphere
|
setting.atmosphere.name = Mostrar atmosfera del planeta
|
||||||
setting.ambientvol.name = Volumen del Ambiente
|
setting.ambientvol.name = Volumen del Ambiente
|
||||||
setting.mutemusic.name = Silenciar Musica
|
setting.mutemusic.name = Silenciar Musica
|
||||||
setting.sfxvol.name = Volumen de los efectos de sonido
|
setting.sfxvol.name = Volumen de los efectos de sonido
|
||||||
@@ -799,8 +819,10 @@ keybind.toggle_block_status.name = Cambiar estado de los bloques
|
|||||||
keybind.move_x.name = Mover x
|
keybind.move_x.name = Mover x
|
||||||
keybind.move_y.name = Mover y
|
keybind.move_y.name = Mover y
|
||||||
keybind.mouse_move.name = Seguír al ratón
|
keybind.mouse_move.name = Seguír al ratón
|
||||||
keybind.pan.name = Vista Pan
|
|
||||||
keybind.boost.name = Potenciar
|
keybind.pan.name = Vista panorámica
|
||||||
|
keybind.boost.name = Impulsar
|
||||||
|
|
||||||
keybind.schematic_select.name = Seleccionar región
|
keybind.schematic_select.name = Seleccionar región
|
||||||
keybind.schematic_menu.name = Menu de esquemas
|
keybind.schematic_menu.name = Menu de esquemas
|
||||||
keybind.schematic_flip_x.name = Girar esquemático desde X
|
keybind.schematic_flip_x.name = Girar esquemático desde X
|
||||||
@@ -850,7 +872,7 @@ keybind.zoom_minimap.name = Zoom del minimapa
|
|||||||
mode.help.title = Descripción de modos
|
mode.help.title = Descripción de modos
|
||||||
mode.survival.name = Supervivencia
|
mode.survival.name = Supervivencia
|
||||||
mode.survival.description = El modo normal. Recursos limitados y oleadas automáticas.
|
mode.survival.description = El modo normal. Recursos limitados y oleadas automáticas.
|
||||||
mode.sandbox.name = Caja de arena
|
mode.sandbox.name = Arenero
|
||||||
mode.sandbox.description = Recursos ilimitados y sin temporizador para las oleadas.
|
mode.sandbox.description = Recursos ilimitados y sin temporizador para las oleadas.
|
||||||
mode.editor.name = Editor
|
mode.editor.name = Editor
|
||||||
mode.pvp.name = JcJ
|
mode.pvp.name = JcJ
|
||||||
@@ -865,10 +887,10 @@ rules.schematic = Schematics Allowed
|
|||||||
rules.wavetimer = Temportzador de Oleadas
|
rules.wavetimer = Temportzador de Oleadas
|
||||||
rules.waves = Oleadas
|
rules.waves = Oleadas
|
||||||
rules.attack = Modo de Ataque
|
rules.attack = Modo de Ataque
|
||||||
rules.buildai = AI Building
|
rules.buildai = Construccion de la IA
|
||||||
rules.enemyCheat = Recursos infinitos de la IA
|
rules.enemyCheat = Recursos infinitos de la IA
|
||||||
rules.blockhealthmultiplier = Multiplicador de salud de bloque
|
rules.blockhealthmultiplier = Multiplicador de salud de bloque
|
||||||
rules.blockdamagemultiplier = Block Damage Multiplier
|
rules.blockdamagemultiplier = Multiplicador de daño de bloque
|
||||||
rules.unitbuildspeedmultiplier = Multiplicador de velocidad de creación de unidades
|
rules.unitbuildspeedmultiplier = Multiplicador de velocidad de creación de unidades
|
||||||
rules.unithealthmultiplier = Multiplicador de la vida de las unidades
|
rules.unithealthmultiplier = Multiplicador de la vida de las unidades
|
||||||
rules.unitdamagemultiplier = Multiplicador del daño de unidades
|
rules.unitdamagemultiplier = Multiplicador del daño de unidades
|
||||||
@@ -885,15 +907,17 @@ rules.title.resourcesbuilding = Recursos y Construcción
|
|||||||
rules.title.enemy = Enemigos
|
rules.title.enemy = Enemigos
|
||||||
rules.title.unit = Unidades
|
rules.title.unit = Unidades
|
||||||
rules.title.experimental = Experimental
|
rules.title.experimental = Experimental
|
||||||
|
|
||||||
rules.title.environment = Entorno
|
rules.title.environment = Entorno
|
||||||
rules.lighting = Iluminación
|
rules.lighting = Iluminación
|
||||||
rules.enemyLights = Enemy Lights
|
rules.enemyLights = Luces enemigas
|
||||||
rules.fire = Fire
|
rules.fire = Fuego
|
||||||
rules.explosions = Daño de explosiones de Bloques/Unidades
|
rules.explosions = Daño de explosiones de Bloques/Unidades
|
||||||
rules.ambientlight = Iluminación ambiental
|
rules.ambientlight = Iluminación ambiental
|
||||||
rules.weather = Clima
|
rules.weather = Clima
|
||||||
rules.weather.frequency = Frecuencia:
|
rules.weather.frequency = Frequencia:
|
||||||
rules.weather.duration = Duración:
|
rules.weather.duration = Duracion:
|
||||||
|
|
||||||
|
|
||||||
content.item.name = Objetos
|
content.item.name = Objetos
|
||||||
content.liquid.name = Líquidos
|
content.liquid.name = Líquidos
|
||||||
@@ -921,6 +945,7 @@ liquid.slag.name = Fundido
|
|||||||
liquid.oil.name = Petróleo
|
liquid.oil.name = Petróleo
|
||||||
liquid.cryofluid.name = Criogénico
|
liquid.cryofluid.name = Criogénico
|
||||||
|
|
||||||
|
|
||||||
unit.dagger.name = Daga
|
unit.dagger.name = Daga
|
||||||
unit.mace.name = Mazo
|
unit.mace.name = Mazo
|
||||||
unit.fortress.name = Fortaleza
|
unit.fortress.name = Fortaleza
|
||||||
@@ -931,10 +956,10 @@ unit.crawler.name = Oruga
|
|||||||
unit.atrax.name = Atrax
|
unit.atrax.name = Atrax
|
||||||
unit.spiroct.name = Spiroct
|
unit.spiroct.name = Spiroct
|
||||||
unit.arkyid.name = Arkyid
|
unit.arkyid.name = Arkyid
|
||||||
unit.toxopid.name = Toxopid
|
unit.toxopid.name = Toxopodo
|
||||||
unit.flare.name = Llama
|
unit.flare.name = Bengala
|
||||||
unit.horizon.name = Horizonte
|
unit.horizon.name = Horizonte
|
||||||
unit.zenith.name = Zenith
|
unit.zenith.name = Cenit
|
||||||
unit.antumbra.name = Antumbra
|
unit.antumbra.name = Antumbra
|
||||||
unit.eclipse.name = Eclipse
|
unit.eclipse.name = Eclipse
|
||||||
unit.mono.name = Mono
|
unit.mono.name = Mono
|
||||||
@@ -956,28 +981,34 @@ unit.vela.name = Vela
|
|||||||
unit.corvus.name = Corvo
|
unit.corvus.name = Corvo
|
||||||
|
|
||||||
block.resupply-point.name = Punto de reabastecimiento
|
block.resupply-point.name = Punto de reabastecimiento
|
||||||
block.parallax.name = Parallax
|
|
||||||
|
block.parallax.name = Paralaje
|
||||||
block.cliff.name = Acantilado
|
block.cliff.name = Acantilado
|
||||||
|
|
||||||
block.sand-boulder.name = Piedra de Arena
|
block.sand-boulder.name = Piedra de Arena
|
||||||
block.grass.name = Hierba
|
block.grass.name = Hierba
|
||||||
block.slag.name = Escoria
|
block.slag.name = Escoria
|
||||||
block.space.name = Space
|
block.space.name = Space
|
||||||
block.salt.name = Sal
|
block.salt.name = Sal
|
||||||
block.salt-wall.name = Pared de sal
|
|
||||||
|
block.salt-wall.name = Muro de sal
|
||||||
block.pebbles.name = Guijarros
|
block.pebbles.name = Guijarros
|
||||||
block.tendrils.name = Zarcillos
|
block.tendrils.name = Zarcillos
|
||||||
block.sand-wall.name = Pared de arena
|
block.sand-wall.name = Muro de arena
|
||||||
block.spore-pine.name = Pino de esporas
|
block.spore-pine.name = Pino de esporas
|
||||||
block.spore-wall.name = Pared de esporas
|
block.spore-wall.name = Muro de esporas
|
||||||
block.boulder.name = Boulder
|
block.boulder.name = Roca
|
||||||
block.snow-boulder.name = Piedra nevosa
|
block.snow-boulder.name = Roca de nieve
|
||||||
|
|
||||||
block.snow-pine.name = Pino de nieve
|
block.snow-pine.name = Pino de nieve
|
||||||
block.shale.name = Pizarra
|
block.shale.name = Pizarra
|
||||||
block.shale-boulder.name = Piedra de Pizarra
|
block.shale-boulder.name = Piedra de Pizarra
|
||||||
block.moss.name = Musgo
|
block.moss.name = Musgo
|
||||||
block.shrubs.name = Arbustos
|
block.shrubs.name = Arbustos
|
||||||
block.spore-moss.name = Musgo de esporas
|
block.spore-moss.name = Musgo de esporas
|
||||||
block.shale-wall.name = Pared de shale
|
|
||||||
|
block.shale-wall.name = Muro de pizarra
|
||||||
|
|
||||||
block.scrap-wall.name = Muro de Chatarra
|
block.scrap-wall.name = Muro de Chatarra
|
||||||
block.scrap-wall-large.name = Muro de Chatarra grande
|
block.scrap-wall-large.name = Muro de Chatarra grande
|
||||||
block.scrap-wall-huge.name = Muro de Chatarra muy grande
|
block.scrap-wall-huge.name = Muro de Chatarra muy grande
|
||||||
@@ -1148,33 +1179,39 @@ block.launch-pad.name = Pad de Lanzamiento
|
|||||||
block.launch-pad-large.name = Pad de Lanzamiento Grande
|
block.launch-pad-large.name = Pad de Lanzamiento Grande
|
||||||
block.segment.name = Segmento
|
block.segment.name = Segmento
|
||||||
block.command-center.name = Centro de comando
|
block.command-center.name = Centro de comando
|
||||||
|
|
||||||
block.ground-factory.name = Fábrica terrestre
|
block.ground-factory.name = Fábrica terrestre
|
||||||
block.air-factory.name = Fábrica aérea
|
block.air-factory.name = Fábrica aérea
|
||||||
|
|
||||||
block.naval-factory.name = Fábrica naval
|
block.naval-factory.name = Fábrica naval
|
||||||
block.additive-reconstructor.name = Reconstructor aditivo
|
block.additive-reconstructor.name = Reconstructor aditivo
|
||||||
block.multiplicative-reconstructor.name = Reconstructor multiplicativo
|
block.multiplicative-reconstructor.name = Reconstructor multiplicativo
|
||||||
block.exponential-reconstructor.name = Reconstructor exponencial
|
block.exponential-reconstructor.name = Reconstructor exponencial
|
||||||
block.tetrative-reconstructor.name = Reconstructor tetrativo
|
block.tetrative-reconstructor.name = Reconstructor tetrativo
|
||||||
block.payload-conveyor.name = Cinta de transporte masivo
|
|
||||||
block.payload-router.name = Enrutador Payload
|
|
||||||
block.disassembler.name = Desmontador
|
|
||||||
block.silicon-crucible.name = Crisol de Silicio
|
|
||||||
block.overdrive-dome.name = Domo de sobremarcha
|
|
||||||
|
|
||||||
block.switch.name = Cambio
|
block.payload-conveyor.name = Transportador masivo
|
||||||
block.micro-processor.name = Micro Procesador
|
block.payload-router.name = Enrutador de carga útil
|
||||||
block.logic-processor.name = Procesador Lógico
|
block.disassembler.name = Desensamblador
|
||||||
block.hyper-processor.name = Hiper Procesador
|
block.silicon-crucible.name = Crisol de silicio
|
||||||
block.logic-display.name = Pantalla Lógica
|
block.overdrive-dome.name = Cupula de sobremarcha
|
||||||
block.large-logic-display.name = Pantalla Lógica grande
|
|
||||||
block.memory-cell.name = Célula de memoria
|
block.switch.name = Interruptor
|
||||||
block.memory-bank.name = Memory Bank
|
block.micro-processor.name = Micro Processador
|
||||||
|
block.logic-processor.name = Procesador lógico
|
||||||
|
block.hyper-processor.name = Hiperprocesador
|
||||||
|
block.logic-display.name = Pantalla lógica
|
||||||
|
block.large-logic-display.name = Gran pantalla lógica
|
||||||
|
block.memory-cell.name = Celda de memoria
|
||||||
|
block.memory-bank.name = Banco de memoria
|
||||||
|
|
||||||
|
|
||||||
team.blue.name = Azul
|
team.blue.name = Azul
|
||||||
team.crux.name = rojo
|
team.crux.name = rojo
|
||||||
team.sharded.name = naranja
|
team.sharded.name = naranja
|
||||||
team.orange.name = Naranja
|
team.orange.name = Naranja
|
||||||
team.derelict.name = Abandonado
|
|
||||||
|
team.derelict.name = derelicto
|
||||||
|
|
||||||
team.green.name = Verde
|
team.green.name = Verde
|
||||||
team.purple.name = Púrpura
|
team.purple.name = Púrpura
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ gameover.pvp = [accent] {0}[] joukkue voittaa!
|
|||||||
highscore = [accent]Uusi ennätys!
|
highscore = [accent]Uusi ennätys!
|
||||||
copied = Kopioitu.
|
copied = Kopioitu.
|
||||||
indev.popup = [accent]v6[] is currently in [accent]alpha[].\n[lightgray]This means:[]\n[scarlet]- The campaign is completely unfinished[]\n- Content is missing\n - Most [scarlet]Unit AI[] does not work properly\n- Many units are unfinished\n- Everything you see is subject to change or removal.\n\nReport bugs or crashes on [accent]Github[].
|
indev.popup = [accent]v6[] is currently in [accent]alpha[].\n[lightgray]This means:[]\n[scarlet]- The campaign is completely unfinished[]\n- Content is missing\n - Most [scarlet]Unit AI[] does not work properly\n- Many units are unfinished\n- Everything you see is subject to change or removal.\n\nReport bugs or crashes on [accent]Github[].
|
||||||
indev.notready = This part of the game isn't ready yet
|
indev.notready = Tämä osa peliä ei ole vielä valmis
|
||||||
|
|
||||||
load.sound = Ääniä
|
load.sound = Ääniä
|
||||||
load.map = Karttoja
|
load.map = Karttoja
|
||||||
@@ -42,7 +42,7 @@ schematic = Kaavio
|
|||||||
schematic.add = Tallenna kaavio...
|
schematic.add = Tallenna kaavio...
|
||||||
schematics = Kaaviot
|
schematics = Kaaviot
|
||||||
schematic.replace = Kaavio tällä nimellä on jo olemassa. Haluatko korvata sen?
|
schematic.replace = Kaavio tällä nimellä on jo olemassa. Haluatko korvata sen?
|
||||||
schematic.exists = A schematic by that name already exists.
|
schematic.exists = Kaavio tällä nimellä on jo olemassa.
|
||||||
schematic.import = Tuo kaavio...
|
schematic.import = Tuo kaavio...
|
||||||
schematic.exportfile = Vie tiedosto
|
schematic.exportfile = Vie tiedosto
|
||||||
schematic.importfile = Tuo tiedosto
|
schematic.importfile = Tuo tiedosto
|
||||||
@@ -55,7 +55,7 @@ schematic.saved = Kaavio tallennettu.
|
|||||||
schematic.delete.confirm = Tämä kaavio poistetaan.
|
schematic.delete.confirm = Tämä kaavio poistetaan.
|
||||||
schematic.rename = Nimeä kaavio uudelleen
|
schematic.rename = Nimeä kaavio uudelleen
|
||||||
schematic.info = {0}x{1}, {2} palikkaa
|
schematic.info = {0}x{1}, {2} palikkaa
|
||||||
schematic.disabled = [scarlet]Schematics disabled[]\nYou are not allowed to use schematics on this [accent]map[] or [accent]server.
|
schematic.disabled = [scarlet]Kaaviot poistettu käytöstä[]\nEt pysty käyttämään kaavioita tällä [accent]kartalla[] tai [accent]palvelimella.
|
||||||
|
|
||||||
stat.wave = Tasoja voitettu:[accent] {0}
|
stat.wave = Tasoja voitettu:[accent] {0}
|
||||||
stat.enemiesDestroyed = Vihollisia tuhottu:[accent] {0}
|
stat.enemiesDestroyed = Vihollisia tuhottu:[accent] {0}
|
||||||
@@ -63,7 +63,7 @@ stat.built = Rakennuksia rakennettu:[accent] {0}
|
|||||||
stat.destroyed = Rakennuksia tuhottu:[accent] {0}
|
stat.destroyed = Rakennuksia tuhottu:[accent] {0}
|
||||||
stat.deconstructed = Rakennuksia purettu:[accent] {0}
|
stat.deconstructed = Rakennuksia purettu:[accent] {0}
|
||||||
stat.delivered = Resursseja laukaistu:
|
stat.delivered = Resursseja laukaistu:
|
||||||
stat.playtime = Time Played:[accent] {0}
|
stat.playtime = Pelattu aika:[accent] {0}
|
||||||
stat.rank = Lopullinen arvosana: [accent]{0}
|
stat.rank = Lopullinen arvosana: [accent]{0}
|
||||||
|
|
||||||
globalitems = [accent]Global Items
|
globalitems = [accent]Global Items
|
||||||
@@ -236,8 +236,8 @@ save.delete.confirm = Oletko varma että haluat poistaa tämän tallennuksen?
|
|||||||
save.delete = Poista
|
save.delete = Poista
|
||||||
save.export = Vie tallennus
|
save.export = Vie tallennus
|
||||||
save.import.invalid = [accent]This save is invalid!
|
save.import.invalid = [accent]This save is invalid!
|
||||||
save.import.fail = [crimson]Failed to import save: [accent]{0}
|
save.import.fail = [crimson]Tallennuksen tuominen epäonnistui: [accent]{0}
|
||||||
save.export.fail = [crimson]Failed to export save: [accent]{0}
|
save.export.fail = [crimson]Tallennuksen vieminen epäonnistui: [accent]{0}
|
||||||
save.import = Tuo tallennus
|
save.import = Tuo tallennus
|
||||||
save.newslot = Tallennuksen nimi:
|
save.newslot = Tallennuksen nimi:
|
||||||
save.rename = Nimeä uudelleen
|
save.rename = Nimeä uudelleen
|
||||||
|
|||||||
@@ -284,15 +284,15 @@ selectschematic = [accent][[{0}][] pour sélectionner et copier
|
|||||||
pausebuilding = [accent][[{0}][] pour mettre la construction en pause
|
pausebuilding = [accent][[{0}][] pour mettre la construction en pause
|
||||||
resumebuilding = [scarlet][[{0}][] pour reprendre la construction
|
resumebuilding = [scarlet][[{0}][] pour reprendre la construction
|
||||||
wave = [accent]Vague {0}
|
wave = [accent]Vague {0}
|
||||||
wave.cap = [accent]Wave {0}/{1}
|
wave.cap = [accent]Vague {0}/{1}
|
||||||
wave.waiting = [lightgray]Vague dans {0}
|
wave.waiting = [lightgray]Vague dans {0}
|
||||||
wave.waveInProgress = [lightgray]Vague en cours
|
wave.waveInProgress = [lightgray]Vague en cours
|
||||||
waiting = [lightgray]En attente...
|
waiting = [lightgray]En attente...
|
||||||
waiting.players = En attente de joueurs...
|
waiting.players = En attente de joueurs...
|
||||||
wave.enemies = [lightgray]{0} Ennemis restants
|
wave.enemies = [lightgray]{0} Ennemis restants
|
||||||
wave.enemy = [lightgray]{0} Ennemi restant
|
wave.enemy = [lightgray]{0} Ennemi restant
|
||||||
wave.guardianwarn = Guardian approaching in [accent]{0}[] waves.
|
wave.guardianwarn = Gardien à l'approche dans [accent]{0}[] vagues.
|
||||||
wave.guardianwarn.one = Guardian approaching in [accent]{0}[] wave.
|
wave.guardianwarn.one = Gardien à l'approche dans [accent]{0}[] vague.
|
||||||
loadimage = Charger l'image
|
loadimage = Charger l'image
|
||||||
saveimage = Sauvegarder l'image
|
saveimage = Sauvegarder l'image
|
||||||
unknown = Inconnu
|
unknown = Inconnu
|
||||||
@@ -331,7 +331,7 @@ editor.generation = Génération:
|
|||||||
editor.ingame = Éditer dans le jeu
|
editor.ingame = Éditer dans le jeu
|
||||||
editor.publish.workshop = Publier sur le Workshop
|
editor.publish.workshop = Publier sur le Workshop
|
||||||
editor.newmap = Nouvelle carte
|
editor.newmap = Nouvelle carte
|
||||||
editor.center = Center
|
editor.center = Centrer
|
||||||
workshop = Steam Workshop
|
workshop = Steam Workshop
|
||||||
waves.title = Vagues
|
waves.title = Vagues
|
||||||
waves.remove = Supprimer
|
waves.remove = Supprimer
|
||||||
@@ -445,7 +445,7 @@ filter.option.amount = Quantité
|
|||||||
filter.option.block = Bloc
|
filter.option.block = Bloc
|
||||||
filter.option.floor = Sol
|
filter.option.floor = Sol
|
||||||
filter.option.flooronto = Sol en question
|
filter.option.flooronto = Sol en question
|
||||||
filter.option.target = Target
|
filter.option.target = Cible
|
||||||
filter.option.wall = Mur
|
filter.option.wall = Mur
|
||||||
filter.option.ore = Minerai
|
filter.option.ore = Minerai
|
||||||
filter.option.floor2 = Sol secondaire
|
filter.option.floor2 = Sol secondaire
|
||||||
|
|||||||
@@ -1066,7 +1066,7 @@ block.message.name = Message
|
|||||||
block.illuminator.name = Illuminator
|
block.illuminator.name = Illuminator
|
||||||
block.illuminator.description = A small, compact, configurable light source. Requires power to function.
|
block.illuminator.description = A small, compact, configurable light source. Requires power to function.
|
||||||
block.overflow-gate.name = Barrière de Débordement
|
block.overflow-gate.name = Barrière de Débordement
|
||||||
block.underflow-gate.name = Underflow Gate
|
block.underflow-gate.name = Barrière de Refoulement
|
||||||
block.silicon-smelter.name = Fonderie de silicium
|
block.silicon-smelter.name = Fonderie de silicium
|
||||||
block.phase-weaver.name = Tisseur à phase
|
block.phase-weaver.name = Tisseur à phase
|
||||||
block.pulverizer.name = Pulvérisateur
|
block.pulverizer.name = Pulvérisateur
|
||||||
@@ -1274,7 +1274,7 @@ block.inverted-sorter.description = Processes items like a standard sorter, but
|
|||||||
block.router.description = Accepte les éléments d'une direction et les envoie dans 3 autres directions de manière égale. Utile pour séparer les matériaux d'une source en plusieurs cibles.
|
block.router.description = Accepte les éléments d'une direction et les envoie dans 3 autres directions de manière égale. Utile pour séparer les matériaux d'une source en plusieurs cibles.
|
||||||
block.distributor.description = Un routeur avancé qui divise les articles en 7 autres directions de manière égale. [scarlet]Seule et unique ![]
|
block.distributor.description = Un routeur avancé qui divise les articles en 7 autres directions de manière égale. [scarlet]Seule et unique ![]
|
||||||
block.overflow-gate.description = C'est la combinaison entre un routeur et un diviseur qui peut seulement distribuer à gauche et à droite si le chemin de devant est bloqué.
|
block.overflow-gate.description = C'est la combinaison entre un routeur et un diviseur qui peut seulement distribuer à gauche et à droite si le chemin de devant est bloqué.
|
||||||
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 = Le contraire d'une barrière de débordement.\nEnvoie les ressources vers l'avant si les chemins de gauche et de droite sont bloqués.
|
||||||
block.mass-driver.description = Bloc de transport d'articles ultime.\nRecueille plusieurs objets et les envoie ensuite à un autre pilote de masse sur une longue distance.
|
block.mass-driver.description = Bloc de transport d'articles ultime.\nRecueille plusieurs objets et les envoie ensuite à un autre pilote de masse sur une longue distance.
|
||||||
block.mechanical-pump.description = Une pompe bon marché avec un débit lent, mais aucune consommation d'énergie.
|
block.mechanical-pump.description = Une pompe bon marché avec un débit lent, mais aucune consommation d'énergie.
|
||||||
block.rotary-pump.description = Une pompe avancée qui double la vitesse en utilisant l’énergie.
|
block.rotary-pump.description = Une pompe avancée qui double la vitesse en utilisant l’énergie.
|
||||||
|
|||||||
@@ -473,7 +473,7 @@ abandon = Verlaat
|
|||||||
abandon.text = Je verliest deze kaart met alles erop en eraan aan de vijand.
|
abandon.text = Je verliest deze kaart met alles erop en eraan aan de vijand.
|
||||||
locked = Op slot
|
locked = Op slot
|
||||||
complete = [lightgray]Voltooid:
|
complete = [lightgray]Voltooid:
|
||||||
requirement.wave = Berijk ronde {0} in {1}
|
requirement.wave = Bereik ronde {0} in {1}
|
||||||
requirement.core = Vernietig vijandige core in {0}
|
requirement.core = Vernietig vijandige core in {0}
|
||||||
requirement.research = Research {0}
|
requirement.research = Research {0}
|
||||||
requirement.capture = Capture {0}
|
requirement.capture = Capture {0}
|
||||||
@@ -489,7 +489,7 @@ addall = Voeg Alles Toe
|
|||||||
launch.destination = Destination: {0}
|
launch.destination = Destination: {0}
|
||||||
configure.invalid = Hoeveelheid moet een getal zijn tussen 0 en {0}.
|
configure.invalid = Hoeveelheid moet een getal zijn tussen 0 en {0}.
|
||||||
zone.unlocked = [lightgray]{0} vrijgespeeld.
|
zone.unlocked = [lightgray]{0} vrijgespeeld.
|
||||||
zone.requirement.complete = Ronde {0} berijkt:\n{1} zone vrijgespeeld.
|
zone.requirement.complete = Ronde {0} bereikt:\n{1} zone vrijgespeeld.
|
||||||
zone.resources = Vindbare grondstoffen:
|
zone.resources = Vindbare grondstoffen:
|
||||||
zone.objective = [lightgray]Doel: [accent]{0}
|
zone.objective = [lightgray]Doel: [accent]{0}
|
||||||
zone.objective.survival = Overleef
|
zone.objective.survival = Overleef
|
||||||
@@ -1064,7 +1064,7 @@ block.sorter.name = Sorteerder
|
|||||||
block.inverted-sorter.name = Omgekeerder Sorteerder
|
block.inverted-sorter.name = Omgekeerder Sorteerder
|
||||||
block.message.name = Bericht
|
block.message.name = Bericht
|
||||||
block.illuminator.name = Lamp
|
block.illuminator.name = Lamp
|
||||||
block.illuminator.description = Een kleine aanpasbare lamp, heef stroom nodig.
|
block.illuminator.description = Een kleine aanpasbare lamp, heeft stroom nodig.
|
||||||
block.overflow-gate.name = Overflow Gate
|
block.overflow-gate.name = Overflow Gate
|
||||||
block.underflow-gate.name = Underflow Gate
|
block.underflow-gate.name = Underflow Gate
|
||||||
block.silicon-smelter.name = Siliciumsmelter
|
block.silicon-smelter.name = Siliciumsmelter
|
||||||
@@ -1201,9 +1201,9 @@ tutorial.waves.mobile = De[lightgray] vijand[] naderd.\n\nVerdedig je core voor
|
|||||||
tutorial.launch = Tijdens sommige waves, kan je je core[accent] lanceren[], hiermee verlaat je de basis permanent[accent] maar je neemt wel alles dat in de core zit met je mee.[]\nMet deze grondstoffen kan je nieuwe technologieën onderzoeken.\n\n[accent]Druk op de lanceerknop.
|
tutorial.launch = Tijdens sommige waves, kan je je core[accent] lanceren[], hiermee verlaat je de basis permanent[accent] maar je neemt wel alles dat in de core zit met je mee.[]\nMet deze grondstoffen kan je nieuwe technologieën onderzoeken.\n\n[accent]Druk op de lanceerknop.
|
||||||
|
|
||||||
item.copper.description = Een nuttig materiaal voor gebouwen. Wordt erg vaak in blokken gebruikt.
|
item.copper.description = Een nuttig materiaal voor gebouwen. Wordt erg vaak in blokken gebruikt.
|
||||||
item.lead.description = Een basismateriaal. Wordt vaak gebruikt in elektronica en vloeistoftransport.
|
item.lead.description = Een basismateriaal. Wordt veel gebruikt in elektronica en vloeistoftransport.
|
||||||
item.metaglass.description = A super-tough glass compound. Extensively used for liquid distribution and storage.
|
item.metaglass.description = Een supersterke glas-samenstelling. Veel gebruikt voor vloeistof transport en opslag.
|
||||||
item.graphite.description = Mineralized carbon, used for ammunition and electrical insulation.
|
item.graphite.description = Gemineraliseerde koolstof, gebruikt voor ammunitie en elektrische isolatie.
|
||||||
item.sand.description = A common material that is used extensively in smelting, both in alloying and as a flux.
|
item.sand.description = A common material that is used extensively in smelting, both in alloying and as a flux.
|
||||||
item.coal.description = A common and readily available fuel.
|
item.coal.description = A common and readily available fuel.
|
||||||
item.titanium.description = A rare super-light metal used extensively in liquid transportation, drills and aircraft.
|
item.titanium.description = A rare super-light metal used extensively in liquid transportation, drills and aircraft.
|
||||||
|
|||||||
@@ -20,8 +20,8 @@ gameover = O núcleo foi destruído.
|
|||||||
gameover.pvp = O time[accent] {0}[] ganhou!
|
gameover.pvp = O time[accent] {0}[] ganhou!
|
||||||
highscore = [accent]Novo recorde!
|
highscore = [accent]Novo recorde!
|
||||||
copied = Copiado
|
copied = Copiado
|
||||||
indev.popup = [accent]v6[] is currently in [accent]alpha[].\n[lightgray]This means:[]\n[scarlet]- The campaign is completely unfinished[]\n- Content is missing\n - Most [scarlet]Unit AI[] does not work properly\n- Many units are unfinished\n- Everything you see is subject to change or removal.\n\nReport bugs or crashes on [accent]Github[].
|
indev.popup = [accent]v6[] está atualmente em [accent]alpha[].\n[lightgray]Isso significa:[]\n[scarlet]- A campanha está inacabada[]\n- Está faltando conteúdo\n - A maioria das [scarlet]IAs das unidades[] não funciona adequadamente\n- A maioria das unidades estão inacabadas\n- Tudo o que você ver está sujeito a mudanças ou remoção.\n\nReporte bugs ou crashes em [accent]Github[].
|
||||||
indev.notready = This part of the game isn't ready yet
|
indev.notready = Essa parte do jogo ainda não esta pronta
|
||||||
|
|
||||||
load.sound = Sons
|
load.sound = Sons
|
||||||
load.map = Mapas
|
load.map = Mapas
|
||||||
@@ -55,7 +55,7 @@ schematic.saved = Esquema salvo.
|
|||||||
schematic.delete.confirm = Esse esquema será apagado. Tem certeza?
|
schematic.delete.confirm = Esse esquema será apagado. Tem certeza?
|
||||||
schematic.rename = Renomear esquema
|
schematic.rename = Renomear esquema
|
||||||
schematic.info = {0}x{1}, {2} blocos
|
schematic.info = {0}x{1}, {2} blocos
|
||||||
schematic.disabled = [scarlet]Schematics disabled[]\nYou are not allowed to use schematics on this [accent]map[] or [accent]server.
|
schematic.disabled = [scarlet]Esquemas desativados[]\nVocê precisa de permissão para usar esquemas nesse [accent]mapa[] ou [accent]servidor.
|
||||||
|
|
||||||
stat.wave = Hordas derrotadas:[accent] {0}
|
stat.wave = Hordas derrotadas:[accent] {0}
|
||||||
stat.enemiesDestroyed = Inimigos destruídos:[accent] {0}
|
stat.enemiesDestroyed = Inimigos destruídos:[accent] {0}
|
||||||
@@ -66,7 +66,7 @@ stat.delivered = Recursos lançados:
|
|||||||
stat.playtime = Tempo jogado:[accent] {0}
|
stat.playtime = Tempo jogado:[accent] {0}
|
||||||
stat.rank = Classificação final: [accent]{0}
|
stat.rank = Classificação final: [accent]{0}
|
||||||
|
|
||||||
globalitems = [accent]Global Items
|
globalitems = [accent]Itens Globais
|
||||||
map.delete = Certeza que quer deletar o mapa "[accent]{0}[]"?
|
map.delete = Certeza que quer deletar o mapa "[accent]{0}[]"?
|
||||||
level.highscore = Melhor\npontuação: [accent] {0}
|
level.highscore = Melhor\npontuação: [accent] {0}
|
||||||
level.select = Seleção de fase
|
level.select = Seleção de fase
|
||||||
@@ -106,16 +106,16 @@ mods.none = [lightgray]Nenhum mod encontrado!
|
|||||||
mods.guide = Guia de mods
|
mods.guide = Guia de mods
|
||||||
mods.report = Reportar um Bug
|
mods.report = Reportar um Bug
|
||||||
mods.openfolder = Abrir pasta de mods
|
mods.openfolder = Abrir pasta de mods
|
||||||
mods.reload = Reload
|
mods.reload = Recarregar
|
||||||
mods.reloadexit = The game will now exit, to reload mods.
|
mods.reloadexit = O jogo vai fechar, para poder recarregar os mods.
|
||||||
mod.display = [gray]Mod:[orange] {0}
|
mod.display = [gray]Mod:[orange] {0}
|
||||||
mod.enabled = [lightgray]Ativado
|
mod.enabled = [lightgray]Ativado
|
||||||
mod.disabled = [scarlet]Desativado
|
mod.disabled = [scarlet]Desativado
|
||||||
mod.disable = Desati-\nvar
|
mod.disable = Desati-\nvar
|
||||||
mod.content = Content:
|
mod.content = Conteúdo:
|
||||||
mod.delete.error = Incapaz de deletar o mod. O arquivo talvez esteja em uso.
|
mod.delete.error = Incapaz de deletar o mod. O arquivo talvez esteja em uso.
|
||||||
mod.requiresversion = [scarlet]Requer no mínimo versão [accent]{0} [scarlet]do jogo.
|
mod.requiresversion = [scarlet]Requer no mínimo versão [accent]{0} [scarlet]do jogo.
|
||||||
mod.outdated = [scarlet]Not compatible with V6 (no minGameVersion: 105)
|
mod.outdated = [scarlet]Não compatível com a V6 (sem minGameVersion: 105)
|
||||||
mod.missingdependencies = [scarlet]Dependências ausentes: {0}
|
mod.missingdependencies = [scarlet]Dependências ausentes: {0}
|
||||||
mod.erroredcontent = [scarlet]Erros no conteúdo
|
mod.erroredcontent = [scarlet]Erros no conteúdo
|
||||||
mod.errors = Ocorreram erros ao carregar o conteúdo.
|
mod.errors = Ocorreram erros ao carregar o conteúdo.
|
||||||
@@ -125,22 +125,22 @@ mod.enable = Ativar
|
|||||||
mod.requiresrestart = O jogo irá fechar para aplicar as mudanças do mod.
|
mod.requiresrestart = O jogo irá fechar para aplicar as mudanças do mod.
|
||||||
mod.reloadrequired = [scarlet]Recarregamento necessário
|
mod.reloadrequired = [scarlet]Recarregamento necessário
|
||||||
mod.import = Importar mod
|
mod.import = Importar mod
|
||||||
mod.import.file = Import File
|
mod.import.file = Importar Arquivo
|
||||||
mod.import.github = Importar mod do GitHub
|
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.jarwarn = [scarlet]mods JAR são altamente inseguros.[]\nTenha certeza que esse mod tenha uma fonte confiável!
|
||||||
mod.item.remove = Este item é parte do mod[accent] '{0}'[]. Para removê-lo, desinstale esse mod.
|
mod.item.remove = Este item é parte do mod[accent] '{0}'[]. Para removê-lo, desinstale esse mod.
|
||||||
mod.remove.confirm = Este mod será deletado.
|
mod.remove.confirm = Este mod será deletado.
|
||||||
mod.author = [lightgray]Autor:[] {0}
|
mod.author = [lightgray]Autor:[] {0}
|
||||||
mod.missing = Esse jogo salvo foi criado antes de você atualizar ou desinstalar um mod. Pode ocorrer uma corrupção no salvamento. Você tem certeza que quer carregar?\n[lightgray]Mods:\n{0}
|
mod.missing = Esse jogo salvo foi criado antes de você atualizar ou desinstalar um mod. Pode ocorrer uma corrupção no salvamento. Você tem certeza que quer carregar?\n[lightgray]Mods:\n{0}
|
||||||
mod.preview.missing = Antes de publicar esse mod na oficina, você deve adicionar uma imagem de pré-visualização.\nColoque uma imagem com o nome[accent] preview.png[] na pasta do mod e tente novamente.
|
mod.preview.missing = Antes de publicar esse mod na oficina, você deve adicionar uma imagem de pré-visualização.\nColoque uma imagem com o nome[accent] preview.png[] na pasta do mod e tente novamente.
|
||||||
mod.folder.missing = Somente mods no formato de pasta serão publicados na oficina.\nPara converter qualquer Mod em uma pasta, Simplesmente descompacte seu arquivo numa pasta e delete a compactação antiga, então reinicie seu jogo ou recarregue os mods.
|
mod.folder.missing = Somente mods no formato de pasta serão publicados na oficina.\nPara converter qualquer Mod em uma pasta, Simplesmente descompacte seu arquivo numa pasta e delete a compactação antiga, então reinicie seu jogo ou recarregue os mods.
|
||||||
mod.scripts.disable = Your device does not support mods with scripts. You must disable these mods to play the game.
|
mod.scripts.disable = Seu dispositivo não suporta mods com scripts. Você precisa desabilitar esses mods para conseguir jogar.
|
||||||
|
|
||||||
about.button = Sobre
|
about.button = Sobre
|
||||||
name = Nome:
|
name = Nome:
|
||||||
noname = Escolha[accent] um nome[] primeiro.
|
noname = Escolha[accent] um nome[] primeiro.
|
||||||
planetmap = Planet Map
|
planetmap = Mapa do Planeta
|
||||||
launchcore = Launch Core
|
launchcore = Lançar núcleo
|
||||||
filename = Nome do arquivo:
|
filename = Nome do arquivo:
|
||||||
unlocked = Novo bloco desbloqueado!
|
unlocked = Novo bloco desbloqueado!
|
||||||
completed = [accent]Completado
|
completed = [accent]Completado
|
||||||
@@ -148,7 +148,7 @@ techtree = Árvore Tecnológica
|
|||||||
research.list = [lightgray]Pesquise:
|
research.list = [lightgray]Pesquise:
|
||||||
research = Pesquisar
|
research = Pesquisar
|
||||||
researched = [lightgray]{0} Pesquisado.
|
researched = [lightgray]{0} Pesquisado.
|
||||||
research.progress = {0}% complete
|
research.progress = {0}% completo
|
||||||
players = {0} Jogadores ativos
|
players = {0} Jogadores ativos
|
||||||
players.single = {0} Jogador ativo
|
players.single = {0} Jogador ativo
|
||||||
players.search = Procurar
|
players.search = Procurar
|
||||||
@@ -278,21 +278,21 @@ quit.confirm.tutorial = Você tem certeza que você sabe o que você esta fazend
|
|||||||
loading = [accent]Carregando...
|
loading = [accent]Carregando...
|
||||||
reloading = [accent]Recarregando mods...
|
reloading = [accent]Recarregando mods...
|
||||||
saving = [accent]Salvando...
|
saving = [accent]Salvando...
|
||||||
respawn = [accent][[{0}][] to respawn in core
|
respawn = [accent][[{0}][] para nascer no núcleo
|
||||||
cancelbuilding = [accent][[{0}][] para cancelar a construção
|
cancelbuilding = [accent][[{0}][] para cancelar a construção
|
||||||
selectschematic = [accent][[{0}][] para selecionar + copiar
|
selectschematic = [accent][[{0}][] para selecionar + copiar
|
||||||
pausebuilding = [accent][[{0}][] para parar a construção
|
pausebuilding = [accent][[{0}][] para parar a construção
|
||||||
resumebuilding = [scarlet][[{0}][] para continuar a construção
|
resumebuilding = [scarlet][[{0}][] para continuar a construção
|
||||||
wave = [accent]Horda {0}
|
wave = [accent]Horda {0}
|
||||||
wave.cap = [accent]Wave {0}/{1}
|
wave.cap = [accent]Horda {0}/{1}
|
||||||
wave.waiting = Proxima horda em {0}
|
wave.waiting = Proxima horda em {0}
|
||||||
wave.waveInProgress = [lightgray]Horda em progresso
|
wave.waveInProgress = [lightgray]Horda em progresso
|
||||||
waiting = Aguardando...
|
waiting = Aguardando...
|
||||||
waiting.players = Esperando por jogadores...
|
waiting.players = Esperando por jogadores...
|
||||||
wave.enemies = [lightgray]{0} inimigos restantes
|
wave.enemies = [lightgray]{0} inimigos restantes
|
||||||
wave.enemy = [lightgray]{0} inimigo restante
|
wave.enemy = [lightgray]{0} inimigo restante
|
||||||
wave.guardianwarn = Guardian approaching in [accent]{0}[] waves.
|
wave.guardianwarn = Guardião se aproximando em [accent]{0}[] Hordas.
|
||||||
wave.guardianwarn.one = Guardian approaching in [accent]{0}[] wave.
|
wave.guardianwarn.one = Guardião se aproximando em [accent]{0}[] Horda.
|
||||||
loadimage = Carregar\nimagem
|
loadimage = Carregar\nimagem
|
||||||
saveimage = Salvar\nimagem
|
saveimage = Salvar\nimagem
|
||||||
unknown = Desconhecido
|
unknown = Desconhecido
|
||||||
@@ -339,7 +339,7 @@ waves.never = <nunca>
|
|||||||
waves.every = a cada
|
waves.every = a cada
|
||||||
waves.waves = Horda(s)
|
waves.waves = Horda(s)
|
||||||
waves.perspawn = por spawn
|
waves.perspawn = por spawn
|
||||||
waves.shields = shields/wave
|
waves.shields = Escudo/Horda
|
||||||
waves.to = para
|
waves.to = para
|
||||||
waves.guardian = Guardian
|
waves.guardian = Guardian
|
||||||
waves.preview = Pré-visualizar
|
waves.preview = Pré-visualizar
|
||||||
@@ -350,9 +350,9 @@ waves.invalid = Hordas inválidas na área de transferência.
|
|||||||
waves.copied = Hordas copiadas.
|
waves.copied = Hordas copiadas.
|
||||||
waves.none = Sem hordas definidas.\nNote que layouts vazios de hordas serão automaticamente substituídos pelo layout padrão.
|
waves.none = Sem hordas definidas.\nNote que layouts vazios de hordas serão automaticamente substituídos pelo layout padrão.
|
||||||
|
|
||||||
wavemode.counts = counts
|
wavemode.counts = quantidade
|
||||||
wavemode.totals = totals
|
wavemode.totals = total
|
||||||
wavemode.health = health
|
wavemode.health = vida
|
||||||
|
|
||||||
editor.default = [lightgray]<padrão>
|
editor.default = [lightgray]<padrão>
|
||||||
details = Detalhes...
|
details = Detalhes...
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ gameover = Jocul s-a încheiat
|
|||||||
gameover.pvp = Echipa [accent] {0}[] este câștigătoare!
|
gameover.pvp = Echipa [accent] {0}[] este câștigătoare!
|
||||||
highscore = [accent]Scor maxim nou!
|
highscore = [accent]Scor maxim nou!
|
||||||
copied = Copiat.
|
copied = Copiat.
|
||||||
indev.popup = [accent]v6[] este momentan în [accent]beta[].\n[lightgray]Asta înseamnă că:[]\n[scarlet]- Campania este complet neterminată[]\n- Efectele sonore și muzica sunt neterminate/lipsesc\n- Majoritatea [scarlet]AI-ului unităților[] nu funcționează bine\n- Multe unități sunt neterminate\n- Modul campanie nu este terminat \n- Tot ce vedeți se poate schimba sau poate fi eliminat.\n\nPentru a raporta buguri și crashuri intrați pe [accent]Github[].
|
indev.popup = [accent]v6[] este momentan în [accent]beta[].\n[lightgray]Asta înseamnă că:[]\n[scarlet]- Campania este complet neterminată[]\n- Efectele sonore și muzica sunt neterminate/lipsesc\n- Tot ce vedeți se poate schimba sau poate fi eliminat.\n\nPentru a raporta buguri și crashuri intrați pe [accent]Github[].
|
||||||
indev.notready = Această secțiune a jocului nu este gata încă.
|
indev.notready = Această secțiune a jocului nu este gata încă.
|
||||||
|
|
||||||
load.sound = Sunete
|
load.sound = Sunete
|
||||||
@@ -100,7 +100,7 @@ committingchanges = Se Încarcă Schimbările
|
|||||||
done = Gata
|
done = Gata
|
||||||
feature.unsupported = Dispozitivul tău nu suportă această funcție.
|
feature.unsupported = Dispozitivul tău nu suportă această funcție.
|
||||||
|
|
||||||
mods.alphainfo = Modurile sunt încă în alpha și[scarlet] pot avea multe buguri[].\nRaportați orice probleme apărute pe Githubul Mindustry.
|
mods.alphainfo = Modurile sunt încă în alpha și[scarlet] pot avea multe buguri[].\nRaportează orice probleme apărute pe Githubul Mindustry.
|
||||||
mods = Moduri
|
mods = Moduri
|
||||||
mods.none = [lightgray]Nu s-au găsit moduri!
|
mods.none = [lightgray]Nu s-au găsit moduri!
|
||||||
mods.guide = Ghid de Modding
|
mods.guide = Ghid de Modding
|
||||||
@@ -127,11 +127,11 @@ mod.reloadrequired = [scarlet]E Nevoie de o Repornire
|
|||||||
mod.import = Importă Mod
|
mod.import = Importă Mod
|
||||||
mod.import.file = Importă Fișier
|
mod.import.file = Importă Fișier
|
||||||
mod.import.github = Importă din GitHub
|
mod.import.github = Importă din GitHub
|
||||||
mod.jarwarn = [scarlet]Modurile în format JAR nu sunt sigure.[]\nAi grijă să importezi acest mod dintr-o sursă de încredere!
|
mod.jarwarn = [scarlet]Modurile în format JAR nu sunt sigure.[]\nAi grijă să imporți acest mod dintr-o sursă de încredere!
|
||||||
mod.item.remove = Acest obiect este parte din modul [accent] '{0}'[]. Ca să îl poți elimina, dezinstalează acel mod.
|
mod.item.remove = Acest obiect face parte din modul [accent] '{0}'[]. Ca să îl poți elimina, dezinstalează acel mod.
|
||||||
mod.remove.confirm = Acest mod va fi șters.
|
mod.remove.confirm = Acest mod va fi șters.
|
||||||
mod.author = [lightgray]Autor:[] {0}
|
mod.author = [lightgray]Autor:[] {0}
|
||||||
mod.missing = Această salvare conține moduri cărora le-ai făcut update recent sau nu mai sunt instalate. Fișierul poate fi corupt. Sigur vrei să îl încarci?\n[lightgray]Moduri:\n{0}
|
mod.missing = Această salvare conține moduri cărora le-ai făcut update recent sau care nu mai sunt instalate. Fișierul poate fi corupt. Sigur vrei să îl încarci?\n[lightgray]Moduri:\n{0}
|
||||||
mod.preview.missing = Înainte să publici acest mod pe Workshop, trebuie să adaugi o imagine pt previzualizare.\nPune o imagine numită[accent] preview.png[] în folderul modului și încearcă din nou.
|
mod.preview.missing = Înainte să publici acest mod pe Workshop, trebuie să adaugi o imagine pt previzualizare.\nPune o imagine numită[accent] preview.png[] în folderul modului și încearcă din nou.
|
||||||
mod.folder.missing = Doar modurile din câmpul folder pot fi publicate pe Workshop.\nPt a converti orice mod într-un folder, dezarhivează zipul într-un folder și șterge vechiul zip, apoi repornește jocul sau reîncărcă-ți modurile.
|
mod.folder.missing = Doar modurile din câmpul folder pot fi publicate pe Workshop.\nPt a converti orice mod într-un folder, dezarhivează zipul într-un folder și șterge vechiul zip, apoi repornește jocul sau reîncărcă-ți modurile.
|
||||||
mod.scripts.disable = Dispozitivul tău nu suportă moduri cu scripturi. Trebuie să dezactivezi aceste moduri ca să joci jocul.
|
mod.scripts.disable = Dispozitivul tău nu suportă moduri cu scripturi. Trebuie să dezactivezi aceste moduri ca să joci jocul.
|
||||||
@@ -172,7 +172,7 @@ server.kicked.gameover = Joc încheiat!
|
|||||||
server.kicked.serverRestarting = Acest server se repornește.
|
server.kicked.serverRestarting = Acest server se repornește.
|
||||||
server.versions = Versiunea ta:[accent] {0}[]versiunea serverului:[accent] {1}[]
|
server.versions = Versiunea ta:[accent] {0}[]versiunea serverului:[accent] {1}[]
|
||||||
host.info = Butonul [accent]găzduiește[] va găzdui un server pe portul [scarlet]6567[]. \nOrice persoană de pe același port [lightgray]wifi sau rețea locală[] ar trebui să-ți vadă serverul în lista lor de servere.\n\nDacă vrei ca lumea să se poată conecta de oriunde cu IP-ul, este nevoie de [accent]port forwarding[].\n\n[lightgray]Notă: Dacă cineva are probleme în a se conecta la jocul tău LAN, verifică dacă ai lăsat Mindustry să acceseze rețeaua locală în setările de firewall. De menționat este faptul că uneori rețelele publice nu permit descoperirea serverului.
|
host.info = Butonul [accent]găzduiește[] va găzdui un server pe portul [scarlet]6567[]. \nOrice persoană de pe același port [lightgray]wifi sau rețea locală[] ar trebui să-ți vadă serverul în lista lor de servere.\n\nDacă vrei ca lumea să se poată conecta de oriunde cu IP-ul, este nevoie de [accent]port forwarding[].\n\n[lightgray]Notă: Dacă cineva are probleme în a se conecta la jocul tău LAN, verifică dacă ai lăsat Mindustry să acceseze rețeaua locală în setările de firewall. De menționat este faptul că uneori rețelele publice nu permit descoperirea serverului.
|
||||||
join.info = Aici poți scrie un [accent]IP de server[] pt a te conecta, a descoperi [accent]rețeaua locală[] sau serverele [accent]globale[] pt a te conecta la ele.\nAtât multiplayerul LAN cât și cel WAN este suportat.\n\n[lightgray]Dacă vrei să te conectezi la cineva cu IP-ul, trebuie să ceri gazdei IP-ul său, care poate fi găsit căutând pe Google "my ip' de pe dispozitivul lor.
|
join.info = Aici poți scrie un [accent]IP de server[] pt a te conecta sau pt a descoperi [accent]rețeaua locală[] sau serverele [accent]globale[] la care să te conectezi.\nAtât multiplayerul LAN cât și cel WAN sunt suportate.\n\n[lightgray]Dacă vrei să te conectezi la cineva cu IP-ul, trebuie să ceri gazdei IP-ul său, care poate fi găsit căutând pe Google "my ip" de pe dispozitivul său.
|
||||||
hostserver = Găzduiește Joc Multiplayer
|
hostserver = Găzduiește Joc Multiplayer
|
||||||
invitefriends = Invită Prieteni
|
invitefriends = Invită Prieteni
|
||||||
hostserver.mobile = Găzduiește Joc
|
hostserver.mobile = Găzduiește Joc
|
||||||
@@ -350,6 +350,7 @@ waves.invalid = Valuri invalide în clipboard.
|
|||||||
waves.copied = Valuri copiate.
|
waves.copied = Valuri copiate.
|
||||||
waves.none = Niciun inamic definit.\nDe reținut că o listă de valuri goală va fi înlocuită automat cu lista de valuri prestabilită.
|
waves.none = Niciun inamic definit.\nDe reținut că o listă de valuri goală va fi înlocuită automat cu lista de valuri prestabilită.
|
||||||
|
|
||||||
|
#intenționat cu literă mică
|
||||||
wavemode.counts = numere
|
wavemode.counts = numere
|
||||||
wavemode.totals = totaluri
|
wavemode.totals = totaluri
|
||||||
wavemode.health = viață
|
wavemode.health = viață
|
||||||
@@ -462,7 +463,7 @@ load = Încarcă
|
|||||||
save = Salvează
|
save = Salvează
|
||||||
fps = FPS: {0}
|
fps = FPS: {0}
|
||||||
ping = Ping: {0}ms
|
ping = Ping: {0}ms
|
||||||
language.restart = Vă rugăm să reporniți jocul pentru că setările de limbă să aibă efect.
|
language.restart = Repornește jocul pentru ca setările de limbă să aibă efect.
|
||||||
settings = Setări
|
settings = Setări
|
||||||
tutorial = Tutorial
|
tutorial = Tutorial
|
||||||
tutorial.retake = Reia Tutorial
|
tutorial.retake = Reia Tutorial
|
||||||
@@ -482,6 +483,8 @@ launch.text = Lansează
|
|||||||
research.multiplayer = Doar gazda poate cerceta noi tehnologii.
|
research.multiplayer = Doar gazda poate cerceta noi tehnologii.
|
||||||
uncover = Descoperă
|
uncover = Descoperă
|
||||||
configure = Configurează Încărcarea
|
configure = Configurează Încărcarea
|
||||||
|
|
||||||
|
#Spațiu Necesar
|
||||||
loadout = Încărcare
|
loadout = Încărcare
|
||||||
resources = Resurse
|
resources = Resurse
|
||||||
bannedblocks = Blocuri Interzise
|
bannedblocks = Blocuri Interzise
|
||||||
@@ -526,8 +529,10 @@ sectors.rename = Redenumește Sectorul
|
|||||||
sector.missingresources = [scarlet]Resurse din Nucleu Insuficiente
|
sector.missingresources = [scarlet]Resurse din Nucleu Insuficiente
|
||||||
|
|
||||||
planet.serpulo.name = Serpulo
|
planet.serpulo.name = Serpulo
|
||||||
|
#Spațiu Necesar
|
||||||
planet.sun.name = Soare
|
planet.sun.name = Soare
|
||||||
|
|
||||||
|
#Spațiu Necesar
|
||||||
sector.groundZero.name = Ground Zero
|
sector.groundZero.name = Ground Zero
|
||||||
sector.craters.name = The Craters
|
sector.craters.name = The Craters
|
||||||
sector.frozenForest.name = Frozen Forest
|
sector.frozenForest.name = Frozen Forest
|
||||||
@@ -540,6 +545,10 @@ sector.tarFields.name = Tar Fields
|
|||||||
sector.saltFlats.name = Salt Flats
|
sector.saltFlats.name = Salt Flats
|
||||||
sector.fungalPass.name = Fungal Pass
|
sector.fungalPass.name = Fungal Pass
|
||||||
|
|
||||||
|
#Spațiu
|
||||||
|
#Absolut
|
||||||
|
#Necesar
|
||||||
|
|
||||||
sector.groundZero.description = Locația optimă pt a începe încă odată. Risc de inamici scăzut. Puține resurse.\nAdună cât de mult plumb și cupru se poate.\nMergi mai departe.
|
sector.groundZero.description = Locația optimă pt a începe încă odată. Risc de inamici scăzut. Puține resurse.\nAdună cât de mult plumb și cupru se poate.\nMergi mai departe.
|
||||||
sector.frozenForest.description = Chiar și aici, aproape de munți, sporii s-au împrăștiat. Temperaturile reci nu-i pot reține la infinit.\n\nÎncepe călătoria către electricitate. Construiește generatoare de combustie. Învață să folosești reparatoare.
|
sector.frozenForest.description = Chiar și aici, aproape de munți, sporii s-au împrăștiat. Temperaturile reci nu-i pot reține la infinit.\n\nÎncepe călătoria către electricitate. Construiește generatoare de combustie. Învață să folosești reparatoare.
|
||||||
sector.saltFlats.description = La periferia deșertului stau Salt Flats. Puține resurse pot fi găsite în această locație.\n\nInamicul a ridicat un complex-depozit aici. Distruge-le nucleul. Nu lăsa nimic în urmă.
|
sector.saltFlats.description = La periferia deșertului stau Salt Flats. Puține resurse pot fi găsite în această locație.\n\nInamicul a ridicat un complex-depozit aici. Distruge-le nucleul. Nu lăsa nimic în urmă.
|
||||||
@@ -573,7 +582,6 @@ settings.clearcampaignsaves.confirm = Sigur vrei să ștergi toate salvările di
|
|||||||
paused = [accent]< Pauză >
|
paused = [accent]< Pauză >
|
||||||
clear = Curăță
|
clear = Curăță
|
||||||
banned = [scarlet]Interzis
|
banned = [scarlet]Interzis
|
||||||
unplaceable.sectorcaptured = [scarlet]Ai nevoie de un sector capturat
|
|
||||||
yes = Da
|
yes = Da
|
||||||
no = Nu
|
no = Nu
|
||||||
info.title = Info
|
info.title = Info
|
||||||
@@ -585,7 +593,7 @@ block.unknown = [lightgray]???
|
|||||||
|
|
||||||
stat.input = Necesită
|
stat.input = Necesită
|
||||||
stat.output = Produce
|
stat.output = Produce
|
||||||
stat.booster = Booster
|
stat.booster = Îmbunătățiri
|
||||||
stat.tiles = Teren Necesar
|
stat.tiles = Teren Necesar
|
||||||
stat.affinities = Efecte Teren
|
stat.affinities = Efecte Teren
|
||||||
stat.powercapacity = Capacitate electrică
|
stat.powercapacity = Capacitate electrică
|
||||||
@@ -614,7 +622,7 @@ stat.speedincrease = Creștere Viteză
|
|||||||
stat.range = Rază
|
stat.range = Rază
|
||||||
stat.drilltier = Minabile
|
stat.drilltier = Minabile
|
||||||
stat.drillspeed = Viteză Burghiu (Bază)
|
stat.drillspeed = Viteză Burghiu (Bază)
|
||||||
stat.boosteffect = Efect de Boost
|
stat.boosteffect = Efect de Îmbunătățire
|
||||||
stat.maxunits = Maxim Unități Active
|
stat.maxunits = Maxim Unități Active
|
||||||
stat.health = Viață
|
stat.health = Viață
|
||||||
stat.buildtime = Timp Construcție
|
stat.buildtime = Timp Construcție
|
||||||
@@ -642,6 +650,8 @@ stat.minetier = Putere Minare
|
|||||||
stat.payloadcapacity = Capacitate Încărcătură
|
stat.payloadcapacity = Capacitate Încărcătură
|
||||||
stat.commandlimit = Nr Unități Comandate
|
stat.commandlimit = Nr Unități Comandate
|
||||||
stat.abilities = Abilități
|
stat.abilities = Abilități
|
||||||
|
stat.canboost = Poate Îmbunătăți
|
||||||
|
stat.flying = Zboară
|
||||||
|
|
||||||
ability.forcefield = Câmp de Forță
|
ability.forcefield = Câmp de Forță
|
||||||
ability.repairfield = Câmp de Reparare
|
ability.repairfield = Câmp de Reparare
|
||||||
@@ -681,7 +691,7 @@ bullet.shock = [stat]șoc
|
|||||||
bullet.frag = [stat]fragil
|
bullet.frag = [stat]fragil
|
||||||
bullet.knockback = [stat]{0} [lightgray]împingere
|
bullet.knockback = [stat]{0} [lightgray]împingere
|
||||||
bullet.pierce = [stat]{0}[lightgray]x penetrare
|
bullet.pierce = [stat]{0}[lightgray]x penetrare
|
||||||
bullet.infinitepierce = penetrare [stat]
|
bullet.infinitepierce = [stat]penetrare
|
||||||
bullet.freezing = [stat]înghețat
|
bullet.freezing = [stat]înghețat
|
||||||
bullet.tarred = [stat]lipicios
|
bullet.tarred = [stat]lipicios
|
||||||
bullet.multiplier = [stat]{0}[lightgray]x multiplicator muniție
|
bullet.multiplier = [stat]{0}[lightgray]x multiplicator muniție
|
||||||
@@ -720,6 +730,7 @@ setting.linear.name = Filtrare Liniară
|
|||||||
setting.hints.name = Indicii
|
setting.hints.name = Indicii
|
||||||
setting.flow.name = Afișează Rata de Curgere a lichidelor
|
setting.flow.name = Afișează Rata de Curgere a lichidelor
|
||||||
setting.buildautopause.name = Autopauză de la Construit
|
setting.buildautopause.name = Autopauză de la Construit
|
||||||
|
setting.backgroundpause.name = Pune Pauză în Fundal
|
||||||
setting.animatedwater.name = Suprafețe Animate
|
setting.animatedwater.name = Suprafețe Animate
|
||||||
setting.animatedshields.name = Scuturi Animate
|
setting.animatedshields.name = Scuturi Animate
|
||||||
setting.antialias.name = Antialiasing[lightgray] (necesită repornire)[]
|
setting.antialias.name = Antialiasing[lightgray] (necesită repornire)[]
|
||||||
@@ -1006,8 +1017,8 @@ block.sand-water.name = Apă cu Nisip
|
|||||||
block.darksand-water.name = Apă cu Nisip Negru
|
block.darksand-water.name = Apă cu Nisip Negru
|
||||||
block.char.name = Turbă
|
block.char.name = Turbă
|
||||||
block.dacite.name = Dacit
|
block.dacite.name = Dacit
|
||||||
block.dacite-wall.name = Perete de Dacit
|
|
||||||
block.dacite-boulder.name = Bolovan de Dacit
|
block.dacite-boulder.name = Bolovan de Dacit
|
||||||
|
block.dacite-wall.name = Perete de Dacit
|
||||||
block.ice-snow.name = Gheață Înzăpezită
|
block.ice-snow.name = Gheață Înzăpezită
|
||||||
block.stone-wall.name = Perete de Piatră
|
block.stone-wall.name = Perete de Piatră
|
||||||
block.ice-wall.name = Perete de Gheață
|
block.ice-wall.name = Perete de Gheață
|
||||||
|
|||||||
@@ -390,7 +390,7 @@ editor.importimage.description = Импортировать изображени
|
|||||||
editor.export = Экспорт…
|
editor.export = Экспорт…
|
||||||
editor.exportfile = Экспортировать файл
|
editor.exportfile = Экспортировать файл
|
||||||
editor.exportfile.description = Экспорт файла карты
|
editor.exportfile.description = Экспорт файла карты
|
||||||
editor.exportimage = Экспортировать изображение ландшафта
|
editor.exportimage = Экспортировать ландшафт
|
||||||
editor.exportimage.description = Экспортировать файл изображения, содержащего только базовую местность
|
editor.exportimage.description = Экспортировать файл изображения, содержащего только базовую местность
|
||||||
editor.loadimage = Импортировать\nизображение
|
editor.loadimage = Импортировать\nизображение
|
||||||
editor.saveimage = Экспортировать\nизображение
|
editor.saveimage = Экспортировать\nизображение
|
||||||
@@ -581,13 +581,12 @@ settings.clearcampaignsaves.confirm = Вы уверены, что хотите
|
|||||||
paused = [accent]< Пауза >
|
paused = [accent]< Пауза >
|
||||||
clear = Очистить
|
clear = Очистить
|
||||||
banned = [scarlet]Запрещено
|
banned = [scarlet]Запрещено
|
||||||
unplaceable.sectorcaptured = [scarlet]Требуется захватить сектор
|
|
||||||
yes = Да
|
yes = Да
|
||||||
no = Нет
|
no = Нет
|
||||||
info.title = Информация
|
info.title = Информация
|
||||||
error.title = [scarlet]Произошла ошибка
|
error.title = [scarlet]Произошла ошибка
|
||||||
error.crashtitle = Произошла ошибка
|
error.crashtitle = Произошла ошибка
|
||||||
unit.nobuild = [scarlet]Боевая единица не может строить
|
unit.nobuild = [scarlet]Единица не может строить
|
||||||
lastaccessed = [lightgray]Последняя конфигурация от {0}
|
lastaccessed = [lightgray]Последняя конфигурация от {0}
|
||||||
block.unknown = [lightgray]???
|
block.unknown = [lightgray]???
|
||||||
|
|
||||||
@@ -653,8 +652,7 @@ stat.abilities = Способности
|
|||||||
|
|
||||||
ability.forcefield = Силовое поле
|
ability.forcefield = Силовое поле
|
||||||
ability.repairfield = Ремонтирующее поле
|
ability.repairfield = Ремонтирующее поле
|
||||||
#TODO туду тудум
|
ability.statusfield = Усиливающее поле
|
||||||
ability.statusfield = Status Field
|
|
||||||
ability.unitspawn = Завод единиц «{0}»
|
ability.unitspawn = Завод единиц «{0}»
|
||||||
ability.shieldregenfield = Поле восстановления щита
|
ability.shieldregenfield = Поле восстановления щита
|
||||||
|
|
||||||
@@ -728,6 +726,7 @@ setting.blockreplace.name = Автоматическая замена блоко
|
|||||||
setting.linear.name = Линейная фильтрация
|
setting.linear.name = Линейная фильтрация
|
||||||
setting.hints.name = Подсказки
|
setting.hints.name = Подсказки
|
||||||
setting.flow.name = Показывать скорость потока ресурсов
|
setting.flow.name = Показывать скорость потока ресурсов
|
||||||
|
setting.backgroundpause.name = Фоновая пауза
|
||||||
setting.buildautopause.name = Автоматическая приостановка строительства
|
setting.buildautopause.name = Автоматическая приостановка строительства
|
||||||
setting.animatedwater.name = Анимированные поверхности
|
setting.animatedwater.name = Анимированные поверхности
|
||||||
setting.animatedshields.name = Анимированные щиты
|
setting.animatedshields.name = Анимированные щиты
|
||||||
|
|||||||
@@ -187,7 +187,7 @@ host.invalid = [scarlet]Kurucuya bağlanılamıyor.
|
|||||||
|
|
||||||
servers.local = Yerel Sunucular
|
servers.local = Yerel Sunucular
|
||||||
servers.remote = Uzak Sunucular
|
servers.remote = Uzak Sunucular
|
||||||
servers.global = Topuluk Sunucuları
|
servers.global = Topluluk Sunucuları
|
||||||
|
|
||||||
trace = Oyuncuyu Takip Et
|
trace = Oyuncuyu Takip Et
|
||||||
trace.playername = Oyuncu İsmi: [accent]{0}
|
trace.playername = Oyuncu İsmi: [accent]{0}
|
||||||
@@ -243,7 +243,7 @@ save.newslot = İsmi kaydet:
|
|||||||
save.rename = Yeniden isimlendir
|
save.rename = Yeniden isimlendir
|
||||||
save.rename.text = Yeni isim:
|
save.rename.text = Yeni isim:
|
||||||
selectslot = Bir kayıt seçin.
|
selectslot = Bir kayıt seçin.
|
||||||
slot = [accent]Slot {0}
|
slot = [accent]Yuva {0}
|
||||||
editmessage = Mesajı Düzenle
|
editmessage = Mesajı Düzenle
|
||||||
save.corrupted = [accent]Kayıt dosyası bozuk veya geçersiz!
|
save.corrupted = [accent]Kayıt dosyası bozuk veya geçersiz!
|
||||||
empty = <boş>
|
empty = <boş>
|
||||||
@@ -1252,8 +1252,8 @@ block.plastanium-wall.description = Elektrik arklarını emen ve otomatik enerji
|
|||||||
block.plastanium-wall-large.description = Elektrik arklarını emen ve otomatik enerji noktası bağlantılarını engelleyen özel bir duvar türü.\nBirçok blok alan kaplar.
|
block.plastanium-wall-large.description = Elektrik arklarını emen ve otomatik enerji noktası bağlantılarını engelleyen özel bir duvar türü.\nBirçok blok alan kaplar.
|
||||||
block.thorium-wall.description = Güçlü bir savunma bloğu.\nDüşmanlardan iyi korunma sağlar.
|
block.thorium-wall.description = Güçlü bir savunma bloğu.\nDüşmanlardan iyi korunma sağlar.
|
||||||
block.thorium-wall-large.description = Güçlü bir savunma bloğu.\nDüşmanlardan iyi korunma sağlar.\nBirçok blok alan kaplar.
|
block.thorium-wall-large.description = Güçlü bir savunma bloğu.\nDüşmanlardan iyi korunma sağlar.\nBirçok blok alan kaplar.
|
||||||
block.phase-wall.description = Özel faz örgüsü bazlı yansıtıcı materyal ile kaplanmış bir duvar. Çoğu mermi çarpma anında saptırır.
|
block.phase-wall.description = Özel faz örgüsü bazlı yansıtıcı materyal ile kaplanmış bir duvar. Çoğu mermi çarpma anında geri sektirir.
|
||||||
block.phase-wall-large.description = Özel faz bazlı yansıtıcı bileşik ile kaplanmış bir duvar. Çoğu mermi çarpma anında saptırır.\nBirçok blok alan kaplar.
|
block.phase-wall-large.description = Özel faz bazlı yansıtıcı bileşik ile kaplanmış bir duvar. Çoğu mermi çarpma anında geri sektirir.\nBirçok blok alan kaplar.
|
||||||
block.surge-wall.description = Son derece dayanıklı bir savunma bloğu.\nMermi temasıyla yükü toplar ve bu yükü rastgele serbest bırakır.
|
block.surge-wall.description = Son derece dayanıklı bir savunma bloğu.\nMermi temasıyla yükü toplar ve bu yükü rastgele serbest bırakır.
|
||||||
block.surge-wall-large.description = Son derece dayanıklı bir savunma bloğu.\nMermi temasıyla yükü toplar ve bu yükü rastgele serbest bırakır.\nBirçok blok alan kaplar.
|
block.surge-wall-large.description = Son derece dayanıklı bir savunma bloğu.\nMermi temasıyla yükü toplar ve bu yükü rastgele serbest bırakır.\nBirçok blok alan kaplar.
|
||||||
block.door.description = Küçük bir kapı. Dokunarak açılabilir veya kapatılabilir.
|
block.door.description = Küçük bir kapı. Dokunarak açılabilir veya kapatılabilir.
|
||||||
@@ -1266,7 +1266,7 @@ block.shock-mine.description = Mayına basan düşmanlara hasar verir. Düşmana
|
|||||||
block.conveyor.description = Temel materyal taşıma bloğu. Materyalleri ileri taşır ve onları diğer bloklara otomatik olarak yerleştirir. Çevrilebilir.
|
block.conveyor.description = Temel materyal taşıma bloğu. Materyalleri ileri taşır ve onları diğer bloklara otomatik olarak yerleştirir. Çevrilebilir.
|
||||||
block.titanium-conveyor.description = Gelişmiş materyal taşıma bloğu. Materyalleri standart konveyörlerden daha hızlı taşır.
|
block.titanium-conveyor.description = Gelişmiş materyal taşıma bloğu. Materyalleri standart konveyörlerden daha hızlı taşır.
|
||||||
block.plastanium-conveyor.description = Materyalleri gruplar halinde taşır.\nArkadan eşyaları kabul eder ve öndeki üç yöne boşaltır.
|
block.plastanium-conveyor.description = Materyalleri gruplar halinde taşır.\nArkadan eşyaları kabul eder ve öndeki üç yöne boşaltır.
|
||||||
block.junction.description = Çakışan iki konveyör hattı arasında bir köprü görevi görür. İki farklı konveyörğn farklı hedeflere farklı materyalleri taşıdığı durumlarda kullanışlıdır.
|
block.junction.description = Çakışan iki konveyör hattı arasında bir köprü görevi görür. İki farklı konveyörün farklı hedeflere farklı materyalleri taşıdığı durumlarda kullanışlıdır.
|
||||||
block.bridge-conveyor.description = Gelişmiş materyal taşıma bloğu. Materyalleri her türlü arazi veya binanın üzerinden üç bloğa kadar uzağa taşıyabilir.
|
block.bridge-conveyor.description = Gelişmiş materyal taşıma bloğu. Materyalleri her türlü arazi veya binanın üzerinden üç bloğa kadar uzağa taşıyabilir.
|
||||||
block.phase-conveyor.description = Gelişmiş materyal taşıma bloğu. Materyalleri kendisine bağlı bir başka faz konveyörüne ışınlamak için enerji kullanır.
|
block.phase-conveyor.description = Gelişmiş materyal taşıma bloğu. Materyalleri kendisine bağlı bir başka faz konveyörüne ışınlamak için enerji kullanır.
|
||||||
block.sorter.description = Materyalleri ayıklar. Eğer materyal seçilen ile eşleşiyorsa geçmesine izin verilir. Yoksa materyal sağa ya da sola atılır.
|
block.sorter.description = Materyalleri ayıklar. Eğer materyal seçilen ile eşleşiyorsa geçmesine izin verilir. Yoksa materyal sağa ya da sola atılır.
|
||||||
|
|||||||
@@ -420,7 +420,7 @@ filters.empty = [lightgray]Немає фільтрів! Додайте хоча
|
|||||||
filter.distort = Спотворення
|
filter.distort = Спотворення
|
||||||
filter.noise = Шум
|
filter.noise = Шум
|
||||||
filter.enemyspawn = Вибір точки появи противників
|
filter.enemyspawn = Вибір точки появи противників
|
||||||
filter.spawnpath = Path To Spawn
|
filter.spawnpath = Шлях до точки появи
|
||||||
filter.corespawn = Вибір ядра
|
filter.corespawn = Вибір ядра
|
||||||
filter.median = Медіана
|
filter.median = Медіана
|
||||||
filter.oremedian = Рудна медіана
|
filter.oremedian = Рудна медіана
|
||||||
@@ -445,7 +445,7 @@ filter.option.amount = Кількість
|
|||||||
filter.option.block = Блок
|
filter.option.block = Блок
|
||||||
filter.option.floor = Поверхня
|
filter.option.floor = Поверхня
|
||||||
filter.option.flooronto = Цільова поверхня
|
filter.option.flooronto = Цільова поверхня
|
||||||
filter.option.target = Target
|
filter.option.target = Ціль
|
||||||
filter.option.wall = Стіна
|
filter.option.wall = Стіна
|
||||||
filter.option.ore = Руда
|
filter.option.ore = Руда
|
||||||
filter.option.floor2 = Друга поверхня
|
filter.option.floor2 = Друга поверхня
|
||||||
@@ -462,7 +462,7 @@ load = Завантажити
|
|||||||
save = Зберегти
|
save = Зберегти
|
||||||
fps = FPS: {0}
|
fps = FPS: {0}
|
||||||
ping = Затримка: {0} мс
|
ping = Затримка: {0} мс
|
||||||
language.restart = Будь ласка, перезапустіть свою гру, щоби налаштування мови набули чинності.
|
language.restart = Перезапустіть свою гру, щоби налаштування мови набули чинності.
|
||||||
settings = Налаштування
|
settings = Налаштування
|
||||||
tutorial = Навчання
|
tutorial = Навчання
|
||||||
tutorial.retake = Пройти навчання ще раз
|
tutorial.retake = Пройти навчання ще раз
|
||||||
@@ -482,6 +482,8 @@ launch.text = Запуск
|
|||||||
research.multiplayer = Лише власник сервера має змогу досліджувати предмети.
|
research.multiplayer = Лише власник сервера має змогу досліджувати предмети.
|
||||||
uncover = Розкрити
|
uncover = Розкрити
|
||||||
configure = Налаштувати вивантаження
|
configure = Налаштувати вивантаження
|
||||||
|
|
||||||
|
#TODO
|
||||||
loadout = Вивантаження
|
loadout = Вивантаження
|
||||||
resources = Ресурси
|
resources = Ресурси
|
||||||
bannedblocks = Заборонені блоки
|
bannedblocks = Заборонені блоки
|
||||||
@@ -512,7 +514,7 @@ weather.rain.name = Дощ
|
|||||||
weather.snow.name = Сніг
|
weather.snow.name = Сніг
|
||||||
weather.sandstorm.name = Піщана буря
|
weather.sandstorm.name = Піщана буря
|
||||||
weather.sporestorm.name = Спорова буря
|
weather.sporestorm.name = Спорова буря
|
||||||
weather.fog.name = Fog
|
weather.fog.name = Туман
|
||||||
|
|
||||||
sectors.unexplored = [lightgray]Не досліджено
|
sectors.unexplored = [lightgray]Не досліджено
|
||||||
sectors.resources = Ресурси:
|
sectors.resources = Ресурси:
|
||||||
@@ -523,7 +525,7 @@ sectors.launch = Запустити
|
|||||||
sectors.select = Вибрати
|
sectors.select = Вибрати
|
||||||
sectors.nonelaunch = [lightgray]нічого (сонце)
|
sectors.nonelaunch = [lightgray]нічого (сонце)
|
||||||
sectors.rename = Перейменування сектора
|
sectors.rename = Перейменування сектора
|
||||||
sector.missingresources = [scarlet]Insufficient Core Resources
|
sector.missingresources = [scarlet]Недостатньо ресурсів в ядрі
|
||||||
|
|
||||||
planet.serpulo.name = Cерпуло
|
planet.serpulo.name = Cерпуло
|
||||||
planet.sun.name = Сонце
|
planet.sun.name = Сонце
|
||||||
@@ -550,7 +552,7 @@ sector.overgrowth.description = Ближче до джерела спор є т
|
|||||||
sector.tarFields.description = Між горами та пустелею простягається окраїна зони видобутку нафти. Це один із небагатьох районів із корисними для використання запасами смоли.\nНе зважаючи на те, що територія покинута, вона має поблизу небезпечні сили противника. Не варто їх недооцінювати.\n\n[lightgray]Якщо можливо, дослідіть технологію перероблювання нафти.
|
sector.tarFields.description = Між горами та пустелею простягається окраїна зони видобутку нафти. Це один із небагатьох районів із корисними для використання запасами смоли.\nНе зважаючи на те, що територія покинута, вона має поблизу небезпечні сили противника. Не варто їх недооцінювати.\n\n[lightgray]Якщо можливо, дослідіть технологію перероблювання нафти.
|
||||||
sector.desolateRift.description = Надзвичайно небезпечна зона. Багато ресурсів, але мало місця. Високий ризик знищення. Евакуюватися потрібно якомога швидше. Не розслабляйтеся між ворожими атаками та знайдіть ахіллесову п’яту супротивника.
|
sector.desolateRift.description = Надзвичайно небезпечна зона. Багато ресурсів, але мало місця. Високий ризик знищення. Евакуюватися потрібно якомога швидше. Не розслабляйтеся між ворожими атаками та знайдіть ахіллесову п’яту супротивника.
|
||||||
sector.nuclearComplex.description = Колишній об’єкт для виробництва та перероблювання торію було зведено до руїн.\n[lightgray]Дослідіть торій та його нескінченну кількість застосувань.\n\n Противник, який постійно шукає нападників, присутній тут у великій кількості, тому не баріться з евакуацією.
|
sector.nuclearComplex.description = Колишній об’єкт для виробництва та перероблювання торію було зведено до руїн.\n[lightgray]Дослідіть торій та його нескінченну кількість застосувань.\n\n Противник, який постійно шукає нападників, присутній тут у великій кількості, тому не баріться з евакуацією.
|
||||||
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.
|
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.language = Мова
|
||||||
settings.data = Ігрові дані
|
settings.data = Ігрові дані
|
||||||
@@ -566,14 +568,13 @@ settings.clear.confirm = Ви дійсно хочете очистити ці д
|
|||||||
settings.clearall.confirm = [scarlet]УВАГА![]\nЦе очистить усі дані, включно із збереженнями, мапами, розблокованим та налаштуваннями керування.\nПісля натискання «Гаразд» гра видалить усі дані та автоматично закриється.
|
settings.clearall.confirm = [scarlet]УВАГА![]\nЦе очистить усі дані, включно із збереженнями, мапами, розблокованим та налаштуваннями керування.\nПісля натискання «Гаразд» гра видалить усі дані та автоматично закриється.
|
||||||
settings.clearsaves.confirm = Ви справді хочете видалити всі ваші збереження?
|
settings.clearsaves.confirm = Ви справді хочете видалити всі ваші збереження?
|
||||||
settings.clearsaves = Очистити збереження
|
settings.clearsaves = Очистити збереження
|
||||||
settings.clearresearch = Clear Research
|
settings.clearresearch = Очистити дослідження
|
||||||
settings.clearresearch.confirm = Are you sure you want to clear all of your campaign research?
|
settings.clearresearch.confirm = Ви справді хочете очистити дослідження кампанії?
|
||||||
settings.clearcampaignsaves = Clear Campaign Saves
|
settings.clearcampaignsaves = Очистити збереження в кампанії
|
||||||
settings.clearcampaignsaves.confirm = Are you sure you want to clear all of your campaign saves?
|
settings.clearcampaignsaves.confirm = Ви справді хочете очистити всі збереженні в кампанії?
|
||||||
paused = [accent]< Пауза >
|
paused = [accent]< Пауза >
|
||||||
clear = Очистити
|
clear = Очистити
|
||||||
banned = [scarlet]Заблоковано
|
banned = [scarlet]Заблоковано
|
||||||
unplaceable.sectorcaptured = [scarlet]Вимагає захопленого сектору
|
|
||||||
yes = Так
|
yes = Так
|
||||||
no = Ні
|
no = Ні
|
||||||
info.title = Інформація
|
info.title = Інформація
|
||||||
@@ -581,7 +582,7 @@ error.title = [crimson]Виникла помилка
|
|||||||
error.crashtitle = Виникла помилка
|
error.crashtitle = Виникла помилка
|
||||||
unit.nobuild = [scarlet]Ця одиниця не може будувати
|
unit.nobuild = [scarlet]Ця одиниця не може будувати
|
||||||
lastaccessed = [lightgray]Остання зміна від {0}
|
lastaccessed = [lightgray]Остання зміна від {0}
|
||||||
block.unknown = [lightgray]???
|
block.unknown = [lightgray]ШО ЗА???
|
||||||
|
|
||||||
stat.input = Ввід
|
stat.input = Ввід
|
||||||
stat.output = Вивід
|
stat.output = Вивід
|
||||||
@@ -626,28 +627,30 @@ stat.reload = Постріли/секунду
|
|||||||
stat.ammo = Боєприпаси
|
stat.ammo = Боєприпаси
|
||||||
stat.shieldhealth = Міцність щита
|
stat.shieldhealth = Міцність щита
|
||||||
stat.cooldowntime = Тривалість охолодження
|
stat.cooldowntime = Тривалість охолодження
|
||||||
stat.explosiveness = Explosiveness
|
stat.explosiveness = Вибухонебезпечність
|
||||||
stat.basedeflectchance = Base Deflect Chance
|
stat.basedeflectchance = Базовий шанс відбиття
|
||||||
stat.lightningchance = Lightning Chance
|
stat.lightningchance = Шанс удару блискавки
|
||||||
stat.lightningdamage = Lightning Damage
|
stat.lightningdamage = Шкода від удару блискавки
|
||||||
stat.flammability = Flammability
|
stat.flammability = Займистість
|
||||||
stat.radioactivity = Radioactivity
|
stat.radioactivity = Радіоактивність
|
||||||
stat.heatcapacity = HeatCapacity
|
stat.heatcapacity = Теплоємність
|
||||||
stat.viscosity = Viscosity
|
stat.viscosity = В'язкість
|
||||||
stat.temperature = Temperature
|
stat.temperature = Температура
|
||||||
stat.speed = Speed
|
stat.speed = Швидкість
|
||||||
stat.buildspeed = Build Speed
|
stat.buildspeed = Швидкість будування
|
||||||
stat.minespeed = Mine Speed
|
stat.minespeed = Швидкість видобутку
|
||||||
stat.minetier = Mine Tier
|
stat.minetier = Рівень видобутку
|
||||||
stat.payloadcapacity = Payload Capacity
|
stat.payloadcapacity = Вантажопідйомність
|
||||||
stat.commandlimit = Command Limit
|
stat.commandlimit = Максимум в загоні
|
||||||
stat.abilities = Abilities
|
stat.abilities = Здібності
|
||||||
|
stat.canboost = Можна прискорити
|
||||||
|
stat.flying = Літає
|
||||||
|
|
||||||
ability.forcefield = Force Field
|
ability.forcefield = Щитове поле
|
||||||
ability.repairfield = Repair Field
|
ability.repairfield = Ремонтувальне поле
|
||||||
ability.statusfield = Status Field
|
ability.statusfield = Поле підсилення
|
||||||
ability.unitspawn = {0} Factory
|
ability.unitspawn = Завод одиниць «{0}»
|
||||||
ability.shieldregenfield = Shield Regen Field
|
ability.shieldregenfield = Поле, що відновлює щити
|
||||||
|
|
||||||
bar.drilltierreq = Потребується кращий бур
|
bar.drilltierreq = Потребується кращий бур
|
||||||
bar.noresources = Бракує ресурсів
|
bar.noresources = Бракує ресурсів
|
||||||
@@ -688,7 +691,7 @@ bullet.multiplier = [stat]{0}[lightgray]x патронів
|
|||||||
bullet.reload = [stat]{0}[lightgray]x швидкість перезаряджання
|
bullet.reload = [stat]{0}[lightgray]x швидкість перезаряджання
|
||||||
|
|
||||||
unit.blocks = блоки
|
unit.blocks = блоки
|
||||||
unit.blockssquared = blocks²
|
unit.blockssquared = блоків²
|
||||||
unit.powersecond = одиниць енергії за секунду
|
unit.powersecond = одиниць енергії за секунду
|
||||||
unit.liquidsecond = одиниць рідини за секунду
|
unit.liquidsecond = одиниць рідини за секунду
|
||||||
unit.itemssecond = предметів за секунду
|
unit.itemssecond = предметів за секунду
|
||||||
@@ -711,7 +714,7 @@ category.power = Енергія
|
|||||||
category.liquids = Рідини
|
category.liquids = Рідини
|
||||||
category.items = Предмети
|
category.items = Предмети
|
||||||
category.crafting = Виробництво
|
category.crafting = Виробництво
|
||||||
category.function = Function
|
category.function = Стрільба
|
||||||
category.optional = Додаткові поліпшення
|
category.optional = Додаткові поліпшення
|
||||||
setting.landscape.name = Тільки альбомний (горизонтальний) режим
|
setting.landscape.name = Тільки альбомний (горизонтальний) режим
|
||||||
setting.shadows.name = Тіні
|
setting.shadows.name = Тіні
|
||||||
@@ -940,13 +943,13 @@ unit.eclipse.name = Затьмарник
|
|||||||
unit.mono.name = Моно
|
unit.mono.name = Моно
|
||||||
unit.poly.name = Полі
|
unit.poly.name = Полі
|
||||||
unit.mega.name = Мега
|
unit.mega.name = Мега
|
||||||
unit.quad.name = Квал
|
unit.quad.name = Квад
|
||||||
unit.oct.name = Окт
|
unit.oct.name = Окт
|
||||||
unit.risso.name = Грампус
|
unit.risso.name = Грампус
|
||||||
unit.minke.name = Смугач малий
|
unit.minke.name = Смугач малий
|
||||||
unit.bryde.name = Смугач Брайда
|
unit.bryde.name = Смугач Брайда
|
||||||
unit.sei.name = Sei
|
unit.sei.name = Смугач Сейвал
|
||||||
unit.omura.name = Omura
|
unit.omura.name = Смугач Омури
|
||||||
unit.alpha.name = Альфа
|
unit.alpha.name = Альфа
|
||||||
unit.beta.name = Бета
|
unit.beta.name = Бета
|
||||||
unit.gamma.name = Гамма
|
unit.gamma.name = Гамма
|
||||||
@@ -1100,7 +1103,7 @@ block.liquid-void.name = Рідинний вакуум
|
|||||||
block.power-void.name = Енергетичний вакуум
|
block.power-void.name = Енергетичний вакуум
|
||||||
block.power-source.name = Нескінченне джерело енергії
|
block.power-source.name = Нескінченне джерело енергії
|
||||||
block.unloader.name = Розвантажувач
|
block.unloader.name = Розвантажувач
|
||||||
block.vault.name = Вмістилище
|
block.vault.name = Склад
|
||||||
block.wave.name = Хвиля
|
block.wave.name = Хвиля
|
||||||
block.tsunami.name = Цунамі
|
block.tsunami.name = Цунамі
|
||||||
block.swarmer.name = Роєвик
|
block.swarmer.name = Роєвик
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ schematic.saved = 蓝图已保存。
|
|||||||
schematic.delete.confirm = 确认删除蓝图?
|
schematic.delete.confirm = 确认删除蓝图?
|
||||||
schematic.rename = 重命名蓝图
|
schematic.rename = 重命名蓝图
|
||||||
schematic.info = {0}x{1},{2} 个方块
|
schematic.info = {0}x{1},{2} 个方块
|
||||||
schematic.disabled = [scarlet]Schematics disabled[]\nYou are not allowed to use schematics on this [accent]map[] or [accent]server.
|
schematic.disabled = [scarlet]蓝图已禁用![]\n您不能在此[accent]地图[]或[accent]服务器[]上使用蓝图.
|
||||||
|
|
||||||
stat.wave = 防守波数:[accent]{0}
|
stat.wave = 防守波数:[accent]{0}
|
||||||
stat.enemiesDestroyed = 消灭敌人:[accent]{0}
|
stat.enemiesDestroyed = 消灭敌人:[accent]{0}
|
||||||
@@ -151,7 +151,7 @@ researched = [lightgray]{0}己研究。
|
|||||||
research.progress = {0}% 完成度
|
research.progress = {0}% 完成度
|
||||||
players = {0} 位玩家在线
|
players = {0} 位玩家在线
|
||||||
players.single = {0} 位玩家在线
|
players.single = {0} 位玩家在线
|
||||||
players.search = search
|
players.search = 研究
|
||||||
players.notfound = [gray]没有找到玩家。
|
players.notfound = [gray]没有找到玩家。
|
||||||
server.closing = [accent]服务器关闭…
|
server.closing = [accent]服务器关闭…
|
||||||
server.kicked.kick = 你被踢出了服务器。
|
server.kicked.kick = 你被踢出了服务器。
|
||||||
@@ -291,8 +291,8 @@ waiting = [lightgray]等待中…
|
|||||||
waiting.players = 等待玩家中…
|
waiting.players = 等待玩家中…
|
||||||
wave.enemies = [lightgray]剩余 {0} 个敌人
|
wave.enemies = [lightgray]剩余 {0} 个敌人
|
||||||
wave.enemy = [lightgray]剩余 {0} 个敌人
|
wave.enemy = [lightgray]剩余 {0} 个敌人
|
||||||
wave.guardianwarn = Guardian approaching in [accent]{0}[] waves.
|
wave.guardianwarn = Boss 将在[accent]{0}[]波后到来。
|
||||||
wave.guardianwarn.one = Guardian approaching in [accent]{0}[] wave.
|
wave.guardianwarn.one = Boss 将在[accent]{0}[]波后到来。
|
||||||
loadimage = 加载图片
|
loadimage = 加载图片
|
||||||
saveimage = 保存图片
|
saveimage = 保存图片
|
||||||
unknown = 未知
|
unknown = 未知
|
||||||
@@ -331,7 +331,7 @@ editor.generation = 筛选器:
|
|||||||
editor.ingame = 游戏内编辑
|
editor.ingame = 游戏内编辑
|
||||||
editor.publish.workshop = 上传到创意工坊
|
editor.publish.workshop = 上传到创意工坊
|
||||||
editor.newmap = 新地图
|
editor.newmap = 新地图
|
||||||
editor.center = Center
|
editor.center = 居中
|
||||||
workshop = 创意工坊
|
workshop = 创意工坊
|
||||||
waves.title = 波数
|
waves.title = 波数
|
||||||
waves.remove = 移除
|
waves.remove = 移除
|
||||||
@@ -339,9 +339,9 @@ waves.never = < 无限 >
|
|||||||
waves.every = 每
|
waves.every = 每
|
||||||
waves.waves = 波
|
waves.waves = 波
|
||||||
waves.perspawn = 每次生成
|
waves.perspawn = 每次生成
|
||||||
waves.shields = 护盾/波次
|
waves.shields = 护盾/波
|
||||||
waves.to = 至
|
waves.to = 至
|
||||||
waves.guardian = 首领
|
waves.guardian = Boss
|
||||||
waves.preview = 预览
|
waves.preview = 预览
|
||||||
waves.edit = 编辑…
|
waves.edit = 编辑…
|
||||||
waves.copy = 复制到剪贴板
|
waves.copy = 复制到剪贴板
|
||||||
@@ -420,7 +420,7 @@ filters.empty = [lightgray]没有过滤条件!用下方的按钮添加。
|
|||||||
filter.distort = 扭曲程度
|
filter.distort = 扭曲程度
|
||||||
filter.noise = 波动程度
|
filter.noise = 波动程度
|
||||||
filter.enemyspawn = 敌人生成点选择
|
filter.enemyspawn = 敌人生成点选择
|
||||||
filter.spawnpath = Path To Spawn
|
filter.spawnpath = 敌人生成途径
|
||||||
filter.corespawn = 核心降落点选择
|
filter.corespawn = 核心降落点选择
|
||||||
filter.median = 平均数
|
filter.median = 平均数
|
||||||
filter.oremedian = 矿石平均数
|
filter.oremedian = 矿石平均数
|
||||||
@@ -445,7 +445,7 @@ filter.option.amount = 数量
|
|||||||
filter.option.block = 方块
|
filter.option.block = 方块
|
||||||
filter.option.floor = 地面
|
filter.option.floor = 地面
|
||||||
filter.option.flooronto = 地面目标
|
filter.option.flooronto = 地面目标
|
||||||
filter.option.target = Target
|
filter.option.target = 目标
|
||||||
filter.option.wall = 墙
|
filter.option.wall = 墙
|
||||||
filter.option.ore = 矿石
|
filter.option.ore = 矿石
|
||||||
filter.option.floor2 = 二重地面
|
filter.option.floor2 = 二重地面
|
||||||
@@ -479,7 +479,7 @@ requirement.research = 研究 {0}
|
|||||||
requirement.capture = 占领 {0}
|
requirement.capture = 占领 {0}
|
||||||
bestwave = [lightgray]最高波次:{0}
|
bestwave = [lightgray]最高波次:{0}
|
||||||
launch.text = 发射
|
launch.text = 发射
|
||||||
research.multiplayer = Only the host can research items.
|
research.multiplayer = 仅有服主可研究物品。
|
||||||
uncover = 解锁
|
uncover = 解锁
|
||||||
configure = 设定装运的数量
|
configure = 设定装运的数量
|
||||||
loadout = 装运
|
loadout = 装运
|
||||||
@@ -495,7 +495,7 @@ zone.objective = [lightgray]目标:[accent]{0}
|
|||||||
zone.objective.survival = 生存
|
zone.objective.survival = 生存
|
||||||
zone.objective.attack = 摧毁敌方核心
|
zone.objective.attack = 摧毁敌方核心
|
||||||
add = 添加…
|
add = 添加…
|
||||||
boss.health = BOSS 生命值
|
boss.health = Boss 生命值
|
||||||
|
|
||||||
connectfail = [crimson]服务器连接失败:[accent]{0}
|
connectfail = [crimson]服务器连接失败:[accent]{0}
|
||||||
error.unreachable = 无法访问服务器。\n确定输对地址了吗?
|
error.unreachable = 无法访问服务器。\n确定输对地址了吗?
|
||||||
@@ -512,7 +512,7 @@ weather.rain.name = 降雨
|
|||||||
weather.snow.name = 降雪
|
weather.snow.name = 降雪
|
||||||
weather.sandstorm.name = 沙尘暴
|
weather.sandstorm.name = 沙尘暴
|
||||||
weather.sporestorm.name = 孢子雾
|
weather.sporestorm.name = 孢子雾
|
||||||
weather.fog.name = Fog
|
weather.fog.name = 雾
|
||||||
|
|
||||||
sectors.unexplored = [lightgray]未探索
|
sectors.unexplored = [lightgray]未探索
|
||||||
sectors.resources = 资源:
|
sectors.resources = 资源:
|
||||||
@@ -522,11 +522,11 @@ sectors.resume = 继续
|
|||||||
sectors.launch = 发射
|
sectors.launch = 发射
|
||||||
sectors.select = 选择
|
sectors.select = 选择
|
||||||
sectors.nonelaunch = [lightgray]无 (太阳)
|
sectors.nonelaunch = [lightgray]无 (太阳)
|
||||||
sectors.rename = Rename Sector
|
sectors.rename = 重命名区块
|
||||||
sector.missingresources = [scarlet]Insufficient Core Resources
|
sector.missingresources = [scarlet]核心资源不足
|
||||||
|
|
||||||
planet.serpulo.name = Serpulo
|
planet.serpulo.name = 塞普罗
|
||||||
planet.sun.name = Sun
|
planet.sun.name = 太阳
|
||||||
|
|
||||||
sector.groundZero.name = 零号地区
|
sector.groundZero.name = 零号地区
|
||||||
sector.craters.name = 陨石带
|
sector.craters.name = 陨石带
|
||||||
@@ -538,7 +538,7 @@ sector.nuclearComplex.name = 核裂阵
|
|||||||
sector.overgrowth.name = 增生区
|
sector.overgrowth.name = 增生区
|
||||||
sector.tarFields.name = 油田
|
sector.tarFields.name = 油田
|
||||||
sector.saltFlats.name = 盐碱荒滩
|
sector.saltFlats.name = 盐碱荒滩
|
||||||
sector.fungalPass.name = Fungal Pass
|
sector.fungalPass.name = 真菌通道
|
||||||
|
|
||||||
sector.groundZero.description = 踏上旅程的最佳位置。这儿的敌人威胁很小,但资源也少。\n收集尽可能多的铅和铜。\n出发吧!
|
sector.groundZero.description = 踏上旅程的最佳位置。这儿的敌人威胁很小,但资源也少。\n收集尽可能多的铅和铜。\n出发吧!
|
||||||
sector.frozenForest.description = 即使是靠近山脉的这里,孢子也已经扩散。他们不能长期停留在寒冷的温度中。\n\n开始运用电力。建造火力发电机并学会使用修理者。
|
sector.frozenForest.description = 即使是靠近山脉的这里,孢子也已经扩散。他们不能长期停留在寒冷的温度中。\n\n开始运用电力。建造火力发电机并学会使用修理者。
|
||||||
@@ -566,10 +566,10 @@ settings.clear.confirm = 您确定要清除此数据?\n此操作无法撤销
|
|||||||
settings.clearall.confirm = [scarlet]警告![]\n这将清除所有数据,包括存档、地图、解锁和按键绑定。\n按「是」后,游戏将删除所有数据并自动退出。
|
settings.clearall.confirm = [scarlet]警告![]\n这将清除所有数据,包括存档、地图、解锁和按键绑定。\n按「是」后,游戏将删除所有数据并自动退出。
|
||||||
settings.clearsaves.confirm = 您确定要清除存档?
|
settings.clearsaves.confirm = 您确定要清除存档?
|
||||||
settings.clearsaves = 清除存档
|
settings.clearsaves = 清除存档
|
||||||
settings.clearresearch = Clear Research
|
settings.clearresearch = 清除研究进度
|
||||||
settings.clearresearch.confirm = Are you sure you want to clear all of your campaign research?
|
settings.clearresearch.confirm = 您确定要清除战役研究进度?
|
||||||
settings.clearcampaignsaves = Clear Campaign Saves
|
settings.clearcampaignsaves = 清除战役进度
|
||||||
settings.clearcampaignsaves.confirm = Are you sure you want to clear all of your campaign saves?
|
settings.clearcampaignsaves.confirm = 您确定要清除战役进度?
|
||||||
paused = [accent]< 暂停 >
|
paused = [accent]< 暂停 >
|
||||||
clear = 清除
|
clear = 清除
|
||||||
banned = [scarlet]已禁止
|
banned = [scarlet]已禁止
|
||||||
@@ -580,7 +580,7 @@ info.title = [accent]详情
|
|||||||
error.title = [crimson]发生了一个错误
|
error.title = [crimson]发生了一个错误
|
||||||
error.crashtitle = 发生了一个错误
|
error.crashtitle = 发生了一个错误
|
||||||
unit.nobuild = [scarlet]单位未能建造
|
unit.nobuild = [scarlet]单位未能建造
|
||||||
lastaccessed = [lightgray]Last Accessed: {0}
|
lastaccessed = [lightgray]上次操作: {0}
|
||||||
block.unknown = [lightgray]???
|
block.unknown = [lightgray]???
|
||||||
|
|
||||||
stat.input = 输入
|
stat.input = 输入
|
||||||
@@ -606,7 +606,7 @@ stat.powerconnections = 最多连接
|
|||||||
stat.poweruse = 使用能量
|
stat.poweruse = 使用能量
|
||||||
stat.powerdamage = 功率/损伤
|
stat.powerdamage = 功率/损伤
|
||||||
stat.itemcapacity = 物品容量
|
stat.itemcapacity = 物品容量
|
||||||
stat.memorycapacity = Memory Capacity
|
stat.memorycapacity = 内存容量
|
||||||
stat.basepowergeneration = 基础能源输出
|
stat.basepowergeneration = 基础能源输出
|
||||||
stat.productiontime = 生产时间
|
stat.productiontime = 生产时间
|
||||||
stat.repairtime = 建筑完全修复时间
|
stat.repairtime = 建筑完全修复时间
|
||||||
@@ -626,28 +626,28 @@ stat.reload = 每秒发射数
|
|||||||
stat.ammo = 弹药
|
stat.ammo = 弹药
|
||||||
stat.shieldhealth = 盾容
|
stat.shieldhealth = 盾容
|
||||||
stat.cooldowntime = 冷却时间
|
stat.cooldowntime = 冷却时间
|
||||||
stat.explosiveness = Explosiveness
|
stat.explosiveness = 爆炸性
|
||||||
stat.basedeflectchance = Base Deflect Chance
|
stat.basedeflectchance = 基础反射几率
|
||||||
stat.lightningchance = Lightning Chance
|
stat.lightningchance = 激发闪电几率
|
||||||
stat.lightningdamage = Lightning Damage
|
stat.lightningdamage = 激发闪电伤害
|
||||||
stat.flammability = Flammability
|
stat.flammability = 燃烧性
|
||||||
stat.radioactivity = Radioactivity
|
stat.radioactivity = 放射性
|
||||||
stat.heatcapacity = HeatCapacity
|
stat.heatcapacity = 热容量
|
||||||
stat.viscosity = Viscosity
|
stat.viscosity = 粘度
|
||||||
stat.temperature = Temperature
|
stat.temperature = 温度
|
||||||
stat.speed = Speed
|
stat.speed = 速度
|
||||||
stat.buildspeed = Build Speed
|
stat.buildspeed = 建造速度
|
||||||
stat.minespeed = Mine Speed
|
stat.minespeed = 采矿速度
|
||||||
stat.minetier = Mine Tier
|
stat.minetier = 采矿等级
|
||||||
stat.payloadcapacity = Payload Capacity
|
stat.payloadcapacity = 载货容量
|
||||||
stat.commandlimit = Command Limit
|
stat.commandlimit = 指挥上限
|
||||||
stat.abilities = Abilities
|
stat.abilities = 能力
|
||||||
|
|
||||||
ability.forcefield = Force Field
|
ability.forcefield = 力墙场
|
||||||
ability.repairfield = Repair Field
|
ability.repairfield = 修复场
|
||||||
ability.statusfield = Status Field
|
ability.statusfield = 状态场
|
||||||
ability.unitspawn = {0} Factory
|
ability.unitspawn = {0} 工厂
|
||||||
ability.shieldregenfield = Shield Regen Field
|
ability.shieldregenfield = 护盾再生场
|
||||||
|
|
||||||
bar.drilltierreq = 需要更好的钻头
|
bar.drilltierreq = 需要更好的钻头
|
||||||
bar.noresources = 缺失资源
|
bar.noresources = 缺失资源
|
||||||
@@ -659,7 +659,7 @@ bar.powerbalance = 能量:{0}/秒
|
|||||||
bar.powerstored = 储能:{0}/{1}
|
bar.powerstored = 储能:{0}/{1}
|
||||||
bar.poweramount = 能量:{0}
|
bar.poweramount = 能量:{0}
|
||||||
bar.poweroutput = 能量输出:{0}
|
bar.poweroutput = 能量输出:{0}
|
||||||
bar.powerlines = Connections: {0}/{1}
|
bar.powerlines = 链接: {0}/{1}
|
||||||
bar.items = 物品:{0}
|
bar.items = 物品:{0}
|
||||||
bar.capacity = 容量:{0}
|
bar.capacity = 容量:{0}
|
||||||
bar.unitcap = {0} {1}/{2}
|
bar.unitcap = {0} {1}/{2}
|
||||||
@@ -671,7 +671,7 @@ bar.progress = 制造进度
|
|||||||
bar.input = 输入
|
bar.input = 输入
|
||||||
bar.output = 输出
|
bar.output = 输出
|
||||||
|
|
||||||
units.processorcontrol = [lightgray]Processor Controlled
|
units.processorcontrol = [lightgray]由处理器控制
|
||||||
|
|
||||||
bullet.damage = [stat]{0}[lightgray] 伤害
|
bullet.damage = [stat]{0}[lightgray] 伤害
|
||||||
bullet.splashdamage = [stat]{0}[lightgray] 范围伤害 ~[stat] {1}[lightgray] 格
|
bullet.splashdamage = [stat]{0}[lightgray] 范围伤害 ~[stat] {1}[lightgray] 格
|
||||||
@@ -680,7 +680,7 @@ bullet.homing = [stat] 追踪
|
|||||||
bullet.shock = [stat] 电击
|
bullet.shock = [stat] 电击
|
||||||
bullet.frag = [stat] 分裂
|
bullet.frag = [stat] 分裂
|
||||||
bullet.knockback = [stat]{0}[lightgray] 击退
|
bullet.knockback = [stat]{0}[lightgray] 击退
|
||||||
bullet.pierce = [stat]{0}[lightgray]x pierce
|
bullet.pierce = [stat]{0}[lightgray]x 穿透
|
||||||
bullet.infinitepierce = [stat]pierce
|
bullet.infinitepierce = [stat]pierce
|
||||||
bullet.freezing = [stat] 冰冻
|
bullet.freezing = [stat] 冰冻
|
||||||
bullet.tarred = [stat] 减速
|
bullet.tarred = [stat] 减速
|
||||||
@@ -688,7 +688,7 @@ bullet.multiplier = [stat]{0}[lightgray]x 装弹数量
|
|||||||
bullet.reload = [stat]{0}[lightgray]x 装弹速度
|
bullet.reload = [stat]{0}[lightgray]x 装弹速度
|
||||||
|
|
||||||
unit.blocks = 方块
|
unit.blocks = 方块
|
||||||
unit.blockssquared = blocks²
|
unit.blockssquared = 方块²
|
||||||
unit.powersecond = 能量/秒
|
unit.powersecond = 能量/秒
|
||||||
unit.liquidsecond = 液体/秒
|
unit.liquidsecond = 液体/秒
|
||||||
unit.itemssecond = 物品/秒
|
unit.itemssecond = 物品/秒
|
||||||
@@ -711,7 +711,7 @@ category.power = 能量
|
|||||||
category.liquids = 液体
|
category.liquids = 液体
|
||||||
category.items = 物品
|
category.items = 物品
|
||||||
category.crafting = 制造
|
category.crafting = 制造
|
||||||
category.function = Function
|
category.function = 功能
|
||||||
category.optional = 可选的增强
|
category.optional = 可选的增强
|
||||||
setting.landscape.name = 锁定横屏
|
setting.landscape.name = 锁定横屏
|
||||||
setting.shadows.name = 影子
|
setting.shadows.name = 影子
|
||||||
@@ -861,7 +861,7 @@ mode.custom = 自定义模式
|
|||||||
|
|
||||||
rules.infiniteresources = 无限资源
|
rules.infiniteresources = 无限资源
|
||||||
rules.reactorexplosions = 反应堆爆炸
|
rules.reactorexplosions = 反应堆爆炸
|
||||||
rules.schematic = Schematics Allowed
|
rules.schematic = 启用蓝图
|
||||||
rules.wavetimer = 波次计时器
|
rules.wavetimer = 波次计时器
|
||||||
rules.waves = 波次
|
rules.waves = 波次
|
||||||
rules.attack = 攻击模式
|
rules.attack = 攻击模式
|
||||||
@@ -887,8 +887,8 @@ rules.title.unit = 单位
|
|||||||
rules.title.experimental = 实验性
|
rules.title.experimental = 实验性
|
||||||
rules.title.environment = 环境性
|
rules.title.environment = 环境性
|
||||||
rules.lighting = 光照
|
rules.lighting = 光照
|
||||||
rules.enemyLights = Enemy Lights
|
rules.enemyLights = 单位光照
|
||||||
rules.fire = Fire
|
rules.fire = 火焰
|
||||||
rules.explosions = 建筑/单位爆炸伤害
|
rules.explosions = 建筑/单位爆炸伤害
|
||||||
rules.ambientlight = 环境光
|
rules.ambientlight = 环境光
|
||||||
rules.weather = 气候
|
rules.weather = 气候
|
||||||
@@ -926,7 +926,7 @@ unit.mace.name = 战锤
|
|||||||
unit.fortress.name = 堡垒
|
unit.fortress.name = 堡垒
|
||||||
unit.nova.name = 新星
|
unit.nova.name = 新星
|
||||||
unit.pulsar.name = 恒星
|
unit.pulsar.name = 恒星
|
||||||
unit.quasar.name = 超星
|
unit.quasar.name = 耀星
|
||||||
unit.crawler.name = 爬虫
|
unit.crawler.name = 爬虫
|
||||||
unit.atrax.name = 毒蛛
|
unit.atrax.name = 毒蛛
|
||||||
unit.spiroct.name = 血蛭
|
unit.spiroct.name = 血蛭
|
||||||
@@ -938,16 +938,16 @@ unit.zenith.name = 苍穹
|
|||||||
unit.antumbra.name = 月影
|
unit.antumbra.name = 月影
|
||||||
unit.eclipse.name = 日蚀
|
unit.eclipse.name = 日蚀
|
||||||
unit.mono.name = 独影
|
unit.mono.name = 独影
|
||||||
unit.poly.name = 聚辉
|
unit.poly.name = 聚幻
|
||||||
unit.mega.name = 巨灵
|
unit.mega.name = 巨灵
|
||||||
unit.quad.name = 雷霆
|
unit.quad.name = 雷霆
|
||||||
unit.oct.name = 要塞
|
unit.oct.name = 要塞
|
||||||
unit.risso.name = 梭鱼
|
unit.risso.name = 梭鱼
|
||||||
unit.minke.name = 刺鲸
|
unit.minke.name = 飞鲨
|
||||||
unit.bryde.name = 戟鲸
|
unit.bryde.name = 戟鲸
|
||||||
unit.sei.name = 水怪
|
unit.sei.name = 蛟龙
|
||||||
unit.omura.name = 海神
|
unit.omura.name = 海神
|
||||||
unit.alpha.name = 沉思者
|
unit.alpha.name = 阿尔法
|
||||||
unit.beta.name = 贝塔
|
unit.beta.name = 贝塔
|
||||||
unit.gamma.name = 伽马
|
unit.gamma.name = 伽马
|
||||||
unit.scepter.name = 权杖
|
unit.scepter.name = 权杖
|
||||||
@@ -956,12 +956,12 @@ unit.vela.name = 灾星
|
|||||||
unit.corvus.name = 死星
|
unit.corvus.name = 死星
|
||||||
|
|
||||||
block.resupply-point.name = 补给点
|
block.resupply-point.name = 补给点
|
||||||
block.parallax.name = 阻滞光束
|
block.parallax.name = 差扰光束
|
||||||
block.cliff.name = 悬崖
|
block.cliff.name = 悬崖
|
||||||
block.sand-boulder.name = 沙砂巨石
|
block.sand-boulder.name = 砂岩
|
||||||
block.grass.name = 草地
|
block.grass.name = 草地
|
||||||
block.slag.name = 矿渣
|
block.slag.name = 矿渣
|
||||||
block.space.name = Space
|
block.space.name = 太空
|
||||||
block.salt.name = 盐碱地
|
block.salt.name = 盐碱地
|
||||||
block.salt-wall.name = 盐墙
|
block.salt-wall.name = 盐墙
|
||||||
block.pebbles.name = 鹅卵石
|
block.pebbles.name = 鹅卵石
|
||||||
@@ -1007,7 +1007,7 @@ block.darksand-water.name = 暗沙 水
|
|||||||
block.char.name = 焦土
|
block.char.name = 焦土
|
||||||
block.dacite.name = 英安岩
|
block.dacite.name = 英安岩
|
||||||
block.dacite-wall.name = 英安岩墙
|
block.dacite-wall.name = 英安岩墙
|
||||||
block.dacite-boulder.name = Dacite Boulder
|
block.dacite-boulder.name = 英安巨岩
|
||||||
block.ice-snow.name = 冰雪地
|
block.ice-snow.name = 冰雪地
|
||||||
block.stone-wall.name = 石墙
|
block.stone-wall.name = 石墙
|
||||||
block.ice-wall.name = 冰墙
|
block.ice-wall.name = 冰墙
|
||||||
@@ -1041,7 +1041,7 @@ block.titanium-wall.name = 钛墙
|
|||||||
block.titanium-wall-large.name = 大型钛墙
|
block.titanium-wall-large.name = 大型钛墙
|
||||||
block.plastanium-wall.name = 塑钢墙
|
block.plastanium-wall.name = 塑钢墙
|
||||||
block.plastanium-wall-large.name = 大型塑钢墙
|
block.plastanium-wall-large.name = 大型塑钢墙
|
||||||
block.phase-wall.name = 相织布墙
|
block.phase-wall.name = 相织物墙
|
||||||
block.phase-wall-large.name = 大型相织物墙
|
block.phase-wall-large.name = 大型相织物墙
|
||||||
block.thorium-wall.name = 钍墙
|
block.thorium-wall.name = 钍墙
|
||||||
block.thorium-wall-large.name = 大型钍墙
|
block.thorium-wall-large.name = 大型钍墙
|
||||||
@@ -1102,7 +1102,7 @@ block.power-source.name = 无限能源
|
|||||||
block.unloader.name = 装卸器
|
block.unloader.name = 装卸器
|
||||||
block.vault.name = 仓库
|
block.vault.name = 仓库
|
||||||
block.wave.name = 波浪
|
block.wave.name = 波浪
|
||||||
block.tsunami.name = Tsunami
|
block.tsunami.name = 海啸
|
||||||
block.swarmer.name = 蜂群
|
block.swarmer.name = 蜂群
|
||||||
block.salvo.name = 齐射炮
|
block.salvo.name = 齐射炮
|
||||||
block.ripple.name = 浪涌
|
block.ripple.name = 浪涌
|
||||||
@@ -1142,7 +1142,7 @@ block.arc.name = 电弧
|
|||||||
block.rtg-generator.name = RTG 发电机
|
block.rtg-generator.name = RTG 发电机
|
||||||
block.spectre.name = 幽灵
|
block.spectre.name = 幽灵
|
||||||
block.meltdown.name = 熔毁
|
block.meltdown.name = 熔毁
|
||||||
block.foreshadow.name = Foreshadow
|
block.foreshadow.name = 厄兆
|
||||||
block.container.name = 容器
|
block.container.name = 容器
|
||||||
block.launch-pad.name = 发射台
|
block.launch-pad.name = 发射台
|
||||||
block.launch-pad-large.name = 大型发射台
|
block.launch-pad-large.name = 大型发射台
|
||||||
@@ -1151,14 +1151,14 @@ block.command-center.name = 指挥中心
|
|||||||
block.ground-factory.name = 陆军工厂
|
block.ground-factory.name = 陆军工厂
|
||||||
block.air-factory.name = 空军工厂
|
block.air-factory.name = 空军工厂
|
||||||
block.naval-factory.name = 海军工厂
|
block.naval-factory.name = 海军工厂
|
||||||
block.additive-reconstructor.name = 添改单位重构工厂
|
block.additive-reconstructor.name = 数增级单位重构工厂
|
||||||
block.multiplicative-reconstructor.name = 多倍单位重构工厂
|
block.multiplicative-reconstructor.name = 倍乘级单位重构工厂
|
||||||
block.exponential-reconstructor.name = 多幂级单位重构工厂
|
block.exponential-reconstructor.name = 多幂级单位重构工厂
|
||||||
block.tetrative-reconstructor.name = 实验性泰坦重构工厂
|
block.tetrative-reconstructor.name = 无量级单位重构工厂
|
||||||
block.payload-conveyor.name = 载荷传送带
|
block.payload-conveyor.name = 载荷传送带
|
||||||
block.payload-router.name = 载荷路由器
|
block.payload-router.name = 载荷路由器
|
||||||
block.disassembler.name = 离心机
|
block.disassembler.name = 解离机
|
||||||
block.silicon-crucible.name = 硅坩埚
|
block.silicon-crucible.name = 热能坩埚
|
||||||
block.overdrive-dome.name = 超速穹顶投射器
|
block.overdrive-dome.name = 超速穹顶投射器
|
||||||
|
|
||||||
block.switch.name = 开关
|
block.switch.name = 开关
|
||||||
@@ -1167,8 +1167,8 @@ block.logic-processor.name = 逻辑处理器
|
|||||||
block.hyper-processor.name = 超核处理器
|
block.hyper-processor.name = 超核处理器
|
||||||
block.logic-display.name = 逻辑显示屏
|
block.logic-display.name = 逻辑显示屏
|
||||||
block.large-logic-display.name = 大型逻辑显示屏
|
block.large-logic-display.name = 大型逻辑显示屏
|
||||||
block.memory-cell.name = 内存单位
|
block.memory-cell.name = 内存元
|
||||||
block.memory-bank.name = Memory Bank
|
block.memory-bank.name = 内存库
|
||||||
|
|
||||||
team.blue.name = 蓝
|
team.blue.name = 蓝
|
||||||
team.crux.name = 红
|
team.crux.name = 红
|
||||||
|
|||||||
@@ -314,3 +314,5 @@
|
|||||||
63422=foreshadow|block-foreshadow-medium
|
63422=foreshadow|block-foreshadow-medium
|
||||||
63421=tsunami|block-tsunami-medium
|
63421=tsunami|block-tsunami-medium
|
||||||
63420=space|block-space-medium
|
63420=space|block-space-medium
|
||||||
|
63419=legacy-unit-factory-air|block-legacy-unit-factory-air-medium
|
||||||
|
63418=legacy-unit-factory-ground|block-legacy-unit-factory-ground-medium
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ const readBytes = path => Vars.mods.getScripts().readBytes(path)
|
|||||||
const loadMusic = path => Vars.mods.getScripts().loadMusic(path)
|
const loadMusic = path => Vars.mods.getScripts().loadMusic(path)
|
||||||
const loadSound = path => Vars.mods.getScripts().loadSound(path)
|
const loadSound = path => Vars.mods.getScripts().loadSound(path)
|
||||||
|
|
||||||
var scriptName = "base.js"
|
let scriptName = "base.js"
|
||||||
var modName = "none"
|
let modName = "none"
|
||||||
|
|
||||||
const print = text => log(modName + "/" + scriptName, text);
|
const print = text => log(modName + "/" + scriptName, text);
|
||||||
|
|
||||||
@@ -82,6 +82,7 @@ importPackage(Packages.mindustry.maps.generators)
|
|||||||
importPackage(Packages.mindustry.maps.planet)
|
importPackage(Packages.mindustry.maps.planet)
|
||||||
importPackage(Packages.mindustry.net)
|
importPackage(Packages.mindustry.net)
|
||||||
importPackage(Packages.mindustry.type)
|
importPackage(Packages.mindustry.type)
|
||||||
|
importPackage(Packages.mindustry.type.weather)
|
||||||
importPackage(Packages.mindustry.ui)
|
importPackage(Packages.mindustry.ui)
|
||||||
importPackage(Packages.mindustry.ui.dialogs)
|
importPackage(Packages.mindustry.ui.dialogs)
|
||||||
importPackage(Packages.mindustry.ui.fragments)
|
importPackage(Packages.mindustry.ui.fragments)
|
||||||
@@ -137,6 +138,7 @@ const PlayerChatEvent = Packages.mindustry.game.EventType.PlayerChatEvent
|
|||||||
const ClientPreConnectEvent = Packages.mindustry.game.EventType.ClientPreConnectEvent
|
const ClientPreConnectEvent = Packages.mindustry.game.EventType.ClientPreConnectEvent
|
||||||
const CommandIssueEvent = Packages.mindustry.game.EventType.CommandIssueEvent
|
const CommandIssueEvent = Packages.mindustry.game.EventType.CommandIssueEvent
|
||||||
const LaunchItemEvent = Packages.mindustry.game.EventType.LaunchItemEvent
|
const LaunchItemEvent = Packages.mindustry.game.EventType.LaunchItemEvent
|
||||||
|
const SectorInvasionEvent = Packages.mindustry.game.EventType.SectorInvasionEvent
|
||||||
const SectorLoseEvent = Packages.mindustry.game.EventType.SectorLoseEvent
|
const SectorLoseEvent = Packages.mindustry.game.EventType.SectorLoseEvent
|
||||||
const WorldLoadEvent = Packages.mindustry.game.EventType.WorldLoadEvent
|
const WorldLoadEvent = Packages.mindustry.game.EventType.WorldLoadEvent
|
||||||
const ClientLoadEvent = Packages.mindustry.game.EventType.ClientLoadEvent
|
const ClientLoadEvent = Packages.mindustry.game.EventType.ClientLoadEvent
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 826 B After Width: | Height: | Size: 826 B |
|
Before Width: | Height: | Size: 917 KiB After Width: | Height: | Size: 917 KiB |
|
Before Width: | Height: | Size: 556 KiB After Width: | Height: | Size: 608 KiB |
|
Before Width: | Height: | Size: 185 KiB After Width: | Height: | Size: 190 KiB |
|
Before Width: | Height: | Size: 429 KiB After Width: | Height: | Size: 429 KiB |
|
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 1.4 MiB |
|
Before Width: | Height: | Size: 2.9 MiB After Width: | Height: | Size: 2.9 MiB |
|
Before Width: | Height: | Size: 186 KiB After Width: | Height: | Size: 191 KiB |
|
Before Width: | Height: | Size: 426 KiB After Width: | Height: | Size: 426 KiB |
|
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 1.4 MiB |
@@ -187,7 +187,7 @@ public class Vars implements Loadable{
|
|||||||
public static ContentLoader content;
|
public static ContentLoader content;
|
||||||
public static GameState state;
|
public static GameState state;
|
||||||
public static EntityCollisions collisions;
|
public static EntityCollisions collisions;
|
||||||
public static DefaultWaves defaultWaves;
|
public static Waves waves;
|
||||||
public static LoopControl loops;
|
public static LoopControl loops;
|
||||||
public static Platform platform = new Platform(){};
|
public static Platform platform = new Platform(){};
|
||||||
public static Mods mods;
|
public static Mods mods;
|
||||||
@@ -256,7 +256,7 @@ public class Vars implements Loadable{
|
|||||||
|
|
||||||
content = new ContentLoader();
|
content = new ContentLoader();
|
||||||
loops = new LoopControl();
|
loops = new LoopControl();
|
||||||
defaultWaves = new DefaultWaves();
|
waves = new Waves();
|
||||||
collisions = new EntityCollisions();
|
collisions = new EntityCollisions();
|
||||||
world = new World();
|
world = new World();
|
||||||
universe = new Universe();
|
universe = new Universe();
|
||||||
@@ -318,6 +318,7 @@ public class Vars implements Loadable{
|
|||||||
|
|
||||||
settings.setAppName(appName);
|
settings.setAppName(appName);
|
||||||
|
|
||||||
|
try{
|
||||||
Writer writer = settings.getDataDirectory().child("last_log.txt").writer(false);
|
Writer writer = settings.getDataDirectory().child("last_log.txt").writer(false);
|
||||||
LogHandler log = Log.logger;
|
LogHandler log = Log.logger;
|
||||||
//ignore it
|
//ignore it
|
||||||
@@ -332,6 +333,10 @@ public class Vars implements Loadable{
|
|||||||
//ignore it
|
//ignore it
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
}catch(Exception e){
|
||||||
|
//handle log file not being found
|
||||||
|
Log.err(e);
|
||||||
|
}
|
||||||
|
|
||||||
loadedFileLogger = true;
|
loadedFileLogger = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -314,24 +314,7 @@ public class BlockIndexer{
|
|||||||
|
|
||||||
/** Find the closest ore block relative to a position. */
|
/** Find the closest ore block relative to a position. */
|
||||||
public Tile findClosestOre(Unit unit, Item item){
|
public Tile findClosestOre(Unit unit, Item item){
|
||||||
if(!(unit instanceof Minerc miner)) return null;
|
return findClosestOre(unit.x, unit.y, item);
|
||||||
|
|
||||||
TileArray arr = getOrePositions(item);
|
|
||||||
|
|
||||||
arr.tiles.sort(t -> t.dst2(unit.x, unit.y));
|
|
||||||
|
|
||||||
for(Tile tile : arr.tiles){
|
|
||||||
for(int x = Math.max(0, tile.x - quadrantSize / 2); x < tile.x + quadrantSize / 2 && x < world.width(); x++){
|
|
||||||
for(int y = Math.max(0, tile.y - quadrantSize / 2); y < tile.y + quadrantSize / 2 && y < world.height(); y++){
|
|
||||||
Tile res = world.tile(x, y);
|
|
||||||
if(res.drop() == item && miner.validMine(res, false)){
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @return extra unit cap of a team. This is added onto the base value. */
|
/** @return extra unit cap of a team. This is added onto the base value. */
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import arc.struct.*;
|
|||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
import arc.util.async.*;
|
import arc.util.async.*;
|
||||||
import mindustry.annotations.Annotations.*;
|
import mindustry.annotations.Annotations.*;
|
||||||
|
import mindustry.content.*;
|
||||||
import mindustry.core.*;
|
import mindustry.core.*;
|
||||||
import mindustry.game.EventType.*;
|
import mindustry.game.EventType.*;
|
||||||
import mindustry.game.*;
|
import mindustry.game.*;
|
||||||
@@ -116,7 +117,7 @@ public class Pathfinder implements Runnable{
|
|||||||
tile.getTeamID(),
|
tile.getTeamID(),
|
||||||
tile.solid(),
|
tile.solid(),
|
||||||
tile.floor().isLiquid,
|
tile.floor().isLiquid,
|
||||||
tile.staticDarkness() >= 2,
|
tile.staticDarkness() >= 2 || (tile.floor().solid && tile.block() == Blocks.air),
|
||||||
nearLiquid,
|
nearLiquid,
|
||||||
nearGround,
|
nearGround,
|
||||||
nearSolid,
|
nearSolid,
|
||||||
|
|||||||
@@ -2,14 +2,17 @@ package mindustry.ai.types;
|
|||||||
|
|
||||||
import arc.math.*;
|
import arc.math.*;
|
||||||
import arc.math.geom.*;
|
import arc.math.geom.*;
|
||||||
|
import arc.struct.*;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
import mindustry.ai.formations.*;
|
import mindustry.ai.formations.*;
|
||||||
import mindustry.entities.units.*;
|
import mindustry.entities.units.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
import mindustry.type.*;
|
import mindustry.type.*;
|
||||||
|
import mindustry.world.*;
|
||||||
import mindustry.world.blocks.storage.CoreBlock.*;
|
import mindustry.world.blocks.storage.CoreBlock.*;
|
||||||
|
|
||||||
public class FormationAI extends AIController implements FormationMember{
|
public class FormationAI extends AIController implements FormationMember{
|
||||||
|
private static Seq<Tile> tiles = new Seq<>();
|
||||||
public Unit leader;
|
public Unit leader;
|
||||||
|
|
||||||
private Vec3 target = new Vec3();
|
private Vec3 target = new Vec3();
|
||||||
@@ -51,18 +54,18 @@ public class FormationAI extends AIController implements FormationMember{
|
|||||||
|
|
||||||
Vec2 realtarget = vec.set(target);
|
Vec2 realtarget = vec.set(target);
|
||||||
|
|
||||||
float margin = 3f;
|
float margin = 4f;
|
||||||
|
|
||||||
float speed = unit.realSpeed();
|
float speed = unit.realSpeed();
|
||||||
|
|
||||||
if(unit.dst(realtarget) <= margin){
|
if(unit.dst(realtarget) <= margin){
|
||||||
unit.vel.approachDelta(Vec2.ZERO, speed * type.accel / 2f);
|
//unit.vel.approachDelta(Vec2.ZERO, speed * type.accel / 2f);
|
||||||
}else{
|
}else{
|
||||||
unit.moveAt(realtarget.sub(unit).limit(speed));
|
unit.moveAt(realtarget.sub(unit).limit(speed));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(unit instanceof Minerc mine && leader instanceof Minerc com){
|
if(unit instanceof Minerc mine && leader instanceof Minerc com){
|
||||||
if(mine.validMine(com.mineTile())){
|
if(com.mineTile() != null && mine.validMine(com.mineTile())){
|
||||||
mine.mineTile(com.mineTile());
|
mine.mineTile(com.mineTile());
|
||||||
|
|
||||||
CoreBuild core = unit.team.core();
|
CoreBuild core = unit.team.core();
|
||||||
@@ -77,7 +80,6 @@ public class FormationAI extends AIController implements FormationMember{
|
|||||||
}else{
|
}else{
|
||||||
mine.mineTile(null);
|
mine.mineTile(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(unit instanceof Builderc build && leader instanceof Builderc com && com.activelyBuilding()){
|
if(unit instanceof Builderc build && leader instanceof Builderc com && com.activelyBuilding()){
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ public class MinerAI extends AIController{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(ore != null){
|
if(ore != null){
|
||||||
moveTo(ore, unit.type.range / 2f);
|
moveTo(ore, unit.type.range / 2f, 20f);
|
||||||
|
|
||||||
if(unit.within(ore, unit.type.range)){
|
if(unit.within(ore, unit.type.range)){
|
||||||
miner.mineTile(ore);
|
miner.mineTile(ore);
|
||||||
|
|||||||
@@ -174,12 +174,14 @@ public class Blocks implements ContentList{
|
|||||||
isLiquid = true;
|
isLiquid = true;
|
||||||
cacheLayer = CacheLayer.water;
|
cacheLayer = CacheLayer.water;
|
||||||
albedo = 0.5f;
|
albedo = 0.5f;
|
||||||
|
attributes.set(Attribute.spores, 0.15f);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
darksandTaintedWater = new ShallowLiquid("darksand-tainted-water"){{
|
darksandTaintedWater = new ShallowLiquid("darksand-tainted-water"){{
|
||||||
speedMultiplier = 0.75f;
|
speedMultiplier = 0.75f;
|
||||||
statusDuration = 60f;
|
statusDuration = 60f;
|
||||||
albedo = 0.5f;
|
albedo = 0.5f;
|
||||||
|
attributes.set(Attribute.spores, 0.1f);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
sandWater = new ShallowLiquid("sand-water"){{
|
sandWater = new ShallowLiquid("sand-water"){{
|
||||||
@@ -625,17 +627,6 @@ public class Blocks implements ContentList{
|
|||||||
consumes.liquid(Liquids.water, 0.2f);
|
consumes.liquid(Liquids.water, 0.2f);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
blastMixer = new GenericCrafter("blast-mixer"){{
|
|
||||||
requirements(Category.crafting, with(Items.lead, 30, Items.titanium, 20));
|
|
||||||
hasItems = true;
|
|
||||||
hasPower = true;
|
|
||||||
outputItem = new ItemStack(Items.blastCompound, 1);
|
|
||||||
size = 2;
|
|
||||||
|
|
||||||
consumes.items(new ItemStack(Items.pyratite, 1), new ItemStack(Items.sporePod, 1));
|
|
||||||
consumes.power(0.40f);
|
|
||||||
}};
|
|
||||||
|
|
||||||
pyratiteMixer = new GenericSmelter("pyratite-mixer"){{
|
pyratiteMixer = new GenericSmelter("pyratite-mixer"){{
|
||||||
requirements(Category.crafting, with(Items.copper, 50, Items.lead, 25));
|
requirements(Category.crafting, with(Items.copper, 50, Items.lead, 25));
|
||||||
flameColor = Color.clear;
|
flameColor = Color.clear;
|
||||||
@@ -649,6 +640,17 @@ public class Blocks implements ContentList{
|
|||||||
consumes.items(new ItemStack(Items.coal, 1), new ItemStack(Items.lead, 2), new ItemStack(Items.sand, 2));
|
consumes.items(new ItemStack(Items.coal, 1), new ItemStack(Items.lead, 2), new ItemStack(Items.sand, 2));
|
||||||
}};
|
}};
|
||||||
|
|
||||||
|
blastMixer = new GenericCrafter("blast-mixer"){{
|
||||||
|
requirements(Category.crafting, with(Items.lead, 30, Items.titanium, 20));
|
||||||
|
hasItems = true;
|
||||||
|
hasPower = true;
|
||||||
|
outputItem = new ItemStack(Items.blastCompound, 1);
|
||||||
|
size = 2;
|
||||||
|
|
||||||
|
consumes.items(new ItemStack(Items.pyratite, 1), new ItemStack(Items.sporePod, 1));
|
||||||
|
consumes.power(0.40f);
|
||||||
|
}};
|
||||||
|
|
||||||
melter = new GenericCrafter("melter"){{
|
melter = new GenericCrafter("melter"){{
|
||||||
requirements(Category.crafting, with(Items.copper, 30, Items.lead, 35, Items.graphite, 45));
|
requirements(Category.crafting, with(Items.copper, 30, Items.lead, 35, Items.graphite, 45));
|
||||||
health = 200;
|
health = 200;
|
||||||
@@ -914,7 +916,7 @@ public class Blocks implements ContentList{
|
|||||||
size = 3;
|
size = 3;
|
||||||
phaseRadiusBoost = 80f;
|
phaseRadiusBoost = 80f;
|
||||||
radius = 101.7f;
|
radius = 101.7f;
|
||||||
breakage = 750f;
|
shieldHealth = 750f;
|
||||||
cooldownNormal = 1.5f;
|
cooldownNormal = 1.5f;
|
||||||
cooldownLiquid = 1.2f;
|
cooldownLiquid = 1.2f;
|
||||||
cooldownBrokenBase = 0.35f;
|
cooldownBrokenBase = 0.35f;
|
||||||
@@ -1191,7 +1193,7 @@ public class Blocks implements ContentList{
|
|||||||
requirements(Category.power, with(Items.lead, 100, Items.silicon, 75, Items.phaseFabric, 25, Items.plastanium, 75, Items.thorium, 50));
|
requirements(Category.power, with(Items.lead, 100, Items.silicon, 75, Items.phaseFabric, 25, Items.plastanium, 75, Items.thorium, 50));
|
||||||
size = 2;
|
size = 2;
|
||||||
powerProduction = 4.5f;
|
powerProduction = 4.5f;
|
||||||
itemDuration = 60 * 18f;
|
itemDuration = 60 * 15f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
solarPanel = new SolarGenerator("solar-panel"){{
|
solarPanel = new SolarGenerator("solar-panel"){{
|
||||||
@@ -1328,7 +1330,7 @@ public class Blocks implements ContentList{
|
|||||||
//region storage
|
//region storage
|
||||||
|
|
||||||
coreShard = new CoreBlock("core-shard"){{
|
coreShard = new CoreBlock("core-shard"){{
|
||||||
requirements(Category.effect, BuildVisibility.hidden, with(Items.copper, 2000, Items.lead, 1000));
|
requirements(Category.effect, BuildVisibility.editorOnly, with(Items.copper, 2000, Items.lead, 1000));
|
||||||
alwaysUnlocked = true;
|
alwaysUnlocked = true;
|
||||||
|
|
||||||
unitType = UnitTypes.alpha;
|
unitType = UnitTypes.alpha;
|
||||||
@@ -1402,7 +1404,7 @@ public class Blocks implements ContentList{
|
|||||||
restitution = 0.03f;
|
restitution = 0.03f;
|
||||||
range = 100;
|
range = 100;
|
||||||
shootCone = 15f;
|
shootCone = 15f;
|
||||||
ammoUseEffect = Fx.shellEjectSmall;
|
ammoUseEffect = Fx.casing1;
|
||||||
health = 250;
|
health = 250;
|
||||||
inaccuracy = 2f;
|
inaccuracy = 2f;
|
||||||
rotateSpeed = 10f;
|
rotateSpeed = 10f;
|
||||||
@@ -1543,10 +1545,10 @@ public class Blocks implements ContentList{
|
|||||||
|
|
||||||
hasPower = true;
|
hasPower = true;
|
||||||
size = 2;
|
size = 2;
|
||||||
force = 5f;
|
force = 8f;
|
||||||
scaledForce = 5.5f;
|
scaledForce = 7f;
|
||||||
range = 160f;
|
range = 230f;
|
||||||
damage = 0.4f;
|
damage = 0.3f;
|
||||||
health = 160 * size * size;
|
health = 160 * size * size;
|
||||||
rotateSpeed = 10;
|
rotateSpeed = 10;
|
||||||
|
|
||||||
@@ -1591,7 +1593,7 @@ public class Blocks implements ContentList{
|
|||||||
shootShake = 1f;
|
shootShake = 1f;
|
||||||
burstSpacing = 3f;
|
burstSpacing = 3f;
|
||||||
shots = 4;
|
shots = 4;
|
||||||
ammoUseEffect = Fx.shellEjectBig;
|
ammoUseEffect = Fx.casing2;
|
||||||
health = 240 * size * size;
|
health = 240 * size * size;
|
||||||
shootSound = Sounds.shootBig;
|
shootSound = Sounds.shootBig;
|
||||||
}};
|
}};
|
||||||
@@ -1685,7 +1687,7 @@ public class Blocks implements ContentList{
|
|||||||
inaccuracy = 12f;
|
inaccuracy = 12f;
|
||||||
reloadTime = 60f;
|
reloadTime = 60f;
|
||||||
ammoEjectBack = 5f;
|
ammoEjectBack = 5f;
|
||||||
ammoUseEffect = Fx.shellEjectBig;
|
ammoUseEffect = Fx.casing3Double;
|
||||||
ammoPerShot = 2;
|
ammoPerShot = 2;
|
||||||
cooldown = 0.03f;
|
cooldown = 0.03f;
|
||||||
velocityInaccuracy = 0.2f;
|
velocityInaccuracy = 0.2f;
|
||||||
@@ -1743,7 +1745,7 @@ public class Blocks implements ContentList{
|
|||||||
rotateSpeed = 2.5f;
|
rotateSpeed = 2.5f;
|
||||||
reloadTime = 200f;
|
reloadTime = 200f;
|
||||||
restitution = 0.2f;
|
restitution = 0.2f;
|
||||||
ammoUseEffect = Fx.shellEjectBig;
|
ammoUseEffect = Fx.casing3Double;
|
||||||
recoilAmount = 5f;
|
recoilAmount = 5f;
|
||||||
restitution = 0.009f;
|
restitution = 0.009f;
|
||||||
cooldown = 0.009f;
|
cooldown = 0.009f;
|
||||||
@@ -1772,7 +1774,7 @@ public class Blocks implements ContentList{
|
|||||||
reloadTime = 6f;
|
reloadTime = 6f;
|
||||||
coolantMultiplier = 0.5f;
|
coolantMultiplier = 0.5f;
|
||||||
restitution = 0.1f;
|
restitution = 0.1f;
|
||||||
ammoUseEffect = Fx.shellEjectBig;
|
ammoUseEffect = Fx.casing3;
|
||||||
range = 200f;
|
range = 200f;
|
||||||
inaccuracy = 3f;
|
inaccuracy = 3f;
|
||||||
recoilAmount = 3f;
|
recoilAmount = 3f;
|
||||||
@@ -1991,9 +1993,9 @@ public class Blocks implements ContentList{
|
|||||||
|
|
||||||
illuminator = new LightBlock("illuminator"){{
|
illuminator = new LightBlock("illuminator"){{
|
||||||
requirements(Category.effect, BuildVisibility.lightingOnly, with(Items.graphite, 12, Items.silicon, 8));
|
requirements(Category.effect, BuildVisibility.lightingOnly, with(Items.graphite, 12, Items.silicon, 8));
|
||||||
brightness = 0.67f;
|
brightness = 0.75f;
|
||||||
radius = 140f;
|
radius = 120f;
|
||||||
consumes.power(0.06f);
|
consumes.power(0.05f);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
//endregion
|
//endregion
|
||||||
@@ -2002,6 +2004,12 @@ public class Blocks implements ContentList{
|
|||||||
//looked up by name, no ref needed
|
//looked up by name, no ref needed
|
||||||
new LegacyMechPad("legacy-mech-pad");
|
new LegacyMechPad("legacy-mech-pad");
|
||||||
new LegacyUnitFactory("legacy-unit-factory");
|
new LegacyUnitFactory("legacy-unit-factory");
|
||||||
|
new LegacyUnitFactory("legacy-unit-factory-air"){{
|
||||||
|
replacement = Blocks.airFactory;
|
||||||
|
}};
|
||||||
|
new LegacyUnitFactory("legacy-unit-factory-ground"){{
|
||||||
|
replacement = Blocks.groundFactory;
|
||||||
|
}};
|
||||||
|
|
||||||
//endregion
|
//endregion
|
||||||
//region campaign
|
//region campaign
|
||||||
|
|||||||
@@ -30,18 +30,33 @@ public class Bullets implements ContentList{
|
|||||||
missileExplosive, missileIncendiary, missileSurge,
|
missileExplosive, missileIncendiary, missileSurge,
|
||||||
|
|
||||||
//standard
|
//standard
|
||||||
standardCopper, standardDense, standardThorium, standardHoming, standardIncendiary, standardMechSmall,
|
standardCopper, standardDense, standardThorium, standardHoming, standardIncendiary,
|
||||||
standardGlaive, standardDenseBig, standardThoriumBig, standardIncendiaryBig,
|
standardDenseBig, standardThoriumBig, standardIncendiaryBig,
|
||||||
|
|
||||||
//liquid
|
//liquid
|
||||||
waterShot, cryoShot, slagShot, oilShot, heavyWaterShot, heavyCryoShot, heavySlagShot, heavyOilShot,
|
waterShot, cryoShot, slagShot, oilShot, heavyWaterShot, heavyCryoShot, heavySlagShot, heavyOilShot,
|
||||||
|
|
||||||
//environment, misc.
|
//environment, misc.
|
||||||
damageLightning, damageLightningGround, fireball, basicFlame, pyraFlame, driverBolt, healBullet, healBulletBig, frag;
|
damageLightning, damageLightningGround, fireball, basicFlame, pyraFlame, driverBolt, healBullet, healBulletBig;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void load(){
|
public void load(){
|
||||||
|
|
||||||
|
//lightning bullets need to be initialized first.
|
||||||
|
damageLightning = new BulletType(0.0001f, 0f){{
|
||||||
|
lifetime = Fx.lightning.lifetime;
|
||||||
|
hitEffect = Fx.hitLancer;
|
||||||
|
despawnEffect = Fx.none;
|
||||||
|
status = StatusEffects.shocked;
|
||||||
|
statusDuration = 10f;
|
||||||
|
hittable = false;
|
||||||
|
}};
|
||||||
|
|
||||||
|
//this is just a copy of the damage lightning bullet that doesn't damage air units
|
||||||
|
damageLightningGround = new BulletType(0.0001f, 0f){};
|
||||||
|
JsonIO.copy(damageLightning, damageLightningGround);
|
||||||
|
damageLightningGround.collidesAir = false;
|
||||||
|
|
||||||
artilleryDense = new ArtilleryBulletType(3f, 20, "shell"){{
|
artilleryDense = new ArtilleryBulletType(3f, 20, "shell"){{
|
||||||
hitEffect = Fx.flakExplosion;
|
hitEffect = Fx.flakExplosion;
|
||||||
knockback = 0.8f;
|
knockback = 0.8f;
|
||||||
@@ -102,6 +117,7 @@ public class Bullets implements ContentList{
|
|||||||
status = StatusEffects.burning;
|
status = StatusEffects.burning;
|
||||||
frontColor = Pal.lightishOrange;
|
frontColor = Pal.lightishOrange;
|
||||||
backColor = Pal.lightOrange;
|
backColor = Pal.lightOrange;
|
||||||
|
makeFire = true;
|
||||||
trailEffect = Fx.incendTrail;
|
trailEffect = Fx.incendTrail;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
@@ -265,6 +281,7 @@ public class Bullets implements ContentList{
|
|||||||
homingPower = 0.08f;
|
homingPower = 0.08f;
|
||||||
splashDamageRadius = 20f;
|
splashDamageRadius = 20f;
|
||||||
splashDamage = 20f;
|
splashDamage = 20f;
|
||||||
|
makeFire = true;
|
||||||
hitEffect = Fx.blastExplosion;
|
hitEffect = Fx.blastExplosion;
|
||||||
status = StatusEffects.burning;
|
status = StatusEffects.burning;
|
||||||
}};
|
}};
|
||||||
@@ -278,6 +295,7 @@ public class Bullets implements ContentList{
|
|||||||
splashDamage = 25f;
|
splashDamage = 25f;
|
||||||
hitEffect = Fx.blastExplosion;
|
hitEffect = Fx.blastExplosion;
|
||||||
despawnEffect = Fx.blastExplosion;
|
despawnEffect = Fx.blastExplosion;
|
||||||
|
lightningDamage = 10;
|
||||||
lightning = 2;
|
lightning = 2;
|
||||||
lightningLength = 10;
|
lightningLength = 10;
|
||||||
}};
|
}};
|
||||||
@@ -323,27 +341,11 @@ public class Bullets implements ContentList{
|
|||||||
frontColor = Pal.lightishOrange;
|
frontColor = Pal.lightishOrange;
|
||||||
backColor = Pal.lightOrange;
|
backColor = Pal.lightOrange;
|
||||||
status = StatusEffects.burning;
|
status = StatusEffects.burning;
|
||||||
|
makeFire = true;
|
||||||
inaccuracy = 3f;
|
inaccuracy = 3f;
|
||||||
lifetime = 60f;
|
lifetime = 60f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
standardGlaive = new BasicBulletType(4f, 7.5f, "bullet"){{
|
|
||||||
width = 10f;
|
|
||||||
height = 12f;
|
|
||||||
frontColor = Color.valueOf("feb380");
|
|
||||||
backColor = Color.valueOf("ea8878");
|
|
||||||
status = StatusEffects.burning;
|
|
||||||
lifetime = 60f;
|
|
||||||
}};
|
|
||||||
|
|
||||||
standardMechSmall = new BasicBulletType(4f, 9, "bullet"){{
|
|
||||||
width = 11f;
|
|
||||||
height = 14f;
|
|
||||||
lifetime = 40f;
|
|
||||||
inaccuracy = 5f;
|
|
||||||
despawnEffect = Fx.hitBulletSmall;
|
|
||||||
}};
|
|
||||||
|
|
||||||
standardDenseBig = new BasicBulletType(7f, 55, "bullet"){{
|
standardDenseBig = new BasicBulletType(7f, 55, "bullet"){{
|
||||||
width = 15f;
|
width = 15f;
|
||||||
height = 21f;
|
height = 21f;
|
||||||
@@ -365,24 +367,11 @@ public class Bullets implements ContentList{
|
|||||||
backColor = Pal.lightOrange;
|
backColor = Pal.lightOrange;
|
||||||
status = StatusEffects.burning;
|
status = StatusEffects.burning;
|
||||||
shootEffect = Fx.shootBig;
|
shootEffect = Fx.shootBig;
|
||||||
|
makeFire = true;
|
||||||
pierceCap = 2;
|
pierceCap = 2;
|
||||||
pierceBuilding = true;
|
pierceBuilding = true;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
damageLightning = new BulletType(0.0001f, 0f){{
|
|
||||||
lifetime = Fx.lightning.lifetime;
|
|
||||||
hitEffect = Fx.hitLancer;
|
|
||||||
despawnEffect = Fx.none;
|
|
||||||
status = StatusEffects.shocked;
|
|
||||||
statusDuration = 10f;
|
|
||||||
hittable = false;
|
|
||||||
}};
|
|
||||||
|
|
||||||
//this is just a copy of the damage lightning bullet that doesn't damage air units
|
|
||||||
damageLightningGround = new BulletType(0.0001f, 0f){};
|
|
||||||
JsonIO.copy(damageLightning, damageLightningGround);
|
|
||||||
damageLightningGround.collidesAir = false;
|
|
||||||
|
|
||||||
healBullet = new LaserBoltBulletType(5.2f, 13){{
|
healBullet = new LaserBoltBulletType(5.2f, 13){{
|
||||||
healPercent = 3f;
|
healPercent = 3f;
|
||||||
collidesTeam = true;
|
collidesTeam = true;
|
||||||
@@ -437,7 +426,7 @@ public class Bullets implements ContentList{
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
basicFlame = new BulletType(3.35f, 15f){{
|
basicFlame = new BulletType(3.35f, 16f){{
|
||||||
ammoMultiplier = 3f;
|
ammoMultiplier = 3f;
|
||||||
hitSize = 7f;
|
hitSize = 7f;
|
||||||
lifetime = 18f;
|
lifetime = 18f;
|
||||||
@@ -452,7 +441,7 @@ public class Bullets implements ContentList{
|
|||||||
hittable = false;
|
hittable = false;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
pyraFlame = new BulletType(3.35f, 22f){{
|
pyraFlame = new BulletType(3.35f, 25f){{
|
||||||
ammoMultiplier = 4f;
|
ammoMultiplier = 4f;
|
||||||
hitSize = 7f;
|
hitSize = 7f;
|
||||||
lifetime = 18f;
|
lifetime = 18f;
|
||||||
@@ -489,9 +478,9 @@ public class Bullets implements ContentList{
|
|||||||
knockback = 1.7f;
|
knockback = 1.7f;
|
||||||
puddleSize = 8f;
|
puddleSize = 8f;
|
||||||
drag = 0.001f;
|
drag = 0.001f;
|
||||||
ammoMultiplier = 2f;
|
ammoMultiplier = 0.4f;
|
||||||
statusDuration = 60f * 4f;
|
statusDuration = 60f * 4f;
|
||||||
damage = 0.1f;
|
damage = 0.2f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
heavyCryoShot = new LiquidBulletType(Liquids.cryofluid){{
|
heavyCryoShot = new LiquidBulletType(Liquids.cryofluid){{
|
||||||
@@ -500,9 +489,9 @@ public class Bullets implements ContentList{
|
|||||||
knockback = 1.3f;
|
knockback = 1.3f;
|
||||||
puddleSize = 8f;
|
puddleSize = 8f;
|
||||||
drag = 0.001f;
|
drag = 0.001f;
|
||||||
ammoMultiplier = 2f;
|
ammoMultiplier = 0.4f;
|
||||||
statusDuration = 60f * 4f;
|
statusDuration = 60f * 4f;
|
||||||
damage = 0.1f;
|
damage = 0.2f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
heavySlagShot = new LiquidBulletType(Liquids.slag){{
|
heavySlagShot = new LiquidBulletType(Liquids.slag){{
|
||||||
@@ -510,9 +499,9 @@ public class Bullets implements ContentList{
|
|||||||
speed = 4f;
|
speed = 4f;
|
||||||
knockback = 1.3f;
|
knockback = 1.3f;
|
||||||
puddleSize = 8f;
|
puddleSize = 8f;
|
||||||
damage = 5f;
|
damage = 4.75f;
|
||||||
drag = 0.001f;
|
drag = 0.001f;
|
||||||
ammoMultiplier = 2f;
|
ammoMultiplier = 0.4f;
|
||||||
statusDuration = 60f * 4f;
|
statusDuration = 60f * 4f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
@@ -522,19 +511,11 @@ public class Bullets implements ContentList{
|
|||||||
knockback = 1.3f;
|
knockback = 1.3f;
|
||||||
puddleSize = 8f;
|
puddleSize = 8f;
|
||||||
drag = 0.001f;
|
drag = 0.001f;
|
||||||
ammoMultiplier = 2f;
|
ammoMultiplier = 0.4f;
|
||||||
statusDuration = 60f * 4f;
|
statusDuration = 60f * 4f;
|
||||||
damage = 0.1f;
|
damage = 0.2f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
driverBolt = new MassDriverBolt();
|
driverBolt = new MassDriverBolt();
|
||||||
|
|
||||||
frag = new BasicBulletType(5f, 8, "bullet"){{
|
|
||||||
width = 8f;
|
|
||||||
height = 9f;
|
|
||||||
shrinkY = 0.5f;
|
|
||||||
lifetime = 50f;
|
|
||||||
drag = 0.04f;
|
|
||||||
}};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -257,33 +257,33 @@ public class Fx{
|
|||||||
randLenVectors(e.id, 9, 3 + 20f * e.finpow(), (x, y) -> {
|
randLenVectors(e.id, 9, 3 + 20f * e.finpow(), (x, y) -> {
|
||||||
Fill.circle(e.x + x, e.y + y, e.fout() * 4f + 0.4f);
|
Fill.circle(e.x + x, e.y + y, e.fout() * 4f + 0.4f);
|
||||||
});
|
});
|
||||||
}).ground(),
|
}).layer(Layer.debris),
|
||||||
|
|
||||||
unitLand = new Effect(30, e -> {
|
unitLand = new Effect(30, e -> {
|
||||||
color(Tmp.c1.set(e.color).mul(1.1f));
|
color(Tmp.c1.set(e.color).mul(1.1f));
|
||||||
randLenVectors(e.id, 6, 17f * e.finpow(), (x, y) -> {
|
randLenVectors(e.id, 6, 17f * e.finpow(), (x, y) -> {
|
||||||
Fill.circle(e.x + x, e.y + y, e.fout() * 4f + 0.3f);
|
Fill.circle(e.x + x, e.y + y, e.fout() * 4f + 0.3f);
|
||||||
});
|
});
|
||||||
}).ground(),
|
}).layer(Layer.debris),
|
||||||
|
|
||||||
unitLandSmall = new Effect(30, e -> {
|
unitLandSmall = new Effect(30, e -> {
|
||||||
color(Tmp.c1.set(e.color).mul(1.1f));
|
color(Tmp.c1.set(e.color).mul(1.1f));
|
||||||
randLenVectors(e.id, (int)(6 * e.rotation), 12f * e.finpow() * e.rotation, (x, y) -> {
|
randLenVectors(e.id, (int)(6 * e.rotation), 12f * e.finpow() * e.rotation, (x, y) -> {
|
||||||
Fill.circle(e.x + x, e.y + y, e.fout() * 3f + 0.1f);
|
Fill.circle(e.x + x, e.y + y, e.fout() * 3f + 0.1f);
|
||||||
});
|
});
|
||||||
}).ground(),
|
}).layer(Layer.debris),
|
||||||
|
|
||||||
unitPickup = new Effect(18, e -> {
|
unitPickup = new Effect(18, e -> {
|
||||||
color(Pal.lightishGray);
|
color(Pal.lightishGray);
|
||||||
stroke(e.fin() * 2f);
|
stroke(e.fin() * 2f);
|
||||||
Lines.poly(e.x, e.y, 4, 13f * e.fout());
|
Lines.poly(e.x, e.y, 4, 13f * e.fout());
|
||||||
}).ground(),
|
}).layer(Layer.debris),
|
||||||
|
|
||||||
landShock = new Effect(12, e -> {
|
landShock = new Effect(12, e -> {
|
||||||
color(Pal.lancerLaser);
|
color(Pal.lancerLaser);
|
||||||
stroke(e.fout() * 3f);
|
stroke(e.fout() * 3f);
|
||||||
Lines.poly(e.x, e.y, 12, 20f * e.fout());
|
Lines.poly(e.x, e.y, 12, 20f * e.fout());
|
||||||
}).ground(),
|
}).layer(Layer.debris),
|
||||||
|
|
||||||
pickup = new Effect(18, e -> {
|
pickup = new Effect(18, e -> {
|
||||||
color(Pal.lightishGray);
|
color(Pal.lightishGray);
|
||||||
@@ -1064,66 +1064,102 @@ public class Fx{
|
|||||||
|
|
||||||
}),
|
}),
|
||||||
|
|
||||||
shellEjectSmall = new Effect(30f, e -> {
|
casing1 = new Effect(30f, e -> {
|
||||||
color(Pal.lightOrange, Color.lightGray, Pal.lightishGray, e.fin());
|
color(Pal.lightOrange, Color.lightGray, Pal.lightishGray, e.fin());
|
||||||
|
alpha(e.fout(0.3f));
|
||||||
float rot = Math.abs(e.rotation) + 90f;
|
float rot = Math.abs(e.rotation) + 90f;
|
||||||
|
int i = -Mathf.sign(e.rotation);
|
||||||
int i = Mathf.sign(e.rotation);
|
|
||||||
|
|
||||||
float len = (2f + e.finpow() * 6f) * i;
|
float len = (2f + e.finpow() * 6f) * i;
|
||||||
float lr = rot + e.fin() * 30f * i;
|
float lr = rot + e.fin() * 30f * i;
|
||||||
Fill.rect(e.x + trnsx(lr, len) + Mathf.randomSeedRange(e.id + i + 7, 3f * e.fin()),
|
Fill.rect(
|
||||||
|
e.x + trnsx(lr, len) + Mathf.randomSeedRange(e.id + i + 7, 3f * e.fin()),
|
||||||
e.y + trnsy(lr, len) + Mathf.randomSeedRange(e.id + i + 8, 3f * e.fin()),
|
e.y + trnsy(lr, len) + Mathf.randomSeedRange(e.id + i + 8, 3f * e.fin()),
|
||||||
1f, 2f, rot + e.fin() * 50f * i);
|
1f, 2f, rot + e.fin() * 50f * i
|
||||||
|
);
|
||||||
|
|
||||||
}).ground(400f),
|
}).layer(Layer.bullet),
|
||||||
|
|
||||||
shellEjectMedium = new Effect(34f, e -> {
|
casing2 = new Effect(34f, e -> {
|
||||||
color(Pal.lightOrange, Color.lightGray, Pal.lightishGray, e.fin());
|
color(Pal.lightOrange, Color.lightGray, Pal.lightishGray, e.fin());
|
||||||
float rot = e.rotation + 90f;
|
alpha(e.fout(0.5f));
|
||||||
|
float rot = Math.abs(e.rotation) + 90f;
|
||||||
|
int i = -Mathf.sign(e.rotation);
|
||||||
|
float len = (2f + e.finpow() * 10f) * i;
|
||||||
|
float lr = rot + e.fin() * 20f * i;
|
||||||
|
rect(Core.atlas.find("casing"),
|
||||||
|
e.x + trnsx(lr, len) + Mathf.randomSeedRange(e.id + i + 7, 3f * e.fin()),
|
||||||
|
e.y + trnsy(lr, len) + Mathf.randomSeedRange(e.id + i + 8, 3f * e.fin()),
|
||||||
|
2f, 3f, rot + e.fin() * 50f * i
|
||||||
|
);
|
||||||
|
}).layer(Layer.bullet),
|
||||||
|
|
||||||
|
casing3 = new Effect(40f, e -> {
|
||||||
|
color(Pal.lightOrange, Pal.lightishGray, Pal.lightishGray, e.fin());
|
||||||
|
alpha(e.fout(0.5f));
|
||||||
|
float rot = Math.abs(e.rotation) + 90f;
|
||||||
|
int i = -Mathf.sign(e.rotation);
|
||||||
|
float len = (4f + e.finpow() * 9f) * i;
|
||||||
|
float lr = rot + Mathf.randomSeedRange(e.id + i + 6, 20f * e.fin()) * i;
|
||||||
|
|
||||||
|
rect(Core.atlas.find("casing"),
|
||||||
|
e.x + trnsx(lr, len) + Mathf.randomSeedRange(e.id + i + 7, 3f * e.fin()),
|
||||||
|
e.y + trnsy(lr, len) + Mathf.randomSeedRange(e.id + i + 8, 3f * e.fin()),
|
||||||
|
2.5f, 4f,
|
||||||
|
rot + e.fin() * 50f * i
|
||||||
|
);
|
||||||
|
}).layer(Layer.bullet),
|
||||||
|
|
||||||
|
casing4 = new Effect(45f, e -> {
|
||||||
|
color(Pal.lightOrange, Pal.lightishGray, Pal.lightishGray, e.fin());
|
||||||
|
alpha(e.fout(0.5f));
|
||||||
|
float rot = Math.abs(e.rotation) + 90f;
|
||||||
|
int i = -Mathf.sign(e.rotation);
|
||||||
|
float len = (4f + e.finpow() * 9f) * i;
|
||||||
|
float lr = rot + Mathf.randomSeedRange(e.id + i + 6, 20f * e.fin()) * i;
|
||||||
|
|
||||||
|
rect(Core.atlas.find("casing"),
|
||||||
|
e.x + trnsx(lr, len) + Mathf.randomSeedRange(e.id + i + 7, 3f * e.fin()),
|
||||||
|
e.y + trnsy(lr, len) + Mathf.randomSeedRange(e.id + i + 8, 3f * e.fin()),
|
||||||
|
3f, 6f,
|
||||||
|
rot + e.fin() * 50f * i
|
||||||
|
);
|
||||||
|
}).layer(Layer.bullet),
|
||||||
|
|
||||||
|
casing2Double = new Effect(34f, e -> {
|
||||||
|
color(Pal.lightOrange, Color.lightGray, Pal.lightishGray, e.fin());
|
||||||
|
alpha(e.fout(0.5f));
|
||||||
|
float rot = Math.abs(e.rotation) + 90f;
|
||||||
for(int i : Mathf.signs){
|
for(int i : Mathf.signs){
|
||||||
float len = (2f + e.finpow() * 10f) * i;
|
float len = (2f + e.finpow() * 10f) * i;
|
||||||
float lr = rot + e.fin() * 20f * i;
|
float lr = rot + e.fin() * 20f * i;
|
||||||
rect(Core.atlas.find("casing"),
|
rect(Core.atlas.find("casing"),
|
||||||
e.x + trnsx(lr, len) + Mathf.randomSeedRange(e.id + i + 7, 3f * e.fin()),
|
e.x + trnsx(lr, len) + Mathf.randomSeedRange(e.id + i + 7, 3f * e.fin()),
|
||||||
e.y + trnsy(lr, len) + Mathf.randomSeedRange(e.id + i + 8, 3f * e.fin()),
|
e.y + trnsy(lr, len) + Mathf.randomSeedRange(e.id + i + 8, 3f * e.fin()),
|
||||||
2f, 3f, rot);
|
2f, 3f, rot + e.fin() * 50f * i
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
color(Color.lightGray, Color.gray, e.fin());
|
}).layer(Layer.bullet),
|
||||||
|
|
||||||
|
casing3Double = new Effect(40f, e -> {
|
||||||
|
color(Pal.lightOrange, Pal.lightishGray, Pal.lightishGray, e.fin());
|
||||||
|
alpha(e.fout(0.5f));
|
||||||
|
float rot = Math.abs(e.rotation) + 90f;
|
||||||
|
|
||||||
for(int i : Mathf.signs){
|
for(int i : Mathf.signs){
|
||||||
float ex = e.x, ey = e.y, fout = e.fout();
|
float len = (4f + e.finpow() * 9f) * i;
|
||||||
randLenVectors(e.id, 4, 1f + e.finpow() * 11f, e.rotation + 90f * i, 20f, (x, y) -> {
|
|
||||||
Fill.circle(ex + x, ey + y, fout * 1.5f);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
}).ground(400f),
|
|
||||||
|
|
||||||
shellEjectBig = new Effect(22f, e -> {
|
|
||||||
color(Pal.lightOrange, Color.lightGray, Pal.lightishGray, e.fin());
|
|
||||||
float rot = e.rotation + 90f;
|
|
||||||
for(int i : Mathf.signs){
|
|
||||||
float len = (4f + e.finpow() * 8f) * i;
|
|
||||||
float lr = rot + Mathf.randomSeedRange(e.id + i + 6, 20f * e.fin()) * i;
|
float lr = rot + Mathf.randomSeedRange(e.id + i + 6, 20f * e.fin()) * i;
|
||||||
|
|
||||||
rect(Core.atlas.find("casing"),
|
rect(Core.atlas.find("casing"),
|
||||||
e.x + trnsx(lr, len) + Mathf.randomSeedRange(e.id + i + 7, 3f * e.fin()),
|
e.x + trnsx(lr, len) + Mathf.randomSeedRange(e.id + i + 7, 3f * e.fin()),
|
||||||
e.y + trnsy(lr, len) + Mathf.randomSeedRange(e.id + i + 8, 3f * e.fin()),
|
e.y + trnsy(lr, len) + Mathf.randomSeedRange(e.id + i + 8, 3f * e.fin()),
|
||||||
2.5f, 4f,
|
2.5f, 4f,
|
||||||
rot + e.fin() * 30f * i + Mathf.randomSeedRange(e.id + i + 9, 40f * e.fin()));
|
rot + e.fin() * 50f * i
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
color(Color.lightGray);
|
}).layer(Layer.bullet),
|
||||||
|
|
||||||
for(int i : Mathf.signs){
|
|
||||||
float ex = e.x, ey = e.y, fout = e.fout();
|
|
||||||
randLenVectors(e.id, 4, -e.finpow() * 15f, e.rotation + 90f * i, 25f, (x, y) -> {
|
|
||||||
Fill.circle(ex + x, ey + y, fout * 2f);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
}).ground(400f),
|
|
||||||
|
|
||||||
railShoot = new Effect(24f, e -> {
|
railShoot = new Effect(24f, e -> {
|
||||||
e.scaled(10f, b -> {
|
e.scaled(10f, b -> {
|
||||||
@@ -1500,7 +1536,7 @@ public class Fx{
|
|||||||
color(Tmp.c1.set(e.color).mul(1.5f));
|
color(Tmp.c1.set(e.color).mul(1.5f));
|
||||||
stroke(e.fout() * 1.4f);
|
stroke(e.fout() * 1.4f);
|
||||||
Lines.circle(e.x, e.y, (2f + e.fin() * 4f) * e.rotation);
|
Lines.circle(e.x, e.y, (2f + e.fin() * 4f) * e.rotation);
|
||||||
}).ground(),
|
}).layer(Layer.debris),
|
||||||
|
|
||||||
bubble = new Effect(20, e -> {
|
bubble = new Effect(20, e -> {
|
||||||
color(Tmp.c1.set(e.color).shiftValue(0.1f));
|
color(Tmp.c1.set(e.color).shiftValue(0.1f));
|
||||||
|
|||||||
@@ -151,8 +151,8 @@ public class StatusEffects implements ContentList{
|
|||||||
boss = new StatusEffect("boss"){{
|
boss = new StatusEffect("boss"){{
|
||||||
color = Pal.health;
|
color = Pal.health;
|
||||||
permanent = true;
|
permanent = true;
|
||||||
damageMultiplier = 2f;
|
damageMultiplier = 1.5f;
|
||||||
healthMultiplier = 2f;
|
healthMultiplier = 1.5f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
shocked = new StatusEffect("shocked"){{
|
shocked = new StatusEffect("shocked"){{
|
||||||
|
|||||||
@@ -112,15 +112,15 @@ public class TechTree implements ContentList{
|
|||||||
node(Items.graphite, with(Items.coal, 1000), () -> {
|
node(Items.graphite, with(Items.coal, 1000), () -> {
|
||||||
|
|
||||||
node(graphitePress, () -> {
|
node(graphitePress, () -> {
|
||||||
node(Items.titanium, with(Items.graphite, 6000, Items.copper, 10000, Items.lead, 10000), () -> {
|
node(Items.titanium, with(Items.graphite, 3000, Items.copper, 7000, Items.lead, 7000), () -> {
|
||||||
node(pneumaticDrill, () -> {
|
node(pneumaticDrill, () -> {
|
||||||
node(Items.sporePod, with(Items.coal, 5000, Items.graphite, 5000, Items.lead, 5000), () -> {
|
node(Items.sporePod, with(Items.coal, 4000, Items.graphite, 4000, Items.lead, 4000), () -> {
|
||||||
node(cultivator, () -> {
|
node(cultivator, () -> {
|
||||||
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
node(Items.thorium, with(Items.titanium, 10000, Items.lead, 15000, Items.copper, 30000), () -> {
|
node(Items.thorium, with(Items.titanium, 8000, Items.lead, 12000, Items.copper, 20000), () -> {
|
||||||
node(laserDrill, () -> {
|
node(laserDrill, () -> {
|
||||||
node(blastDrill, () -> {
|
node(blastDrill, () -> {
|
||||||
|
|
||||||
@@ -136,7 +136,7 @@ public class TechTree implements ContentList{
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
node(Items.pyratite, with(Items.coal, 6000, Items.lead, 10000, Items.sand, 5000), () -> {
|
node(Items.pyratite, with(Items.coal, 6000, Items.lead, 8000, Items.sand, 4000), () -> {
|
||||||
node(pyratiteMixer, () -> {
|
node(pyratiteMixer, () -> {
|
||||||
node(Items.blastCompound, with(Items.pyratite, 3000, Items.sporePod, 3000), () -> {
|
node(Items.blastCompound, with(Items.pyratite, 3000, Items.sporePod, 3000), () -> {
|
||||||
node(blastMixer, () -> {
|
node(blastMixer, () -> {
|
||||||
@@ -146,10 +146,10 @@ public class TechTree implements ContentList{
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
node(Items.silicon, with(Items.coal, 4000, Items.sand, 4000), () -> {
|
node(Items.silicon, with(Items.coal, 3000, Items.sand, 4000), () -> {
|
||||||
node(siliconSmelter, () -> {
|
node(siliconSmelter, () -> {
|
||||||
|
|
||||||
node(Liquids.oil, with(Items.coal, 8000, Items.pyratite, 6000, Items.sand, 20000), () -> {
|
node(Liquids.oil, with(Items.coal, 8000, Items.pyratite, 6000, Items.sand, 8000), () -> {
|
||||||
node(sporePress, () -> {
|
node(sporePress, () -> {
|
||||||
node(coalCentrifuge, () -> {
|
node(coalCentrifuge, () -> {
|
||||||
node(multiPress, () -> {
|
node(multiPress, () -> {
|
||||||
@@ -159,9 +159,9 @@ public class TechTree implements ContentList{
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
node(Items.plastanium, with(Items.titanium, 10000, Items.silicon, 10000), () -> {
|
node(Items.plastanium, with(Items.titanium, 8000, Items.silicon, 8000), () -> {
|
||||||
node(plastaniumCompressor, () -> {
|
node(plastaniumCompressor, () -> {
|
||||||
node(Items.phaseFabric, with(Items.thorium, 15000, Items.sand, 30000, Items.silicon, 5000), () -> {
|
node(Items.phaseFabric, with(Items.thorium, 12000, Items.sand, 8000, Items.silicon, 5000), () -> {
|
||||||
node(phaseWeaver, () -> {
|
node(phaseWeaver, () -> {
|
||||||
|
|
||||||
});
|
});
|
||||||
@@ -171,13 +171,13 @@ public class TechTree implements ContentList{
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
node(Items.metaglass, with(Items.sand, 6000, Items.lead, 10000), () -> {
|
node(Items.metaglass, with(Items.sand, 4000, Items.lead, 10000), () -> {
|
||||||
node(kiln, () -> {
|
node(kiln, () -> {
|
||||||
node(incinerator, () -> {
|
node(incinerator, () -> {
|
||||||
node(Items.scrap, with(Items.copper, 20000, Items.sand, 10000), () -> {
|
node(Items.scrap, with(Items.copper, 8000, Items.sand, 4000), () -> {
|
||||||
node(Liquids.slag, with(Items.scrap, 4000), () -> {
|
node(Liquids.slag, with(Items.scrap, 4000), () -> {
|
||||||
node(melter, () -> {
|
node(melter, () -> {
|
||||||
node(Items.surgeAlloy, with(Items.thorium, 20000, Items.silicon, 30000, Items.lead, 40000), () -> {
|
node(Items.surgeAlloy, with(Items.thorium, 20000, Items.silicon, 20000, Items.lead, 40000), () -> {
|
||||||
node(surgeSmelter, () -> {
|
node(surgeSmelter, () -> {
|
||||||
|
|
||||||
});
|
});
|
||||||
@@ -191,7 +191,7 @@ public class TechTree implements ContentList{
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
node(Liquids.cryofluid, with(Items.titanium, 8000, Items.metaglass, 5000), () -> {
|
node(Liquids.cryofluid, with(Items.titanium, 8000, Items.metaglass, 4000), () -> {
|
||||||
node(cryofluidMixer, () -> {
|
node(cryofluidMixer, () -> {
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ public class UnitTypes implements ContentList{
|
|||||||
x = 4f;
|
x = 4f;
|
||||||
y = 2f;
|
y = 2f;
|
||||||
top = false;
|
top = false;
|
||||||
ejectEffect = Fx.shellEjectSmall;
|
ejectEffect = Fx.casing1;
|
||||||
bullet = Bullets.standardCopper;
|
bullet = Bullets.standardCopper;
|
||||||
}});
|
}});
|
||||||
}};
|
}};
|
||||||
@@ -126,7 +126,7 @@ public class UnitTypes implements ContentList{
|
|||||||
reload = 60f;
|
reload = 60f;
|
||||||
recoil = 4f;
|
recoil = 4f;
|
||||||
shake = 2f;
|
shake = 2f;
|
||||||
ejectEffect = Fx.shellEjectMedium;
|
ejectEffect = Fx.casing2;
|
||||||
shootSound = Sounds.artillery;
|
shootSound = Sounds.artillery;
|
||||||
bullet = new ArtilleryBulletType(2f, 8, "shell"){{
|
bullet = new ArtilleryBulletType(2f, 8, "shell"){{
|
||||||
hitEffect = Fx.blastExplosion;
|
hitEffect = Fx.blastExplosion;
|
||||||
@@ -165,7 +165,7 @@ public class UnitTypes implements ContentList{
|
|||||||
reload = 45f;
|
reload = 45f;
|
||||||
recoil = 5f;
|
recoil = 5f;
|
||||||
shake = 2f;
|
shake = 2f;
|
||||||
ejectEffect = Fx.shellEjectBig;
|
ejectEffect = Fx.casing3;
|
||||||
shootSound = Sounds.artillery;
|
shootSound = Sounds.artillery;
|
||||||
shots = 3;
|
shots = 3;
|
||||||
inaccuracy = 3f;
|
inaccuracy = 3f;
|
||||||
@@ -189,7 +189,7 @@ public class UnitTypes implements ContentList{
|
|||||||
x = 8.5f;
|
x = 8.5f;
|
||||||
y = 6f;
|
y = 6f;
|
||||||
rotate = true;
|
rotate = true;
|
||||||
ejectEffect = Fx.shellEjectSmall;
|
ejectEffect = Fx.casing1;
|
||||||
bullet = Bullets.standardCopper;
|
bullet = Bullets.standardCopper;
|
||||||
}},
|
}},
|
||||||
new Weapon("mount-weapon"){{
|
new Weapon("mount-weapon"){{
|
||||||
@@ -197,7 +197,7 @@ public class UnitTypes implements ContentList{
|
|||||||
x = 8.5f;
|
x = 8.5f;
|
||||||
y = -7f;
|
y = -7f;
|
||||||
rotate = true;
|
rotate = true;
|
||||||
ejectEffect = Fx.shellEjectSmall;
|
ejectEffect = Fx.casing1;
|
||||||
bullet = Bullets.standardCopper;
|
bullet = Bullets.standardCopper;
|
||||||
}}
|
}}
|
||||||
|
|
||||||
@@ -225,7 +225,7 @@ public class UnitTypes implements ContentList{
|
|||||||
reload = 9f;
|
reload = 9f;
|
||||||
recoil = 5f;
|
recoil = 5f;
|
||||||
shake = 2f;
|
shake = 2f;
|
||||||
ejectEffect = Fx.shellEjectBig;
|
ejectEffect = Fx.casing4;
|
||||||
shootSound = Sounds.artillery;
|
shootSound = Sounds.artillery;
|
||||||
|
|
||||||
bullet = new BasicBulletType(13f, 60){{
|
bullet = new BasicBulletType(13f, 60){{
|
||||||
@@ -331,6 +331,17 @@ public class UnitTypes implements ContentList{
|
|||||||
lightningLength = 7;
|
lightningLength = 7;
|
||||||
lightningLengthRand = 7;
|
lightningLengthRand = 7;
|
||||||
shootEffect = Fx.shootHeal;
|
shootEffect = Fx.shootHeal;
|
||||||
|
|
||||||
|
lightningType = new BulletType(0.0001f, 0f){{
|
||||||
|
lifetime = Fx.lightning.lifetime;
|
||||||
|
hitEffect = Fx.hitLancer;
|
||||||
|
despawnEffect = Fx.none;
|
||||||
|
status = StatusEffects.shocked;
|
||||||
|
statusDuration = 10f;
|
||||||
|
hittable = false;
|
||||||
|
healPercent = 2f;
|
||||||
|
collidesTeam = true;
|
||||||
|
}};
|
||||||
}};
|
}};
|
||||||
}});
|
}});
|
||||||
}};
|
}};
|
||||||
@@ -372,6 +383,8 @@ public class UnitTypes implements ContentList{
|
|||||||
sideAngle = 45f;
|
sideAngle = 45f;
|
||||||
sideWidth = 1f;
|
sideWidth = 1f;
|
||||||
sideLength = 70f;
|
sideLength = 70f;
|
||||||
|
healPercent = 10f;
|
||||||
|
collidesTeam = true;
|
||||||
colors = new Color[]{Pal.heal.cpy().a(0.4f), Pal.heal, Color.white};
|
colors = new Color[]{Pal.heal.cpy().a(0.4f), Pal.heal, Color.white};
|
||||||
}};
|
}};
|
||||||
}});
|
}});
|
||||||
@@ -416,8 +429,8 @@ public class UnitTypes implements ContentList{
|
|||||||
continuous = true;
|
continuous = true;
|
||||||
cooldownTime = 200f;
|
cooldownTime = 200f;
|
||||||
|
|
||||||
bullet = new ContinuousLaserBulletType(20){{
|
bullet = new ContinuousLaserBulletType(22){{
|
||||||
length = 150f;
|
length = 160f;
|
||||||
hitEffect = Fx.hitMeltHeal;
|
hitEffect = Fx.hitMeltHeal;
|
||||||
drawSize = 420f;
|
drawSize = 420f;
|
||||||
lifetime = 160f;
|
lifetime = 160f;
|
||||||
@@ -431,6 +444,10 @@ public class UnitTypes implements ContentList{
|
|||||||
incendSpread = 5f;
|
incendSpread = 5f;
|
||||||
incendAmount = 1;
|
incendAmount = 1;
|
||||||
|
|
||||||
|
//constant healing
|
||||||
|
healPercent = 1f;
|
||||||
|
collidesTeam = true;
|
||||||
|
|
||||||
colors = new Color[]{Pal.heal.cpy().a(.2f), Pal.heal.cpy().a(.5f), Pal.heal.cpy().mul(1.2f), Color.white};
|
colors = new Color[]{Pal.heal.cpy().a(.2f), Pal.heal.cpy().a(.5f), Pal.heal.cpy().mul(1.2f), Color.white};
|
||||||
}};
|
}};
|
||||||
|
|
||||||
@@ -501,6 +518,9 @@ public class UnitTypes implements ContentList{
|
|||||||
|
|
||||||
shootEffect = Fx.greenLaserCharge;
|
shootEffect = Fx.greenLaserCharge;
|
||||||
|
|
||||||
|
healPercent = 25f;
|
||||||
|
collidesTeam = true;
|
||||||
|
|
||||||
sideAngle = 15f;
|
sideAngle = 15f;
|
||||||
sideWidth = 0f;
|
sideWidth = 0f;
|
||||||
sideLength = 0f;
|
sideLength = 0f;
|
||||||
@@ -717,7 +737,7 @@ public class UnitTypes implements ContentList{
|
|||||||
reload = 45;
|
reload = 45;
|
||||||
shake = 3f;
|
shake = 3f;
|
||||||
rotateSpeed = 2f;
|
rotateSpeed = 2f;
|
||||||
ejectEffect = Fx.shellEjectSmall;
|
ejectEffect = Fx.casing1;
|
||||||
shootSound = Sounds.shootBig;
|
shootSound = Sounds.shootBig;
|
||||||
rotate = true;
|
rotate = true;
|
||||||
occlusion = 8f;
|
occlusion = 8f;
|
||||||
@@ -783,7 +803,7 @@ public class UnitTypes implements ContentList{
|
|||||||
reload = 30;
|
reload = 30;
|
||||||
shake = 4f;
|
shake = 4f;
|
||||||
rotateSpeed = 2f;
|
rotateSpeed = 2f;
|
||||||
ejectEffect = Fx.shellEjectSmall;
|
ejectEffect = Fx.casing1;
|
||||||
shootSound = Sounds.shootBig;
|
shootSound = Sounds.shootBig;
|
||||||
rotate = true;
|
rotate = true;
|
||||||
occlusion = 12f;
|
occlusion = 12f;
|
||||||
@@ -815,7 +835,7 @@ public class UnitTypes implements ContentList{
|
|||||||
shake = 10f;
|
shake = 10f;
|
||||||
recoil = 10f;
|
recoil = 10f;
|
||||||
rotateSpeed = 1f;
|
rotateSpeed = 1f;
|
||||||
ejectEffect = Fx.shellEjectBig;
|
ejectEffect = Fx.casing3;
|
||||||
shootSound = Sounds.shootBig;
|
shootSound = Sounds.shootBig;
|
||||||
rotate = true;
|
rotate = true;
|
||||||
occlusion = 30f;
|
occlusion = 30f;
|
||||||
@@ -875,12 +895,13 @@ public class UnitTypes implements ContentList{
|
|||||||
health = 75;
|
health = 75;
|
||||||
engineOffset = 5.5f;
|
engineOffset = 5.5f;
|
||||||
range = 140f;
|
range = 140f;
|
||||||
|
targetAir = false;
|
||||||
|
|
||||||
weapons.add(new Weapon(){{
|
weapons.add(new Weapon(){{
|
||||||
y = 0f;
|
y = 0f;
|
||||||
x = 2f;
|
x = 2f;
|
||||||
reload = 13f;
|
reload = 13f;
|
||||||
ejectEffect = Fx.shellEjectSmall;
|
ejectEffect = Fx.casing1;
|
||||||
bullet = Bullets.standardCopper;
|
bullet = Bullets.standardCopper;
|
||||||
shootSound = Sounds.shoot;
|
shootSound = Sounds.shoot;
|
||||||
}});
|
}});
|
||||||
@@ -888,7 +909,7 @@ public class UnitTypes implements ContentList{
|
|||||||
|
|
||||||
horizon = new UnitType("horizon"){{
|
horizon = new UnitType("horizon"){{
|
||||||
health = 350;
|
health = 350;
|
||||||
speed = 2f;
|
speed = 1.8f;
|
||||||
accel = 0.08f;
|
accel = 0.08f;
|
||||||
drag = 0.016f;
|
drag = 0.016f;
|
||||||
flying = true;
|
flying = true;
|
||||||
@@ -910,7 +931,7 @@ public class UnitTypes implements ContentList{
|
|||||||
inaccuracy = 15f;
|
inaccuracy = 15f;
|
||||||
ignoreRotation = true;
|
ignoreRotation = true;
|
||||||
shootSound = Sounds.none;
|
shootSound = Sounds.none;
|
||||||
bullet = new BombBulletType(28f, 25f){{
|
bullet = new BombBulletType(27f, 25f){{
|
||||||
width = 10f;
|
width = 10f;
|
||||||
height = 14f;
|
height = 14f;
|
||||||
hitEffect = Fx.flakExplosion;
|
hitEffect = Fx.flakExplosion;
|
||||||
@@ -1002,7 +1023,7 @@ public class UnitTypes implements ContentList{
|
|||||||
y = 8f;
|
y = 8f;
|
||||||
x = 17f;
|
x = 17f;
|
||||||
reload = 20f;
|
reload = 20f;
|
||||||
ejectEffect = Fx.shellEjectSmall;
|
ejectEffect = Fx.casing1;
|
||||||
rotateSpeed = 8f;
|
rotateSpeed = 8f;
|
||||||
bullet = missiles;
|
bullet = missiles;
|
||||||
shootSound = Sounds.shoot;
|
shootSound = Sounds.shoot;
|
||||||
@@ -1014,7 +1035,7 @@ public class UnitTypes implements ContentList{
|
|||||||
x = 17f;
|
x = 17f;
|
||||||
reload = 35;
|
reload = 35;
|
||||||
rotateSpeed = 8f;
|
rotateSpeed = 8f;
|
||||||
ejectEffect = Fx.shellEjectSmall;
|
ejectEffect = Fx.casing1;
|
||||||
bullet = missiles;
|
bullet = missiles;
|
||||||
shootSound = Sounds.shoot;
|
shootSound = Sounds.shoot;
|
||||||
rotate = true;
|
rotate = true;
|
||||||
@@ -1027,7 +1048,7 @@ public class UnitTypes implements ContentList{
|
|||||||
reload = 12;
|
reload = 12;
|
||||||
shake = 1f;
|
shake = 1f;
|
||||||
rotateSpeed = 2f;
|
rotateSpeed = 2f;
|
||||||
ejectEffect = Fx.shellEjectSmall;
|
ejectEffect = Fx.casing1;
|
||||||
shootSound = Sounds.shootBig;
|
shootSound = Sounds.shootBig;
|
||||||
rotate = true;
|
rotate = true;
|
||||||
occlusion = 8f;
|
occlusion = 8f;
|
||||||
@@ -1108,7 +1129,7 @@ public class UnitTypes implements ContentList{
|
|||||||
y = -13f;
|
y = -13f;
|
||||||
x = 20f;
|
x = 20f;
|
||||||
reload = 12f;
|
reload = 12f;
|
||||||
ejectEffect = Fx.shellEjectSmall;
|
ejectEffect = Fx.casing1;
|
||||||
rotateSpeed = 7f;
|
rotateSpeed = 7f;
|
||||||
shake = 1f;
|
shake = 1f;
|
||||||
shootSound = Sounds.shoot;
|
shootSound = Sounds.shoot;
|
||||||
@@ -1127,7 +1148,7 @@ public class UnitTypes implements ContentList{
|
|||||||
flying = true;
|
flying = true;
|
||||||
drag = 0.06f;
|
drag = 0.06f;
|
||||||
accel = 0.12f;
|
accel = 0.12f;
|
||||||
speed = 1.1f;
|
speed = 1.5f;
|
||||||
health = 100;
|
health = 100;
|
||||||
engineSize = 1.8f;
|
engineSize = 1.8f;
|
||||||
engineOffset = 5.7f;
|
engineOffset = 5.7f;
|
||||||
@@ -1290,7 +1311,7 @@ public class UnitTypes implements ContentList{
|
|||||||
collides = false;
|
collides = false;
|
||||||
|
|
||||||
healPercent = 15f;
|
healPercent = 15f;
|
||||||
splashDamage = 320f;
|
splashDamage = 240f;
|
||||||
splashDamageRadius = 120f;
|
splashDamageRadius = 120f;
|
||||||
}};
|
}};
|
||||||
}});
|
}});
|
||||||
@@ -1341,7 +1362,7 @@ public class UnitTypes implements ContentList{
|
|||||||
shootY = 4f;
|
shootY = 4f;
|
||||||
y = 1.5f;
|
y = 1.5f;
|
||||||
rotate = true;
|
rotate = true;
|
||||||
ejectEffect = Fx.shellEjectSmall;
|
ejectEffect = Fx.casing1;
|
||||||
bullet = Bullets.standardCopper;
|
bullet = Bullets.standardCopper;
|
||||||
}});
|
}});
|
||||||
|
|
||||||
@@ -1351,7 +1372,7 @@ public class UnitTypes implements ContentList{
|
|||||||
x = 0f;
|
x = 0f;
|
||||||
y = -5f;
|
y = -5f;
|
||||||
rotate = true;
|
rotate = true;
|
||||||
ejectEffect = Fx.shellEjectSmall;
|
ejectEffect = Fx.casing1;
|
||||||
bullet = new MissileBulletType(2.7f, 12, "missile"){{
|
bullet = new MissileBulletType(2.7f, 12, "missile"){{
|
||||||
width = 8f;
|
width = 8f;
|
||||||
height = 8f;
|
height = 8f;
|
||||||
@@ -1397,7 +1418,7 @@ public class UnitTypes implements ContentList{
|
|||||||
rotate = true;
|
rotate = true;
|
||||||
rotateSpeed = 5f;
|
rotateSpeed = 5f;
|
||||||
inaccuracy = 10f;
|
inaccuracy = 10f;
|
||||||
ejectEffect = Fx.shellEjectSmall;
|
ejectEffect = Fx.casing1;
|
||||||
bullet = Bullets.flakLead;
|
bullet = Bullets.flakLead;
|
||||||
}});
|
}});
|
||||||
|
|
||||||
@@ -1409,7 +1430,7 @@ public class UnitTypes implements ContentList{
|
|||||||
inaccuracy = 2f;
|
inaccuracy = 2f;
|
||||||
rotateSpeed = 2f;
|
rotateSpeed = 2f;
|
||||||
shake = 1.5f;
|
shake = 1.5f;
|
||||||
ejectEffect = Fx.shellEjectMedium;
|
ejectEffect = Fx.casing2;
|
||||||
bullet = Bullets.artilleryIncendiary;
|
bullet = Bullets.artilleryIncendiary;
|
||||||
}});
|
}});
|
||||||
}};
|
}};
|
||||||
@@ -1445,7 +1466,7 @@ public class UnitTypes implements ContentList{
|
|||||||
|
|
||||||
shots = 1;
|
shots = 1;
|
||||||
inaccuracy = 3f;
|
inaccuracy = 3f;
|
||||||
ejectEffect = Fx.shellEjectBig;
|
ejectEffect = Fx.casing3;
|
||||||
|
|
||||||
bullet = new ArtilleryBulletType(3.2f, 12){{
|
bullet = new ArtilleryBulletType(3.2f, 12){{
|
||||||
trailMult = 0.8f;
|
trailMult = 0.8f;
|
||||||
@@ -1546,7 +1567,7 @@ public class UnitTypes implements ContentList{
|
|||||||
xRand = 8f;
|
xRand = 8f;
|
||||||
shotDelay = 1f;
|
shotDelay = 1f;
|
||||||
|
|
||||||
bullet = new MissileBulletType(4.2f, 30){{
|
bullet = new MissileBulletType(4.2f, 40){{
|
||||||
homingPower = 0.12f;
|
homingPower = 0.12f;
|
||||||
width = 8f;
|
width = 8f;
|
||||||
height = 8f;
|
height = 8f;
|
||||||
@@ -1554,8 +1575,8 @@ public class UnitTypes implements ContentList{
|
|||||||
drag = -0.003f;
|
drag = -0.003f;
|
||||||
homingRange = 80f;
|
homingRange = 80f;
|
||||||
keepVelocity = false;
|
keepVelocity = false;
|
||||||
splashDamageRadius = 30f;
|
splashDamageRadius = 35f;
|
||||||
splashDamage = 35f;
|
splashDamage = 45f;
|
||||||
lifetime = 56f;
|
lifetime = 56f;
|
||||||
trailColor = Pal.bulletYellowBack;
|
trailColor = Pal.bulletYellowBack;
|
||||||
backColor = Pal.bulletYellowBack;
|
backColor = Pal.bulletYellowBack;
|
||||||
@@ -1568,7 +1589,7 @@ public class UnitTypes implements ContentList{
|
|||||||
}});
|
}});
|
||||||
|
|
||||||
weapons.add(new Weapon("large-bullet-mount"){{
|
weapons.add(new Weapon("large-bullet-mount"){{
|
||||||
reload = 80f;
|
reload = 60f;
|
||||||
cooldownTime = 90f;
|
cooldownTime = 90f;
|
||||||
x = 70f/4f;
|
x = 70f/4f;
|
||||||
y = -66f/4f;
|
y = -66f/4f;
|
||||||
@@ -1578,12 +1599,12 @@ public class UnitTypes implements ContentList{
|
|||||||
shake = 2f;
|
shake = 2f;
|
||||||
recoil = 3f;
|
recoil = 3f;
|
||||||
occlusion = 12f;
|
occlusion = 12f;
|
||||||
ejectEffect = Fx.shellEjectBig;
|
ejectEffect = Fx.casing3;
|
||||||
|
|
||||||
shots = 3;
|
shots = 3;
|
||||||
shotDelay = 4f;
|
shotDelay = 4f;
|
||||||
inaccuracy = 1f;
|
inaccuracy = 1f;
|
||||||
bullet = new BasicBulletType(7f, 50){{
|
bullet = new BasicBulletType(7f, 55){{
|
||||||
width = 13f;
|
width = 13f;
|
||||||
height = 19f;
|
height = 19f;
|
||||||
shootEffect = Fx.shootBig;
|
shootEffect = Fx.shootBig;
|
||||||
@@ -1649,7 +1670,7 @@ public class UnitTypes implements ContentList{
|
|||||||
isCounted = false;
|
isCounted = false;
|
||||||
|
|
||||||
flying = true;
|
flying = true;
|
||||||
mineSpeed = 6f;
|
mineSpeed = 6.5f;
|
||||||
mineTier = 1;
|
mineTier = 1;
|
||||||
buildSpeed = 0.5f;
|
buildSpeed = 0.5f;
|
||||||
drag = 0.05f;
|
drag = 0.05f;
|
||||||
@@ -1735,7 +1756,7 @@ public class UnitTypes implements ContentList{
|
|||||||
itemCapacity = 70;
|
itemCapacity = 70;
|
||||||
health = 220f;
|
health = 220f;
|
||||||
engineOffset = 6f;
|
engineOffset = 6f;
|
||||||
hitSize = 10f;
|
hitSize = 11f;
|
||||||
commandLimit = 7;
|
commandLimit = 7;
|
||||||
|
|
||||||
weapons.add(new Weapon("small-mount-weapon"){{
|
weapons.add(new Weapon("small-mount-weapon"){{
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ public class Weathers implements ContentList{
|
|||||||
@Override
|
@Override
|
||||||
public void load(){
|
public void load(){
|
||||||
snow = new ParticleWeather("snow"){{
|
snow = new ParticleWeather("snow"){{
|
||||||
|
particleRegion = "particle";
|
||||||
sizeMax = 13f;
|
sizeMax = 13f;
|
||||||
sizeMin = 2.6f;
|
sizeMin = 2.6f;
|
||||||
density = 1200f;
|
density = 1200f;
|
||||||
@@ -32,6 +33,7 @@ public class Weathers implements ContentList{
|
|||||||
|
|
||||||
sandstorm = new ParticleWeather("sandstorm"){{
|
sandstorm = new ParticleWeather("sandstorm"){{
|
||||||
color = noiseColor = Color.valueOf("f7cba4");
|
color = noiseColor = Color.valueOf("f7cba4");
|
||||||
|
particleRegion = "particle";
|
||||||
drawNoise = true;
|
drawNoise = true;
|
||||||
useWindVector = true;
|
useWindVector = true;
|
||||||
sizeMax = 140f;
|
sizeMax = 140f;
|
||||||
@@ -48,7 +50,7 @@ public class Weathers implements ContentList{
|
|||||||
|
|
||||||
sporestorm = new ParticleWeather("sporestorm"){{
|
sporestorm = new ParticleWeather("sporestorm"){{
|
||||||
color = noiseColor = Color.valueOf("7457ce");
|
color = noiseColor = Color.valueOf("7457ce");
|
||||||
particleRegion = "circle";
|
particleRegion = "circle-small";
|
||||||
drawNoise = true;
|
drawNoise = true;
|
||||||
statusGround = false;
|
statusGround = false;
|
||||||
useWindVector = true;
|
useWindVector = true;
|
||||||
|
|||||||
@@ -180,18 +180,8 @@ public class Logic implements ApplicationListener{
|
|||||||
//if there's a "win" wave and no enemies are present, win automatically
|
//if there's a "win" wave and no enemies are present, win automatically
|
||||||
if(state.rules.waves && (state.enemies == 0 && state.rules.winWave > 0 && state.wave >= state.rules.winWave && !spawner.isSpawning()) ||
|
if(state.rules.waves && (state.enemies == 0 && state.rules.winWave > 0 && state.wave >= state.rules.winWave && !spawner.isSpawning()) ||
|
||||||
(state.rules.attackMode && state.rules.waveTeam.cores().isEmpty())){
|
(state.rules.attackMode && state.rules.waveTeam.cores().isEmpty())){
|
||||||
//the sector has been conquered - waves get disabled
|
|
||||||
state.rules.waves = false;
|
|
||||||
//disable attack mode
|
|
||||||
state.rules.attackMode = false;
|
|
||||||
|
|
||||||
//fire capture event
|
Call.sectorCapture();
|
||||||
Events.fire(new SectorCaptureEvent(state.rules.sector));
|
|
||||||
|
|
||||||
//save, just in case
|
|
||||||
if(!headless){
|
|
||||||
control.saves.saveSector(state.rules.sector);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
if(!state.rules.attackMode && state.teams.playerCores().size == 0 && !state.gameOver){
|
if(!state.rules.attackMode && state.teams.playerCores().size == 0 && !state.gameOver){
|
||||||
@@ -227,6 +217,24 @@ public class Logic implements ApplicationListener{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Remote(called = Loc.server)
|
||||||
|
public static void sectorCapture(){
|
||||||
|
//the sector has been conquered - waves get disabled
|
||||||
|
state.rules.waves = false;
|
||||||
|
//disable attack mode
|
||||||
|
state.rules.attackMode = false;
|
||||||
|
|
||||||
|
if(state.rules.sector == null) return;
|
||||||
|
|
||||||
|
//fire capture event
|
||||||
|
Events.fire(new SectorCaptureEvent(state.rules.sector));
|
||||||
|
|
||||||
|
//save, just in case
|
||||||
|
if(!headless){
|
||||||
|
control.saves.saveSector(state.rules.sector);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Remote(called = Loc.both)
|
@Remote(called = Loc.both)
|
||||||
public static void updateGameOver(Team winner){
|
public static void updateGameOver(Team winner){
|
||||||
state.gameOver = true;
|
state.gameOver = true;
|
||||||
@@ -245,7 +253,7 @@ public class Logic implements ApplicationListener{
|
|||||||
if(!(content instanceof UnlockableContent u)) return;
|
if(!(content instanceof UnlockableContent u)) return;
|
||||||
|
|
||||||
state.rules.researched.add(u.name);
|
state.rules.researched.add(u.name);
|
||||||
ui.hudfrag.showUnlock(u);
|
Events.fire(new UnlockEvent(u));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -365,7 +365,6 @@ public class NetClient implements ApplicationListener{
|
|||||||
|
|
||||||
@Remote(variants = Variant.one)
|
@Remote(variants = Variant.one)
|
||||||
public static void setPosition(float x, float y){
|
public static void setPosition(float x, float y){
|
||||||
player.unit().set(x, y);
|
|
||||||
player.set(x, y);
|
player.set(x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,10 +27,11 @@ public class Renderer implements ApplicationListener{
|
|||||||
public final Pixelator pixelator = new Pixelator();
|
public final Pixelator pixelator = new Pixelator();
|
||||||
public PlanetRenderer planets;
|
public PlanetRenderer planets;
|
||||||
|
|
||||||
|
public @Nullable Bloom bloom;
|
||||||
public FrameBuffer effectBuffer = new FrameBuffer();
|
public FrameBuffer effectBuffer = new FrameBuffer();
|
||||||
public float laserOpacity = 1f;
|
public float laserOpacity = 1f;
|
||||||
|
|
||||||
private Bloom bloom;
|
//TODO unused
|
||||||
private FxProcessor fx = new FxProcessor();
|
private FxProcessor fx = new FxProcessor();
|
||||||
private Color clearColor = new Color(0f, 0f, 0f, 1f);
|
private Color clearColor = new Color(0f, 0f, 0f, 1f);
|
||||||
private float targetscale = Scl.scl(4);
|
private float targetscale = Scl.scl(4);
|
||||||
@@ -53,7 +54,7 @@ public class Renderer implements ApplicationListener{
|
|||||||
public void init(){
|
public void init(){
|
||||||
planets = new PlanetRenderer();
|
planets = new PlanetRenderer();
|
||||||
|
|
||||||
if(settings.getBool("bloom")){
|
if(settings.getBool("bloom", !ios)){
|
||||||
setupBloom();
|
setupBloom();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -120,10 +121,6 @@ public class Renderer implements ApplicationListener{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void resize(int width, int height){
|
public void resize(int width, int height){
|
||||||
if(settings.getBool("bloom")){
|
|
||||||
setupBloom();
|
|
||||||
}
|
|
||||||
|
|
||||||
fx.resize(width, height);
|
fx.resize(width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -239,6 +236,7 @@ public class Renderer implements ApplicationListener{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(bloom != null){
|
if(bloom != null){
|
||||||
|
bloom.resize(graphics.getWidth() / 4, graphics.getHeight() / 4);
|
||||||
Draw.draw(Layer.bullet - 0.01f, bloom::capture);
|
Draw.draw(Layer.bullet - 0.01f, bloom::capture);
|
||||||
Draw.draw(Layer.effect + 0.01f, bloom::render);
|
Draw.draw(Layer.effect + 0.01f, bloom::render);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -328,20 +328,21 @@ public class UI implements ApplicationListener, Loadable{
|
|||||||
|
|
||||||
/** Shows a label in the world. This label is behind everything. Does not fade. */
|
/** Shows a label in the world. This label is behind everything. Does not fade. */
|
||||||
public void showLabel(String info, float duration, float worldx, float worldy){
|
public void showLabel(String info, float duration, float worldx, float worldy){
|
||||||
Table table = new Table();
|
var table = new Table(Styles.black3).margin(4);
|
||||||
table.setFillParent(true);
|
|
||||||
table.touchable = Touchable.disabled;
|
table.touchable = Touchable.disabled;
|
||||||
table.update(() -> {
|
table.update(() -> {
|
||||||
if(state.isMenu()) table.remove();
|
if(state.isMenu()) table.remove();
|
||||||
|
Vec2 v = Core.camera.project(worldx, worldy);
|
||||||
|
table.setPosition(v.x, v.y, Align.center);
|
||||||
});
|
});
|
||||||
table.actions(Actions.delay(duration), Actions.remove());
|
table.actions(Actions.delay(duration), Actions.remove());
|
||||||
table.align(Align.center).table(Styles.black3, t -> t.margin(4).add(info).style(Styles.outlineLabel)).update(t -> {
|
table.add(info).style(Styles.outlineLabel);
|
||||||
Vec2 v = Core.camera.project(worldx, worldy);
|
table.pack();
|
||||||
t.setPosition(v.x, v.y, Align.center);
|
|
||||||
});
|
|
||||||
table.act(0f);
|
table.act(0f);
|
||||||
//make sure it's at the back
|
//make sure it's at the back
|
||||||
Core.scene.root.addChildAt(0, table);
|
Core.scene.root.addChildAt(0, table);
|
||||||
|
|
||||||
|
table.getChildren().first().act(0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void showInfo(String info){
|
public void showInfo(String info){
|
||||||
@@ -389,7 +390,7 @@ public class UI implements ApplicationListener, Loadable{
|
|||||||
public void showException(String text, Throwable exc){
|
public void showException(String text, Throwable exc){
|
||||||
loadfrag.hide();
|
loadfrag.hide();
|
||||||
new Dialog(""){{
|
new Dialog(""){{
|
||||||
String message = Strings.getFinalMesage(exc);
|
String message = Strings.getFinalMessage(exc);
|
||||||
|
|
||||||
setFillParent(true);
|
setFillParent(true);
|
||||||
cont.margin(15);
|
cont.margin(15);
|
||||||
|
|||||||
@@ -200,8 +200,8 @@ public class World{
|
|||||||
|
|
||||||
for(Tile tile : tiles){
|
for(Tile tile : tiles){
|
||||||
//remove legacy blocks; they need to stop existing
|
//remove legacy blocks; they need to stop existing
|
||||||
if(tile.block() instanceof LegacyBlock){
|
if(tile.block() instanceof LegacyBlock l){
|
||||||
tile.remove();
|
l.removeSelf(tile);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,10 +20,12 @@ public abstract class UnlockableContent extends MappableContent{
|
|||||||
public Stats stats = new Stats();
|
public Stats stats = new Stats();
|
||||||
/** Localized, formal name. Never null. Set to internal name if not found in bundle. */
|
/** Localized, formal name. Never null. Set to internal name if not found in bundle. */
|
||||||
public String localizedName;
|
public String localizedName;
|
||||||
/** Localized description. May be null. */
|
/** Localized description & details. May be null. */
|
||||||
public @Nullable String description;
|
public @Nullable String description, details;
|
||||||
/** Whether this content is always unlocked in the tech tree. */
|
/** Whether this content is always unlocked in the tech tree. */
|
||||||
public boolean alwaysUnlocked = false;
|
public boolean alwaysUnlocked = false;
|
||||||
|
/** Special logic icon ID. */
|
||||||
|
public int iconId = 0;
|
||||||
/** Icons by Cicon ID.*/
|
/** Icons by Cicon ID.*/
|
||||||
protected TextureRegion[] cicons = new TextureRegion[Cicon.all.length];
|
protected TextureRegion[] cicons = new TextureRegion[Cicon.all.length];
|
||||||
/** Unlock state. Loaded from settings. Do not modify outside of the constructor. */
|
/** Unlock state. Loaded from settings. Do not modify outside of the constructor. */
|
||||||
@@ -34,6 +36,7 @@ public abstract class UnlockableContent extends MappableContent{
|
|||||||
|
|
||||||
this.localizedName = Core.bundle.get(getContentType() + "." + this.name + ".name", this.name);
|
this.localizedName = Core.bundle.get(getContentType() + "." + this.name + ".name", this.name);
|
||||||
this.description = Core.bundle.getOrNull(getContentType() + "." + this.name + ".description");
|
this.description = Core.bundle.getOrNull(getContentType() + "." + this.name + ".description");
|
||||||
|
this.details = Core.bundle.getOrNull(getContentType() + "." + this.name + ".details");
|
||||||
this.unlocked = Core.settings != null && Core.settings.getBool(this.name + "-unlocked", false);
|
this.unlocked = Core.settings != null && Core.settings.getBool(this.name + "-unlocked", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,7 +52,7 @@ public abstract class UnlockableContent extends MappableContent{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Intializes stats on demand. Should only be called once. Only called before something is displayed. */
|
/** Initializes stats on demand. Should only be called once. Only called before something is displayed. */
|
||||||
public void setStats(){
|
public void setStats(){
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -123,7 +126,7 @@ public abstract class UnlockableContent extends MappableContent{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean unlocked(){
|
public boolean unlocked(){
|
||||||
if(net.client()) return state.rules.researched.contains(name);
|
if(net != null && net.client()) return state.rules.researched.contains(name);
|
||||||
return unlocked || alwaysUnlocked;
|
return unlocked || alwaysUnlocked;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -50,9 +50,19 @@ public class EditorTile extends Tile{
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!isCenter()){
|
||||||
|
EditorTile cen = (EditorTile)build.tile;
|
||||||
|
cen.op(OpType.rotation, (byte)build.rotation);
|
||||||
|
cen.op(OpType.team, (byte)build.team.id);
|
||||||
|
cen.op(OpType.block, block.id);
|
||||||
|
update();
|
||||||
|
}else{
|
||||||
|
if(build != null) op(OpType.rotation, (byte)build.rotation);
|
||||||
|
if(build != null) op(OpType.team, (byte)build.team.id);
|
||||||
op(OpType.block, block.id);
|
op(OpType.block, block.id);
|
||||||
if(rotation != 0) op(OpType.rotation, (byte)rotation);
|
|
||||||
if(team != Team.derelict) op(OpType.team, (byte)team.id);
|
}
|
||||||
|
|
||||||
super.setBlock(type, team, rotation);
|
super.setBlock(type, team, rotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ public class MapEditor{
|
|||||||
|
|
||||||
if(isFloor){
|
if(isFloor){
|
||||||
tile.setFloor(drawBlock.asFloor());
|
tile.setFloor(drawBlock.asFloor());
|
||||||
}else{
|
}else if(!(tile.block().isMultiblock() && !drawBlock.isMultiblock())){
|
||||||
if(drawBlock.rotate && tile.build != null && tile.build.rotation != rotation){
|
if(drawBlock.rotate && tile.build != null && tile.build.rotation != rotation){
|
||||||
addTileOp(TileOp.get(tile.x, tile.y, (byte)OpType.rotation.ordinal(), (byte)rotation));
|
addTileOp(TileOp.get(tile.x, tile.y, (byte)OpType.rotation.ordinal(), (byte)rotation));
|
||||||
}
|
}
|
||||||
@@ -157,7 +157,7 @@ public class MapEditor{
|
|||||||
boolean hasOverlap(int x, int y){
|
boolean hasOverlap(int x, int y){
|
||||||
Tile tile = world.tile(x, y);
|
Tile tile = world.tile(x, y);
|
||||||
//allow direct replacement of blocks of the same size
|
//allow direct replacement of blocks of the same size
|
||||||
if(tile != null && tile.isCenter() && tile.block() != drawBlock && tile.block().size == drawBlock.size){
|
if(tile != null && tile.isCenter() && tile.block() != drawBlock && tile.block().size == drawBlock.size && tile.x == x && tile.y == y){
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -168,7 +168,6 @@ public class MapEditor{
|
|||||||
for(int dy = 0; dy < drawBlock.size; dy++){
|
for(int dy = 0; dy < drawBlock.size; dy++){
|
||||||
int worldx = dx + offsetx + x;
|
int worldx = dx + offsetx + x;
|
||||||
int worldy = dy + offsety + y;
|
int worldy = dy + offsety + y;
|
||||||
if(!(worldx == x && worldy == y)){
|
|
||||||
Tile other = world.tile(worldx, worldy);
|
Tile other = world.tile(worldx, worldy);
|
||||||
|
|
||||||
if(other != null && other.block().isMultiblock()){
|
if(other != null && other.block().isMultiblock()){
|
||||||
@@ -176,7 +175,6 @@ public class MapEditor{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,6 +54,11 @@ public class MapGenerateDialog extends BaseDialog{
|
|||||||
protected void changeBuild(Team team, Prov<Building> entityprov, int rotation){
|
protected void changeBuild(Team team, Prov<Building> entityprov, int rotation){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setBlock(Block type, Team team, int rotation, Prov<Building> entityprov){
|
||||||
|
this.block = type;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/** @param applied whether or not to use the applied in-game mode. */
|
/** @param applied whether or not to use the applied in-game mode. */
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ public class WaveGraph extends Table{
|
|||||||
for(int i = 0; i < values.length; i++){
|
for(int i = 0; i < values.length; i++){
|
||||||
float sum = 0;
|
float sum = 0;
|
||||||
for(UnitType type : used.orderedItems()){
|
for(UnitType type : used.orderedItems()){
|
||||||
sum += type.health * values[i][type.id];
|
sum += (type.health) * values[i][type.id];
|
||||||
}
|
}
|
||||||
|
|
||||||
float cx = graphX + i*spacing, cy = 2f + graphY + sum * (graphH - 4f) / maxHealth;
|
float cx = graphX + i*spacing, cy = 2f + graphY + sum * (graphH - 4f) / maxHealth;
|
||||||
@@ -160,7 +160,7 @@ public class WaveGraph extends Table{
|
|||||||
used.add(spawn.type);
|
used.add(spawn.type);
|
||||||
}
|
}
|
||||||
max = Math.max(max, values[index][spawn.type.id]);
|
max = Math.max(max, values[index][spawn.type.id]);
|
||||||
healthsum += spawned * spawn.type.health;
|
healthsum += spawned * (spawn.type.health);
|
||||||
sum += spawned;
|
sum += spawned;
|
||||||
}
|
}
|
||||||
maxTotal = Math.max(maxTotal, sum);
|
maxTotal = Math.max(maxTotal, sum);
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ public class WaveInfoDialog extends BaseDialog{
|
|||||||
}).disabled(b -> Core.app.getClipboardText() == null || Core.app.getClipboardText().isEmpty());
|
}).disabled(b -> Core.app.getClipboardText() == null || Core.app.getClipboardText().isEmpty());
|
||||||
dialog.cont.row();
|
dialog.cont.row();
|
||||||
dialog.cont.button("@settings.reset", () -> ui.showConfirm("@confirm", "@settings.clear.confirm", () -> {
|
dialog.cont.button("@settings.reset", () -> ui.showConfirm("@confirm", "@settings.clear.confirm", () -> {
|
||||||
groups = JsonIO.copy(defaultWaves.get());
|
groups = JsonIO.copy(waves.get());
|
||||||
buildGroups();
|
buildGroups();
|
||||||
dialog.hide();
|
dialog.hide();
|
||||||
}));
|
}));
|
||||||
@@ -98,7 +98,7 @@ public class WaveInfoDialog extends BaseDialog{
|
|||||||
if(experimental){
|
if(experimental){
|
||||||
buttons.button("Random", Icon.refresh, () -> {
|
buttons.button("Random", Icon.refresh, () -> {
|
||||||
groups.clear();
|
groups.clear();
|
||||||
groups = DefaultWaves.generate(1f / 10f);
|
groups = Waves.generate(1f / 10f);
|
||||||
updateWaves();
|
updateWaves();
|
||||||
}).width(200f);
|
}).width(200f);
|
||||||
}
|
}
|
||||||
@@ -125,7 +125,7 @@ public class WaveInfoDialog extends BaseDialog{
|
|||||||
}
|
}
|
||||||
|
|
||||||
void setup(){
|
void setup(){
|
||||||
groups = JsonIO.copy(state.rules.spawns.isEmpty() ? defaultWaves.get() : state.rules.spawns);
|
groups = JsonIO.copy(state.rules.spawns.isEmpty() ? waves.get() : state.rules.spawns);
|
||||||
|
|
||||||
cont.clear();
|
cont.clear();
|
||||||
cont.stack(new Table(Tex.clear, main -> {
|
cont.stack(new Table(Tex.clear, main -> {
|
||||||
|
|||||||
@@ -115,11 +115,17 @@ public class Damage{
|
|||||||
tr.trns(angle, length);
|
tr.trns(angle, length);
|
||||||
Intc2 collider = (cx, cy) -> {
|
Intc2 collider = (cx, cy) -> {
|
||||||
Building tile = world.build(cx, cy);
|
Building tile = world.build(cx, cy);
|
||||||
if(tile != null && !collidedBlocks.contains(tile.pos()) && tile.team != team && tile.collide(hitter)){
|
boolean collide = tile != null && collidedBlocks.add(tile.pos());
|
||||||
|
|
||||||
|
if(collide && tile.team != team && tile.collide(hitter)){
|
||||||
tile.collision(hitter);
|
tile.collision(hitter);
|
||||||
collidedBlocks.add(tile.pos());
|
|
||||||
hitter.type.hit(hitter, tile.x, tile.y);
|
hitter.type.hit(hitter, tile.x, tile.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//try to heal the tile
|
||||||
|
if(collide && hitter.type.collides(hitter, tile)){
|
||||||
|
hitter.type.hitTile(hitter, tile, 0f);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
if(hitter.type.collidesGround){
|
if(hitter.type.collidesGround){
|
||||||
|
|||||||
@@ -21,20 +21,23 @@ public class Effect{
|
|||||||
private static final EffectContainer container = new EffectContainer();
|
private static final EffectContainer container = new EffectContainer();
|
||||||
private static final Seq<Effect> all = new Seq<>();
|
private static final Seq<Effect> all = new Seq<>();
|
||||||
|
|
||||||
public final int id;
|
private boolean initialized;
|
||||||
public final Cons<EffectContainer> renderer;
|
|
||||||
public final float lifetime;
|
|
||||||
/** Clip size. */
|
|
||||||
public float size;
|
|
||||||
|
|
||||||
public boolean ground;
|
public final int id;
|
||||||
public float groundDuration;
|
|
||||||
|
public Cons<EffectContainer> renderer = e -> {};
|
||||||
|
public float lifetime = 50f;
|
||||||
|
/** Clip size. */
|
||||||
|
public float clip;
|
||||||
|
|
||||||
|
public float layer = Layer.effect;
|
||||||
|
public float layerDuration;
|
||||||
|
|
||||||
public Effect(float life, float clipsize, Cons<EffectContainer> renderer){
|
public Effect(float life, float clipsize, Cons<EffectContainer> renderer){
|
||||||
this.id = all.size;
|
this.id = all.size;
|
||||||
this.lifetime = life;
|
this.lifetime = life;
|
||||||
this.renderer = renderer;
|
this.renderer = renderer;
|
||||||
this.size = clipsize;
|
this.clip = clipsize;
|
||||||
all.add(this);
|
all.add(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -42,14 +45,22 @@ public class Effect{
|
|||||||
this(life, 50f, renderer);
|
this(life, 50f, renderer);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Effect ground(){
|
//for custom implementations
|
||||||
ground = true;
|
public Effect(){
|
||||||
|
this.id = all.size;
|
||||||
|
all.add(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void init(){}
|
||||||
|
|
||||||
|
public Effect layer(float l){
|
||||||
|
layer = l;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Effect ground(float duration){
|
public Effect layer(float l, float duration){
|
||||||
ground = true;
|
layer = l;
|
||||||
this.groundDuration = duration;
|
this.layerDuration = duration;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -87,14 +98,18 @@ public class Effect{
|
|||||||
|
|
||||||
public float render(int id, Color color, float life, float lifetime, float rotation, float x, float y, Object data){
|
public float render(int id, Color color, float life, float lifetime, float rotation, float x, float y, Object data){
|
||||||
container.set(id, color, life, lifetime, rotation, x, y, data);
|
container.set(id, color, life, lifetime, rotation, x, y, data);
|
||||||
Draw.z(ground ? Layer.debris : Layer.effect);
|
Draw.z(layer);
|
||||||
Draw.reset();
|
Draw.reset();
|
||||||
renderer.get(container);
|
render(container);
|
||||||
Draw.reset();
|
Draw.reset();
|
||||||
|
|
||||||
return container.lifetime;
|
return container.lifetime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void render(EffectContainer e){
|
||||||
|
renderer.get(e);
|
||||||
|
}
|
||||||
|
|
||||||
public static @Nullable Effect get(int id){
|
public static @Nullable Effect get(int id){
|
||||||
return id >= all.size || id < 0 ? null : all.get(id);
|
return id >= all.size || id < 0 ? null : all.get(id);
|
||||||
}
|
}
|
||||||
@@ -122,9 +137,14 @@ public class Effect{
|
|||||||
if(headless || effect == Fx.none) return;
|
if(headless || effect == Fx.none) return;
|
||||||
if(Core.settings.getBool("effects")){
|
if(Core.settings.getBool("effects")){
|
||||||
Rect view = Core.camera.bounds(Tmp.r1);
|
Rect view = Core.camera.bounds(Tmp.r1);
|
||||||
Rect pos = Tmp.r2.setSize(effect.size).setCenter(x, y);
|
Rect pos = Tmp.r2.setSize(effect.clip).setCenter(x, y);
|
||||||
|
|
||||||
if(view.overlaps(pos)){
|
if(view.overlaps(pos)){
|
||||||
|
if(!effect.initialized){
|
||||||
|
effect.initialized = true;
|
||||||
|
effect.init();
|
||||||
|
}
|
||||||
|
|
||||||
EffectState entity = EffectState.create();
|
EffectState entity = EffectState.create();
|
||||||
entity.effect = effect;
|
entity.effect = effect;
|
||||||
entity.rotation = rotation;
|
entity.rotation = rotation;
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import arc.graphics.*;
|
|||||||
import arc.math.*;
|
import arc.math.*;
|
||||||
import arc.math.geom.*;
|
import arc.math.geom.*;
|
||||||
import arc.struct.*;
|
import arc.struct.*;
|
||||||
|
import arc.util.*;
|
||||||
import mindustry.content.*;
|
import mindustry.content.*;
|
||||||
import mindustry.core.*;
|
import mindustry.core.*;
|
||||||
import mindustry.entities.bullet.*;
|
import mindustry.entities.bullet.*;
|
||||||
@@ -33,16 +34,16 @@ public class Lightning{
|
|||||||
createLightningInternal(bullet, lastSeed++, bullet.team, color, damage, x, y, targetAngle, length);
|
createLightningInternal(bullet, lastSeed++, bullet.team, color, damage, x, y, targetAngle, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void createLightningInternal(Bullet hitter, int seed, Team team, Color color, float damage, float x, float y, float rotation, int length){
|
private static void createLightningInternal(@Nullable Bullet hitter, int seed, Team team, Color color, float damage, float x, float y, float rotation, int length){
|
||||||
random.setSeed(seed);
|
random.setSeed(seed);
|
||||||
hit.clear();
|
hit.clear();
|
||||||
|
|
||||||
BulletType bulletType = hitter != null && !hitter.type.collidesAir ? Bullets.damageLightningGround : Bullets.damageLightning;
|
BulletType hitCreate = hitter == null || hitter.type.lightningType == null ? Bullets.damageLightning : hitter.type.lightningType;
|
||||||
Seq<Vec2> lines = new Seq<>();
|
Seq<Vec2> lines = new Seq<>();
|
||||||
bhit = false;
|
bhit = false;
|
||||||
|
|
||||||
for(int i = 0; i < length / 2; i++){
|
for(int i = 0; i < length / 2; i++){
|
||||||
bulletType.create(null, team, x, y, 0f, damage, 1f, 1f, hitter);
|
hitCreate.create(null, team, x, y, 0f, damage, 1f, 1f, hitter);
|
||||||
lines.add(new Vec2(x + Mathf.range(3f), y + Mathf.range(3f)));
|
lines.add(new Vec2(x + Mathf.range(3f), y + Mathf.range(3f)));
|
||||||
|
|
||||||
if(lines.size > 1){
|
if(lines.size > 1){
|
||||||
|
|||||||
@@ -53,13 +53,13 @@ public class Predict{
|
|||||||
|
|
||||||
public static Vec2 intercept(Position src, Position dst, float v){
|
public static Vec2 intercept(Position src, Position dst, float v){
|
||||||
float ddx = 0, ddy = 0;
|
float ddx = 0, ddy = 0;
|
||||||
if(dst instanceof Hitboxc){
|
if(dst instanceof Hitboxc h){
|
||||||
ddx += ((Hitboxc)dst).deltaX();
|
ddx += h.deltaX();
|
||||||
ddy += ((Hitboxc)dst).deltaY();
|
ddy += h.deltaY();
|
||||||
}
|
}
|
||||||
if(src instanceof Hitboxc){
|
if(src instanceof Hitboxc h){
|
||||||
ddx -= ((Hitboxc)src).deltaX()/(Time.delta);
|
ddx -= h.deltaX()/(Time.delta);
|
||||||
ddy -= ((Hitboxc)src).deltaY()/(Time.delta);
|
ddy -= h.deltaY()/(Time.delta);
|
||||||
}
|
}
|
||||||
return intercept(src.getX(), src.getY(), dst.getX(), dst.getY(), ddx, ddy, v);
|
return intercept(src.getX(), src.getY(), dst.getX(), dst.getY(), ddx, ddy, v);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
package mindustry.entities.abilities;
|
||||||
|
|
||||||
|
import arc.graphics.*;
|
||||||
|
import arc.math.*;
|
||||||
|
import arc.util.*;
|
||||||
|
import arc.audio.*;
|
||||||
|
import mindustry.content.*;
|
||||||
|
import mindustry.entities.*;
|
||||||
|
import mindustry.gen.*;
|
||||||
|
|
||||||
|
public class MoveLightningAbility extends Ability{
|
||||||
|
//Lightning damage
|
||||||
|
public float damage = 35f;
|
||||||
|
//Chance of firing every tick. Set >= 1 to always fire lightning every tick at max speed.
|
||||||
|
public float chance = 0.15f;
|
||||||
|
//Length of the lightning
|
||||||
|
public int length = 12;
|
||||||
|
//Speeds for when to start lightninging and when to stop getting faster
|
||||||
|
public float minSpeed = 0.8f, maxSpeed = 1.2f;
|
||||||
|
//Lightning color
|
||||||
|
public Color color = Color.valueOf("a9d8ff");
|
||||||
|
|
||||||
|
public Effect shootEffect = Fx.sparkShoot;
|
||||||
|
public Sound shootSound = Sounds.spark;
|
||||||
|
|
||||||
|
MoveLightningAbility(){}
|
||||||
|
|
||||||
|
public MoveLightningAbility(float damage, int length, float chance, float minSpeed, float maxSpeed, Color color){
|
||||||
|
this.damage = damage;
|
||||||
|
this.length = length;
|
||||||
|
this.chance = chance;
|
||||||
|
this.minSpeed = minSpeed;
|
||||||
|
this.maxSpeed = maxSpeed;
|
||||||
|
this.color = color;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(Unit unit){
|
||||||
|
float scl = Mathf.clamp((unit.vel().len() - minSpeed) / (maxSpeed - minSpeed));
|
||||||
|
if(Mathf.chance(Time.delta * chance * scl)){
|
||||||
|
shootEffect.at(unit.x, unit.y, unit.rotation, color);
|
||||||
|
Lightning.create(unit.team, color, damage, unit.x + unit.vel.x, unit.y + unit.vel.y, unit.rotation, length);
|
||||||
|
shootSound.at(unit);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -79,8 +79,10 @@ public abstract class BulletType extends Content{
|
|||||||
public boolean backMove = true;
|
public boolean backMove = true;
|
||||||
/** Bullet range override. */
|
/** Bullet range override. */
|
||||||
public float range = -1f;
|
public float range = -1f;
|
||||||
/** Heal Bullet Percent **/
|
/** % of block health healed **/
|
||||||
public float healPercent = 0f;
|
public float healPercent = 0f;
|
||||||
|
/** whether to make fire on impact */
|
||||||
|
public boolean makeFire = false;
|
||||||
|
|
||||||
//additional effects
|
//additional effects
|
||||||
|
|
||||||
@@ -114,6 +116,8 @@ public abstract class BulletType extends Content{
|
|||||||
public float lightningDamage = -1;
|
public float lightningDamage = -1;
|
||||||
public float lightningCone = 360f;
|
public float lightningCone = 360f;
|
||||||
public float lightningAngle = 0f;
|
public float lightningAngle = 0f;
|
||||||
|
/** The bullet created at lightning points. */
|
||||||
|
public @Nullable BulletType lightningType = null;
|
||||||
|
|
||||||
public float weaveScale = 1f;
|
public float weaveScale = 1f;
|
||||||
public float weaveMag = -1f;
|
public float weaveMag = -1f;
|
||||||
@@ -158,14 +162,15 @@ public abstract class BulletType extends Content{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void hitTile(Bullet b, Building tile, float initialHealth){
|
public void hitTile(Bullet b, Building tile, float initialHealth){
|
||||||
if(status == StatusEffects.burning) {
|
if(makeFire && tile.team != b.team){
|
||||||
Fires.create(tile.tile);
|
Fires.create(tile.tile);
|
||||||
}
|
}
|
||||||
hit(b);
|
|
||||||
|
|
||||||
if(healPercent > 0f && tile.team == b.team && !(tile.block instanceof ConstructBlock)){
|
if(healPercent > 0f && tile.team == b.team && !(tile.block instanceof ConstructBlock)){
|
||||||
Fx.healBlockFull.at(tile.x, tile.y, tile.block.size, Pal.heal);
|
Fx.healBlockFull.at(tile.x, tile.y, tile.block.size, Pal.heal);
|
||||||
tile.heal(healPercent / 100f * tile.maxHealth());
|
tile.heal(healPercent / 100f * tile.maxHealth());
|
||||||
|
}else if(tile.team != b.team){
|
||||||
|
hit(b);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -216,7 +221,7 @@ public abstract class BulletType extends Content{
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if(status == StatusEffects.burning) {
|
if(makeFire){
|
||||||
indexer.eachBlock(null, x, y, splashDamageRadius, other -> other.team != b.team, other -> {
|
indexer.eachBlock(null, x, y, splashDamageRadius, other -> other.team != b.team, other -> {
|
||||||
Fires.create(other.tile);
|
Fires.create(other.tile);
|
||||||
});
|
});
|
||||||
@@ -247,10 +252,6 @@ public abstract class BulletType extends Content{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void init(Bullet b){
|
public void init(Bullet b){
|
||||||
if(pierceCap >= 1) {
|
|
||||||
pierce = true;
|
|
||||||
//pierceBuilding is not enabled by default, because a bullet may want to *not* pierce buildings
|
|
||||||
}
|
|
||||||
|
|
||||||
if(killShooter && b.owner() instanceof Healthc){
|
if(killShooter && b.owner() instanceof Healthc){
|
||||||
((Healthc)b.owner()).kill();
|
((Healthc)b.owner()).kill();
|
||||||
@@ -280,6 +281,18 @@ public abstract class BulletType extends Content{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init(){
|
||||||
|
if(pierceCap >= 1){
|
||||||
|
pierce = true;
|
||||||
|
//pierceBuilding is not enabled by default, because a bullet may want to *not* pierce buildings
|
||||||
|
}
|
||||||
|
|
||||||
|
if(lightningType == null){
|
||||||
|
lightningType = !collidesAir ? Bullets.damageLightningGround : Bullets.damageLightning;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ContentType getContentType(){
|
public ContentType getContentType(){
|
||||||
return ContentType.bullet;
|
return ContentType.bullet;
|
||||||
|
|||||||
@@ -26,6 +26,11 @@ public class LightningBulletType extends BulletType{
|
|||||||
return (lightningLength + lightningLengthRand/2f) * 6f;
|
return (lightningLength + lightningLengthRand/2f) * 6f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float estimateDPS(){
|
||||||
|
return super.estimateDPS() * Math.max(lightningLength / 4f, 1);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void draw(Bullet b){
|
public void draw(Bullet b){
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1319,7 +1319,8 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void control(LAccess type, Object p1, double p2, double p3, double p4){
|
public void control(LAccess type, Object p1, double p2, double p3, double p4){
|
||||||
if(type == LAccess.configure && block.logicConfigurable){
|
//don't execute configure instructions as the client
|
||||||
|
if(type == LAccess.configure && block.logicConfigurable && !net.client()){
|
||||||
//change config only if it's new
|
//change config only if it's new
|
||||||
Object prev = senseObject(LAccess.config);
|
Object prev = senseObject(LAccess.config);
|
||||||
if(prev != p1){
|
if(prev != p1){
|
||||||
|
|||||||
@@ -22,6 +22,6 @@ abstract class EffectStateComp implements Posc, Drawc, Timedc, Rotc, Childc{
|
|||||||
|
|
||||||
@Replace
|
@Replace
|
||||||
public float clipSize(){
|
public float clipSize(){
|
||||||
return effect.size;
|
return effect.clip;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ abstract class MinerComp implements Itemsc, Posc, Teamc, Rotc, Drawc, Unitc{
|
|||||||
|
|
||||||
public boolean validMine(Tile tile, boolean checkDst){
|
public boolean validMine(Tile tile, boolean checkDst){
|
||||||
return !(tile == null || tile.block() != Blocks.air || (!within(tile.worldx(), tile.worldy(), miningRange) && checkDst)
|
return !(tile == null || tile.block() != Blocks.air || (!within(tile.worldx(), tile.worldy(), miningRange) && checkDst)
|
||||||
|| tile.drop() == null || !canMine(tile.drop())) && state.teams.canMine(self(), tile);
|
|| tile.drop() == null || !canMine(tile.drop()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean validMine(Tile tile){
|
public boolean validMine(Tile tile){
|
||||||
@@ -62,7 +62,6 @@ abstract class MinerComp implements Itemsc, Posc, Teamc, Rotc, Drawc, Unitc{
|
|||||||
mineTile = null;
|
mineTile = null;
|
||||||
mineTimer = 0f;
|
mineTimer = 0f;
|
||||||
}else if(mining()){
|
}else if(mining()){
|
||||||
state.teams.registerMined(mineTile, self());
|
|
||||||
Item item = mineTile.drop();
|
Item item = mineTile.drop();
|
||||||
lookAt(angleTo(mineTile.worldx(), mineTile.worldy()));
|
lookAt(angleTo(mineTile.worldx(), mineTile.worldy()));
|
||||||
mineTimer += Time.delta *type.mineSpeed;
|
mineTimer += Time.delta *type.mineSpeed;
|
||||||
@@ -95,7 +94,7 @@ abstract class MinerComp implements Itemsc, Posc, Teamc, Rotc, Drawc, Unitc{
|
|||||||
@Override
|
@Override
|
||||||
public void draw(){
|
public void draw(){
|
||||||
if(!mining()) return;
|
if(!mining()) return;
|
||||||
float focusLen = 4f + Mathf.absin(Time.time(), 1.1f, 0.5f);
|
float focusLen = hitSize() / 2f + Mathf.absin(Time.time(), 1.1f, 0.5f);
|
||||||
float swingScl = 12f, swingMag = tilesize / 8f;
|
float swingScl = 12f, swingMag = tilesize / 8f;
|
||||||
float flashScl = 0.3f;
|
float flashScl = 0.3f;
|
||||||
|
|
||||||
|
|||||||
@@ -22,9 +22,9 @@ abstract class ShieldComp implements Healthc, Posc{
|
|||||||
@Replace
|
@Replace
|
||||||
@Override
|
@Override
|
||||||
public void damage(float amount){
|
public void damage(float amount){
|
||||||
amount /= healthMultiplier;
|
|
||||||
//apply armor
|
//apply armor
|
||||||
amount = Math.max(amount - armor, minArmorDamage * amount);
|
amount = Math.max(amount - armor, minArmorDamage * amount);
|
||||||
|
amount /= healthMultiplier;
|
||||||
|
|
||||||
hitTime = 1f;
|
hitTime = 1f;
|
||||||
|
|
||||||
|
|||||||
@@ -237,12 +237,14 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void add(){
|
public void add(){
|
||||||
|
team.data().updateCount(type, 1);
|
||||||
|
|
||||||
//check if over unit cap
|
//check if over unit cap
|
||||||
if(count() > cap() && !spawnedByCore && !dead){
|
if(count() > cap() && !spawnedByCore && !dead){
|
||||||
Call.unitCapDeath(self());
|
Call.unitCapDeath(self());
|
||||||
team.data().updateCount(type, -1);
|
team.data().updateCount(type, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -152,7 +152,7 @@ abstract class WeaponsComp implements Teamc, Posc, Rotc, Velc, Statusc{
|
|||||||
mount.reload <= 0.0001f && //reload has to be 0
|
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
|
Angles.within(weapon.rotate ? mount.rotation : this.rotation, mount.targetRotation, mount.weapon.shootCone) //has to be within the cone
|
||||||
){
|
){
|
||||||
shoot(mount, shootX, shootY, mount.aimX, mount.aimY, shootAngle, Mathf.sign(weapon.x));
|
shoot(mount, shootX, shootY, mount.aimX, mount.aimY, mountX, mountY, shootAngle, Mathf.sign(weapon.x));
|
||||||
|
|
||||||
mount.reload = weapon.reload;
|
mount.reload = weapon.reload;
|
||||||
|
|
||||||
@@ -162,7 +162,7 @@ abstract class WeaponsComp implements Teamc, Posc, Rotc, Velc, Statusc{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void shoot(WeaponMount mount, float x, float y, float aimX, float aimY, float rotation, int side){
|
private void shoot(WeaponMount mount, float x, float y, float aimX, float aimY, float mountX, float mountY, float rotation, int side){
|
||||||
Weapon weapon = mount.weapon;
|
Weapon weapon = mount.weapon;
|
||||||
|
|
||||||
float baseX = this.x, baseY = this.y;
|
float baseX = this.x, baseY = this.y;
|
||||||
@@ -203,7 +203,7 @@ abstract class WeaponsComp implements Teamc, Posc, Rotc, Velc, Statusc{
|
|||||||
mount.heat = 1f;
|
mount.heat = 1f;
|
||||||
}
|
}
|
||||||
|
|
||||||
weapon.ejectEffect.at(x, y, rotation * side);
|
weapon.ejectEffect.at(mountX, mountY, rotation * side);
|
||||||
ammo.shootEffect.at(x, y, rotation, parentize ? this : null);
|
ammo.shootEffect.at(x, y, rotation, parentize ? this : null);
|
||||||
ammo.smokeEffect.at(x, y, rotation, parentize ? this : null);
|
ammo.smokeEffect.at(x, y, rotation, parentize ? this : null);
|
||||||
apply(weapon.shootStatus, weapon.shootStatusDuration);
|
apply(weapon.shootStatus, weapon.shootStatusDuration);
|
||||||
|
|||||||
32
core/src/mindustry/entities/effect/MultiEffect.java
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
package mindustry.entities.effect;
|
||||||
|
|
||||||
|
import mindustry.entities.*;
|
||||||
|
|
||||||
|
/** Renders multiple particle effects at once. */
|
||||||
|
public class MultiEffect extends Effect{
|
||||||
|
public Effect[] effects = {};
|
||||||
|
|
||||||
|
public MultiEffect(){
|
||||||
|
clip = 100f;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MultiEffect(Effect... effects){
|
||||||
|
this();
|
||||||
|
this.effects = effects;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init(){
|
||||||
|
for(Effect f : effects){
|
||||||
|
clip = Math.max(clip, f.clip);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void render(EffectContainer e){
|
||||||
|
for(Effect f : effects){
|
||||||
|
e.scaled(f.lifetime, f::render);
|
||||||
|
clip = Math.max(clip, f.clip);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
55
core/src/mindustry/entities/effect/ParticleEffect.java
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
package mindustry.entities.effect;
|
||||||
|
|
||||||
|
import arc.*;
|
||||||
|
import arc.graphics.*;
|
||||||
|
import arc.graphics.g2d.*;
|
||||||
|
import arc.math.*;
|
||||||
|
import arc.util.*;
|
||||||
|
import mindustry.entities.*;
|
||||||
|
|
||||||
|
/** The most essential effect class. Can create particles in various shapes. */
|
||||||
|
public class ParticleEffect extends Effect{
|
||||||
|
public Color colorFrom = Color.white.cpy(), colorTo = Color.white.cpy();
|
||||||
|
public int particles = 6;
|
||||||
|
public float cone = 180f, length = 20f, baseLength = 0f;
|
||||||
|
public Interp interp = Interp.linear;
|
||||||
|
|
||||||
|
//region only
|
||||||
|
public float sizeFrom = 2f, sizeTo = 0f;
|
||||||
|
public String region = "circle";
|
||||||
|
|
||||||
|
//line only
|
||||||
|
public boolean line;
|
||||||
|
public float strokeFrom = 2f, strokeTo = 0f, lenFrom = 4f, lenTo = 2f;
|
||||||
|
|
||||||
|
private @Nullable TextureRegion tex;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init(){
|
||||||
|
clip = Math.max(clip, length + Math.max(sizeFrom, sizeTo));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void render(EffectContainer e){
|
||||||
|
if(tex == null) tex = Core.atlas.find(region);
|
||||||
|
|
||||||
|
float rawfin = e.fin();
|
||||||
|
float fin = e.fin(interp);
|
||||||
|
float rad = interp.apply(sizeFrom, sizeTo, rawfin) * 2;
|
||||||
|
|
||||||
|
Draw.color(colorFrom, colorTo, fin);
|
||||||
|
|
||||||
|
if(line){
|
||||||
|
Lines.stroke(interp.apply(strokeFrom, strokeTo, rawfin));
|
||||||
|
float len = interp.apply(lenFrom, lenTo, rawfin);
|
||||||
|
|
||||||
|
Angles.randLenVectors(e.id, particles, length * fin + baseLength, e.rotation, cone, (x, y) -> {
|
||||||
|
Lines.lineAngle(e.x + x, e.y + y, Mathf.angle(x, y), len);
|
||||||
|
});
|
||||||
|
}else{
|
||||||
|
Angles.randLenVectors(e.id, particles, length * fin + baseLength, e.rotation, cone, (x, y) -> {
|
||||||
|
Draw.rect(tex, e.x + x, e.y + y, rad, rad);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
33
core/src/mindustry/entities/effect/WaveEffect.java
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
package mindustry.entities.effect;
|
||||||
|
|
||||||
|
import arc.graphics.*;
|
||||||
|
import arc.graphics.g2d.*;
|
||||||
|
import arc.math.*;
|
||||||
|
import mindustry.entities.*;
|
||||||
|
|
||||||
|
/** Effect that renders a basic shockwave. */
|
||||||
|
public class WaveEffect extends Effect{
|
||||||
|
public Color colorFrom = Color.white.cpy(), colorTo = Color.white.cpy();
|
||||||
|
public float sizeFrom = 0f, sizeTo = 100f;
|
||||||
|
public int sides = -1;
|
||||||
|
public float rotation = 0f;
|
||||||
|
public float strokeFrom = 2f, strokeTo = 0f;
|
||||||
|
public Interp interp = Interp.linear;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init(){
|
||||||
|
clip = Math.max(clip, Math.max(sizeFrom, sizeTo) + Math.max(strokeFrom, strokeTo));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void render(EffectContainer e){
|
||||||
|
float fin = e.fin();
|
||||||
|
float ifin = e.fin(interp);
|
||||||
|
|
||||||
|
Draw.color(colorFrom, colorTo, ifin);
|
||||||
|
Lines.stroke(interp.apply(strokeFrom, strokeTo, fin));
|
||||||
|
|
||||||
|
float rad = interp.apply(sizeFrom, sizeTo, fin);
|
||||||
|
Lines.poly(e.x, e.y, sides <= 0 ? Lines.circleVertices(rad) : sides, rad, rotation + e.rotation);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -22,37 +22,12 @@ public class GameStats{
|
|||||||
/** Friendly buildings destroyed. */
|
/** Friendly buildings destroyed. */
|
||||||
public int buildingsDestroyed;
|
public int buildingsDestroyed;
|
||||||
|
|
||||||
//TODO fix
|
//unused
|
||||||
public RankResult calculateRank(Sector zone, boolean launched){
|
public RankResult calculateRank(Sector sector){
|
||||||
float score = 0;
|
float score = 0;
|
||||||
|
|
||||||
//TODO implement wave/attack mode based score
|
int rankIndex = Mathf.clamp((int)score, 0, Rank.all.length - 1);
|
||||||
/*
|
Rank rank = Rank.all[rankIndex];
|
||||||
if(launched && zone.getRules().attackMode){
|
|
||||||
score += 3f;
|
|
||||||
}else if(wavesLasted >= zone.conditionWave){
|
|
||||||
//each new launch period adds onto the rank 'points'
|
|
||||||
score += (float)((wavesLasted - zone.conditionWave) / zone.launchPeriod + 1) * 1.2f;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
//TODO implement
|
|
||||||
int capacity = 3000;//zone.loadout.findCore().itemCapacity;
|
|
||||||
|
|
||||||
//weigh used fractions
|
|
||||||
float frac = 0f;
|
|
||||||
Seq<Item> obtainable = zone.save == null ? new Seq<>() : zone.info.resources.select(i -> i instanceof Item).as();
|
|
||||||
for(Item item : obtainable){
|
|
||||||
frac += Mathf.clamp((float)itemsDelivered.get(item, 0) / capacity) / (float)obtainable.size;
|
|
||||||
}
|
|
||||||
|
|
||||||
score += frac * 1.6f;
|
|
||||||
|
|
||||||
if(!launched){
|
|
||||||
score *= 0.5f;
|
|
||||||
}
|
|
||||||
|
|
||||||
int rankIndex = Mathf.clamp((int)(score), 0, Rank.values().length - 1);
|
|
||||||
Rank rank = Rank.values()[rankIndex];
|
|
||||||
String sign = Math.abs((rankIndex + 0.5f) - score) < 0.2f || rank.name().contains("S") ? "" : (rankIndex + 0.5f) < score ? "-" : "+";
|
String sign = Math.abs((rankIndex + 0.5f) - score) < 0.2f || rank.name().contains("S") ? "" : (rankIndex + 0.5f) < score ? "-" : "+";
|
||||||
|
|
||||||
return new RankResult(rank, sign);
|
return new RankResult(rank, sign);
|
||||||
@@ -70,6 +45,8 @@ public class GameStats{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public enum Rank{
|
public enum Rank{
|
||||||
F, D, C, B, A, S, SS
|
F, D, C, B, A, S, SS;
|
||||||
|
|
||||||
|
public static final Rank[] all = values();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ import mindustry.world.blocks.power.*;
|
|||||||
import mindustry.world.blocks.production.*;
|
import mindustry.world.blocks.production.*;
|
||||||
import mindustry.world.blocks.sandbox.*;
|
import mindustry.world.blocks.sandbox.*;
|
||||||
import mindustry.world.blocks.storage.*;
|
import mindustry.world.blocks.storage.*;
|
||||||
|
import mindustry.world.meta.*;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.util.zip.*;
|
import java.util.zip.*;
|
||||||
@@ -280,7 +281,7 @@ public class Schematics implements Loadable{
|
|||||||
/** Creates an array of build requests from a schematic's data, centered on the provided x+y coordinates. */
|
/** Creates an array of build requests from a schematic's data, centered on the provided x+y coordinates. */
|
||||||
public Seq<BuildPlan> toRequests(Schematic schem, int x, int y){
|
public Seq<BuildPlan> toRequests(Schematic schem, int x, int y){
|
||||||
return schem.tiles.map(t -> new BuildPlan(t.x + x - schem.width/2, t.y + y - schem.height/2, t.rotation, t.block, t.config).original(t.x, t.y, schem.width, schem.height))
|
return schem.tiles.map(t -> new BuildPlan(t.x + x - schem.width/2, t.y + y - schem.height/2, t.rotation, t.block, t.config).original(t.x, t.y, schem.width, schem.height))
|
||||||
.removeAll(s -> !s.block.isVisible() || !s.block.unlockedNow());
|
.removeAll(s -> (!s.block.isVisible() && !(s.block instanceof CoreBlock)) || !s.block.unlockedNow());
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @return all the valid loadouts for a specific core type. */
|
/** @return all the valid loadouts for a specific core type. */
|
||||||
@@ -295,9 +296,11 @@ public class Schematics implements Loadable{
|
|||||||
/** Checks a schematic for deployment validity and adds it to the cache. */
|
/** Checks a schematic for deployment validity and adds it to the cache. */
|
||||||
private void checkLoadout(Schematic s, boolean validate){
|
private void checkLoadout(Schematic s, boolean validate){
|
||||||
Stile core = s.tiles.find(t -> t.block instanceof CoreBlock);
|
Stile core = s.tiles.find(t -> t.block instanceof CoreBlock);
|
||||||
|
int cores = s.tiles.count(t -> t.block instanceof CoreBlock);
|
||||||
|
|
||||||
//make sure a core exists, and that the schematic is small enough.
|
//make sure a core exists, and that the schematic is small enough.
|
||||||
if(core == null || (validate && (s.width > core.block.size + maxLoadoutSchematicPad *2 || s.height > core.block.size + maxLoadoutSchematicPad *2))) return;
|
if(core == null || (validate && (s.width > core.block.size + maxLoadoutSchematicPad *2 || s.height > core.block.size + maxLoadoutSchematicPad *2
|
||||||
|
|| s.tiles.contains(t -> t.block.buildVisibility == BuildVisibility.sandboxOnly || !t.block.unlocked()) || cores > 1))) return;
|
||||||
|
|
||||||
//place in the cache
|
//place in the cache
|
||||||
loadouts.get((CoreBlock)core.block, Seq::new).add(s);
|
loadouts.get((CoreBlock)core.block, Seq::new).add(s);
|
||||||
@@ -380,7 +383,7 @@ public class Schematics implements Loadable{
|
|||||||
Building tile = world.build(cx, cy);
|
Building tile = world.build(cx, cy);
|
||||||
|
|
||||||
if(tile != null && !counted.contains(tile.pos()) && !(tile.block instanceof ConstructBlock)
|
if(tile != null && !counted.contains(tile.pos()) && !(tile.block instanceof ConstructBlock)
|
||||||
&& (tile.block.isVisible() || (tile.block instanceof CoreBlock))){
|
&& (tile.block.isVisible() || tile.block instanceof CoreBlock)){
|
||||||
Object config = tile.config();
|
Object config = tile.config();
|
||||||
|
|
||||||
tiles.add(new Stile(tile.block, tile.tileX() + offsetX, tile.tileY() + offsetY, config, (byte)tile.rotation));
|
tiles.add(new Stile(tile.block, tile.tileX() + offsetX, tile.tileY() + offsetY, config, (byte)tile.rotation));
|
||||||
@@ -415,13 +418,27 @@ public class Schematics implements Loadable{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void placeLoadout(Schematic schem, int x, int y, Team team, Block resource){
|
public static void placeLoadout(Schematic schem, int x, int y, Team team, Block resource){
|
||||||
|
placeLoadout(schem, x, y, team, resource, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void placeLoadout(Schematic schem, int x, int y, Team team, Block resource, boolean check){
|
||||||
Stile coreTile = schem.tiles.find(s -> s.block instanceof CoreBlock);
|
Stile coreTile = schem.tiles.find(s -> s.block instanceof CoreBlock);
|
||||||
|
Seq<Tile> seq = new Seq<>();
|
||||||
if(coreTile == null) throw new IllegalArgumentException("Loadout schematic has no core tile!");
|
if(coreTile == null) throw new IllegalArgumentException("Loadout schematic has no core tile!");
|
||||||
int ox = x - coreTile.x, oy = y - coreTile.y;
|
int ox = x - coreTile.x, oy = y - coreTile.y;
|
||||||
schem.tiles.each(st -> {
|
schem.tiles.each(st -> {
|
||||||
Tile tile = world.tile(st.x + ox, st.y + oy);
|
Tile tile = world.tile(st.x + ox, st.y + oy);
|
||||||
if(tile == null) return;
|
if(tile == null) return;
|
||||||
|
|
||||||
|
//check for blocks that are in the way.
|
||||||
|
if(check && !(st.block instanceof CoreBlock)){
|
||||||
|
seq.clear();
|
||||||
|
tile.getLinkedTilesAs(st.block, seq);
|
||||||
|
if(seq.contains(t -> !t.block().alwaysReplace)){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
tile.setBlock(st.block, team, st.rotation);
|
tile.setBlock(st.block, team, st.rotation);
|
||||||
|
|
||||||
Object config = st.config;
|
Object config = st.config;
|
||||||
|
|||||||
@@ -45,6 +45,8 @@ public class SectorInfo{
|
|||||||
public boolean attack = false;
|
public boolean attack = false;
|
||||||
/** Wave # from state */
|
/** Wave # from state */
|
||||||
public int wave = 1, winWave = -1;
|
public int wave = 1, winWave = -1;
|
||||||
|
/** Waves this sector can survive if under attack. Based on wave in info. <0 means uncalculated. */
|
||||||
|
public int wavesSurvived = -1;
|
||||||
/** Time between waves. */
|
/** Time between waves. */
|
||||||
public float waveSpacing = 60 * 60 * 2;
|
public float waveSpacing = 60 * 60 * 2;
|
||||||
/** Damage dealt to sector. */
|
/** Damage dealt to sector. */
|
||||||
@@ -57,6 +59,8 @@ public class SectorInfo{
|
|||||||
public float secondsPassed;
|
public float secondsPassed;
|
||||||
/** Display name. */
|
/** Display name. */
|
||||||
public @Nullable String name;
|
public @Nullable String name;
|
||||||
|
/** Version of generated waves. When it doesn't match, new waves are generated. */
|
||||||
|
public int waveVersion = -1;
|
||||||
|
|
||||||
/** Special variables for simulation. */
|
/** Special variables for simulation. */
|
||||||
public float sumHealth, sumRps, sumDps, waveHealthBase, waveHealthSlope, waveDpsBase, waveDpsSlope;
|
public float sumHealth, sumRps, sumDps, waveHealthBase, waveHealthSlope, waveDpsBase, waveDpsSlope;
|
||||||
@@ -118,12 +122,17 @@ public class SectorInfo{
|
|||||||
state.rules.winWave = winWave;
|
state.rules.winWave = winWave;
|
||||||
state.rules.attackMode = attack;
|
state.rules.attackMode = attack;
|
||||||
|
|
||||||
|
//assign new wave patterns when the version changes
|
||||||
|
if(waveVersion != Waves.waveVersion && state.rules.sector.preset == null){
|
||||||
|
state.rules.spawns = Waves.generate(state.rules.sector.baseCoverage);
|
||||||
|
}
|
||||||
|
|
||||||
CoreBuild entity = state.rules.defaultTeam.core();
|
CoreBuild entity = state.rules.defaultTeam.core();
|
||||||
if(entity != null){
|
if(entity != null){
|
||||||
entity.items.clear();
|
entity.items.clear();
|
||||||
entity.items.add(items);
|
entity.items.add(items);
|
||||||
//ensure capacity.
|
//ensure capacity.
|
||||||
entity.items.each((i, a) -> entity.items.set(i, Math.min(a, entity.storageCapacity)));
|
entity.items.each((i, a) -> entity.items.set(i, Mathf.clamp(a, 0, entity.storageCapacity)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -143,6 +152,7 @@ public class SectorInfo{
|
|||||||
spawnPosition = entity.pos();
|
spawnPosition = entity.pos();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
waveVersion = Waves.waveVersion;
|
||||||
waveSpacing = state.rules.waveSpacing;
|
waveSpacing = state.rules.waveSpacing;
|
||||||
wave = state.wave;
|
wave = state.wave;
|
||||||
winWave = state.rules.winWave;
|
winWave = state.rules.winWave;
|
||||||
@@ -200,8 +210,7 @@ public class SectorInfo{
|
|||||||
}
|
}
|
||||||
|
|
||||||
//get item delta
|
//get item delta
|
||||||
//TODO is preventing negative production a good idea?
|
int delta = coreItemCounts[item.id];
|
||||||
int delta = Math.max(ent == null ? 0 : coreItemCounts[item.id], 0);
|
|
||||||
|
|
||||||
//store means
|
//store means
|
||||||
stat.means.add(delta);
|
stat.means.add(delta);
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ import mindustry.content.*;
|
|||||||
import mindustry.entities.units.*;
|
import mindustry.entities.units.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
import mindustry.type.*;
|
import mindustry.type.*;
|
||||||
import mindustry.world.*;
|
|
||||||
import mindustry.world.blocks.payloads.*;
|
import mindustry.world.blocks.payloads.*;
|
||||||
import mindustry.world.blocks.storage.CoreBlock.*;
|
import mindustry.world.blocks.storage.CoreBlock.*;
|
||||||
|
|
||||||
@@ -27,8 +26,6 @@ public class Teams{
|
|||||||
public Seq<TeamData> active = new Seq<>();
|
public Seq<TeamData> active = new Seq<>();
|
||||||
/** Teams with block or unit presence. */
|
/** Teams with block or unit presence. */
|
||||||
public Seq<TeamData> present = new Seq<>(TeamData.class);
|
public Seq<TeamData> present = new Seq<>(TeamData.class);
|
||||||
/** Ores currently being mined. */
|
|
||||||
private IntMap<Unit> mined = new IntMap<>();
|
|
||||||
|
|
||||||
public Teams(){
|
public Teams(){
|
||||||
active.add(get(Team.crux));
|
active.add(get(Team.crux));
|
||||||
@@ -145,20 +142,7 @@ public class Teams{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @return whether this ore is taken. */
|
|
||||||
public boolean canMine(Unit unit, Tile tile){
|
|
||||||
if(tile == null) return false;
|
|
||||||
Unit u = mined.get(tile.pos());
|
|
||||||
return u == unit || u == null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void registerMined(Tile tile, Unit unit){
|
|
||||||
if(tile == null || unit == null) return;
|
|
||||||
mined.put(tile.pos(), unit);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void updateTeamStats(){
|
public void updateTeamStats(){
|
||||||
mined.clear();
|
|
||||||
present.clear();
|
present.clear();
|
||||||
|
|
||||||
for(Team team : Team.all){
|
for(Team team : Team.all){
|
||||||
@@ -277,6 +261,7 @@ public class Teams{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void updateCount(UnitType type, int amount){
|
public void updateCount(UnitType type, int amount){
|
||||||
|
if(type == null) return;
|
||||||
unitCount = Math.max(amount + unitCount, 0);
|
unitCount = Math.max(amount + unitCount, 0);
|
||||||
if(typeCounts == null || typeCounts.length <= type.id){
|
if(typeCounts == null || typeCounts.length <= type.id){
|
||||||
typeCounts = new int[Vars.content.units().size];
|
typeCounts = new int[Vars.content.units().size];
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ public class Universe{
|
|||||||
private int turn;
|
private int turn;
|
||||||
private float turnCounter;
|
private float turnCounter;
|
||||||
|
|
||||||
private Schematic lastLoadout;
|
private @Nullable Schematic lastLoadout;
|
||||||
private ItemSeq lastLaunchResources = new ItemSeq();
|
private ItemSeq lastLaunchResources = new ItemSeq();
|
||||||
|
|
||||||
public Universe(){
|
public Universe(){
|
||||||
@@ -84,7 +84,7 @@ public class Universe{
|
|||||||
if(state.hasSector()){
|
if(state.hasSector()){
|
||||||
//update sector light
|
//update sector light
|
||||||
float light = state.getSector().getLight();
|
float light = state.getSector().getLight();
|
||||||
float alpha = Mathf.clamp(Mathf.map(light, 0f, 0.8f, 0.1f, 1f));
|
float alpha = Mathf.clamp(Mathf.map(light, 0f, 0.8f, 0.2f, 1f));
|
||||||
|
|
||||||
//assign and map so darkness is not 100% dark
|
//assign and map so darkness is not 100% dark
|
||||||
state.rules.ambientLight.a = 1f - alpha;
|
state.rules.ambientLight.a = 1f - alpha;
|
||||||
@@ -92,6 +92,15 @@ public class Universe{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void clearLoadoutInfo(){
|
||||||
|
lastLoadout = null;
|
||||||
|
lastLaunchResources = new ItemSeq();
|
||||||
|
Core.settings.remove("launch-resources-seq");
|
||||||
|
Core.settings.remove("lastloadout-core-shard");
|
||||||
|
Core.settings.remove("lastloadout-core-nucleus");
|
||||||
|
Core.settings.remove("lastloadout-core-foundation");
|
||||||
|
}
|
||||||
|
|
||||||
public ItemSeq getLaunchResources(){
|
public ItemSeq getLaunchResources(){
|
||||||
lastLaunchResources = Core.settings.getJson("launch-resources-seq", ItemSeq.class, ItemSeq::new);
|
lastLaunchResources = Core.settings.getJson("launch-resources-seq", ItemSeq.class, ItemSeq::new);
|
||||||
return lastLaunchResources;
|
return lastLaunchResources;
|
||||||
|
|||||||
@@ -9,7 +9,9 @@ import mindustry.type.*;
|
|||||||
|
|
||||||
import static mindustry.content.UnitTypes.*;
|
import static mindustry.content.UnitTypes.*;
|
||||||
|
|
||||||
public class DefaultWaves{
|
public class Waves{
|
||||||
|
public static final int waveVersion = 2;
|
||||||
|
|
||||||
private Seq<SpawnGroup> spawns;
|
private Seq<SpawnGroup> spawns;
|
||||||
|
|
||||||
public Seq<SpawnGroup> get(){
|
public Seq<SpawnGroup> get(){
|
||||||
@@ -262,7 +264,7 @@ public class DefaultWaves{
|
|||||||
{dagger, mace, fortress, scepter, reign},
|
{dagger, mace, fortress, scepter, reign},
|
||||||
{nova, pulsar, quasar, vela, corvus},
|
{nova, pulsar, quasar, vela, corvus},
|
||||||
{crawler, atrax, spiroct, arkyid, toxopid},
|
{crawler, atrax, spiroct, arkyid, toxopid},
|
||||||
{flare, horizon, rand.chance(0.2) && difficulty > 0.5 ? poly : zenith, rand.chance(0.5) ? quad : antumbra, rand.chance(0.1) ? quad : eclipse}
|
{flare, horizon, zenith, rand.chance(0.5) ? quad : antumbra, rand.chance(0.1) ? quad : eclipse}
|
||||||
};
|
};
|
||||||
|
|
||||||
//required progression:
|
//required progression:
|
||||||
@@ -337,11 +339,13 @@ public class DefaultWaves{
|
|||||||
step += (int)(rand.random(15, 30) * Mathf.lerp(1f, 0.5f, difficulty));
|
step += (int)(rand.random(15, 30) * Mathf.lerp(1f, 0.5f, difficulty));
|
||||||
}
|
}
|
||||||
|
|
||||||
int bossWave = (int)(rand.random(30, 60) * Mathf.lerp(1f, 0.7f, difficulty));
|
int bossWave = (int)(rand.random(50, 70) * Mathf.lerp(1f, 0.6f, difficulty));
|
||||||
int bossSpacing = (int)(rand.random(25, 40) * Mathf.lerp(1f, 0.6f, difficulty));
|
int bossSpacing = (int)(rand.random(25, 40) * Mathf.lerp(1f, 0.6f, difficulty));
|
||||||
|
|
||||||
|
int bossTier = difficulty < 0.5 ? 3 : 4;
|
||||||
|
|
||||||
//main boss progression
|
//main boss progression
|
||||||
out.add(new SpawnGroup(Structs.random(species)[4]){{
|
out.add(new SpawnGroup(Structs.random(species)[bossTier]){{
|
||||||
unitAmount = 1;
|
unitAmount = 1;
|
||||||
begin = bossWave;
|
begin = bossWave;
|
||||||
spacing = bossSpacing;
|
spacing = bossSpacing;
|
||||||
@@ -353,7 +357,7 @@ public class DefaultWaves{
|
|||||||
}});
|
}});
|
||||||
|
|
||||||
//alt boss progression
|
//alt boss progression
|
||||||
out.add(new SpawnGroup(Structs.random(species)[4]){{
|
out.add(new SpawnGroup(Structs.random(species)[bossTier]){{
|
||||||
unitAmount = 1;
|
unitAmount = 1;
|
||||||
begin = bossWave + rand.random(3, 5) * bossSpacing;
|
begin = bossWave + rand.random(3, 5) * bossSpacing;
|
||||||
spacing = bossSpacing;
|
spacing = bossSpacing;
|
||||||
@@ -367,7 +371,7 @@ public class DefaultWaves{
|
|||||||
int finalBossStart = 120 + rand.random(30);
|
int finalBossStart = 120 + rand.random(30);
|
||||||
|
|
||||||
//final boss waves
|
//final boss waves
|
||||||
out.add(new SpawnGroup(Structs.random(species)[4]){{
|
out.add(new SpawnGroup(Structs.random(species)[bossTier]){{
|
||||||
unitAmount = 1;
|
unitAmount = 1;
|
||||||
begin = finalBossStart;
|
begin = finalBossStart;
|
||||||
spacing = bossSpacing/2;
|
spacing = bossSpacing/2;
|
||||||
@@ -379,7 +383,7 @@ public class DefaultWaves{
|
|||||||
}});
|
}});
|
||||||
|
|
||||||
//final boss waves (alt)
|
//final boss waves (alt)
|
||||||
out.add(new SpawnGroup(Structs.random(species)[4]){{
|
out.add(new SpawnGroup(Structs.random(species)[bossTier]){{
|
||||||
unitAmount = 1;
|
unitAmount = 1;
|
||||||
begin = finalBossStart + 15;
|
begin = finalBossStart + 15;
|
||||||
spacing = bossSpacing/2;
|
spacing = bossSpacing/2;
|
||||||
@@ -23,7 +23,7 @@ public class BlockRenderer implements Disposable{
|
|||||||
public static final int crackRegions = 8, maxCrackSize = 9;
|
public static final int crackRegions = 8, maxCrackSize = 9;
|
||||||
|
|
||||||
private static final int initialRequests = 32 * 32;
|
private static final int initialRequests = 32 * 32;
|
||||||
private static final int expandr = 9;
|
private static final int expandr = 10;
|
||||||
private static final Color shadowColor = new Color(0, 0, 0, 0.71f);
|
private static final Color shadowColor = new Color(0, 0, 0, 0.71f);
|
||||||
|
|
||||||
public final FloorRenderer floor = new FloorRenderer();
|
public final FloorRenderer floor = new FloorRenderer();
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ public enum CacheLayer{
|
|||||||
endShader(Shaders.slag);
|
endShader(Shaders.slag);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
space{
|
space(2){
|
||||||
@Override
|
@Override
|
||||||
public void begin(){
|
public void begin(){
|
||||||
beginShader();
|
beginShader();
|
||||||
@@ -70,7 +70,7 @@ public enum CacheLayer{
|
|||||||
public final int capacity;
|
public final int capacity;
|
||||||
|
|
||||||
CacheLayer(){
|
CacheLayer(){
|
||||||
this(2);
|
this(3);
|
||||||
}
|
}
|
||||||
|
|
||||||
CacheLayer(int capacity){
|
CacheLayer(int capacity){
|
||||||
|
|||||||
@@ -136,16 +136,24 @@ public class Drawf{
|
|||||||
Draw.reset();
|
Draw.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void square(float x, float y, float radius, Color color){
|
public static void square(float x, float y, float radius, float rotation, Color color){
|
||||||
Lines.stroke(3f, Pal.gray);
|
Lines.stroke(3f, Pal.gray);
|
||||||
Lines.square(x, y, radius + 1f, 45);
|
Lines.square(x, y, radius + 1f, rotation);
|
||||||
Lines.stroke(1f, color);
|
Lines.stroke(1f, color);
|
||||||
Lines.square(x, y, radius + 1f, 45);
|
Lines.square(x, y, radius + 1f, rotation);
|
||||||
Draw.reset();
|
Draw.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void square(float x, float y, float radius, float rotation){
|
||||||
|
square(x, y, radius, rotation, Pal.accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void square(float x, float y, float radius, Color color){
|
||||||
|
square(x, y, radius, 45, color);
|
||||||
|
}
|
||||||
|
|
||||||
public static void square(float x, float y, float radius){
|
public static void square(float x, float y, float radius){
|
||||||
square(x, y, radius, Pal.accent);
|
square(x, y, radius, 45);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void arrow(float x, float y, float x2, float y2, float length, float radius){
|
public static void arrow(float x, float y, float x2, float y2, float length, float radius){
|
||||||
|
|||||||
@@ -244,7 +244,7 @@ public class MenuRenderer implements Disposable{
|
|||||||
float size = Math.max(icon.width, icon.height) * Draw.scl * 1.6f;
|
float size = Math.max(icon.width, icon.height) * Draw.scl * 1.6f;
|
||||||
|
|
||||||
flyers((x, y) -> {
|
flyers((x, y) -> {
|
||||||
Draw.rect(flyerType.region, x - 12f, y - 13f, flyerRot - 90);
|
Draw.rect(icon, x - 12f, y - 13f, flyerRot - 90);
|
||||||
});
|
});
|
||||||
|
|
||||||
flyers((x, y) -> {
|
flyers((x, y) -> {
|
||||||
@@ -264,7 +264,7 @@ public class MenuRenderer implements Disposable{
|
|||||||
(engineSize + Mathf.absin(Time.time(), 2f, engineSize / 4f)) / 2f);
|
(engineSize + Mathf.absin(Time.time(), 2f, engineSize / 4f)) / 2f);
|
||||||
Draw.color();
|
Draw.color();
|
||||||
|
|
||||||
Draw.rect(flyerType.region, x, y, flyerRot - 90);
|
Draw.rect(icon, x, y, flyerRot - 90);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ public class OverlayRenderer{
|
|||||||
|
|
||||||
public void drawTop(){
|
public void drawTop(){
|
||||||
|
|
||||||
if(!player.dead()){
|
if(!player.dead() && ui.hudfrag.shown){
|
||||||
if(Core.settings.getBool("playerindicators")){
|
if(Core.settings.getBool("playerindicators")){
|
||||||
for(Player player : Groups.player){
|
for(Player player : Groups.player){
|
||||||
if(Vars.player != player && Vars.player.team() == player.team()){
|
if(Vars.player != player && Vars.player.team() == player.team()){
|
||||||
@@ -154,7 +154,7 @@ public class OverlayRenderer{
|
|||||||
|
|
||||||
input.drawOverSelect();
|
input.drawOverSelect();
|
||||||
|
|
||||||
if(ui.hudfrag.blockfrag.hover() instanceof Unit unit && unit.controller() instanceof LogicAI ai && ai.controller instanceof Building build){
|
if(ui.hudfrag.blockfrag.hover() instanceof Unit unit && unit.controller() instanceof LogicAI ai && ai.controller instanceof Building build && build.isValid()){
|
||||||
Drawf.square(build.x, build.y, build.block.size * tilesize/2f + 2f);
|
Drawf.square(build.x, build.y, build.block.size * tilesize/2f + 2f);
|
||||||
if(!unit.within(build, unit.hitSize * 2f)){
|
if(!unit.within(build, unit.hitSize * 2f)){
|
||||||
Drawf.arrow(unit.x, unit.y, build.x, build.y, unit.hitSize *2f, 4f);
|
Drawf.arrow(unit.x, unit.y, build.x, build.y, unit.hitSize *2f, 4f);
|
||||||
|
|||||||
@@ -345,6 +345,10 @@ public class DesktopInput extends InputHandler{
|
|||||||
ui.schematics.show();
|
ui.schematics.show();
|
||||||
}).tooltip("@schematics");
|
}).tooltip("@schematics");
|
||||||
|
|
||||||
|
table.button(Icon.book, Styles.clearPartiali, () -> {
|
||||||
|
ui.database.show();
|
||||||
|
}).tooltip("@database");
|
||||||
|
|
||||||
table.button(Icon.tree, Styles.clearPartiali, () -> {
|
table.button(Icon.tree, Styles.clearPartiali, () -> {
|
||||||
ui.research.show();
|
ui.research.show();
|
||||||
}).visible(() -> state.isCampaign()).tooltip("@research");
|
}).visible(() -> state.isCampaign()).tooltip("@research");
|
||||||
@@ -352,8 +356,6 @@ public class DesktopInput extends InputHandler{
|
|||||||
table.button(Icon.map, Styles.clearPartiali, () -> {
|
table.button(Icon.map, Styles.clearPartiali, () -> {
|
||||||
ui.planet.show();
|
ui.planet.show();
|
||||||
}).visible(() -> state.isCampaign()).tooltip("@planetmap");
|
}).visible(() -> state.isCampaign()).tooltip("@planetmap");
|
||||||
|
|
||||||
table.add();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void pollInput(){
|
void pollInput(){
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
|
|||||||
|
|
||||||
to.addItem(item, removed);
|
to.addItem(item, removed);
|
||||||
for(int j = 0; j < Mathf.clamp(removed / 3, 1, 8); j++){
|
for(int j = 0; j < Mathf.clamp(removed / 3, 1, 8); j++){
|
||||||
Time.run(j * 3f, () -> Call.transferItemEffect(item, build.x, build.y, to));
|
Time.run(j * 3f, () -> transferItemEffect(item, build.x, build.y, to));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -100,7 +100,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
|
|||||||
@Remote(called = Loc.server, unreliable = true)
|
@Remote(called = Loc.server, unreliable = true)
|
||||||
public static void transferItemTo(Item item, int amount, float x, float y, Building build){
|
public static void transferItemTo(Item item, int amount, float x, float y, Building build){
|
||||||
if(build == null || build.items == null) return;
|
if(build == null || build.items == null) return;
|
||||||
for(int i = 0; i < Mathf.clamp(amount / 3, 1, 8); i++){
|
for(int i = 0; i < Mathf.clamp(amount / 5, 1, 8); i++){
|
||||||
Time.run(i * 3, () -> createItemTransfer(item, amount, x, y, build, () -> {}));
|
Time.run(i * 3, () -> createItemTransfer(item, amount, x, y, build, () -> {}));
|
||||||
}
|
}
|
||||||
build.items.add(item, amount);
|
build.items.add(item, amount);
|
||||||
@@ -135,13 +135,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
|
|||||||
|
|
||||||
//remove item for every controlling unit
|
//remove item for every controlling unit
|
||||||
player.unit().eachGroup(unit -> {
|
player.unit().eachGroup(unit -> {
|
||||||
int removed = Math.min(unit.maxAccepted(item), tile.removeStack(item, amount));
|
Call.takeItems(tile, item, unit.maxAccepted(item), unit);
|
||||||
|
|
||||||
unit.addItem(item, removed);
|
|
||||||
|
|
||||||
for(int j = 0; j < Mathf.clamp(removed / 3, 1, 8); j++){
|
|
||||||
Time.run(j * 3f, () -> Call.transferItemEffect(item, tile.x, tile.y, unit));
|
|
||||||
}
|
|
||||||
|
|
||||||
if(unit == player.unit()){
|
if(unit == player.unit()){
|
||||||
Events.fire(new WithdrawEvent(tile, player, item, amount));
|
Events.fire(new WithdrawEvent(tile, player, item, amount));
|
||||||
@@ -165,18 +159,8 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
|
|||||||
player.unit().eachGroup(unit -> {
|
player.unit().eachGroup(unit -> {
|
||||||
Item item = unit.item();
|
Item item = unit.item();
|
||||||
int accepted = tile.acceptStack(item, unit.stack.amount, unit);
|
int accepted = tile.acceptStack(item, unit.stack.amount, unit);
|
||||||
unit.stack.amount -= accepted;
|
|
||||||
|
|
||||||
tile.getStackOffset(item, stackTrns);
|
Call.transferItemTo(unit, item, accepted, unit.x, unit.y, tile);
|
||||||
tile.handleStack(item, accepted, unit);
|
|
||||||
|
|
||||||
createItemTransfer(
|
|
||||||
item,
|
|
||||||
accepted,
|
|
||||||
unit.x + Angles.trnsx(unit.rotation + 180f, backTrns), unit.y + Angles.trnsy(unit.rotation + 180f, backTrns),
|
|
||||||
new Vec2(tile.x + stackTrns.x, tile.y + stackTrns.y),
|
|
||||||
() -> {}
|
|
||||||
);
|
|
||||||
|
|
||||||
if(unit == player.unit()){
|
if(unit == player.unit()){
|
||||||
Events.fire(new DepositEvent(tile, player, item, accepted));
|
Events.fire(new DepositEvent(tile, player, item, accepted));
|
||||||
|
|||||||
@@ -948,7 +948,9 @@ public class MobileInput extends InputHandler implements GestureListener{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unit.aim(Tmp.v1.trns(unit.rotation, 1000f).add(unit));
|
//when not shooting, aim at mouse cursor
|
||||||
|
//this may be a bad idea, aiming for a point far in front could work better, test it out
|
||||||
|
unit.aim(Core.input.mouseWorldX(), Core.input.mouseWorldY());
|
||||||
}else{
|
}else{
|
||||||
Vec2 intercept = Predict.intercept(unit, target, bulletSpeed);
|
Vec2 intercept = Predict.intercept(unit, target, bulletSpeed);
|
||||||
|
|
||||||
|
|||||||
@@ -80,20 +80,13 @@ public class MapIO{
|
|||||||
@Override
|
@Override
|
||||||
public void setBlock(Block type){
|
public void setBlock(Block type){
|
||||||
super.setBlock(type);
|
super.setBlock(type);
|
||||||
|
|
||||||
int c = colorFor(block(), Blocks.air, Blocks.air, team());
|
int c = colorFor(block(), Blocks.air, Blocks.air, team());
|
||||||
if(c != black){
|
if(c != black){
|
||||||
walls.draw(x, floors.getHeight() - 1 - y, c);
|
walls.draw(x, floors.getHeight() - 1 - y, c);
|
||||||
floors.draw(x, floors.getHeight() - 1 - y + 1, shade);
|
floors.draw(x, floors.getHeight() - 1 - y + 1, shade);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setTeam(Team team){
|
|
||||||
super.setTeam(team);
|
|
||||||
if(block instanceof CoreBlock){
|
|
||||||
map.teams.add(team.id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
ver.region("content", stream, counter, ver::readContentHeader);
|
ver.region("content", stream, counter, ver::readContentHeader);
|
||||||
@@ -107,6 +100,27 @@ public class MapIO{
|
|||||||
world.setGenerating(false);
|
world.setGenerating(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onReadBuilding(){
|
||||||
|
//read team colors
|
||||||
|
if(tile.build != null){
|
||||||
|
int c = tile.build.team.color.rgba8888();
|
||||||
|
int size = tile.block().size;
|
||||||
|
int offsetx = -(size - 1) / 2;
|
||||||
|
int offsety = -(size - 1) / 2;
|
||||||
|
for(int dx = 0; dx < size; dx++){
|
||||||
|
for(int dy = 0; dy < size; dy++){
|
||||||
|
int drawx = tile.x + dx + offsetx, drawy = tile.y + dy + offsety;
|
||||||
|
walls.draw(drawx, floors.getHeight() - 1 - drawy, c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(tile.build.block instanceof CoreBlock){
|
||||||
|
map.teams.add(tile.build.team.id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Tile tile(int index){
|
public Tile tile(int index){
|
||||||
tile.x = (short)(index % map.width);
|
tile.x = (short)(index % map.width);
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package mindustry.io;
|
|||||||
|
|
||||||
import arc.struct.*;
|
import arc.struct.*;
|
||||||
import arc.struct.ObjectMap.*;
|
import arc.struct.ObjectMap.*;
|
||||||
|
import arc.util.*;
|
||||||
import arc.util.io.*;
|
import arc.util.io.*;
|
||||||
import mindustry.world.*;
|
import mindustry.world.*;
|
||||||
|
|
||||||
@@ -23,12 +24,12 @@ public abstract class SaveFileReader{
|
|||||||
"spirit-factory", "legacy-unit-factory",
|
"spirit-factory", "legacy-unit-factory",
|
||||||
"phantom-factory", "legacy-unit-factory",
|
"phantom-factory", "legacy-unit-factory",
|
||||||
"wraith-factory", "legacy-unit-factory",
|
"wraith-factory", "legacy-unit-factory",
|
||||||
"ghoul-factory", "legacy-unit-factory",
|
"ghoul-factory", "legacy-unit-factory-air",
|
||||||
"revenant-factory", "legacy-unit-factory",
|
"revenant-factory", "legacy-unit-factory-air",
|
||||||
"dagger-factory", "legacy-unit-factory",
|
"dagger-factory", "legacy-unit-factory",
|
||||||
"crawler-factory", "legacy-unit-factory",
|
"crawler-factory", "legacy-unit-factory",
|
||||||
"titan-factory", "legacy-unit-factory",
|
"titan-factory", "legacy-unit-factory-ground",
|
||||||
"fortress-factory", "legacy-unit-factory",
|
"fortress-factory", "legacy-unit-factory-ground",
|
||||||
|
|
||||||
"mass-conveyor", "payload-conveyor",
|
"mass-conveyor", "payload-conveyor",
|
||||||
"vestige", "scepter",
|
"vestige", "scepter",
|
||||||
@@ -60,9 +61,11 @@ public abstract class SaveFileReader{
|
|||||||
protected final DataOutputStream dataBytesSmall = new DataOutputStream(byteOutputSmall);
|
protected final DataOutputStream dataBytesSmall = new DataOutputStream(byteOutputSmall);
|
||||||
|
|
||||||
protected int lastRegionLength;
|
protected int lastRegionLength;
|
||||||
|
protected @Nullable CounterInputStream currCounter;
|
||||||
|
|
||||||
protected void region(String name, DataInput stream, CounterInputStream counter, IORunner<DataInput> cons) throws IOException{
|
protected void region(String name, DataInput stream, CounterInputStream counter, IORunner<DataInput> cons) throws IOException{
|
||||||
counter.resetCount();
|
counter.resetCount();
|
||||||
|
this.currCounter = counter;
|
||||||
int length;
|
int length;
|
||||||
try{
|
try{
|
||||||
length = readChunk(stream, cons);
|
length = readChunk(stream, cons);
|
||||||
@@ -70,8 +73,8 @@ public abstract class SaveFileReader{
|
|||||||
throw new IOException("Error reading region \"" + name + "\".", e);
|
throw new IOException("Error reading region \"" + name + "\".", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(length != counter.count() - 4){
|
if(length != counter.count - 4){
|
||||||
throw new IOException("Error reading region \"" + name + "\": read length mismatch. Expected: " + length + "; Actual: " + (counter.count() - 4));
|
throw new IOException("Error reading region \"" + name + "\": read length mismatch. Expected: " + length + "; Actual: " + (counter.count - 4));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ public abstract class SaveVersion extends SaveFileReader{
|
|||||||
state.wavetime = map.getFloat("wavetime", state.rules.waveSpacing);
|
state.wavetime = map.getFloat("wavetime", state.rules.waveSpacing);
|
||||||
state.stats = JsonIO.read(GameStats.class, map.get("stats", "{}"));
|
state.stats = JsonIO.read(GameStats.class, map.get("stats", "{}"));
|
||||||
state.rules = JsonIO.read(Rules.class, map.get("rules", "{}"));
|
state.rules = JsonIO.read(Rules.class, map.get("rules", "{}"));
|
||||||
if(state.rules.spawns.isEmpty()) state.rules.spawns = defaultWaves.get();
|
if(state.rules.spawns.isEmpty()) state.rules.spawns = waves.get();
|
||||||
lastReadBuild = map.getInt("build", -1);
|
lastReadBuild = map.getInt("build", -1);
|
||||||
|
|
||||||
if(!headless){
|
if(!headless){
|
||||||
@@ -263,6 +263,8 @@ public abstract class SaveVersion extends SaveFileReader{
|
|||||||
//skip the entity region, as the entity and its IO code are now gone
|
//skip the entity region, as the entity and its IO code are now gone
|
||||||
skipChunk(stream, true);
|
skipChunk(stream, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
context.onReadBuilding();
|
||||||
}
|
}
|
||||||
}else if(hadData){
|
}else if(hadData){
|
||||||
tile.setBlock(block);
|
tile.setBlock(block);
|
||||||
|
|||||||
@@ -333,7 +333,7 @@ public class TypeIO{
|
|||||||
//1: prev controller was not a player, carry on
|
//1: prev controller was not a player, carry on
|
||||||
//2: prev controller was a player, so replace this controller with *anything else*
|
//2: prev controller was a player, so replace this controller with *anything else*
|
||||||
//...since AI doesn't update clientside it doesn't matter
|
//...since AI doesn't update clientside it doesn't matter
|
||||||
return (!(prev instanceof AIController) || (prev instanceof FormationAI)) ? new GroundAI() : prev;
|
return (!(prev instanceof AIController) || (prev instanceof FormationAI) || (prev instanceof LogicAI)) ? new GroundAI() : prev;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -85,6 +85,8 @@ public abstract class LegacySaveVersion extends SaveVersion{
|
|||||||
}catch(Throwable e){
|
}catch(Throwable e){
|
||||||
throw new IOException("Failed to read tile entity of block: " + block, e);
|
throw new IOException("Failed to read tile entity of block: " + block, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
context.onReadBuilding();
|
||||||
}else{
|
}else{
|
||||||
int consecutives = stream.readUnsignedByte();
|
int consecutives = stream.readUnsignedByte();
|
||||||
|
|
||||||
|
|||||||