Compare commits
53 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
454267455b | ||
|
|
8e9adeb4b4 | ||
|
|
1f18e7beed | ||
|
|
b5e8e54107 | ||
|
|
f41e426b69 | ||
|
|
6375862a71 | ||
|
|
be2a745d78 | ||
|
|
d89feb2c75 | ||
|
|
b4a20c8fcb | ||
|
|
73087a92f4 | ||
|
|
2b58bd5bd8 | ||
|
|
bce0101278 | ||
|
|
bba418c79d | ||
|
|
cb58eb82fc | ||
|
|
3aafffabc1 | ||
|
|
66b9cdf64c | ||
|
|
d31fbf3b6f | ||
|
|
dbee30a412 | ||
|
|
f3cc881930 | ||
|
|
3d9c9e639d | ||
|
|
d6969d2c74 | ||
|
|
b7e28a73ba | ||
|
|
1e8206757d | ||
|
|
a0e94577fc | ||
|
|
a2a0c2f791 | ||
|
|
63a0fde121 | ||
|
|
c06152de07 | ||
|
|
97b7eb0768 | ||
|
|
d988bb1821 | ||
|
|
64f1fbe400 | ||
|
|
c2c837329c | ||
|
|
b6531efe08 | ||
|
|
2c97a4aefe | ||
|
|
df13436688 | ||
|
|
fa0d89b6df | ||
|
|
6b3329845b | ||
|
|
fc07c5efa6 | ||
|
|
23188df276 | ||
|
|
5e66dfcc36 | ||
|
|
bc36c57f9f | ||
|
|
5efa7d551e | ||
|
|
8c6cda0d97 | ||
|
|
4fa165bc6a | ||
|
|
da6695ceee | ||
|
|
1043a5bb0d | ||
|
|
c7625278b5 | ||
|
|
b9ef88951e | ||
|
|
14fe35bba0 | ||
|
|
4a32706c5a | ||
|
|
cc92edfa58 | ||
|
|
071d0fbbf7 | ||
|
|
6ff44fddd0 | ||
|
|
8760e99c43 |
1
.gitignore
vendored
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
/core/assets/mindustry-saves/
|
/core/assets/mindustry-saves/
|
||||||
/core/assets/mindustry-maps/
|
/core/assets/mindustry-maps/
|
||||||
|
/core/assets/bundles/output/
|
||||||
/deploy/
|
/deploy/
|
||||||
/desktop/packr-out/
|
/desktop/packr-out/
|
||||||
/desktop/packr-export/
|
/desktop/packr-export/
|
||||||
|
|||||||
@@ -5,13 +5,14 @@ jdk:
|
|||||||
|
|
||||||
android:
|
android:
|
||||||
components:
|
components:
|
||||||
- android-26
|
- android-27
|
||||||
|
|
||||||
# Additional components
|
# Additional components
|
||||||
- extra-google-google_play_services
|
- extra-google-google_play_services
|
||||||
- extra-google-m2repository
|
- extra-google-m2repository
|
||||||
- extra-android-m2repository
|
- extra-android-m2repository
|
||||||
- addon-google_apis-google-26
|
- addon-google_apis-google-27
|
||||||
|
- build-tools-27.0.3
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- ./gradlew desktop:dist
|
- ./gradlew desktop:dist
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
<activity
|
<activity
|
||||||
android:name="io.anuke.mindustry.AndroidLauncher"
|
android:name="io.anuke.mindustry.AndroidLauncher"
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:screenOrientation="sensor"
|
android:screenOrientation="user"
|
||||||
android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
|
android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
|
||||||
|
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ public class Annotations {
|
|||||||
Variant variants() default Variant.all;
|
Variant variants() default Variant.all;
|
||||||
/**The local locations where this method is called locally, when invoked.*/
|
/**The local locations where this method is called locally, when invoked.*/
|
||||||
Loc called() default Loc.none;
|
Loc called() default Loc.none;
|
||||||
/**Whether to forward this packet to all other clients upon recieval. Server only.*/
|
/**Whether to forward this packet to all other clients upon recieval. Client only.*/
|
||||||
boolean forward() default false;
|
boolean forward() default false;
|
||||||
/**Whether the packet for this method is sent with UDP instead of TCP.
|
/**Whether the packet for this method is sent with UDP instead of TCP.
|
||||||
* UDP is faster, but is prone to packet loss and duplication.*/
|
* UDP is faster, but is prone to packet loss and duplication.*/
|
||||||
@@ -67,7 +67,7 @@ public class Annotations {
|
|||||||
client(false, true),
|
client(false, true),
|
||||||
/**Method can be invoked from anywhere*/
|
/**Method can be invoked from anywhere*/
|
||||||
both(true, true),
|
both(true, true),
|
||||||
/**Neither server no client.*/
|
/**Neither server nor client.*/
|
||||||
none(false, false);
|
none(false, false);
|
||||||
|
|
||||||
/**If true, this method can be invoked ON clients FROM servers.*/
|
/**If true, this method can be invoked ON clients FROM servers.*/
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ public class RemoteWriteGenerator {
|
|||||||
method.beginControlFlow("if("+getCheckString(methodEntry.where)+")");
|
method.beginControlFlow("if("+getCheckString(methodEntry.where)+")");
|
||||||
|
|
||||||
//add statement to create packet from pool
|
//add statement to create packet from pool
|
||||||
method.addStatement("$1N packet = $2N.obtain($1N.class)", "io.anuke.mindustry.net.Packets.InvokePacket", "com.badlogic.gdx.utils.Pools");
|
method.addStatement("$1N packet = $2N.obtain($1N.class)", "io.anuke.mindustry.net.Packets.InvokePacket", "io.anuke.ucore.util.Pooling");
|
||||||
//assign buffer
|
//assign buffer
|
||||||
method.addStatement("packet.writeBuffer = TEMP_BUFFER");
|
method.addStatement("packet.writeBuffer = TEMP_BUFFER");
|
||||||
//assign priority
|
//assign priority
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ buildscript {
|
|||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.3.0'
|
classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.3.0'
|
||||||
classpath 'de.richsource.gradle.plugins:gwt-gradle-plugin:0.6'
|
classpath 'de.richsource.gradle.plugins:gwt-gradle-plugin:0.6'
|
||||||
classpath 'com.android.tools.build:gradle:3.1.0'
|
classpath 'com.android.tools.build:gradle:3.1.3'
|
||||||
classpath "com.badlogicgames.gdx:gdx-tools:1.9.8"
|
classpath "com.badlogicgames.gdx:gdx-tools:1.9.8"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -27,7 +27,7 @@ allprojects {
|
|||||||
gdxVersion = '1.9.8'
|
gdxVersion = '1.9.8'
|
||||||
roboVMVersion = '2.3.0'
|
roboVMVersion = '2.3.0'
|
||||||
aiVersion = '1.8.1'
|
aiVersion = '1.8.1'
|
||||||
uCoreVersion = 'e7a37cff68'
|
uCoreVersion = 'c502931313'
|
||||||
|
|
||||||
getVersionString = {
|
getVersionString = {
|
||||||
String buildVersion = getBuildVersion()
|
String buildVersion = getBuildVersion()
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 296 B After Width: | Height: | Size: 296 B |
BIN
core/assets-raw/sprites/blocks/liquid/conduit-bottom-0.png
Normal file
|
After Width: | Height: | Size: 213 B |
BIN
core/assets-raw/sprites/blocks/liquid/conduit-bottom-1.png
Normal file
|
After Width: | Height: | Size: 225 B |
BIN
core/assets-raw/sprites/blocks/liquid/conduit-bottom-2.png
Normal file
|
After Width: | Height: | Size: 216 B |
BIN
core/assets-raw/sprites/blocks/liquid/conduit-bottom-3.png
Normal file
|
After Width: | Height: | Size: 224 B |
BIN
core/assets-raw/sprites/blocks/liquid/conduit-bottom-4.png
Normal file
|
After Width: | Height: | Size: 224 B |
BIN
core/assets-raw/sprites/blocks/liquid/conduit-bottom-5.png
Normal file
|
After Width: | Height: | Size: 225 B |
BIN
core/assets-raw/sprites/blocks/liquid/conduit-bottom-6.png
Normal file
|
After Width: | Height: | Size: 199 B |
|
Before Width: | Height: | Size: 199 B After Width: | Height: | Size: 217 B |
BIN
core/assets-raw/sprites/blocks/liquid/conduit-top-0.png
Normal file
|
After Width: | Height: | Size: 209 B |
BIN
core/assets-raw/sprites/blocks/liquid/conduit-top-1.png
Normal file
|
After Width: | Height: | Size: 243 B |
BIN
core/assets-raw/sprites/blocks/liquid/conduit-top-2.png
Normal file
|
After Width: | Height: | Size: 252 B |
BIN
core/assets-raw/sprites/blocks/liquid/conduit-top-3.png
Normal file
|
After Width: | Height: | Size: 262 B |
BIN
core/assets-raw/sprites/blocks/liquid/conduit-top-4.png
Normal file
|
After Width: | Height: | Size: 251 B |
BIN
core/assets-raw/sprites/blocks/liquid/conduit-top-5.png
Normal file
|
After Width: | Height: | Size: 242 B |
BIN
core/assets-raw/sprites/blocks/liquid/conduit-top-6.png
Normal file
|
After Width: | Height: | Size: 239 B |
|
Before Width: | Height: | Size: 191 B |
|
Before Width: | Height: | Size: 219 B |
|
Before Width: | Height: | Size: 267 B After Width: | Height: | Size: 267 B |
BIN
core/assets-raw/sprites/blocks/liquid/pulse-conduit-top-1.png
Normal file
|
After Width: | Height: | Size: 287 B |
BIN
core/assets-raw/sprites/blocks/liquid/pulse-conduit-top-2.png
Normal file
|
After Width: | Height: | Size: 282 B |
BIN
core/assets-raw/sprites/blocks/liquid/pulse-conduit-top-3.png
Normal file
|
After Width: | Height: | Size: 289 B |
BIN
core/assets-raw/sprites/blocks/liquid/pulse-conduit-top-4.png
Normal file
|
After Width: | Height: | Size: 284 B |
BIN
core/assets-raw/sprites/blocks/liquid/pulse-conduit-top-5.png
Normal file
|
After Width: | Height: | Size: 289 B |
BIN
core/assets-raw/sprites/blocks/liquid/pulse-conduit-top-6.png
Normal file
|
After Width: | Height: | Size: 270 B |
BIN
core/assets-raw/sprites/blocks/power/turbine-generator-top.png
Normal file
|
After Width: | Height: | Size: 219 B |
BIN
core/assets-raw/sprites/ui/icons/icon-item.png
Normal file
|
After Width: | Height: | Size: 189 B |
BIN
core/assets-raw/sprites/ui/icons/icon-missing.png
Normal file
|
After Width: | Height: | Size: 191 B |
@@ -55,13 +55,7 @@ text.about.button=About
|
|||||||
text.name=Name:
|
text.name=Name:
|
||||||
text.unlocked=New Block Unlocked!
|
text.unlocked=New Block Unlocked!
|
||||||
text.unlocked.plural=New Blocks Unlocked!
|
text.unlocked.plural=New Blocks Unlocked!
|
||||||
text.server.rollback=Rollback
|
|
||||||
text.server.rollback.numberfield=Rollback Amount:
|
|
||||||
text.blocks.editlogs=Edit Logs
|
|
||||||
text.block.editlogsnotfound=[red]There are no edit logs for this location.
|
|
||||||
text.public=Public
|
|
||||||
text.players={0} players online
|
text.players={0} players online
|
||||||
text.server.player.host={0} (host)
|
|
||||||
text.players.single={0} player online
|
text.players.single={0} player online
|
||||||
text.server.mismatch=Packet error: possible client/server version mismatch.\nMake sure you and the host have the\nlatest version of Mindustry!
|
text.server.mismatch=Packet error: possible client/server version mismatch.\nMake sure you and the host have the\nlatest version of Mindustry!
|
||||||
text.server.closing=[accent]Closing server...
|
text.server.closing=[accent]Closing server...
|
||||||
@@ -118,7 +112,6 @@ text.confirmban=Are you sure you want to ban this player?
|
|||||||
text.confirmunban=Are you sure you want to unban this player?
|
text.confirmunban=Are you sure you want to unban this player?
|
||||||
text.confirmadmin=Are you sure you want to make this player an admin?
|
text.confirmadmin=Are you sure you want to make this player an admin?
|
||||||
text.confirmunadmin=Are you sure you want to remove admin status from this player?
|
text.confirmunadmin=Are you sure you want to remove admin status from this player?
|
||||||
text.joingame.byip=Join by IP...
|
|
||||||
text.joingame.title=Join Game
|
text.joingame.title=Join Game
|
||||||
text.joingame.ip=IP:
|
text.joingame.ip=IP:
|
||||||
text.disconnect=Disconnected.
|
text.disconnect=Disconnected.
|
||||||
@@ -130,8 +123,6 @@ text.server.port=Port:
|
|||||||
text.server.addressinuse=Address already in use!
|
text.server.addressinuse=Address already in use!
|
||||||
text.server.invalidport=Invalid port number!
|
text.server.invalidport=Invalid port number!
|
||||||
text.server.error=[crimson]Error hosting server: [orange]{0}
|
text.server.error=[crimson]Error hosting server: [orange]{0}
|
||||||
text.tutorial.back=< Prev
|
|
||||||
text.tutorial.next=Next >
|
|
||||||
text.save.new=New Save
|
text.save.new=New Save
|
||||||
text.save.overwrite=Are you sure you want to overwrite\nthis save slot?
|
text.save.overwrite=Are you sure you want to overwrite\nthis save slot?
|
||||||
text.overwrite=Overwrite
|
text.overwrite=Overwrite
|
||||||
@@ -141,7 +132,7 @@ text.savefail=Failed to save game!
|
|||||||
text.save.delete.confirm=Are you sure you want to delete this save?
|
text.save.delete.confirm=Are you sure you want to delete this save?
|
||||||
text.save.delete=Delete
|
text.save.delete=Delete
|
||||||
text.save.export=Export Save
|
text.save.export=Export Save
|
||||||
text.save.import.invalid=[orange]This save is invalid!\n\nNote that[scarlet]importing saves with custom maps[orange]\nfrom other devices does not work!
|
text.save.import.invalid=[orange]This save is invalid!
|
||||||
text.save.import.fail=[crimson]Failed to import save: [orange]{0}
|
text.save.import.fail=[crimson]Failed to import save: [orange]{0}
|
||||||
text.save.export.fail=[crimson]Failed to export save: [orange]{0}
|
text.save.export.fail=[crimson]Failed to export save: [orange]{0}
|
||||||
text.save.import=Import Save
|
text.save.import=Import Save
|
||||||
@@ -150,7 +141,7 @@ text.save.rename=Rename
|
|||||||
text.save.rename.text=New name:
|
text.save.rename.text=New name:
|
||||||
text.selectslot=Select a save.
|
text.selectslot=Select a save.
|
||||||
text.slot=[accent]Slot {0}
|
text.slot=[accent]Slot {0}
|
||||||
text.save.corrupted=[orange]Save file corrupted or invalid!
|
text.save.corrupted=[orange]Save file corrupted or invalid!\nIf you have just updated your game, this is probably a change in the save format and [scarlet]not[] a bug.
|
||||||
text.empty=<empty>
|
text.empty=<empty>
|
||||||
text.on=On
|
text.on=On
|
||||||
text.off=Off
|
text.off=Off
|
||||||
@@ -226,21 +217,13 @@ text.editor.exportimage.description=Export a map image file
|
|||||||
text.editor.loadimage=Import Terrain
|
text.editor.loadimage=Import Terrain
|
||||||
text.editor.saveimage=Export Terrain
|
text.editor.saveimage=Export Terrain
|
||||||
text.editor.unsaved=[scarlet]You have unsaved changes![]\nAre you sure you want to exit?
|
text.editor.unsaved=[scarlet]You have unsaved changes![]\nAre you sure you want to exit?
|
||||||
text.editor.brushsize=Brush size: {0}
|
|
||||||
text.editor.noplayerspawn=This map has no player spawnpoint!
|
|
||||||
text.editor.manyplayerspawns=Maps cannot have more than one\nplayer spawnpoint!
|
|
||||||
text.editor.manyenemyspawns=Cannot have more than\n{0} enemy spawnpoints!
|
|
||||||
text.editor.resizemap=Resize Map
|
text.editor.resizemap=Resize Map
|
||||||
text.editor.resizebig=[scarlet]Warning!\n[]Maps larger than 256 units may be laggy and unstable.
|
|
||||||
text.editor.mapname=Map Name:
|
text.editor.mapname=Map Name:
|
||||||
text.editor.overwrite=[accent]Warning!\nThis overwrites an existing map.
|
text.editor.overwrite=[accent]Warning!\nThis overwrites an existing map.
|
||||||
text.editor.overwrite.confirm=[scarlet]Warning![] A map with this name already exists. Are you sure you want to overwrite it?
|
text.editor.overwrite.confirm=[scarlet]Warning![] A map with this name already exists. Are you sure you want to overwrite it?
|
||||||
text.editor.selectmap=Select a map to load:
|
text.editor.selectmap=Select a map to load:
|
||||||
text.width=Width:
|
text.width=Width:
|
||||||
text.height=Height:
|
text.height=Height:
|
||||||
text.randomize=Randomize
|
|
||||||
text.apply=Apply
|
|
||||||
text.update=Update
|
|
||||||
text.menu=Menu
|
text.menu=Menu
|
||||||
text.play=Play
|
text.play=Play
|
||||||
text.load=Load
|
text.load=Load
|
||||||
@@ -265,14 +248,15 @@ text.upgrades=Upgrades
|
|||||||
text.purchased=[LIME]Created!
|
text.purchased=[LIME]Created!
|
||||||
text.weapons=Weapons
|
text.weapons=Weapons
|
||||||
text.paused=Paused
|
text.paused=Paused
|
||||||
text.respawn=Respawning in
|
text.yes=Yes
|
||||||
|
text.no=No
|
||||||
text.info.title=[accent]Info
|
text.info.title=[accent]Info
|
||||||
text.error.title=[crimson]An error has occured
|
text.error.title=[crimson]An error has occured
|
||||||
text.error.crashmessage=[SCARLET]An unexpected error has occured, which would have caused a crash.\n[]Please report the exact circumstances under which this error occured to the developer: \n[ORANGE]anukendev@gmail.com[]
|
|
||||||
text.error.crashtitle=An error has occured
|
text.error.crashtitle=An error has occured
|
||||||
text.blocks.blockinfo=Block Info
|
text.blocks.blockinfo=Block Info
|
||||||
text.blocks.powercapacity=Power Capacity
|
text.blocks.powercapacity=Power Capacity
|
||||||
text.blocks.powershot=Power/Shot
|
text.blocks.powershot=Power/Shot
|
||||||
|
text.blocks.targetsair=Targets Air
|
||||||
text.blocks.itemspeed=Units Moved
|
text.blocks.itemspeed=Units Moved
|
||||||
text.blocks.shootrange=Range
|
text.blocks.shootrange=Range
|
||||||
text.blocks.size=Size
|
text.blocks.size=Size
|
||||||
@@ -295,6 +279,10 @@ text.blocks.drilltier=Drillables
|
|||||||
text.blocks.drillspeed=Base Drill Speed
|
text.blocks.drillspeed=Base Drill Speed
|
||||||
text.blocks.liquidoutput=Liquid Output
|
text.blocks.liquidoutput=Liquid Output
|
||||||
text.blocks.liquiduse=Liquid Use
|
text.blocks.liquiduse=Liquid Use
|
||||||
|
text.blocks.coolant=Coolant
|
||||||
|
text.blocks.coolantuse=Coolant Use
|
||||||
|
text.blocks.inputliquidfuel=Fuel Liquid
|
||||||
|
text.blocks.liquidfueluse=Liquid Fuel Use
|
||||||
text.blocks.explosive=Highly explosive!
|
text.blocks.explosive=Highly explosive!
|
||||||
text.blocks.health=Health
|
text.blocks.health=Health
|
||||||
text.blocks.inaccuracy=Inaccuracy
|
text.blocks.inaccuracy=Inaccuracy
|
||||||
@@ -304,6 +292,7 @@ text.blocks.inputfuel=Fuel
|
|||||||
text.blocks.fuelburntime=Fuel Burn Time
|
text.blocks.fuelburntime=Fuel Burn Time
|
||||||
text.blocks.inputcapacity=Input capacity
|
text.blocks.inputcapacity=Input capacity
|
||||||
text.blocks.outputcapacity=Output capacity
|
text.blocks.outputcapacity=Output capacity
|
||||||
|
text.blocks.required=Required:
|
||||||
|
|
||||||
text.unit.blocks=blocks
|
text.unit.blocks=blocks
|
||||||
text.unit.powersecond=power units/second
|
text.unit.powersecond=power units/second
|
||||||
@@ -330,7 +319,6 @@ setting.difficulty.insane=insane
|
|||||||
setting.difficulty.purge=purge
|
setting.difficulty.purge=purge
|
||||||
setting.difficulty.name=Difficulty:
|
setting.difficulty.name=Difficulty:
|
||||||
setting.screenshake.name=Screen Shake
|
setting.screenshake.name=Screen Shake
|
||||||
setting.smoothcam.name=Smooth Camera
|
|
||||||
setting.indicators.name=Enemy Indicators
|
setting.indicators.name=Enemy Indicators
|
||||||
setting.effects.name=Display Effects
|
setting.effects.name=Display Effects
|
||||||
setting.sensitivity.name=Controller Sensitivity
|
setting.sensitivity.name=Controller Sensitivity
|
||||||
@@ -341,10 +329,8 @@ setting.multithread.name=Multithreading
|
|||||||
setting.fps.name=Show FPS
|
setting.fps.name=Show FPS
|
||||||
setting.vsync.name=VSync
|
setting.vsync.name=VSync
|
||||||
setting.lasers.name=Show Power Lasers
|
setting.lasers.name=Show Power Lasers
|
||||||
setting.previewopacity.name=Placing Preview Opacity
|
|
||||||
setting.healthbars.name=Show Entity Health bars
|
setting.healthbars.name=Show Entity Health bars
|
||||||
setting.minimap.name=Show Minimap
|
setting.minimap.name=Show Minimap
|
||||||
setting.pixelate.name=Pixelate Screen
|
|
||||||
setting.musicvol.name=Music Volume
|
setting.musicvol.name=Music Volume
|
||||||
setting.mutemusic.name=Mute Music
|
setting.mutemusic.name=Mute Music
|
||||||
setting.sfxvol.name=SFX Volume
|
setting.sfxvol.name=SFX Volume
|
||||||
@@ -455,12 +441,12 @@ block.splitter.name=Splitter
|
|||||||
block.splitter.description=Outputs items into two opposite directions immediately after they are recieved.
|
block.splitter.description=Outputs items into two opposite directions immediately after they are recieved.
|
||||||
block.router.name=Router
|
block.router.name=Router
|
||||||
block.router.description=Splits items into all 4 directions. Can store items as a buffer.
|
block.router.description=Splits items into all 4 directions. Can store items as a buffer.
|
||||||
block.multiplexer.name=Multiplexer
|
block.distributor.name=Distributor
|
||||||
block.multiplexer.description=A router that can split items into 8 directions.
|
block.distributor.description=A splitter that can split items into 8 directions.
|
||||||
block.sorter.name=Sorter
|
block.sorter.name=Sorter
|
||||||
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=Sorts items. If an item matches the selection, it is allowed to pass. Otherwise, the item is outputted to the left and right.
|
||||||
block.overflowgate.name=Overflow Gate
|
block.overflow-gate.name=Overflow Gate
|
||||||
block.overflowgate.description=A combination splitter and router that only outputs to the left and right if the front path is blocked.
|
block.overflow-gate.description=A combination splitter and router that only outputs to the left and right if the front path is blocked.
|
||||||
block.bridgeconveyor.name=Bridge Conveyor
|
block.bridgeconveyor.name=Bridge Conveyor
|
||||||
block.bridgeconveyor.description=A conveyor that can go over other blocks, for up to two total blocks.
|
block.bridgeconveyor.description=A conveyor that can go over other blocks, for up to two total blocks.
|
||||||
block.smelter.name=Smelter
|
block.smelter.name=Smelter
|
||||||
@@ -510,7 +496,6 @@ block.swarmer.name=Swarmer
|
|||||||
block.salvo.name=Salvo
|
block.salvo.name=Salvo
|
||||||
block.ripple.name=Ripple
|
block.ripple.name=Ripple
|
||||||
block.phase-conveyor.name=Phase Conveyor
|
block.phase-conveyor.name=Phase Conveyor
|
||||||
block.overflow-gate.name=Overflow Gate
|
|
||||||
block.bridge-conveyor.name=Bridge Conveyor
|
block.bridge-conveyor.name=Bridge Conveyor
|
||||||
block.plastanium-compressor.name=Plastanium Compressor
|
block.plastanium-compressor.name=Plastanium Compressor
|
||||||
block.pyratite-mixer.name=Pyratite Mixer
|
block.pyratite-mixer.name=Pyratite Mixer
|
||||||
@@ -531,3 +516,4 @@ block.liquid-tank.name=Liquid Tank
|
|||||||
block.liquid-junction.name=Liquid Junction
|
block.liquid-junction.name=Liquid Junction
|
||||||
block.bridge-conduit.name=Bridge Conduit
|
block.bridge-conduit.name=Bridge Conduit
|
||||||
block.rotary-pump.name=Rotary Pump
|
block.rotary-pump.name=Rotary Pump
|
||||||
|
block.nuclear-reactor.name=Nuclear Reactor
|
||||||
|
|||||||
@@ -1,479 +1,494 @@
|
|||||||
text.about = Erstellt von [ROYAL] Anuken. [] \nUrsprünglich ein Eintrag im [orange] GDL [] MM Jam.\n\nCredits: \n- SFX gemacht mit [yellow] bfxr [] - Musik gemacht von [green] RoccoW [] / gefunden auf [lime] FreeMusicArchive.org [] \n\nBesonderer Dank geht an: \n- [coral] MitchellFJN []: Umfangreicher Spieletest und Feedback \n- [sky] Luxray5474 []: Wiki-Arbeit, Code-Beiträge \n- Alle Beta-Tester auf itch.io und Google Play\n
|
text.about=Erstellt von [ROYAL] Anuken. [] \nUrsprünglich ein Eintrag im [orange] GDL [] MM Jam.\n\nCredits: \n- SFX gemacht mit [yellow] bfxr [] - Musik gemacht von [green] RoccoW [] / gefunden auf [lime] FreeMusicArchive.org [] \n\nBesonderer Dank geht an: \n- [coral] MitchellFJN []: Umfangreicher Spieletest und Feedback \n- [sky] Luxray5474 []: Wiki-Arbeit, Code-Beiträge \n- Alle Beta-Tester auf itch.io und Google Play\n
|
||||||
text.discord = Trete dem Mindustry Discord bei!
|
text.discord=Trete dem Mindustry Discord bei!
|
||||||
text.gameover = Der Kern wurde zerstört.
|
text.gameover=Der Kern wurde zerstört.
|
||||||
text.highscore = [YELLOW] Neuer Highscore!
|
text.highscore=[YELLOW] Neuer Highscore!
|
||||||
text.lasted = Du hast bis zur folgenden Welle überlebt
|
text.lasted=Du hast bis zur folgenden Welle überlebt
|
||||||
text.level.highscore = High Score: [accent] {0}
|
text.level.highscore=High Score: [accent] {0}
|
||||||
text.level.delete.title = Löschen bestätigen
|
text.level.delete.title=Löschen bestätigen
|
||||||
text.level.delete = Bist du sicher, dass du die Karte \"[orange] {0}\" löschen möchtest?
|
text.level.select=Level Auswahl
|
||||||
text.level.select = Level Auswahl
|
text.level.mode=Spielmodus:
|
||||||
text.level.mode = Spielmodus:
|
text.savegame=Spiel speichern
|
||||||
text.savegame = Spiel speichern
|
text.loadgame=Spiel laden
|
||||||
text.loadgame = Spiel laden
|
text.joingame=Spiel beitreten
|
||||||
text.joingame = Spiel beitreten
|
text.quit=Verlassen
|
||||||
text.quit = Verlassen
|
text.about.button=Info
|
||||||
text.about.button = Info
|
text.name=Name:
|
||||||
text.name = Name:
|
text.players={0} Spieler online
|
||||||
text.public = Öffentlich
|
text.players.single={0} Spieler online
|
||||||
text.players = {0} Spieler online
|
text.server.mismatch=Paketfehler: Mögliche Client / Server-Version stimmt nicht überein. Stell sicher, dass du und der Host die neueste Version von Mindustry haben!
|
||||||
text.players.single = {0} Spieler online
|
text.server.kicked.kick=Du wurdest vom Server gekickt!
|
||||||
text.server.mismatch = Paketfehler: Mögliche Client / Server-Version stimmt nicht überein. Stell sicher, dass du und der Host die neueste Version von Mindustry haben!
|
text.server.kicked.invalidPassword=Falsches Passwort.
|
||||||
.server.closing = [accent] Server wird geschlossen...
|
text.server.connected={0} ist beigetreten
|
||||||
text.server.kicked.kick = Du wurdest vom Server gekickt!
|
text.server.disconnected={0} hat die Verbindung getrennt.
|
||||||
text.server.kicked.invalidPassword = Falsches Passwort.
|
text.nohost=Server kann nicht auf einer benutzerdefinierten Karte gehostet werden!
|
||||||
text.server.connected = {0} ist beigetreten
|
text.hostserver=Server hosten
|
||||||
text.server.disconnected = {0} hat die Verbindung getrennt.
|
text.host=Host
|
||||||
text.nohost = Server kann nicht auf einer benutzerdefinierten Karte gehostet werden!
|
text.hosting=[accent] Server wird geöffnet...
|
||||||
text.hostserver = Server hosten
|
text.hosts.refresh=Aktualisieren
|
||||||
text.host = Host
|
text.hosts.discovering=Suche nach LAN-Spielen
|
||||||
text.hosting = [accent] Server wird geöffnet...
|
text.server.refreshing=Server wird aktualisiert
|
||||||
text.hosts.refresh = Aktualisieren
|
text.hosts.none=[lightgray] Keine LAN Spiele gefunden!
|
||||||
text.hosts.discovering = Suche nach LAN-Spielen
|
text.host.invalid=[scarlet] Kann keine Verbindung zum Host herstellen.
|
||||||
text.server.refreshing = Server wird aktualisiert
|
text.server.add=Server hinzufügen
|
||||||
text.hosts.none = [lightgray] Keine LAN Spiele gefunden!
|
text.server.delete=Bist du dir sicher das du diesen Server löschen möchtest?
|
||||||
text.host.invalid = [scarlet] Kann keine Verbindung zum Host herstellen.
|
text.server.hostname=Host: {0}
|
||||||
text.server.add = Server hinzufügen
|
text.server.edit=Server bearbeiten
|
||||||
text.server.delete = Bist du dir sicher das du diesen Server löschen möchtest?
|
text.joingame.title=Spiel beitreten
|
||||||
text.server.hostname = Host: {0}
|
text.joingame.ip=IP:
|
||||||
text.server.edit = Server bearbeiten
|
text.disconnect=Verbindung unterbrochen.
|
||||||
text.joingame.byip = Über IP beitreten ...
|
text.connecting=[accent] Verbindet...
|
||||||
text.joingame.title = Spiel beitreten
|
text.connecting.data=[accent] Weltdaten werden geladen...
|
||||||
text.joingame.ip = IP:
|
text.connectfail=[crimson] Verbindung zum Server konnte nicht hergestellt werden: [orange]{0}
|
||||||
text.disconnect = Verbindung unterbrochen.
|
text.server.port=Port:
|
||||||
text.connecting = [accent] Verbindet...
|
text.server.invalidport=Falscher Port!
|
||||||
text.connecting.data = [accent] Weltdaten werden geladen...
|
text.server.error=[crimson] Fehler beim Hosten des Servers: [orange] {0}
|
||||||
text.connectfail = [crimson] Verbindung zum Server konnte nicht hergestellt werden: [orange]{0}
|
text.save.new=Neuer Spielstand
|
||||||
text.server.port = Port:
|
text.save.overwrite=Möchten du diesen Spielstand wirklich überschreiben?
|
||||||
text.server.invalidport = Falscher Port!
|
text.overwrite=Überschreiben
|
||||||
text.server.error = [crimson] Fehler beim Hosten des Servers: [orange] {0}
|
text.save.none=Keine Spielstände gefunden!
|
||||||
text.tutorial.back = < Zurück
|
text.saveload=[accent] Speichern ...
|
||||||
text.tutorial.next = Weiter >
|
text.savefail=Fehler beim Speichern des Spiels!
|
||||||
text.save.new = Neuer Spielstand
|
text.save.delete.confirm=Möchtest du diesen Spielstand wirklich löschen?
|
||||||
text.save.overwrite = Möchten du diesen Spielstand wirklich überschreiben?
|
text.save.delete=Löschen
|
||||||
text.overwrite = Überschreiben
|
text.save.export=Spielstand exportieren
|
||||||
text.save.none = Keine Spielstände gefunden!
|
text.save.import.invalid=[orange] Dieser Spielstand ist ungültig!
|
||||||
text.saveload = [accent] Speichern ...
|
text.save.import.fail=[crimson] Spielstand konnte nicht importiert werden: [orange] {0}
|
||||||
text.savefail = Fehler beim Speichern des Spiels!
|
text.save.export.fail=[crimson] Spielstand konnte nicht exportiert werden: [orange] {0}
|
||||||
text.save.delete.confirm = Möchtest du diesen Spielstand wirklich löschen?
|
text.save.import=Spielstand importieren
|
||||||
text.save.delete = Löschen
|
text.save.newslot=Name speichern:
|
||||||
text.save.export = Spielstand exportieren
|
text.save.rename=Umbenennen
|
||||||
text.save.import.invalid = [orange] Dieser Spielstand ist ungültig!
|
text.save.rename.text=Neuer Name
|
||||||
text.save.import.fail = [crimson] Spielstand konnte nicht importiert werden: [orange] {0}
|
text.selectslot=Wähle einen Spielstand
|
||||||
text.save.export.fail = [crimson] Spielstand konnte nicht exportiert werden: [orange] {0}
|
text.slot=[accent] Platz {0}
|
||||||
text.save.import = Spielstand importieren
|
text.save.corrupted=[orange] Datei beschädigt oder ungültig!
|
||||||
text.save.newslot = Name speichern:
|
text.empty=<leer>
|
||||||
text.save.rename = Umbenennen
|
text.on=An
|
||||||
text.save.rename.text = Neuer Name
|
text.off=Aus
|
||||||
text.selectslot = Wähle einen Spielstand
|
text.save.autosave=Automatisches Speichern: {0}
|
||||||
text.slot = [accent] Platz {0}
|
text.save.map=Karte: {0}
|
||||||
text.save.corrupted = [orange] Datei beschädigt oder ungültig!
|
text.save.wave=Welle: {0}
|
||||||
text.empty = <leer>
|
text.save.date=Zuletzt gespeichert: {0}
|
||||||
text.on = An
|
text.confirm=Bestätigen
|
||||||
text.off = Aus
|
text.delete=Löschen
|
||||||
text.save.autosave = Automatisches Speichern: {0}
|
text.ok=OK
|
||||||
text.save.map = Karte: {0}
|
text.open=Öffnen
|
||||||
text.save.wave = Welle: {0}
|
text.cancel=Abbruch
|
||||||
text.save.date = Zuletzt gespeichert: {0}
|
text.openlink=Link öffnen
|
||||||
text.confirm = Bestätigen
|
text.back=Zurück
|
||||||
text.delete = Löschen
|
text.quit.confirm=Willst du wirklich aufhören?
|
||||||
text.ok = OK
|
text.loading=[accent] Wird geladen ...
|
||||||
text.open = Öffnen
|
text.wave=[orange] Welle {0}
|
||||||
text.cancel = Abbruch
|
text.wave.waiting=Welle in {0}
|
||||||
text.openlink = Link öffnen
|
text.waiting=Warten...
|
||||||
text.back = Zurück
|
text.enemies={0} Feinde
|
||||||
text.quit.confirm = Willst du wirklich aufhören?
|
text.enemies.single={0} Feind
|
||||||
text.loading = [accent] Wird geladen ...
|
text.loadimage=Bild laden
|
||||||
text.wave = [orange] Welle {0}
|
text.saveimage=Bild speichern
|
||||||
text.wave.waiting = Welle in {0}
|
text.editor.badsize=[orange]Ungültige Bildabmessungen! [] Gültige Kartenabmessungen: {0}
|
||||||
text.waiting = Warten...
|
text.editor.errorimageload=Fehler beim Laden des Bildes: [orange] {0}
|
||||||
text.enemies = {0} Feinde
|
text.editor.errorimagesave=Fehler beim Speichern des Bildes: [orange] {0}
|
||||||
text.enemies.single = {0} Feind
|
text.editor.generate=Generieren
|
||||||
text.loadimage = Bild laden
|
text.editor.resize=Grösse\nanpassen
|
||||||
text.saveimage = Bild speichern
|
text.editor.loadmap=Karte\nladen
|
||||||
text.editor.badsize = [orange]Ungültige Bildabmessungen! [] Gültige Kartenabmessungen: {0}
|
text.editor.savemap=Karte\nspeichern
|
||||||
text.editor.errorimageload = Fehler beim Laden des Bildes: [orange] {0}
|
text.editor.loadimage=Bild\nladen
|
||||||
text.editor.errorimagesave = Fehler beim Speichern des Bildes: [orange] {0}
|
text.editor.saveimage=Bild\nspeichern
|
||||||
text.editor.generate = Generieren
|
text.editor.unsaved=[crimson] Du hast Änderungen nicht gespeichert [] Möchtest du wirklich aufhören?
|
||||||
text.editor.resize = Grösse\nanpassen
|
text.editor.resizemap=Grösse der Karte ändern
|
||||||
text.editor.loadmap = Karte\nladen
|
text.editor.mapname=Map Name
|
||||||
text.editor.savemap = Karte\nspeichern
|
text.editor.overwrite=[accent] Warnung! Dies überschreibt eine vorhandene Map.
|
||||||
text.editor.loadimage = Bild\nladen
|
text.editor.selectmap=Wähle eine Map zum Laden:
|
||||||
text.editor.saveimage = Bild\nspeichern
|
text.width=Breite:
|
||||||
text.editor.unsaved = [crimson] Du hast Änderungen nicht gespeichert [] Möchtest du wirklich aufhören?
|
text.height=Höhe:
|
||||||
text.editor.brushsize = Pinselgrösse: {0}
|
text.menu=Menü
|
||||||
text.editor.noplayerspawn = Diese Karte hat keinen Spielerspawnpunkt!
|
text.play=Spielen
|
||||||
text.editor.manyplayerspawns = Maps können nicht mehr als einen Spawnpunkt des Spielers haben!
|
text.load=Laden
|
||||||
text.editor.manyenemyspawns = Kann nicht mehr als {0} feindliche Spawnpunkte haben!
|
text.save=Speichern
|
||||||
text.editor.resizemap = Grösse der Karte ändern
|
text.settings=Einstellungen
|
||||||
text.editor.resizebig = [crimson] Warnung! [] Karten, die grösser als 256 Einheiten sind, können ruckeln und instabil sein.
|
text.tutorial=Tutorial
|
||||||
text.editor.mapname = Map Name
|
text.editor=Bearbeiter
|
||||||
text.editor.overwrite = [accent] Warnung! Dies überschreibt eine vorhandene Map.
|
text.mapeditor=Karten Bearbeiter
|
||||||
text.editor.failoverwrite = [crimson] Die Standardkarte kann nicht überschrieben werden!
|
text.donate=Spenden
|
||||||
text.editor.selectmap = Wähle eine Map zum Laden:
|
text.settings.reset=Auf Standard zurücksetzen
|
||||||
text.width = Breite:
|
text.settings.controls=Steuerung
|
||||||
text.height = Höhe:
|
text.settings.game=Spiel
|
||||||
text.randomize = Zufällig
|
text.settings.sound=Audio
|
||||||
text.apply = Anwenden
|
text.settings.graphics=Grafiken
|
||||||
text.update = Aktualisieren
|
text.upgrades=Verbesserungen
|
||||||
text.menu = Menü
|
text.purchased=[LIME] Erstellt!
|
||||||
text.play = Spielen
|
text.weapons=Waffen
|
||||||
text.load = Laden
|
text.paused=Pausiert
|
||||||
text.save = Speichern
|
text.error.title=[crimson] Ein Fehler ist aufgetreten
|
||||||
text.settings = Einstellungen
|
text.error.crashtitle=EIn Fehler ist aufgetreten!
|
||||||
text.tutorial = Tutorial
|
text.blocks.blockinfo=Blockinfo:
|
||||||
text.editor = Bearbeiter
|
text.blocks.powercapacity=Energiekapazität
|
||||||
text.mapeditor = Karten Bearbeiter
|
text.blocks.powershot=Energie / Schuss
|
||||||
text.donate = Spenden
|
text.blocks.size=Grösse
|
||||||
text.settings.reset = Auf Standard zurücksetzen
|
text.blocks.liquidcapacity=Flüssigkeitskapazität
|
||||||
text.settings.controls = Steuerung
|
text.blocks.maxitemssecond=Max Gegenstände / Sekunde
|
||||||
text.settings.game = Spiel
|
text.blocks.powerrange=Energiereichweite
|
||||||
text.settings.sound = Audio
|
text.blocks.itemcapacity=Gegenstand Kapazität
|
||||||
text.settings.graphics = Grafiken
|
text.blocks.inputliquid=Flüssigkeiten Eingabe
|
||||||
text.upgrades = Verbesserungen
|
text.blocks.inputitem=Eingabe Gegenstand
|
||||||
text.purchased = [LIME] Erstellt!
|
text.blocks.explosive=Hochexplosiv!
|
||||||
text.weapons = Waffen
|
text.blocks.health=Lebenspunkte
|
||||||
text.paused = Pausiert
|
text.blocks.inaccuracy=Ungenauigkeit
|
||||||
text.respawn = Respawn in
|
text.blocks.shots=Schüsse
|
||||||
text.error.title = [crimson] Ein Fehler ist aufgetreten
|
text.blocks.inputcapacity=Eingabekapazität
|
||||||
text.error.crashmessage = [SCARLET] Es ist ein unerwarteter Fehler aufgetreten, der einen Absturz verursacht hätte. [] Bitte geben Sie die genauen Umstände an, unter denen dieser Fehler passiert ist, für den Entwickler: [ORANGE] anukendev@gmail.com []
|
text.blocks.outputcapacity=Ausgabekapazität
|
||||||
text.error.crashtitle = EIn Fehler ist aufgetreten!
|
setting.difficulty.easy=Leicht
|
||||||
text.mode.break = Zerstörungsmodus: {0}
|
setting.difficulty.normal=Normal
|
||||||
text.mode.place = Platzierungsmodus: {0}
|
setting.difficulty.hard=Schwer
|
||||||
placemode.hold.name = Zeile
|
setting.difficulty.insane=Unmöglich
|
||||||
placemode.areadelete.name = Gebiet
|
setting.difficulty.purge=Auslöschung
|
||||||
placemode.touchdelete.name = berühren
|
setting.difficulty.name=Schwierigkeit
|
||||||
placemode.holddelete.name = halten
|
setting.screenshake.name=Bildschirm wackeln
|
||||||
placemode.none.name = keine
|
setting.indicators.name=Feind Indikatoren
|
||||||
placemode.touch.name = berühren
|
setting.effects.name=Effekte anzeigen
|
||||||
placemode.cursor.name = Mauszeiger
|
setting.sensitivity.name=Kontroller Empfindlichkeit
|
||||||
text.blocks.extrainfo = [accent] Extra Blockinfo:
|
setting.saveinterval.name=Autosave Häufigkeit
|
||||||
text.blocks.blockinfo = Blockinfo:
|
setting.seconds={0} Sekunden
|
||||||
text.blocks.powercapacity = Energiekapazität
|
setting.fps.name=Zeige FPS
|
||||||
text.blocks.powershot = Energie / Schuss
|
setting.vsync.name=VSync
|
||||||
text.blocks.powersecond = Energie / Sekunde
|
setting.lasers.name=Zeige Energielaser
|
||||||
text.blocks.powerdraindamage = Energieabnahme / Schaden
|
setting.healthbars.name=Zeige Objekt Lebensbalken
|
||||||
text.blocks.shieldradius = Schildradius
|
setting.musicvol.name=Musiklautstärke
|
||||||
text.blocks.itemspeedsecond = Gegenstands Geschwindigkeit / Sekunde
|
setting.mutemusic.name=Musik stummschalten
|
||||||
text.blocks.range = Reichweite
|
setting.sfxvol.name=Audioeffekte Lautstärke
|
||||||
text.blocks.size = Grösse
|
setting.mutesound.name=Audioeffekte stummschalten
|
||||||
text.blocks.powerliquid = Energie / Flüssigkeit
|
map.maze.name=Labyrinth
|
||||||
text.blocks.maxliquidsecond = Max Flüssigkeit / Sekunde
|
map.fortress.name=Festung
|
||||||
text.blocks.liquidcapacity = Flüssigkeitskapazität
|
map.sinkhole.name=Sinkloch
|
||||||
text.blocks.liquidsecond = Flüssigkeit / Sekunde
|
map.caves.name=Höhlen
|
||||||
text.blocks.damageshot = Schaden / Schuss
|
map.volcano.name=Vulkan
|
||||||
text.blocks.ammocapacity = Munitionskapazität
|
map.caldera.name=Lavakessel
|
||||||
text.blocks.ammo = Munition
|
map.scorch.name=Flammen
|
||||||
text.blocks.ammoitem = Munition / Gegenstand
|
map.desert.name=Wüste
|
||||||
text.blocks.maxitemssecond = Max Gegenstände / Sekunde
|
map.island.name=Insel
|
||||||
text.blocks.powerrange = Energiereichweite
|
map.grassland.name=Grasland
|
||||||
text.blocks.lasertilerange = Laser Reichweite
|
map.tundra.name=Kältesteppe
|
||||||
text.blocks.capacity = Kapazität
|
map.spiral.name=Spirale
|
||||||
text.blocks.itemcapacity = Gegenstand Kapazität
|
map.tutorial.name=Tutorial
|
||||||
text.blocks.maxpowergenerationsecond = Max Energieerzeugung / Sekunde
|
keybind.move_x.name=bewege_x
|
||||||
text.blocks.powergenerationsecond = Energieerzeugung / Sekunde
|
keybind.move_y.name=bewege_y
|
||||||
text.blocks.generationsecondsitem = Generation Sekunden / Gegenstand
|
keybind.select.name=wählen
|
||||||
text.blocks.input = Eingabe
|
keybind.break.name=Unterbrechung
|
||||||
text.blocks.inputliquid = Flüssigkeiten Eingabe
|
keybind.shoot.name=Schiess
|
||||||
text.blocks.inputitem = Eingabe Gegenstand
|
keybind.zoom_hold.name=zoomen_halten
|
||||||
text.blocks.output = Ausgabe
|
keybind.zoom.name=zoomen
|
||||||
text.blocks.secondsitem = Sekunden / Item
|
keybind.menu.name=Menü
|
||||||
text.blocks.maxpowertransfersecond = Max Energieübertragung / Sekunde
|
keybind.pause.name=Pause
|
||||||
text.blocks.explosive = Hochexplosiv!
|
keybind.dash.name=Bindestrich
|
||||||
text.blocks.repairssecond = Reparaturen / Sekunde
|
keybind.rotate_alt.name=drehen_alt
|
||||||
text.blocks.health = Lebenspunkte
|
keybind.rotate.name=Drehen
|
||||||
text.blocks.inaccuracy = Ungenauigkeit
|
mode.waves.name=Wellen
|
||||||
text.blocks.shots = Schüsse
|
mode.sandbox.name=Sandkasten
|
||||||
text.blocks.shotssecond = Schüsse / Sekunde
|
mode.freebuild.name=Freier Bau
|
||||||
text.blocks.fuel = Treibstoff
|
item.stone.name=Stein
|
||||||
text.blocks.fuelduration = Treibstoffdauer
|
item.coal.name=Kohle
|
||||||
text.blocks.maxoutputsecond = Max Ausgabe / Sekunde
|
item.titanium.name=Titan
|
||||||
text.blocks.inputcapacity = Eingabekapazität
|
item.thorium.name=Uran
|
||||||
text.blocks.outputcapacity = Ausgabekapazität
|
item.sand.name=Sand
|
||||||
text.blocks.poweritem = Energie / Gegenstand
|
liquid.water.name=Wasser
|
||||||
text.placemode = Platzierungsmodus
|
liquid.lava.name=Lava
|
||||||
text.breakmode = Zerstörungsmodus
|
liquid.oil.name=Öl
|
||||||
text.health = Lebenspunkte
|
block.door.name=Tür
|
||||||
setting.difficulty.easy = Leicht
|
block.door-large.name=grosse Tür
|
||||||
setting.difficulty.normal = Normal
|
block.conduit.name=Leitungsrohr
|
||||||
setting.difficulty.hard = Schwer
|
block.pulseconduit.name=Pulsleitungsrohr
|
||||||
setting.difficulty.insane = Unmöglich
|
block.liquidrouter.name=flüssigkeiten verteiler
|
||||||
setting.difficulty.purge = Auslöschung
|
block.conveyor.name=Förderband
|
||||||
setting.difficulty.name = Schwierigkeit
|
block.router.name=Verteiler
|
||||||
setting.screenshake.name = Bildschirm wackeln
|
block.junction.name=Kreuzung
|
||||||
setting.smoothcam.name = Glatte Kamera
|
block.liquidjunction.name=flüssigkeite Kreuzung
|
||||||
setting.indicators.name = Feind Indikatoren
|
block.sorter.name=Sortierer
|
||||||
setting.effects.name = Effekte anzeigen
|
block.smelter.name=Schmelzer
|
||||||
setting.sensitivity.name = Kontroller Empfindlichkeit
|
text.credits=Credits
|
||||||
setting.saveinterval.name = Autosave Häufigkeit
|
text.link.discord.description=the official Mindustry discord chatroom
|
||||||
setting.seconds = {0} Sekunden
|
text.link.github.description=Game source code
|
||||||
setting.fps.name = Zeige FPS
|
text.link.dev-builds.description=Unstable development builds
|
||||||
setting.vsync.name = VSync
|
text.link.trello.description=Official trello board for planned features
|
||||||
setting.lasers.name = Zeige Energielaser
|
text.link.itch.io.description=itch.io page with PC downloads and web version
|
||||||
setting.healthbars.name = Zeige Objekt Lebensbalken
|
text.link.google-play.description=Google Play store listing
|
||||||
setting.pixelate.name = Pixel Bildschirm
|
text.link.wiki.description=official Mindustry wiki
|
||||||
setting.musicvol.name = Musiklautstärke
|
text.linkfail=Failed to open link!\nThe URL has been copied to your cliboard.
|
||||||
setting.mutemusic.name = Musik stummschalten
|
text.editor.web=The web version does not support the editor!\nDownload the game to use it.
|
||||||
setting.sfxvol.name = Audioeffekte Lautstärke
|
text.web.unsupported=The web version does not support this feature! Download the game to use it.
|
||||||
setting.mutesound.name = Audioeffekte stummschalten
|
text.multiplayer.web=This version of the game does not support multiplayer!\nTo play multiplayer from your browser, use the "multiplayer web version" link at the itch.io page.
|
||||||
map.maze.name = Labyrinth
|
text.host.web=The web version does not support hosting games! Download the game to use this feature.
|
||||||
map.fortress.name = Festung
|
text.map.delete=Are you sure you want to delete the map "[orange]{0}[]"?
|
||||||
map.sinkhole.name = Sinkloch
|
text.construction.title=Block Construction Guide
|
||||||
map.caves.name = Höhlen
|
text.construction=You've just selected [accent]block construction mode[].\n\nTo begin placing, simply tap a valid location near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Shift the selection[] by holding and dragging any block in the selection.\n- [accent]Place blocks in a line[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel construction or selection[] by pressing the X at the bottom left.
|
||||||
map.volcano.name = Vulkan
|
text.deconstruction.title=Block Deconstruction Guide
|
||||||
map.caldera.name = Lavakessel
|
text.deconstruction=You've just selected [accent]block deconstruction mode[].\n\nTo begin breaking, simply tap a block near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin de-constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Remove blocks in an area[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel deconstruction or selection[] by pressing the X at the bottom left.
|
||||||
map.scorch.name = Flammen
|
text.showagain=Don't show again next session
|
||||||
map.desert.name = Wüste
|
text.unlocks=Unlocks
|
||||||
map.island.name = Insel
|
text.addplayers=Add/Remove Players
|
||||||
map.grassland.name = Grasland
|
text.newgame=New Game
|
||||||
map.tundra.name = Kältesteppe
|
text.maps=Maps
|
||||||
map.spiral.name = Spirale
|
text.maps.none=[LIGHT_GRAY]No maps found!
|
||||||
map.tutorial.name = Tutorial
|
text.unlocked=New Block Unlocked!
|
||||||
tutorial.intro.text = [gelb] Willkommen zum Tutorial [] Um zu beginnen, drücke 'weiter'.
|
text.unlocked.plural=New Blocks Unlocked!
|
||||||
tutorial.moveDesktop.text = Verwende zum Verschieben die Tasten [orange] [[WASD] []. Halte [orange] Shift [] gedrückt, um zu erhöhen. Halte [orange] CTRL/STRG [] gedrückt, während du das [orange] Scrollrad [] zum Vergrössern oder Verkleinern verwendest.
|
text.server.closing=[accent]Closing server...
|
||||||
tutorial.shoot.text = Ziele mit der Maus, halte die [orange] linke Maustaste [] gedrückt, um zu schiessen. Versuche es mit dem [gelben] Ziel [].
|
text.server.kicked.fastShoot=You are shooting too quickly.
|
||||||
tutorial.moveAndroid.text = Um die Ansicht zu verschieben, ziehe einen Finger über den Bildschirm. Drücke und ziehe, um zu vergrössern oder zu verkleinern.
|
text.server.kicked.clientOutdated=Outdated client! Update your game!
|
||||||
tutorial.placeSelect.text = Versuche, ein [gelbes] Förderband [] aus dem Blockmenü unten rechts auszuwählen.
|
text.server.kicked.serverOutdated=Outdated server! Ask the host to update!
|
||||||
tutorial.placeConveyorDesktop.text = Verwende das [orange] [[scrollwheel] [], um das Förderband nach vorne zu bewegen [orange] vorwärts [], und platziere es dann an der [gelben] markierten Stelle [] mit [orange] [[linke Maustaste] [].
|
text.server.kicked.banned=You are banned on this server.
|
||||||
tutorial.placeConveyorAndroid.text = Verwende die [orange] [[rotieren-Taste] [], um das Förderband nach vorne [orange] zu drehen [], ziehe es mit einem Finger in Position und platziere es dann an der [gelben] markierten Stelle [] mit der [Orange] [[Häkchen][].
|
text.server.kicked.recentKick=You have been kicked recently.\nWait before connecting again.
|
||||||
tutorial.placeConveyorAndroidInfo.text = Alternativ kannst du das Fadenkreuzsymbol unten links drücken, um zum [orange] [[touch mode] [] zu wechseln, und Blöcke durch Tippen auf den Bildschirm platzieren. Im Touch-Modus können Blöcke mit dem Pfeil unten links gedreht werden. Drücke [gelb] neben [], um es auszuprobieren.
|
text.server.kicked.nameInUse=There is someone with that name\nalready on this server.
|
||||||
tutorial.placeDrill.text = Wähle nun einen [gelben] Steinbohrer [] an der markierten Stelle aus und platziere ihn.
|
text.server.kicked.nameEmpty=Your name must contain at least one character or number.
|
||||||
tutorial.blockInfo.text = Wenn du mehr über einen Block erfahren möchtest, tippe oben rechts auf das [orange] Fragezeichen [], um dessen Beschreibung zu lesen.
|
text.server.kicked.idInUse=You are already on this server! Connecting with two accounts is not permitted.
|
||||||
tutorial.deselectDesktop.text = Du kannst einen Block mit [Orange] [[Rechte Maustaste] [] abwählen.
|
text.server.kicked.customClient=This server does not support custom builds. Download an official version.
|
||||||
tutorial.deselectAndroid.text = Du kannst einen Block abwählen, indem du die [orange] X [] -Taste drücken.
|
text.host.info=The [accent]host[] button hosts a server on ports [scarlet]6567[] and [scarlet]6568.[]\nAnybody on the same [LIGHT_GRAY]wifi or local network[] should be able to see your server in their server list.\n\nIf you want people to be able to connect from anywhere by IP, [accent]port forwarding[] is required.\n\n[LIGHT_GRAY]Note: If someone is experiencing trouble connecting to your LAN game, make sure you have allowed Mindustry access to your local network in your firewall settings.
|
||||||
tutorial.drillPlaced.text = Der Bohrer erzeugt nun [gelben] Stein, [] gib den Stein nun auf das Förderband aus und bewege ihn dann in den [gelben] Kern [].
|
text.join.info=Here, you can enter a [accent]server IP[] to connect to, or discover [accent]local network[] servers to connect to.\nBoth LAN and WAN multiplayer is supported.\n\n[LIGHT_GRAY]Note: There is no automatic global server list; if you want to connect to someone by IP, you would need to ask the host for their IP.
|
||||||
tutorial.drillInfo.text = Verschiedene Erze benötigen unterschiedliche Bohrer. Stein erfordert Steinbohrer, Eisen erfordert Eisenbohrer usw.
|
text.server.friendlyfire=Friendly Fire
|
||||||
tutorial.drillPlaced2.text = Wenn du Gegenstände in den Kern verschiebst, steckst du sie in dein [gelbes] Inventar [] oben links. Das Platzieren von Blöcken verwendet Gegenstände aus deinem Inventar.
|
text.trace=Trace Player
|
||||||
tutorial.moreDrills.text = Du kannst so viele Bohrer und Förderer miteinander verbinden wie du lust hast.
|
text.trace.playername=Player name: [accent]{0}
|
||||||
tutorial.deleteBlock.text = Du kannst Blöcke löschen, indem du mit der [orange] rechte Maustaste [] auf dem Block klickst, den du löschen möchtest. Versuche, dieses Förderband zu löschen.
|
text.trace.ip=IP: [accent]{0}
|
||||||
tutorial.deleteBlockAndroid.text = Du kannst Blöcke löschen, indem du [orange] das Fadenkreuz [] im [orange] Pausenmodusmenü [] links unten auswählst und auf einen Block tippst. Versuche, dieses Fliessband zu löschen.
|
text.trace.id=Unique ID: [accent]{0}
|
||||||
tutorial.placeTurret.text = Wähle nun einen [gelben] Turm [] an der [gelben] markierten Stelle [] und platziere ihn.
|
text.trace.android=Android Client: [accent]{0}
|
||||||
tutorial.placedTurretAmmo.text = Dieser Turm nimmt nun [gelbe] Munition [] vom Förderband an. Du kannst sehen, wie viel Munition es hat, indem du darüber schweben und den [grünen] grünen Balken [] prüfen.
|
text.trace.modclient=Custom Client: [accent]{0}
|
||||||
tutorial.turretExplanation.text = Geschütze schiessen automatisch auf den nächsten Feind in Reichweite, solange sie genug Munition haben.
|
text.trace.totalblocksbroken=Total blocks broken: [accent]{0}
|
||||||
tutorial.waves.text = Jede [yellow] 60 [] Sekunden wird eine Welle von [coral] Feinden [] an einem bestimmten Orten erscheinen und versuchen, den Kern zu zerstören.
|
text.trace.structureblocksbroken=Structure blocks broken: [accent]{0}
|
||||||
tutorial.coreDestruction.text = Dein Ziel ist es, den Kern [yellow] zu verteidigen. Wenn der Kern zerstört wird, verlierst du [coral] das Spiel [].
|
text.trace.lastblockbroken=Last block broken: [accent]{0}
|
||||||
tutorial.pausingDesktop.text = Wenn du jemals eine Pause machen möchtest, drücke die [orange] Pause-Taste [] oben links oder [orange]space[], um das Spiel anzuhalten. Du kannst auch Blöcke immer noch auswählen und platzieren, während du das Spiel pausiert ist, aber Sie können sich nicht bewegen oder schiessen.
|
text.trace.totalblocksplaced=Total blocks placed: [accent]{0}
|
||||||
tutorial.pausingAndroid.text = Wenn du jemals eine Pause machen willst, drück einfach die [orange] Pause-Taste [] oben links, um das Spiel anzuhalten. Sie können immer noch Sachen auswählen und Blöcke während der Pause platzieren.
|
text.trace.lastblockplaced=Last block placed: [accent]{0}
|
||||||
tutorial.purchaseWeapons.text = Du kannst neue [yellow] Waffen [] für deinen Mech kaufen, indem du das Verbesserungs-Menü unten links öffnest.
|
text.invalidid=Invalid client ID! Submit a bug report.
|
||||||
tutorial.switchWeapons.text = Schalte Waffen, indem du entweder auf das Symbol unten links klickst oder Nummern verwendest [orange] [[1-9] [].
|
text.server.bans=Bans
|
||||||
tutorial.spawnWave.text = Hier kommt die erste Welle. Zerstöre sie.
|
text.server.bans.none=No banned players found!
|
||||||
tutorial.pumpDesc.text = In späteren Wellen müsst du möglicherweise [yellow] Pumpen [] verwenden, um Flüssigkeiten für Generatoren oder Extraktoren zu verteilen.
|
text.server.admins=Admins
|
||||||
tutorial.pumpPlace.text = Pumpen arbeiten ähnlich wie Bohrer, ausser dass sie anstelle von Gegenständen Flüssigkeiten produzieren. Versuch mal, eine Pumpe auf das [yellow] gekennzeichnete Öl [] zu setzen.
|
text.server.admins.none=No admins found!
|
||||||
tutorial.conduitUse.text = Stellen Sie nun eine [orange] Leitungsrohr [] von der Pumpe weg.
|
text.server.outdated=[crimson]Outdated Server![]
|
||||||
tutorial.conduitUse2.text = Und noch ein paar mehr ...
|
text.server.outdated.client=[crimson]Outdated Client![]
|
||||||
tutorial.conduitUse3.text = Und noch ein paar mehr ...
|
text.server.version=[lightgray]Version: {0}
|
||||||
tutorial.generator.text = Stellen Sie nun einen [orange] Verbrennungsgenerator [] Block am Ende des Leitungsrohres auf.
|
text.server.custombuild=[yellow]Custom Build
|
||||||
tutorial.generatorExplain.text = Dieser Generator erzeugt nun [yellow] Energie [] aus dem Öl.
|
text.confirmban=Are you sure you want to ban this player?
|
||||||
tutorial.lasers.text = Die Energie wird mit [yellow] Energielasern [] verteilt. Drehe und platziere einen hier.
|
text.confirmunban=Are you sure you want to unban this player?
|
||||||
tutorial.laserExplain.text = Der Generator wird nun Energie in den Laserblock bewegen. Ein [yellow] undurchsichtiger [] Strahl bedeutet, dass er gerade Leistung überträgt, und ein [yellow] transparenter [] Strahl bedeutet, dass dies nicht der Fall ist.
|
text.confirmadmin=Are you sure you want to make this player an admin?
|
||||||
tutorial.laserMore.text = Du kannst überprüfen, wie viel Energie ein Block hat, indem du darüber schweben und den [yellow] gelben Balken [] oben prüfen.
|
text.confirmunadmin=Are you sure you want to remove admin status from this player?
|
||||||
tutorial.healingTurret.text = Dieser Laser kann verwendet werden, um einen [lime] -Reparaturgeschütz [] anzutreiben. Platziere einen hier.
|
text.disconnect.data=Failed to load world data!
|
||||||
tutorial.healingTurretExplain.text = Solange er Kraft hat, repariert dieser Turm in der Nähe Blöcke. [] Wenn du spielst, stelle sicher, dass du so schnell wie möglich einen in deiner Basis bekommst!
|
text.server.addressinuse=Address already in use!
|
||||||
tutorial.smeltery.text = Viele Blöcke benötigen [orange] Stahl [], um eine [orange] Schmelzer [] herzustellen. Platziere einen hier.
|
text.save.difficulty=Difficulty: {0}
|
||||||
tutorial.smelterySetup.text = Diese Schmelzer wird nun [orange] Stahl [] aus dem Eingangs-Eisen produzieren, wobei Kohle als Brennstoff verwendet wird.
|
text.copylink=Copy Link
|
||||||
tutorial.end.text = Und damit ist das Tutorial abgeschlossen! Viel Glück!
|
text.changelog.title=Changelog
|
||||||
keybind.move_x.name = bewege_x
|
text.changelog.loading=Getting changelog...
|
||||||
keybind.move_y.name = bewege_y
|
text.changelog.error.android=[orange]Note that the changelog sometimes does not work on Android 4.4 and below!\nThis is due to an internal Android bug.
|
||||||
keybind.select.name = wählen
|
text.changelog.error.ios=[orange]The changelog is currently not supported in iOS.
|
||||||
keybind.break.name = Unterbrechung
|
text.changelog.error=[scarlet]Error getting changelog!\nCheck your internet connection.
|
||||||
keybind.shoot.name = Schiess
|
text.changelog.current=[yellow][[Current version]
|
||||||
keybind.zoom_hold.name = zoomen_halten
|
text.changelog.latest=[orange][[Latest version]
|
||||||
keybind.zoom.name = zoomen
|
text.saving=[accent]Saving...
|
||||||
keybind.menu.name = Menü
|
text.unknown=Unknown
|
||||||
keybind.pause.name = Pause
|
text.custom=Custom
|
||||||
keybind.dash.name = Bindestrich
|
text.builtin=Built-In
|
||||||
keybind.rotate_alt.name = drehen_alt
|
text.map.delete.confirm=Are you sure you want to delete this map? This action cannot be undone!
|
||||||
keybind.rotate.name = Drehen
|
text.map.random=[accent]Random Map
|
||||||
keybind.weapon_1.name = Waffe_1
|
text.map.nospawn=This map does not have any cores for the player to spawn in! Add a [ROYAL]blue[] core to this map in the editor.
|
||||||
keybind.weapon_2.name = Waffe_2
|
text.editor.slope=\\
|
||||||
keybind.weapon_3.name = Waffe_3
|
text.editor.openin=Open In Editor
|
||||||
keybind.weapon_4.name = Waffe_4
|
text.editor.oregen=Ore Generation
|
||||||
keybind.weapon_5.name = Waffe_5
|
text.editor.oregen.info=Ore Generation:
|
||||||
keybind.weapon_6.name = Waffe_6
|
text.editor.mapinfo=Map Info
|
||||||
mode.waves.name = Wellen
|
text.editor.author=Author:
|
||||||
mode.sandbox.name = Sandkasten
|
text.editor.description=Description:
|
||||||
mode.freebuild.name = Freier Bau
|
text.editor.name=Name:
|
||||||
upgrade.standard.name = Standard
|
text.editor.teams=Teams
|
||||||
upgrade.standard.description = Der Standardmech.
|
text.editor.elevation=Elevation
|
||||||
upgrade.blaster.name = Blaster
|
text.editor.saved=Saved!
|
||||||
upgrade.blaster.description = Schiesst eine langsame, schwache Kugel.
|
text.editor.save.noname=Your map does not have a name! Set one in the 'map info' menu.
|
||||||
upgrade.triblaster.name = Dreifach-Blaster
|
text.editor.save.overwrite=Your map overwrites a built-in map! Pick a different name in the 'map info' menu.
|
||||||
upgrade.triblaster.description = Schiesst 3 Kugeln in einer Ausbreitung.
|
text.editor.import.exists=[scarlet]Unable to import:[] a built-in map named '{0}' already exists!
|
||||||
upgrade.clustergun.name = Klumpen-Waffe
|
text.editor.import=Import...
|
||||||
upgrade.clustergun.description = Schiesst eine ungenaue Verbreitung von explosiven Granaten.
|
text.editor.importmap=Import Map
|
||||||
upgrade.beam.name = Strahlkanone
|
text.editor.importmap.description=Import an already existing map
|
||||||
upgrade.beam.description = Schiesst einen weitreichenden durchdringenden Laserstrahl.
|
text.editor.importfile=Import File
|
||||||
upgrade.vulcan.name = Vulkan
|
text.editor.importfile.description=Import an external map file
|
||||||
upgrade.vulcan.description = Schiesst eine Flut von schnellen Kugeln.
|
text.editor.importimage=Import Terrain Image
|
||||||
upgrade.shockgun.name = Schock-Waffe
|
text.editor.importimage.description=Import an external map image file
|
||||||
upgrade.shockgun.description = Erschiesst eine verheerende Explosion von geladenen Granatsplittern.
|
text.editor.export=Export...
|
||||||
item.stone.name = Stein
|
text.editor.exportfile=Export File
|
||||||
item.iron.name = Eisen
|
text.editor.exportfile.description=Export a map file
|
||||||
item.coal.name = Kohle
|
text.editor.exportimage=Export Terrain Image
|
||||||
item.steel.name = Stahl
|
text.editor.exportimage.description=Export a map image file
|
||||||
item.titanium.name = Titan
|
text.editor.overwrite.confirm=[scarlet]Warning![] A map with this name already exists. Are you sure you want to overwrite it?
|
||||||
item.dirium.name = Dirium
|
text.fps=FPS: {0}
|
||||||
item.thorium.name = Uran
|
text.tps=TPS: {0}
|
||||||
item.sand.name = Sand
|
text.ping=Ping: {0}ms
|
||||||
liquid.water.name = Wasser
|
text.language.restart=Please restart your game for the language settings to take effect.
|
||||||
liquid.plasma.name = Plasma
|
text.settings.language=Language
|
||||||
liquid.lava.name = Lava
|
text.settings.rebind=Rebind
|
||||||
liquid.oil.name = Öl
|
text.yes=Yes
|
||||||
block.weaponfactory.name = Waffenfabrik
|
text.no=No
|
||||||
block.air.name = Luft
|
text.info.title=[accent]Info
|
||||||
block.blockpart.name = Blockteil
|
text.blocks.targetsair=Targets Air
|
||||||
block.deepwater.name = tiefes Wasser
|
text.blocks.itemspeed=Units Moved
|
||||||
block.water.name = Wasser
|
text.blocks.shootrange=Range
|
||||||
block.lava.name = Lava
|
text.blocks.poweruse=Power Use
|
||||||
block.oil.name = Öl
|
text.blocks.inputitemcapacity=Input Item Capacity
|
||||||
block.stone.name = Stein
|
text.blocks.outputitemcapacity=Input Item Capacity
|
||||||
block.blackstone.name = schwarzer Stein
|
text.blocks.maxpowergeneration=Max Power Generation
|
||||||
block.iron.name = Eisen
|
text.blocks.powertransferspeed=Power Transfer
|
||||||
block.coal.name = Kohle
|
text.blocks.craftspeed=Production Speed
|
||||||
block.titanium.name = Titan
|
text.blocks.inputliquidaux=Aux Liquid
|
||||||
block.thorium.name = Uran
|
text.blocks.inputitems=Input Items
|
||||||
block.dirt.name = Erde
|
text.blocks.outputitem=Output Item
|
||||||
block.sand.name = Sand
|
text.blocks.drilltier=Drillables
|
||||||
block.ice.name = Eis
|
text.blocks.drillspeed=Base Drill Speed
|
||||||
block.snow.name = Schnee
|
text.blocks.liquidoutput=Liquid Output
|
||||||
block.grass.name = Gras
|
text.blocks.liquiduse=Liquid Use
|
||||||
block.sandblock.name = Sandstein
|
text.blocks.coolant=Coolant
|
||||||
block.snowblock.name = Schneeblock
|
text.blocks.coolantuse=Coolant Use
|
||||||
block.stoneblock.name = Steinblock
|
text.blocks.inputliquidfuel=Fuel Liquid
|
||||||
block.blackstoneblock.name = Schwarzer Stein
|
text.blocks.liquidfueluse=Liquid Fuel Use
|
||||||
block.grassblock.name = Grasblock
|
text.blocks.reload=Reload
|
||||||
block.mossblock.name = Moosblock
|
text.blocks.inputfuel=Fuel
|
||||||
block.shrub.name = Busch
|
text.blocks.fuelburntime=Fuel Burn Time
|
||||||
block.rock.name = Felsen
|
text.unit.blocks=blocks
|
||||||
block.icerock.name = Eisfelsen
|
text.unit.powersecond=power units/second
|
||||||
block.blackrock.name = Schwarzer Felsen
|
text.unit.liquidsecond=liquid units/second
|
||||||
block.dirtblock.name = Erdblock
|
text.unit.itemssecond=items/second
|
||||||
block.stonewall.name = Steinwand
|
text.unit.pixelssecond=pixels/second
|
||||||
block.stonewall.fulldescription = Ein billiger Verteidigungsblock. Nützlich zum Schutz des Kerns und der Geschütztürme in den ersten Wellen.
|
text.unit.liquidunits=liquid units
|
||||||
block.ironwall.name = Eisenwand
|
text.unit.powerunits=power units
|
||||||
block.ironwall.fulldescription = Ein grundlegender Verteidigungsblock. Bietet Schutz vor Feinden.
|
text.unit.degrees=degrees
|
||||||
block.steelwall.name = Stahlwand
|
text.unit.seconds=seconds
|
||||||
block.steelwall.fulldescription = Ein Standard-Verteidigungsblock. Bietet angemessen Schutz vor Feinden.
|
text.unit.none=
|
||||||
block.titaniumwall.name = Titanwand
|
text.unit.items=items
|
||||||
block.titaniumwall.fulldescription = Eine starke Abwehrblockade. Bietet Schutz vor Feinden.
|
text.category.general=General
|
||||||
block.duriumwall.name = Diriumwand
|
text.category.power=Power
|
||||||
block.duriumwall.fulldescription = Eine sehr starke Abwehrblockade. Bietet guten Schutz vor Feinden.
|
text.category.liquids=Liquids
|
||||||
block.compositewall.name = Verbundende Wand
|
text.category.items=Items
|
||||||
block.steelwall-large.name = grosse Stahlwand
|
text.category.crafting=Crafting
|
||||||
block.steelwall-large.fulldescription = Ein Standard-Verteidigungsblock. Mehrere Blöcke gross.
|
text.category.shooting=Shooting
|
||||||
block.titaniumwall-large.name = grosse Titanwand
|
setting.fullscreen.name=Fullscreen
|
||||||
block.titaniumwall-large.fulldescription = Eine starke Abwehrblockade. Mehrere Blöcke gross.
|
setting.multithread.name=Multithreading
|
||||||
block.duriumwall-large.name = grosse Diriumwand
|
setting.minimap.name=Show Minimap
|
||||||
block.duriumwall-large.fulldescription = Eine sehr starke Abwehrblockade. Mehrere Blöcke gross.
|
text.keybind.title=Rebind Keys
|
||||||
block.titaniumshieldwall.name = geschützte Wand
|
keybind.block_info.name=block_info
|
||||||
block.titaniumshieldwall.fulldescription = Ein starker Abwehrblock mit einem extra eingebauten Schild. Benötigt Energie. Verwendet Energie, um feindliche Kugeln zu absorbieren. Es wird empfohlen, Verstärker zu verwenden, um diesem Block Energie zuzuführen.
|
keybind.chat.name=chat
|
||||||
block.repairturret.name = Reparaturgeschütz
|
keybind.player_list.name=player_list
|
||||||
block.repairturret.fulldescription = Repariert beschädigte Blöcke in der Nähe in einem langsamen Tempo. Nutzt geringe Mengen an Energie.
|
keybind.console.name=console
|
||||||
block.megarepairturret.name = Reparaturgeschütz II
|
mode.text.help.title=Description of modes
|
||||||
block.megarepairturret.fulldescription = Repariert in der Nähe beschädigte Blöcke in Reichweite zu einem vernünftigen Preis. Verwendet Energie.
|
mode.waves.description=the normal mode. limited resources and automatic incoming waves.
|
||||||
block.shieldgenerator.name = Schildgenerator
|
mode.sandbox.description=infinite resources and no timer for waves.
|
||||||
block.shieldgenerator.fulldescription = Ein fortgeschrittener Verteidigungsblock. Schützt alle Blöcke in einem Radius vor Angriffen. Bei keinem Betrieb langsamer Strom verbrauch, verliert bei Kugelkontakt jedoch schnell Energie.
|
mode.freebuild.description=limited resources and no timer for waves.
|
||||||
block.door.name = Tür
|
content.item.name=Items
|
||||||
block.door.fulldescription = Ein Block, der durch Antippen geöffnet und geschlossen werden kann.
|
content.liquid.name=Liquids
|
||||||
block.door-large.name = grosse Tür
|
content.unit-type.name=Units
|
||||||
block.door-large.fulldescription = Ein Block der mehrere Felder gross ist und der durch Antippen geöffnet und geschlossen werden kann.
|
content.recipe.name=Blocks
|
||||||
block.conduit.name = Leitungsrohr
|
item.stone.description=A common raw material. Used for separating and refining into other materials, or melting into lava.
|
||||||
block.conduit.fulldescription = Grundlegender Flüssigkeitstransportblock. Funktioniert wie ein Förderband, aber mit Flüssigkeiten. Am besten mit Pumpen oder anderen Leitungen verwenden. Kann als Brücke für Gegner und Spieler verwendet werden.
|
item.tungsten.name=Tungsten
|
||||||
block.pulseconduit.name = Pulsleitungsrohr
|
item.tungsten.description=A common, but very useful structure material. Used in drills and heat-resistant blocks such as generators and smelteries.
|
||||||
block.pulseconduit.fulldescription = Fortschrittlicher Flüssigkeitstransportblock. Transportiert Flüssigkeiten schneller und speichert mehr als normale Leitungsrohre.
|
item.lead.name=Lead
|
||||||
block.liquidrouter.name = flüssigkeiten verteiler
|
item.lead.description=A basic starter material. Used extensively in electronics and liquid transportation blocks.
|
||||||
block.liquidrouter.fulldescription = Funktioniert ähnlich wie ein Router. Akzeptiert Flüssigkeit von einer Seite und gibt sie auf die anderen Seiten aus. Nützlich zum Aufspalten von Flüssigkeit aus eines einzelnen Leitungsrohres in mehrere andere Leitungensrohre.
|
item.coal.description=A common and readily available fuel.
|
||||||
block.conveyor.name = Förderband
|
item.carbide.name=Carbide
|
||||||
block.conveyor.fulldescription = Grundelement Transport Block. Bewegt Gegenstände nach vorne und legt sie automatisch in Türmen oder ähnliches. Drehbar. Kann als Brücke für Gegner und Spieler verwendet werden.
|
item.carbide.description=A tough alloy made with tungsten and carbon. Used in advanced transportation blocks and high-tier drills.
|
||||||
block.steelconveyor.name = Stahlförderband
|
item.titanium.description=A rare super-light metal used extensively in liquid transportation, drills and aircraft.
|
||||||
block.steelconveyor.fulldescription = Erweiterter Transportblock Bewegt Gegenstände schneller als Standardförderer.
|
item.thorium.description=A dense, radioactive metal used as structural support and nuclear fuel.
|
||||||
block.poweredconveyor.name = Impulsförderband
|
item.silicon.name=Silicon
|
||||||
block.poweredconveyor.fulldescription = Der ultimative Transportblock für Gegenstände. Bewegt Gegenstände noch schneller als Stahlförderer.
|
item.silcion.description=An extremely useful semiconductor, with applications in solar panels and many complex electronics.
|
||||||
block.router.name = Verteiler
|
item.plastanium.name=Plastanium
|
||||||
block.router.fulldescription = Akzeptiert Objekte aus einer Richtung und gibt sie in 3 andere Richtungen aus. Kann auch eine bestimmte Anzahl von Gegenständen speichern. Geeignet zum Aufteilen der Materialien von einem Bohrer in mehrere Geschütze.
|
item.plastanium.description=A light, ductile material used in advanced aircraft and fragmentation ammunition.
|
||||||
block.junction.name = Kreuzung
|
item.phase-matter.name=Phase Matter
|
||||||
block.junction.fulldescription = Fungiert als Brücke für zwei kreuzende Förderbänder. Nützlich in Situationen mit zwei verschiedenen Förderbänder, die unterschiedliche Materialien zu verschiedenen Orten transportieren.
|
item.surge-alloy.name=Surge Alloy
|
||||||
block.conveyortunnel.name = Förderbandtunnel
|
item.biomatter.name=Biomatter
|
||||||
block.conveyortunnel.fulldescription = Transportiert Artikel unter Blöcken. Verwendung für einen Tunnel, der in den zu untertunnelnden Block führt, und einen auf der anderen Seite. Stellen Sie sicher, dass beide Tunnel in entgegengesetzte Richtungen weisen, das heisst das die Tunnel voneinander weggucken.
|
item.biomatter.description=A clump of organic mush; used for conversion into oil or as a basic fuel.
|
||||||
block.liquidjunction.name = flüssigkeite Kreuzung
|
item.sand.description=A common material that is used extensively in smelting, both in alloying and as a flux.
|
||||||
block.liquidjunction.fulldescription = Funktioniert als Brücke für zwei kreuzende Leitungsrohre. Nützlich in Situationen mit zwei verschiedenen Leitungen, die unterschiedliche Flüssigkeiten zu verschiedenen Orten transportieren.
|
item.blast-compound.name=Blast Compound
|
||||||
block.liquiditemjunction.name = Flüssigkeit-Gegenstand-Kreuzung
|
item.blast-compound.description=A volatile compound used in bombs and explosives. While it can burned as fuel, this is not advised.
|
||||||
block.liquiditemjunction.fulldescription = Fungiert als Brücke zum Überqueren von Leitungsrohre und Förderbändern.
|
item.pyratite.name=Pyratite
|
||||||
block.powerbooster.name = Energieverstärker
|
item.pyratite.description=An extremely flammable substance used in incendiary weapons.
|
||||||
block.powerbooster.fulldescription = Verteilt die Energie an alle Blöcke innerhalb seines Radius.
|
liquid.cryofluid.name=Cryofluid
|
||||||
block.powerlaser.name = Energielaser
|
text.item.explosiveness=[LIGHT_GRAY]Explosiveness: {0}
|
||||||
block.powerlaser.fulldescription = Erzeugt einen Laser, der die Kraft auf den Block davor überträgt. Erzeugt selbst keine Energie. Am besten mit Generatoren oder anderen Lasern verwendet.
|
text.item.flammability=[LIGHT_GRAY]Flammability: {0}
|
||||||
block.powerlaserrouter.name = Laser Verteiler
|
text.item.radioactivity=[LIGHT_GRAY]Radioactivity: {0}
|
||||||
block.powerlaserrouter.fulldescription = Laser, der die Kraft in drei Richtungen gleichzeitig verteilt. Nützlich in Situationen, in denen mehrere Blöcke von einem Generator mit Strom versorgt werden müssen.
|
text.item.fluxiness=[LIGHT_GRAY]Flux Power: {0}
|
||||||
block.powerlasercorner.name = Laser-Ecke
|
text.item.hardness=[LIGHT_GRAY]Hardness: {0}
|
||||||
block.powerlasercorner.fulldescription = Laser, der die Kraft in zwei Richtungen gleichzeitig verteilt. Nützlich in Situationen, in denen mehrere Blöcke von einem Generator mit Strom versorgt werden müssen und ein Router ungenau ist.
|
text.liquid.heatcapacity=[LIGHT_GRAY]Heat Capacity: {0}
|
||||||
block.teleporter.name = Teleporter
|
text.liquid.viscosity=[LIGHT_GRAY]Viscosity: {0}
|
||||||
block.teleporter.fulldescription = Erweiterter Transportblock Teleporter geben Gegenstände in andere Teleporter derselben Farbe ein. Tut nichts, wenn keine Teleporter derselben Farbe existieren. Wenn mehrere Teleporter mit derselben Farbe existieren, wird eine zufällige ausgewählt. Verwendet Energie. Tippen, um die Farbe zu ändern.
|
text.liquid.temperature=[LIGHT_GRAY]Temperature: {0}
|
||||||
block.sorter.name = Sortierer
|
block.tungsten-wall.name=Tungsten Wall
|
||||||
block.sorter.fulldescription = Sortiert den Gegenstand nach Materialart. Das zu akzeptierende Material wird durch die Farbe im Block angezeigt. Alle Artikel, die dem Sortiermaterial entsprechen, werden vorwärts ausgegeben, alles andere wird nach links und rechts ausgegeben.
|
block.tungsten-wall-large.name=Large Tungsten Wall
|
||||||
block.core.name = Kern
|
block.carbide-wall.name=Carbide Wall
|
||||||
block.pump.name = Pumpe
|
block.carbide-wall-large.name=Large Carbide Wall
|
||||||
block.pump.fulldescription = Pumpen Flüssigkeiten aus einem Quellblock - meist Wasser, Lava oder Öl. Gibt Flüssigkeit in benachbarte Leitungsrohre aus.
|
block.thorium-wall.name=Thorium Wall
|
||||||
block.fluxpump.name = flux Pumpe
|
block.thorium-wall-large.name=Large Thorium Wall
|
||||||
block.fluxpump.fulldescription = Eine erweiterte Version der Pumpe. Speichert mehr Flüssigkeit und pumpt Flüssigkeit schneller.
|
block.duo.name=Duo
|
||||||
block.smelter.name = Schmelzer
|
block.scorch.name=Scorch
|
||||||
block.smelter.fulldescription = Der essentielle Bastelblock. Wenn 1x Eisen und 1x Kohle eingegeben wird, wird 1x Stahl ausgegeben.
|
block.hail.name=Hail
|
||||||
block.crucible.name = Tiegel
|
block.lancer.name=Lancer
|
||||||
block.crucible.fulldescription = Ein fortgeschrittener Handwerksblock. Braucht Kohle um zu funktionieren. Wenn 1x Titan und 1x Stahl eingegeben wird, wird 1x Dirium ausgegeben.
|
block.titanium-conveyor.name=Titanium Conveyor
|
||||||
block.coalpurifier.name = Kohle-Extraktor
|
block.splitter.name=Splitter
|
||||||
block.coalpurifier.fulldescription = Ein einfacher Extraktorblock. Gibt Kohle aus, wenn der Block mit grossen Mengen Wasser und Stein gefüllt wird.
|
block.splitter.description=Outputs items into two opposite directions immediately after they are recieved.
|
||||||
block.titaniumpurifier.name = Titan-Extraktor
|
block.router.description=Splits items into all 4 directions. Can store items as a buffer.
|
||||||
block.titaniumpurifier.fulldescription = Ein Standard-Extraktorblock. Gibt Titan aus wenn er mit grossen Mengen Wasser und Eisen gefüllt wird.
|
block.distributor.name=Distributor
|
||||||
block.oilrefinery.name = Ölraffinerie
|
block.distributor.description=A splitter that can split items into 8 directions.
|
||||||
block.oilrefinery.fulldescription = Veredelt grosse Mengen Öl zu Kohle. Nützlich für die Betankung von Blöcken die Kohle benutzen wie z.b. Waffentürme, wenn Kohleadern knapp sind.
|
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.stoneformer.name = Steinformer
|
block.overflow-gate.name=Overflow Gate
|
||||||
block.stoneformer.fulldescription = Verfestigt flüssige Lava zu Stein. Nützlich für die Herstellung von grossen Mengen von Stein für Kohle-Extraktor.
|
block.overflow-gate.description=A combination splitter and router that only outputs to the left and right if the front path is blocked.
|
||||||
block.lavasmelter.name = Lava-Schmelzer
|
block.bridgeconveyor.name=Bridge Conveyor
|
||||||
block.lavasmelter.fulldescription = Verwendet Lava, um Eisen zu Stahl schmelzen. Eine Alternative zum Schmelzer. Nützlich in Situationen, in denen Kohle knapp ist.
|
block.bridgeconveyor.description=A conveyor that can go over other blocks, for up to two total blocks.
|
||||||
block.stonedrill.name = Steinbohrer
|
block.arc-smelter.name=Arc Smelter
|
||||||
block.stonedrill.fulldescription = Der wesentliche Bohrer. Wenn er auf Steinplatten gelegt wird, gibt er Steine mit einer langsamen Geschwindigkeit auf endlosen Zeit aus.
|
block.silicon-smelter.name=Silicon Smelter
|
||||||
block.irondrill.name = Eisenbohrer
|
block.phase-weaver.name=Phase Weaver
|
||||||
block.irondrill.fulldescription = Eine grundlegender Bohrer. Wenn es auf Eisenerz gelegt wird, gibt er Eisen auf endloser Zeit langsam aus.
|
block.pulverizer.name=Pulverizer
|
||||||
block.coaldrill.name = Kohlenbohrer
|
block.cryofluidmixer.name=Cryofluid Mixer
|
||||||
block.coaldrill.fulldescription = Eine grundlegender Bohrer. Wenn es auf Kohleerz platziert wird, gibt er für endloser Zeit langsam Kohle aus.
|
block.melter.name=Melter
|
||||||
block.thoriumdrill.name = Uran-Bohrer
|
block.incinerator.name=Incinerator
|
||||||
block.thoriumdrill.fulldescription = Ein fortgeschrittener Bohrer. Wenn es auf Uranerz platziert wird, gibt er Uran mit einer langsamen Geschwindigkeit auf endloser Zeit ab.
|
block.biomattercompressor.name=Biomatter Compressor
|
||||||
block.titaniumdrill.name = Titan-Bohrer
|
block.separator.name=Separator
|
||||||
block.titaniumdrill.fulldescription = Ein fortgeschrittener Bohrer. Wenn es auf Titanerz platziert wird, gibt er Titan langsam aus für undendlich langer Zeit
|
block.centrifuge.name=Centrifuge
|
||||||
block.omnidrill.name = Omni-Bohrer
|
block.power-node.name=Power Node
|
||||||
block.omnidrill.fulldescription = Der ultimative Bohrer. Baut in schnellem Tempo jegliches Erz ab.
|
block.power-node-large.name=Large Power Node
|
||||||
block.coalgenerator.name = Kohle-Generator
|
block.battery.name=Battery
|
||||||
block.coalgenerator.fulldescription = Der wesentliche Generator. Erzeugt Energie aus Kohle. Gibt Energie als Laser an seine 4 Seiten aus.
|
block.battery-large.name=Large Battery
|
||||||
block.thermalgenerator.name = thermischer Generator
|
block.combustion-generator.name=Combustion Generator
|
||||||
block.thermalgenerator.fulldescription = Erzeugt Energie aus Lava. Gibt Energie als Laser an seine 4 Seiten aus.
|
block.turbine-generator.name=Turbine Generator
|
||||||
block.combustiongenerator.name = Verbrennungsgenerator
|
block.tungsten-drill.name=Tungsten Drill
|
||||||
block.combustiongenerator.fulldescription = Erzeugt Energie aus Öl. Gibt Energie als Laser an seine 4 Seiten aus.
|
block.carbide-drill.name=Carbide Drill
|
||||||
block.rtgenerator.name = RTG-Generator
|
block.laser-drill.name=Laser Drill
|
||||||
block.rtgenerator.fulldescription = Erzeugt geringe Mengen an Energie aus dem radioaktiven Zerfall von Uran. Gibt Energie als Laser an seine 4 Seiten aus.
|
block.water-extractor.name=Water Extractor
|
||||||
block.nuclearreactor.name = Kernreaktor
|
block.cultivator.name=Cultivator
|
||||||
block.nuclearreactor.fulldescription = Eine erweiterte Version des RTG-Generators und der ultimative Energie Generator. Erzeugt Strom aus Uran. Erfordert konstante Wasserkühlung. Sehr heiss; explodiert heftig, wenn zu wenig Kühlmittel zugeführt wird.
|
block.dart-ship-factory.name=Dart Ship Factory
|
||||||
block.turret.name = Geschütz
|
block.delta-mech-factory.name=Delta Mech Factory
|
||||||
block.turret.fulldescription = Ein einfacher, billiger Turm. Verwendet Stein für Munition. Hat etwas mehr Reichweite als das Doppelgeschütz.
|
block.dronefactory.name=Drone Factory
|
||||||
block.doubleturret.name = Doppelgeschütz
|
block.repairpoint.name=Repair Point
|
||||||
block.doubleturret.fulldescription = Eine etwas stärkere Version des Geschützes. Verwendet Stein für Munition. Hat deutlich mehr Schaden, hat aber eine geringere Reichweite. Schiesst zwei Kugeln.
|
block.resupplypoint.name=Resupply Point
|
||||||
block.machineturret.name = Gatling Geschütz
|
block.liquidtank.name=Liquid Tank
|
||||||
block.machineturret.fulldescription = Ein Standard-Allround-Turm. Verwendet Eisen für Munition. Hat eine schnelle Feuerrate mit gutem Schaden.
|
block.bridgeconduit.name=Bridge Conduit
|
||||||
block.shotgunturret.name = Splittergeschütz
|
block.mechanical-pump.name=Mechanical Pump
|
||||||
block.shotgunturret.fulldescription = Ein Standard-Turm. Verwendet Eisen für Munition. Schiesst 7 Kugeln auf einmal. Geringere Reichweite, aber höhere Schadensleistung als das Gatling Geschütz
|
block.itemsource.name=Item Source
|
||||||
block.flameturret.name = Flammenwerfer
|
block.itemvoid.name=Item Void
|
||||||
block.flameturret.fulldescription = Fortschrittlicher Nahbereichswaffe. Verwendet Kohle für Munition. Hat eine sehr geringe Reichweite, aber sehr hohen Schaden. Gut für Nahkampf. Empfohlen für den Einsatz hinter Mauern.
|
block.liquidsource.name=Liquid Source
|
||||||
block.sniperturret.name = Schienenkanone
|
block.powervoid.name=Power Void
|
||||||
block.sniperturret.fulldescription = Fortschrittliches Reichweitengeschütz. Verwendet Stahl für Munition. Sehr hoher Schaden, aber niedrige Feuerrate. Teuer zu verwenden, kann aber aufgrund seiner Reichweite weit entfernt von den feindlichen Linien platziert werden.
|
block.powerinfinite.name=Power Infinite
|
||||||
block.mortarturret.name = Flakgeschütz
|
block.unloader.name=Unloader
|
||||||
block.mortarturret.fulldescription = Fortschrittlicher Flächen-Schaden Turm. Verwendet Kohle für Munition. Sehr langsame Feuerrate und Geschosse, aber sehr hoher Einzelziel- und Flächenschaden. Nützlich gegen grosse Mengen von Feinden.
|
block.sortedunloader.name=Sorted Unloader
|
||||||
block.laserturret.name = Laserturm
|
block.vault.name=Vault
|
||||||
block.laserturret.fulldescription = Fortschrittlicher Einzelziel-Turm. Verwendet Strom. Guter Allround-Revolver für mittlere Reichweiten. Nur Einzelziel. Verfehlt nie.
|
block.wave.name=Wave
|
||||||
block.waveturret.name = Teslakanone
|
block.swarmer.name=Swarmer
|
||||||
block.waveturret.fulldescription = Erweiterter Mehrfach-Ziele-Turm. Verwendet Strom. Mittlere Reichweite. Verfehlt nie. Im Durchschnitt zu wenig Schaden, aber kann mehrere Feinde gleichzeitig mit Kettenblitz treffen.
|
block.salvo.name=Salvo
|
||||||
block.plasmaturret.name = Plasmageschütz
|
block.ripple.name=Ripple
|
||||||
block.plasmaturret.fulldescription = Hochentwickelte Version des Flammenwerfers. Verwendet Kohle als Munition. Sehr hoher Schaden, niedriger bis mittlerer Reichweite.
|
block.phase-conveyor.name=Phase Conveyor
|
||||||
block.chainturret.name = Kettengeschütz
|
block.bridge-conveyor.name=Bridge Conveyor
|
||||||
block.chainturret.fulldescription = Die ultimative Schnellfeuer Waffe. Verwendet Uran als Munition. Schiesst grosse Kugeln mit hoher Feuerrate. Mittlere Reichweite. Mehrere Felder gross. Hält extrem viel aus.
|
block.plastanium-compressor.name=Plastanium Compressor
|
||||||
block.titancannon.name = Titan Kanone
|
block.pyratite-mixer.name=Pyratite Mixer
|
||||||
block.titancannon.fulldescription = Die ultimative Langstrecken Kanone. Verwendet Uran als Munition. Schiesst grosse Flächen-Schadenden-Granaten mit einer mittleren Feuerrate ab. Lange Reichweite. Ist mehrere Felder gross. Hält extrem viel aus.
|
block.blast-mixer.name=Blast Mixer
|
||||||
block.playerspawn.name = Spielerspawn
|
block.solidifer.name=Solidifer
|
||||||
block.enemyspawn.name = Gegnerspawn
|
block.solar-panel.name=Solar Panel
|
||||||
|
block.solar-panel-large.name=Large Solar Panel
|
||||||
|
block.oil-extractor.name=Oil Extractor
|
||||||
|
block.javelin-ship-factory.name=Javelin Ship factory
|
||||||
|
block.drone-factory.name=Drone Factory
|
||||||
|
block.fabricator-factory.name=Fabricator Factory
|
||||||
|
block.repair-point.name=Repair Point
|
||||||
|
block.resupply-point.name=Resupply Point
|
||||||
|
block.pulse-conduit.name=Pulse Conduit
|
||||||
|
block.phase-conduit.name=Phase Conduit
|
||||||
|
block.liquid-router.name=Liquid Router
|
||||||
|
block.liquid-tank.name=Liquid Tank
|
||||||
|
block.liquid-junction.name=Liquid Junction
|
||||||
|
block.bridge-conduit.name=Bridge Conduit
|
||||||
|
block.rotary-pump.name=Rotary Pump
|
||||||
|
block.nuclear-reactor.name=Nuclear Reactor
|
||||||
|
|||||||
@@ -1,491 +1,494 @@
|
|||||||
text.about = Dibuat oleh [ROYAL]Anuken.[]\nAwalnya masuk di [orange]GDL[] MM Jam.\n\nKredit:\n- SFX dibuat dengan [YELLOW]bfxr[]\n- Musik dibuat oleh [GREEN]RoccoW[] / ditemukan di [lime]FreeMusicArchive.org[]\n\nTerima kasih khusus kepada:\n- [coral]MitchellFJN[]: playtesting dan umpan balik yang luas\n- [sky]Luxray5474[]: pekerjaan wiki, kontribusi kode\n- Semua penguji beta di itch.io dan Google Play\n
|
text.about=Dibuat oleh [ROYAL]Anuken.[]\nAwalnya masuk di [orange]GDL[] MM Jam.\n\nKredit:\n- SFX dibuat dengan [YELLOW]bfxr[]\n- Musik dibuat oleh [GREEN]RoccoW[] / ditemukan di [lime]FreeMusicArchive.org[]\n\nTerima kasih khusus kepada:\n- [coral]MitchellFJN[]: playtesting dan umpan balik yang luas\n- [sky]Luxray5474[]: pekerjaan wiki, kontribusi kode\n- Semua penguji beta di itch.io dan Google Play\n
|
||||||
text.discord = Bergabunglah dengan Discord Mindustry!
|
text.discord=Bergabunglah dengan Discord Mindustry!
|
||||||
text.gameover = Intinya hancur.
|
text.gameover=Intinya hancur.
|
||||||
text.highscore = [YELLOW]Rekor baru!
|
text.highscore=[YELLOW]Rekor baru!
|
||||||
text.lasted = Anda bertahan sampai gelombang
|
text.lasted=Anda bertahan sampai gelombang
|
||||||
text.level.highscore = Skor Tinggi: [accent]{0}
|
text.level.highscore=Skor Tinggi: [accent]{0}
|
||||||
text.level.delete.title = Konfirmasi Hapus
|
text.level.delete.title=Konfirmasi Hapus
|
||||||
text.level.delete = Yakin ingin menghapus peta \"[orange]{0}\"?
|
text.level.select=Pilih Level
|
||||||
text.level.select = Pilih Level
|
text.level.mode=Modus permainan:
|
||||||
text.level.mode = Modus permainan:
|
text.savegame=Simpan Permainan
|
||||||
text.savegame = Simpan Permainan
|
text.loadgame=Lanjutkan
|
||||||
text.loadgame = Lanjutkan
|
text.joingame=Bermain Bersama
|
||||||
text.joingame = Bermain Bersama
|
text.quit=Keluar
|
||||||
text.quit = Keluar
|
text.about.button=Tentang
|
||||||
text.about.button = Tentang
|
text.name=Nama:
|
||||||
text.name = Nama:
|
text.players={0} pemain online
|
||||||
text.public = Publik
|
text.players.single={0} pemain online
|
||||||
text.players = {0} pemain online
|
text.server.mismatch=Kesalahan paket: kemungkinan versi client / server tidak sesuai.\nPastikan Anda dan host memiliki versi terbaru Mindustry!
|
||||||
text.server.player.host = {0} (host)
|
text.server.closing=[accent]Menutup server...
|
||||||
text.players.single = {0} pemain online
|
text.server.kicked.kick=Anda telah dikeluarkan dari server!
|
||||||
text.server.mismatch = Kesalahan paket: kemungkinan versi client / server tidak sesuai.\nPastikan Anda dan host memiliki versi terbaru Mindustry!
|
text.server.kicked.invalidPassword=Kata sandi salah!
|
||||||
text.server.closing = [accent]Menutup server...
|
text.server.kicked.clientOutdated=Client versi lama! Update game Anda!
|
||||||
text.server.kicked.kick = Anda telah dikeluarkan dari server!
|
text.server.kicked.serverOutdated=Server versi lama! Tanyakan host untuk mengupdate!
|
||||||
text.server.kicked.invalidPassword = Kata sandi salah!
|
text.server.connected={0} telah bergabung.
|
||||||
text.server.kicked.clientOutdated = Client versi lama! Update game Anda!
|
text.server.disconnected={0} telah terputus.
|
||||||
text.server.kicked.serverOutdated = Server versi lama! Tanyakan host untuk mengupdate!
|
text.nohost=Tidak dapat meng-host server pada peta khusus!
|
||||||
text.server.connected = {0} telah bergabung.
|
text.hostserver=Host Server
|
||||||
text.server.disconnected = {0} telah terputus.
|
text.host=Host
|
||||||
text.nohost = Tidak dapat meng-host server pada peta khusus!
|
text.hosting=[accent]Membuka server...
|
||||||
text.hostserver = Host Server
|
text.hosts.refresh=Segarkan
|
||||||
text.host = Host
|
text.hosts.discovering=Mencari game LAN
|
||||||
text.hosting = [accent]Membuka server...
|
text.server.refreshing=Menyegarkan server
|
||||||
text.hosts.refresh = Segarkan
|
text.hosts.none=[lightgray]Tidak ada game LAN yang ditemukan!
|
||||||
text.hosts.discovering = Mencari game LAN
|
text.host.invalid=[scarlet]Tidak dapat terhubung ke host.
|
||||||
text.server.refreshing = Menyegarkan server
|
text.server.friendlyfire=Tembak Sesama
|
||||||
text.hosts.none = [lightgray]Tidak ada game LAN yang ditemukan!
|
text.server.add=Tambahkan Server
|
||||||
text.host.invalid = [scarlet]Tidak dapat terhubung ke host.
|
text.server.delete=Yakin ingin menghapus server ini?
|
||||||
text.server.friendlyfire = Tembak Sesama
|
text.server.hostname=Host: {0}
|
||||||
text.server.add = Tambahkan Server
|
text.server.edit=Sunting Server
|
||||||
text.server.delete = Yakin ingin menghapus server ini?
|
text.joingame.title=Bermain Bersama
|
||||||
text.server.hostname = Host: {0}
|
text.joingame.ip=IP:
|
||||||
text.server.edit = Sunting Server
|
text.disconnect=Sambungan terputus.
|
||||||
text.joingame.byip = Bergabung dengan IP...
|
text.connecting=[accent]Menghubungkan...
|
||||||
text.joingame.title = Bermain Bersama
|
text.connecting.data=[accent]Memuat data level...
|
||||||
text.joingame.ip = IP:
|
text.connectfail=[crimson]Gagal terhubung ke server: [orange]{0}
|
||||||
text.disconnect = Sambungan terputus.
|
text.server.port=Port:
|
||||||
text.connecting = [accent]Menghubungkan...
|
text.server.addressinuse=Alamat sudah di pakai!
|
||||||
text.connecting.data = [accent]Memuat data level...
|
text.server.invalidport=Nomor port salah!
|
||||||
text.connectfail = [crimson]Gagal terhubung ke server: [orange]{0}
|
text.server.error=[crimson]Kesalahan server hosting: [orange]{0}
|
||||||
text.server.port = Port:
|
text.save.new=Simpan Baru
|
||||||
text.server.addressinuse = Alamat sudah di pakai!
|
text.save.overwrite=Yakin ingin mengganti slot simpan ini?
|
||||||
text.server.invalidport = Nomor port salah!
|
text.overwrite=Ganti
|
||||||
text.server.error = [crimson]Kesalahan server hosting: [orange]{0}
|
text.save.none=Tidak ada simpanan ditemukan!
|
||||||
text.tutorial.back = < Sebelumnya
|
text.saveload=[accent]Menyimpan...
|
||||||
text.tutorial.next = Berikutnya >
|
text.savefail=Gagal menyimpan game!
|
||||||
text.save.new = Simpan Baru
|
text.save.delete.confirm=Yakin ingin menghapus save ini?
|
||||||
text.save.overwrite = Yakin ingin mengganti slot simpan ini?
|
text.save.delete=Hapus
|
||||||
text.overwrite = Ganti
|
text.save.export=Ekspor Simpanan
|
||||||
text.save.none = Tidak ada simpanan ditemukan!
|
text.save.import.invalid=[orange]Simpanan ini tidak valid!
|
||||||
text.saveload = [accent]Menyimpan...
|
text.save.import.fail=[crimson]Gagal mengimpor: [orange]{0}
|
||||||
text.savefail = Gagal menyimpan game!
|
text.save.export.fail=[crimson]Gagal mengekspor save: [orange]{0}
|
||||||
text.save.delete.confirm = Yakin ingin menghapus save ini?
|
text.save.import=Impor Simpanan
|
||||||
text.save.delete = Hapus
|
text.save.newslot=Nama simpanan:
|
||||||
text.save.export = Ekspor Simpanan
|
text.save.rename=Ganti nama
|
||||||
text.save.import.invalid = [orange]Simpanan ini tidak valid!
|
text.save.rename.text=Nama baru:
|
||||||
text.save.import.fail = [crimson]Gagal mengimpor: [orange]{0}
|
text.selectslot=Pilih simpanan.
|
||||||
text.save.export.fail = [crimson]Gagal mengekspor save: [orange]{0}
|
text.slot=[accent]Slot{0}
|
||||||
text.save.import = Impor Simpanan
|
text.save.corrupted=[orange]Simpanan rusak atau tidak valid!
|
||||||
text.save.newslot = Nama simpanan:
|
text.empty=<kosong>
|
||||||
text.save.rename = Ganti nama
|
text.on=Hidup
|
||||||
text.save.rename.text = Nama baru:
|
text.off=Mati
|
||||||
text.selectslot = Pilih simpanan.
|
text.save.autosave=Simpan otomatis: {0}
|
||||||
text.slot = [accent]Slot{0}
|
text.save.map=Peta: {0}
|
||||||
text.save.corrupted = [orange]Simpanan rusak atau tidak valid!
|
text.save.wave=Gelombang {0}
|
||||||
text.empty = <kosong>
|
text.save.date=Terakhir Disimpan: {0}
|
||||||
text.on = Hidup
|
text.confirm=Konfirmasi
|
||||||
text.off = Mati
|
text.delete=Hapus
|
||||||
text.save.autosave = Simpan otomatis: {0}
|
text.ok=OK
|
||||||
text.save.map = Peta: {0}
|
text.open=Buka
|
||||||
text.save.wave = Gelombang {0}
|
text.cancel=Batal
|
||||||
text.save.date = Terakhir Disimpan: {0}
|
text.openlink=Buka tautan
|
||||||
text.confirm = Konfirmasi
|
text.back=Kembali
|
||||||
text.delete = Hapus
|
text.quit.confirm=Anda yakin ingin berhenti?
|
||||||
text.ok = OK
|
text.loading=[accent]Memuat...
|
||||||
text.open = Buka
|
text.wave=[orange]Gelombang {0}
|
||||||
text.cancel = Batal
|
text.wave.waiting=Gelombang dimulai {0}
|
||||||
text.openlink = Buka tautan
|
text.waiting=Menunggu...
|
||||||
text.back = Kembali
|
text.enemies={0} musuh
|
||||||
text.quit.confirm = Anda yakin ingin berhenti?
|
text.enemies.single={0} Musuh
|
||||||
text.loading = [accent]Memuat...
|
text.loadimage=Buka Gambar
|
||||||
text.wave = [orange]Gelombang {0}
|
text.saveimage=Simpan Gambar
|
||||||
text.wave.waiting = Gelombang dimulai {0}
|
text.editor.badsize=[orange]Dimensi gambar tidak valid![]\nDimensi peta yang valid: {0}
|
||||||
text.waiting = Menunggu...
|
text.editor.errorimageload=Kesalahan saat memuat file gambar:\n[orange]{0}
|
||||||
text.enemies = {0} musuh
|
text.editor.errorimagesave=Kesalahan saat menyimpan file gambar:\n[orange]{0}
|
||||||
text.enemies.single = {0} Musuh
|
text.editor.generate=Hasilkan
|
||||||
text.loadimage = Buka Gambar
|
text.editor.resize=Ubah ukuran
|
||||||
text.saveimage = Simpan Gambar
|
text.editor.loadmap=Buka Peta
|
||||||
text.oregen = Generator Bijih
|
text.editor.savemap=Simpan Peta
|
||||||
text.editor.badsize = [orange]Dimensi gambar tidak valid![]\nDimensi peta yang valid: {0}
|
text.editor.loadimage=Buka Gambar
|
||||||
text.editor.errorimageload = Kesalahan saat memuat file gambar:\n[orange]{0}
|
text.editor.saveimage=Simpan Gambar
|
||||||
text.editor.errorimagesave = Kesalahan saat menyimpan file gambar:\n[orange]{0}
|
text.editor.unsaved=[scarlet]Anda memiliki perubahan yang belum disimpan![]\nYakin ingin keluar?
|
||||||
text.editor.generate = Hasilkan
|
text.editor.resizemap=Ubah ukuran peta
|
||||||
text.editor.resize = Ubah ukuran
|
text.editor.mapname=Nama Peta:
|
||||||
text.editor.loadmap = Buka Peta
|
text.editor.overwrite=[accent]Peringatan!\nIni akan mengganti peta yang ada.
|
||||||
text.editor.savemap = Simpan Peta
|
text.editor.selectmap=Pilih peta yang akan dimuat:
|
||||||
text.editor.loadimage = Buka Gambar
|
text.width=Lebar:
|
||||||
text.editor.saveimage = Simpan Gambar
|
text.height=Tinggi:
|
||||||
text.editor.unsaved = [scarlet]Anda memiliki perubahan yang belum disimpan![]\nYakin ingin keluar?
|
text.menu=Menu
|
||||||
text.editor.brushsize = Ukuran sikat: {0}
|
text.play=Main
|
||||||
text.editor.noplayerspawn = Peta ini tidak memiliki spawnpoint pemain!
|
text.load=Buka
|
||||||
text.editor.manyplayerspawns = Peta tidak bisa memiliki lebih dari satu\nspawnpoint pemain!
|
text.save=Simpan
|
||||||
text.editor.manyenemyspawns = Tidak dapat memiliki lebih dari\n{0} spawnpoint musuh!
|
text.language.restart=Silakan mulai ulang permainan Anda agar pengaturan bahasa mulai berlaku.
|
||||||
text.editor.resizemap = Ubah ukuran peta
|
text.settings.language=Bahasa
|
||||||
text.editor.resizebig = [scarlet]Peringatan!\n[]Peta yang lebih besar dari 256 unit mungkin nge-lag dan tidak stabil.
|
text.settings=Pengaturan
|
||||||
text.editor.mapname = Nama Peta:
|
text.tutorial=Tutorial
|
||||||
text.editor.overwrite = [accent]Peringatan!\nIni akan mengganti peta yang ada.
|
text.editor=Pengedit
|
||||||
text.editor.failoverwrite = [crimson]Tidak dapat mengganti peta default!
|
text.mapeditor=Pengedit Peta
|
||||||
text.editor.selectmap = Pilih peta yang akan dimuat:
|
text.donate=Sumbangkan
|
||||||
text.width = Lebar:
|
text.settings.reset=Atur ulang ke Default
|
||||||
text.height = Tinggi:
|
text.settings.controls=Kontrol
|
||||||
text.randomize = Acak
|
text.settings.game=Permainan
|
||||||
text.apply = Terapkan
|
text.settings.sound=Suara
|
||||||
text.update = Perbarui
|
text.settings.graphics=Grafis
|
||||||
text.menu = Menu
|
text.upgrades=Perbaruan
|
||||||
text.play = Main
|
text.purchased=[LIME]Dibuat!
|
||||||
text.load = Buka
|
text.weapons=Senjata
|
||||||
text.save = Simpan
|
text.paused=Jeda
|
||||||
text.language.restart = Silakan mulai ulang permainan Anda agar pengaturan bahasa mulai berlaku.
|
text.info.title=[accent]Info
|
||||||
text.settings.language = Bahasa
|
text.error.title=[crimson]Telah terjadi kesalahan
|
||||||
text.settings = Pengaturan
|
text.error.crashtitle=Telah terjadi kesalahan
|
||||||
text.tutorial = Tutorial
|
text.blocks.blockinfo=Info Blok
|
||||||
text.editor = Pengedit
|
text.blocks.powercapacity=Kapasitas Tenaga
|
||||||
text.mapeditor = Pengedit Peta
|
text.blocks.powershot=Tenaga/tembakan
|
||||||
text.donate = Sumbangkan
|
text.blocks.size=Ukuran
|
||||||
text.settings.reset = Atur ulang ke Default
|
text.blocks.liquidcapacity=Kapasitas cairan
|
||||||
text.settings.controls = Kontrol
|
text.blocks.maxitemssecond=Batas barang/detik
|
||||||
text.settings.game = Permainan
|
text.blocks.powerrange=Jangkauan tenaga
|
||||||
text.settings.sound = Suara
|
text.blocks.itemcapacity=Kapasitas Barang
|
||||||
text.settings.graphics = Grafis
|
text.blocks.inputliquid=Cairan yang Masuk
|
||||||
text.upgrades = Perbaruan
|
text.blocks.inputitem=Barang yang Masuk
|
||||||
text.purchased = [LIME]Dibuat!
|
text.blocks.explosive=Mudah meledak!
|
||||||
text.weapons = Senjata
|
text.blocks.health=Darah
|
||||||
text.paused = Jeda
|
text.blocks.inaccuracy=Ketidaktelitian
|
||||||
text.respawn = Respawning dalam
|
text.blocks.shots=Tembakan
|
||||||
text.info.title = [accent]Info
|
text.blocks.inputcapacity=Kapasitas masuk
|
||||||
text.error.title = [crimson]Telah terjadi kesalahan
|
text.blocks.outputcapacity=Kapasitas keluar
|
||||||
text.error.crashmessage = [SCARLET]Kesalahan tak terduga telah terjadi, yang menyebabkan kerusakan.\n[]Tolong laporkan keadaan yang tepat dimana kesalahan ini terjadi pada pengembang:\n[ORANGE] anukendev@gmail.com[]
|
setting.difficulty.easy=mudah
|
||||||
text.error.crashtitle = Telah terjadi kesalahan
|
setting.difficulty.normal=normal
|
||||||
text.mode.break = Mode penghancur: {0}
|
setting.difficulty.hard=sulit
|
||||||
text.mode.place = Mode penaruh: {0}
|
setting.difficulty.insane=sangat susah
|
||||||
placemode.hold.name = garis
|
setting.difficulty.purge=paling susah
|
||||||
placemode.areadelete.name = area
|
setting.difficulty.name=Kesulitan:
|
||||||
placemode.touchdelete.name = sentuh
|
setting.screenshake.name=Layar Bergoyang
|
||||||
placemode.holddelete.name = tahan
|
setting.indicators.name=Indikator Musuh
|
||||||
placemode.none.name = tidak ada
|
setting.effects.name=Efek Tampilan
|
||||||
placemode.touch.name = sentuh
|
setting.sensitivity.name=Sensitivitas Pengendali
|
||||||
placemode.cursor.name = kursor
|
setting.saveinterval.name=Waktu Simpan Otomatis
|
||||||
text.blocks.extrainfo = [accent]info tambahan blok:
|
setting.seconds={0} Detik
|
||||||
text.blocks.blockinfo = Info Blok
|
setting.fullscreen.name=Layar Penuh
|
||||||
text.blocks.powercapacity = Kapasitas Tenaga
|
setting.fps.name=Tunjukkan FPS
|
||||||
text.blocks.powershot = Tenaga/tembakan
|
setting.vsync.name=VSync
|
||||||
text.blocks.powersecond = Tenaga/detik
|
setting.lasers.name=Tampilkan Laser Tenaga
|
||||||
text.blocks.powerdraindamage = Tenaga Dipakai/damage
|
setting.healthbars.name=Tampilkan Bar Darah Entitas
|
||||||
text.blocks.shieldradius = Radius Perisai
|
setting.musicvol.name=Volume Musik
|
||||||
text.blocks.itemspeedsecond = Kecepatan Barang/detik
|
setting.mutemusic.name=Bisukan Musik
|
||||||
text.blocks.range = Jangkauan
|
setting.sfxvol.name=Volume Suara
|
||||||
text.blocks.size = Ukuran
|
setting.mutesound.name=Bisukan Suara
|
||||||
text.blocks.powerliquid = Tenaga/Cairan
|
map.maze.name=labirin
|
||||||
text.blocks.maxliquidsecond = Batas cairan/detik
|
map.fortress.name=benteng
|
||||||
text.blocks.liquidcapacity = Kapasitas cairan
|
map.sinkhole.name=lubang pembuangan
|
||||||
text.blocks.liquidsecond = Cairan/detik
|
map.caves.name=gua
|
||||||
text.blocks.damageshot = Damage/tembakan
|
map.volcano.name=gunung berapi
|
||||||
text.blocks.ammocapacity = Kapasitas Amunisi
|
map.caldera.name=kaldera
|
||||||
text.blocks.ammo = Amunisi
|
map.scorch.name=penghangusan
|
||||||
text.blocks.ammoitem = Amunisi/barang
|
map.desert.name=gurun
|
||||||
text.blocks.maxitemssecond = Batas barang/detik
|
map.island.name=pulau
|
||||||
text.blocks.powerrange = Jangkauan tenaga
|
map.grassland.name=padang rumput
|
||||||
text.blocks.lasertilerange = Kotak jangkauan laser
|
map.tundra.name=tundra
|
||||||
text.blocks.capacity = Kapasitas
|
map.spiral.name=spiral
|
||||||
text.blocks.itemcapacity = Kapasitas Barang
|
map.tutorial.name=tutorial
|
||||||
text.blocks.maxpowergenerationsecond = Batas Penghasil Tenaga/detik
|
keybind.move_x.name=gerak_x
|
||||||
text.blocks.powergenerationsecond = Penghasil Tenaga/detik
|
keybind.move_y.name=gerak_y
|
||||||
text.blocks.generationsecondsitem = Waktu Penghasil (detik)/barang
|
keybind.select.name=pilih
|
||||||
text.blocks.input = Masukan
|
keybind.break.name=hapus
|
||||||
text.blocks.inputliquid = Cairan yang Masuk
|
keybind.shoot.name=tembak
|
||||||
text.blocks.inputitem = Barang yang Masuk
|
keybind.zoom_hold.name=perbesar_tahan
|
||||||
text.blocks.output = Keluar
|
keybind.zoom.name=perbesar
|
||||||
text.blocks.secondsitem = Detik/barang
|
keybind.menu.name=menu
|
||||||
text.blocks.maxpowertransfersecond = Batas transfer tenaga/detik
|
keybind.pause.name=jeda
|
||||||
text.blocks.explosive = Mudah meledak!
|
keybind.dash.name=berlari
|
||||||
text.blocks.repairssecond = Perbaikan/detik
|
keybind.rotate_alt.name=putar_alt
|
||||||
text.blocks.health = Darah
|
keybind.rotate.name=putar
|
||||||
text.blocks.inaccuracy = Ketidaktelitian
|
mode.waves.name=gelombang
|
||||||
text.blocks.shots = Tembakan
|
mode.sandbox.name=sandbox
|
||||||
text.blocks.shotssecond = Tembakan/detik
|
mode.freebuild.name=freebuild
|
||||||
text.blocks.fuel = Bahan Bakar
|
item.stone.name=batu
|
||||||
text.blocks.fuelduration = Durasi Bahan Bakar
|
item.coal.name=batu bara
|
||||||
text.blocks.maxoutputsecond = Batas keluar/detik
|
item.titanium.name=titanium
|
||||||
text.blocks.inputcapacity = Kapasitas masuk
|
item.thorium.name=thorium
|
||||||
text.blocks.outputcapacity = Kapasitas keluar
|
item.sand.name=pasir
|
||||||
text.blocks.poweritem = Tenaga/barang
|
liquid.water.name=air
|
||||||
text.placemode = Mode Penempatan
|
liquid.lava.name=lahar
|
||||||
text.breakmode = Mode Penghancur
|
liquid.oil.name=minyak
|
||||||
text.health = darah
|
block.door.name=pintu
|
||||||
setting.difficulty.easy = mudah
|
block.door-large.name=pintu besar
|
||||||
setting.difficulty.normal = normal
|
block.conduit.name=saluran
|
||||||
setting.difficulty.hard = sulit
|
block.pulseconduit.name=saluran cepat
|
||||||
setting.difficulty.insane = sangat susah
|
block.liquidrouter.name=router cairan
|
||||||
setting.difficulty.purge = paling susah
|
block.conveyor.name=konveyor
|
||||||
setting.difficulty.name = Kesulitan:
|
block.router.name=router
|
||||||
setting.screenshake.name = Layar Bergoyang
|
block.junction.name=persimpangan jalan
|
||||||
setting.smoothcam.name = Kamera Halus
|
block.liquidjunction.name=persimpangan cairan
|
||||||
setting.indicators.name = Indikator Musuh
|
block.sorter.name=penyortir
|
||||||
setting.effects.name = Efek Tampilan
|
block.smelter.name=peleburan
|
||||||
setting.sensitivity.name = Sensitivitas Pengendali
|
text.credits=Credits
|
||||||
setting.saveinterval.name = Waktu Simpan Otomatis
|
text.link.discord.description=the official Mindustry discord chatroom
|
||||||
setting.seconds = {0} Detik
|
text.link.github.description=Game source code
|
||||||
setting.fullscreen.name = Layar Penuh
|
text.link.dev-builds.description=Unstable development builds
|
||||||
setting.fps.name = Tunjukkan FPS
|
text.link.trello.description=Official trello board for planned features
|
||||||
setting.vsync.name = VSync
|
text.link.itch.io.description=itch.io page with PC downloads and web version
|
||||||
setting.lasers.name = Tampilkan Laser Tenaga
|
text.link.google-play.description=Google Play store listing
|
||||||
setting.healthbars.name = Tampilkan Bar Darah Entitas
|
text.link.wiki.description=official Mindustry wiki
|
||||||
setting.pixelate.name = Layar Pixel
|
text.linkfail=Failed to open link!\nThe URL has been copied to your cliboard.
|
||||||
setting.musicvol.name = Volume Musik
|
text.editor.web=The web version does not support the editor!\nDownload the game to use it.
|
||||||
setting.mutemusic.name = Bisukan Musik
|
text.web.unsupported=The web version does not support this feature! Download the game to use it.
|
||||||
setting.sfxvol.name = Volume Suara
|
text.multiplayer.web=This version of the game does not support multiplayer!\nTo play multiplayer from your browser, use the "multiplayer web version" link at the itch.io page.
|
||||||
setting.mutesound.name = Bisukan Suara
|
text.host.web=The web version does not support hosting games! Download the game to use this feature.
|
||||||
map.maze.name = labirin
|
text.map.delete=Are you sure you want to delete the map "[orange]{0}[]"?
|
||||||
map.fortress.name = benteng
|
text.construction.title=Block Construction Guide
|
||||||
map.sinkhole.name = lubang pembuangan
|
text.construction=You've just selected [accent]block construction mode[].\n\nTo begin placing, simply tap a valid location near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Shift the selection[] by holding and dragging any block in the selection.\n- [accent]Place blocks in a line[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel construction or selection[] by pressing the X at the bottom left.
|
||||||
map.caves.name = gua
|
text.deconstruction.title=Block Deconstruction Guide
|
||||||
map.volcano.name = gunung berapi
|
text.deconstruction=You've just selected [accent]block deconstruction mode[].\n\nTo begin breaking, simply tap a block near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin de-constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Remove blocks in an area[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel deconstruction or selection[] by pressing the X at the bottom left.
|
||||||
map.caldera.name = kaldera
|
text.showagain=Don't show again next session
|
||||||
map.scorch.name = penghangusan
|
text.unlocks=Unlocks
|
||||||
map.desert.name = gurun
|
text.addplayers=Add/Remove Players
|
||||||
map.island.name = pulau
|
text.newgame=New Game
|
||||||
map.grassland.name = padang rumput
|
text.maps=Maps
|
||||||
map.tundra.name = tundra
|
text.maps.none=[LIGHT_GRAY]No maps found!
|
||||||
map.spiral.name = spiral
|
text.unlocked=New Block Unlocked!
|
||||||
map.tutorial.name = tutorial
|
text.unlocked.plural=New Blocks Unlocked!
|
||||||
tutorial.intro.text = [yellow]Selamat datang di tutorial.[] Untuk memulai, tekan 'berikutnya'.
|
text.server.kicked.fastShoot=You are shooting too quickly.
|
||||||
tutorial.moveDesktop.text = Untuk bergerak, gunakan tombol [orange][[WASD][]. Tahan tombol [orange]shift[] untuk mempercepat. Tahan [orange]CTRL[] saat menggunakan [orange]scrollwheel[] untuk memperbesar atau memperkecil tampilan.
|
text.server.kicked.banned=You are banned on this server.
|
||||||
tutorial.shoot.text = Gunakan mouse anda untuk mengarahkan, tahan [orange]tombol kiri mouse[] untuk menembak. Cobalah menembaki [yellow]target[].
|
text.server.kicked.recentKick=You have been kicked recently.\nWait before connecting again.
|
||||||
tutorial.moveAndroid.text = Untuk menggeser tampilan, seret satu jari ke layar. Jepit dan seret untuk memperbesar atau memperkecil tampilan.
|
text.server.kicked.nameInUse=There is someone with that name\nalready on this server.
|
||||||
tutorial.placeSelect.text = Coba pilih [yellow]konveyor[] dari menu blok di kanan bawah.
|
text.server.kicked.nameEmpty=Your name must contain at least one character or number.
|
||||||
tutorial.placeConveyorDesktop.text = Gunakan [orange][[scrollwheel][] untuk memutar konveyor menghadap [orange]ke depan[], lalu letakkan di [yellow]lokasi yang ditandai[] menggunakan [orange][[tombol kiri mouse]][].
|
text.server.kicked.idInUse=You are already on this server! Connecting with two accounts is not permitted.
|
||||||
tutorial.placeConveyorAndroid.text = Gunakan [orange][[tombol putar]][] untuk memutar konveyor menghadap [orange]ke depan[], seret ke posisi dengan satu jari, lalu letakkan di [yellow]lokasi yang ditandai[] dengan menggunakan [orange][[tanda centang][].
|
text.server.kicked.customClient=This server does not support custom builds. Download an official version.
|
||||||
tutorial.placeConveyorAndroidInfo.text = Sebagai alternatif, Anda dapat menekan ikon crosshair di kiri bawah untuk beralih ke [orange][[mode sentuh]][], dan letakkan blok dengan mengetuk layar. Dalam mode sentuh, blok bisa diputar dengan panah di kiri bawah. Tekan [yellow]berikutnya[] untuk mencobanya.
|
text.host.info=The [accent]host[] button hosts a server on ports [scarlet]6567[] and [scarlet]6568.[]\nAnybody on the same [LIGHT_GRAY]wifi or local network[] should be able to see your server in their server list.\n\nIf you want people to be able to connect from anywhere by IP, [accent]port forwarding[] is required.\n\n[LIGHT_GRAY]Note: If someone is experiencing trouble connecting to your LAN game, make sure you have allowed Mindustry access to your local network in your firewall settings.
|
||||||
tutorial.placeDrill.text = Sekarang, pilih dan tempatkan [yellow]pertambangan battu[] di lokasi yang ditandai.
|
text.join.info=Here, you can enter a [accent]server IP[] to connect to, or discover [accent]local network[] servers to connect to.\nBoth LAN and WAN multiplayer is supported.\n\n[LIGHT_GRAY]Note: There is no automatic global server list; if you want to connect to someone by IP, you would need to ask the host for their IP.
|
||||||
tutorial.blockInfo.text = Jika Anda ingin mempelajari lebih lanjut tentang blok, Anda dapat menekan [orange]tanda tanya[] di bagian kanan atas untuk membaca deskripsinya.
|
text.trace=Trace Player
|
||||||
tutorial.deselectDesktop.text = Anda bisa membatalkan pemilihan blok menggunakan [orange][[tombol mouse kanan][].
|
text.trace.playername=Player name: [accent]{0}
|
||||||
tutorial.deselectAndroid.text = Anda dapat membatalkan pemilihan blok dengan menekan tombol [orange]X (silang)[].
|
text.trace.ip=IP: [accent]{0}
|
||||||
tutorial.drillPlaced.text = Pertambangannya sekarang akan menghasilkan [yellow]batu[] yang dikeluarkan ke konveyor, lalu memindahkannya ke [yellow]intinya[].
|
text.trace.id=Unique ID: [accent]{0}
|
||||||
tutorial.drillInfo.text = Bijih yang berbeda membutuhkan pertambangan yang berbeda. Batu membutuhkan pertambangan batu, besi membutuhkan pertambangan besi, dll.
|
text.trace.android=Android Client: [accent]{0}
|
||||||
tutorial.drillPlaced2.text = Memindahkan barang ke dalam inti menempatkannya di [yellow]inventaris barang[] Anda, di kiri atas. Menempatkan blok menggunakan barang dari inventaris Anda.
|
text.trace.modclient=Custom Client: [accent]{0}
|
||||||
tutorial.moreDrills.text = Anda bisa menghubungkan banyak pertambangan dan konveyor bersama-sama, seperti biasa.
|
text.trace.totalblocksbroken=Total blocks broken: [accent]{0}
|
||||||
tutorial.deleteBlock.text = Anda dapat menghapus blok dengan mengeklik [orange]tombol mouse kanan[] di blok yang ingin Anda hapus. Coba hapus konveyor ini.
|
text.trace.structureblocksbroken=Structure blocks broken: [accent]{0}
|
||||||
tutorial.deleteBlockAndroid.text = Anda dapat menghapus blok dengan [orange]memilih crosshair[] di [orange]menu mode penghancur[] di kiri bawah dan mengetuk bloknya. Coba hapus konveyor ini.
|
text.trace.lastblockbroken=Last block broken: [accent]{0}
|
||||||
tutorial.placeTurret.text = Sekarang, pilih dan tempatkan [yellow]turret[] di [yellow]lokasi yang ditandai[].
|
text.trace.totalblocksplaced=Total blocks placed: [accent]{0}
|
||||||
tutorial.placedTurretAmmo.text = Turret ini sekarang akan menerima [yellow]amunisi[] dari konveyor. Anda dapat melihat berapa banyak amunisi yang dimiliki dengan menggeser kursor di bloknya dan memeriksa di [green]bilah hijau[].
|
text.trace.lastblockplaced=Last block placed: [accent]{0}
|
||||||
tutorial.turretExplanation.text = Turret secara otomatis akan menembak musuh terdekat dalam jangkauan, selama mereka memiliki cukup amunisi.
|
text.invalidid=Invalid client ID! Submit a bug report.
|
||||||
tutorial.waves.text = Setiap [yellow]60[] detik, gelombang [coral]musuh[] akan muncul di lokasi tertentu dan berusaha menghancurkan intinya.
|
text.server.bans=Bans
|
||||||
tutorial.coreDestruction.text = Tujuan Anda adalah untuk [yellow]mempertahankan intinya[]. Jika intinya hancur, Anda [coral]kalah dalam permainan[].
|
text.server.bans.none=No banned players found!
|
||||||
tutorial.pausingDesktop.text = Jika Anda perlu istirahat sebentar, tekan [orange]tombol jeda[] di bagian kiri atas atau [orange]tombol spasi[] untuk menghentikan sementara permainan. Anda masih bisa memilih dan menempatkan blok sambil berhenti, tapi tidak bisa bergerak atau menembak.
|
text.server.admins=Admins
|
||||||
tutorial.pausingAndroid.text = Jika Anda perlu istirahat sebentar, tekan [orange]tombol jeda[] di kiri atas untuk menjeda permainan. Anda masih bisa menghapus dan menempatkan blok sambil berhenti sebentar.
|
text.server.admins.none=No admins found!
|
||||||
tutorial.purchaseWeapons.text = Anda bisa membeli [yellow]senjata baru[] untuk robot Anda dengan membuka menu upgrade di kiri bawah.
|
text.server.outdated=[crimson]Outdated Server![]
|
||||||
tutorial.switchWeapons.text = Untuk mengganti senjata, klik ikonnya di kiri bawah, atau gunakan angka [orange][[1-9][].
|
text.server.outdated.client=[crimson]Outdated Client![]
|
||||||
tutorial.spawnWave.text = Gelombang sekarang datang. Hancurkan mereka.
|
text.server.version=[lightgray]Version: {0}
|
||||||
tutorial.pumpDesc.text = Pada gelombang selanjutnya, Anda mungkin perlu menggunakan [yellow]pompa[] untuk mendistribusikan cairan untuk generator atau ekstraktor.
|
text.server.custombuild=[yellow]Custom Build
|
||||||
tutorial.pumpPlace.text = Pompa bekerja seperti dengan pertambangan, namun mereka menghasilkan cairan dan bukan barang. Cobalah menempatkan pompa pada [yellow]minyak yang ditunjuk[].
|
text.confirmban=Are you sure you want to ban this player?
|
||||||
tutorial.conduitUse.text = Sekarang tempatkan [orange]saluran[] yang mengarah jauh dari pompa.
|
text.confirmunban=Are you sure you want to unban this player?
|
||||||
tutorial.conduitUse2.text = Dan beberapa lagi...
|
text.confirmadmin=Are you sure you want to make this player an admin?
|
||||||
tutorial.conduitUse3.text = Dan beberapa lagi...
|
text.confirmunadmin=Are you sure you want to remove admin status from this player?
|
||||||
tutorial.generator.text = Sekarang, tempatkan [orange]blok generator pembakaran[] di ujung saluran.
|
text.disconnect.data=Failed to load world data!
|
||||||
tutorial.generatorExplain.text = Generator ini sekarang akan menciptakan [yellow]tenaga[] dari minyak.
|
text.save.difficulty=Difficulty: {0}
|
||||||
tutorial.lasers.text = Tenaga didistribusikan menggunakan [yellow]laser tenaga[]. Putar dan tempatkan di sini.
|
text.copylink=Copy Link
|
||||||
tutorial.laserExplain.text = Generator sekarang akan memindahkan tenaga ke blok laser. Sinar [yellow]terang[] menandakan bahwa saat ini mentransmisikan tenaga, dan sinar [yellow]transparan[] berarti tidak.
|
text.changelog.title=Changelog
|
||||||
tutorial.laserMore.text = Anda dapat memeriksa berapa banyak tenaga yang dimiliki blok dengan memindahkan kursor/mengetuk di atasnya dan memeriksa [yellow]bar kuning[] di bagian atas.
|
text.changelog.loading=Getting changelog...
|
||||||
tutorial.healingTurret.text = Laser ini bisa digunakan untuk menyalakan [lime]turret perbaikan[]. Tempatkan satu di sini.
|
text.changelog.error.android=[orange]Note that the changelog sometimes does not work on Android 4.4 and below!\nThis is due to an internal Android bug.
|
||||||
tutorial.healingTurretExplain.text = Selama memiliki tenaga, turret ini akan [lime]memperbaiki blok terdekat[]. Saat bermain, pastikan Anda memasukkannya ke markas Anda secepat mungkin!
|
text.changelog.error.ios=[orange]The changelog is currently not supported in iOS.
|
||||||
tutorial.smeltery.text = Banyak blok yang membutuhkan [orange]baja[] agar dapat dibangun, yang membutuhkan [orange]peleburan[] untuk dibuat. Tempatkan satu di sini.
|
text.changelog.error=[scarlet]Error getting changelog!\nCheck your internet connection.
|
||||||
tutorial.smelterySetup.text = Peleburan ini sekarang akan menghasilkan [orange]baja[] dari besi yang masuk, dengan batubara sebagai bahan bakarnya.
|
text.changelog.current=[yellow][[Current version]
|
||||||
tutorial.tunnelExplain.text = Perhatikan juga bahwa barang-barang itu masuk melalui [orange]blok terowongan[] dan muncul di sisi lain, melewati blok batu. Perlu diingat bahwa terowongan hanya bisa melalui sampai 2 blok.
|
text.changelog.latest=[orange][[Latest version]
|
||||||
tutorial.end.text = Dan itu menyimpulkan tutorialnya! Semoga berhasil!
|
text.saving=[accent]Saving...
|
||||||
keybind.move_x.name = gerak_x
|
text.unknown=Unknown
|
||||||
keybind.move_y.name = gerak_y
|
text.custom=Custom
|
||||||
keybind.select.name = pilih
|
text.builtin=Built-In
|
||||||
keybind.break.name = hapus
|
text.map.delete.confirm=Are you sure you want to delete this map? This action cannot be undone!
|
||||||
keybind.shoot.name = tembak
|
text.map.random=[accent]Random Map
|
||||||
keybind.zoom_hold.name = perbesar_tahan
|
text.map.nospawn=This map does not have any cores for the player to spawn in! Add a [ROYAL]blue[] core to this map in the editor.
|
||||||
keybind.zoom.name = perbesar
|
text.editor.slope=\\
|
||||||
keybind.menu.name = menu
|
text.editor.openin=Open In Editor
|
||||||
keybind.pause.name = jeda
|
text.editor.oregen=Ore Generation
|
||||||
keybind.dash.name = berlari
|
text.editor.oregen.info=Ore Generation:
|
||||||
keybind.rotate_alt.name = putar_alt
|
text.editor.mapinfo=Map Info
|
||||||
keybind.rotate.name = putar
|
text.editor.author=Author:
|
||||||
keybind.weapon_1.name = senjata_1
|
text.editor.description=Description:
|
||||||
keybind.weapon_2.name = senjata_2
|
text.editor.name=Name:
|
||||||
keybind.weapon_3.name = senjata_3
|
text.editor.teams=Teams
|
||||||
keybind.weapon_4.name = senjata_4
|
text.editor.elevation=Elevation
|
||||||
keybind.weapon_5.name = senjata_5
|
text.editor.saved=Saved!
|
||||||
keybind.weapon_6.name = senjata_6
|
text.editor.save.noname=Your map does not have a name! Set one in the 'map info' menu.
|
||||||
mode.waves.name = gelombang
|
text.editor.save.overwrite=Your map overwrites a built-in map! Pick a different name in the 'map info' menu.
|
||||||
mode.sandbox.name = sandbox
|
text.editor.import.exists=[scarlet]Unable to import:[] a built-in map named '{0}' already exists!
|
||||||
mode.freebuild.name = freebuild
|
text.editor.import=Import...
|
||||||
upgrade.standard.name = standar
|
text.editor.importmap=Import Map
|
||||||
upgrade.standard.description = Robot standar.
|
text.editor.importmap.description=Import an already existing map
|
||||||
upgrade.blaster.name = blaster
|
text.editor.importfile=Import File
|
||||||
upgrade.blaster.description = Menembakan sebuah peluru yang lemah dan lambat.
|
text.editor.importfile.description=Import an external map file
|
||||||
upgrade.triblaster.name = triblaster
|
text.editor.importimage=Import Terrain Image
|
||||||
upgrade.triblaster.description = Menembakan 3 peluru secara menyebar.
|
text.editor.importimage.description=Import an external map image file
|
||||||
upgrade.clustergun.name = clustergun
|
text.editor.export=Export...
|
||||||
upgrade.clustergun.description = Menembakan sebuah granat eksplosif yang tidak akurat.
|
text.editor.exportfile=Export File
|
||||||
upgrade.beam.name = meriam sinar
|
text.editor.exportfile.description=Export a map file
|
||||||
upgrade.beam.description = Menembakan sinar laser jarak jauh.
|
text.editor.exportimage=Export Terrain Image
|
||||||
upgrade.vulcan.name = vulcan
|
text.editor.exportimage.description=Export a map image file
|
||||||
upgrade.vulcan.description = Menembakkan rombongan peluru dengan cepat.
|
text.editor.overwrite.confirm=[scarlet]Warning![] A map with this name already exists. Are you sure you want to overwrite it?
|
||||||
upgrade.shockgun.name = shockgun
|
text.fps=FPS: {0}
|
||||||
upgrade.shockgun.description = Menembakkan ledakan yang menghancurkan dari pecahan peluru yang terisi.
|
text.tps=TPS: {0}
|
||||||
item.stone.name = batu
|
text.ping=Ping: {0}ms
|
||||||
item.iron.name = besi
|
text.settings.rebind=Rebind
|
||||||
item.coal.name = batu bara
|
text.yes=Yes
|
||||||
item.steel.name = baja
|
text.no=No
|
||||||
item.titanium.name = titanium
|
text.blocks.targetsair=Targets Air
|
||||||
item.dirium.name = dirium
|
text.blocks.itemspeed=Units Moved
|
||||||
item.thorium.name = thorium
|
text.blocks.shootrange=Range
|
||||||
item.sand.name = pasir
|
text.blocks.poweruse=Power Use
|
||||||
liquid.water.name = air
|
text.blocks.inputitemcapacity=Input Item Capacity
|
||||||
liquid.plasma.name = plasma
|
text.blocks.outputitemcapacity=Input Item Capacity
|
||||||
liquid.lava.name = lahar
|
text.blocks.maxpowergeneration=Max Power Generation
|
||||||
liquid.oil.name = minyak
|
text.blocks.powertransferspeed=Power Transfer
|
||||||
block.weaponfactory.name = pabrik senjata
|
text.blocks.craftspeed=Production Speed
|
||||||
block.weaponfactory.fulldescription = Dipakai untuk membuat senjata bagi robot pemain. Klik untuk memakai. Otomatis mengambil sumber daya dari inti.
|
text.blocks.inputliquidaux=Aux Liquid
|
||||||
block.air.name = udara
|
text.blocks.inputitems=Input Items
|
||||||
block.blockpart.name = bagian blok
|
text.blocks.outputitem=Output Item
|
||||||
block.deepwater.name = air dangkal
|
text.blocks.drilltier=Drillables
|
||||||
block.water.name = air
|
text.blocks.drillspeed=Base Drill Speed
|
||||||
block.lava.name = lahar
|
text.blocks.liquidoutput=Liquid Output
|
||||||
block.oil.name = minyak
|
text.blocks.liquiduse=Liquid Use
|
||||||
block.stone.name = batu
|
text.blocks.coolant=Coolant
|
||||||
block.blackstone.name = batu hitam
|
text.blocks.coolantuse=Coolant Use
|
||||||
block.iron.name = besi
|
text.blocks.inputliquidfuel=Fuel Liquid
|
||||||
block.coal.name = batu bara
|
text.blocks.liquidfueluse=Liquid Fuel Use
|
||||||
block.titanium.name = titanium
|
text.blocks.reload=Reload
|
||||||
block.thorium.name = thorium
|
text.blocks.inputfuel=Fuel
|
||||||
block.dirt.name = tanah
|
text.blocks.fuelburntime=Fuel Burn Time
|
||||||
block.sand.name = pasir
|
text.unit.blocks=blocks
|
||||||
block.ice.name = es
|
text.unit.powersecond=power units/second
|
||||||
block.snow.name = salju
|
text.unit.liquidsecond=liquid units/second
|
||||||
block.grass.name = rumput
|
text.unit.itemssecond=items/second
|
||||||
block.sandblock.name = blok pasir
|
text.unit.pixelssecond=pixels/second
|
||||||
block.snowblock.name = blok salju
|
text.unit.liquidunits=liquid units
|
||||||
block.stoneblock.name = blok batu
|
text.unit.powerunits=power units
|
||||||
block.blackstoneblock.name = blok batu hitam
|
text.unit.degrees=degrees
|
||||||
block.grassblock.name = blok rumput
|
text.unit.seconds=seconds
|
||||||
block.mossblock.name = blok lumut
|
text.unit.none=
|
||||||
block.shrub.name = belukar
|
text.unit.items=items
|
||||||
block.rock.name = batu
|
text.category.general=General
|
||||||
block.icerock.name = batu es
|
text.category.power=Power
|
||||||
block.blackrock.name = batu hitam
|
text.category.liquids=Liquids
|
||||||
block.dirtblock.name = blok tanah
|
text.category.items=Items
|
||||||
block.stonewall.name = dinding batu
|
text.category.crafting=Crafting
|
||||||
block.stonewall.fulldescription = Sebuah blok defensif yang murah. Berguna untuk melindungi inti dan turret di beberapa gelombang pertama.
|
text.category.shooting=Shooting
|
||||||
block.ironwall.name = dinding besi
|
setting.multithread.name=Multithreading
|
||||||
block.ironwall.fulldescription = Blok defensif dasar. Menyediakan perlindungan dari musuh.
|
setting.minimap.name=Show Minimap
|
||||||
block.steelwall.name = dinding baja
|
text.keybind.title=Rebind Keys
|
||||||
block.steelwall.fulldescription = Sebuah blok defensif standar. Perlindungan yang memadai dari musuh.
|
keybind.block_info.name=block_info
|
||||||
block.titaniumwall.name = dinding titanium
|
keybind.chat.name=chat
|
||||||
block.titaniumwall.fulldescription = Blok pertahanan yang kuat. Menyediakan perlindungan dari musuh.
|
keybind.player_list.name=player_list
|
||||||
block.duriumwall.name = dinding dirium
|
keybind.console.name=console
|
||||||
block.duriumwall.fulldescription = Blok pertahanan yang sangat kuat. Menyediakan perlindungan dari musuh.
|
mode.text.help.title=Description of modes
|
||||||
block.compositewall.name = dinding komposit
|
mode.waves.description=the normal mode. limited resources and automatic incoming waves.
|
||||||
block.steelwall-large.name = dinding baja besar
|
mode.sandbox.description=infinite resources and no timer for waves.
|
||||||
block.steelwall-large.fulldescription = Sebuah blok defensif standar. Membentang beberapa ubin.
|
mode.freebuild.description=limited resources and no timer for waves.
|
||||||
block.titaniumwall-large.name = dinding titanium besar
|
content.item.name=Items
|
||||||
block.titaniumwall-large.fulldescription = Blok pertahanan yang kuat. Membentang beberapa ubin.
|
content.liquid.name=Liquids
|
||||||
block.duriumwall-large.name = dinding dirium yang besar
|
content.unit-type.name=Units
|
||||||
block.duriumwall-large.fulldescription = Blok pertahanan yang sangat kuat. Membentang beberapa ubin.
|
content.recipe.name=Blocks
|
||||||
block.titaniumshieldwall.name = dinding perisai
|
item.stone.description=A common raw material. Used for separating and refining into other materials, or melting into lava.
|
||||||
block.titaniumshieldwall.fulldescription = Sebuah blok defensif yang kuat, dengan tambahan perisai. Membutuhkan tenaga. Menggunakan energi untuk menyerap peluru musuh. Dianjurkan untuk menggunakan pemercepat tenaga untuk memberi energi pada blok ini.
|
item.tungsten.name=Tungsten
|
||||||
block.repairturret.name = turret perbaikan
|
item.tungsten.description=A common, but very useful structure material. Used in drills and heat-resistant blocks such as generators and smelteries.
|
||||||
block.repairturret.fulldescription = Memperbaiki blok terdekat yang rusak dengan lambat. Menggunakan sedikit tenaga.
|
item.lead.name=Lead
|
||||||
block.megarepairturret.name = perbaikan turret II
|
item.lead.description=A basic starter material. Used extensively in electronics and liquid transportation blocks.
|
||||||
block.megarepairturret.fulldescription = Memperbaiki blok yang rusak dengan normal. Menggunakan tenaga.
|
item.coal.description=A common and readily available fuel.
|
||||||
block.shieldgenerator.name = pembangkit perisai
|
item.carbide.name=Carbide
|
||||||
block.shieldgenerator.fulldescription = Blok defensif yang maju. Mellindungi semua blok dalam radius dari serangan. Menggunakan tenaga dengan lambat saat menganggur, namun menyalurkan energi dengan cepat pada kontak peluru.
|
item.carbide.description=A tough alloy made with tungsten and carbon. Used in advanced transportation blocks and high-tier drills.
|
||||||
block.door.name = pintu
|
item.titanium.description=A rare super-light metal used extensively in liquid transportation, drills and aircraft.
|
||||||
block.door.fulldescription = Blok yang bisa dibuka dan ditutup dengan mengetuknya.
|
item.thorium.description=A dense, radioactive metal used as structural support and nuclear fuel.
|
||||||
block.door-large.name = pintu besar
|
item.silicon.name=Silicon
|
||||||
block.door-large.fulldescription = Blok yang bisa dibuka dan ditutup dengan mengetuknya.
|
item.silcion.description=An extremely useful semiconductor, with applications in solar panels and many complex electronics.
|
||||||
block.conduit.name = saluran
|
item.plastanium.name=Plastanium
|
||||||
block.conduit.fulldescription = Blok pengangkut cairan dasar. Bekerja seperti konveyor, tapi dengan cairan. Terbaik digunakan dengan pompa atau saluran lainnya. Bisa digunakan sebagai jembatan di atas cairan untuk musuh dan pemain.
|
item.plastanium.description=A light, ductile material used in advanced aircraft and fragmentation ammunition.
|
||||||
block.pulseconduit.name = saluran cepat
|
item.phase-matter.name=Phase Matter
|
||||||
block.pulseconduit.fulldescription = Blok pengangkut cairan tingkat lanjut. Mengangkut cairan lebih cepat dan menyimpan lebih banyak dari pada saluran standar.
|
item.surge-alloy.name=Surge Alloy
|
||||||
block.liquidrouter.name = router cairan
|
item.biomatter.name=Biomatter
|
||||||
block.liquidrouter.fulldescription = Bekerja seperti router. Menerima masukan cairan dari satu sisi dan mengeluarkannya ke sisi yang lain. Berguna untuk pemisahan cairan dari satu saluran ke beberapa saluran lainnya.
|
item.biomatter.description=A clump of organic mush; used for conversion into oil or as a basic fuel.
|
||||||
block.conveyor.name = konveyor
|
item.sand.description=A common material that is used extensively in smelting, both in alloying and as a flux.
|
||||||
block.conveyor.fulldescription = Blok dasar pengangkut barang. Memindahkan barang ke depan dan secara otomatis menyimpannya ke turret, ekstraktor, dan pertambangan. Bisa diputar. Bisa digunakan sebagai jembatan di atas cairan untuk musuh dan pemain.
|
item.blast-compound.name=Blast Compound
|
||||||
block.steelconveyor.name = konveyor baja
|
item.blast-compound.description=A volatile compound used in bombs and explosives. While it can burned as fuel, this is not advised.
|
||||||
block.steelconveyor.fulldescription = Blok transportasi barang lanjutan. Memindahkan barang lebih cepat dari konveyor standar.
|
item.pyratite.name=Pyratite
|
||||||
block.poweredconveyor.name = konveyor cepat
|
item.pyratite.description=An extremely flammable substance used in incendiary weapons.
|
||||||
block.poweredconveyor.fulldescription = Blok terbaik untuk pengangkutan barang. Memindahkan barang lebih cepat dari konveyor baja.
|
liquid.cryofluid.name=Cryofluid
|
||||||
block.router.name = router
|
text.item.explosiveness=[LIGHT_GRAY]Explosiveness: {0}
|
||||||
block.router.fulldescription = Menerima item dari satu arah dan mengeluarkannya ke 3 arah. Bisa juga menyimpan sejumlah barang. Berguna untuk membelah bahan dari satu pertambangan ke beberapa turret.
|
text.item.flammability=[LIGHT_GRAY]Flammability: {0}
|
||||||
block.junction.name = persimpangan jalan
|
text.item.radioactivity=[LIGHT_GRAY]Radioactivity: {0}
|
||||||
block.junction.fulldescription = Bertindak sebagai jembatan untuk dua sabuk persimpangan. Berguna dalam situasi dengan dua konveyor berbeda yang membawa bahan berbeda ke lokasi yang berbeda.
|
text.item.fluxiness=[LIGHT_GRAY]Flux Power: {0}
|
||||||
block.conveyortunnel.name = terowongan konveyor
|
text.item.hardness=[LIGHT_GRAY]Hardness: {0}
|
||||||
block.conveyortunnel.fulldescription = Memindahkan barang di bawah blok. Untuk menggunakan, tempatkan satu terowongan yang menuju ke terowongan di bawah blok, dan satu di sisi lain. Pastikan kedua terowongan menghadap ke arah yang berlawanan, yaitu menuju blok yang mereka masukkan atau keluarkan.
|
text.liquid.heatcapacity=[LIGHT_GRAY]Heat Capacity: {0}
|
||||||
block.liquidjunction.name = persimpangan cairan
|
text.liquid.viscosity=[LIGHT_GRAY]Viscosity: {0}
|
||||||
block.liquidjunction.fulldescription = Bertindak sebagai jembatan untuk dua saluran persimpangan. Berguna dalam situasi dengan dua saluran berbeda yang membawa cairan berbeda ke lokasi yang berbeda.
|
text.liquid.temperature=[LIGHT_GRAY]Temperature: {0}
|
||||||
block.liquiditemjunction.name = persimpangan barang-cairan
|
block.tungsten-wall.name=Tungsten Wall
|
||||||
block.liquiditemjunction.fulldescription = Bertindak sebagai jembatan untuk menyilang saluran dan konveyor.
|
block.tungsten-wall-large.name=Large Tungsten Wall
|
||||||
block.powerbooster.name = pemercepat tenaga
|
block.carbide-wall.name=Carbide Wall
|
||||||
block.powerbooster.fulldescription = Mendistribusikan tenaga ke semua blok dalam radiusnya.
|
block.carbide-wall-large.name=Large Carbide Wall
|
||||||
block.powerlaser.name = laser tenaga
|
block.thorium-wall.name=Thorium Wall
|
||||||
block.powerlaser.fulldescription = Membuat laser yang mentransmisikan daya ke blok di depannya. Tidak menghasilkan tenaga itu sendiri. Terbaik digunakan dengan generator atau laser lainnya.
|
block.thorium-wall-large.name=Large Thorium Wall
|
||||||
block.powerlaserrouter.name = router laser
|
block.duo.name=Duo
|
||||||
block.powerlaserrouter.fulldescription = Laser yang mendistribusikan tenaga ke tiga arah sekaligus. Berguna dalam situasi di mana diperlukan tenaga ke beberapa blok dari satu generator.
|
block.scorch.name=Scorch
|
||||||
block.powerlasercorner.name = sudut laser
|
block.hail.name=Hail
|
||||||
block.powerlasercorner.fulldescription = Laser yang mendistribusikan tenaga ke dua arah sekaligus. Berguna dalam situasi di mana diperlukan tenaga ke beberapa blok dari satu generator, dan arah router kurang tepat.
|
block.lancer.name=Lancer
|
||||||
block.teleporter.name = teleporter
|
block.titanium-conveyor.name=Titanium Conveyor
|
||||||
block.teleporter.fulldescription = Blok transportasi barang lanjutan. Teleporter memasukkan barang ke teleporter lain dengan warna yang sama. Tidak ada apa-apa jika tidak ada teleporter dengan warna yang sama. Jika beberapa teleporter memiliki warna yang sama, teleporter dipilih secara acak. Menggunakan tenaga. Ketuk/klik untuk mengubah warna.
|
block.splitter.name=Splitter
|
||||||
block.sorter.name = penyortir
|
block.splitter.description=Outputs items into two opposite directions immediately after they are recieved.
|
||||||
block.sorter.fulldescription = Menyortir barang menurut jenis bahannya. Bahan yang diterima ditandai dengan warna di blok. Semua item yang sesuai dengan jenis bahan dilepaskan ke depan, segala sesuatu yang lain dikeluarkan ke kiri dan kanan.
|
block.router.description=Splits items into all 4 directions. Can store items as a buffer.
|
||||||
block.core.name = inti
|
block.distributor.name=Distributor
|
||||||
block.pump.name = pompa
|
block.distributor.description=A splitter that can split items into 8 directions.
|
||||||
block.pump.fulldescription = Memompa cairan dari sumber blok- biasanya air, lahar atau minyak. Mengeluarkan cairan ke saluran terdekat.
|
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.fluxpump.name = pompa flux
|
block.overflow-gate.name=Overflow Gate
|
||||||
block.fluxpump.fulldescription = Sebuah versi lanjutan dari pompa. Menyimpan lebih banyak cairan dan memompa cairan lebih cepat.
|
block.overflow-gate.description=A combination splitter and router that only outputs to the left and right if the front path is blocked.
|
||||||
block.smelter.name = peleburan
|
block.bridgeconveyor.name=Bridge Conveyor
|
||||||
block.smelter.fulldescription = Blok kerajinan esensial. Saat dimasukkan 1 besi dan 1 batu bara sebagai bahan bakar, akan mengeluarkan satu baja. Disarankan untuk memasukkan besi dan batu bara ke sabuk yang berbeda untuk mencegah penyumbatan.
|
block.bridgeconveyor.description=A conveyor that can go over other blocks, for up to two total blocks.
|
||||||
block.crucible.name = peleburan dirium
|
block.arc-smelter.name=Arc Smelter
|
||||||
block.crucible.fulldescription = Sebuah blok kerajinan yang maju. Saat dimasukkan 1 titanium, 1 baja dan 1 batu bara sebagai bahan bakar, mengeluarkan satu dirium. Disarankan untuk memasukkan batubara, baja dan titanium pada sabuk yang berbeda untuk mencegah penyumbatan.
|
block.silicon-smelter.name=Silicon Smelter
|
||||||
block.coalpurifier.name = ekstraktor batubara
|
block.phase-weaver.name=Phase Weaver
|
||||||
block.coalpurifier.fulldescription = Blok ekstraktor dasar. mengeluarkan batu bara saat dipasok dengan air dan batu dalam skala yang besar.
|
block.pulverizer.name=Pulverizer
|
||||||
block.titaniumpurifier.name = ekstraktor titanium
|
block.cryofluidmixer.name=Cryofluid Mixer
|
||||||
block.titaniumpurifier.fulldescription = Blok ekstraktor standar. mengeluarkan titanium bila dipasok dengan air dan besi dalam skala yang besar.
|
block.melter.name=Melter
|
||||||
block.oilrefinery.name = penyulingan minyak
|
block.incinerator.name=Incinerator
|
||||||
block.oilrefinery.fulldescription = Menyuling sejumlah minyak menjadi batubara. Berguna untuk memasok turret berbasis batubara saat penambangan batubara langka.
|
block.biomattercompressor.name=Biomatter Compressor
|
||||||
block.stoneformer.name = pembentuk batu
|
block.separator.name=Separator
|
||||||
block.stoneformer.fulldescription = Mengubah lahar ke dalam batu. Berguna untuk menghasilkan batu dalam jumlah besar untuk pemurni batu bara.
|
block.centrifuge.name=Centrifuge
|
||||||
block.lavasmelter.name = peleburan lava
|
block.power-node.name=Power Node
|
||||||
block.lavasmelter.fulldescription = Menggunakan lahar untuk mengubah besi menjadi baja. Sebuah alternatif untuk peleburan batubara. Berguna dalam situasi di mana pertambangan batubara langka.
|
block.power-node-large.name=Large Power Node
|
||||||
block.stonedrill.name = pertambangan batu
|
block.battery.name=Battery
|
||||||
block.stonedrill.fulldescription = Pertambangan penting. Saat diletakkan di atas ubin batu, akan menghasilkan batu pada kecepatan yang lambat tanpa batas waktu.
|
block.battery-large.name=Large Battery
|
||||||
block.irondrill.name = pertambangan besi
|
block.combustion-generator.name=Combustion Generator
|
||||||
block.irondrill.fulldescription = Pertambangan dasar. Saat diletakkan di atas ubin bijih besi, akan mengeluarkan besi pada kecepatan yang lambat tanpa batas waktu.
|
block.turbine-generator.name=Turbine Generator
|
||||||
block.coaldrill.name = pertambangan batubara
|
block.tungsten-drill.name=Tungsten Drill
|
||||||
block.coaldrill.fulldescription = Pertambangan dasar. Saat ditempatkan di ubin bijih batubara, akan mengeluarkan batu bara pada kecepatan yang lambat tanpa batas waktu.
|
block.carbide-drill.name=Carbide Drill
|
||||||
block.thoriumdrill.name = pertambangan thorium
|
block.laser-drill.name=Laser Drill
|
||||||
block.thoriumdrill.fulldescription = Sebuah pertambangan yang canggih. Saat ditempatkan di ubin bijih thorium, akan mengeluarkan thorium pada kecepatan lambat tanpa batas waktu.
|
block.water-extractor.name=Water Extractor
|
||||||
block.titaniumdrill.name = pertambangan titanium
|
block.cultivator.name=Cultivator
|
||||||
block.titaniumdrill.fulldescription = Sebuah pertambangan yang canggih. Saat ditempatkan pada ubin bijih titanium, akan mengeluarkan titanium pada kecepatan lambat tanpa batas waktu.
|
block.dart-ship-factory.name=Dart Ship Factory
|
||||||
block.omnidrill.name = pertambangan super
|
block.delta-mech-factory.name=Delta Mech Factory
|
||||||
block.omnidrill.fulldescription = Pertambangan yang terbaik. Akan saya tambang bijih apapun itu ditempatkan pada kecepatan tinggi.
|
block.dronefactory.name=Drone Factory
|
||||||
block.coalgenerator.name = pembangkit tenaga batubara
|
block.repairpoint.name=Repair Point
|
||||||
block.coalgenerator.fulldescription = Generator penting. Menghasilkan tenaga dari batu bara. Keluarkan tenaga sebagai laser ke 4 sisinya.
|
block.resupplypoint.name=Resupply Point
|
||||||
block.thermalgenerator.name = pembangkit tenaga panas
|
block.liquidtank.name=Liquid Tank
|
||||||
block.thermalgenerator.fulldescription = Menghasilkan tenaga dari lahar. Mengeluarkan tenaga sebagai laser ke 4 sisi.
|
block.bridgeconduit.name=Bridge Conduit
|
||||||
block.combustiongenerator.name = pembangkit tenaga minyak
|
block.mechanical-pump.name=Mechanical Pump
|
||||||
block.combustiongenerator.fulldescription = Menghasilkan tenaga dari minyak. Mengeluarkan tenaga sebagai laser ke 4 sisi.
|
block.itemsource.name=Item Source
|
||||||
block.rtgenerator.name = pembangkit tenaga radioaktif
|
block.itemvoid.name=Item Void
|
||||||
block.rtgenerator.fulldescription = Menghasilkan sedikit tenaga dari peluruhan radioaktif thorium. Mengeluarkan tenaga sebagai laser ke 4 sisi.
|
block.liquidsource.name=Liquid Source
|
||||||
block.nuclearreactor.name = reaktor nuklir
|
block.powervoid.name=Power Void
|
||||||
block.nuclearreactor.fulldescription = Versi lanjutan Pembangkit Tenaga Radioaktif, dan generator tenaga tertinggi. Menghasilkan tenaga dari thorium. Membutuhkan pendinginan air konstan. Sangat mudah menguap; akan meledak dengan hebat jika tidak cukup jumlah pendingin yang diberikan.
|
block.powerinfinite.name=Power Infinite
|
||||||
block.turret.name = turret
|
block.unloader.name=Unloader
|
||||||
block.turret.fulldescription = Sebuah menara dasar yang murah. Menggunakan batu untuk amunisi. Memiliki jangkauan yang sedikit lebih banyak daripada turret ganda.
|
block.sortedunloader.name=Sorted Unloader
|
||||||
block.doubleturret.name = turret ganda
|
block.vault.name=Vault
|
||||||
block.doubleturret.fulldescription = Versi turret standar yang sedikit lebih bertenaga. Menggunakan batu untuk amunisi. Memberikan damage secara signifikan lebih banyak, namun memiliki jangkauan yang lebih rendah. Menembak dua peluru.
|
block.wave.name=Wave
|
||||||
block.machineturret.name = turret cepat
|
block.swarmer.name=Swarmer
|
||||||
block.machineturret.fulldescription = Sebuah menara standar. Menggunakan besi untuk amunisi. Memiliki tembakan yang cepat dengan damage yang layak.
|
block.salvo.name=Salvo
|
||||||
block.shotgunturret.name = turret split
|
block.ripple.name=Ripple
|
||||||
block.shotgunturret.fulldescription = Sebuah turret standar. Menggunakan besi untuk amunisi. Menembakkan 7 peluru. Jaraknya pendek, namun damage-nya lebih tinggi daripada turret cepat.
|
block.phase-conveyor.name=Phase Conveyor
|
||||||
block.flameturret.name = turret api
|
block.bridge-conveyor.name=Bridge Conveyor
|
||||||
block.flameturret.fulldescription = Turret jarak dekat lanjutan. Menggunakan batubara untuk amunisi. Memiliki jangkauan yang pendek, namun sangat tinggi damage-nya. Bagus untuk jarak dekat. Dianjurkan untuk digunakan dibalik dinding.
|
block.plastanium-compressor.name=Plastanium Compressor
|
||||||
block.sniperturret.name = turret railgun
|
block.pyratite-mixer.name=Pyratite Mixer
|
||||||
block.sniperturret.fulldescription = Turret jarak jauh lanjutan. Menggunakan baja untuk amunisi. Kerusakan yang sangat tinggi, namun menembak dengan lambat. Mahal untuk digunakan, tapi bisa ditempatkan jauh dari garis musuh karena jangkauannya.
|
block.blast-mixer.name=Blast Mixer
|
||||||
block.mortarturret.name = turret flak
|
block.solidifer.name=Solidifer
|
||||||
block.mortarturret.fulldescription = Turret dengan akurasi pendek dan damage eksplosif. Menggunakan batubara untuk amunisi. Menembakkan peluru yang meledak lalu menjadi pecahan peluru. Berguna untuk kerumunan musuh yang besar.
|
block.solar-panel.name=Solar Panel
|
||||||
block.laserturret.name = turret laser
|
block.solar-panel-large.name=Large Solar Panel
|
||||||
block.laserturret.fulldescription = Turret satu target. Menggunakan tenaga. Memiliki jarak sedang yang bagus. Target tunggal saja. Tidak pernah meleset.
|
block.oil-extractor.name=Oil Extractor
|
||||||
block.waveturret.name = turret tesla
|
block.javelin-ship-factory.name=Javelin Ship factory
|
||||||
block.waveturret.fulldescription = Turret target banyak. Menggunakan tenaga. Jaraknya sedang. Tidak pernah meleset. Rata-rata damage-nya kecil, namun bisa menembak beberapa musuh bersamaan dengan petir berantai.
|
block.drone-factory.name=Drone Factory
|
||||||
block.plasmaturret.name = turret plasma
|
block.fabricator-factory.name=Fabricator Factory
|
||||||
block.plasmaturret.fulldescription = Versi yang sangat maju dari turret api. Menggunakan batubara sebagai amunisi. Damage yang sangat tinggi, jaraknya pendek sampai sedang.
|
block.repair-point.name=Repair Point
|
||||||
block.chainturret.name = turret berantai
|
block.resupply-point.name=Resupply Point
|
||||||
block.chainturret.fulldescription = Menara api yang menembak dengan cepat. Menggunakan thorium sebagai amunisi. Menembak peluru besar dengan kecepatan tinggi. Jaraknya sedang. Membentang beberapa ubin. Sangat tangguh.
|
block.pulse-conduit.name=Pulse Conduit
|
||||||
block.titancannon.name = meriam titan
|
block.phase-conduit.name=Phase Conduit
|
||||||
block.titancannon.fulldescription = Turret jarak jauh terakhir. Menggunakan thorium sebagai amunisi. Menembakkan peluru yang meledak dengan cipratan besar dengan kecepatan sedang. Jarak jauh. Membentang beberapa ubin. Sangat tangguh.
|
block.liquid-router.name=Liquid Router
|
||||||
block.playerspawn.name = spawn pemain
|
block.liquid-tank.name=Liquid Tank
|
||||||
block.enemyspawn.name = spawn musuh
|
block.liquid-junction.name=Liquid Junction
|
||||||
|
block.bridge-conduit.name=Bridge Conduit
|
||||||
|
block.rotary-pump.name=Rotary Pump
|
||||||
|
block.nuclear-reactor.name=Nuclear Reactor
|
||||||
|
|||||||
@@ -1,488 +1,494 @@
|
|||||||
text.about = Stworzony przez [ROYAL] Anuken. []\nPierwotnie wpis w [orange] GDL [] MM Jam.\n\nNapisy:\n- SFX wykonane z pomocą [YELLOW] bfxr []\n- Muzyka wykonana przez [GREEN] RoccoW [] / znaleziona na [lime] FreeMusicArchive.org []\n\nSpecjalne podziękowania dla:\n- [coral] MitchellFJN []: obszerne testowanie i feedback\n- [niebo] Luxray5474 []: prace związane z wiki, pomoc z kodem\n- Wszystkich beta testerów na itch.io i Google Play\n
|
text.about=Stworzony przez [ROYAL] Anuken. []\nPierwotnie wpis w [orange] GDL [] MM Jam.\n\nNapisy:\n- SFX wykonane z pomocą [YELLOW] bfxr []\n- Muzyka wykonana przez [GREEN] RoccoW [] / znaleziona na [lime] FreeMusicArchive.org []\n\nSpecjalne podziękowania dla:\n- [coral] MitchellFJN []: obszerne testowanie i feedback\n- [niebo] Luxray5474 []: prace związane z wiki, pomoc z kodem\n- Wszystkich beta testerów na itch.io i Google Play\n
|
||||||
text.discord = Odwiedź nasz serwer Discord
|
text.discord=Odwiedź nasz serwer Discord
|
||||||
text.gameover = Rdzeń został zniszczony.
|
text.gameover=Rdzeń został zniszczony.
|
||||||
text.highscore = [YELLOW] Nowy rekord!
|
text.highscore=[YELLOW] Nowy rekord!
|
||||||
text.lasted = Wytrwałeś do fali
|
text.lasted=Wytrwałeś do fali
|
||||||
text.level.highscore = Rekord: [accent]{0}
|
text.level.highscore=Rekord: [accent]{0}
|
||||||
text.level.delete.title = Potwierdź kasowanie
|
text.level.delete.title=Potwierdź kasowanie
|
||||||
text.level.delete = Czy na pewno chcesz usunąć mapę \"[orange]{0}\"?
|
text.level.select=Wybrany poziom
|
||||||
text.level.select = Wybrany poziom
|
text.level.mode=Tryb gry:
|
||||||
text.level.mode = Tryb gry:
|
text.savegame=Zapisz Grę
|
||||||
text.savegame = Zapisz Grę
|
text.loadgame=Wczytaj grę
|
||||||
text.loadgame = Wczytaj grę
|
text.joingame=Gra wieloosobowa
|
||||||
text.joingame = Gra wieloosobowa
|
text.quit=Wyjdź
|
||||||
text.quit = Wyjdź
|
text.about.button=O grze
|
||||||
text.about.button = O grze
|
text.name=Nazwa:
|
||||||
text.name = Nazwa:
|
text.players={0} graczy online
|
||||||
text.public = Publiczny
|
text.players.single={0} gracz online
|
||||||
text.players = {0} graczy online
|
text.server.mismatch=Błąd pakietu: możliwa niezgodność wersji klienta/serwera.\nUpewnij się, że Ty i host macie najnowszą wersję Mindustry!
|
||||||
text.server.player.host = {0} (host)
|
text.server.closing=[accent] Zamykanie serwera ...
|
||||||
text.players.single = {0} gracz online
|
text.server.kicked.kick=Zostałeś wyrzucony z serwera!
|
||||||
text.server.mismatch = Błąd pakietu: możliwa niezgodność wersji klienta/serwera.\nUpewnij się, że Ty i host macie najnowszą wersję Mindustry!
|
text.server.kicked.invalidPassword=Nieprawidłowe hasło!
|
||||||
text.server.closing = [accent] Zamykanie serwera ...
|
text.server.kicked.clientOutdated=Nieaktualna gra! Zaktualizują ją!
|
||||||
text.server.kicked.kick = Zostałeś wyrzucony z serwera!
|
text.server.kicked.serverOutdated=Nieaktualna gra! Zaktualizują ją!
|
||||||
text.server.kicked.invalidPassword = Nieprawidłowe hasło!
|
text.server.connected={0} dołączył do gry .
|
||||||
text.server.kicked.clientOutdated = Nieaktualna gra! Zaktualizują ją!
|
text.server.disconnected={0} został rozłączony.
|
||||||
text.server.kicked.serverOutdated = Nieaktualna gra! Zaktualizują ją!
|
text.nohost=Nie można hostować serwera na mapie niestandardowej!
|
||||||
text.server.connected = {0} dołączył do gry .
|
text.hostserver=Serwer hosta
|
||||||
text.server.disconnected = {0} został rozłączony.
|
text.host=Host
|
||||||
text.nohost = Nie można hostować serwera na mapie niestandardowej!
|
text.hosting=[accent] Otwieranie serwera ...
|
||||||
text.hostserver = Serwer hosta
|
text.hosts.refresh=Odśwież
|
||||||
text.host = Host
|
text.hosts.discovering=Wyszukiwanie gier w sieci LAN
|
||||||
text.hosting = [accent] Otwieranie serwera ...
|
text.server.refreshing=Odświeżanie serwera
|
||||||
text.hosts.refresh = Odśwież
|
text.hosts.none=[lightgray] Brak serwerów w sieci LAN!
|
||||||
text.hosts.discovering = Wyszukiwanie gier w sieci LAN
|
text.host.invalid=[scarlet] Nie można połączyć się z hostem.
|
||||||
text.server.refreshing = Odświeżanie serwera
|
text.server.friendlyfire=Bratobójczy ogień
|
||||||
text.hosts.none = [lightgray] Brak serwerów w sieci LAN!
|
text.server.add=Dodaj serwer
|
||||||
text.host.invalid = [scarlet] Nie można połączyć się z hostem.
|
text.server.delete=Czy na pewno chcesz usunąć ten serwer?
|
||||||
text.server.friendlyfire = Bratobójczy ogień
|
text.server.hostname=Host: {0}
|
||||||
text.server.add = Dodaj serwer
|
text.server.edit=Edytuj serwer
|
||||||
text.server.delete = Czy na pewno chcesz usunąć ten serwer?
|
text.joingame.title=Dołącz do gry
|
||||||
text.server.hostname = Host: {0}
|
text.joingame.ip=IP:
|
||||||
text.server.edit = Edytuj serwer
|
text.disconnect=Rozłączony.
|
||||||
text.joingame.byip = Dołącz przez IP...
|
text.connecting=[accent]Łączenie ...
|
||||||
text.joingame.title = Dołącz do gry
|
text.connecting.data=[accent]Ładowanie danych świata...
|
||||||
text.joingame.ip = IP:
|
text.connectfail=[crimson]Nie można połączyć się z serwerem: [orange] {0}
|
||||||
text.disconnect = Rozłączony.
|
text.server.port=Port:
|
||||||
text.connecting = [accent]Łączenie ...
|
text.server.addressinuse=Adres jest już w użyciu!
|
||||||
text.connecting.data = [accent]Ładowanie danych świata...
|
text.server.invalidport=Nieprawidłowy numer portu.
|
||||||
text.connectfail = [crimson]Nie można połączyć się z serwerem: [orange] {0}
|
text.server.error=[crimson] Błąd hostowania serwera: [orange] {0}
|
||||||
text.server.port = Port:
|
text.save.new=Nowy zapis
|
||||||
text.server.addressinuse = Adres jest już w użyciu!
|
text.save.overwrite=Czy na pewno chcesz nadpisać zapis gry?
|
||||||
text.server.invalidport = Nieprawidłowy numer portu.
|
text.overwrite=Nadpisz
|
||||||
text.server.error = [crimson] Błąd hostowania serwera: [orange] {0}
|
text.save.none=Nie znaleziono zapisów gry!
|
||||||
text.tutorial.back = < Cofnij
|
text.saveload=[akcent]Zapisywanie...
|
||||||
text.tutorial.next = Dalej >
|
text.savefail=Nie udało się zapisać gry!
|
||||||
text.save.new = Nowy zapis
|
text.save.delete.confirm=Czy na pewno chcesz usunąć ten zapis gry?
|
||||||
text.save.overwrite = Czy na pewno chcesz nadpisać zapis gry?
|
text.save.delete=Usuń
|
||||||
text.overwrite = Nadpisz
|
text.save.export=Eksportuj
|
||||||
text.save.none = Nie znaleziono zapisów gry!
|
text.save.import.invalid=[orange]Zapis gry jest niepoprawny!
|
||||||
text.saveload = [akcent]Zapisywanie...
|
text.save.import.fail=[crimson]Nie udało się zaimportować zapisu: [orange] {0}
|
||||||
text.savefail = Nie udało się zapisać gry!
|
text.save.export.fail=[crimson]Nie można wyeksportować zapisu: [orange] {0}
|
||||||
text.save.delete.confirm = Czy na pewno chcesz usunąć ten zapis gry?
|
text.save.import=Importuj
|
||||||
text.save.delete = Usuń
|
text.save.newslot=Zapisz nazwę:
|
||||||
text.save.export = Eksportuj
|
text.save.rename=Zmień nazwę
|
||||||
text.save.import.invalid = [orange]Zapis gry jest niepoprawny!
|
text.save.rename.text=Zmień nazwę
|
||||||
text.save.import.fail = [crimson]Nie udało się zaimportować zapisu: [orange] {0}
|
text.selectslot=Wybierz zapis.
|
||||||
text.save.export.fail = [crimson]Nie można wyeksportować zapisu: [orange] {0}
|
text.slot=[accent]Slot {0}
|
||||||
text.save.import = Importuj
|
text.save.corrupted=[orange]Zapis gry jest uszkodzony lub nieprawidłowy!
|
||||||
text.save.newslot = Zapisz nazwę:
|
text.empty=<pusto>
|
||||||
text.save.rename = Zmień nazwę
|
text.on=Włączone
|
||||||
text.save.rename.text = Zmień nazwę
|
text.off=Wyłączone
|
||||||
text.selectslot = Wybierz zapis.
|
text.save.autosave=Zapisywanie automatyczne
|
||||||
text.slot = [accent]Slot {0}
|
text.save.map=Mapa: {0}
|
||||||
text.save.corrupted = [orange]Zapis gry jest uszkodzony lub nieprawidłowy!
|
text.save.wave=Fala: {0}
|
||||||
text.empty = <pusto>
|
text.save.date=Ostatnio zapisano: {0}
|
||||||
text.on = Włączone
|
text.confirm=Potwierdź
|
||||||
text.off = Wyłączone
|
text.delete=Usuń
|
||||||
text.save.autosave = Zapisywanie automatyczne
|
text.ok=Ok
|
||||||
text.save.map = Mapa: {0}
|
text.open=Otwórz
|
||||||
text.save.wave = Fala: {0}
|
text.cancel=Anuluj
|
||||||
text.save.date = Ostatnio zapisano: {0}
|
text.openlink=Otwórz link
|
||||||
text.confirm = Potwierdź
|
text.back=Wróć
|
||||||
text.delete = Usuń
|
text.quit.confirm=Czy na pewno chcesz wyjść?
|
||||||
text.ok = Ok
|
text.loading=[accent]Ładowanie ...
|
||||||
text.open = Otwórz
|
text.wave=[orange]Fala {0}
|
||||||
text.cancel = Anuluj
|
text.wave.waiting=Fala w {0}
|
||||||
text.openlink = Otwórz link
|
text.waiting=Oczekiwanie...
|
||||||
text.back = Wróć
|
text.enemies={0} wrogów
|
||||||
text.quit.confirm = Czy na pewno chcesz wyjść?
|
text.enemies.single={0} wróg
|
||||||
text.loading = [accent]Ładowanie ...
|
text.loadimage=Załaduj obraz
|
||||||
text.wave = [orange]Fala {0}
|
text.saveimage=Zapisz obraz
|
||||||
text.wave.waiting = Fala w {0}
|
text.editor.badsize=[orange]Nieprawidłowe wymiary obrazu![]\nWymiary poprawne: {0}
|
||||||
text.waiting = Oczekiwanie...
|
text.editor.errorimageload=Błąd podczas ładowania pliku obrazu: [orange]{0}
|
||||||
text.enemies = {0} wrogów
|
text.editor.errorimagesave=Błąd podczas zapisywania pliku obrazu: [orange]{0}
|
||||||
text.enemies.single = {0} wróg
|
text.editor.generate=Generuj
|
||||||
text.loadimage = Załaduj obraz
|
text.editor.resize=Zmień rozmiar
|
||||||
text.saveimage = Zapisz obraz
|
text.editor.loadmap=Załaduj mapę
|
||||||
text.editor.badsize = [orange]Nieprawidłowe wymiary obrazu![]\nWymiary poprawne: {0}
|
text.editor.savemap=Zapisz mapę
|
||||||
text.editor.errorimageload = Błąd podczas ładowania pliku obrazu: [orange]{0}
|
text.editor.loadimage=Załaduj obraz
|
||||||
text.editor.errorimagesave = Błąd podczas zapisywania pliku obrazu: [orange]{0}
|
text.editor.saveimage=Zapisz obraz
|
||||||
text.editor.generate = Generuj
|
text.editor.unsaved=[scarlet]Masz niezapisane zmiany![]\nCzy na pewno chcesz wyjść?
|
||||||
text.editor.resize = Zmień rozmiar
|
text.editor.resizemap=Zmień rozmiar mapy
|
||||||
text.editor.loadmap = Załaduj mapę
|
text.editor.mapname=Nazwa mapy:
|
||||||
text.editor.savemap = Zapisz mapę
|
text.editor.overwrite=[accent]Uwaga!\nSpowoduje to nadpisanie istniejącej mapy.
|
||||||
text.editor.loadimage = Załaduj obraz
|
text.editor.selectmap=Wybierz mapę do załadowania:
|
||||||
text.editor.saveimage = Zapisz obraz
|
text.width=Szerokość:
|
||||||
text.editor.unsaved = [scarlet]Masz niezapisane zmiany![]\nCzy na pewno chcesz wyjść?
|
text.height=Wysokość:
|
||||||
text.editor.brushsize = Rozmiar pędzla: {0}
|
text.menu=Menu
|
||||||
text.editor.noplayerspawn = Ta mapa nie ma ustawionego spawnu gracza!
|
text.play=Graj
|
||||||
text.editor.manyplayerspawns = Mapy nie mogą mieć więcej niż jeden punkt spawnu gracza!
|
text.load=Wczytaj
|
||||||
text.editor.manyenemyspawns = Nie może mieć więcej niż {0} punktów spawnu wroga!
|
text.save=Zapisz
|
||||||
text.editor.resizemap = Zmień rozmiar mapy
|
text.language.restart=Uruchom grę ponownie aby ustawiony język zaczął funkcjonować.
|
||||||
text.editor.resizebig = [scarlet]Uwaga![]\nMapy większe niż 256 jednostek mogą przycinać i być niestabilne.
|
text.settings.language=Język
|
||||||
text.editor.mapname = Nazwa mapy:
|
text.settings=Ustawienia
|
||||||
text.editor.overwrite = [accent]Uwaga!\nSpowoduje to nadpisanie istniejącej mapy.
|
text.tutorial=Poradnik
|
||||||
text.editor.failoverwrite = [crimson]Nie można nadpisać mapy podstawowej!
|
text.editor=Edytor
|
||||||
text.editor.selectmap = Wybierz mapę do załadowania:
|
text.mapeditor=Edytor map
|
||||||
text.width = Szerokość:
|
text.donate=Wspomóż nas
|
||||||
text.height = Wysokość:
|
text.settings.reset=Przywróć domyślne
|
||||||
text.randomize = Wylosuj
|
text.settings.controls=Sterowanie
|
||||||
text.apply = Zastosuj
|
text.settings.game=Gra
|
||||||
text.update = Zaktualizuj
|
text.settings.sound=Dźwięk
|
||||||
text.menu = Menu
|
text.settings.graphics=Grafika
|
||||||
text.play = Graj
|
text.upgrades=Ulepszenia
|
||||||
text.load = Wczytaj
|
text.purchased=[LIME]Stworzono!
|
||||||
text.save = Zapisz
|
text.weapons=Bronie
|
||||||
text.language.restart = Uruchom grę ponownie aby ustawiony język zaczął funkcjonować.
|
text.paused=Wstrzymano
|
||||||
text.settings.language = Język
|
text.info.title=[accent]Informacje
|
||||||
text.settings = Ustawienia
|
text.error.title=[crimson]Wystąpił błąd
|
||||||
text.tutorial = Poradnik
|
text.error.crashtitle=Wystąpił błąd
|
||||||
text.editor = Edytor
|
text.blocks.blockinfo=Informacje o bloku
|
||||||
text.mapeditor = Edytor map
|
text.blocks.powercapacity=Moc znamionowa
|
||||||
text.donate = Wspomóż nas
|
text.blocks.powershot=moc / strzał
|
||||||
text.settings.reset = Przywróć domyślne
|
text.blocks.size=Rozmiar
|
||||||
text.settings.controls = Sterowanie
|
text.blocks.liquidcapacity=Pojemność cieczy
|
||||||
text.settings.game = Gra
|
text.blocks.maxitemssecond=Maksymalna liczba przedmiotów / Sekunda
|
||||||
text.settings.sound = Dźwięk
|
text.blocks.powerrange=Zakres mocy
|
||||||
text.settings.graphics = Grafika
|
text.blocks.itemcapacity=Pojemność przedmiotów
|
||||||
text.upgrades = Ulepszenia
|
text.blocks.inputliquid=Potrzebna ciecz
|
||||||
text.purchased = [LIME]Stworzono!
|
text.blocks.inputitem=Potrzebne przedmioty
|
||||||
text.weapons = Bronie
|
text.blocks.explosive=Wysoce wybuchowy!
|
||||||
text.paused = Wstrzymano
|
text.blocks.health=Zdrowie
|
||||||
text.respawn = Odrodzenie za
|
text.blocks.inaccuracy=Niedokładność
|
||||||
text.info.title = [accent]Informacje
|
text.blocks.shots=Strzały
|
||||||
text.error.title = [crimson]Wystąpił błąd
|
text.blocks.inputcapacity=Pojemność wejściowa
|
||||||
text.error.crashmessage = [SCARLET]Wystąpił nieoczekiwany błąd, który spowodowałby awarię.[]\nProszę, powiadom dewelopera gry o tym błędzie, pisząc jak do niego doszło: [ORANGE]anukendev@gmail.com[]
|
text.blocks.outputcapacity=Wydajność wyjściowa
|
||||||
text.error.crashtitle = Wystąpił błąd
|
setting.difficulty.easy=łatwy
|
||||||
text.mode.break = Tryb przerw: {0}
|
setting.difficulty.normal=normalny
|
||||||
text.mode.place = Tryb układania: {0}
|
setting.difficulty.hard=trudny
|
||||||
placemode.hold.name = linia
|
setting.difficulty.insane=szalony
|
||||||
placemode.areadelete.name = obszar
|
setting.difficulty.purge=Czystka
|
||||||
placemode.touchdelete.name = Dotyk
|
setting.difficulty.name=Poziom trudności
|
||||||
placemode.holddelete.name = Przytrzymać
|
setting.screenshake.name=Trzęsienie się ekranu
|
||||||
placemode.none.name = żaden
|
setting.indicators.name=Wskaźniki wroga
|
||||||
placemode.touch.name = Dotyk
|
setting.effects.name=Wyświetlanie efektów
|
||||||
placemode.cursor.name = kursor
|
setting.sensitivity.name=Czułość kontrolera
|
||||||
text.blocks.extrainfo = [accent]Dodatkowe informacje o bloku:
|
setting.saveinterval.name=Interwał automatycznego zapisywania
|
||||||
text.blocks.blockinfo = Informacje o bloku
|
setting.seconds=Sekundy
|
||||||
text.blocks.powercapacity = Moc znamionowa
|
setting.fps.name=Widoczny licznik FPS
|
||||||
text.blocks.powershot = moc / strzał
|
setting.vsync.name=Synchronizacja pionowa
|
||||||
text.blocks.powersecond = moc / sekunda
|
setting.lasers.name=Pokaż lasery zasilające
|
||||||
text.blocks.powerdraindamage = siła ataku / obrażenia
|
setting.healthbars.name=Pokaż paski zdrowia jednostki
|
||||||
text.blocks.shieldradius = Promień osłony
|
setting.musicvol.name=Głośność muzyki
|
||||||
text.blocks.itemspeedsecond = prędkość / sekundy
|
setting.mutemusic.name=Wycisz muzykę
|
||||||
text.blocks.range = Zakres
|
setting.sfxvol.name=Głośność dźwięków
|
||||||
text.blocks.size = Rozmiar
|
setting.mutesound.name=Wycisz dźwięki
|
||||||
text.blocks.powerliquid = moc / ciecz
|
map.maze.name=labirynt
|
||||||
text.blocks.maxliquidsecond = maksymalna ilość cieczy / sekunda
|
map.fortress.name=twierdza
|
||||||
text.blocks.liquidcapacity = Pojemność cieczy
|
map.sinkhole.name=wgłębienie
|
||||||
text.blocks.liquidsecond = ciecz / sekunda
|
map.caves.name=jaskinie
|
||||||
text.blocks.damageshot = obrażenia / strzał
|
map.volcano.name=wulkan
|
||||||
text.blocks.ammocapacity = Pojemność amunicji
|
map.caldera.name=kaldera
|
||||||
text.blocks.ammo = Amunicja:
|
map.scorch.name=opalacz
|
||||||
text.blocks.ammoitem = amunicja / przedmiot
|
map.desert.name=pustynia
|
||||||
text.blocks.maxitemssecond = Maksymalna liczba przedmiotów / Sekunda
|
map.island.name=wyspa
|
||||||
text.blocks.powerrange = Zakres mocy
|
map.grassland.name=łąka
|
||||||
text.blocks.lasertilerange = Zasięg lasera
|
map.tundra.name=tundra
|
||||||
text.blocks.capacity = Wydajność
|
map.spiral.name=spirala
|
||||||
text.blocks.itemcapacity = Pojemność przedmiotów
|
map.tutorial.name=Poradnik
|
||||||
text.blocks.maxpowergenerationsecond = maksymalne generowanie energii / sekunda
|
keybind.move_x.name=Poruszanie w poziomie
|
||||||
text.blocks.powergenerationsecond = wytwarzanie energii / sekunda
|
keybind.move_y.name=Poruszanie w pionie
|
||||||
text.blocks.generationsecondsitem = sekunda / przedmiot
|
keybind.select.name=Wybieranie
|
||||||
text.blocks.input = Wkład
|
keybind.break.name=Niszczenie
|
||||||
text.blocks.inputliquid = Potrzebna ciecz
|
keybind.shoot.name=Strzelanie
|
||||||
text.blocks.inputitem = Potrzebne przedmioty
|
keybind.zoom_hold.name=Inicjator przybliżania
|
||||||
text.blocks.output = Wyjście
|
keybind.zoom.name=Przybliżanie
|
||||||
text.blocks.secondsitem = sekundy / przedmiot
|
keybind.menu.name=menu
|
||||||
text.blocks.maxpowertransfersecond = maksymalny transfer mocy / sekundę
|
keybind.pause.name=pauza
|
||||||
text.blocks.explosive = Wysoce wybuchowy!
|
keybind.dash.name=przyśpieszenie
|
||||||
text.blocks.repairssecond = naprawa / sekunda
|
keybind.rotate_alt.name=Obracanie (1)
|
||||||
text.blocks.health = Zdrowie
|
keybind.rotate.name=Obracanie (2)
|
||||||
text.blocks.inaccuracy = Niedokładność
|
mode.waves.name=Fale
|
||||||
text.blocks.shots = Strzały
|
mode.sandbox.name=sandbox
|
||||||
text.blocks.shotssecond = Strzały / Sekunda
|
mode.freebuild.name=budowanie
|
||||||
text.blocks.fuel = Paliwo
|
item.stone.name=kamień
|
||||||
text.blocks.fuelduration = Wydajność paliwa
|
item.coal.name=węgiel
|
||||||
text.blocks.maxoutputsecond = maksymalne wyjście / sekunda
|
item.titanium.name=tytan
|
||||||
text.blocks.inputcapacity = Pojemność wejściowa
|
item.thorium.name=uran
|
||||||
text.blocks.outputcapacity = Wydajność wyjściowa
|
item.sand.name=piasek
|
||||||
text.blocks.poweritem = moc / przedmiot
|
liquid.water.name=woda
|
||||||
text.placemode = Tryb miejsca
|
liquid.lava.name=lawa
|
||||||
text.breakmode = Tryb przerwania
|
liquid.oil.name=olej
|
||||||
text.health = Zdrowie:
|
block.door.name=drzwi
|
||||||
setting.difficulty.easy = łatwy
|
block.door-large.name=duże drzwi
|
||||||
setting.difficulty.normal = normalny
|
block.conduit.name=Rura
|
||||||
setting.difficulty.hard = trudny
|
block.pulseconduit.name=Rura impulsowa
|
||||||
setting.difficulty.insane = szalony
|
block.liquidrouter.name=Rozdzielacz płynów
|
||||||
setting.difficulty.purge = Czystka
|
block.conveyor.name=Przenośnik
|
||||||
setting.difficulty.name = Poziom trudności
|
block.router.name=Rozdzielacz
|
||||||
setting.screenshake.name = Trzęsienie się ekranu
|
block.junction.name=węzeł
|
||||||
setting.smoothcam.name = Płynna kamera
|
block.liquidjunction.name=Węzeł dla płynów
|
||||||
setting.indicators.name = Wskaźniki wroga
|
block.sorter.name=Sortownik
|
||||||
setting.effects.name = Wyświetlanie efektów
|
block.smelter.name=huta
|
||||||
setting.sensitivity.name = Czułość kontrolera
|
text.credits=Credits
|
||||||
setting.saveinterval.name = Interwał automatycznego zapisywania
|
text.link.discord.description=the official Mindustry discord chatroom
|
||||||
setting.seconds = Sekundy
|
text.link.github.description=Game source code
|
||||||
setting.fps.name = Widoczny licznik FPS
|
text.link.dev-builds.description=Unstable development builds
|
||||||
setting.vsync.name = Synchronizacja pionowa
|
text.link.trello.description=Official trello board for planned features
|
||||||
setting.lasers.name = Pokaż lasery zasilające
|
text.link.itch.io.description=itch.io page with PC downloads and web version
|
||||||
setting.healthbars.name = Pokaż paski zdrowia jednostki
|
text.link.google-play.description=Google Play store listing
|
||||||
setting.pixelate.name = Rozpikselizowany obraz
|
text.link.wiki.description=official Mindustry wiki
|
||||||
setting.musicvol.name = Głośność muzyki
|
text.linkfail=Failed to open link!\nThe URL has been copied to your cliboard.
|
||||||
setting.mutemusic.name = Wycisz muzykę
|
text.editor.web=The web version does not support the editor!\nDownload the game to use it.
|
||||||
setting.sfxvol.name = Głośność dźwięków
|
text.web.unsupported=The web version does not support this feature! Download the game to use it.
|
||||||
setting.mutesound.name = Wycisz dźwięki
|
text.multiplayer.web=This version of the game does not support multiplayer!\nTo play multiplayer from your browser, use the "multiplayer web version" link at the itch.io page.
|
||||||
map.maze.name = labirynt
|
text.host.web=The web version does not support hosting games! Download the game to use this feature.
|
||||||
map.fortress.name = twierdza
|
text.map.delete=Are you sure you want to delete the map "[orange]{0}[]"?
|
||||||
map.sinkhole.name = wgłębienie
|
text.construction.title=Block Construction Guide
|
||||||
map.caves.name = jaskinie
|
text.construction=You've just selected [accent]block construction mode[].\n\nTo begin placing, simply tap a valid location near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Shift the selection[] by holding and dragging any block in the selection.\n- [accent]Place blocks in a line[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel construction or selection[] by pressing the X at the bottom left.
|
||||||
map.volcano.name = wulkan
|
text.deconstruction.title=Block Deconstruction Guide
|
||||||
map.caldera.name = kaldera
|
text.deconstruction=You've just selected [accent]block deconstruction mode[].\n\nTo begin breaking, simply tap a block near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin de-constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Remove blocks in an area[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel deconstruction or selection[] by pressing the X at the bottom left.
|
||||||
map.scorch.name = opalacz
|
text.showagain=Don't show again next session
|
||||||
map.desert.name = pustynia
|
text.unlocks=Unlocks
|
||||||
map.island.name = wyspa
|
text.addplayers=Add/Remove Players
|
||||||
map.grassland.name = łąka
|
text.newgame=New Game
|
||||||
map.tundra.name = tundra
|
text.maps=Maps
|
||||||
map.spiral.name = spirala
|
text.maps.none=[LIGHT_GRAY]No maps found!
|
||||||
map.tutorial.name = Poradnik
|
text.unlocked=New Block Unlocked!
|
||||||
tutorial.intro.text = [yellow]Witamy w poradniku do gry.[]\nAby rozpocząć, naciśnij \"Dalej\".
|
text.unlocked.plural=New Blocks Unlocked!
|
||||||
tutorial.moveDesktop.text = Aby się poruszać, użyj klawiszy [orange]W A S[] oraz [orange]D[]. Przytrzymaj [orange]shift[], aby przyśpieszyć.\nPrzytrzymując [orange]ctrl[] podczas kręcenia [orange]rolką myszy[] możesz zmieniać poziom przybliżenia mapy.
|
text.server.kicked.fastShoot=You are shooting too quickly.
|
||||||
tutorial.shoot.text = Do celowania używasz kursora myszy.\n[orange]Lewy przycisk myszy[] służy do strzelania. Poćwicz na [yellow]celu[].
|
text.server.kicked.banned=You are banned on this server.
|
||||||
tutorial.moveAndroid.text = Aby przesunąć widok, przeciągnij jednym palcem po ekranie. Ściśnij i przeciągnij, aby powiększyć lub pomniejszyć.
|
text.server.kicked.recentKick=You have been kicked recently.\nWait before connecting again.
|
||||||
tutorial.placeSelect.text = Wybierz [yellow]przenośnik[] z menu blokowego w prawym dolnym rogu.
|
text.server.kicked.nameInUse=There is someone with that name\nalready on this server.
|
||||||
tutorial.placeConveyorDesktop.text = Użyj [orange]rolki myszy[] aby obrócić przenośnik [orange]do przodu[], a następnie umieść go w [yellow]oznaczonym miejscu[] za pomocą [orange]lewego przycisku myszy[].
|
text.server.kicked.nameEmpty=Your name must contain at least one character or number.
|
||||||
tutorial.placeConveyorAndroid.text = Użyj [orange]przycisk obracania[], aby obrócić przenośnik [orange]do przodu[]. Jednym palcem przeciągnij go na [yellow]wskazaną pozycję[], a następnie umieść go za pomocą [orange]znacznika wyboru[].
|
text.server.kicked.idInUse=You are already on this server! Connecting with two accounts is not permitted.
|
||||||
tutorial.placeConveyorAndroidInfo.text = Możesz też nacisnąć ikonę celownika w lewym dolnym rogu, aby przełączyć na [pomarańczowy] [[tryb dotykowy] [] i umieścić bloki, dotykając ekranu. W trybie dotykowym bloki można obracać strzałką w lewym dolnym rogu. Naciśnij [żółty] następny [], aby go wypróbować.
|
text.server.kicked.customClient=This server does not support custom builds. Download an official version.
|
||||||
tutorial.placeDrill.text = Teraz wybierz i umieść [yellow]wiertło do kamienia[] w oznaczonym miejscu.
|
text.host.info=The [accent]host[] button hosts a server on ports [scarlet]6567[] and [scarlet]6568.[]\nAnybody on the same [LIGHT_GRAY]wifi or local network[] should be able to see your server in their server list.\n\nIf you want people to be able to connect from anywhere by IP, [accent]port forwarding[] is required.\n\n[LIGHT_GRAY]Note: If someone is experiencing trouble connecting to your LAN game, make sure you have allowed Mindustry access to your local network in your firewall settings.
|
||||||
tutorial.blockInfo.text = Jeśli chcesz się dowiedzieć więcej na temat wybranego bloku, kliknij [orange]znak zapytania[] w prawym górnym rogu, aby przeczytać jego opis.
|
text.join.info=Here, you can enter a [accent]server IP[] to connect to, or discover [accent]local network[] servers to connect to.\nBoth LAN and WAN multiplayer is supported.\n\n[LIGHT_GRAY]Note: There is no automatic global server list; if you want to connect to someone by IP, you would need to ask the host for their IP.
|
||||||
tutorial.deselectDesktop.text = Możesz anulować wybór bloku za pomocą [orange]prawego przycisku myszy[].
|
text.trace=Trace Player
|
||||||
tutorial.deselectAndroid.text = Możesz odznaczyć blok, naciskając przycisk [orange]X[].
|
text.trace.playername=Player name: [accent]{0}
|
||||||
tutorial.drillPlaced.text = Wiertło będzie teraz produkować [yellow]kamień[] i podawać go na przenośnik, który przeniesie go do [yellow]rdzenia[]
|
text.trace.ip=IP: [accent]{0}
|
||||||
tutorial.drillInfo.text = Różne rudy wymagają różnych wierteł. Kamień wymaga wiertła do kamieniu, żelazo wymaga wiertła do żelaza, itd.
|
text.trace.id=Unique ID: [accent]{0}
|
||||||
tutorial.drillPlaced2.text = Przeniesienie przedmiotów do rdzenia powoduje umieszczenie ich w [yellow]inwentarzu przedmiotów[] w lewym górnym rogu. Stawianie bloków te przedmioty zużywa.
|
text.trace.android=Android Client: [accent]{0}
|
||||||
tutorial.moreDrills.text = Możesz połączyć wiertła i przenośników w przedstawiony sposób:
|
text.trace.modclient=Custom Client: [accent]{0}
|
||||||
tutorial.deleteBlock.text = Możesz usuwać bloki, klikając [orange]prawy przycisk myszy[] na bloku, który chcesz usunąć.\nSpróbuj usunąć [yellow]oznaczony[] przenośnik.
|
text.trace.totalblocksbroken=Total blocks broken: [accent]{0}
|
||||||
tutorial.deleteBlockAndroid.text = Możesz usuwać bloki za pomocą [orange]krzyżyka[] w [orange]menu przerywania[] w lewym dolnym rogu i stukając w blok.\nSpróbuj usunąć [yellow]oznaczony[] przenośnik.
|
text.trace.structureblocksbroken=Structure blocks broken: [accent]{0}
|
||||||
tutorial.placeTurret.text = Teraz wybierz i umieść [yellow]działko[] w [yellow]zaznaczonym miejscu[].
|
text.trace.lastblockbroken=Last block broken: [accent]{0}
|
||||||
tutorial.placedTurretAmmo.text = Działko przyjmie teraz [yellow]amunicję[] z przenośnika. Możesz zobaczyć, ile ma amunicji, najeżdżając na działko kursorem i sprawdzając [green]zielony pasek[].
|
text.trace.totalblocksplaced=Total blocks placed: [accent]{0}
|
||||||
tutorial.turretExplanation.text = Wieżyczki będą strzelać automatycznie do najbliższego wroga w zasięgu, o ile będą miały wystarczającą ilość amunicji.
|
text.trace.lastblockplaced=Last block placed: [accent]{0}
|
||||||
tutorial.waves.text = Co każde [yellow]60[] sekund, fala [coral]wrogów[] pojawi się w określonym miejscu na mapie i spróbuje zniszczyć rdzeń.
|
text.invalidid=Invalid client ID! Submit a bug report.
|
||||||
tutorial.coreDestruction.text = Twoim celem jest [yellow]obrona rdzenia[]. Zniszczenie rdzenia jest równoznaczne z [coral]przegraną[].
|
text.server.bans=Bans
|
||||||
tutorial.pausingDesktop.text = Jeśli chcesz zrobić przerwę, naciśnij [orange]spację[] lub [orange]przycisk pauzy[] w lewym górnym rogu. Nadal możesz wybierać i wstawiać klocki podczas pauzy, ale nie możesz niszczyć i strzelać.
|
text.server.bans.none=No banned players found!
|
||||||
tutorial.pausingAndroid.text = Jeśli chcesz zrobić przerwę, naciśnij [orange]przycisk pauzy[]. Nadal możesz stawiać i niszczyć bloki.
|
text.server.admins=Admins
|
||||||
tutorial.purchaseWeapons.text = Możesz kupić nowe [żółte] bronie [] dla swojego mecha, otwierając menu aktualizacji w lewym dolnym rogu.
|
text.server.admins.none=No admins found!
|
||||||
tutorial.switchWeapons.text = Zmień broń, klikając jej ikonę w lewym dolnym rogu lub używając cyfr [orange][1-9[].
|
text.server.outdated=[crimson]Outdated Server![]
|
||||||
tutorial.spawnWave.text = Fala wrogów nadchodzi! Zniszcz ich.
|
text.server.outdated.client=[crimson]Outdated Client![]
|
||||||
tutorial.pumpDesc.text = W późniejszych falach może być konieczne użycie [yellow]pompy[] do rozprowadzania cieczy dla generatorów lub ekstraktorów.
|
text.server.version=[lightgray]Version: {0}
|
||||||
tutorial.pumpPlace.text = Pompy działają podobnie do wierteł, z tym wyjątkiem, że wytwarzają ciecze zamiast ród.\nSpróbuj umieścić pompę na [yellow]oleju[].
|
text.server.custombuild=[yellow]Custom Build
|
||||||
tutorial.conduitUse.text = Teraz umieść [orange]rurę[] wychodzącą od pompy.
|
text.confirmban=Are you sure you want to ban this player?
|
||||||
tutorial.conduitUse2.text = I tak jeszcze jedną...
|
text.confirmunban=Are you sure you want to unban this player?
|
||||||
tutorial.conduitUse3.text = I jeszcze jedeną...
|
text.confirmadmin=Are you sure you want to make this player an admin?
|
||||||
tutorial.generator.text = Teraz umieść [orange]generator spalinowy[] na końcu kanału.
|
text.confirmunadmin=Are you sure you want to remove admin status from this player?
|
||||||
tutorial.generatorExplain.text = Generator ten będzie teraz wytwarzać [yellow]energię[] z oleju.
|
text.disconnect.data=Failed to load world data!
|
||||||
tutorial.lasers.text = Energia jest dystrybuowana za pomocą [yellow]przekaźników[]. Umieść takowy przekaźnik na [yellow]wskazanej pozycji[].
|
text.save.difficulty=Difficulty: {0}
|
||||||
tutorial.laserExplain.text = Generator przeniesie teraz moc do przekaźnika. Wiązka [orange]nieprzeźroczysta[] oznacza, że aktualnie transmituje moc. Wiązka [yellow]przeźroczysta[] wskazuje na brak przekazywanej energii.
|
text.copylink=Copy Link
|
||||||
tutorial.laserMore.text = Możesz sprawdzić ile energii przechowuje blok najeżdżając na niego kursorem i sprawdzając [yellow]żółty pasek[].
|
text.changelog.title=Changelog
|
||||||
tutorial.healingTurret.text = Energia może być używany do zasilania [lime]wież naprawczych[]. Umieść takową [yellow]tutaj[].
|
text.changelog.loading=Getting changelog...
|
||||||
tutorial.healingTurretExplain.text = Dopóki dostarczana jest do niej energia będzie [lime]naprawiać pobliskie bloki[]. Podczas gry ustawiłeś ją niedaleko swojej bazy tak szybko, jak to tylko możliwe!
|
text.changelog.error.android=[orange]Note that the changelog sometimes does not work on Android 4.4 and below!\nThis is due to an internal Android bug.
|
||||||
tutorial.smeltery.text = Wiele bloków wymaga do pracy [orange]stali[], którą można wytwarzać w [orange]hucie[]. A skoro tak, to postaw ją teraz.
|
text.changelog.error.ios=[orange]The changelog is currently not supported in iOS.
|
||||||
tutorial.smelterySetup.text = Huta wytworzy teraz z żelaza [orange]stal[], wykorzystując węgiel jako paliwo.
|
text.changelog.error=[scarlet]Error getting changelog!\nCheck your internet connection.
|
||||||
tutorial.tunnelExplain.text = Zwróć też uwagę, że przedmioty przechodzą przez [orange]tunel[] i wynurzają się po drugiej stronie, przechodząc przez kamienny blok. Pamiętaj, że tunele mogą przechodzić tylko do 2 bloków.
|
text.changelog.current=[yellow][[Current version]
|
||||||
tutorial.end.text = I na tym poradnik się kończy!\nPozostaje tylko życzyć Ci [orange]powodzenia[]!
|
text.changelog.latest=[orange][[Latest version]
|
||||||
keybind.move_x.name = Poruszanie w poziomie
|
text.saving=[accent]Saving...
|
||||||
keybind.move_y.name = Poruszanie w pionie
|
text.unknown=Unknown
|
||||||
keybind.select.name = Wybieranie
|
text.custom=Custom
|
||||||
keybind.break.name = Niszczenie
|
text.builtin=Built-In
|
||||||
keybind.shoot.name = Strzelanie
|
text.map.delete.confirm=Are you sure you want to delete this map? This action cannot be undone!
|
||||||
keybind.zoom_hold.name = Inicjator przybliżania
|
text.map.random=[accent]Random Map
|
||||||
keybind.zoom.name = Przybliżanie
|
text.map.nospawn=This map does not have any cores for the player to spawn in! Add a [ROYAL]blue[] core to this map in the editor.
|
||||||
keybind.menu.name = menu
|
text.editor.slope=\\
|
||||||
keybind.pause.name = pauza
|
text.editor.openin=Open In Editor
|
||||||
keybind.dash.name = przyśpieszenie
|
text.editor.oregen=Ore Generation
|
||||||
keybind.rotate_alt.name = Obracanie (1)
|
text.editor.oregen.info=Ore Generation:
|
||||||
keybind.rotate.name = Obracanie (2)
|
text.editor.mapinfo=Map Info
|
||||||
keybind.weapon_1.name = Broń 1
|
text.editor.author=Author:
|
||||||
keybind.weapon_2.name = Broń 2
|
text.editor.description=Description:
|
||||||
keybind.weapon_3.name = Broń 3
|
text.editor.name=Name:
|
||||||
keybind.weapon_4.name = Broń 4
|
text.editor.teams=Teams
|
||||||
keybind.weapon_5.name = Broń 5
|
text.editor.elevation=Elevation
|
||||||
keybind.weapon_6.name = Broń 6
|
text.editor.saved=Saved!
|
||||||
mode.waves.name = Fale
|
text.editor.save.noname=Your map does not have a name! Set one in the 'map info' menu.
|
||||||
mode.sandbox.name = sandbox
|
text.editor.save.overwrite=Your map overwrites a built-in map! Pick a different name in the 'map info' menu.
|
||||||
mode.freebuild.name = budowanie
|
text.editor.import.exists=[scarlet]Unable to import:[] a built-in map named '{0}' already exists!
|
||||||
upgrade.standard.name = Standardowy
|
text.editor.import=Import...
|
||||||
upgrade.standard.description = Standardowy mech.
|
text.editor.importmap=Import Map
|
||||||
upgrade.blaster.name = blaster
|
text.editor.importmap.description=Import an already existing map
|
||||||
upgrade.blaster.description = Wystrzeliwuje powolną, słabą kulę.
|
text.editor.importfile=Import File
|
||||||
upgrade.triblaster.name = triblaster
|
text.editor.importfile.description=Import an external map file
|
||||||
upgrade.triblaster.description = Strzela 3 pociskami w rozprzestrzenianiu.
|
text.editor.importimage=Import Terrain Image
|
||||||
upgrade.clustergun.name = clustergun
|
text.editor.importimage.description=Import an external map image file
|
||||||
upgrade.clustergun.description = Wystrzeliwuje w różnych kierunkach kilka granatów.
|
text.editor.export=Export...
|
||||||
upgrade.beam.name = Działko laserowe
|
text.editor.exportfile=Export File
|
||||||
upgrade.beam.description = Strzela laserem o dalekim zasięgu.
|
text.editor.exportfile.description=Export a map file
|
||||||
upgrade.vulcan.name = wulkan
|
text.editor.exportimage=Export Terrain Image
|
||||||
upgrade.vulcan.description = Wystrzeliwuje grad szybkich pocisków.
|
text.editor.exportimage.description=Export a map image file
|
||||||
upgrade.shockgun.name = Działko elektryczne
|
text.editor.overwrite.confirm=[scarlet]Warning![] A map with this name already exists. Are you sure you want to overwrite it?
|
||||||
upgrade.shockgun.description = Wystrzeliwuje niszczycielski podmuch naładowanych odłamków.
|
text.fps=FPS: {0}
|
||||||
item.stone.name = kamień
|
text.tps=TPS: {0}
|
||||||
item.iron.name = żelazo
|
text.ping=Ping: {0}ms
|
||||||
item.coal.name = węgiel
|
text.settings.rebind=Rebind
|
||||||
item.steel.name = stal
|
text.yes=Yes
|
||||||
item.titanium.name = tytan
|
text.no=No
|
||||||
item.dirium.name = dirium
|
text.blocks.targetsair=Targets Air
|
||||||
item.thorium.name = uran
|
text.blocks.itemspeed=Units Moved
|
||||||
item.sand.name = piasek
|
text.blocks.shootrange=Range
|
||||||
liquid.water.name = woda
|
text.blocks.poweruse=Power Use
|
||||||
liquid.plasma.name = plazma
|
text.blocks.inputitemcapacity=Input Item Capacity
|
||||||
liquid.lava.name = lawa
|
text.blocks.outputitemcapacity=Input Item Capacity
|
||||||
liquid.oil.name = olej
|
text.blocks.maxpowergeneration=Max Power Generation
|
||||||
block.weaponfactory.name = fabryka broni
|
text.blocks.powertransferspeed=Power Transfer
|
||||||
block.air.name = Powietrze.
|
text.blocks.craftspeed=Production Speed
|
||||||
block.blockpart.name = Kawałek bloku
|
text.blocks.inputliquidaux=Aux Liquid
|
||||||
block.deepwater.name = głęboka woda
|
text.blocks.inputitems=Input Items
|
||||||
block.water.name = woda
|
text.blocks.outputitem=Output Item
|
||||||
block.lava.name = lawa
|
text.blocks.drilltier=Drillables
|
||||||
block.oil.name = olej
|
text.blocks.drillspeed=Base Drill Speed
|
||||||
block.stone.name = kamień
|
text.blocks.liquidoutput=Liquid Output
|
||||||
block.blackstone.name = czarny kamień
|
text.blocks.liquiduse=Liquid Use
|
||||||
block.iron.name = żelazo
|
text.blocks.coolant=Coolant
|
||||||
block.coal.name = węgiel
|
text.blocks.coolantuse=Coolant Use
|
||||||
block.titanium.name = tytan
|
text.blocks.inputliquidfuel=Fuel Liquid
|
||||||
block.thorium.name = uran
|
text.blocks.liquidfueluse=Liquid Fuel Use
|
||||||
block.dirt.name = ziemia
|
text.blocks.reload=Reload
|
||||||
block.sand.name = piasek
|
text.blocks.inputfuel=Fuel
|
||||||
block.ice.name = lód
|
text.blocks.fuelburntime=Fuel Burn Time
|
||||||
block.snow.name = śnieg
|
text.unit.blocks=blocks
|
||||||
block.grass.name = trawa
|
text.unit.powersecond=power units/second
|
||||||
block.sandblock.name = blok z piasku
|
text.unit.liquidsecond=liquid units/second
|
||||||
block.snowblock.name = blok ze śniegu
|
text.unit.itemssecond=items/second
|
||||||
block.stoneblock.name = blok z kamienia
|
text.unit.pixelssecond=pixels/second
|
||||||
block.blackstoneblock.name = blok z czarnego kamienia
|
text.unit.liquidunits=liquid units
|
||||||
block.grassblock.name = blok z trawy
|
text.unit.powerunits=power units
|
||||||
block.mossblock.name = porośnięty blok
|
text.unit.degrees=degrees
|
||||||
block.shrub.name = krzew
|
text.unit.seconds=seconds
|
||||||
block.rock.name = kamyk
|
text.unit.none=
|
||||||
block.icerock.name = kamyk lodowy
|
text.unit.items=items
|
||||||
block.blackrock.name = czarny kamyk
|
text.category.general=General
|
||||||
block.dirtblock.name = Brudny blok
|
text.category.power=Power
|
||||||
block.stonewall.name = Kamienna ściana
|
text.category.liquids=Liquids
|
||||||
block.stonewall.fulldescription = Tani blok obronny. Przydatny do ochrony rdzenia i wież w pierwszych kilku falach.
|
text.category.items=Items
|
||||||
block.ironwall.name = Żelazna ściana
|
text.category.crafting=Crafting
|
||||||
block.ironwall.fulldescription = Podstawowy blok obronny. Zapewnia ochronę przed wrogami.
|
text.category.shooting=Shooting
|
||||||
block.steelwall.name = stalowa ściana
|
setting.fullscreen.name=Fullscreen
|
||||||
block.steelwall.fulldescription = Standardowy blok obronny. odpowiednia ochrona przed wrogami.
|
setting.multithread.name=Multithreading
|
||||||
block.titaniumwall.name = tytanowa ściana
|
setting.minimap.name=Show Minimap
|
||||||
block.titaniumwall.fulldescription = Silny blok obronny. Zapewnia ochronę przed wrogami.
|
text.keybind.title=Rebind Keys
|
||||||
block.duriumwall.name = ściana z dirium
|
keybind.block_info.name=block_info
|
||||||
block.duriumwall.fulldescription = Bardzo silny blok obronny. Zapewnia ochronę przed wrogami.
|
keybind.chat.name=chat
|
||||||
block.compositewall.name = ściana kompozytowa
|
keybind.player_list.name=player_list
|
||||||
block.steelwall-large.name = duża stalowa ściana
|
keybind.console.name=console
|
||||||
block.steelwall-large.fulldescription = Standardowy blok obronny. Rozpiętość wielu płytek.
|
mode.text.help.title=Description of modes
|
||||||
block.titaniumwall-large.name = duża tytanowa ściana
|
mode.waves.description=the normal mode. limited resources and automatic incoming waves.
|
||||||
block.titaniumwall-large.fulldescription = Silny blok obronny. Rozpiętość wielu płytek.
|
mode.sandbox.description=infinite resources and no timer for waves.
|
||||||
block.duriumwall-large.name = duża ściana z dirium
|
mode.freebuild.description=limited resources and no timer for waves.
|
||||||
block.duriumwall-large.fulldescription = Bardzo silny blok obronny. Rozpiętość wielu płytek.
|
content.item.name=Items
|
||||||
block.titaniumshieldwall.name = Ściana z polem obronnym
|
content.liquid.name=Liquids
|
||||||
block.titaniumshieldwall.fulldescription = Silny blok obronny z dodatkową wbudowaną tarczą. Wymaga zasilania. Używa energii do pochłaniania pocisków wroga. W celu dostarczenia zasilania zaleca się stosowanie wzmacniaczy energii.
|
content.unit-type.name=Units
|
||||||
block.repairturret.name = Wieża naprawcza
|
content.recipe.name=Blocks
|
||||||
block.repairturret.fulldescription = Naprawia pobliskie uszkodzone bloki w niedużej prędkości. Wykorzystuje niewielkie ilości energii.
|
item.stone.description=A common raw material. Used for separating and refining into other materials, or melting into lava.
|
||||||
block.megarepairturret.name = Wieża naprawcza II
|
item.tungsten.name=Tungsten
|
||||||
block.megarepairturret.fulldescription = Naprawia pobliskie uszkodzone bloki z przyzwoitą prędkośą. Do działania wykorzystuje energię.
|
item.tungsten.description=A common, but very useful structure material. Used in drills and heat-resistant blocks such as generators and smelteries.
|
||||||
block.shieldgenerator.name = Generator tarczy
|
item.lead.name=Lead
|
||||||
block.shieldgenerator.fulldescription = Zaawansowany blok obronny. Osłania wszystkie bloki w promieniu przed atakiem wroga. Zużywa energię z niewielką prędkością gdy jest w stanie bezczynności, ale z kolei gdy jest w użyciu, energię pobiera bardzo szybko.
|
item.lead.description=A basic starter material. Used extensively in electronics and liquid transportation blocks.
|
||||||
block.door.name = drzwi
|
item.coal.description=A common and readily available fuel.
|
||||||
block.door.fulldescription = Blok, który można otworzyć i zamknąć poprzez dotknięcie
|
item.carbide.name=Carbide
|
||||||
block.door-large.name = duże drzwi
|
item.carbide.description=A tough alloy made with tungsten and carbon. Used in advanced transportation blocks and high-tier drills.
|
||||||
block.door-large.fulldescription = Blok, który można otworzyć i zamknąć poprzez dotknięcie
|
item.titanium.description=A rare super-light metal used extensively in liquid transportation, drills and aircraft.
|
||||||
block.conduit.name = Rura
|
item.thorium.description=A dense, radioactive metal used as structural support and nuclear fuel.
|
||||||
block.conduit.fulldescription = Podstawowy blok transportu cieczy. Działa jak przenośnik, tylko że z płynami. Najlepiej stosować z pompami bądź razem innymi rurami.\nMoże być używany jako pomost nad płynami dla wrogów i graczy.
|
item.silicon.name=Silicon
|
||||||
block.pulseconduit.name = Rura impulsowa
|
item.silcion.description=An extremely useful semiconductor, with applications in solar panels and many complex electronics.
|
||||||
block.pulseconduit.fulldescription = Zaawansowany blok transportu cieczy. Transportuje ciecze szybciej i przechowuje więcej niż rury standardowe.
|
item.plastanium.name=Plastanium
|
||||||
block.liquidrouter.name = Rozdzielacz płynów
|
item.plastanium.description=A light, ductile material used in advanced aircraft and fragmentation ammunition.
|
||||||
block.liquidrouter.fulldescription = Działa podobnie do zwykłego rozdzielacza. Akceptuje wejście cieczy z jednej strony i przekazuje ją na pozostałe strony. Przydatny do rozdzielania cieczy z jednej rury do wielu.
|
item.phase-matter.name=Phase Matter
|
||||||
block.conveyor.name = Przenośnik
|
item.surge-alloy.name=Surge Alloy
|
||||||
block.conveyor.fulldescription = Podstawowy blok transportu przedmiotów. Przenosi przedmioty do przodu i automatycznie umieszcza je w blokach. Może być używany jako pomost nad płynami dla wrogów i graczy.
|
item.biomatter.name=Biomatter
|
||||||
block.steelconveyor.name = Przenośnik stalowy
|
item.biomatter.description=A clump of organic mush; used for conversion into oil or as a basic fuel.
|
||||||
block.steelconveyor.fulldescription = Zaawansowany blok transportu przedmiotów. Przenosi elementy szybciej niż standardowe przenośniki.
|
item.sand.description=A common material that is used extensively in smelting, both in alloying and as a flux.
|
||||||
block.poweredconveyor.name = przenośnik impulsowy
|
item.blast-compound.name=Blast Compound
|
||||||
block.poweredconveyor.fulldescription = Najszybszy blok transportowy przedmiotów.
|
item.blast-compound.description=A volatile compound used in bombs and explosives. While it can burned as fuel, this is not advised.
|
||||||
block.router.name = Rozdzielacz
|
item.pyratite.name=Pyratite
|
||||||
block.router.fulldescription = Przyjmuje przedmioty z jednego kierunku i przekazuje je w 3 innych kierunkach. Może również przechowywać pewną liczbę przedmiotów. Przydatny do dzielenia materiałów z jednego wiertła na wiele dział.
|
item.pyratite.description=An extremely flammable substance used in incendiary weapons.
|
||||||
block.junction.name = węzeł
|
liquid.cryofluid.name=Cryofluid
|
||||||
block.junction.fulldescription = Działa jako pomost dla dwóch skrzyżowanych przenośników taśmowych. Przydatny w sytuacjach, gdy dwa różne przenośniki przenoszą różne materiały do różnych lokalizacji.
|
text.item.explosiveness=[LIGHT_GRAY]Explosiveness: {0}
|
||||||
block.conveyortunnel.name = tunel przenośnikowy
|
text.item.flammability=[LIGHT_GRAY]Flammability: {0}
|
||||||
block.conveyortunnel.fulldescription = Transportuje przedmiot pod blokami. Aby użyć, umieść jeden tunel prowadzący do bloku, który ma zostać tunelowany, i jeden po drugiej stronie. Upewnij się, że oba tunele są skierowane w przeciwnych kierunkach, czyli w wejście do bloku podającego, a wyjście do bloku odbierającego.
|
text.item.radioactivity=[LIGHT_GRAY]Radioactivity: {0}
|
||||||
block.liquidjunction.name = Węzeł dla płynów
|
text.item.fluxiness=[LIGHT_GRAY]Flux Power: {0}
|
||||||
block.liquidjunction.fulldescription = Skrzyżowanie dla rurociągów. Przydatne w sytuacji, w której transportujemy różne ciecze w rurach, które muszą się przeciąć.
|
text.item.hardness=[LIGHT_GRAY]Hardness: {0}
|
||||||
block.liquiditemjunction.name = Węzeł rur i przenośników
|
text.liquid.heatcapacity=[LIGHT_GRAY]Heat Capacity: {0}
|
||||||
block.liquiditemjunction.fulldescription = Skrzyżowanie przenośników taśmowych oraz rur.
|
text.liquid.viscosity=[LIGHT_GRAY]Viscosity: {0}
|
||||||
block.powerbooster.name = Wzmacniacz energii
|
text.liquid.temperature=[LIGHT_GRAY]Temperature: {0}
|
||||||
block.powerbooster.fulldescription = Dystrybuuje moc do wszystkich bloków w swoim promieniu.
|
block.tungsten-wall.name=Tungsten Wall
|
||||||
block.powerlaser.name = Przekaźnik
|
block.tungsten-wall-large.name=Large Tungsten Wall
|
||||||
block.powerlaser.fulldescription = Tworzy laser, który przesyła moc do bloku przed nim. Nie generuje energii. Najlepiej stosować z generatorami lub innymi przekaźnikami.
|
block.carbide-wall.name=Carbide Wall
|
||||||
block.powerlaserrouter.name = Duży rozdzielacz energii
|
block.carbide-wall-large.name=Large Carbide Wall
|
||||||
block.powerlaserrouter.fulldescription = Przekaźnik, który dystrybuuje energię w trzech kierunkach jednocześnie. Przydatne w sytuacjach, w których wymagane jest zasilanie wielu bloków z jednego generatora.
|
block.thorium-wall.name=Thorium Wall
|
||||||
block.powerlasercorner.name = Rozdzielacz energii
|
block.thorium-wall-large.name=Large Thorium Wall
|
||||||
block.powerlasercorner.fulldescription = Przekaźnik, który dystrybuuje energię w dwóch kierunkach jednocześnie. Przydatny w sytuacjach, gdy wymagane jest zasilanie wielu bloków z jednego generatora, a router jest nieprecyzyjny.
|
block.duo.name=Duo
|
||||||
block.teleporter.name = teleporter
|
block.scorch.name=Scorch
|
||||||
block.teleporter.fulldescription = Zaawansowany blok transportu przedmiotów. Teleporty przenoszą przedmioty do innych teleportów tego samego koloru. Jeżeli nie istnieją teleporty z tym samym kolorem, to nie niczego nigdzie nie przenosi. Jeśli istnieje wiele teleportów tego samego koloru, wybierany jest losowy. Zużywa energię. Stuknij aby zmienić kolor.
|
block.hail.name=Hail
|
||||||
block.sorter.name = Sortownik
|
block.lancer.name=Lancer
|
||||||
block.sorter.fulldescription = Sortuje przedmioty według rodzaju materiału. Materiał do zaakceptowania jest oznaczony w bloku. Wszystkie pasujące przedmioty są wysyłane do przodu, wszystko inne jest wyprowadzane na lewo i na prawo.
|
block.titanium-conveyor.name=Titanium Conveyor
|
||||||
block.core.name = Rdzeń
|
block.splitter.name=Splitter
|
||||||
block.pump.name = pompa
|
block.splitter.description=Outputs items into two opposite directions immediately after they are recieved.
|
||||||
block.pump.fulldescription = Pompuje ciecze z bloku źródłowego - zwykle wody, lawy lub oleju. Wyprowadza ciecz do pobliskich rur.
|
block.router.description=Splits items into all 4 directions. Can store items as a buffer.
|
||||||
block.fluxpump.name = pompa strumieniowa
|
block.distributor.name=Distributor
|
||||||
block.fluxpump.fulldescription = Zaawansowana wersja pompy. Przechowuje więcej cieczy i szybciej pompuje.
|
block.distributor.description=A splitter that can split items into 8 directions.
|
||||||
block.smelter.name = huta
|
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.smelter.fulldescription = Niezbędny blok rzemieślniczy. Po wprowadzeniu 1 żelaza i 1 węgla jako paliwa, wytwarza 1 stal. Zaleca się wprowadzanie żelaza i węgla na różne pasy, aby zapobiec zatkaniu.
|
block.overflow-gate.name=Overflow Gate
|
||||||
block.crucible.name = tygiel
|
block.overflow-gate.description=A combination splitter and router that only outputs to the left and right if the front path is blocked.
|
||||||
block.crucible.fulldescription = Zaawansowany blok rzemieślniczy. Po wprowadzeniu 1 tytanu, 1 stali i 1 węgla jako paliwa, otrzymuje 1 dirium. Zaleca się wprowadzanie węgla, stali i tytanu z różnych taśm, aby zapobiec zatkaniu.
|
block.bridgeconveyor.name=Bridge Conveyor
|
||||||
block.coalpurifier.name = ekstraktor węgla
|
block.bridgeconveyor.description=A conveyor that can go over other blocks, for up to two total blocks.
|
||||||
block.coalpurifier.fulldescription = Wyprowadza węgiel, gdy jest dostarczana duża ilością wody i kamienia.
|
block.arc-smelter.name=Arc Smelter
|
||||||
block.titaniumpurifier.name = ekstraktor tytanu
|
block.silicon-smelter.name=Silicon Smelter
|
||||||
block.titaniumpurifier.fulldescription = Wyprowadza tytan, gdy jest dostarczana duża ilości wody i żelaza.
|
block.phase-weaver.name=Phase Weaver
|
||||||
block.oilrefinery.name = Rafineria ropy
|
block.pulverizer.name=Pulverizer
|
||||||
block.oilrefinery.fulldescription = Rafinuje duże ilości oleju do postaci węgla. Przydatne do napędzania działek napędzanych węglem, gry nie ma w pobliżu wystarcząjacej ilości rud węgla.
|
block.cryofluidmixer.name=Cryofluid Mixer
|
||||||
block.stoneformer.name = Wytwarzacz kamienia
|
block.melter.name=Melter
|
||||||
block.stoneformer.fulldescription = Schładza lawę do postaci kamień. Przydatny do produkcji ogromnych ilości kamienia do oczyszczania węgla.
|
block.incinerator.name=Incinerator
|
||||||
block.lavasmelter.name = Huta lawowa
|
block.biomattercompressor.name=Biomatter Compressor
|
||||||
block.lavasmelter.fulldescription = Używa lawy, by przekształcić żelazo w stal. Alternatywa dla zwykłych hut. Przydatny w sytuacjach, gdy brakuje węgla.
|
block.separator.name=Separator
|
||||||
block.stonedrill.name = wiertło do kamienia
|
block.centrifuge.name=Centrifuge
|
||||||
block.stonedrill.fulldescription = Niezbędne wiertło. Po umieszczeniu na kamiennym podłożu, powoli i w nieskończoność wydobywa kamień.
|
block.power-node.name=Power Node
|
||||||
block.irondrill.name = wiertło do żelaza
|
block.power-node-large.name=Large Power Node
|
||||||
block.irondrill.fulldescription = Po umieszczeniu na rudzie żelaza, powoli i w nieskończoność wydobywa żelazo.
|
block.battery.name=Battery
|
||||||
block.coaldrill.name = wiertło do węgla
|
block.battery-large.name=Large Battery
|
||||||
block.coaldrill.fulldescription = Po umieszczeniu na rudzie węgla, powoli i w nieskończoność wydobywa węgiel.
|
block.combustion-generator.name=Combustion Generator
|
||||||
block.thoriumdrill.name = wiertło do uranu
|
block.turbine-generator.name=Turbine Generator
|
||||||
block.thoriumdrill.fulldescription = Wiertło zaawansowane. Po umieszczeniu na rudzie uranu, wydobywa uran w wolnym tempie przez czas nieokreślony.
|
block.tungsten-drill.name=Tungsten Drill
|
||||||
block.titaniumdrill.name = wiertło do tytanu
|
block.carbide-drill.name=Carbide Drill
|
||||||
block.titaniumdrill.fulldescription = Wiertło zaawansowane. Po umieszczeniu na rudzie tytanu, wydobywa tytan w wolnym tempie przez czas nieokreślony.
|
block.laser-drill.name=Laser Drill
|
||||||
block.omnidrill.name = omnidril
|
block.water-extractor.name=Water Extractor
|
||||||
block.omnidrill.fulldescription = Wiertło wielofunkcyjne. W szybkim tempie wydobywa każdą rudę.
|
block.cultivator.name=Cultivator
|
||||||
block.coalgenerator.name = generator na węgiel
|
block.dart-ship-factory.name=Dart Ship Factory
|
||||||
block.coalgenerator.fulldescription = Niezbędny generator. Generuje energię z węgla na wszystkie strony.
|
block.delta-mech-factory.name=Delta Mech Factory
|
||||||
block.thermalgenerator.name = generator termiczny
|
block.dronefactory.name=Drone Factory
|
||||||
block.thermalgenerator.fulldescription = Generuje energię z lawy. Generuje energię z węgla na wszystkie strony.
|
block.repairpoint.name=Repair Point
|
||||||
block.combustiongenerator.name = generator spalinowy
|
block.resupplypoint.name=Resupply Point
|
||||||
block.combustiongenerator.fulldescription = Generuje moc z oleju. Generuje energię z węgla na wszystkie strony.
|
block.liquidtank.name=Liquid Tank
|
||||||
block.rtgenerator.name = Generator RTG
|
block.bridgeconduit.name=Bridge Conduit
|
||||||
block.rtgenerator.fulldescription = Generuje niewielkie ilości energii z rozpadu promieniotwórczego uranu. Generuje energię z węgla na wszystkie strony.
|
block.mechanical-pump.name=Mechanical Pump
|
||||||
block.nuclearreactor.name = reaktor jądrowy
|
block.itemsource.name=Item Source
|
||||||
block.nuclearreactor.fulldescription = Zaawansowana wersja generatora RTG i zarazem najlepsze źródło energii. Generuje ją z uranu. Wymaga stałego chłodzenia wodą. Wybucha niemal natychmiast w momencie, gdy dostarczona zostanie niewystarczająca ilość płynu chłodzącego.
|
block.itemvoid.name=Item Void
|
||||||
block.turret.name = działko
|
block.liquidsource.name=Liquid Source
|
||||||
block.turret.fulldescription = Podstawowa, nieduża wieżyczka. Używa kamienia jako amunicji. Ma nieco większy zasięg niż działko podwójne.
|
block.powervoid.name=Power Void
|
||||||
block.doubleturret.name = działko podwójne
|
block.powerinfinite.name=Power Infinite
|
||||||
block.doubleturret.fulldescription = Nieco mocniejsza wersja działka. Używa kamienia jako amunicji. Znacznie więcej obrażeń, ale ma mniejszy zasięg. Wystrzeliwuje dwie kule.
|
block.unloader.name=Unloader
|
||||||
block.machineturret.name = działko szybkostrzelne
|
block.sortedunloader.name=Sorted Unloader
|
||||||
block.machineturret.fulldescription = Standardowa, wszechstronna wieża. Używa żelaza jako amunicji. Strzela dość szybko i ma przyzwoite uszkodzenia.
|
block.vault.name=Vault
|
||||||
block.shotgunturret.name = działko odłamkowe
|
block.wave.name=Wave
|
||||||
block.shotgunturret.fulldescription = Standardowa wieża. Używa żelaza do amunicji. Wystrzeliwuje 7 pocisków. Niższy zasięg, ale większe obrażenia niż działko szybkostrzelne.
|
block.swarmer.name=Swarmer
|
||||||
block.flameturret.name = miotacz ognia
|
block.salvo.name=Salvo
|
||||||
block.flameturret.fulldescription = Zaawansowana wieżyczka bliskiego zasięgu. Używa węgla jako amunicji. Ma bardzo niski zasięg, ale bardzo duże obrażenia. Dobra na krótkie dystanse. Zalecana do stosowania za ścianami.
|
block.ripple.name=Ripple
|
||||||
block.sniperturret.name = karabin
|
block.phase-conveyor.name=Phase Conveyor
|
||||||
block.sniperturret.fulldescription = Zaawansowana wieżyczka dalekiego zasięgu. Używa stali jako amunicji. Ma bardzo duże obrażenia, ale niski współczynnik ognia. Kosztowne w użyciu, ale można je umieścić z dala od linii wroga ze względu na jego zasięg.
|
block.bridge-conveyor.name=Bridge Conveyor
|
||||||
block.mortarturret.name = Miotacz odłamków
|
block.plastanium-compressor.name=Plastanium Compressor
|
||||||
block.mortarturret.fulldescription = Zaawansowana, bardzo dokładne działko rozpryskowe. Używa węgla jako amunicji. Wystrzeliwuje grad eksplodujących pocisków. Przydatny dla dużych hord wrogów.
|
block.pyratite-mixer.name=Pyratite Mixer
|
||||||
block.laserturret.name = działo laserowe
|
block.blast-mixer.name=Blast Mixer
|
||||||
block.laserturret.fulldescription = Zaawansowana wieża z jednym celem. Używa energii. Dobra wieża o średnim zasięgu. Atakuje tylko 1 cel i nigdy nie pudłuje.
|
block.solidifer.name=Solidifer
|
||||||
block.waveturret.name = Działo Tesli
|
block.solar-panel.name=Solar Panel
|
||||||
block.waveturret.fulldescription = Zaawansowana wieża celującai. Używa mocy. Średni zasięg. Nigdy nie trafia. Stosuje niskie obrażenia, ale może trafić wielu wrogów jednocześnie z oświetleniem łańcuszkiem.
|
block.solar-panel-large.name=Large Solar Panel
|
||||||
block.plasmaturret.name = Działo plazmowe
|
block.oil-extractor.name=Oil Extractor
|
||||||
block.plasmaturret.fulldescription = Wysoce zaawansowana wersja miotacza ognia. Używa węgla jako amunicji. Zadaje bardzo duże obrażenia i posiada średni zasięg.
|
block.javelin-ship-factory.name=Javelin Ship factory
|
||||||
block.chainturret.name = Działo uranowe
|
block.drone-factory.name=Drone Factory
|
||||||
block.chainturret.fulldescription = Najlepsze działo szybkiego ognia. Używa uranu jako amunicji. Wystrzeliwuje duże spirale z dużą szybkością. Posiada średni zasięg.
|
block.fabricator-factory.name=Fabricator Factory
|
||||||
block.titancannon.name = Potężne działo uranowe
|
block.repair-point.name=Repair Point
|
||||||
block.titancannon.fulldescription = Najlepsze działo dalekiego zasięgu. Używa uranu jako amunicji. Wystrzeliwuje duże pociski z odłamkami. Ma średnią szybkostrzelność i duży promień rażenia.
|
block.resupply-point.name=Resupply Point
|
||||||
block.playerspawn.name = Spawn gracza
|
block.pulse-conduit.name=Pulse Conduit
|
||||||
block.enemyspawn.name = Spawn wroga
|
block.phase-conduit.name=Phase Conduit
|
||||||
|
block.liquid-router.name=Liquid Router
|
||||||
|
block.liquid-tank.name=Liquid Tank
|
||||||
|
block.liquid-junction.name=Liquid Junction
|
||||||
|
block.bridge-conduit.name=Bridge Conduit
|
||||||
|
block.rotary-pump.name=Rotary Pump
|
||||||
|
block.nuclear-reactor.name=Nuclear Reactor
|
||||||
|
|||||||
@@ -3,9 +3,8 @@ text.discord=Junte-se ao Discord do Mindustry! (Lá nós falamos em inglês)
|
|||||||
text.gameover=O núcleo foi destruído.
|
text.gameover=O núcleo foi destruído.
|
||||||
text.highscore=[YELLOW]Novo recorde!
|
text.highscore=[YELLOW]Novo recorde!
|
||||||
text.lasted=Você durou até a horda
|
text.lasted=Você durou até a horda
|
||||||
text.level.highscore= Melhor\npontuação: [accent] {0}
|
text.level.highscore=Melhor\npontuação: [accent] {0}
|
||||||
text.level.delete.title=Confirmar exclusão
|
text.level.delete.title=Confirmar exclusão
|
||||||
text.level.delete=Você tem certeza que quer excluir\no mapa "[orange]{0}"?
|
|
||||||
text.level.select=Seleção de Fase
|
text.level.select=Seleção de Fase
|
||||||
text.level.mode=Modo de Jogo:
|
text.level.mode=Modo de Jogo:
|
||||||
text.savegame=Salvar Jogo
|
text.savegame=Salvar Jogo
|
||||||
@@ -33,7 +32,6 @@ text.loading=[accent]Carregando...
|
|||||||
text.wave=[orange]Horda {0}
|
text.wave=[orange]Horda {0}
|
||||||
text.wave.waiting=Horda em {0}
|
text.wave.waiting=Horda em {0}
|
||||||
text.waiting=Aguardando...
|
text.waiting=Aguardando...
|
||||||
text.countdown=Horda em {0}
|
|
||||||
text.enemies={0} Inimigos restantes
|
text.enemies={0} Inimigos restantes
|
||||||
text.enemies.single={0} Inimigo restante
|
text.enemies.single={0} Inimigo restante
|
||||||
text.loadimage=Carregar\nImagem
|
text.loadimage=Carregar\nImagem
|
||||||
@@ -48,21 +46,12 @@ text.editor.savemap=Salvar\n Mapa
|
|||||||
text.editor.loadimage=Carregar\n Imagem
|
text.editor.loadimage=Carregar\n Imagem
|
||||||
text.editor.saveimage=Salvar\nImagem
|
text.editor.saveimage=Salvar\nImagem
|
||||||
text.editor.unsaved=[scarlet]Você tem alterações não salvas![]\nTem certeza que quer sair?
|
text.editor.unsaved=[scarlet]Você tem alterações não salvas![]\nTem certeza que quer sair?
|
||||||
text.editor.brushsize=Tamanho do pincel: {0}
|
|
||||||
text.editor.noplayerspawn=Este mapa não tem ponto de spawn para o jogador!
|
|
||||||
text.editor.manyplayerspawns=Mapas não podem ter mais de um\nponto de spawn para jogador!
|
|
||||||
text.editor.manyenemyspawns=Não pode haver mais de\n{0} pontos de spawn para inimigos!
|
|
||||||
text.editor.resizemap=Redimensionar Mapa
|
text.editor.resizemap=Redimensionar Mapa
|
||||||
text.editor.resizebig=[scarlet]Aviso!\n[]Mapas maiores que 256 unidades podem ser 'lentos' e instáveis
|
|
||||||
text.editor.mapname=Nome do Mapa:
|
text.editor.mapname=Nome do Mapa:
|
||||||
text.editor.overwrite=[accent]Aviso!\nIsso sobrescreve um mapa existente.
|
text.editor.overwrite=[accent]Aviso!\nIsso sobrescreve um mapa existente.
|
||||||
text.editor.failoverwrite=[crimson]Não é possível salvar sobre o mapa padrão!
|
|
||||||
text.editor.selectmap=Selecione uma mapa para carregar:
|
text.editor.selectmap=Selecione uma mapa para carregar:
|
||||||
text.width=Largura:
|
text.width=Largura:
|
||||||
text.height=Altura:
|
text.height=Altura:
|
||||||
text.randomize=Aleatório
|
|
||||||
text.apply=Aplicar
|
|
||||||
text.update=Atualizar
|
|
||||||
text.menu=Menu
|
text.menu=Menu
|
||||||
text.play=Jogar
|
text.play=Jogar
|
||||||
text.load=Carregar
|
text.load=Carregar
|
||||||
@@ -81,58 +70,27 @@ text.upgrades=Melhorias
|
|||||||
text.purchased=[LIME]Comprado!
|
text.purchased=[LIME]Comprado!
|
||||||
text.weapons=Arsenal
|
text.weapons=Arsenal
|
||||||
text.paused=Pausado
|
text.paused=Pausado
|
||||||
text.respawn=Reaparecendo em
|
|
||||||
text.error.title=[crimson]Um erro ocorreu
|
text.error.title=[crimson]Um erro ocorreu
|
||||||
text.error.crashmessage=[SCARLET]Um erro inesperado aconteceu, que pode ter causado o jogo a fechar. []Por favor, informe as exatas circunstâncias em que o erro ocorreu ao desenvolvidor:\n[ORANGE]anukendev@gmail.com[]
|
|
||||||
text.error.crashtitle=Um erro ocorreu.
|
text.error.crashtitle=Um erro ocorreu.
|
||||||
text.blocks.extrainfo=[accent]Informação extra:
|
|
||||||
text.blocks.blockinfo=Informação do Bloco
|
text.blocks.blockinfo=Informação do Bloco
|
||||||
text.blocks.powercapacity=Capacidade de Energia
|
text.blocks.powercapacity=Capacidade de Energia
|
||||||
text.blocks.powershot=Energia/tiro
|
text.blocks.powershot=Energia/tiro
|
||||||
text.blocks.powersecond=Energia/segundo
|
|
||||||
text.blocks.powerdraindamage=Energia/dano
|
|
||||||
text.blocks.shieldradius=Raio do Escudo
|
|
||||||
text.blocks.itemspeedsecond=Itens/segundo
|
|
||||||
text.blocks.range=Alcance
|
|
||||||
text.blocks.size=Tamanho
|
text.blocks.size=Tamanho
|
||||||
text.blocks.powerliquid=Energia/Líquido
|
|
||||||
text.blocks.maxliquidsecond=Entrada Máx. Líquido/segundo
|
|
||||||
text.blocks.liquidcapacity=Capacidade de Líquido
|
text.blocks.liquidcapacity=Capacidade de Líquido
|
||||||
text.blocks.liquidsecond=Líquido/segundo
|
|
||||||
text.blocks.damageshot=Dano/tiro
|
|
||||||
text.blocks.ammocapacity=Munição Máxima
|
|
||||||
text.blocks.ammo=Munição
|
|
||||||
text.blocks.ammoitem=Munição/item
|
|
||||||
text.blocks.maxitemssecond=Máximo de itens/segundo
|
text.blocks.maxitemssecond=Máximo de itens/segundo
|
||||||
text.blocks.powerrange=Alcance da Energia
|
text.blocks.powerrange=Alcance da Energia
|
||||||
text.blocks.lasertilerange=Alcance do Laser (em células)
|
|
||||||
text.blocks.capacity=Capacidade
|
|
||||||
text.blocks.itemcapacity=Capacidade de Itens
|
text.blocks.itemcapacity=Capacidade de Itens
|
||||||
text.blocks.powergenerationsecond=Geração de Energia/segundo
|
|
||||||
text.blocks.generationsecondsitem=Tempo de geração/item
|
|
||||||
text.blocks.input=Entrada
|
|
||||||
text.blocks.inputliquid=Líquido de entrada
|
text.blocks.inputliquid=Líquido de entrada
|
||||||
text.blocks.inputitem=Item de entrada
|
text.blocks.inputitem=Item de entrada
|
||||||
text.blocks.output=Saída
|
|
||||||
text.blocks.secondsitem=Segundos/item
|
|
||||||
text.blocks.maxpowertransfersecond=Transferência máxima de Energia/segundo
|
|
||||||
text.blocks.explosive=Altamente Explosivo!
|
text.blocks.explosive=Altamente Explosivo!
|
||||||
text.blocks.repairssecond=Reparo/segundo
|
|
||||||
text.blocks.health=Saúde
|
text.blocks.health=Saúde
|
||||||
text.blocks.inaccuracy=Imprecisão
|
text.blocks.inaccuracy=Imprecisão
|
||||||
text.blocks.shots=Tiros
|
text.blocks.shots=Tiros
|
||||||
text.blocks.shotssecond=Taxa de tiro
|
|
||||||
text.placemode=Modo construção
|
|
||||||
text.breakmode=Modo remoção
|
|
||||||
text.health=Saúde
|
|
||||||
setting.difficulty.easy=Fácil
|
setting.difficulty.easy=Fácil
|
||||||
setting.difficulty.normal=Normal
|
setting.difficulty.normal=Normal
|
||||||
setting.difficulty.hard=Difícil
|
setting.difficulty.hard=Difícil
|
||||||
setting.difficulty.name=Dificuldade
|
setting.difficulty.name=Dificuldade
|
||||||
setting.screenshake.name=Balanço da Tela
|
setting.screenshake.name=Balanço da Tela
|
||||||
#Tremor da tela?
|
|
||||||
setting.smoothcam.name=Câmera suave
|
|
||||||
#Suavizar Câmera?
|
|
||||||
setting.indicators.name=Indicadores de Inimigos
|
setting.indicators.name=Indicadores de Inimigos
|
||||||
setting.effects.name=Particulas
|
setting.effects.name=Particulas
|
||||||
setting.sensitivity.name=Sensibilidade do Controle
|
setting.sensitivity.name=Sensibilidade do Controle
|
||||||
@@ -140,7 +98,6 @@ setting.fps.name=Mostrar FPS
|
|||||||
setting.vsync.name=VSync
|
setting.vsync.name=VSync
|
||||||
setting.lasers.name=Mostrar lasers
|
setting.lasers.name=Mostrar lasers
|
||||||
setting.healthbars.name=Mostrar barra de saúde de entidades
|
setting.healthbars.name=Mostrar barra de saúde de entidades
|
||||||
setting.pixelate.name=Pixelar Tela
|
|
||||||
setting.musicvol.name=Volume da Música
|
setting.musicvol.name=Volume da Música
|
||||||
setting.mutemusic.name=Desligar Musica
|
setting.mutemusic.name=Desligar Musica
|
||||||
setting.sfxvol.name=Volume de Efeitos
|
setting.sfxvol.name=Volume de Efeitos
|
||||||
@@ -158,54 +115,10 @@ map.grassland.name=grassland
|
|||||||
map.tundra.name=tundra
|
map.tundra.name=tundra
|
||||||
map.spiral.name=spiral
|
map.spiral.name=spiral
|
||||||
map.tutorial.name=tutorial
|
map.tutorial.name=tutorial
|
||||||
tutorial.intro.text=[yellow]Bem-vindo ao tutorial.[] Para começar aperte 'próximo'.
|
|
||||||
tutorial.moveDesktop.text=Para mover, use as teclas [orange][[WASD][]. Segure [orange]shift[] para mover rápido. Segure [orange]CTRL[] enquanto usa a [orange]roda do mouse[] para aumentar ou diminuir o zoom.
|
|
||||||
tutorial.shootInternal.text=Use o mouse para mirar, segure [orange]botão esquerdo do mouse[] para atirar. Tente praticar no [yellow]alvo[].
|
|
||||||
tutorial.moveAndroid.text=Para arrastar a visão, passe um dedo pela tela. Pince com os dedos para aumentar ou diminuir o zoom.
|
|
||||||
tutorial.placeSelect.text=Tente selecionar uma [yellow]esteira[] do menu de blocos no canto inferior direito.
|
|
||||||
tutorial.placeConveyorDesktop.text=Use a [orange][[roda do mouse][] para girar a esteira até que aponte [orange]para frente[], então coloque-a no [yellow]local marcado[] usando o [orange][[botão esquerdo do mouse][].
|
|
||||||
tutorial.placeConveyorAndroid.text=Use o [orange][[botão de girar][] para girar a esteira para que aponte [orange]para frente[], arraste-a para a posição e então coloque-a na [yellow]posição marcada[] usando o [orange][[botão de confirmação][].
|
|
||||||
tutorial.placeConveyorAndroidInfo.text=Você também pode apertar no ícone com uma cruz no canto inferior esquerdo para alterar para o [orange][[modo de toque][], e colocar blocos apertando na tela. No modo de toque, blocos podem ser girados com a seta no canto inferior esquerdo. Aperte [yellow]próximo[] para tentar.
|
|
||||||
tutorial.placeDrill.text=Agora selecione e coloque uma [yellow]broca de pedra[] no local marcado.
|
|
||||||
tutorial.blockInfo.text=Se quiser saber mais sobre os blocos, você pode apertar o [orange]símbolo de interrogação[] no canto superior direito para ler mais.
|
|
||||||
tutorial.deselectDesktop.text=Você pode cancelar a seleção de um bloco usando o [orange][botão direito do mouse[].
|
|
||||||
tutorial.deselectAndroid.text=ocê pode cancelar a seleção de um bloco apertando o botão [orange]X[].
|
|
||||||
tutorial.drillPlaced.text=A broca produzirá [yellow]pedra[], direcionando o produzido para a esteira a qual moverá a pedra para o [yellow]núcleo[].
|
|
||||||
tutorial.drillInfo.text=Minérios diferentes precisam de diferentes brocas. Pedra precisam de brocas de pedra, Ferro de brocas de ferro, etc.
|
|
||||||
tutorial.drillPlaced2.text=Itens movidos para o núcleo são colocados em seu [yellow]inventário[], no canto superior esquerdo. Colocar blocos gasta os recursos do inventário.
|
|
||||||
tutorial.moreDrills.text=Você pode conectar várias brocas e esteiras, veja.
|
|
||||||
tutorial.deleteBlock.text=Você pode excluir blocos clickando com o [orange]botão direito do mouse[] no bloco que quiser destruir. Tente excluir esta esteira.
|
|
||||||
tutorial.deleteBlockAndroid.text=Você pode excluir blocos [orange]apertando na cruz[] no [orange]menu modo de quebra[] no canto inferior esquerdo e então apertando no bloco desejado. Tente excluir esta esteira.
|
|
||||||
tutorial.placeTurret.text=Agora, selecione e construa uma [yellow]torre[] no [yellow]local marcado[].
|
|
||||||
tutorial.placedTurretAmmo.text=Esta torre aceitará [yellow]munição[] da esteira. Você pode ver quanta munição elas tem passando o mouse sobre elas e verificando a [green]barra verde[].
|
|
||||||
tutorial.turretExplanation.text=As torres irão atirar no inimigo mais próximo que estiver ao alcance, contanto que tenham munição suficiente.
|
|
||||||
tutorial.waves.text=A cada [yellow]60[] segundos, uma horda de [coral]inimigos[] irá aparecer em locais específicos e tentará destruir o núcleo.
|
|
||||||
tutorial.coreDestruction.text=Seu objetivo é [yellow]defender o núcleo[]. Se o núcleo for destruído, vecê [coral]perde o jogo[].
|
|
||||||
tutorial.pausingDesktop.text=Se você precisar parar por alguns instantes, aperte o [orange]botão de pausa[] no canto superior esquerdo ou [orange]barra de espaço[] para pausar o jogo. Você pode colocar blocos enquanto o jogo esta pausado, porém não poderá se mover ou atirar.
|
|
||||||
tutorial.pausingAndroid.text=Se você precisar parar por alguns instantes, aperte o [orange]botão de pausa[] no canto superior esquerdo ou [orange]barra de espaço[] para pausar o jogo. Você pode colocar blocos enquanto o jogo esta pausado.
|
|
||||||
tutorial.purchaseWeapons.text=Você pode comprar novas [yellow]armas[] para seu mecha, basta abrir o menu de melhorias no canto inferior esquerdo.
|
|
||||||
tutorial.switchWeapons.text=Alterne entre suas armas clickando em seu ícone ou usando as teclas numéricas [orange][[1-9][].
|
|
||||||
tutorial.spawnWave.text=Uma horda esta vindo. Destrúa-os.
|
|
||||||
tutorial.pumpDesc.text=Em hordas mais avançadas, você talvez precise de [yellow]bombas[] para distribuir líquidos para geradores ou extratores.
|
|
||||||
tutorial.pumpPlace.text=Bombas trabalham de forma semelhante às brocas, porém elas produzem líquidos ao envés de minérios. Tente colocar uma bomba na [yellow]célula de petróleo designada[].
|
|
||||||
tutorial.conduitUse.text=Agora coloque um [orange]cano[] levando para longe da bomba.
|
|
||||||
tutorial.conduitUse2.text=E mais alguns...
|
|
||||||
tutorial.conduitUse3.text=E mais alguns...
|
|
||||||
tutorial.generator.text=Agora coloque um [orange]gerador a combustão[] no final do cano.
|
|
||||||
tutorial.generatorExplain.text=Este gerador irá produzir [yellow]energia[] do petróleo.
|
|
||||||
tutorial.lasers.text=Energia é distribuida usando [yellow]lasers[]. Gire e coloque um aqui.
|
|
||||||
tutorial.laserExplain.text=O gerador irá mover energia para o bloco do laser. Um feixe [yellow]opaco[] significa que a energia está sendo transmitida, e um feixe [yellow]transparente[] significa que não.
|
|
||||||
tutorial.laserMore.text=Você pode verificar quanta energia um bloco tem ao passar o mouse sobre eles e verificando a [yellow]barra amarela[] no topo.
|
|
||||||
tutorial.healingTurret.text=Este laser pode ser usado para energizar uma [lime]torre de reparo[]. Coloque uma aqui.
|
|
||||||
tutorial.healingTurretExplain.text=Enquanto tiver energia, esta torre irá [lime]reparar blocos próximos.[] Quando jogar, tenha certeza de construir uma dessas próximas do núcleo o mais rápido possível!
|
|
||||||
tutorial.smeltery.text=Muitos blocos precisam de [orange]aço[] para serem construídos, o que requer uma [orange]fundidora[] para ser feito. Coloque uma aqui.
|
|
||||||
tutorial.smelterySetup.text=Esta fundidora irá produzir [orange]aço[] quando receber carvão e ferro.
|
|
||||||
tutorial.end.text=E este é o fim do Tutorial! Boa Sorte!
|
|
||||||
keybind.move_x.name=move_x
|
keybind.move_x.name=move_x
|
||||||
keybind.move_y.name=move_y
|
keybind.move_y.name=move_y
|
||||||
keybind.select.name=selecionar
|
keybind.select.name=selecionar
|
||||||
keybind.break.name=quebrar
|
keybind.break.name=quebrar
|
||||||
keybind.shootInternal.name=atirar
|
|
||||||
keybind.zoom_hold.name=segurar_zoom
|
keybind.zoom_hold.name=segurar_zoom
|
||||||
keybind.zoom.name=zoom
|
keybind.zoom.name=zoom
|
||||||
keybind.menu.name=menu
|
keybind.menu.name=menu
|
||||||
@@ -213,259 +126,369 @@ keybind.pause.name=pausar
|
|||||||
keybind.dash.name=Correr
|
keybind.dash.name=Correr
|
||||||
keybind.rotate_alt.name=girar_alt*
|
keybind.rotate_alt.name=girar_alt*
|
||||||
keybind.rotate.name=girar
|
keybind.rotate.name=girar
|
||||||
keybind.weapon_1.name=Arma 1
|
|
||||||
keybind.weapon_2.name=Arma 2
|
|
||||||
keybind.weapon_3.name=Arma 3
|
|
||||||
keybind.weapon_4.name=Arma 4
|
|
||||||
keybind.weapon_5.name=Arma 5
|
|
||||||
keybind.weapon_6.name=Arma 6
|
|
||||||
mode.waves.name=hordas
|
mode.waves.name=hordas
|
||||||
mode.sandbox.name=sandbox
|
mode.sandbox.name=sandbox
|
||||||
#CAIXINHA DE AREIA
|
|
||||||
mode.freebuild.name=construção \nlivre
|
mode.freebuild.name=construção \nlivre
|
||||||
weapon.blaster.name=Blaster
|
|
||||||
weapon.blaster.description=Atira um projétil lento e fraco.
|
|
||||||
weapon.triblaster.name=Blaster Triplo
|
|
||||||
weapon.triblaster.description=Atira 3 balas que se espalham.
|
|
||||||
weapon.multigun.name=Escopeta
|
|
||||||
weapon.multigun.description=Atira balas com baixa precisão e uma\n alta taxa de disparo.
|
|
||||||
weapon.flamer.name=Lança-Chamas
|
|
||||||
weapon.railgun.name=Rifle Sniper
|
|
||||||
weapon.flamer.description=É um lança-chamas. O que mais ele faria?
|
|
||||||
weapon.railgun.description=Atira um projétil de longo alcance.
|
|
||||||
weapon.mortar.name=Morteiro
|
|
||||||
weapon.mortar.description=Atira um projétil lento, porém devastador.
|
|
||||||
item.stone.name=Pedra
|
item.stone.name=Pedra
|
||||||
item.iron.name=Ferro
|
|
||||||
item.coal.name=Carvão
|
item.coal.name=Carvão
|
||||||
item.steel.name=Aço
|
|
||||||
item.titanium.name=Titânio
|
item.titanium.name=Titânio
|
||||||
item.dirium.name=Dírio
|
|
||||||
item.thorium.name=Urânio
|
item.thorium.name=Urânio
|
||||||
liquid.water.name=Água
|
liquid.water.name=Água
|
||||||
liquid.plasma.name=Plasma
|
|
||||||
liquid.lava.name=Lava
|
liquid.lava.name=Lava
|
||||||
liquid.oil.name=Petróleo
|
liquid.oil.name=Petróleo
|
||||||
block.air.name=Ar
|
|
||||||
block.blockpart.name=blockpart
|
|
||||||
#que?
|
|
||||||
block.deepwater.name=Água Profunda
|
|
||||||
block.water.name=Água
|
|
||||||
block.lava.name=Lava
|
|
||||||
block.oil.name=Petróleo
|
|
||||||
block.stone.name=Pedra
|
|
||||||
block.blackstone.name=Pedra Escura
|
|
||||||
block.iron.name=Ferro
|
|
||||||
block.coal.name=Carvão
|
|
||||||
block.titanium.name=Titânio
|
|
||||||
block.thorium.name=Urânio
|
|
||||||
block.dirt.name=Terra
|
|
||||||
block.sand.name=Areia
|
|
||||||
block.ice.name=Gelo
|
|
||||||
block.snow.name=Neve
|
|
||||||
block.grass.name=Grama
|
|
||||||
block.sandblock.name=Bloco de Areia
|
|
||||||
block.snowblock.name=Bloco de Neve
|
|
||||||
block.stoneblock.name=Rocha
|
|
||||||
block.blackstoneblock.name=Rocha Escura
|
|
||||||
block.grassblock.name=Bloco de Grama
|
|
||||||
block.mossblock.name=Musgo
|
|
||||||
block.shrub.name=Arbusto
|
|
||||||
block.rock.name=Rocha
|
|
||||||
block.icerock.name=Rocha de Gelo
|
|
||||||
block.blackrock.name=Rocha Escura
|
|
||||||
block.dirtblock.name=Bloco de Terra
|
|
||||||
block.stonewall.name=Parede de Pedra
|
|
||||||
block.stonewall.fulldescription=Um bloco defensivo barato. Útil para proteger o núcleo e torres nas primeiras hordas.
|
|
||||||
block.ironwall.name=Parede de Ferro
|
|
||||||
block.ironwall.fulldescription=Um bloco defensivo básico. Fornece proteção contra inimigos.
|
|
||||||
block.steelwall.name=Parede de aço
|
|
||||||
block.steelwall.fulldescription=Um bloco defensivo padrão. Fornece proteção contra inimigos.
|
|
||||||
block.titaniumwall.name=Parede de Titânio
|
|
||||||
block.titaniumwall.fulldescription=Um bloco defensivo forte. Fornece proteção contra inimigos.
|
|
||||||
block.duriumwall.name=Parede de Dírio
|
|
||||||
block.duriumwall.fulldescription=Um bloco defensivo muito forte. Fornece proteção contra inimigos.
|
|
||||||
block.compositewall.name=Parede de Composto
|
|
||||||
block.compositewall.fulldescription= Um bloco defensivo extremamente forte. Fornece a melhor proteção contra inimigos.
|
|
||||||
block.steelwall-large.name=Parede Grande de Aço
|
|
||||||
block.steelwall-large.fulldescription=Um bloco defensivo padrão. Ocupa multiplas células.
|
|
||||||
block.titaniumwall-large.name=Parede Grande de Titânio
|
|
||||||
block.titaniumwall-large.fulldescription=Um bloco defensivo forte. Ocupa multiplas células.
|
|
||||||
block.duriumwall-large.name=Parede Grande de Dírio
|
|
||||||
block.duriumwall-large.fulldescription=Um bloco defensivo muito forte. Ocupa multiplas células.
|
|
||||||
block.titaniumshieldwall.name=Parede com Escudo
|
|
||||||
block.titaniumshieldwall.fulldescription=Um bloco defensivo forte, com um escudo de energia imbutido. Usa energia passivamente e para absorver projéteis inimigos. É recomendado usar distribuidores de energia para abastecer este bloco.
|
|
||||||
#A strong defensive block, with an extra built-in shield. Requires power. Uses energy to absorb enemy bullets. It is recommended to use power boosters to provide energy to this block.
|
|
||||||
block.repairturret.name=Torre de Reparo
|
|
||||||
block.repairturret.fulldescription=Lentamente repara blocos danificados dentro do seu alcance. Consome um pouco de energia.
|
|
||||||
#Repairs nearby damaged blocks in range at a slow rate. Uses small amounts of power.
|
|
||||||
block.repairturret.description=[powerinfo]Consome Energia.[white]\nRepara blocos próximos.
|
|
||||||
block.megarepairturret.name=Torre de Reparo II
|
|
||||||
block.megarepairturret.fulldescription=Repara blocos danificados dentro do seu alcance. Consome um pouco de energia.
|
|
||||||
block.megarepairturret.description=[powerinfo]Consome Energia.[white]\nRepara blocos próximos.
|
|
||||||
block.shieldgenerator.name=Gerador de Escudo
|
|
||||||
block.shieldgenerator.fulldescription= Um bloco defensivo avançado. Protege todos os blocos em um raio. Lentamente usa energia quando parado, mas rapidamente drena em contato com projéteis.
|
|
||||||
#An advanced defensive block. Shields all the blocks in a radius from attack. Uses power at a slow rate when idle, but drains energy quickly on bullet contact.
|
|
||||||
block.door.name=Porta
|
block.door.name=Porta
|
||||||
block.door.fulldescription=Um bloco que pode ser aberto e fechado ao tocar nele.
|
|
||||||
block.door.description=Abre e Fecha.\n[interact]Toque para alternar o estado.
|
|
||||||
block.door-large.name=Porta Grande
|
block.door-large.name=Porta Grande
|
||||||
block.door-large.fulldescription=Um bloco que pode ser aberto e fechado ao tocar nele.
|
|
||||||
block.door-large.description=Abre e Fecha.\n[interact]Toque para alternar o estado.
|
|
||||||
block.conduit.name=Cano
|
block.conduit.name=Cano
|
||||||
block.conduit.fulldescription=Bloco de transporte de líquido básico. Funciona como uma esteira, mas com líquidos. Pode ser usado como uma ponte para inimigos e jogadores.
|
|
||||||
#Basic liquid transport block. Works like a conveyor, but with liquids. Best used with pumps or other conduits. Can be used as a bridge over liquids for enemies and players.
|
|
||||||
block.pulseconduit.name=Cano de impulso
|
block.pulseconduit.name=Cano de impulso
|
||||||
block.pulseconduit.fulldescription=Bloco de transporte de líquido avançado. Transporta líquidos mais rapidamente e armazena mais que canos normais.
|
|
||||||
#Advanced liquid transport block. Transports liquids faster and stores more than standard conduits.
|
|
||||||
block.liquidrouter.name=Roteador de líquido
|
block.liquidrouter.name=Roteador de líquido
|
||||||
block.liquidrouter.fulldescription=Aceita líquido de uma direção e o redireciona para as outras 3 direções. Útil para dividir o líquido entre vários canos.
|
|
||||||
#Works similarly to a router. Accepts liquid input from one side and outputs it to the other sides. Useful for splitting liquid from a single conduit into multiple other conduits.
|
|
||||||
block.liquidrouter.description=Divide líquidos em 3 direções.
|
|
||||||
block.conveyor.name=Esteira
|
block.conveyor.name=Esteira
|
||||||
block.conveyor.fulldescription=Bloco de transporte básico. Movimenta itens para frente e automaticamente os deposita em torres ou blocos de fabricação. Pode ser girado. Pode ser usado como uma ponte para inimigos e jogadores.
|
|
||||||
#Basic item transport block. Moves items forward and automatically deposits them into turrets or crafters. Rotatable. Can be used as a bridge over liquids for enemies and players.
|
|
||||||
block.steelconveyor.name=Esteira de aço
|
|
||||||
block.steelconveyor.fulldescription=Bloco de transporte avançado. Movimenta itens mais rapidamente que esteiras normais.
|
|
||||||
#Advanced item transport block. Moves items faster than standard conveyors.
|
|
||||||
block.poweredconveyor.name=Esteira de Impulso
|
|
||||||
block.poweredconveyor.fulldescription=O Bloco supremo de transporte. Movimenta itens mais rapidamente que esteiras de aço.
|
|
||||||
#The ultimate item transport block. Moves items faster than carbide conveyors.
|
|
||||||
block.router.name=Roteador
|
block.router.name=Roteador
|
||||||
block.router.fulldescription=Aceita itens de uma direção e os redireciona para as outras 3 direções. Pode guardar uma certa quantidade de itens. Útil para dividir materiais entre várias torres.
|
|
||||||
block.router.description=Divide materiais em 3 direções.
|
block.router.description=Divide materiais em 3 direções.
|
||||||
block.junction.name=Junção
|
block.junction.name=Junção
|
||||||
block.junction.fulldescription=Funciona como uma ponte para 2 linhas de esteiras que se cruzam. Útil em situações onde duas esteiras carregam diferentes materiais para diferentes locais.
|
|
||||||
block.junction.description=Funciona como uma junção para as esteiras.
|
|
||||||
block.conveyortunnel.name=Túnel de esteira
|
|
||||||
block.conveyortunnel.fulldescription=Transporta itens por baixo de blocos. Para usar coloque um túnel apontado para o bloco que deseja passar por baixo, e outro apontado para o primeiro túnel.
|
|
||||||
block.conveyortunnel.description=Transporta intes por baixo de blocos.
|
|
||||||
block.liquidjunction.name=Junção de líquido
|
block.liquidjunction.name=Junção de líquido
|
||||||
block.liquidjunction.fulldescription=Funciona como uma ponte para 2 canos que se cruzam. Útil em situações onde 2 canos diferentes carregam diferentes líquidos para diferentes locais.
|
|
||||||
block.liquiditemjunction.name=liquid-item junction
|
|
||||||
block.liquiditemjunction.fulldescription=Acts as a bridge for crossing conduits and conveyors.
|
|
||||||
block.liquiditemjunction.description=Serves as a junction for items and liquids.
|
|
||||||
block.powerbooster.name=Distribuidor de energia
|
|
||||||
block.powerbooster.fulldescription=Distribui energia para todos os blocos dentro de seu raio.
|
|
||||||
block.powerbooster.description=Distribui energia em um raio.
|
|
||||||
block.powerlaser.name=Laser
|
|
||||||
#Laser de energia?
|
|
||||||
block.powerlaser.fulldescription=Cria um laser que transmite energia para o bloco à sua frente. Melhor usado com geradores ou outros lasers. Não gera energia.
|
|
||||||
block.powerlaser.description=Transmite energia.
|
|
||||||
block.powerlaserrouter.name=laser duplo
|
|
||||||
block.powerlaserrouter.fulldescription=Divide a entrada de energia em 3 lasers. Útil em situações onde é necessário conectar muitos blocos a partir de um gerador.
|
|
||||||
block.powerlaserrouter.description=Divide a entrada de energia em 3 lasers.
|
|
||||||
block.powerlasercorner.name=laser triplo
|
|
||||||
#*Essa nomeação ficou escrota
|
|
||||||
block.powerlasercorner.fulldescription=Laser que distribui energia para duas direções ao mesmo tempo. Útil em situações onde é necessário conectar muitos blocos a partir de um gerador.
|
|
||||||
block.powerlasercorner.description=Divide a entrada de energia em 2 lasers.
|
|
||||||
block.teleporter.name=Teleportador
|
|
||||||
block.teleporter.fulldescription=Bloco avançado de transporte de itens. Teleportadores transferem itens para outros teleportadores da mesma cor. Não faz nada se não houverem outros da mesma cor. Se houverem múltiplos da mesma cor, um aleatório será selecionado. Toque nas flechas para mudar de cor.
|
|
||||||
block.teleporter.description=[interact]Tap block to config[]
|
|
||||||
block.sorter.name=Ordenador
|
block.sorter.name=Ordenador
|
||||||
block.sorter.fulldescription=Separa itens pelo tipo de material. O material a ser aceito é indicado pela cor do bloco. Todos os itens que correspondem ao material a ser separado são direcionados para frente, todo o resto é direcionado para os lados.
|
|
||||||
block.sorter.description=[interact]Aperte no bloco para configurar[]
|
block.sorter.description=[interact]Aperte no bloco para configurar[]
|
||||||
block.core.name=núcleo
|
|
||||||
block.pump.name=bomba
|
|
||||||
block.pump.fulldescription=Bombeia líquidos de um bloco, geralmente água, lava ou petróleo. Os líquidos são bombeados para canos próximos.
|
|
||||||
block.pump.description=Bombeia líquidos para canos próximos.
|
|
||||||
block.fluxpump.name=Bomba de fluxo
|
|
||||||
block.fluxpump.fulldescription=Uma versão avançada da bomba comum. Guarda mais líquido e bombeia mais rápido.
|
|
||||||
block.fluxpump.description=Bombeia líquidos para canos próximos.
|
|
||||||
block.smelter.name=Fornalha
|
block.smelter.name=Fornalha
|
||||||
block.smelter.fulldescription=O bloco de produção essencial. Quando recebe 1 carvão e\n1 ferro produz 1 aço
|
text.credits=Credits
|
||||||
block.smelter.description=Converte carvão + ferro em aço.
|
text.link.discord.description=the official Mindustry discord chatroom
|
||||||
block.crucible.name=Usina de fundição
|
text.link.github.description=Game source code
|
||||||
block.crucible.fulldescription=Um bloco de produção avançado. Quando recebe 1 titânio e 1 aço produz 1 dírio.
|
text.link.dev-builds.description=Unstable development builds
|
||||||
block.crucible.description=Converte aço + titânio em dírio.
|
text.link.trello.description=Official trello board for planned features
|
||||||
block.coalpurifier.name=Extrator de carvão
|
text.link.itch.io.description=itch.io page with PC downloads and web version
|
||||||
block.coalpurifier.fulldescription=Um bloco extrator básico. Produz carvão quando fornecido com grandes quantidades de água e pedra.
|
text.link.google-play.description=Google Play store listing
|
||||||
block.coalpurifier.description=Converte pedra + água em carvão.
|
text.link.wiki.description=official Mindustry wiki
|
||||||
block.titaniumpurifier.name=Extrator de titânio
|
text.linkfail=Failed to open link!\nThe URL has been copied to your cliboard.
|
||||||
block.titaniumpurifier.fulldescription=Um bloco extrator padrão. Produz titânio quando fornecido com grandes quantidas de água e ferro.
|
text.editor.web=The web version does not support the editor!\nDownload the game to use it.
|
||||||
block.titaniumpurifier.description=Converte água e ferro em titânio.
|
text.web.unsupported=The web version does not support this feature! Download the game to use it.
|
||||||
block.oilrefinery.name=Refinaria de Petróleo
|
text.multiplayer.web=This version of the game does not support multiplayer!\nTo play multiplayer from your browser, use the "multiplayer web version" link at the itch.io page.
|
||||||
block.oilrefinery.fulldescription=Refina grande quantidades de petróleo para produzir carvão. Útil para abastecer torres que utilizam carvão quando jazidas de carvão são escassas.
|
text.host.web=The web version does not support hosting games! Download the game to use this feature.
|
||||||
block.oilrefinery.description=Converte petróleo em carvão.
|
text.map.delete=Are you sure you want to delete the map "[orange]{0}[]"?
|
||||||
block.stoneformer.name=Formador de Pedra
|
text.construction.title=Block Construction Guide
|
||||||
block.stoneformer.fulldescription=Solidifica lava para formar pedra. Útil para produzir grandes quantidades de pedra para extratores de carvão.
|
text.construction=You've just selected [accent]block construction mode[].\n\nTo begin placing, simply tap a valid location near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Shift the selection[] by holding and dragging any block in the selection.\n- [accent]Place blocks in a line[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel construction or selection[] by pressing the X at the bottom left.
|
||||||
block.stoneformer.description=Converte lava em pedra.
|
text.deconstruction.title=Block Deconstruction Guide
|
||||||
block.lavasmelter.name=Fornalha à Lava
|
text.deconstruction=You've just selected [accent]block deconstruction mode[].\n\nTo begin breaking, simply tap a block near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin de-constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Remove blocks in an area[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel deconstruction or selection[] by pressing the X at the bottom left.
|
||||||
block.lavasmelter.fulldescription=Usa lava para converter ferro em aço. Uma alternativa para a fundidora. Útil em situações onde não há carvão por perto.
|
text.showagain=Don't show again next session
|
||||||
block.lavasmelter.description=Converte ferro + lava em aço.
|
text.unlocks=Unlocks
|
||||||
block.stonedrill.name=Broca de pedra
|
text.joingame=Join Game
|
||||||
block.stonedrill.fulldescription=A broca essencial. Quando colocada em uma jazida de pedra gera pedra indefinidamente.
|
text.addplayers=Add/Remove Players
|
||||||
block.stonedrill.description=Gera 1 pedra a cada 4 segundos.
|
text.newgame=New Game
|
||||||
#Mines 1 stone every 4 seconds.
|
text.maps=Maps
|
||||||
block.irondrill.name=Broca de Ferro
|
text.maps.none=[LIGHT_GRAY]No maps found!
|
||||||
block.irondrill.fulldescription=Uma broca básica. Quando colocada sobre uma jazida de ferro, lentamente gera ferro.
|
text.about.button=About
|
||||||
#A basic drill. When placed on tungsten ore tiles, outputs tungsten at a slow pace indefinitely.
|
text.name=Name:
|
||||||
block.irondrill.description=Gera 1 ferro a cada 5 segundos.
|
text.unlocked=New Block Unlocked!
|
||||||
block.coaldrill.name=Broca de Carvão
|
text.unlocked.plural=New Blocks Unlocked!
|
||||||
block.coaldrill.fulldescription=Uma broca básica. Quando colocada sobre uma jazida de carvão, lentamente gera carvão.
|
text.players={0} players online
|
||||||
block.coaldrill.description=Gera 1 carvão a cada 5 segundos.
|
text.players.single={0} player online
|
||||||
block.thoriumdrill.name=Broca de Urânio
|
text.server.mismatch=Packet error: possible client/server version mismatch.\nMake sure you and the host have the\nlatest version of Mindustry!
|
||||||
block.thoriumdrill.fulldescription=Uma broca avançada. Quando colocada sobre uma jazida de urânio, lentamente gera urânio.
|
text.server.closing=[accent]Closing server...
|
||||||
block.thoriumdrill.description=Gera 1 Urânio a cada 7 segundos.
|
text.server.kicked.kick=You have been kicked from the server!
|
||||||
block.titaniumdrill.name=Broca de Titânio
|
text.server.kicked.fastShoot=You are shooting too quickly.
|
||||||
block.titaniumdrill.fulldescription=Uma broca avançada. Quando colocada sobre uma jazida de titânio, lentamente gera titânio.
|
text.server.kicked.invalidPassword=Invalid password!
|
||||||
block.titaniumdrill.description=Gera 1 Titânio a cada 5 segundos.
|
text.server.kicked.clientOutdated=Outdated client! Update your game!
|
||||||
block.omnidrill.name=Omnibroca
|
text.server.kicked.serverOutdated=Outdated server! Ask the host to update!
|
||||||
block.omnidrill.fulldescription=A broca suprema. Rapidamente extrai qualquer minério em que é colocada.
|
text.server.kicked.banned=You are banned on this server.
|
||||||
#The ultimate drill. Will mine any ore it is placed on at a rapid pace.
|
text.server.kicked.recentKick=You have been kicked recently.\nWait before connecting again.
|
||||||
block.omnidrill.description=Gera 1 de qualquer recurso a cada 3 segundos.
|
text.server.kicked.nameInUse=There is someone with that name\nalready on this server.
|
||||||
block.coalgenerator.name=Gerador à Carvão
|
text.server.kicked.nameEmpty=Your name must contain at least one character or number.
|
||||||
#Crase ou não?
|
text.server.kicked.idInUse=You are already on this server! Connecting with two accounts is not permitted.
|
||||||
block.coalgenerator.fulldescription=O gerador essencial. Gera energia a partir de carvão. Distribui energia em forma de laser para os 4 lados.
|
text.server.kicked.customClient=This server does not support custom builds. Download an official version.
|
||||||
block.coalgenerator.description=Gera energia a partir de carvão.
|
text.server.connected={0} has joined.
|
||||||
block.thermalgenerator.name=Gerador Térmico
|
text.server.disconnected={0} has disconnected.
|
||||||
block.thermalgenerator.fulldescription=Gera energia a partir de lava. Distribui energia em forma de laser para os 4 lados.
|
text.nohost=Can't host server on a custom map!
|
||||||
block.thermalgenerator.description=Gera energia a partir de lava.
|
text.host.info=The [accent]host[] button hosts a server on ports [scarlet]6567[] and [scarlet]6568.[]\nAnybody on the same [LIGHT_GRAY]wifi or local network[] should be able to see your server in their server list.\n\nIf you want people to be able to connect from anywhere by IP, [accent]port forwarding[] is required.\n\n[LIGHT_GRAY]Note: If someone is experiencing trouble connecting to your LAN game, make sure you have allowed Mindustry access to your local network in your firewall settings.
|
||||||
block.combustiongenerator.name=Gerador à Combustão
|
text.join.info=Here, you can enter a [accent]server IP[] to connect to, or discover [accent]local network[] servers to connect to.\nBoth LAN and WAN multiplayer is supported.\n\n[LIGHT_GRAY]Note: There is no automatic global server list; if you want to connect to someone by IP, you would need to ask the host for their IP.
|
||||||
block.combustiongenerator.fulldescription=Gera energia a partir de petróleo. Distribui energia em forma de laser para os 4 lados.
|
text.hostserver=Host Server
|
||||||
block.combustiongenerator.description=Gera energia a partir de petróleo.
|
text.host=Host
|
||||||
block.rtgenerator.name=Gerador RTG
|
text.hosting=[accent]Opening server...
|
||||||
block.rtgenerator.fulldescription=Gera pouca quantidade de energia a partir do decaimento radioativo do urânio. Distribui energia em forma de laser para os 4 lados.
|
text.hosts.refresh=Refresh
|
||||||
block.rtgenerator.description=Gera energia a partir de Urânio.
|
text.hosts.discovering=Discovering LAN games
|
||||||
block.nuclearreactor.name=Reator Nuclear
|
text.server.refreshing=Refreshing server
|
||||||
block.nuclearreactor.fulldescription=Uma versão avançada do gerador RTG. Gera energia a partir de Urânio. Requer constante resfriamento à água. Altamente volátil; explodirá violentamente se não for suprido com quantiddades suficientes de água.
|
text.hosts.none=[lightgray]No LAN games found!
|
||||||
block.turret.name=Torre Comum
|
text.host.invalid=[scarlet]Can't connect to host.
|
||||||
block.turret.fulldescription=Uma torre básica e barata. Usa pedra como munição. Tem alcance um pouco maior que a torre dupla.
|
text.server.friendlyfire=Friendly Fire
|
||||||
block.turret.description=[turretinfo]Munição: pedra
|
text.trace=Trace Player
|
||||||
block.doubleturret.name=Torre Dupla
|
text.trace.playername=Player name: [accent]{0}
|
||||||
block.doubleturret.fulldescription=Uma versão um pouco mais poderosa do que a torre comum. Usa pedra como munição. Causa um dano maior, porém tem menor alcance. Atira dois projéteis.
|
text.trace.ip=IP: [accent]{0}
|
||||||
block.doubleturret.description=[turretinfo]Munição: pedra
|
text.trace.id=Unique ID: [accent]{0}
|
||||||
block.machineturret.name=Torre Automática
|
text.trace.android=Android Client: [accent]{0}
|
||||||
block.machineturret.fulldescription=Uma torre padrão completa. Usa ferro como munição. Tem alta taxa de disparo e dano decente.
|
text.trace.modclient=Custom Client: [accent]{0}
|
||||||
block.machineturret.description=[turretinfo]Munição: ferro
|
text.trace.totalblocksbroken=Total blocks broken: [accent]{0}
|
||||||
block.shotgunturret.name=Torre Splitter
|
text.trace.structureblocksbroken=Structure blocks broken: [accent]{0}
|
||||||
#Splitter turret
|
text.trace.lastblockbroken=Last block broken: [accent]{0}
|
||||||
block.shotgunturret.fulldescription=Uma torre padrão. Usa ferro como munição. Atira 7 balas em forma de cone. Pouco alcance, porém maior dano do que a Torre Dupla.
|
text.trace.totalblocksplaced=Total blocks placed: [accent]{0}
|
||||||
block.shotgunturret.description=[turretinfo]Munição: ferro
|
text.trace.lastblockplaced=Last block placed: [accent]{0}
|
||||||
block.flameturret.name=Torre lança-\nchamas
|
text.invalidid=Invalid client ID! Submit a bug report.
|
||||||
block.flameturret.fulldescription=Torre avançada de baixo alcance. Usa carvão. Pouco alcance mas alto dano. Boa para trechos estreitos. Recomenda-se usá-la atŕas de paredes.
|
text.server.bans=Bans
|
||||||
block.flameturret.description=[turretinfo]Munição: carvão
|
text.server.bans.none=No banned players found!
|
||||||
block.sniperturret.name=Torre Sniper
|
text.server.admins=Admins
|
||||||
#Torre Railgun?
|
text.server.admins.none=No admins found!
|
||||||
block.sniperturret.fulldescription=Torre avançada de longo alcance. Usa aço como munição. Dano altíssimo, porém baixa taxa de disparo. Cara para usar, porém pode ser colocada longe das linhas inimigas dado seu alcance.
|
text.server.add=Add Server
|
||||||
block.sniperturret.description=[turretinfo]Munição: aço
|
text.server.delete=Are you sure you want to delete this server?
|
||||||
block.mortarturret.name=Torre Flak
|
text.server.hostname=Host: {0}
|
||||||
block.mortarturret.fulldescription=Torre avançada de dano em área. Usa carvão. Taxa de disparo e balas lentas, mas alto dano em alvo único ou distribuído.
|
text.server.edit=Edit Server
|
||||||
block.mortarturret.description=[turretinfo]Munição: carvão
|
text.server.outdated=[crimson]Outdated Server![]
|
||||||
block.laserturret.name=Torre laser
|
text.server.outdated.client=[crimson]Outdated Client![]
|
||||||
block.laserturret.fulldescription=Torre de alvo único avançada. Usa energia. Boa torre de alcance médio e uso geral. Alvo único apenas. Nunca erra.
|
text.server.version=[lightgray]Version: {0}
|
||||||
block.laserturret.description=[turretinfo]Usa Energia
|
text.server.custombuild=[yellow]Custom Build
|
||||||
block.waveturret.name=Torre Tesla
|
text.confirmban=Are you sure you want to ban this player?
|
||||||
block.waveturret.fulldescription=Torre de múltiplos alvos avançada. Usa Energia. Alcance médio. Nunca erra. Dano médio-baixo, porém pode acertar vários inimigos simultaneamente com raios conectados.
|
text.confirmunban=Are you sure you want to unban this player?
|
||||||
block.waveturret.description=[turretinfo]Usa Energia
|
text.confirmadmin=Are you sure you want to make this player an admin?
|
||||||
block.plasmaturret.name=Torre de Plasma
|
text.confirmunadmin=Are you sure you want to remove admin status from this player?
|
||||||
block.plasmaturret.fulldescription=Versão altamente avançada da Torre lança-chamas. Usa carvão. Dano altíssimo e alcance médio-baixo.
|
text.joingame.title=Join Game
|
||||||
block.plasmaturret.description=[turretinfo]Munição: carvão
|
text.joingame.ip=IP:
|
||||||
block.chainturret.name=Canhão automático
|
text.disconnect=Disconnected.
|
||||||
block.chainturret.fulldescription=A torre de tiro rápido mais avançada. Usa Urânio como munição. Atira grandes projéteis rapidamente. Alcance médio. Ocupa várias células. Extremamente resistente.
|
text.disconnect.data=Failed to load world data!
|
||||||
block.chainturret.description=[turretinfo]Munição: Urânio
|
text.connecting=[accent]Connecting...
|
||||||
block.titancannon.name=Canhão Titã
|
text.connecting.data=[accent]Loading world data...
|
||||||
block.titancannon.fulldescription=A torre de longo alcance mais avançada. Usa Urânio como munição. Atira várias balas de dano em área à uma taxa de disparo média. Alto alcance. Ocupa várias células. Extremamente resistente.
|
text.connectfail=[crimson]Failed to connect to server: [orange]{0}
|
||||||
block.titancannon.description=[turretinfo]Munição: Urânio
|
text.server.port=Port:
|
||||||
block.playerspawn.name=playerspawn
|
text.server.addressinuse=Address already in use!
|
||||||
block.enemyspawn.name=enemyspawn
|
text.server.invalidport=Invalid port number!
|
||||||
|
text.server.error=[crimson]Error hosting server: [orange]{0}
|
||||||
|
text.save.new=New Save
|
||||||
|
text.save.none=No saves found!
|
||||||
|
text.save.delete.confirm=Are you sure you want to delete this save?
|
||||||
|
text.save.delete=Delete
|
||||||
|
text.save.export=Export Save
|
||||||
|
text.save.import.invalid=[orange]This save is invalid!
|
||||||
|
text.save.import.fail=[crimson]Failed to import save: [orange]{0}
|
||||||
|
text.save.export.fail=[crimson]Failed to export save: [orange]{0}
|
||||||
|
text.save.import=Import Save
|
||||||
|
text.save.newslot=Save name:
|
||||||
|
text.save.rename=Rename
|
||||||
|
text.save.rename.text=New name:
|
||||||
|
text.on=On
|
||||||
|
text.off=Off
|
||||||
|
text.save.autosave=Autosave: {0}
|
||||||
|
text.save.map=Map: {0}
|
||||||
|
text.save.difficulty=Difficulty: {0}
|
||||||
|
text.copylink=Copy Link
|
||||||
|
text.changelog.title=Changelog
|
||||||
|
text.changelog.loading=Getting changelog...
|
||||||
|
text.changelog.error.android=[orange]Note that the changelog sometimes does not work on Android 4.4 and below!\nThis is due to an internal Android bug.
|
||||||
|
text.changelog.error.ios=[orange]The changelog is currently not supported in iOS.
|
||||||
|
text.changelog.error=[scarlet]Error getting changelog!\nCheck your internet connection.
|
||||||
|
text.changelog.current=[yellow][[Current version]
|
||||||
|
text.changelog.latest=[orange][[Latest version]
|
||||||
|
text.saving=[accent]Saving...
|
||||||
|
text.unknown=Unknown
|
||||||
|
text.custom=Custom
|
||||||
|
text.builtin=Built-In
|
||||||
|
text.map.delete.confirm=Are you sure you want to delete this map? This action cannot be undone!
|
||||||
|
text.map.random=[accent]Random Map
|
||||||
|
text.map.nospawn=This map does not have any cores for the player to spawn in! Add a [ROYAL]blue[] core to this map in the editor.
|
||||||
|
text.editor.slope=\\
|
||||||
|
text.editor.openin=Open In Editor
|
||||||
|
text.editor.oregen=Ore Generation
|
||||||
|
text.editor.oregen.info=Ore Generation:
|
||||||
|
text.editor.mapinfo=Map Info
|
||||||
|
text.editor.author=Author:
|
||||||
|
text.editor.description=Description:
|
||||||
|
text.editor.name=Name:
|
||||||
|
text.editor.teams=Teams
|
||||||
|
text.editor.elevation=Elevation
|
||||||
|
text.editor.saved=Saved!
|
||||||
|
text.editor.save.noname=Your map does not have a name! Set one in the 'map info' menu.
|
||||||
|
text.editor.save.overwrite=Your map overwrites a built-in map! Pick a different name in the 'map info' menu.
|
||||||
|
text.editor.import.exists=[scarlet]Unable to import:[] a built-in map named '{0}' already exists!
|
||||||
|
text.editor.import=Import...
|
||||||
|
text.editor.importmap=Import Map
|
||||||
|
text.editor.importmap.description=Import an already existing map
|
||||||
|
text.editor.importfile=Import File
|
||||||
|
text.editor.importfile.description=Import an external map file
|
||||||
|
text.editor.importimage=Import Terrain Image
|
||||||
|
text.editor.importimage.description=Import an external map image file
|
||||||
|
text.editor.export=Export...
|
||||||
|
text.editor.exportfile=Export File
|
||||||
|
text.editor.exportfile.description=Export a map file
|
||||||
|
text.editor.exportimage=Export Terrain Image
|
||||||
|
text.editor.exportimage.description=Export a map image file
|
||||||
|
text.editor.overwrite.confirm=[scarlet]Warning![] A map with this name already exists. Are you sure you want to overwrite it?
|
||||||
|
text.fps=FPS: {0}
|
||||||
|
text.tps=TPS: {0}
|
||||||
|
text.ping=Ping: {0}ms
|
||||||
|
text.language.restart=Please restart your game for the language settings to take effect.
|
||||||
|
text.settings.language=Language
|
||||||
|
text.settings.rebind=Rebind
|
||||||
|
text.yes=Yes
|
||||||
|
text.no=No
|
||||||
|
text.info.title=[accent]Info
|
||||||
|
text.blocks.targetsair=Targets Air
|
||||||
|
text.blocks.itemspeed=Units Moved
|
||||||
|
text.blocks.shootrange=Range
|
||||||
|
text.blocks.poweruse=Power Use
|
||||||
|
text.blocks.inputitemcapacity=Input Item Capacity
|
||||||
|
text.blocks.outputitemcapacity=Input Item Capacity
|
||||||
|
text.blocks.maxpowergeneration=Max Power Generation
|
||||||
|
text.blocks.powertransferspeed=Power Transfer
|
||||||
|
text.blocks.craftspeed=Production Speed
|
||||||
|
text.blocks.inputliquidaux=Aux Liquid
|
||||||
|
text.blocks.inputitems=Input Items
|
||||||
|
text.blocks.outputitem=Output Item
|
||||||
|
text.blocks.drilltier=Drillables
|
||||||
|
text.blocks.drillspeed=Base Drill Speed
|
||||||
|
text.blocks.liquidoutput=Liquid Output
|
||||||
|
text.blocks.liquiduse=Liquid Use
|
||||||
|
text.blocks.coolant=Coolant
|
||||||
|
text.blocks.coolantuse=Coolant Use
|
||||||
|
text.blocks.inputliquidfuel=Fuel Liquid
|
||||||
|
text.blocks.liquidfueluse=Liquid Fuel Use
|
||||||
|
text.blocks.reload=Reload
|
||||||
|
text.blocks.inputfuel=Fuel
|
||||||
|
text.blocks.fuelburntime=Fuel Burn Time
|
||||||
|
text.blocks.inputcapacity=Input capacity
|
||||||
|
text.blocks.outputcapacity=Output capacity
|
||||||
|
text.unit.blocks=blocks
|
||||||
|
text.unit.powersecond=power units/second
|
||||||
|
text.unit.liquidsecond=liquid units/second
|
||||||
|
text.unit.itemssecond=items/second
|
||||||
|
text.unit.pixelssecond=pixels/second
|
||||||
|
text.unit.liquidunits=liquid units
|
||||||
|
text.unit.powerunits=power units
|
||||||
|
text.unit.degrees=degrees
|
||||||
|
text.unit.seconds=seconds
|
||||||
|
text.unit.none=
|
||||||
|
text.unit.items=items
|
||||||
|
text.category.general=General
|
||||||
|
text.category.power=Power
|
||||||
|
text.category.liquids=Liquids
|
||||||
|
text.category.items=Items
|
||||||
|
text.category.crafting=Crafting
|
||||||
|
text.category.shooting=Shooting
|
||||||
|
setting.difficulty.insane=insane
|
||||||
|
setting.difficulty.purge=purge
|
||||||
|
setting.saveinterval.name=Autosave Interval
|
||||||
|
setting.seconds={0} Seconds
|
||||||
|
setting.fullscreen.name=Fullscreen
|
||||||
|
setting.multithread.name=Multithreading
|
||||||
|
setting.minimap.name=Show Minimap
|
||||||
|
text.keybind.title=Rebind Keys
|
||||||
|
keybind.shoot.name=shoot
|
||||||
|
keybind.block_info.name=block_info
|
||||||
|
keybind.chat.name=chat
|
||||||
|
keybind.player_list.name=player_list
|
||||||
|
keybind.console.name=console
|
||||||
|
mode.text.help.title=Description of modes
|
||||||
|
mode.waves.description=the normal mode. limited resources and automatic incoming waves.
|
||||||
|
mode.sandbox.description=infinite resources and no timer for waves.
|
||||||
|
mode.freebuild.description=limited resources and no timer for waves.
|
||||||
|
content.item.name=Items
|
||||||
|
content.liquid.name=Liquids
|
||||||
|
content.unit-type.name=Units
|
||||||
|
content.recipe.name=Blocks
|
||||||
|
item.stone.description=A common raw material. Used for separating and refining into other materials, or melting into lava.
|
||||||
|
item.tungsten.name=Tungsten
|
||||||
|
item.tungsten.description=A common, but very useful structure material. Used in drills and heat-resistant blocks such as generators and smelteries.
|
||||||
|
item.lead.name=Lead
|
||||||
|
item.lead.description=A basic starter material. Used extensively in electronics and liquid transportation blocks.
|
||||||
|
item.coal.description=A common and readily available fuel.
|
||||||
|
item.carbide.name=Carbide
|
||||||
|
item.carbide.description=A tough alloy made with tungsten and carbon. Used in advanced transportation blocks and high-tier drills.
|
||||||
|
item.titanium.description=A rare super-light metal used extensively in liquid transportation, drills and aircraft.
|
||||||
|
item.thorium.description=A dense, radioactive metal used as structural support and nuclear fuel.
|
||||||
|
item.silicon.name=Silicon
|
||||||
|
item.silcion.description=An extremely useful semiconductor, with applications in solar panels and many complex electronics.
|
||||||
|
item.plastanium.name=Plastanium
|
||||||
|
item.plastanium.description=A light, ductile material used in advanced aircraft and fragmentation ammunition.
|
||||||
|
item.phase-matter.name=Phase Matter
|
||||||
|
item.surge-alloy.name=Surge Alloy
|
||||||
|
item.biomatter.name=Biomatter
|
||||||
|
item.biomatter.description=A clump of organic mush; used for conversion into oil or as a basic fuel.
|
||||||
|
item.sand.name=Sand
|
||||||
|
item.sand.description=A common material that is used extensively in smelting, both in alloying and as a flux.
|
||||||
|
item.blast-compound.name=Blast Compound
|
||||||
|
item.blast-compound.description=A volatile compound used in bombs and explosives. While it can burned as fuel, this is not advised.
|
||||||
|
item.pyratite.name=Pyratite
|
||||||
|
item.pyratite.description=An extremely flammable substance used in incendiary weapons.
|
||||||
|
liquid.cryofluid.name=Cryofluid
|
||||||
|
text.item.explosiveness=[LIGHT_GRAY]Explosiveness: {0}
|
||||||
|
text.item.flammability=[LIGHT_GRAY]Flammability: {0}
|
||||||
|
text.item.radioactivity=[LIGHT_GRAY]Radioactivity: {0}
|
||||||
|
text.item.fluxiness=[LIGHT_GRAY]Flux Power: {0}
|
||||||
|
text.item.hardness=[LIGHT_GRAY]Hardness: {0}
|
||||||
|
text.liquid.heatcapacity=[LIGHT_GRAY]Heat Capacity: {0}
|
||||||
|
text.liquid.viscosity=[LIGHT_GRAY]Viscosity: {0}
|
||||||
|
text.liquid.temperature=[LIGHT_GRAY]Temperature: {0}
|
||||||
|
block.tungsten-wall.name=Tungsten Wall
|
||||||
|
block.tungsten-wall-large.name=Large Tungsten Wall
|
||||||
|
block.carbide-wall.name=Carbide Wall
|
||||||
|
block.carbide-wall-large.name=Large Carbide Wall
|
||||||
|
block.thorium-wall.name=Thorium Wall
|
||||||
|
block.thorium-wall-large.name=Large Thorium Wall
|
||||||
|
block.duo.name=Duo
|
||||||
|
block.scorch.name=Scorch
|
||||||
|
block.hail.name=Hail
|
||||||
|
block.lancer.name=Lancer
|
||||||
|
block.titanium-conveyor.name=Titanium Conveyor
|
||||||
|
block.splitter.name=Splitter
|
||||||
|
block.splitter.description=Outputs items into two opposite directions immediately after they are recieved.
|
||||||
|
block.distributor.name=Distributor
|
||||||
|
block.distributor.description=A splitter that can split items into 8 directions.
|
||||||
|
block.overflow-gate.name=Overflow Gate
|
||||||
|
block.overflow-gate.description=A combination splitter and router that only outputs to the left and right if the front path is blocked.
|
||||||
|
block.bridgeconveyor.name=Bridge Conveyor
|
||||||
|
block.bridgeconveyor.description=A conveyor that can go over other blocks, for up to two total blocks.
|
||||||
|
block.arc-smelter.name=Arc Smelter
|
||||||
|
block.silicon-smelter.name=Silicon Smelter
|
||||||
|
block.phase-weaver.name=Phase Weaver
|
||||||
|
block.pulverizer.name=Pulverizer
|
||||||
|
block.cryofluidmixer.name=Cryofluid Mixer
|
||||||
|
block.melter.name=Melter
|
||||||
|
block.incinerator.name=Incinerator
|
||||||
|
block.biomattercompressor.name=Biomatter Compressor
|
||||||
|
block.separator.name=Separator
|
||||||
|
block.centrifuge.name=Centrifuge
|
||||||
|
block.power-node.name=Power Node
|
||||||
|
block.power-node-large.name=Large Power Node
|
||||||
|
block.battery.name=Battery
|
||||||
|
block.battery-large.name=Large Battery
|
||||||
|
block.combustion-generator.name=Combustion Generator
|
||||||
|
block.turbine-generator.name=Turbine Generator
|
||||||
|
block.tungsten-drill.name=Tungsten Drill
|
||||||
|
block.carbide-drill.name=Carbide Drill
|
||||||
|
block.laser-drill.name=Laser Drill
|
||||||
|
block.water-extractor.name=Water Extractor
|
||||||
|
block.cultivator.name=Cultivator
|
||||||
|
block.dart-ship-factory.name=Dart Ship Factory
|
||||||
|
block.delta-mech-factory.name=Delta Mech Factory
|
||||||
|
block.dronefactory.name=Drone Factory
|
||||||
|
block.repairpoint.name=Repair Point
|
||||||
|
block.resupplypoint.name=Resupply Point
|
||||||
|
block.liquidtank.name=Liquid Tank
|
||||||
|
block.bridgeconduit.name=Bridge Conduit
|
||||||
|
block.mechanical-pump.name=Mechanical Pump
|
||||||
|
block.itemsource.name=Item Source
|
||||||
|
block.itemvoid.name=Item Void
|
||||||
|
block.liquidsource.name=Liquid Source
|
||||||
|
block.powervoid.name=Power Void
|
||||||
|
block.powerinfinite.name=Power Infinite
|
||||||
|
block.unloader.name=Unloader
|
||||||
|
block.sortedunloader.name=Sorted Unloader
|
||||||
|
block.vault.name=Vault
|
||||||
|
block.wave.name=Wave
|
||||||
|
block.swarmer.name=Swarmer
|
||||||
|
block.salvo.name=Salvo
|
||||||
|
block.ripple.name=Ripple
|
||||||
|
block.phase-conveyor.name=Phase Conveyor
|
||||||
|
block.bridge-conveyor.name=Bridge Conveyor
|
||||||
|
block.plastanium-compressor.name=Plastanium Compressor
|
||||||
|
block.pyratite-mixer.name=Pyratite Mixer
|
||||||
|
block.blast-mixer.name=Blast Mixer
|
||||||
|
block.solidifer.name=Solidifer
|
||||||
|
block.solar-panel.name=Solar Panel
|
||||||
|
block.solar-panel-large.name=Large Solar Panel
|
||||||
|
block.oil-extractor.name=Oil Extractor
|
||||||
|
block.javelin-ship-factory.name=Javelin Ship factory
|
||||||
|
block.drone-factory.name=Drone Factory
|
||||||
|
block.fabricator-factory.name=Fabricator Factory
|
||||||
|
block.repair-point.name=Repair Point
|
||||||
|
block.resupply-point.name=Resupply Point
|
||||||
|
block.pulse-conduit.name=Pulse Conduit
|
||||||
|
block.phase-conduit.name=Phase Conduit
|
||||||
|
block.liquid-router.name=Liquid Router
|
||||||
|
block.liquid-tank.name=Liquid Tank
|
||||||
|
block.liquid-junction.name=Liquid Junction
|
||||||
|
block.bridge-conduit.name=Bridge Conduit
|
||||||
|
block.rotary-pump.name=Rotary Pump
|
||||||
|
block.nuclear-reactor.name=Nuclear Reactor
|
||||||
|
|||||||
@@ -1,500 +1,494 @@
|
|||||||
text.about = Створено [ROYAL] Anuken. []\nСпочатку запис у [orange] GDL [] MM Jam.\nТворці:\n- SFX зроблено з [YELLOW] bfxr []\n- Музика зроблена [GREEN] RoccoW [] / Знайдено на [lime] FreeMusicArchive.org [] \nОсоблива подяка:\n- [coral] MitchellFJN []: екстенсивне тестування та відгуки\n- [sky] Luxray5474 []: робота з вікі, вклади коду\n- Всі бета-тестери на itch.io та Google Play\n
|
text.about=Створено [ROYAL] Anuken. []\nСпочатку запис у [orange] GDL [] MM Jam.\nТворці:\n- SFX зроблено з [YELLOW] bfxr []\n- Музика зроблена [GREEN] RoccoW [] / Знайдено на [lime] FreeMusicArchive.org [] \nОсоблива подяка:\n- [coral] MitchellFJN []: екстенсивне тестування та відгуки\n- [sky] Luxray5474 []: робота з вікі, вклади коду\n- Всі бета-тестери на itch.io та Google Play\n
|
||||||
text.discord = Приєднуйтесь до нашого Discord!
|
text.discord=Приєднуйтесь до нашого Discord!
|
||||||
text.changes = [SCARLET] Увага! \n[] Деякі важливі механіки гри були змінені.\n- [accent] Телепорти [] тепер використовують електроенергію. \n- [accent] Домінна піч [] та [accent] Тиглі [] тепер мають ліміт. \n- [accent] Тиглі [] зараз вимагають вугілля як паливо.
|
text.gameover=Ядро було зруйновано.
|
||||||
text.gameover = Ядро було зруйновано.
|
text.highscore=[YELLOW] Новий рекорд!
|
||||||
text.highscore = [YELLOW] Новий рекорд!
|
text.lasted=Ви тримались до хвилі
|
||||||
text.lasted = Ви тримались до хвилі
|
text.level.highscore=Рекорд: [accent] {0}
|
||||||
text.level.highscore = Рекорд: [accent] {0}
|
text.level.delete.title=Підтвердьте видалення
|
||||||
text.level.delete.title = Підтвердьте видалення
|
text.level.select=Вибір рівня
|
||||||
text.level.delete = Ви впевнені, що хочете видалити карту \"[orange] {0} \"?
|
text.level.mode=Ігровий режим
|
||||||
text.level.select = Вибір рівня
|
text.savegame=Зберегти гру
|
||||||
text.level.mode = Ігровий режим
|
text.loadgame=Завантажити гру
|
||||||
text.savegame = Зберегти гру
|
text.joingame=Приєднатися\nдо гри
|
||||||
text.loadgame = Завантажити гру
|
|
||||||
text.joingame = Приєднатися\nдо гри
|
|
||||||
text.newgame=Нова гра
|
text.newgame=Нова гра
|
||||||
text.quit = Вийти
|
text.quit=Вийти
|
||||||
text.about.button = Про
|
text.about.button=Про
|
||||||
text.name = Назва:
|
text.name=Назва:
|
||||||
text.public = Публічний
|
text.players={0} гравців онлайн
|
||||||
text.players = {0} гравців онлайн
|
text.players.single={0} гравців онлайн
|
||||||
text.server.player.host = {0} (host)
|
text.server.mismatch=Пакетна помилка: невідповідність версії версії клієнта / сервера. Переконайтеся, що ви та хост мають останню версію Mindustry!
|
||||||
text.players.single = {0} гравців онлайн
|
text.server.closing=[accent] Закриття сервера ...
|
||||||
text.server.mismatch = Пакетна помилка: невідповідність версії версії клієнта / сервера. Переконайтеся, що ви та хост мають останню версію Mindustry!
|
text.server.kicked.kick=Ви були вигнані з сервера!
|
||||||
text.server.closing = [accent] Закриття сервера ...
|
text.server.kicked.invalidPassword=Невірний пароль!
|
||||||
text.server.kicked.kick = Ви були вигнані з сервера!
|
text.server.kicked.clientOutdated=Застарілий клієнт! Оновіть свою гру!
|
||||||
text.server.kicked.invalidPassword = Невірний пароль!
|
text.server.kicked.serverOutdated=Застарілий сервер! Попросіть хост оновити!
|
||||||
text.server.kicked.clientOutdated = Застарілий клієнт! Оновіть свою гру!
|
text.server.connected={0} приєднався.
|
||||||
text.server.kicked.serverOutdated = Застарілий сервер! Попросіть хост оновити!
|
text.server.disconnected={0} від'єднано.
|
||||||
text.server.connected = {0} приєднався.
|
text.nohost=Неможливо розмістити сервер на власній карті!
|
||||||
text.server.disconnected = {0} від'єднано.
|
text.hostserver=Хост-сервер
|
||||||
text.nohost = Неможливо розмістити сервер на власній карті!
|
text.host=Хост
|
||||||
text.hostserver = Хост-сервер
|
text.hosting=[accent] Відкриття сервера ...
|
||||||
text.host = Хост
|
text.hosts.refresh=Оновити
|
||||||
text.hosting = [accent] Відкриття сервера ...
|
text.hosts.discovering=Знайомство з мережевими іграми
|
||||||
text.hosts.refresh = Оновити
|
text.server.refreshing=Оновити сервери
|
||||||
text.hosts.discovering = Знайомство з мережевими іграми
|
text.hosts.none=[lightgray] Ніяких ігор у мережі не знайдено!
|
||||||
text.server.refreshing = Оновити сервери
|
text.host.invalid=[scarlet] Неможливо підключитися до хосту.
|
||||||
text.hosts.none = [lightgray] Ніяких ігор у мережі не знайдено!
|
text.server.friendlyfire=Дружній вогонь
|
||||||
text.host.invalid = [scarlet] Неможливо підключитися до хосту.
|
text.server.add=Додати сервер
|
||||||
text.server.friendlyfire = Дружній вогонь
|
text.server.delete=Ви впевнені, що хочете видалити цей сервер?
|
||||||
text.server.add = Додати сервер
|
text.server.hostname=Хост: {0}
|
||||||
text.server.delete = Ви впевнені, що хочете видалити цей сервер?
|
text.server.edit=Редагувати сервер
|
||||||
text.server.hostname = Хост: {0}
|
text.joingame.title=Приєднатися до гри
|
||||||
text.server.edit = Редагувати сервер
|
text.joingame.ip=IP
|
||||||
text.joingame.byip = [] Приєднатися по IP ...[]
|
text.disconnect=Роз'єднано
|
||||||
text.joingame.title = Приєднатися до гри
|
text.connecting=[accent] Підключення ...
|
||||||
text.joingame.ip = IP
|
text.connecting.data=[accent] Завантаження світових даних ...
|
||||||
text.disconnect = Роз'єднано
|
text.connectfail=[crimson] Не вдалося підключитися до сервера: [orange] {0}
|
||||||
text.connecting = [accent] Підключення ...
|
text.server.port=Порт
|
||||||
text.connecting.data = [accent] Завантаження світових даних ...
|
text.server.addressinuse=Адреса вже використовується!
|
||||||
text.connectfail = [crimson] Не вдалося підключитися до сервера: [orange] {0}
|
text.server.invalidport=Недійсний номер порту.
|
||||||
text.server.port = Порт
|
text.server.error=[crimson] Помилка хостингу сервера: [orange] {0}
|
||||||
text.server.addressinuse = Адреса вже використовується!
|
text.save.new=Нове збереження
|
||||||
text.server.invalidport = Недійсний номер порту.
|
text.save.overwrite=Ви впевнені, що хочете перезаписати цей слот для збереження?
|
||||||
text.server.error = [crimson] Помилка хостингу сервера: [orange] {0}
|
text.overwrite=Перезаписати
|
||||||
text.tutorial.back = < Попер.
|
text.save.none=Не знайдено жодних збережень!
|
||||||
text.tutorial.next = Далі >
|
text.saveload=[accent] Збереження ...
|
||||||
text.save.new = Нове збереження
|
text.savefail=Не вдалося зберегти гру!
|
||||||
text.save.overwrite = Ви впевнені, що хочете перезаписати цей слот для збереження?
|
text.save.delete.confirm=Ви впевнені, що хочете видалити це збереження?
|
||||||
text.overwrite = Перезаписати
|
text.save.delete=Видалити
|
||||||
text.save.none = Не знайдено жодних збережень!
|
text.save.export=Експорт збереження
|
||||||
text.saveload = [accent] Збереження ...
|
text.save.import.invalid=[orange] Це збереження недійсне!
|
||||||
text.savefail = Не вдалося зберегти гру!
|
text.save.import.fail=[crimson] Не вдалося імпортувати збереження: [orange] {0}
|
||||||
text.save.delete.confirm = Ви впевнені, що хочете видалити це збереження?
|
text.save.export.fail=[crimson] Не вдалося експортувати збереження: [orange] {0}
|
||||||
text.save.delete = Видалити
|
text.save.import=Імпортувати збереження
|
||||||
text.save.export = Експорт збереження
|
text.save.newslot=Назва збереження:
|
||||||
text.save.import.invalid = [orange] Це збереження недійсне!
|
text.save.rename=Переіменувати
|
||||||
text.save.import.fail = [crimson] Не вдалося імпортувати збереження: [orange] {0}
|
text.save.rename.text=Нова назва:
|
||||||
text.save.export.fail = [crimson] Не вдалося експортувати збереження: [orange] {0}
|
text.selectslot=Виберіть збереження.
|
||||||
text.save.import = Імпортувати збереження
|
text.slot=[accent] слот {0}
|
||||||
text.save.newslot = Назва збереження:
|
text.save.corrupted=[orange] Збережений файл пошкоджений або він невірний!
|
||||||
text.save.rename = Переіменувати
|
text.empty=<порожньо>
|
||||||
text.save.rename.text = Нова назва:
|
text.on=Увімкнути
|
||||||
text.selectslot = Виберіть збереження.
|
text.off=Вимкнути
|
||||||
text.slot = [accent] слот {0}
|
text.save.autosave=Автозбереження: {0}
|
||||||
text.save.corrupted = [orange] Збережений файл пошкоджений або він невірний!
|
text.save.map=Карта
|
||||||
text.empty = <порожньо>
|
text.save.wave=Хвиля {0}
|
||||||
text.on = Увімкнути
|
text.save.difficulty=Складність
|
||||||
text.off = Вимкнути
|
text.save.date=Останнє збережено: {0}
|
||||||
text.save.autosave = Автозбереження: {0}
|
text.confirm=Підтвердити
|
||||||
text.save.map = Карта
|
text.delete=Видалити
|
||||||
text.save.wave = Хвиля {0}
|
text.ok=ОК
|
||||||
text.save.difficulty = Складність
|
text.open=Відкрити
|
||||||
text.save.date = Останнє збережено: {0}
|
text.cancel=Скасувати
|
||||||
text.confirm = Підтвердити
|
text.openlink=Відкрити посилання
|
||||||
text.delete = Видалити
|
text.back=Назад
|
||||||
text.ok = ОК
|
text.quit.confirm=Ти впевнений що хочеш піти?
|
||||||
text.open = Відкрити
|
text.loading=[accent] Завантаження ...
|
||||||
text.cancel = Скасувати
|
text.wave=[orange] хвиля {0}
|
||||||
text.openlink = Відкрити посилання
|
text.wave.waiting=Хвиля через {0}
|
||||||
text.back = Назад
|
text.waiting=Очікування…
|
||||||
text.quit.confirm = Ти впевнений що хочеш піти?
|
text.enemies={0} Вороги
|
||||||
text.loading = [accent] Завантаження ...
|
text.enemies.single=Противник
|
||||||
text.wave = [orange] хвиля {0}
|
text.loadimage=Завантажити зображення
|
||||||
text.wave.waiting = Хвиля через {0}
|
text.saveimage=Зберегти зображення
|
||||||
text.waiting = Очікування…
|
text.editor.badsize=[orange] Недійсні розміри зображення! [] Дійсні розміри карти: {0}
|
||||||
text.enemies = {0} Вороги
|
text.editor.errorimageload=Помилка завантаження файлу зображень: [orange] {0}
|
||||||
text.enemies.single = Противник
|
text.editor.errorimagesave=Помилка збереження файлу зображення: [orange] {0}
|
||||||
text.loadimage = Завантажити зображення
|
text.editor.generate=Генератор
|
||||||
text.saveimage = Зберегти зображення
|
text.editor.resize=Змінити розмір
|
||||||
text.oregen = Генерація руд
|
text.editor.loadmap=// Завантажити карту
|
||||||
text.editor.badsize = [orange] Недійсні розміри зображення! [] Дійсні розміри карти: {0}
|
text.editor.savemap=Зберегти карту
|
||||||
text.editor.errorimageload = Помилка завантаження файлу зображень: [orange] {0}
|
text.editor.loadimage=Завантажити зображення
|
||||||
text.editor.errorimagesave = Помилка збереження файлу зображення: [orange] {0}
|
text.editor.saveimage=Зберегти зображення
|
||||||
text.editor.generate = Генератор
|
text.editor.unsaved=[scarlet] У вас є незбережені зміни! [] Ви впевнені, що хочете вийти?
|
||||||
text.editor.resize = Змінити розмір
|
text.editor.resizemap=Змінити розмір карти
|
||||||
text.editor.loadmap = // Завантажити карту
|
text.editor.mapname=Назва карти:
|
||||||
text.editor.savemap = Зберегти карту
|
text.editor.overwrite=[accent] Попередження! Це перезаписує існуючу карту.
|
||||||
text.editor.loadimage = Завантажити зображення
|
text.editor.selectmap=Виберіть карту для завантаження:
|
||||||
text.editor.saveimage = Зберегти зображення
|
text.width=Ширина
|
||||||
text.editor.unsaved = [scarlet] У вас є незбережені зміни! [] Ви впевнені, що хочете вийти?
|
text.height=Висота
|
||||||
text.editor.brushsize = Розмір пензля: {0}
|
text.menu=Меню
|
||||||
text.editor.noplayerspawn = Ця карта не має ігрового поля для гравця!
|
text.play=Відтворити
|
||||||
text.editor.manyplayerspawns = Карти не можуть мати більше одного ігрового поля для гравців!
|
text.load=Завантаження
|
||||||
text.editor.manyenemyspawns = Не може бути більше ніж {0} ворожих точок!
|
text.save=Зберегти
|
||||||
text.editor.resizemap = Змінити розмір карти
|
text.language.restart=Будь ласка, перезапустіть свою гру, щоб налаштування мови набули чинності.
|
||||||
text.editor.resizebig = [scarlet] Попередження! [] Карти, розмір яких перевищує 256 одиниць, можуть виснути і можуть бути нестабільними.
|
text.settings.language=Мова
|
||||||
text.editor.mapname = Назва карти:
|
text.settings=Налаштування
|
||||||
text.editor.overwrite = [accent] Попередження! Це перезаписує існуючу карту.
|
text.tutorial=Навчальний\nпосібник
|
||||||
text.editor.failoverwrite = [crimson] Неможливо перезаписати карту за замовчуванням!
|
text.editor=Редактор
|
||||||
text.editor.selectmap = Виберіть карту для завантаження:
|
text.mapeditor=Редактор карт
|
||||||
text.width = Ширина
|
text.donate=Підтримати проект
|
||||||
text.height = Висота
|
text.settings.reset=Скинути до стандартних
|
||||||
text.randomize = Рандомізувати
|
text.settings.controls=Елементи управління
|
||||||
text.apply = Застосувати
|
text.settings.game=Гра
|
||||||
text.update = Оновити
|
text.settings.sound=Звук
|
||||||
text.menu = Меню
|
text.settings.graphics=Графіка
|
||||||
text.play = Відтворити
|
text.upgrades=Оновлення
|
||||||
text.load = Завантаження
|
text.purchased=[LIME] Створено!
|
||||||
text.save = Зберегти
|
text.weapons=Зброя
|
||||||
text.language.restart = Будь ласка, перезапустіть свою гру, щоб налаштування мови набули чинності.
|
text.paused=Пауза
|
||||||
text.settings.language = Мова
|
text.info.title=[accent] інформація
|
||||||
text.settings = Налаштування
|
text.error.title=[crimson] Виникла помилка
|
||||||
text.tutorial = Навчальний\nпосібник
|
text.error.crashtitle=Виникла помилка
|
||||||
text.editor = Редактор
|
text.blocks.blockinfo=Блокування інформації
|
||||||
text.mapeditor = Редактор карт
|
text.blocks.powercapacity=Потужність
|
||||||
text.donate = Підтримати проект
|
text.blocks.powershot=Потужність / постріл
|
||||||
text.settings.reset = Скинути до стандартних
|
text.blocks.size=Розмір
|
||||||
text.settings.controls = Елементи управління
|
text.blocks.liquidcapacity=Ємкість рідини
|
||||||
text.settings.game = Гра
|
text.blocks.maxitemssecond=Макс. Елементи / секунду
|
||||||
text.settings.sound = Звук
|
text.blocks.powerrange=Радіус потужності
|
||||||
text.settings.graphics = Графіка
|
text.blocks.itemcapacity=Ємкість предмету
|
||||||
text.upgrades = Оновлення
|
text.blocks.inputliquid=Ввід речовини
|
||||||
text.purchased = [LIME] Створено!
|
text.blocks.inputitem=Вхідний матеріал
|
||||||
text.weapons = Зброя
|
text.blocks.explosive=Вибухонебезпечний!
|
||||||
text.paused = Пауза
|
text.blocks.health=Здоров'я
|
||||||
text.respawn = Відновлення за
|
text.blocks.inaccuracy=Неточність
|
||||||
text.info.title = [accent] інформація
|
text.blocks.shots=Постріли
|
||||||
text.error.title = [crimson] Виникла помилка
|
text.blocks.inputcapacity=Вхідна ємність
|
||||||
text.error.crashmessage = [SCARLET] Виникла несподівана помилка, що призвела до збою. [] Будь ласка, повідомте про конкретні обставини, розробнику: [ORANGE] anukendev@gmail.com []
|
text.blocks.outputcapacity=Випускна ємність
|
||||||
text.error.crashtitle = Виникла помилка
|
setting.difficulty.easy=Легкий
|
||||||
text.mode.break = Режим зносу: {0}
|
setting.difficulty.normal=Нормальний
|
||||||
text.mode.place = Режим будівництва: {0}
|
setting.difficulty.hard=Важкий
|
||||||
placemode.hold.name = Лінія
|
setting.difficulty.insane=Божевільний
|
||||||
placemode.areadelete.name = Площа
|
setting.difficulty.purge=Очистити
|
||||||
placemode.touchdelete.name = Дотик
|
setting.difficulty.name=Складність
|
||||||
placemode.holddelete.name = Утримування.
|
setting.screenshake.name=Тряска екрана
|
||||||
placemode.none.name = (None)
|
setting.indicators.name=Індикатори ворога
|
||||||
placemode.touch.name = Дотик
|
setting.effects.name=Ефекти відображення
|
||||||
placemode.cursor.name = курсор
|
setting.sensitivity.name=Чутливість контролера
|
||||||
text.blocks.extrainfo = [accent] додатковий інформаційний блок:
|
setting.saveinterval.name=Інтервал автозбереження
|
||||||
text.blocks.blockinfo = Блокування інформації
|
setting.seconds={0} секунд
|
||||||
text.blocks.powercapacity = Потужність
|
setting.fullscreen.name=Повноекранний
|
||||||
text.blocks.powershot = Потужність / постріл
|
setting.multithread.name=Багатопотоковий [scarlet] (нестабільний!)
|
||||||
text.blocks.powersecond = Потужність / секунда
|
setting.fps.name=Показати FPS
|
||||||
text.blocks.powerdraindamage = Потужність дренажу / пошкодження
|
setting.vsync.name=VSunc
|
||||||
text.blocks.shieldradius = Радіус щита
|
setting.lasers.name=Показати енергетичні лазери
|
||||||
text.blocks.itemspeedsecond = Швидкість / секунда
|
setting.healthbars.name=Показати здоров'я
|
||||||
text.blocks.range = Радіус
|
setting.musicvol.name=Гучність музики
|
||||||
text.blocks.size = Розмір
|
setting.mutemusic.name=Вимкнути музику
|
||||||
text.blocks.powerliquid = Потужність / Рідина
|
setting.sfxvol.name=Гучність ефектів
|
||||||
text.blocks.maxliquidsecond = Макс. Рідина / секунда
|
setting.mutesound.name=Вимкнути звук
|
||||||
text.blocks.liquidcapacity = Ємкість рідини
|
map.maze.name=Лабіринт
|
||||||
text.blocks.liquidsecond = Рідина / секунда
|
map.fortress.name=Фортеця
|
||||||
text.blocks.damageshot = Пошкодження / постріл
|
map.sinkhole.name=Свердловина
|
||||||
text.blocks.ammocapacity = Місткість боєприпасів
|
map.caves.name=Печери
|
||||||
text.blocks.ammo = Набої
|
map.volcano.name=Вулкан
|
||||||
text.blocks.ammoitem = Боєприпаси / предмет
|
map.caldera.name=Кальдера
|
||||||
text.blocks.maxitemssecond = Макс. Елементи / секунду
|
map.scorch.name=Мертва земля
|
||||||
text.blocks.powerrange = Радіус потужності
|
map.desert.name=Пустеля
|
||||||
text.blocks.lasertilerange = Радіус лазерних плиток
|
map.island.name=Острів
|
||||||
text.blocks.capacity = Ємкість
|
map.grassland.name=Пасовища
|
||||||
text.blocks.itemcapacity = Ємкість предмету
|
map.tundra.name=Тундра
|
||||||
text.blocks.maxpowergenerationsecond = Максимальна потужність / секунда
|
map.spiral.name=Спіраль
|
||||||
text.blocks.powergenerationsecond = Потужність / секунда
|
map.tutorial.name=Навчання
|
||||||
text.blocks.generationsecondsitem = Генерація за секунду / предмет
|
text.keybind.title=Ключ перемотки
|
||||||
text.blocks.input = Ввід
|
keybind.move_x.name=move_x
|
||||||
text.blocks.inputliquid = Ввід речовини
|
keybind.move_y.name=move_y
|
||||||
text.blocks.inputitem = Вхідний матеріал
|
keybind.select.name=Вибрати
|
||||||
text.blocks.output = Вивід
|
keybind.break.name={0}break{/0}{1}; {/1}
|
||||||
text.blocks.secondsitem = Секунда / предмет
|
keybind.shoot.name=Постріл
|
||||||
text.blocks.maxpowertransfersecond = Максимальна передача потужності / секунда
|
keybind.zoom_hold.name=zoom_hold
|
||||||
text.blocks.explosive = Вибухонебезпечний!
|
keybind.zoom.name=Збільшити
|
||||||
text.blocks.repairssecond = Ремонт / секунда
|
keybind.block_info.name=Інформація про блок
|
||||||
text.blocks.health = Здоров'я
|
keybind.menu.name=Меню
|
||||||
text.blocks.inaccuracy = Неточність
|
keybind.pause.name=Пауза
|
||||||
text.blocks.shots = Постріли
|
keybind.dash.name=Тире
|
||||||
text.blocks.shotssecond = Постріли / секунду
|
keybind.chat.name=Чат
|
||||||
text.blocks.fuel = Паливо:
|
keybind.player_list.name=Список гравців
|
||||||
text.blocks.fuelduration = Тривалість палива
|
keybind.console.name=// Консоль 1
|
||||||
text.blocks.maxoutputsecond = Макс. Вихід / секунду
|
keybind.rotate_alt.name=rotate_alt
|
||||||
text.blocks.inputcapacity = Вхідна ємність
|
keybind.rotate.name=Повернути
|
||||||
text.blocks.outputcapacity = Випускна ємність
|
mode.waves.name=Хвилі
|
||||||
text.blocks.poweritem = Потужність / виріб
|
mode.sandbox.name=Пісочниця
|
||||||
text.placemode = Місцевий режим
|
mode.freebuild.name=Вільний режим
|
||||||
text.breakmode = Перерваний режим
|
item.stone.name=Камінь
|
||||||
text.health = Здоров'я
|
item.coal.name=Вугівалля
|
||||||
setting.difficulty.easy = Легкий
|
item.titanium.name=Титан
|
||||||
setting.difficulty.normal = Нормальний
|
item.thorium.name=Уран
|
||||||
setting.difficulty.hard = Важкий
|
item.sand.name=Пісок
|
||||||
setting.difficulty.insane = Божевільний
|
liquid.water.name=Вода
|
||||||
setting.difficulty.purge = Очистити
|
liquid.lava.name=Лава
|
||||||
setting.difficulty.name = Складність
|
liquid.oil.name=Нафта
|
||||||
setting.screenshake.name = Тряска екрана
|
block.door.name=Двері
|
||||||
setting.smoothcam.name = Гладка камера
|
block.door-large.name=Великі двері
|
||||||
setting.indicators.name = Індикатори ворога
|
block.conduit.name=Трубопровід
|
||||||
setting.effects.name = Ефекти відображення
|
block.pulseconduit.name=Імпульсний канал
|
||||||
setting.sensitivity.name = Чутливість контролера
|
block.liquidrouter.name=маршрутизатор для рідини
|
||||||
setting.saveinterval.name = Інтервал автозбереження
|
block.conveyor.name=Конвеєр
|
||||||
setting.seconds = {0} секунд
|
block.router.name=Маршрутизатор
|
||||||
setting.fullscreen.name = Повноекранний
|
block.junction.name=Міст
|
||||||
setting.multithread.name = Багатопотоковий [scarlet] (нестабільний!)
|
block.liquidjunction.name=Міст для рідини
|
||||||
setting.fps.name = Показати FPS
|
block.sorter.name=Сортувальник
|
||||||
setting.vsync.name = VSunc
|
block.smelter.name=Плавильня
|
||||||
setting.lasers.name = Показати енергетичні лазери
|
text.credits=Credits
|
||||||
setting.healthbars.name = Показати здоров'я
|
text.link.discord.description=the official Mindustry discord chatroom
|
||||||
setting.pixelate.name = Пікселяція екрану
|
text.link.github.description=Game source code
|
||||||
setting.musicvol.name = Гучність музики
|
text.link.dev-builds.description=Unstable development builds
|
||||||
setting.mutemusic.name = Вимкнути музику
|
text.link.trello.description=Official trello board for planned features
|
||||||
setting.sfxvol.name = Гучність ефектів
|
text.link.itch.io.description=itch.io page with PC downloads and web version
|
||||||
setting.mutesound.name = Вимкнути звук
|
text.link.google-play.description=Google Play store listing
|
||||||
map.maze.name = Лабіринт
|
text.link.wiki.description=official Mindustry wiki
|
||||||
map.fortress.name = Фортеця
|
text.linkfail=Failed to open link!\nThe URL has been copied to your cliboard.
|
||||||
map.sinkhole.name = Свердловина
|
text.editor.web=The web version does not support the editor!\nDownload the game to use it.
|
||||||
map.caves.name = Печери
|
text.web.unsupported=The web version does not support this feature! Download the game to use it.
|
||||||
map.volcano.name = Вулкан
|
text.multiplayer.web=This version of the game does not support multiplayer!\nTo play multiplayer from your browser, use the "multiplayer web version" link at the itch.io page.
|
||||||
map.caldera.name = Кальдера
|
text.host.web=The web version does not support hosting games! Download the game to use this feature.
|
||||||
map.scorch.name = Мертва земля
|
text.map.delete=Are you sure you want to delete the map "[orange]{0}[]"?
|
||||||
map.desert.name = Пустеля
|
text.construction.title=Block Construction Guide
|
||||||
map.island.name = Острів
|
text.construction=You've just selected [accent]block construction mode[].\n\nTo begin placing, simply tap a valid location near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Shift the selection[] by holding and dragging any block in the selection.\n- [accent]Place blocks in a line[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel construction or selection[] by pressing the X at the bottom left.
|
||||||
map.grassland.name = Пасовища
|
text.deconstruction.title=Block Deconstruction Guide
|
||||||
map.tundra.name = Тундра
|
text.deconstruction=You've just selected [accent]block deconstruction mode[].\n\nTo begin breaking, simply tap a block near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin de-constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Remove blocks in an area[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel deconstruction or selection[] by pressing the X at the bottom left.
|
||||||
map.spiral.name = Спіраль
|
text.showagain=Don't show again next session
|
||||||
map.tutorial.name = Навчання
|
text.unlocks=Unlocks
|
||||||
tutorial.intro.text = [yellow] Ласкаво просимо до підручника. [] Для початку натисніть \"далі\".
|
text.addplayers=Add/Remove Players
|
||||||
tutorial.moveDesktop.text = Для переміщення використовуйте клавіші [orange] [[WASD] []. Утримуйте [orange] SHIFT[], для прискорення. Утримуйте [orange] CTRL [], використовуючи [orange] колесо прокручування [] для збільшення або зменшення.
|
text.maps=Maps
|
||||||
tutorial.shoot.text = Використовуйте мишу, щоб націлитись, утримуйте [orange] ліву кнопку миші [], щоб стріляти. Попрактикуйтесь на [yellow] мішені [].
|
text.maps.none=[LIGHT_GRAY]No maps found!
|
||||||
tutorial.moveAndroid.text = Щоб перетягнути панораму, перетягніть один палець по екрану. Використовуйте два пальця, щоб збільшити чи зменшити маштаб.
|
text.unlocked=New Block Unlocked!
|
||||||
tutorial.placeSelect.text = Спробуйте вибрати [yellow] конвеєр [] у меню блоку внизу справа.
|
text.unlocked.plural=New Blocks Unlocked!
|
||||||
tutorial.placeConveyorDesktop.text = Використовуйте [orange] [[колесико миші] [], щоб повернути конвеєр [orange] вперед [], а потім помістіть його в [yellow] позначене місце [], використовуючи [orange] [[ліву кнопку миші] [].
|
text.server.kicked.fastShoot=You are shooting too quickly.
|
||||||
tutorial.placeConveyorAndroid.text = Використовуйте [orange] [[кнопку оберту] [], щоб обернути конвеєр [оранжевий] вперед [], перетягуйте його одним пальцем, а потім помістіть його в [yellow] позначене місце [], використовуючи [orange] [[галочка][].
|
text.server.kicked.banned=You are banned on this server.
|
||||||
tutorial.placeConveyorAndroidInfo.text = Крім того, ви можете натиснути піктограму перехрестя внизу ліворуч, щоб переключитися на [orange] [[сенсорний режим]] [], і помістити блоки, натиснувши на екран. У сенсорному режимі блоки можна повертати зі стрілкою внизу ліворуч. Натисніть [yellow] наступний [], щоб спробувати.
|
text.server.kicked.recentKick=You have been kicked recently.\nWait before connecting again.
|
||||||
tutorial.placeDrill.text = Тепер виберіть та розмістіть [yellow] кам'яне свердло [] у зазначеному місці.
|
text.server.kicked.nameInUse=There is someone with that name\nalready on this server.
|
||||||
tutorial.blockInfo.text = Якщо ви хочете дізнатись більше про блок, ви можете торкнутися [orange] знак питання [] у верхньому правому куті, щоб прочитати його опис.
|
text.server.kicked.nameEmpty=Your name must contain at least one character or number.
|
||||||
tutorial.deselectDesktop.text = Ви можете вимкнути блок, використовуючи [orange] [[клацання правою кнопкою миші] [].
|
text.server.kicked.idInUse=You are already on this server! Connecting with two accounts is not permitted.
|
||||||
tutorial.deselectAndroid.text = Ви можете скасувати вибір блоку, натиснувши кнопку [orange] X [].
|
text.server.kicked.customClient=This server does not support custom builds. Download an official version.
|
||||||
tutorial.drillPlaced.text = Дриль тепер видобуває [yellow] камінь, [] та виведе його на конвеєр, а потім переміщає його в [yellow] ядро [].
|
text.host.info=The [accent]host[] button hosts a server on ports [scarlet]6567[] and [scarlet]6568.[]\nAnybody on the same [LIGHT_GRAY]wifi or local network[] should be able to see your server in their server list.\n\nIf you want people to be able to connect from anywhere by IP, [accent]port forwarding[] is required.\n\n[LIGHT_GRAY]Note: If someone is experiencing trouble connecting to your LAN game, make sure you have allowed Mindustry access to your local network in your firewall settings.
|
||||||
tutorial.drillInfo.text = Різні руди потребують різних дрилі. Камінь вимагає кам'яні свердла, залізо вимагає залізні свердла та ін
|
text.join.info=Here, you can enter a [accent]server IP[] to connect to, or discover [accent]local network[] servers to connect to.\nBoth LAN and WAN multiplayer is supported.\n\n[LIGHT_GRAY]Note: There is no automatic global server list; if you want to connect to someone by IP, you would need to ask the host for their IP.
|
||||||
tutorial.drillPlaced2.text = Переміщення елементів у ядро вказує їх у ваш [yellow] предметний інвентар [] у верхньому лівому куті. Розміщення блоків використовує предмети з вашого інвентарю.
|
text.trace=Trace Player
|
||||||
tutorial.moreDrills.text = Ви можете пов'язати багато свердлів і конвеєрів разом в одну гілку конвеєра.
|
text.trace.playername=Player name: [accent]{0}
|
||||||
tutorial.deleteBlock.text = Ви можете видалити блоки, натиснувши правою клавішею [orange] правою кнопкою миші [] по блоці, який ви хочете видалити. Спробуйте видалити цей конвеєр.
|
text.trace.ip=IP: [accent]{0}
|
||||||
tutorial.deleteBlockAndroid.text = Ви можете видалити блоки за допомогою [orange], перехрестя [] в меню [mode] зламу [orange] у нижньому лівому куті та натиснувши на блок. Спробуйте видалити цей конвеєр.
|
text.trace.id=Unique ID: [accent]{0}
|
||||||
tutorial.placeTurret.text = Тепер виділіть та розмістіть [yellow] турель [] у [yellow] позначеному місці [].
|
text.trace.android=Android Client: [accent]{0}
|
||||||
tutorial.placedTurretAmmo.text = Ця турель тепер приймає [yellow] боєприпас [] з конвеєра. Ви можете побачити, скільки боєприпасів вона має, натискаючи на неї і перевіряючи [green] зелену полоску [].
|
text.trace.modclient=Custom Client: [accent]{0}
|
||||||
tutorial.turretExplanation.text = Турелі будуть автоматично стріляти у найближчого ворога, якщо вони мають достатню кількість боєприпасів.
|
text.trace.totalblocksbroken=Total blocks broken: [accent]{0}
|
||||||
tutorial.waves.text = Кожні [yellow] 60 [] секунд, хвиля [coral] ворогів [] буде виникати в певних місцях і намагатися знищити ядро.
|
text.trace.structureblocksbroken=Structure blocks broken: [accent]{0}
|
||||||
tutorial.coreDestruction.text = Ваша мета полягає в тому, щоб [yellow] захищати ядро []. Якщо ядро знищено, ви [coral] програєте[].
|
text.trace.lastblockbroken=Last block broken: [accent]{0}
|
||||||
tutorial.pausingDesktop.text = Якщо вам коли-небудь потрібно зробити перерву, натисніть кнопку [orange] паузи [] у верхньому лівому куті або на кнопку [orange] пропуск [], щоб призупинити гру. Ви можете вибрати і розмістити блоки під час призупинення, але не можете переміщатися чи стріляти.
|
text.trace.totalblocksplaced=Total blocks placed: [accent]{0}
|
||||||
tutorial.pausingAndroid.text = Якщо вам коли-небудь потрібно зробити перерву, натисніть кнопку [orange] пауза [] у верхньому лівому куті, щоб призупинити гру. Ти можеш ще знищувати та будувати блоки під час призупинення.
|
text.trace.lastblockplaced=Last block placed: [accent]{0}
|
||||||
tutorial.purchaseWeapons.text = Ви можете придбати нову [yellow] зброю [] для вашого механізму, відкривши меню оновлення в лівому нижньому кутку.
|
text.invalidid=Invalid client ID! Submit a bug report.
|
||||||
tutorial.switchWeapons.text = Перемикати зброю будь-яким натисканням його піктограми внизу ліворуч або за допомогою цифр [orange] [[1-9] [].
|
text.server.bans=Bans
|
||||||
tutorial.spawnWave.text = Ось хвиля зараз. Знищи їх
|
text.server.bans.none=No banned players found!
|
||||||
tutorial.pumpDesc.text = У пізніших хвилях, можливо, доведеться використовувати [yellow] насоси [] для розподілу рідин для генераторів або екстракторів.
|
text.server.admins=Admins
|
||||||
tutorial.pumpPlace.text = Насоси працюють аналогічно свердлам, за винятком того, що вони виробляють рідини замість предметів. Спробуйте встановити насос на [yellow] призначене мастило [].
|
text.server.admins.none=No admins found!
|
||||||
tutorial.conduitUse.text = Тепер покладіть [orange] трубопровід [], віддаляючись від насоса.
|
text.server.outdated=[crimson]Outdated Server![]
|
||||||
tutorial.conduitUse2.text = І ще кілька ...
|
text.server.outdated.client=[crimson]Outdated Client![]
|
||||||
tutorial.conduitUse3.text = І ще кілька ...
|
text.server.version=[lightgray]Version: {0}
|
||||||
tutorial.generator.text = Тепер, помістіть блок [orange] базовий генератор енергії [] в кінці каналу.
|
text.server.custombuild=[yellow]Custom Build
|
||||||
tutorial.generatorExplain.text = Цей генератор тепер створить [yellow] енергію [] від масла.
|
text.confirmban=Are you sure you want to ban this player?
|
||||||
tutorial.lasers.text = Потужність розподіляється за допомогою [yellow] лазерів потужності []. Поверніть і помістіть його тут.
|
text.confirmunban=Are you sure you want to unban this player?
|
||||||
tutorial.laserExplain.text = Тепер генератор переведе енергію в лазерний блок. Промінь [yellow] непрозорий [] означає, що в даний час він передає потужність, а промінь [yellow] прозорий [] означає, що це не так.
|
text.confirmadmin=Are you sure you want to make this player an admin?
|
||||||
tutorial.laserMore.text = Ви можете перевірити, скільки енергії в блоку, наведіть курсор миші на нього і перевірте [yellow] жовту стрічку [] у верхній частині екрана.
|
text.confirmunadmin=Are you sure you want to remove admin status from this player?
|
||||||
tutorial.healingTurret.text = Цей лазер може бути використаний для живлення турелі для ремонту [lime] []. Помістіть одну тут.
|
text.disconnect.data=Failed to load world data!
|
||||||
tutorial.healingTurretExplain.text = Поки вона має енергію, ця турель може [lime] відремонтувати блоки. [] Під час гри постарайтеся збудувати одну таку чим швидше!
|
text.copylink=Copy Link
|
||||||
tutorial.smeltery.text = Для багатьох блоків потрібна [orange] сталь [], для цього потрібна[orange] доминна піч [] . Місце тут.
|
text.changelog.title=Changelog
|
||||||
tutorial.smelterySetup.text = Ця піч буде тепер виробляти [orange] сталь [] із вхідного заліза, використовуючи вугілля як паливо.
|
text.changelog.loading=Getting changelog...
|
||||||
tutorial.tunnelExplain.text = Також зауважте, що елементи проходять через [yellow] тунельний блок [] і з'являються з іншого боку, проходячи через кам'яний блок. Майте на увазі, що тунелі можуть проходити лише до 2 блоків.
|
text.changelog.error.android=[orange]Note that the changelog sometimes does not work on Android 4.4 and below!\nThis is due to an internal Android bug.
|
||||||
tutorial.end.text = Ви завершили підручник! Удачі!
|
text.changelog.error.ios=[orange]The changelog is currently not supported in iOS.
|
||||||
text.keybind.title = Ключ перемотки
|
text.changelog.error=[scarlet]Error getting changelog!\nCheck your internet connection.
|
||||||
keybind.move_x.name = move_x
|
text.changelog.current=[yellow][[Current version]
|
||||||
keybind.move_y.name = move_y
|
text.changelog.latest=[orange][[Latest version]
|
||||||
keybind.select.name = Вибрати
|
text.saving=[accent]Saving...
|
||||||
keybind.break.name = {0}break{/0}{1}; {/1}
|
text.unknown=Unknown
|
||||||
keybind.shoot.name = Постріл
|
text.custom=Custom
|
||||||
keybind.zoom_hold.name = zoom_hold
|
text.builtin=Built-In
|
||||||
keybind.zoom.name = Збільшити
|
text.map.delete.confirm=Are you sure you want to delete this map? This action cannot be undone!
|
||||||
keybind.block_info.name = Інформація про блок
|
text.map.random=[accent]Random Map
|
||||||
keybind.menu.name = Меню
|
text.map.nospawn=This map does not have any cores for the player to spawn in! Add a [ROYAL]blue[] core to this map in the editor.
|
||||||
keybind.pause.name = Пауза
|
text.editor.slope=\\
|
||||||
keybind.dash.name = Тире
|
text.editor.openin=Open In Editor
|
||||||
keybind.chat.name = Чат
|
text.editor.oregen=Ore Generation
|
||||||
keybind.player_list.name = Список гравців
|
text.editor.oregen.info=Ore Generation:
|
||||||
keybind.console.name = // Консоль 1
|
text.editor.mapinfo=Map Info
|
||||||
keybind.rotate_alt.name = rotate_alt
|
text.editor.author=Author:
|
||||||
keybind.rotate.name = Повернути
|
text.editor.description=Description:
|
||||||
keybind.weapon_1.name = Зброя!
|
text.editor.name=Name:
|
||||||
keybind.weapon_2.name = Зброя!
|
text.editor.teams=Teams
|
||||||
keybind.weapon_3.name = Зброя!
|
text.editor.elevation=Elevation
|
||||||
keybind.weapon_4.name = Зброя!
|
text.editor.saved=Saved!
|
||||||
keybind.weapon_5.name = Зброя!
|
text.editor.save.noname=Your map does not have a name! Set one in the 'map info' menu.
|
||||||
keybind.weapon_6.name = Зброя!
|
text.editor.save.overwrite=Your map overwrites a built-in map! Pick a different name in the 'map info' menu.
|
||||||
mode.waves.name = Хвилі
|
text.editor.import.exists=[scarlet]Unable to import:[] a built-in map named '{0}' already exists!
|
||||||
mode.sandbox.name = Пісочниця
|
text.editor.import=Import...
|
||||||
mode.freebuild.name = Вільний режим
|
text.editor.importmap=Import Map
|
||||||
upgrade.standard.name = Стандартний
|
text.editor.importmap.description=Import an already existing map
|
||||||
upgrade.standard.description = Стандартний механ.
|
text.editor.importfile=Import File
|
||||||
upgrade.blaster.name = Бластер
|
text.editor.importfile.description=Import an external map file
|
||||||
upgrade.blaster.description = Стріляє повільно, слабкі кулі.
|
text.editor.importimage=Import Terrain Image
|
||||||
upgrade.triblaster.name = Трипластер
|
text.editor.importimage.description=Import an external map image file
|
||||||
upgrade.triblaster.description = Вистрілює 3 кулі в розповсюдженні.
|
text.editor.export=Export...
|
||||||
upgrade.clustergun.name = Касетна гармата
|
text.editor.exportfile=Export File
|
||||||
upgrade.clustergun.description = Вистрілює неточними вибуховими гранатами.
|
text.editor.exportfile.description=Export a map file
|
||||||
upgrade.beam.name = Пушечна гармата
|
text.editor.exportimage=Export Terrain Image
|
||||||
upgrade.beam.description = Вистрілює далекобійним,пробірний лазерний промінь.
|
text.editor.exportimage.description=Export a map image file
|
||||||
upgrade.vulcan.name = Вулкан
|
text.editor.overwrite.confirm=[scarlet]Warning![] A map with this name already exists. Are you sure you want to overwrite it?
|
||||||
upgrade.vulcan.description = Вистрілює шквал швидких куль.
|
text.fps=FPS: {0}
|
||||||
upgrade.shockgun.name = Шок-пушка
|
text.tps=TPS: {0}
|
||||||
upgrade.shockgun.description = Стріляє руйнівним вибухом заряженої шрапнелі.
|
text.ping=Ping: {0}ms
|
||||||
item.stone.name = Камінь
|
text.settings.rebind=Rebind
|
||||||
item.iron.name = Залізо
|
text.yes=Yes
|
||||||
item.coal.name = Вугівалля
|
text.no=No
|
||||||
item.steel.name = Сталь
|
text.blocks.targetsair=Targets Air
|
||||||
item.titanium.name = Титан
|
text.blocks.itemspeed=Units Moved
|
||||||
item.dirium.name = Дириум
|
text.blocks.shootrange=Range
|
||||||
item.thorium.name = Уран
|
text.blocks.poweruse=Power Use
|
||||||
item.sand.name = Пісок
|
text.blocks.inputitemcapacity=Input Item Capacity
|
||||||
liquid.water.name = Вода
|
text.blocks.outputitemcapacity=Input Item Capacity
|
||||||
liquid.plasma.name = Плазма
|
text.blocks.maxpowergeneration=Max Power Generation
|
||||||
liquid.lava.name = Лава
|
text.blocks.powertransferspeed=Power Transfer
|
||||||
liquid.oil.name = Нафта
|
text.blocks.craftspeed=Production Speed
|
||||||
block.weaponfactory.name = Фабрика зброї
|
text.blocks.inputliquidaux=Aux Liquid
|
||||||
block.weaponfactory.fulldescription = Використовується для створення зброї для гравця mech. Натисніть, щоб використати. Автоматично приймає ресурси з основного ядра.
|
text.blocks.inputitems=Input Items
|
||||||
block.air.name = Повітря
|
text.blocks.outputitem=Output Item
|
||||||
block.blockpart.name = Блокчастина
|
text.blocks.drilltier=Drillables
|
||||||
block.deepwater.name = Глибока вода
|
text.blocks.drillspeed=Base Drill Speed
|
||||||
block.water.name = Вода
|
text.blocks.liquidoutput=Liquid Output
|
||||||
block.lava.name = Лава
|
text.blocks.liquiduse=Liquid Use
|
||||||
block.oil.name = Нафта
|
text.blocks.coolant=Coolant
|
||||||
block.stone.name = Камінь
|
text.blocks.coolantuse=Coolant Use
|
||||||
block.blackstone.name = Чорний камінь
|
text.blocks.inputliquidfuel=Fuel Liquid
|
||||||
block.iron.name = Залізо
|
text.blocks.liquidfueluse=Liquid Fuel Use
|
||||||
block.coal.name = Вугілля
|
text.blocks.reload=Reload
|
||||||
block.titanium.name = Титан
|
text.blocks.inputfuel=Fuel
|
||||||
block.thorium.name = Уран
|
text.blocks.fuelburntime=Fuel Burn Time
|
||||||
block.dirt.name = Бруд
|
text.unit.blocks=blocks
|
||||||
block.sand.name = Пісок
|
text.unit.powersecond=power units/second
|
||||||
block.ice.name = Лід
|
text.unit.liquidsecond=liquid units/second
|
||||||
block.snow.name = Сніг
|
text.unit.itemssecond=items/second
|
||||||
block.grass.name = Трава
|
text.unit.pixelssecond=pixels/second
|
||||||
block.sandblock.name = Блок піску
|
text.unit.liquidunits=liquid units
|
||||||
block.snowblock.name = Блок снігу
|
text.unit.powerunits=power units
|
||||||
block.stoneblock.name = Блок камню
|
text.unit.degrees=degrees
|
||||||
block.blackstoneblock.name = Блок чорного камню
|
text.unit.seconds=seconds
|
||||||
block.grassblock.name = Блок бруду
|
text.unit.none=
|
||||||
block.mossblock.name = Моссблок
|
text.unit.items=items
|
||||||
block.shrub.name = Чагарник
|
text.category.general=General
|
||||||
block.rock.name = Камень
|
text.category.power=Power
|
||||||
block.icerock.name = Ледяний камень
|
text.category.liquids=Liquids
|
||||||
block.blackrock.name = Чорний камінь
|
text.category.items=Items
|
||||||
block.dirtblock.name = Блок землі
|
text.category.crafting=Crafting
|
||||||
block.stonewall.name = Кам'яна стіна
|
text.category.shooting=Shooting
|
||||||
block.stonewall.fulldescription = Недорогий захисний блок. Корисно для захисту ядра та турелі в перші кілька хвиль.
|
setting.minimap.name=Show Minimap
|
||||||
block.ironwall.name = Залізна стіна
|
mode.text.help.title=Description of modes
|
||||||
block.ironwall.fulldescription = Основний захисний блок. Забезпечує захист від ворогів.
|
mode.waves.description=the normal mode. limited resources and automatic incoming waves.
|
||||||
block.steelwall.name = Сталева стіна
|
mode.sandbox.description=infinite resources and no timer for waves.
|
||||||
block.steelwall.fulldescription = Стандартний захисний блок. адекватний захист від ворогів.
|
mode.freebuild.description=limited resources and no timer for waves.
|
||||||
block.titaniumwall.name = Титанова стіна
|
content.item.name=Items
|
||||||
block.titaniumwall.fulldescription = Сильний захисний блок. Забезпечує захист від ворогів.
|
content.liquid.name=Liquids
|
||||||
block.duriumwall.name = Діріумова стіна
|
content.unit-type.name=Units
|
||||||
block.duriumwall.fulldescription = Дуже сильний захисний блок. Забезпечує захист від ворогів.
|
content.recipe.name=Blocks
|
||||||
block.compositewall.name = Композитна стіна
|
item.stone.description=A common raw material. Used for separating and refining into other materials, or melting into lava.
|
||||||
block.steelwall-large.name = Велика сталева стіна
|
item.tungsten.name=Tungsten
|
||||||
block.steelwall-large.fulldescription = Стандартний захисний блок. Поєднує в собі кілька блоків.
|
item.tungsten.description=A common, but very useful structure material. Used in drills and heat-resistant blocks such as generators and smelteries.
|
||||||
block.titaniumwall-large.name = Велика титанова стіна
|
item.lead.name=Lead
|
||||||
block.titaniumwall-large.fulldescription = Сильний захисний блок. Поєднує в собі кілька блоків.
|
item.lead.description=A basic starter material. Used extensively in electronics and liquid transportation blocks.
|
||||||
block.duriumwall-large.name = Велика дирмітова стіна
|
item.coal.description=A common and readily available fuel.
|
||||||
block.duriumwall-large.fulldescription = Дуже сильний захисний блок.Поєднує в собі кілька блоків.
|
item.carbide.name=Carbide
|
||||||
block.titaniumshieldwall.name = Стіна з щитом
|
item.carbide.description=A tough alloy made with tungsten and carbon. Used in advanced transportation blocks and high-tier drills.
|
||||||
block.titaniumshieldwall.fulldescription = Сильний захисний блок з додатковим вбудованим щитом. Потрібна енергія. Використовує енергію для поглинання ворожих куль. Рекомендується використовувати силові пристосування для забезпечення енергії цього блоку.
|
item.titanium.description=A rare super-light metal used extensively in liquid transportation, drills and aircraft.
|
||||||
block.repairturret.name = Ремонтна турель
|
item.thorium.description=A dense, radioactive metal used as structural support and nuclear fuel.
|
||||||
block.repairturret.fulldescription = Ремонтує недалекі пошкодженні блоки.Повільний темп. Використовує невелику кількість енергії.
|
item.silicon.name=Silicon
|
||||||
block.megarepairturret.name = Ремонтна турель II
|
item.silcion.description=An extremely useful semiconductor, with applications in solar panels and many complex electronics.
|
||||||
block.megarepairturret.fulldescription = Ремонтує недалекі пошкодженні блоки.Збільшений радіус та швидший темп ремонту . Використовує багато енергії.
|
item.plastanium.name=Plastanium
|
||||||
block.shieldgenerator.name = Генератор щиту
|
item.plastanium.description=A light, ductile material used in advanced aircraft and fragmentation ammunition.
|
||||||
block.shieldgenerator.fulldescription = Передовий захисний блок. Захищає всі блоки в радіусі від нападу. Не вкористовує енергію при бездіяльності, але швидко витрачає енергію на захист від куль.
|
item.phase-matter.name=Phase Matter
|
||||||
block.door.name = Двері
|
item.surge-alloy.name=Surge Alloy
|
||||||
block.door.fulldescription = Блок, який можна відкрити та закрити, торкнувшись його.
|
item.biomatter.name=Biomatter
|
||||||
block.door-large.name = Великі двері
|
item.biomatter.description=A clump of organic mush; used for conversion into oil or as a basic fuel.
|
||||||
block.door-large.fulldescription = Блок, який можна відкрити та закрити, торкнувшись його.
|
item.sand.description=A common material that is used extensively in smelting, both in alloying and as a flux.
|
||||||
block.conduit.name = Трубопровід
|
item.blast-compound.name=Blast Compound
|
||||||
block.conduit.fulldescription = Основний транспортний блок. Працює як конвеєр, але з рідинами. Найкраще використовується з насосами або іншими трубопроводами. Може використовуватися як міст через рідини для ворогів та гравців.
|
item.blast-compound.description=A volatile compound used in bombs and explosives. While it can burned as fuel, this is not advised.
|
||||||
block.pulseconduit.name = Імпульсний канал
|
item.pyratite.name=Pyratite
|
||||||
block.pulseconduit.fulldescription = Покращенний блок перевезення рідин. Транспортує рідини швидше і зберігає більше стандартних каналів.
|
item.pyratite.description=An extremely flammable substance used in incendiary weapons.
|
||||||
block.liquidrouter.name = маршрутизатор для рідини
|
liquid.cryofluid.name=Cryofluid
|
||||||
block.liquidrouter.fulldescription = Працює аналогічно маршрутизатору. Приймає рідину ввід з одного боку і виводить його на інші сторони. Корисний для розщеплення рідини з одного каналу на кілька інших трубопроводів.
|
text.item.explosiveness=[LIGHT_GRAY]Explosiveness: {0}
|
||||||
block.conveyor.name = Конвеєр
|
text.item.flammability=[LIGHT_GRAY]Flammability: {0}
|
||||||
block.conveyor.fulldescription = Базовий транспортний блок. Переміщує предмети вперед і автоматично вкладає їх у турелі або ремісники. Поворотний Може використовуватися як міст через рідину для ворогів та гравців.
|
text.item.radioactivity=[LIGHT_GRAY]Radioactivity: {0}
|
||||||
block.steelconveyor.name = Сталевий конвеєр
|
text.item.fluxiness=[LIGHT_GRAY]Flux Power: {0}
|
||||||
block.steelconveyor.fulldescription = Розширений блок транспортування предметів. Переміщення елементів швидше, ніж стандартні конвеєри.
|
text.item.hardness=[LIGHT_GRAY]Hardness: {0}
|
||||||
block.poweredconveyor.name = Імпульсний конвеєр
|
text.liquid.heatcapacity=[LIGHT_GRAY]Heat Capacity: {0}
|
||||||
block.poweredconveyor.fulldescription = Кінцевий транспортний блок. Переміщення елементів швидше, ніж сталеві конвеєри.
|
text.liquid.viscosity=[LIGHT_GRAY]Viscosity: {0}
|
||||||
block.router.name = Маршрутизатор
|
text.liquid.temperature=[LIGHT_GRAY]Temperature: {0}
|
||||||
block.router.fulldescription = Приймає елементи з одного напрямку і виводить їх на 3 інших напрямках. Можна також зберігати певну кількість предметів. Використовується для розщеплення матеріалів з одного свердла на декілька башточок.
|
block.tungsten-wall.name=Tungsten Wall
|
||||||
block.junction.name = Міст
|
block.tungsten-wall-large.name=Large Tungsten Wall
|
||||||
block.junction.fulldescription = Виступає як міст для двох перехресних конвеєрних стрічок. Корисне у ситуаціях з двома різними конвеєрами, що несуть різні матеріали в різних місцях.
|
block.carbide-wall.name=Carbide Wall
|
||||||
block.conveyortunnel.name = Конвеєрний тунель
|
block.carbide-wall-large.name=Large Carbide Wall
|
||||||
block.conveyortunnel.fulldescription = Транспортує предмети під блоками. Щоб використати, помістіть один тунель, що веде у блок, щоб бути підсвіченим, а один - з іншого боку. Переконайтеся, що обидва тунелі стикаються з протилежними напрямками, тобто до блоків, які вони вводять або виводять.
|
block.thorium-wall.name=Thorium Wall
|
||||||
block.liquidjunction.name = Міст для рідини
|
block.thorium-wall-large.name=Large Thorium Wall
|
||||||
block.liquidjunction.fulldescription = Діє як міст для двох перехресних трубопроводів. Корисно в ситуаціях з двома різними трубами, що несуть різні рідини в різних місцях.
|
block.duo.name=Duo
|
||||||
block.liquiditemjunction.name = Перехрестя рідкого пункту
|
block.scorch.name=Scorch
|
||||||
block.liquiditemjunction.fulldescription = Виступає як міст для перетину трубопроводів і конвеєрів.
|
block.hail.name=Hail
|
||||||
block.powerbooster.name = Підсилювач потужності
|
block.lancer.name=Lancer
|
||||||
block.powerbooster.fulldescription = Поширює енергію на всі блоки в межах його радіуса.
|
block.titanium-conveyor.name=Titanium Conveyor
|
||||||
block.powerlaser.name = Енергетичний лазер
|
block.splitter.name=Splitter
|
||||||
block.powerlaser.fulldescription = Створює лазер, який передає енергію блоку перед ним. Не створює жодної сили сама. Найкраще використовується з генераторами або іншими лазерами.
|
block.splitter.description=Outputs items into two opposite directions immediately after they are recieved.
|
||||||
block.powerlaserrouter.name = Лазерний маршрутизатор
|
block.router.description=Splits items into all 4 directions. Can store items as a buffer.
|
||||||
block.powerlaserrouter.fulldescription = Лазер, який розподіляє енергію у три напрямки одночасно. Корисно в ситуаціях, коли потрібно живити кілька блоків від одного генератора.
|
block.distributor.name=Distributor
|
||||||
block.powerlasercorner.name = Лазерний кут
|
block.distributor.description=A splitter that can split items into 8 directions.
|
||||||
block.powerlasercorner.fulldescription = Лазер, який розподіляє енергію одночасно на два напрямки. Корисно в ситуаціях, коли потрібно живити кілька блоків від одного генератора, а маршрутизатор неточний.
|
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.teleporter.name = Телепорт
|
block.overflow-gate.name=Overflow Gate
|
||||||
block.teleporter.fulldescription = Продвинутий блок транспортування предметів.Щоб телепортувати предмети з одного місця в інше потрібно збудувати 2 телепорти і назначити на них одинаковий колір. Використовує енергію. Натисніть, щоб змінити колір.
|
block.overflow-gate.description=A combination splitter and router that only outputs to the left and right if the front path is blocked.
|
||||||
block.sorter.name = Сортувальник
|
block.bridgeconveyor.name=Bridge Conveyor
|
||||||
block.sorter.fulldescription = Сортує предмети за типом матеріалу. Матеріал для прийняття позначається кольором у блоці. Всі елементи, що відповідають матеріалу сортування, виводяться вперед, а все інше виводить ліворуч і праворуч.
|
block.bridgeconveyor.description=A conveyor that can go over other blocks, for up to two total blocks.
|
||||||
block.core.name = Ядро
|
block.arc-smelter.name=Arc Smelter
|
||||||
block.pump.name = Насос
|
block.silicon-smelter.name=Silicon Smelter
|
||||||
block.pump.fulldescription = Насоси рідини з вихідного блоку - зазвичай вода, лава чи олія. Виводить рідину в сусідні трубопроводи.
|
block.phase-weaver.name=Phase Weaver
|
||||||
block.fluxpump.name = Флюсовий насос
|
block.pulverizer.name=Pulverizer
|
||||||
block.fluxpump.fulldescription = Розширений варіант насоса. Зберігає більше рідини та перекачує швидше.
|
block.cryofluidmixer.name=Cryofluid Mixer
|
||||||
block.smelter.name = Плавильня
|
block.melter.name=Melter
|
||||||
block.smelter.fulldescription = Основний ремісничий блок. Коли вводиться 1 залізо та 1 вугілля в якості палива, виводить одну сталь. Рекомендується вводити залізо та вугілля на різних поясах, щоб запобігти засміченню.
|
block.incinerator.name=Incinerator
|
||||||
block.crucible.name = Тигель
|
block.biomattercompressor.name=Biomatter Compressor
|
||||||
block.crucible.fulldescription = Розширений блок обробки. При введенні 1 титану, 1 сталі та 1 вугілля в якості пального, виводить один дирний. Рекомендується вводити вугілля, сталь та титан на різних поясах, щоб запобігти засміченню.
|
block.separator.name=Separator
|
||||||
block.coalpurifier.name = вугільний екстрактор
|
block.centrifuge.name=Centrifuge
|
||||||
block.coalpurifier.fulldescription = Основний екстрактор. Виходить вугілля при постачанні великої кількості води та каменю.
|
block.power-node.name=Power Node
|
||||||
block.titaniumpurifier.name = Титановий екстрактор
|
block.power-node-large.name=Large Power Node
|
||||||
block.titaniumpurifier.fulldescription = Стандартний блок екстрактора. Виходить титан при постачанні великої кількості води та заліза.
|
block.battery.name=Battery
|
||||||
block.oilrefinery.name = Нафтопереробний завод
|
block.battery-large.name=Large Battery
|
||||||
block.oilrefinery.fulldescription = Очищує велику кількість нафти і перетворює на вугілля. Корисний для заправки вугільних башточок, коли вугільні родовища є дефіцитними.
|
block.combustion-generator.name=Combustion Generator
|
||||||
block.stoneformer.name = Кам'янний екстрактор
|
block.turbine-generator.name=Turbine Generator
|
||||||
block.stoneformer.fulldescription = Здавлюється рідка лава в камінь. Корисно для виготовлення великої кількості каменю для очищувачів вугілля.
|
block.tungsten-drill.name=Tungsten Drill
|
||||||
block.lavasmelter.name = Лавовий завод
|
block.carbide-drill.name=Carbide Drill
|
||||||
block.lavasmelter.fulldescription = Використовує лаву для перетворення залізо на сталь. Альтернатива плавильні. Корисно в ситуаціях, коли вугілля є дефіцитним.
|
block.laser-drill.name=Laser Drill
|
||||||
block.stonedrill.name = Кам'янна свердловина
|
block.water-extractor.name=Water Extractor
|
||||||
block.stonedrill.fulldescription = Основна свердловина.Розміщюється на кам'яній плитці виводить камінь повільними темпами.
|
block.cultivator.name=Cultivator
|
||||||
block.irondrill.name = Залізна свердловина
|
block.dart-ship-factory.name=Dart Ship Factory
|
||||||
block.irondrill.fulldescription = Базова свердловина.Розміщюється на родовищі залізної руди, випускає залізо в повільному темпі.
|
block.delta-mech-factory.name=Delta Mech Factory
|
||||||
block.coaldrill.name = Вугільна свердловина
|
block.dronefactory.name=Drone Factory
|
||||||
block.coaldrill.fulldescription = Базова свердловина.Розміщюється на родовищі вугільної руди ,видобуває вугілля повільними темпами.
|
block.repairpoint.name=Repair Point
|
||||||
block.thoriumdrill.name = Уранова свердловина
|
block.resupplypoint.name=Resupply Point
|
||||||
block.thoriumdrill.fulldescription = Продвинута свердловина. Розміщюється на родовищі уранової руди.Видобуток урану відбувається повільними темпами.
|
block.liquidtank.name=Liquid Tank
|
||||||
block.titaniumdrill.name = Титанова свердловина
|
block.bridgeconduit.name=Bridge Conduit
|
||||||
block.titaniumdrill.fulldescription = Продвинута свердловина.Розміщюється на родовищі титанової руди, Видобуток титану відбувається повільним темпом.
|
block.mechanical-pump.name=Mechanical Pump
|
||||||
block.omnidrill.name = Убер свердловина
|
block.itemsource.name=Item Source
|
||||||
block.omnidrill.fulldescription = Кінцева свердловина.Дуже швидко видобуває будь-який вид руди.
|
block.itemvoid.name=Item Void
|
||||||
block.coalgenerator.name = Вугільний генератор
|
block.liquidsource.name=Liquid Source
|
||||||
block.coalgenerator.fulldescription = Основний генератор. Генерує енергію з вугілля. Виводиться потужність лазерів на 4 сторони.
|
block.powervoid.name=Power Void
|
||||||
block.thermalgenerator.name = Теплогенератор
|
block.powerinfinite.name=Power Infinite
|
||||||
block.thermalgenerator.fulldescription = Генерує енергію від лави. Виводиться потужність лазерів на 4 сторони.
|
block.unloader.name=Unloader
|
||||||
block.combustiongenerator.name = Генератор горіння
|
block.sortedunloader.name=Sorted Unloader
|
||||||
block.combustiongenerator.fulldescription = Генерує енергію з нафти. Виводиться потужність лазерів на 4 сторони.
|
block.vault.name=Vault
|
||||||
block.rtgenerator.name = RTG генератор
|
block.wave.name=Wave
|
||||||
block.rtgenerator.fulldescription = Генерує невелику кількість енергії з радіоактивного розпаду урану. Виводиться потужність лазерів на 4 сторони.
|
block.swarmer.name=Swarmer
|
||||||
block.nuclearreactor.name = Ядерний реактор
|
block.salvo.name=Salvo
|
||||||
block.nuclearreactor.fulldescription = Розширений варіант RTG Generator і кінцевий генератор електроенергії. Генерує енергію з урану. Потребує постійного водяного охолодження.Сильно вибухне якщо не буде постачання води у великії кількості
|
block.ripple.name=Ripple
|
||||||
block.turret.name = Турель
|
block.phase-conveyor.name=Phase Conveyor
|
||||||
block.turret.fulldescription = Базова, дешева турель. Використовує камінь для боєприпасів. Має трохи більше діапазону, ніж подвійна турель.
|
block.bridge-conveyor.name=Bridge Conveyor
|
||||||
block.doubleturret.name = Подвійна турель
|
block.plastanium-compressor.name=Plastanium Compressor
|
||||||
block.doubleturret.fulldescription = Дещо потужна версія турель. Використовує камінь для боєприпасів. Значно більший урон, але менший діапазон. Вистрілює дві кулі.
|
block.pyratite-mixer.name=Pyratite Mixer
|
||||||
block.machineturret.name = Кулеметна турель
|
block.blast-mixer.name=Blast Mixer
|
||||||
block.machineturret.fulldescription = Стандартна всеосяжна турель. Використовує залізо для боєприпасів. Має швидку швидкість пострілу і гідну шкоду.
|
block.solidifer.name=Solidifer
|
||||||
block.shotgunturret.name = Розріджуюча турель
|
block.solar-panel.name=Solar Panel
|
||||||
block.shotgunturret.fulldescription = Стандартна турель. Використовує залізо для боєприпасів. Вистрілює 7 куль навколо себе.Наносить значних ушкоджень,звісно якщо поцілить :)
|
block.solar-panel-large.name=Large Solar Panel
|
||||||
block.flameturret.name = Вогнемет
|
block.oil-extractor.name=Oil Extractor
|
||||||
block.flameturret.fulldescription = Продвинута турель ближнього діапазону. Використовує вугілля для боєприпасів. Має дуже низький радіус, але дуже високий збиток. Добре для близьких дистанцій. Рекомендується використовувати за стінами.
|
block.javelin-ship-factory.name=Javelin Ship factory
|
||||||
block.sniperturret.name = Лазерна турель.
|
block.drone-factory.name=Drone Factory
|
||||||
block.sniperturret.fulldescription = Продвинута далекобійна турель. Використовує сталь для боєприпасів. Дуже високий збиток, але низький рівень урону. Дорогі для використання, але можуть бути розташовані далеко від ліній ворога через його радіус.
|
block.fabricator-factory.name=Fabricator Factory
|
||||||
block.mortarturret.name = Флак турель
|
block.repair-point.name=Repair Point
|
||||||
block.mortarturret.fulldescription = Продвинута,неточна турель. Використовує вугілля для боєприпасів. Стріляє кулями, що вибухають у шрапнеллв. Корисне для великих натовпів ворогів.
|
block.resupply-point.name=Resupply Point
|
||||||
block.laserturret.name = Лазерна турель
|
block.pulse-conduit.name=Pulse Conduit
|
||||||
block.laserturret.fulldescription = Продвинута однопушечна турель. Використовує енергію. Хороша на середніх дистанціях. Ніколи не пропускає.
|
block.phase-conduit.name=Phase Conduit
|
||||||
block.waveturret.name = Тесла
|
block.liquid-router.name=Liquid Router
|
||||||
block.waveturret.fulldescription = Передова багатоцільова турель. Використовує енергію. Середній радіус. Ніколи не пропускає. Активно знижує, але може вражати декількох ворогів одночасно з ланцюговим освітленням.
|
block.liquid-tank.name=Liquid Tank
|
||||||
block.plasmaturret.name = Плазмова турель
|
block.liquid-junction.name=Liquid Junction
|
||||||
block.plasmaturret.fulldescription = Дуже продвинута версія Вогнеметної турелі. Використовує вугілля як боєприпаси. Дуже високий урон, від близької до середньої дистанції.
|
block.bridge-conduit.name=Bridge Conduit
|
||||||
block.chainturret.name = Уранова турель
|
block.rotary-pump.name=Rotary Pump
|
||||||
block.chainturret.fulldescription = Остаточна швидкістна вежа. Використовує уран як боєприпаси. Вистрілює великі кулі при високій швидкості вогню. Середній радіус. Промінь кілька плиток. Надзвичайно жорсткий.
|
block.nuclear-reactor.name=Nuclear Reactor
|
||||||
block.titancannon.name = Титанова гармата
|
|
||||||
block.titancannon.fulldescription = Найбільш далекобійна турель. Використовує уран як боєприпаси. Вистрілює великі снаряди. Далекобійний. Промінь кілька плиток. Надзвичайно жорсткий.
|
|
||||||
block.playerspawn.name = Спавн Гравця
|
|
||||||
block.enemyspawn.name = Спавн ворогів
|
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ precision mediump float;
|
|||||||
precision mediump int;
|
precision mediump int;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define SPACE 1.0
|
||||||
|
|
||||||
uniform sampler2D u_texture;
|
uniform sampler2D u_texture;
|
||||||
|
|
||||||
uniform vec4 u_color;
|
uniform vec4 u_color;
|
||||||
@@ -11,30 +13,15 @@ uniform vec2 u_texsize;
|
|||||||
varying vec4 v_color;
|
varying vec4 v_color;
|
||||||
varying vec2 v_texCoord;
|
varying vec2 v_texCoord;
|
||||||
|
|
||||||
bool id(vec4 v){
|
|
||||||
return v.a > 0.1;
|
|
||||||
}
|
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
|
|
||||||
vec2 T = v_texCoord.xy;
|
|
||||||
|
|
||||||
vec2 v = vec2(1.0/u_texsize.x, 1.0/u_texsize.y);
|
vec2 v = vec2(1.0/u_texsize.x, 1.0/u_texsize.y);
|
||||||
|
|
||||||
bool any = false;
|
vec4 c = texture2D(u_texture, v_texCoord.xy);
|
||||||
|
|
||||||
float step = 1.0;
|
gl_FragColor = mix(c * v_color, u_color,
|
||||||
|
(1.0-step(0.1, texture2D(u_texture, v_texCoord.xy).a)) *
|
||||||
vec4 c = texture2D(u_texture, T);
|
step(0.1, texture2D(u_texture, v_texCoord.xy + vec2(0, SPACE) * v).a +
|
||||||
|
texture2D(u_texture, v_texCoord.xy + vec2(0, -SPACE) * v).a +
|
||||||
if(texture2D(u_texture, T).a < 0.1 &&
|
texture2D(u_texture, v_texCoord.xy + vec2(SPACE, 0) * v).a +
|
||||||
(id(texture2D(u_texture, T + vec2(0, step) * v)) || id(texture2D(u_texture, T + vec2(0, -step) * v)) ||
|
texture2D(u_texture, v_texCoord.xy + vec2(-SPACE, 0) * v).a));
|
||||||
id(texture2D(u_texture, T + vec2(step, 0) * v)) || id(texture2D(u_texture, T + vec2(-step, 0) * v))))
|
|
||||||
any = true;
|
|
||||||
|
|
||||||
if(any){
|
|
||||||
gl_FragColor = u_color;
|
|
||||||
}else{
|
|
||||||
gl_FragColor = c * v_color;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 131 KiB After Width: | Height: | Size: 133 KiB |
@@ -4,21 +4,19 @@
|
|||||||
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.world.Tile" />
|
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.world.Tile" />
|
||||||
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.game.Content" />
|
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.game.Content" />
|
||||||
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.io.Maps" />
|
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.io.Maps" />
|
||||||
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.entities.Player" />
|
|
||||||
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.entities.units.BaseUnit" />
|
|
||||||
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.world.Map" />
|
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.world.Map" />
|
||||||
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.game.SpawnGroup" />
|
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.game.SpawnGroup" />
|
||||||
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.core.GameState" />
|
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.core.GameState" />
|
||||||
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.game.EventType" />
|
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.game.EventType" />
|
||||||
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.io.SaveFileVersion" />
|
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.io.SaveFileVersion" />
|
||||||
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.type.Recipe" />
|
|
||||||
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.ucore.entities.impl.EffectEntity" />
|
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.ucore.entities.impl.EffectEntity" />
|
||||||
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.net.Packets" />
|
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.net.Packets" />
|
||||||
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.net.Packet" />
|
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.net.Packet" />
|
||||||
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.entities.effect" />
|
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.entities.effect" />
|
||||||
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.entities.bullet.Bullet" />
|
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.entities.bullet.Bullet" />
|
||||||
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.type.Recipe" />
|
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.game.Team" />
|
||||||
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.net.Streamable" />
|
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.net.Streamable" />
|
||||||
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.world.meta.BlockBar" />
|
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.world.meta.BlockBar" />
|
||||||
|
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.world.mapgen.WorldGenerator" />
|
||||||
<extend-configuration-property name="gdx.reflect.include" value="com.badlogic.gdx.utils.Predicate" />
|
<extend-configuration-property name="gdx.reflect.include" value="com.badlogic.gdx.utils.Predicate" />
|
||||||
</module>
|
</module>
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
package io.anuke.mindustry;
|
package io.anuke.mindustry;
|
||||||
|
|
||||||
import com.badlogic.gdx.utils.async.AsyncExecutor;
|
|
||||||
import io.anuke.mindustry.core.*;
|
import io.anuke.mindustry.core.*;
|
||||||
import io.anuke.mindustry.io.BundleLoader;
|
import io.anuke.mindustry.io.BundleLoader;
|
||||||
import io.anuke.ucore.core.Timers;
|
import io.anuke.ucore.core.Timers;
|
||||||
@@ -10,7 +9,6 @@ import io.anuke.ucore.util.Log;
|
|||||||
import static io.anuke.mindustry.Vars.*;
|
import static io.anuke.mindustry.Vars.*;
|
||||||
|
|
||||||
public class Mindustry extends ModuleCore {
|
public class Mindustry extends ModuleCore {
|
||||||
private AsyncExecutor exec = new AsyncExecutor(1);
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init(){
|
public void init(){
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ public class Vars{
|
|||||||
//respawn time in frames
|
//respawn time in frames
|
||||||
public static final float respawnduration = 60*4;
|
public static final float respawnduration = 60*4;
|
||||||
//time between waves in frames (on normal mode)
|
//time between waves in frames (on normal mode)
|
||||||
public static final float wavespace = 60*60*1.5f;
|
public static final float wavespace = 60*60*2f;
|
||||||
//waves can last no longer than 3 minutes, otherwise the next one spawns
|
//waves can last no longer than 3 minutes, otherwise the next one spawns
|
||||||
public static final float maxwavespace = 60*60*4f;
|
public static final float maxwavespace = 60*60*4f;
|
||||||
|
|
||||||
@@ -168,7 +168,7 @@ public class Vars{
|
|||||||
for(EntityGroup<?> group : Entities.getAllGroups()){
|
for(EntityGroup<?> group : Entities.getAllGroups()){
|
||||||
group.setRemoveListener(entity -> {
|
group.setRemoveListener(entity -> {
|
||||||
if(entity instanceof SyncTrait && Net.client()){
|
if(entity instanceof SyncTrait && Net.client()){
|
||||||
netClient.addRemovedEntity(((SyncTrait) entity).getID());
|
netClient.addRemovedEntity((entity).getID());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ public class Pathfinder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean passable(Tile tile, Team team){
|
private boolean passable(Tile tile, Team team){
|
||||||
return (tile.getWallID() == 0 && tile.cliffs == 0 && !tile.floor().solid && !(tile.floor().isLiquid && (tile.floor().damageTaken > 0 || tile.floor().drownTime > 0)))
|
return (tile.getWallID() == 0 && !tile.floor().isLiquid && tile.cliffs == 0 && !tile.floor().solid && !(tile.floor().isLiquid && (tile.floor().damageTaken > 0 || tile.floor().drownTime > 0)))
|
||||||
|| (tile.breakable() && (tile.getTeam() != team)) || !tile.solid();
|
|| (tile.breakable() && (tile.getTeam() != team)) || !tile.solid();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,11 +21,13 @@ public class Items implements ContentList{
|
|||||||
tungsten = new Item("tungsten", Color.valueOf("a0b0c8")) {{
|
tungsten = new Item("tungsten", Color.valueOf("a0b0c8")) {{
|
||||||
type = ItemType.material;
|
type = ItemType.material;
|
||||||
hardness = 1;
|
hardness = 1;
|
||||||
|
cost = 0.75f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
lead = new Item("lead", Color.valueOf("8e85a2")) {{
|
lead = new Item("lead", Color.valueOf("8e85a2")) {{
|
||||||
type = ItemType.material;
|
type = ItemType.material;
|
||||||
hardness = 1;
|
hardness = 1;
|
||||||
|
cost = 0.6f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
coal = new Item("coal", Color.valueOf("272727")) {{
|
coal = new Item("coal", Color.valueOf("272727")) {{
|
||||||
@@ -41,6 +43,7 @@ public class Items implements ContentList{
|
|||||||
titanium = new Item("titanium", Color.valueOf("8da1e3")) {{
|
titanium = new Item("titanium", Color.valueOf("8da1e3")) {{
|
||||||
type = ItemType.material;
|
type = ItemType.material;
|
||||||
hardness = 3;
|
hardness = 3;
|
||||||
|
cost = 1.1f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
thorium = new Item("thorium", Color.valueOf("f9a3c7")) {{
|
thorium = new Item("thorium", Color.valueOf("f9a3c7")) {{
|
||||||
@@ -48,20 +51,24 @@ public class Items implements ContentList{
|
|||||||
explosiveness = 0.1f;
|
explosiveness = 0.1f;
|
||||||
hardness = 4;
|
hardness = 4;
|
||||||
radioactivity = 0.5f;
|
radioactivity = 0.5f;
|
||||||
|
cost = 1.2f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
silicon = new Item("silicon", Color.valueOf("53565c")) {{
|
silicon = new Item("silicon", Color.valueOf("53565c")) {{
|
||||||
type = ItemType.material;
|
type = ItemType.material;
|
||||||
|
cost = 0.9f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
plastanium = new Item("plastanium", Color.valueOf("e9ead3")) {{
|
plastanium = new Item("plastanium", Color.valueOf("e9ead3")) {{
|
||||||
type = ItemType.material;
|
type = ItemType.material;
|
||||||
flammability = 0.1f;
|
flammability = 0.1f;
|
||||||
explosiveness = 0.1f;
|
explosiveness = 0.1f;
|
||||||
|
cost = 1.5f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
phasematter = new Item("phase-matter", Color.valueOf("f4ba6e")) {{
|
phasematter = new Item("phase-matter", Color.valueOf("f4ba6e")) {{
|
||||||
type = ItemType.material;
|
type = ItemType.material;
|
||||||
|
cost = 1.5f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
surgealloy = new Item("surge-alloy", Color.valueOf("b4d5c7")) {{
|
surgealloy = new Item("surge-alloy", Color.valueOf("b4d5c7")) {{
|
||||||
|
|||||||
@@ -7,18 +7,11 @@ import io.anuke.mindustry.type.ContentList;
|
|||||||
import io.anuke.mindustry.type.Liquid;
|
import io.anuke.mindustry.type.Liquid;
|
||||||
|
|
||||||
public class Liquids implements ContentList {
|
public class Liquids implements ContentList {
|
||||||
public static Liquid none, water, lava, oil, cryofluid;
|
public static Liquid water, lava, oil, cryofluid;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void load() {
|
public void load() {
|
||||||
|
|
||||||
none = new Liquid("none", Color.CLEAR){
|
|
||||||
@Override
|
|
||||||
public boolean isHidden(){
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
water = new Liquid("water", Color.valueOf("486acd")) {
|
water = new Liquid("water", Color.valueOf("486acd")) {
|
||||||
{
|
{
|
||||||
heatCapacity = 0.4f;
|
heatCapacity = 0.4f;
|
||||||
@@ -48,8 +41,8 @@ public class Liquids implements ContentList {
|
|||||||
|
|
||||||
cryofluid = new Liquid("cryofluid", Color.SKY) {
|
cryofluid = new Liquid("cryofluid", Color.SKY) {
|
||||||
{
|
{
|
||||||
heatCapacity = 0.75f;
|
heatCapacity = 0.9f;
|
||||||
temperature = 0.4f;
|
temperature = 0.25f;
|
||||||
tier = 1;
|
tier = 1;
|
||||||
effect = StatusEffects.freezing;
|
effect = StatusEffects.freezing;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ public class Mechs implements ContentList {
|
|||||||
}};
|
}};
|
||||||
|
|
||||||
dart = new Mech("dart-ship", true){{
|
dart = new Mech("dart-ship", true){{
|
||||||
drillPower = -1;
|
drillPower = 1;
|
||||||
speed = 0.4f;
|
speed = 0.4f;
|
||||||
maxSpeed = 3f;
|
maxSpeed = 3f;
|
||||||
drag = 0.1f;
|
drag = 0.1f;
|
||||||
|
|||||||
@@ -44,11 +44,11 @@ public class Recipes implements ContentList{
|
|||||||
|
|
||||||
//starter lead transporation
|
//starter lead transporation
|
||||||
new Recipe(distribution, DistributionBlocks.junction, new ItemStack(Items.lead, 2));
|
new Recipe(distribution, DistributionBlocks.junction, new ItemStack(Items.lead, 2));
|
||||||
new Recipe(distribution, DistributionBlocks.router, new ItemStack(Items.lead, 6));
|
new Recipe(distribution, DistributionBlocks.splitter, new ItemStack(Items.lead, 6));
|
||||||
|
|
||||||
//advanced carbide transporation
|
//advanced carbide transporation
|
||||||
new Recipe(distribution, DistributionBlocks.splitter, new ItemStack(Items.carbide, 2), new ItemStack(Items.tungsten, 2));
|
//new Recipe(distribution, DistributionBlocks.splitter, new ItemStack(Items.carbide, 2), new ItemStack(Items.tungsten, 2));
|
||||||
new Recipe(distribution, DistributionBlocks.multiplexer, new ItemStack(Items.carbide, 8), new ItemStack(Items.tungsten, 8));
|
new Recipe(distribution, DistributionBlocks.distributor, new ItemStack(Items.carbide, 8), new ItemStack(Items.tungsten, 8));
|
||||||
new Recipe(distribution, DistributionBlocks.sorter, new ItemStack(Items.carbide, 4), new ItemStack(Items.tungsten, 4));
|
new Recipe(distribution, DistributionBlocks.sorter, new ItemStack(Items.carbide, 4), new ItemStack(Items.tungsten, 4));
|
||||||
new Recipe(distribution, DistributionBlocks.overflowGate, new ItemStack(Items.carbide, 4), new ItemStack(Items.tungsten, 8));
|
new Recipe(distribution, DistributionBlocks.overflowGate, new ItemStack(Items.carbide, 4), new ItemStack(Items.tungsten, 8));
|
||||||
new Recipe(distribution, DistributionBlocks.bridgeConveyor, new ItemStack(Items.carbide, 8), new ItemStack(Items.tungsten, 8));
|
new Recipe(distribution, DistributionBlocks.bridgeConveyor, new ItemStack(Items.carbide, 8), new ItemStack(Items.tungsten, 8));
|
||||||
@@ -101,6 +101,8 @@ public class Recipes implements ContentList{
|
|||||||
new Recipe(power, PowerBlocks.solarPanel, new ItemStack(Items.lead, 20), new ItemStack(Items.silicon, 30));
|
new Recipe(power, PowerBlocks.solarPanel, new ItemStack(Items.lead, 20), new ItemStack(Items.silicon, 30));
|
||||||
new Recipe(power, PowerBlocks.largeSolarPanel, new ItemStack(Items.lead, 200), new ItemStack(Items.silicon, 290), new ItemStack(Items.phasematter, 30));
|
new Recipe(power, PowerBlocks.largeSolarPanel, new ItemStack(Items.lead, 200), new ItemStack(Items.silicon, 290), new ItemStack(Items.phasematter, 30));
|
||||||
|
|
||||||
|
//generators - other
|
||||||
|
new Recipe(power, PowerBlocks.nuclearReactor, new ItemStack(Items.lead, 600), new ItemStack(Items.silicon, 400), new ItemStack(Items.carbide, 300), new ItemStack(Items.thorium, 300));
|
||||||
|
|
||||||
//new Recipe(distribution, StorageBlocks.core, new ItemStack(Items.carbide, 50));
|
//new Recipe(distribution, StorageBlocks.core, new ItemStack(Items.carbide, 50));
|
||||||
new Recipe(distribution, StorageBlocks.unloader, new ItemStack(Items.carbide, 40), new ItemStack(Items.silicon, 50));
|
new Recipe(distribution, StorageBlocks.unloader, new ItemStack(Items.carbide, 40), new ItemStack(Items.silicon, 50));
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ public class StatusEffects implements ContentList {
|
|||||||
overdrive = new StatusEffect(6f) {
|
overdrive = new StatusEffect(6f) {
|
||||||
{
|
{
|
||||||
armorMultiplier = 0.95f;
|
armorMultiplier = 0.95f;
|
||||||
speedMultiplier = 1.4f;
|
speedMultiplier = 1.05f;
|
||||||
damageMultiplier = 1.4f;
|
damageMultiplier = 1.4f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ public class UnitTypes implements ContentList {
|
|||||||
|
|
||||||
vtol = new UnitType("vtol", Vtol.class, Vtol::new){{
|
vtol = new UnitType("vtol", Vtol.class, Vtol::new){{
|
||||||
speed = 0.3f;
|
speed = 0.3f;
|
||||||
maxVelocity = 2.1f;
|
maxVelocity = 1.9f;
|
||||||
drag = 0.01f;
|
drag = 0.01f;
|
||||||
isFlying = true;
|
isFlying = true;
|
||||||
}};
|
}};
|
||||||
@@ -50,7 +50,7 @@ public class UnitTypes implements ContentList {
|
|||||||
monsoon = new UnitType("monsoon", Monsoon.class, Monsoon::new){{
|
monsoon = new UnitType("monsoon", Monsoon.class, Monsoon::new){{
|
||||||
health = 230;
|
health = 230;
|
||||||
speed = 0.2f;
|
speed = 0.2f;
|
||||||
maxVelocity = 1.5f;
|
maxVelocity = 1.4f;
|
||||||
drag = 0.01f;
|
drag = 0.01f;
|
||||||
isFlying = true;
|
isFlying = true;
|
||||||
weapon = Weapons.bomber;
|
weapon = Weapons.bomber;
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ public class Weapons implements ContentList {
|
|||||||
|
|
||||||
chainBlaster = new Weapon("chain-blaster") {{
|
chainBlaster = new Weapon("chain-blaster") {{
|
||||||
length = 1.5f;
|
length = 1.5f;
|
||||||
reload = 20f;
|
reload = 30f;
|
||||||
roundrobin = true;
|
roundrobin = true;
|
||||||
ejectEffect = ShootFx.shellEjectSmall;
|
ejectEffect = ShootFx.shellEjectSmall;
|
||||||
setAmmo(AmmoTypes.bulletLead, AmmoTypes.bulletCarbide, AmmoTypes.bulletTungsten, AmmoTypes.bulletSilicon, AmmoTypes.bulletThorium);
|
setAmmo(AmmoTypes.bulletLead, AmmoTypes.bulletCarbide, AmmoTypes.bulletTungsten, AmmoTypes.bulletSilicon, AmmoTypes.bulletThorium);
|
||||||
|
|||||||
@@ -32,7 +32,6 @@ public class Blocks extends BlockList implements ContentList{
|
|||||||
|
|
||||||
for(int i = 1; i <= 6; i ++){
|
for(int i = 1; i <= 6; i ++){
|
||||||
new BuildBlock("build" + i);
|
new BuildBlock("build" + i);
|
||||||
new BreakBlock("break" + i);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
space = new Floor("space") {{
|
space = new Floor("space") {{
|
||||||
@@ -146,17 +145,14 @@ public class Blocks extends BlockList implements ContentList{
|
|||||||
|
|
||||||
rock = new Rock("rock") {{
|
rock = new Rock("rock") {{
|
||||||
variants = 2;
|
variants = 2;
|
||||||
varyShadow = true;
|
|
||||||
}};
|
}};
|
||||||
|
|
||||||
icerock = new Rock("icerock") {{
|
icerock = new Rock("icerock") {{
|
||||||
variants = 2;
|
variants = 2;
|
||||||
varyShadow = true;
|
|
||||||
}};
|
}};
|
||||||
|
|
||||||
blackrock = new Rock("blackrock") {{
|
blackrock = new Rock("blackrock") {{
|
||||||
variants = 1;
|
variants = 1;
|
||||||
varyShadow = true;
|
|
||||||
}};
|
}};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,51 +13,51 @@ import io.anuke.mindustry.world.blocks.production.*;
|
|||||||
public class CraftingBlocks extends BlockList implements ContentList {
|
public class CraftingBlocks extends BlockList implements ContentList {
|
||||||
public static Block smelter, arcsmelter, siliconsmelter, plastaniumCompressor, phaseWeaver, alloysmelter, alloyfuser,
|
public static Block smelter, arcsmelter, siliconsmelter, plastaniumCompressor, phaseWeaver, alloysmelter, alloyfuser,
|
||||||
pyratiteMixer, blastMixer,
|
pyratiteMixer, blastMixer,
|
||||||
cryofluidmixer, melter, separator, centrifuge, biomatterCompressor, pulverizer, oilRefinery, solidifier, incinerator;
|
cryofluidmixer, melter, separator, centrifuge, biomatterCompressor, pulverizer, solidifier, incinerator;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void load() {
|
public void load() {
|
||||||
smelter = new Smelter("smelter") {{
|
smelter = new Smelter("smelter") {{
|
||||||
health = 70;
|
health = 70;
|
||||||
inputs = new ItemStack[]{new ItemStack(Items.tungsten, 3)};
|
|
||||||
fuel = Items.coal;
|
|
||||||
result = Items.carbide;
|
result = Items.carbide;
|
||||||
craftTime = 45f;
|
craftTime = 45f;
|
||||||
burnDuration = 35f;
|
burnDuration = 35f;
|
||||||
useFlux = true;
|
useFlux = true;
|
||||||
|
|
||||||
|
consumes.items(new ItemStack[]{new ItemStack(Items.tungsten, 3)});
|
||||||
|
consumes.item(Items.coal);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
arcsmelter = new PowerSmelter("arc-smelter") {{
|
arcsmelter = new PowerSmelter("arc-smelter") {{
|
||||||
health = 90;
|
health = 90;
|
||||||
craftEffect = BlockFx.smeltsmoke;
|
craftEffect = BlockFx.smeltsmoke;
|
||||||
inputs = new ItemStack[]{new ItemStack(Items.coal, 1), new ItemStack(Items.tungsten, 2)};
|
|
||||||
result = Items.carbide;
|
result = Items.carbide;
|
||||||
powerUse = 0.1f;
|
|
||||||
craftTime = 30f;
|
craftTime = 30f;
|
||||||
size = 2;
|
size = 2;
|
||||||
|
|
||||||
useFlux = true;
|
useFlux = true;
|
||||||
fluxNeeded = 2;
|
fluxNeeded = 2;
|
||||||
|
|
||||||
|
consumes.items(new ItemStack[]{new ItemStack(Items.coal, 1), new ItemStack(Items.tungsten, 2)});
|
||||||
|
consumes.power(0.1f);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
siliconsmelter = new PowerSmelter("silicon-smelter") {{
|
siliconsmelter = new PowerSmelter("silicon-smelter") {{
|
||||||
health = 90;
|
health = 90;
|
||||||
craftEffect = BlockFx.smeltsmoke;
|
craftEffect = BlockFx.smeltsmoke;
|
||||||
inputs = new ItemStack[]{new ItemStack(Items.coal, 1), new ItemStack(Items.sand, 2)};
|
|
||||||
result = Items.silicon;
|
result = Items.silicon;
|
||||||
powerUse = 0.05f;
|
|
||||||
craftTime = 40f;
|
craftTime = 40f;
|
||||||
size = 2;
|
size = 2;
|
||||||
hasLiquids = false;
|
hasLiquids = false;
|
||||||
flameColor = Color.valueOf("ffef99");
|
flameColor = Color.valueOf("ffef99");
|
||||||
|
|
||||||
|
consumes.items(new ItemStack[]{new ItemStack(Items.coal, 1), new ItemStack(Items.sand, 2)});
|
||||||
|
consumes.power(0.05f);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
plastaniumCompressor = new PlasteelCompressor("plastanium-compressor") {{
|
plastaniumCompressor = new PlastaniumCompressor("plastanium-compressor") {{
|
||||||
inputLiquid = Liquids.oil;
|
hasItems = true;
|
||||||
inputItem = new ItemStack(Items.carbide, 1);
|
|
||||||
liquidUse = 0.3f;
|
|
||||||
liquidCapacity = 60f;
|
liquidCapacity = 60f;
|
||||||
powerUse = 0.5f;
|
|
||||||
craftTime = 80f;
|
craftTime = 80f;
|
||||||
output = Items.plastanium;
|
output = Items.plastanium;
|
||||||
itemCapacity = 30;
|
itemCapacity = 30;
|
||||||
@@ -66,66 +66,75 @@ public class CraftingBlocks extends BlockList implements ContentList {
|
|||||||
hasPower = hasLiquids = true;
|
hasPower = hasLiquids = true;
|
||||||
craftEffect = BlockFx.formsmoke;
|
craftEffect = BlockFx.formsmoke;
|
||||||
updateEffect = BlockFx.plasticburn;
|
updateEffect = BlockFx.plasticburn;
|
||||||
|
|
||||||
|
consumes.liquid(Liquids.oil, 0.3f);
|
||||||
|
consumes.power(0.4f);
|
||||||
|
consumes.item(Items.titanium, 2);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
phaseWeaver = new PhaseWeaver("phase-weaver") {{
|
phaseWeaver = new PhaseWeaver("phase-weaver") {{
|
||||||
health = 90;
|
health = 90;
|
||||||
craftEffect = BlockFx.smeltsmoke;
|
craftEffect = BlockFx.smeltsmoke;
|
||||||
inputs = new ItemStack[]{new ItemStack(Items.thorium, 4), new ItemStack(Items.sand, 10)};
|
|
||||||
result = Items.phasematter;
|
result = Items.phasematter;
|
||||||
powerUse = 0.4f;
|
|
||||||
craftTime = 120f;
|
craftTime = 120f;
|
||||||
size = 2;
|
size = 2;
|
||||||
|
|
||||||
|
consumes.items(new ItemStack[]{new ItemStack(Items.thorium, 4), new ItemStack(Items.sand, 10)});
|
||||||
|
consumes.power(0.5f);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
alloysmelter = new PowerSmelter("alloy-smelter") {{
|
alloysmelter = new PowerSmelter("alloy-smelter") {{
|
||||||
health = 90;
|
health = 90;
|
||||||
craftEffect = BlockFx.smeltsmoke;
|
craftEffect = BlockFx.smeltsmoke;
|
||||||
inputs = new ItemStack[]{new ItemStack(Items.titanium, 2), new ItemStack(Items.lead, 4), new ItemStack(Items.silicon, 3), new ItemStack(Items.plastanium, 2)};
|
|
||||||
result = Items.surgealloy;
|
result = Items.surgealloy;
|
||||||
powerUse = 0.3f;
|
|
||||||
craftTime = 50f;
|
craftTime = 50f;
|
||||||
size = 2;
|
size = 2;
|
||||||
|
|
||||||
useFlux = true;
|
useFlux = true;
|
||||||
fluxNeeded = 4;
|
fluxNeeded = 4;
|
||||||
|
|
||||||
|
consumes.power(0.3f);
|
||||||
|
consumes.items(new ItemStack[]{new ItemStack(Items.titanium, 2), new ItemStack(Items.lead, 4), new ItemStack(Items.silicon, 3), new ItemStack(Items.plastanium, 2)});
|
||||||
}};
|
}};
|
||||||
|
|
||||||
alloyfuser = new PowerSmelter("alloy-fuser") {{
|
alloyfuser = new PowerSmelter("alloy-fuser") {{
|
||||||
health = 90;
|
health = 90;
|
||||||
craftEffect = BlockFx.smeltsmoke;
|
craftEffect = BlockFx.smeltsmoke;
|
||||||
inputs = new ItemStack[]{new ItemStack(Items.titanium, 3), new ItemStack(Items.lead, 4), new ItemStack(Items.silicon, 3), new ItemStack(Items.plastanium, 2)};
|
|
||||||
result = Items.surgealloy;
|
result = Items.surgealloy;
|
||||||
powerUse = 0.4f;
|
|
||||||
craftTime = 30f;
|
craftTime = 30f;
|
||||||
size = 3;
|
size = 3;
|
||||||
|
|
||||||
useFlux = true;
|
useFlux = true;
|
||||||
fluxNeeded = 4;
|
fluxNeeded = 4;
|
||||||
|
|
||||||
|
consumes.items(new ItemStack[]{new ItemStack(Items.titanium, 3), new ItemStack(Items.lead, 4), new ItemStack(Items.silicon, 3), new ItemStack(Items.plastanium, 2)});
|
||||||
|
consumes.power(0.4f);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
cryofluidmixer = new LiquidMixer("cryofluidmixer") {{
|
cryofluidmixer = new LiquidMixer("cryofluidmixer") {{
|
||||||
health = 200;
|
health = 200;
|
||||||
inputLiquid = Liquids.water;
|
|
||||||
outputLiquid = Liquids.cryofluid;
|
outputLiquid = Liquids.cryofluid;
|
||||||
inputItem = Items.titanium;
|
|
||||||
liquidPerItem = 50f;
|
liquidPerItem = 50f;
|
||||||
itemCapacity = 50;
|
itemCapacity = 50;
|
||||||
powerUse = 0.1f;
|
|
||||||
size = 2;
|
size = 2;
|
||||||
|
hasPower = true;
|
||||||
|
|
||||||
|
consumes.power(0.1f);
|
||||||
|
consumes.item(Items.titanium);
|
||||||
|
consumes.liquid(Liquids.water, 0.3f);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
blastMixer = new GenericCrafter("blast-mixer") {{
|
blastMixer = new GenericCrafter("blast-mixer") {{
|
||||||
itemCapacity = 20;
|
itemCapacity = 20;
|
||||||
hasItems = true;
|
hasItems = true;
|
||||||
hasPower = true;
|
hasPower = true;
|
||||||
inputLiquid = Liquids.oil;
|
hasLiquids = true;
|
||||||
liquidUse = 0.05f;
|
|
||||||
inputItem = new ItemStack(Items.pyratite, 1);
|
|
||||||
output = Items.blastCompound;
|
output = Items.blastCompound;
|
||||||
powerUse = 0.04f;
|
|
||||||
|
|
||||||
size = 2;
|
size = 2;
|
||||||
|
|
||||||
|
consumes.liquid(Liquids.oil, 0.05f);
|
||||||
|
consumes.item(Items.pyratite, 1);
|
||||||
|
consumes.power(0.04f);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
pyratiteMixer = new PowerSmelter("pyratite-mixer") {{
|
pyratiteMixer = new PowerSmelter("pyratite-mixer") {{
|
||||||
@@ -133,27 +142,27 @@ public class CraftingBlocks extends BlockList implements ContentList {
|
|||||||
itemCapacity = 20;
|
itemCapacity = 20;
|
||||||
hasItems = true;
|
hasItems = true;
|
||||||
hasPower = true;
|
hasPower = true;
|
||||||
inputs = new ItemStack[]{new ItemStack(Items.coal, 1), new ItemStack(Items.lead, 2), new ItemStack(Items.sand, 2)};
|
|
||||||
result = Items.pyratite;
|
result = Items.pyratite;
|
||||||
powerUse = 0.02f;
|
|
||||||
|
|
||||||
size = 2;
|
size = 2;
|
||||||
|
|
||||||
|
consumes.power(0.02f);
|
||||||
|
consumes.items(new ItemStack[]{new ItemStack(Items.coal, 1), new ItemStack(Items.lead, 2), new ItemStack(Items.sand, 2)});
|
||||||
}};
|
}};
|
||||||
|
|
||||||
melter = new PowerCrafter("melter") {{
|
melter = new PowerCrafter("melter") {{
|
||||||
health = 200;
|
health = 200;
|
||||||
outputLiquid = Liquids.lava;
|
outputLiquid = Liquids.lava;
|
||||||
outputLiquidAmount = 0.05f;
|
outputLiquidAmount = 0.75f;
|
||||||
input = new ItemStack(Items.stone, 1);
|
|
||||||
itemCapacity = 50;
|
itemCapacity = 50;
|
||||||
craftTime = 10f;
|
craftTime = 10f;
|
||||||
powerUse = 0.1f;
|
|
||||||
hasLiquids = hasPower = true;
|
hasLiquids = hasPower = true;
|
||||||
|
|
||||||
|
consumes.power(0.1f);
|
||||||
|
consumes.item(Items.stone, 2);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
separator = new Separator("separator") {{
|
separator = new Separator("separator") {{
|
||||||
liquid = Liquids.water;
|
|
||||||
item = Items.stone;
|
|
||||||
results = new Item[]{
|
results = new Item[]{
|
||||||
null, null, null, null, null, null, null, null, null, null,
|
null, null, null, null, null, null, null, null, null, null,
|
||||||
Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand,
|
Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand,
|
||||||
@@ -163,15 +172,15 @@ public class CraftingBlocks extends BlockList implements ContentList {
|
|||||||
Items.coal, Items.coal,
|
Items.coal, Items.coal,
|
||||||
Items.titanium
|
Items.titanium
|
||||||
};
|
};
|
||||||
liquidUse = 0.2f;
|
|
||||||
filterTime = 40f;
|
filterTime = 40f;
|
||||||
itemCapacity = 40;
|
itemCapacity = 40;
|
||||||
health = 50;
|
health = 50;
|
||||||
|
|
||||||
|
consumes.item(Items.stone, 2);
|
||||||
|
consumes.liquid(Liquids.water, 0.3f);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
centrifuge = new Separator("centrifuge") {{
|
centrifuge = new Separator("centrifuge") {{
|
||||||
liquid = Liquids.water;
|
|
||||||
item = Items.stone;
|
|
||||||
results = new Item[]{
|
results = new Item[]{
|
||||||
null, null, null, null, null, null, null, null, null, null, null, null, null,
|
null, null, null, null, null, null, null, null, null, null, null, null, null,
|
||||||
Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand,
|
Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand,
|
||||||
@@ -183,9 +192,7 @@ public class CraftingBlocks extends BlockList implements ContentList {
|
|||||||
Items.thorium,
|
Items.thorium,
|
||||||
};
|
};
|
||||||
|
|
||||||
liquidUse = 0.3f;
|
|
||||||
hasPower = true;
|
hasPower = true;
|
||||||
powerUse = 0.2f;
|
|
||||||
filterTime = 15f;
|
filterTime = 15f;
|
||||||
itemCapacity = 60;
|
itemCapacity = 60;
|
||||||
health = 50 * 4;
|
health = 50 * 4;
|
||||||
@@ -194,53 +201,49 @@ public class CraftingBlocks extends BlockList implements ContentList {
|
|||||||
spinnerThickness = 1.5f;
|
spinnerThickness = 1.5f;
|
||||||
spinnerSpeed = 3f;
|
spinnerSpeed = 3f;
|
||||||
size = 2;
|
size = 2;
|
||||||
|
|
||||||
|
consumes.item(Items.stone, 2);
|
||||||
|
consumes.power(0.2f);
|
||||||
|
consumes.liquid(Liquids.water, 0.5f);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
biomatterCompressor = new Compressor("biomattercompressor") {{
|
biomatterCompressor = new Compressor("biomattercompressor") {{
|
||||||
input = new ItemStack(Items.biomatter, 1);
|
|
||||||
liquidCapacity = 60f;
|
liquidCapacity = 60f;
|
||||||
itemCapacity = 50;
|
itemCapacity = 50;
|
||||||
powerUse = 0.06f;
|
|
||||||
craftTime = 25f;
|
craftTime = 25f;
|
||||||
outputLiquid = Liquids.oil;
|
outputLiquid = Liquids.oil;
|
||||||
outputLiquidAmount = 0.1f;
|
outputLiquidAmount = 0.14f;
|
||||||
size = 2;
|
size = 2;
|
||||||
health = 320;
|
health = 320;
|
||||||
hasLiquids = true;
|
hasLiquids = true;
|
||||||
|
|
||||||
|
consumes.item(Items.biomatter, 1);
|
||||||
|
consumes.power(0.06f);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
pulverizer = new Pulverizer("pulverizer") {{
|
pulverizer = new Pulverizer("pulverizer") {{
|
||||||
inputItem = new ItemStack(Items.stone, 2);
|
|
||||||
itemCapacity = 40;
|
itemCapacity = 40;
|
||||||
powerUse = 0.2f;
|
|
||||||
output = Items.sand;
|
output = Items.sand;
|
||||||
health = 80;
|
health = 80;
|
||||||
craftEffect = BlockFx.pulverize;
|
craftEffect = BlockFx.pulverize;
|
||||||
craftTime = 60f;
|
craftTime = 60f;
|
||||||
updateEffect = BlockFx.pulverizeSmall;
|
updateEffect = BlockFx.pulverizeSmall;
|
||||||
hasItems = hasPower = true;
|
hasItems = hasPower = true;
|
||||||
}};
|
|
||||||
|
|
||||||
oilRefinery = new GenericCrafter("oilrefinery") {{
|
consumes.item(Items.stone, 2);
|
||||||
inputLiquid = Liquids.oil;
|
consumes.power(0.2f);
|
||||||
powerUse = 0.05f;
|
|
||||||
liquidUse = 0.1f;
|
|
||||||
liquidCapacity = 56f;
|
|
||||||
output = Items.coal;
|
|
||||||
health = 80;
|
|
||||||
craftEffect = BlockFx.purifyoil;
|
|
||||||
hasItems = hasLiquids = hasPower = true;
|
|
||||||
}};
|
}};
|
||||||
|
|
||||||
solidifier = new GenericCrafter("solidifer") {{
|
solidifier = new GenericCrafter("solidifer") {{
|
||||||
inputLiquid = Liquids.lava;
|
|
||||||
liquidUse = 1f;
|
|
||||||
liquidCapacity = 21f;
|
liquidCapacity = 21f;
|
||||||
craftTime = 14;
|
craftTime = 14;
|
||||||
output = Items.stone;
|
output = Items.stone;
|
||||||
|
itemCapacity = 20;
|
||||||
health = 80;
|
health = 80;
|
||||||
craftEffect = BlockFx.purifystone;
|
craftEffect = BlockFx.purifystone;
|
||||||
hasLiquids = hasItems = true;
|
hasLiquids = hasItems = true;
|
||||||
|
|
||||||
|
consumes.liquid(Liquids.lava, 1f);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
incinerator = new Incinerator("incinerator") {{
|
incinerator = new Incinerator("incinerator") {{
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ public class DebugBlocks extends BlockList implements ContentList{
|
|||||||
@Override
|
@Override
|
||||||
public void update(Tile tile) {
|
public void update(Tile tile) {
|
||||||
SorterEntity entity = tile.entity();
|
SorterEntity entity = tile.entity();
|
||||||
entity.items.items[entity.sortItem.id] = 1;
|
entity.items.set(entity.sortItem, 1);
|
||||||
tryDump(tile, entity.sortItem);
|
tryDump(tile, entity.sortItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,9 +79,8 @@ public class DebugBlocks extends BlockList implements ContentList{
|
|||||||
public void update(Tile tile) {
|
public void update(Tile tile) {
|
||||||
LiquidSourceEntity entity = tile.entity();
|
LiquidSourceEntity entity = tile.entity();
|
||||||
|
|
||||||
tile.entity.liquids.amount = liquidCapacity;
|
tile.entity.liquids.add(entity.source, liquidCapacity);
|
||||||
tile.entity.liquids.liquid = entity.source;
|
tryDumpLiquid(tile, entity.source);
|
||||||
tryDumpLiquid(tile);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -35,11 +35,11 @@ public class DefenseBlocks extends BlockList implements ContentList {
|
|||||||
}};
|
}};
|
||||||
|
|
||||||
thoriumWall = new Wall("thorium-wall") {{
|
thoriumWall = new Wall("thorium-wall") {{
|
||||||
health = 110 * wallHealthMultiplier;
|
health = 200 * wallHealthMultiplier;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
thoriumWallLarge = new Wall("thorium-wall-large") {{
|
thoriumWallLarge = new Wall("thorium-wall-large") {{
|
||||||
health = 110 * wallHealthMultiplier*4;
|
health = 200 * wallHealthMultiplier*4;
|
||||||
size = 2;
|
size = 2;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import io.anuke.mindustry.world.Block;
|
|||||||
import io.anuke.mindustry.world.blocks.distribution.*;
|
import io.anuke.mindustry.world.blocks.distribution.*;
|
||||||
|
|
||||||
public class DistributionBlocks extends BlockList implements ContentList{
|
public class DistributionBlocks extends BlockList implements ContentList{
|
||||||
public static Block conveyor, titaniumconveyor, router, multiplexer, junction,
|
public static Block conveyor, titaniumconveyor, distributor, junction,
|
||||||
bridgeConveyor, phaseConveyor, sorter, splitter, overflowGate, massDriver;
|
bridgeConveyor, phaseConveyor, sorter, splitter, overflowGate, massDriver;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -21,13 +21,6 @@ public class DistributionBlocks extends BlockList implements ContentList{
|
|||||||
speed = 0.07f;
|
speed = 0.07f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
router = new Router("router");
|
|
||||||
|
|
||||||
multiplexer = new Router("multiplexer") {{
|
|
||||||
size = 2;
|
|
||||||
itemCapacity = 80;
|
|
||||||
}};
|
|
||||||
|
|
||||||
junction = new Junction("junction") {{
|
junction = new Junction("junction") {{
|
||||||
speed = 26;
|
speed = 26;
|
||||||
capacity = 32;
|
capacity = 32;
|
||||||
@@ -46,6 +39,10 @@ public class DistributionBlocks extends BlockList implements ContentList{
|
|||||||
|
|
||||||
splitter = new Splitter("splitter");
|
splitter = new Splitter("splitter");
|
||||||
|
|
||||||
|
distributor = new Splitter("distributor") {{
|
||||||
|
size = 2;
|
||||||
|
}};
|
||||||
|
|
||||||
overflowGate = new OverflowGate("overflow-gate");
|
overflowGate = new OverflowGate("overflow-gate");
|
||||||
|
|
||||||
massDriver = new MassDriver("mass-driver"){{
|
massDriver = new MassDriver("mass-driver"){{
|
||||||
|
|||||||
@@ -20,15 +20,16 @@ public class LiquidBlocks extends BlockList implements ContentList{
|
|||||||
rotaryPump = new Pump("rotary-pump") {{
|
rotaryPump = new Pump("rotary-pump") {{
|
||||||
shadow = "shadow-rounded-2";
|
shadow = "shadow-rounded-2";
|
||||||
pumpAmount = 0.25f;
|
pumpAmount = 0.25f;
|
||||||
powerUse = 0.015f;
|
consumes.power(0.015f);
|
||||||
liquidCapacity = 30f;
|
liquidCapacity = 30f;
|
||||||
|
hasPower = true;
|
||||||
size = 2;
|
size = 2;
|
||||||
tier = 1;
|
tier = 1;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
thermalPump = new Pump("thermal-pump") {{
|
thermalPump = new Pump("thermal-pump") {{
|
||||||
pumpAmount = 0.3f;
|
pumpAmount = 0.3f;
|
||||||
powerUse = 0.02f;
|
consumes.power(0.05f);
|
||||||
liquidCapacity = 40f;
|
liquidCapacity = 40f;
|
||||||
size = 2;
|
size = 2;
|
||||||
tier = 2;
|
tier = 2;
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package io.anuke.mindustry.content.blocks;
|
package io.anuke.mindustry.content.blocks;
|
||||||
|
|
||||||
|
import io.anuke.mindustry.content.Liquids;
|
||||||
import io.anuke.mindustry.content.fx.BlockFx;
|
import io.anuke.mindustry.content.fx.BlockFx;
|
||||||
import io.anuke.mindustry.type.ContentList;
|
import io.anuke.mindustry.type.ContentList;
|
||||||
import io.anuke.mindustry.world.Block;
|
import io.anuke.mindustry.world.Block;
|
||||||
@@ -22,14 +23,17 @@ public class PowerBlocks extends BlockList implements ContentList {
|
|||||||
maxLiquidGenerate = 0.5f;
|
maxLiquidGenerate = 0.5f;
|
||||||
powerPerLiquid = 0.08f;
|
powerPerLiquid = 0.08f;
|
||||||
powerCapacity = 40f;
|
powerCapacity = 40f;
|
||||||
|
powerPerLiquid = 0.25f;
|
||||||
generateEffect = BlockFx.redgeneratespark;
|
generateEffect = BlockFx.redgeneratespark;
|
||||||
size = 2;
|
size = 2;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
turbineGenerator = new TurbineGenerator("turbine-generator") {{
|
turbineGenerator = new TurbineGenerator("turbine-generator") {{
|
||||||
powerOutput = 0.25f;
|
powerOutput = 0.28f;
|
||||||
powerCapacity = 40f;
|
powerCapacity = 40f;
|
||||||
itemDuration = 30f;
|
itemDuration = 30f;
|
||||||
|
powerPerLiquid = 0.7f;
|
||||||
|
consumes.liquid(Liquids.water, 0.05f);
|
||||||
size = 2;
|
size = 2;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
@@ -50,7 +54,8 @@ public class PowerBlocks extends BlockList implements ContentList {
|
|||||||
|
|
||||||
nuclearReactor = new NuclearReactor("nuclear-reactor") {{
|
nuclearReactor = new NuclearReactor("nuclear-reactor") {{
|
||||||
size = 3;
|
size = 3;
|
||||||
health = 600;
|
health = 700;
|
||||||
|
powerMultiplier = 0.8f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
fusionReactor = new FusionReactor("fusion-reactor") {{
|
fusionReactor = new FusionReactor("fusion-reactor") {{
|
||||||
|
|||||||
@@ -29,17 +29,17 @@ public class ProductionBlocks extends BlockList implements ContentList {
|
|||||||
laserdrill = new Drill("laser-drill") {{
|
laserdrill = new Drill("laser-drill") {{
|
||||||
drillTime = 180;
|
drillTime = 180;
|
||||||
size = 2;
|
size = 2;
|
||||||
powerUse = 0.2f;
|
|
||||||
hasPower = true;
|
hasPower = true;
|
||||||
tier = 4;
|
tier = 4;
|
||||||
updateEffect = BlockFx.pulverizeMedium;
|
updateEffect = BlockFx.pulverizeMedium;
|
||||||
drillEffect = BlockFx.mineBig;
|
drillEffect = BlockFx.mineBig;
|
||||||
|
|
||||||
|
consumes.power(0.2f);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
blastdrill = new Drill("blast-drill") {{
|
blastdrill = new Drill("blast-drill") {{
|
||||||
drillTime = 120;
|
drillTime = 120;
|
||||||
size = 3;
|
size = 3;
|
||||||
powerUse = 0.5f;
|
|
||||||
drawRim = true;
|
drawRim = true;
|
||||||
hasPower = true;
|
hasPower = true;
|
||||||
tier = 5;
|
tier = 5;
|
||||||
@@ -48,13 +48,14 @@ public class ProductionBlocks extends BlockList implements ContentList {
|
|||||||
drillEffect = BlockFx.mineHuge;
|
drillEffect = BlockFx.mineHuge;
|
||||||
rotateSpeed = 6f;
|
rotateSpeed = 6f;
|
||||||
warmupSpeed = 0.01f;
|
warmupSpeed = 0.01f;
|
||||||
|
|
||||||
|
consumes.power(0.5f);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
plasmadrill = new Drill("plasma-drill") {{
|
plasmadrill = new Drill("plasma-drill") {{
|
||||||
heatColor = Color.valueOf("ff461b");
|
heatColor = Color.valueOf("ff461b");
|
||||||
drillTime = 90;
|
drillTime = 90;
|
||||||
size = 4;
|
size = 4;
|
||||||
powerUse = 0.7f;
|
|
||||||
hasLiquids = true;
|
hasLiquids = true;
|
||||||
hasPower = true;
|
hasPower = true;
|
||||||
tier = 5;
|
tier = 5;
|
||||||
@@ -64,38 +65,43 @@ public class ProductionBlocks extends BlockList implements ContentList {
|
|||||||
updateEffectChance = 0.04f;
|
updateEffectChance = 0.04f;
|
||||||
drillEffect = BlockFx.mineHuge;
|
drillEffect = BlockFx.mineHuge;
|
||||||
warmupSpeed = 0.005f;
|
warmupSpeed = 0.005f;
|
||||||
|
|
||||||
|
consumes.power(0.7f);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
waterextractor = new SolidPump("water-extractor") {{
|
waterextractor = new SolidPump("water-extractor") {{
|
||||||
result = Liquids.water;
|
result = Liquids.water;
|
||||||
powerUse = 0.2f;
|
|
||||||
pumpAmount = 0.1f;
|
pumpAmount = 0.1f;
|
||||||
size = 2;
|
size = 2;
|
||||||
liquidCapacity = 30f;
|
liquidCapacity = 30f;
|
||||||
rotateSpeed = 1.4f;
|
rotateSpeed = 1.4f;
|
||||||
|
|
||||||
|
consumes.power(0.2f);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
oilextractor = new Fracker("oil-extractor") {{
|
oilextractor = new Fracker("oil-extractor") {{
|
||||||
result = Liquids.oil;
|
result = Liquids.oil;
|
||||||
inputLiquid = Liquids.water;
|
|
||||||
updateEffect = BlockFx.pulverize;
|
updateEffect = BlockFx.pulverize;
|
||||||
liquidCapacity = 50f;
|
liquidCapacity = 50f;
|
||||||
updateEffectChance = 0.05f;
|
updateEffectChance = 0.05f;
|
||||||
inputLiquidUse = 0.3f;
|
pumpAmount = 0.08f;
|
||||||
powerUse = 0.6f;
|
|
||||||
pumpAmount = 0.06f;
|
|
||||||
size = 3;
|
size = 3;
|
||||||
liquidCapacity = 30f;
|
liquidCapacity = 30f;
|
||||||
|
|
||||||
|
consumes.item(Items.sand);
|
||||||
|
consumes.power(0.5f);
|
||||||
|
consumes.liquid(Liquids.water, 0.3f);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
cultivator = new Cultivator("cultivator") {{
|
cultivator = new Cultivator("cultivator") {{
|
||||||
result = Items.biomatter;
|
result = Items.biomatter;
|
||||||
inputLiquid = Liquids.water;
|
|
||||||
liquidUse = 0.2f;
|
|
||||||
drillTime = 260;
|
drillTime = 260;
|
||||||
size = 2;
|
size = 2;
|
||||||
hasLiquids = true;
|
hasLiquids = true;
|
||||||
hasPower = true;
|
hasPower = true;
|
||||||
|
|
||||||
|
consumes.power(0.08f);
|
||||||
|
consumes.liquid(Liquids.water, 0.2f);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ public class StorageBlocks extends BlockList implements ContentList {
|
|||||||
vault = new Vault("vault") {{
|
vault = new Vault("vault") {{
|
||||||
size = 3;
|
size = 3;
|
||||||
health = 600;
|
health = 600;
|
||||||
|
itemCapacity = 2000;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
unloader = new Unloader("unloader") {{
|
unloader = new Unloader("unloader") {{
|
||||||
|
|||||||
@@ -73,26 +73,27 @@ public class TurretBlocks extends BlockList implements ContentList {
|
|||||||
health = 360;
|
health = 360;
|
||||||
|
|
||||||
drawer = (tile, entity) -> {
|
drawer = (tile, entity) -> {
|
||||||
Draw.rect(name, tile.drawx() + tr2.x, tile.drawy() + tr2.y, entity.rotation - 90);
|
Draw.rect(region, tile.drawx() + tr2.x, tile.drawy() + tr2.y, entity.rotation - 90);
|
||||||
|
|
||||||
Draw.color(entity.liquids.liquid.color);
|
Draw.color(entity.liquids.current().color);
|
||||||
Draw.alpha(entity.liquids.amount / liquidCapacity);
|
Draw.alpha(entity.liquids.total() / liquidCapacity);
|
||||||
Draw.rect(name + "-liquid", tile.drawx() + tr2.x, tile.drawy() + tr2.y, entity.rotation - 90);
|
Draw.rect(name + "-liquid", tile.drawx() + tr2.x, tile.drawy() + tr2.y, entity.rotation - 90);
|
||||||
Draw.color();
|
Draw.color();
|
||||||
};
|
};
|
||||||
}};
|
}};
|
||||||
|
|
||||||
lancer = new LaserTurret("lancer") {{
|
lancer = new LaserTurret("lancer") {{
|
||||||
range = 70f;
|
range = 90f;
|
||||||
chargeTime = 70f;
|
chargeTime = 60f;
|
||||||
chargeMaxDelay = 30f;
|
chargeMaxDelay = 30f;
|
||||||
chargeEffects = 7;
|
chargeEffects = 7;
|
||||||
shootType = AmmoTypes.lancerLaser;
|
shootType = AmmoTypes.lancerLaser;
|
||||||
recoil = 2f;
|
recoil = 2f;
|
||||||
reload = 130f;
|
reload = 100f;
|
||||||
cooldown = 0.03f;
|
cooldown = 0.03f;
|
||||||
powerUsed = 20f;
|
powerUsed = 20f;
|
||||||
powerCapacity = 60f;
|
powerCapacity = 60f;
|
||||||
|
shootShake = 2f;
|
||||||
shootEffect = ShootFx.lancerLaserShoot;
|
shootEffect = ShootFx.lancerLaserShoot;
|
||||||
smokeEffect = ShootFx.lancerLaserShootSmoke;
|
smokeEffect = ShootFx.lancerLaserShootSmoke;
|
||||||
chargeEffect = ShootFx.lancerLaserCharge;
|
chargeEffect = ShootFx.lancerLaserCharge;
|
||||||
@@ -131,7 +132,7 @@ public class TurretBlocks extends BlockList implements ContentList {
|
|||||||
|
|
||||||
salvo = new BurstTurret("salvo") {{
|
salvo = new BurstTurret("salvo") {{
|
||||||
size = 2;
|
size = 2;
|
||||||
range = 110f;
|
range = 120f;
|
||||||
ammoTypes = new AmmoType[]{AmmoTypes.bulletTungsten, AmmoTypes.bulletCarbide, AmmoTypes.bulletPyratite, AmmoTypes.bulletThorium, AmmoTypes.bulletSilicon};
|
ammoTypes = new AmmoType[]{AmmoTypes.bulletTungsten, AmmoTypes.bulletCarbide, AmmoTypes.bulletPyratite, AmmoTypes.bulletThorium, AmmoTypes.bulletSilicon};
|
||||||
reload = 40f;
|
reload = 40f;
|
||||||
restitution = 0.03f;
|
restitution = 0.03f;
|
||||||
@@ -144,7 +145,7 @@ public class TurretBlocks extends BlockList implements ContentList {
|
|||||||
ammoUseEffect = ShootFx.shellEjectBig;
|
ammoUseEffect = ShootFx.shellEjectBig;
|
||||||
|
|
||||||
drawer = (tile, entity) -> {
|
drawer = (tile, entity) -> {
|
||||||
Draw.rect(name, tile.drawx() + tr2.x, tile.drawy() + tr2.y, entity.rotation - 90);
|
Draw.rect(region, tile.drawx() + tr2.x, tile.drawy() + tr2.y, entity.rotation - 90);
|
||||||
float offsetx = (int) (Mathf.abscurve(Mathf.curve(entity.reload / reload, 0.3f, 0.2f)) * 3f);
|
float offsetx = (int) (Mathf.abscurve(Mathf.curve(entity.reload / reload, 0.3f, 0.2f)) * 3f);
|
||||||
float offsety = -(int) (Mathf.abscurve(Mathf.curve(entity.reload / reload, 0.3f, 0.2f)) * 2f);
|
float offsety = -(int) (Mathf.abscurve(Mathf.curve(entity.reload / reload, 0.3f, 0.2f)) * 2f);
|
||||||
|
|
||||||
|
|||||||
@@ -16,19 +16,16 @@ public class UnitBlocks extends BlockList implements ContentList {
|
|||||||
type = UnitTypes.drone;
|
type = UnitTypes.drone;
|
||||||
produceTime = 800;
|
produceTime = 800;
|
||||||
size = 2;
|
size = 2;
|
||||||
requirements = new ItemStack[]{
|
consumes.power(0.08f);
|
||||||
new ItemStack(Items.silicon, 30), new ItemStack(Items.lead, 30)
|
consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 30), new ItemStack(Items.lead, 30)});
|
||||||
};
|
|
||||||
}};
|
}};
|
||||||
|
|
||||||
fabricatorFactory = new UnitFactory("fabricator-factory") {{
|
fabricatorFactory = new UnitFactory("fabricator-factory") {{
|
||||||
type = UnitTypes.fabricator;
|
type = UnitTypes.fabricator;
|
||||||
produceTime = 1600;
|
produceTime = 1600;
|
||||||
size = 2;
|
size = 2;
|
||||||
powerUse = 0.2f;
|
consumes.power(0.2f);
|
||||||
requirements = new ItemStack[]{
|
consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 70), new ItemStack(Items.lead, 80), new ItemStack(Items.titanium, 80)});
|
||||||
new ItemStack(Items.silicon, 70), new ItemStack(Items.lead, 80), new ItemStack(Items.titanium, 80)
|
|
||||||
};
|
|
||||||
}};
|
}};
|
||||||
|
|
||||||
resupplyPoint = new ResupplyPoint("resupply-point") {{
|
resupplyPoint = new ResupplyPoint("resupply-point") {{
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ import io.anuke.mindustry.entities.bullet.Bullet;
|
|||||||
import io.anuke.mindustry.entities.bullet.BulletType;
|
import io.anuke.mindustry.entities.bullet.BulletType;
|
||||||
import io.anuke.mindustry.entities.bullet.LiquidBulletType;
|
import io.anuke.mindustry.entities.bullet.LiquidBulletType;
|
||||||
import io.anuke.mindustry.entities.effect.Fire;
|
import io.anuke.mindustry.entities.effect.Fire;
|
||||||
|
import io.anuke.mindustry.entities.effect.ItemDrop;
|
||||||
import io.anuke.mindustry.entities.effect.Lightning;
|
import io.anuke.mindustry.entities.effect.Lightning;
|
||||||
import io.anuke.mindustry.gen.CallEntity;
|
|
||||||
import io.anuke.mindustry.graphics.Palette;
|
import io.anuke.mindustry.graphics.Palette;
|
||||||
import io.anuke.mindustry.type.ContentList;
|
import io.anuke.mindustry.type.ContentList;
|
||||||
import io.anuke.mindustry.type.Item;
|
import io.anuke.mindustry.type.Item;
|
||||||
@@ -96,7 +96,7 @@ public class TurretBullets extends BulletList implements ContentList {
|
|||||||
Color[] colors = {Palette.lancerLaser.cpy().mul(1f, 1f, 1f, 0.4f), Palette.lancerLaser, Color.WHITE};
|
Color[] colors = {Palette.lancerLaser.cpy().mul(1f, 1f, 1f, 0.4f), Palette.lancerLaser, Color.WHITE};
|
||||||
float[] tscales = {1f, 0.7f, 0.5f, 0.2f};
|
float[] tscales = {1f, 0.7f, 0.5f, 0.2f};
|
||||||
float[] lenscales = {1f, 1.1f, 1.13f, 1.14f};
|
float[] lenscales = {1f, 1.1f, 1.13f, 1.14f};
|
||||||
float length = 70f;
|
float length = 90f;
|
||||||
|
|
||||||
{
|
{
|
||||||
hiteffect = BulletFx.hitLancer;
|
hiteffect = BulletFx.hitLancer;
|
||||||
@@ -258,7 +258,7 @@ public class TurretBullets extends BulletList implements ContentList {
|
|||||||
if(amountDropped > 0){
|
if(amountDropped > 0){
|
||||||
float angle = b.angle() + Mathf.range(100f);
|
float angle = b.angle() + Mathf.range(100f);
|
||||||
float vs = Mathf.random(0f, 4f);
|
float vs = Mathf.random(0f, 4f);
|
||||||
CallEntity.createItemDrop(Item.getByID(i), amountDropped, b.x, b.y, Angles.trnsx(angle, vs), Angles.trnsy(angle, vs));
|
ItemDrop.create(Item.getByID(i), amountDropped, b.x, b.y, Angles.trnsx(angle, vs), Angles.trnsy(angle, vs));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ import io.anuke.mindustry.input.MobileInput;
|
|||||||
import io.anuke.mindustry.io.Map;
|
import io.anuke.mindustry.io.Map;
|
||||||
import io.anuke.mindustry.io.Saves;
|
import io.anuke.mindustry.io.Saves;
|
||||||
import io.anuke.mindustry.net.Net;
|
import io.anuke.mindustry.net.Net;
|
||||||
import io.anuke.mindustry.type.Item;
|
|
||||||
import io.anuke.mindustry.type.Recipe;
|
import io.anuke.mindustry.type.Recipe;
|
||||||
import io.anuke.mindustry.ui.dialogs.FloatingDialog;
|
import io.anuke.mindustry.ui.dialogs.FloatingDialog;
|
||||||
import io.anuke.ucore.core.*;
|
import io.anuke.ucore.core.*;
|
||||||
@@ -162,11 +161,13 @@ public class Control extends Module{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void addPlayer(int index){
|
public void addPlayer(int index){
|
||||||
if(players.length < index + 1){
|
if(players.length != index + 1){
|
||||||
Player[] old = players;
|
Player[] old = players;
|
||||||
players = new Player[index + 1];
|
players = new Player[index + 1];
|
||||||
System.arraycopy(old, 0, players, 0, old.length);
|
System.arraycopy(old, 0, players, 0, old.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(inputs.length != index + 1){
|
||||||
InputHandler[] oldi = inputs;
|
InputHandler[] oldi = inputs;
|
||||||
inputs = new InputHandler[index + 1];
|
inputs = new InputHandler[index + 1];
|
||||||
System.arraycopy(oldi, 0, inputs, 0, oldi.length);
|
System.arraycopy(oldi, 0, inputs, 0, oldi.length);
|
||||||
@@ -262,11 +263,7 @@ public class Control extends Module{
|
|||||||
|
|
||||||
if(entity == null) return;
|
if(entity == null) return;
|
||||||
|
|
||||||
for (int i = 0; i < entity.items.items.length; i++) {
|
entity.items.forEach((item, amount) -> control.database().unlockContent(item));
|
||||||
if(entity.items.items[i] <= 0) continue;
|
|
||||||
Item item = Item.getByID(i);
|
|
||||||
control.database().unlockContent(item);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(players[0].inventory.hasItem()){
|
if(players[0].inventory.hasItem()){
|
||||||
control.database().unlockContent(players[0].inventory.getItem().item);
|
control.database().unlockContent(players[0].inventory.getItem().item);
|
||||||
@@ -274,7 +271,7 @@ public class Control extends Module{
|
|||||||
|
|
||||||
for(int i = 0 ; i < Recipe.all().size; i ++){
|
for(int i = 0 ; i < Recipe.all().size; i ++){
|
||||||
Recipe recipe = Recipe.all().get(i);
|
Recipe recipe = Recipe.all().get(i);
|
||||||
if(!recipe.debugOnly && entity.items.hasItems(recipe.requirements, 1.4f)){
|
if(!recipe.debugOnly && entity.items.has(recipe.requirements, 1.4f)){
|
||||||
if(control.database().unlockContent(recipe)){
|
if(control.database().unlockContent(recipe)){
|
||||||
ui.hudfrag.showUnlock(recipe);
|
ui.hudfrag.showUnlock(recipe);
|
||||||
}
|
}
|
||||||
@@ -288,6 +285,8 @@ public class Control extends Module{
|
|||||||
ContentLoader.dispose();
|
ContentLoader.dispose();
|
||||||
Net.dispose();
|
Net.dispose();
|
||||||
ui.editor.dispose();
|
ui.editor.dispose();
|
||||||
|
inputs = new InputHandler[]{};
|
||||||
|
players = new Player[]{};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -312,7 +311,7 @@ public class Control extends Module{
|
|||||||
if(!Settings.has("4.0-warning")){
|
if(!Settings.has("4.0-warning")){
|
||||||
Settings.putBool("4.0-warning", true);
|
Settings.putBool("4.0-warning", true);
|
||||||
|
|
||||||
Timers.runTask(5f, () -> {
|
Timers.run(5f, () -> {
|
||||||
FloatingDialog dialog = new FloatingDialog("[orange]WARNING![]");
|
FloatingDialog dialog = new FloatingDialog("[orange]WARNING![]");
|
||||||
dialog.buttons().addButton("$text.ok", dialog::hide).size(100f, 60f);
|
dialog.buttons().addButton("$text.ok", dialog::hide).size(100f, 60f);
|
||||||
dialog.content().add("The beta version you are about to play should be considered very unstable, and is [accent]not representative of the final 4.0 release.[]\n\n " +
|
dialog.content().add("The beta version you are about to play should be considered very unstable, and is [accent]not representative of the final 4.0 release.[]\n\n " +
|
||||||
@@ -326,7 +325,7 @@ public class Control extends Module{
|
|||||||
if(!Settings.has("4.0-no-sound")){
|
if(!Settings.has("4.0-no-sound")){
|
||||||
Settings.putBool("4.0-no-sound", true);
|
Settings.putBool("4.0-no-sound", true);
|
||||||
|
|
||||||
Timers.runTask(4f, () -> {
|
Timers.run(4f, () -> {
|
||||||
FloatingDialog dialog = new FloatingDialog("[orange]Attention![]");
|
FloatingDialog dialog = new FloatingDialog("[orange]Attention![]");
|
||||||
dialog.buttons().addButton("$text.ok", dialog::hide).size(100f, 60f);
|
dialog.buttons().addButton("$text.ok", dialog::hide).size(100f, 60f);
|
||||||
dialog.content().add("You might have noticed that 4.0 does not have any sound.\nThis is [orange]intentional![] Sound will be added in a later update.\n\n[LIGHT_GRAY](now stop reporting this as a bug)").wrap().width(500f);
|
dialog.content().add("You might have noticed that 4.0 does not have any sound.\nThis is [orange]intentional![] Sound will be added in a later update.\n\n[LIGHT_GRAY](now stop reporting this as a bug)").wrap().width(500f);
|
||||||
|
|||||||
@@ -54,12 +54,12 @@ public class Logic extends Module {
|
|||||||
if(debug) {
|
if(debug) {
|
||||||
for (Item item : Item.all()) {
|
for (Item item : Item.all()) {
|
||||||
if (item.type == ItemType.material) {
|
if (item.type == ItemType.material) {
|
||||||
tile.entity.items.addItem(item, 1000);
|
tile.entity.items.add(item, 1000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
tile.entity.items.addItem(Items.tungsten, 50);
|
tile.entity.items.add(Items.tungsten, 50);
|
||||||
tile.entity.items.addItem(Items.lead, 20);
|
tile.entity.items.add(Items.lead, 20);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -158,13 +158,6 @@ public class Logic extends Module {
|
|||||||
for(EntityGroup group : unitGroups){
|
for(EntityGroup group : unitGroups){
|
||||||
if(!group.isEmpty()){
|
if(!group.isEmpty()){
|
||||||
EntityPhysics.collideGroups(bulletGroup, group);
|
EntityPhysics.collideGroups(bulletGroup, group);
|
||||||
|
|
||||||
/*
|
|
||||||
for(EntityGroup other : unitGroups){
|
|
||||||
if(!other.isEmpty()){
|
|
||||||
EntityPhysics.collideGroups(group, other);
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package io.anuke.mindustry.core;
|
package io.anuke.mindustry.core;
|
||||||
|
|
||||||
|
import com.badlogic.gdx.Gdx;
|
||||||
import com.badlogic.gdx.graphics.Color;
|
import com.badlogic.gdx.graphics.Color;
|
||||||
import com.badlogic.gdx.utils.Base64Coder;
|
import com.badlogic.gdx.utils.Base64Coder;
|
||||||
import com.badlogic.gdx.utils.IntSet;
|
import com.badlogic.gdx.utils.IntSet;
|
||||||
@@ -175,7 +176,7 @@ public class NetClient extends Module {
|
|||||||
ui.loadfrag.hide();
|
ui.loadfrag.hide();
|
||||||
ui.join.hide();
|
ui.join.hide();
|
||||||
Net.setClientLoaded(true);
|
Net.setClientLoaded(true);
|
||||||
Call.connectConfirm();
|
Gdx.app.postRunnable(Call::connectConfirm);
|
||||||
Timers.runTask(40f, Platform.instance::updateRPC);
|
Timers.runTask(40f, Platform.instance::updateRPC);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -250,7 +251,7 @@ public class NetClient extends Module {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Remote(variants = Variant.one, priority = PacketPriority.low, unreliable = true)
|
@Remote(variants = Variant.one, priority = PacketPriority.low, unreliable = true)
|
||||||
public static void onSnapshot(byte[] chunk, int snapshotID, short chunkID, short totalLength, int base){
|
public static void onSnapshot(byte[] chunk, int snapshotID, short chunkID, int totalLength, int base){
|
||||||
if(NetServer.showSnapshotSize) Log.info("Recieved snapshot: len {0} ID {1} chunkID {2} totalLength {3} base {4} client-base {5}", chunk.length, snapshotID, chunkID, totalLength, base, netClient.lastSnapshotBaseID);
|
if(NetServer.showSnapshotSize) Log.info("Recieved snapshot: len {0} ID {1} chunkID {2} totalLength {3} base {4} client-base {5}", chunk.length, snapshotID, chunkID, totalLength, base, netClient.lastSnapshotBaseID);
|
||||||
|
|
||||||
//skip snapshot IDs that have already been recieved OR snapshots that are too far in front
|
//skip snapshot IDs that have already been recieved OR snapshots that are too far in front
|
||||||
@@ -353,8 +354,10 @@ public class NetClient extends Module {
|
|||||||
if(entity == null){
|
if(entity == null){
|
||||||
entity = (SyncTrait) TypeTrait.getTypeByID(typeID).get(); //create entity from supplier
|
entity = (SyncTrait) TypeTrait.getTypeByID(typeID).get(); //create entity from supplier
|
||||||
entity.resetID(id);
|
entity.resetID(id);
|
||||||
|
if(!netClient.isEntityUsed(entity.getID())){
|
||||||
add = true;
|
add = true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//read the entity
|
//read the entity
|
||||||
entity.read(input, timestamp);
|
entity.read(input, timestamp);
|
||||||
@@ -364,7 +367,7 @@ public class NetClient extends Module {
|
|||||||
throw new RuntimeException("Error reading entity of type '"+ group.getType() + "': Read length mismatch [write=" + readLength + ", read=" + (netClient.byteStream.position() - position - 1)+ "]");
|
throw new RuntimeException("Error reading entity of type '"+ group.getType() + "': Read length mismatch [write=" + readLength + ", read=" + (netClient.byteStream.position() - position - 1)+ "]");
|
||||||
}
|
}
|
||||||
|
|
||||||
if(add && !netClient.isEntityUsed(entity.getID())){
|
if(add){
|
||||||
entity.add();
|
entity.add();
|
||||||
netClient.addRemovedEntity(entity.getID());
|
netClient.addRemovedEntity(entity.getID());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -191,6 +191,10 @@ public class NetServer extends Module{
|
|||||||
player.setMineTile(packet.mining);
|
player.setMineTile(packet.mining);
|
||||||
player.isBoosting = packet.boosting;
|
player.isBoosting = packet.boosting;
|
||||||
player.isShooting = packet.shooting;
|
player.isShooting = packet.shooting;
|
||||||
|
player.getPlaceQueue().clear();
|
||||||
|
if(packet.currentRequest != null){
|
||||||
|
player.getPlaceQueue().addLast(packet.currentRequest);
|
||||||
|
}
|
||||||
|
|
||||||
vector.set(packet.x - player.getInterpolator().target.x, packet.y - player.getInterpolator().target.y);
|
vector.set(packet.x - player.getInterpolator().target.x, packet.y - player.getInterpolator().target.y);
|
||||||
|
|
||||||
@@ -445,7 +449,7 @@ public class NetServer extends Module{
|
|||||||
/**Sends a raw byte[] snapshot to a client, splitting up into chunks when needed.*/
|
/**Sends a raw byte[] snapshot to a client, splitting up into chunks when needed.*/
|
||||||
private static void sendSplitSnapshot(int userid, byte[] bytes, int snapshotID, int base){
|
private static void sendSplitSnapshot(int userid, byte[] bytes, int snapshotID, int base){
|
||||||
if(bytes.length < maxSnapshotSize){
|
if(bytes.length < maxSnapshotSize){
|
||||||
Call.onSnapshot(userid, bytes, snapshotID, (short)0, (short)bytes.length, base);
|
Call.onSnapshot(userid, bytes, snapshotID, (short)0, bytes.length, base);
|
||||||
}else{
|
}else{
|
||||||
int remaining = bytes.length;
|
int remaining = bytes.length;
|
||||||
int offset = 0;
|
int offset = 0;
|
||||||
@@ -460,7 +464,7 @@ public class NetServer extends Module{
|
|||||||
}else {
|
}else {
|
||||||
toSend = Arrays.copyOfRange(bytes, offset, Math.min(offset + maxSnapshotSize, bytes.length));
|
toSend = Arrays.copyOfRange(bytes, offset, Math.min(offset + maxSnapshotSize, bytes.length));
|
||||||
}
|
}
|
||||||
Call.onSnapshot(userid, toSend, snapshotID, (short)chunkid, (short)bytes.length, base);
|
Call.onSnapshot(userid, toSend, snapshotID, (short)chunkid, bytes.length, base);
|
||||||
|
|
||||||
remaining -= used;
|
remaining -= used;
|
||||||
offset += used;
|
offset += used;
|
||||||
@@ -490,14 +494,12 @@ public class NetServer extends Module{
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
String ip = player.con.address;
|
|
||||||
|
|
||||||
if(action == AdminAction.wave) {
|
if(action == AdminAction.wave) {
|
||||||
//no verification is done, so admins can hypothetically spam waves
|
//no verification is done, so admins can hypothetically spam waves
|
||||||
//not a real issue, because server owners may want to do just that
|
//not a real issue, because server owners may want to do just that
|
||||||
state.wavetime = 0f;
|
state.wavetime = 0f;
|
||||||
}else if(action == AdminAction.ban){
|
}else if(action == AdminAction.ban){
|
||||||
netServer.admins.banPlayerIP(ip);
|
netServer.admins.banPlayerIP(other.con.address);
|
||||||
netServer.kick(other.con.id, KickReason.banned);
|
netServer.kick(other.con.id, KickReason.banned);
|
||||||
Log.info("&lc{0} has banned {1}.", player.name, other.name);
|
Log.info("&lc{0} has banned {1}.", player.name, other.name);
|
||||||
}else if(action == AdminAction.kick){
|
}else if(action == AdminAction.kick){
|
||||||
|
|||||||
@@ -4,8 +4,6 @@ import com.badlogic.gdx.files.FileHandle;
|
|||||||
import com.badlogic.gdx.utils.Base64Coder;
|
import com.badlogic.gdx.utils.Base64Coder;
|
||||||
import io.anuke.mindustry.core.ThreadHandler.ThreadProvider;
|
import io.anuke.mindustry.core.ThreadHandler.ThreadProvider;
|
||||||
import io.anuke.ucore.core.Settings;
|
import io.anuke.ucore.core.Settings;
|
||||||
import io.anuke.ucore.entities.EntityGroup;
|
|
||||||
import io.anuke.ucore.entities.trait.Entity;
|
|
||||||
import io.anuke.ucore.function.Consumer;
|
import io.anuke.ucore.function.Consumer;
|
||||||
import io.anuke.ucore.scene.ui.TextField;
|
import io.anuke.ucore.scene.ui.TextField;
|
||||||
|
|
||||||
@@ -87,7 +85,6 @@ public abstract class Platform {
|
|||||||
@Override public void stop() {}
|
@Override public void stop() {}
|
||||||
@Override public void notify(Object object) {}
|
@Override public void notify(Object object) {}
|
||||||
@Override public void wait(Object object) {}
|
@Override public void wait(Object object) {}
|
||||||
@Override public <T extends Entity> void switchContainer(EntityGroup<T> group) {}
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -192,10 +192,7 @@ public class Renderer extends RendererModule{
|
|||||||
|
|
||||||
batch.setProjectionMatrix(camera.combined);
|
batch.setProjectionMatrix(camera.combined);
|
||||||
|
|
||||||
if(pixelate)
|
|
||||||
Graphics.surface(pixelSurface, false);
|
Graphics.surface(pixelSurface, false);
|
||||||
else
|
|
||||||
batch.begin();
|
|
||||||
|
|
||||||
drawPadding();
|
drawPadding();
|
||||||
|
|
||||||
@@ -227,6 +224,8 @@ public class Renderer extends RendererModule{
|
|||||||
blocks.skipLayer(Layer.turret);
|
blocks.skipLayer(Layer.turret);
|
||||||
blocks.drawBlocks(Layer.laser);
|
blocks.drawBlocks(Layer.laser);
|
||||||
|
|
||||||
|
drawFlyerShadows();
|
||||||
|
|
||||||
drawAllTeams(true);
|
drawAllTeams(true);
|
||||||
|
|
||||||
drawAndInterpolate(bulletGroup);
|
drawAndInterpolate(bulletGroup);
|
||||||
@@ -236,18 +235,50 @@ public class Renderer extends RendererModule{
|
|||||||
drawAndInterpolate(playerGroup, p -> true, Player::drawBuildRequests);
|
drawAndInterpolate(playerGroup, p -> true, Player::drawBuildRequests);
|
||||||
overlays.drawTop();
|
overlays.drawTop();
|
||||||
|
|
||||||
if(pixelate)
|
|
||||||
Graphics.flushSurface();
|
Graphics.flushSurface();
|
||||||
|
|
||||||
if(showPaths && debug) drawDebug();
|
if(showPaths && debug) drawDebug();
|
||||||
|
|
||||||
drawAndInterpolate(playerGroup, p -> !p.isLocal && !p.isDead(), Player::drawName);
|
|
||||||
|
|
||||||
batch.end();
|
batch.end();
|
||||||
|
|
||||||
if(showFog){
|
if(showFog){
|
||||||
fog.draw();
|
fog.draw();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
batch.begin();
|
||||||
|
EntityDraw.setClip(false);
|
||||||
|
drawAndInterpolate(playerGroup, p -> !p.isDead() && !p.isLocal, Player::drawName);
|
||||||
|
EntityDraw.setClip(true);
|
||||||
|
batch.end();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void drawFlyerShadows(){
|
||||||
|
Graphics.surface(effectSurface, true, false);
|
||||||
|
|
||||||
|
float trnsX = 12, trnsY = -13;
|
||||||
|
|
||||||
|
Graphics.end();
|
||||||
|
Core.batch.getTransformMatrix().translate(trnsX, trnsY, 0);
|
||||||
|
Graphics.begin();
|
||||||
|
|
||||||
|
for(EntityGroup<? extends BaseUnit> group : unitGroups){
|
||||||
|
if(!group.isEmpty()){
|
||||||
|
drawAndInterpolate(group, unit -> unit.isFlying() && !unit.isDead(), Unit::drawShadow);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!playerGroup.isEmpty()){
|
||||||
|
drawAndInterpolate(playerGroup, unit -> unit.isFlying() && !unit.isDead(), Unit::drawShadow);
|
||||||
|
}
|
||||||
|
|
||||||
|
Graphics.end();
|
||||||
|
Core.batch.getTransformMatrix().translate(-trnsX, -trnsY, 0);
|
||||||
|
Graphics.begin();
|
||||||
|
|
||||||
|
//TODO this actually isn't necessary
|
||||||
|
Draw.color(0, 0, 0, 0.15f);
|
||||||
|
Graphics.flushSurface();
|
||||||
|
Draw.color();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void drawAllTeams(boolean flying){
|
private void drawAllTeams(boolean flying){
|
||||||
@@ -257,7 +288,7 @@ public class Renderer extends RendererModule{
|
|||||||
if(group.count(p -> p.isFlying() == flying) +
|
if(group.count(p -> p.isFlying() == flying) +
|
||||||
playerGroup.count(p -> p.isFlying() == flying && p.getTeam() == team) == 0 && flying) continue;
|
playerGroup.count(p -> p.isFlying() == flying && p.getTeam() == team) == 0 && flying) continue;
|
||||||
|
|
||||||
drawAndInterpolate(unitGroups[team.ordinal()], u -> u.isFlying() == flying, Unit::drawUnder);
|
drawAndInterpolate(unitGroups[team.ordinal()], u -> u.isFlying() == flying && !u.isDead(), Unit::drawUnder);
|
||||||
drawAndInterpolate(playerGroup, p -> p.isFlying() == flying && p.getTeam() == team, Unit::drawUnder);
|
drawAndInterpolate(playerGroup, p -> p.isFlying() == flying && p.getTeam() == team, Unit::drawUnder);
|
||||||
|
|
||||||
Shaders.outline.color.set(team.color);
|
Shaders.outline.color.set(team.color);
|
||||||
@@ -265,13 +296,13 @@ public class Renderer extends RendererModule{
|
|||||||
|
|
||||||
Graphics.beginShaders(Shaders.outline);
|
Graphics.beginShaders(Shaders.outline);
|
||||||
Graphics.shader(Shaders.mix, true);
|
Graphics.shader(Shaders.mix, true);
|
||||||
drawAndInterpolate(unitGroups[team.ordinal()], u -> u.isFlying() == flying);
|
drawAndInterpolate(unitGroups[team.ordinal()], u -> u.isFlying() == flying && !u.isDead());
|
||||||
drawAndInterpolate(playerGroup, p -> p.isFlying() == flying && p.getTeam() == team);
|
drawAndInterpolate(playerGroup, p -> p.isFlying() == flying && p.getTeam() == team);
|
||||||
Graphics.shader();
|
Graphics.shader();
|
||||||
blocks.drawTeamBlocks(Layer.turret, team);
|
blocks.drawTeamBlocks(Layer.turret, team);
|
||||||
Graphics.endShaders();
|
Graphics.endShaders();
|
||||||
|
|
||||||
drawAndInterpolate(unitGroups[team.ordinal()], u -> u.isFlying() == flying, Unit::drawOver);
|
drawAndInterpolate(unitGroups[team.ordinal()], u -> u.isFlying() == flying && !u.isDead(), Unit::drawOver);
|
||||||
drawAndInterpolate(playerGroup, p -> p.isFlying() == flying && p.getTeam() == team, Unit::drawOver);
|
drawAndInterpolate(playerGroup, p -> p.isFlying() == flying && p.getTeam() == team, Unit::drawOver);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,23 +1,20 @@
|
|||||||
package io.anuke.mindustry.core;
|
package io.anuke.mindustry.core;
|
||||||
|
|
||||||
import com.badlogic.gdx.Gdx;
|
import com.badlogic.gdx.Gdx;
|
||||||
import com.badlogic.gdx.utils.Array;
|
import com.badlogic.gdx.utils.Queue;
|
||||||
import com.badlogic.gdx.utils.TimeUtils;
|
import com.badlogic.gdx.utils.TimeUtils;
|
||||||
import io.anuke.ucore.core.Timers;
|
import io.anuke.ucore.core.Timers;
|
||||||
import io.anuke.ucore.entities.Entities;
|
|
||||||
import io.anuke.ucore.entities.EntityGroup;
|
|
||||||
import io.anuke.ucore.entities.EntityGroup.ArrayContainer;
|
|
||||||
import io.anuke.ucore.entities.trait.Entity;
|
|
||||||
import io.anuke.ucore.util.Log;
|
import io.anuke.ucore.util.Log;
|
||||||
|
|
||||||
import static io.anuke.mindustry.Vars.control;
|
import static io.anuke.mindustry.Vars.control;
|
||||||
import static io.anuke.mindustry.Vars.logic;
|
import static io.anuke.mindustry.Vars.logic;
|
||||||
|
|
||||||
public class ThreadHandler {
|
public class ThreadHandler {
|
||||||
private final Array<Runnable> toRun = new Array<>();
|
private final Queue<Runnable> toRun = new Queue<>();
|
||||||
private final ThreadProvider impl;
|
private final ThreadProvider impl;
|
||||||
private float delta = 1f;
|
private float delta = 1f;
|
||||||
private long frame = 0;
|
private float smoothDelta = 1f;
|
||||||
|
private long frame = 0, lastDeltaUpdate;
|
||||||
private float framesSinceUpdate;
|
private float framesSinceUpdate;
|
||||||
private boolean enabled;
|
private boolean enabled;
|
||||||
|
|
||||||
@@ -29,14 +26,14 @@ public class ThreadHandler {
|
|||||||
|
|
||||||
Timers.setDeltaProvider(() -> {
|
Timers.setDeltaProvider(() -> {
|
||||||
float result = impl.isOnThread() ? delta : Gdx.graphics.getDeltaTime()*60f;
|
float result = impl.isOnThread() ? delta : Gdx.graphics.getDeltaTime()*60f;
|
||||||
return Math.min(Float.isNaN(result) ? 1f : result, 12f);
|
return Math.min(Float.isNaN(result) ? 1f : result, 15f);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void run(Runnable r){
|
public void run(Runnable r){
|
||||||
if(enabled) {
|
if(enabled) {
|
||||||
synchronized (toRun) {
|
synchronized (toRun) {
|
||||||
toRun.add(r);
|
toRun.addLast(r);
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
r.run();
|
r.run();
|
||||||
@@ -54,7 +51,7 @@ public class ThreadHandler {
|
|||||||
public void runDelay(Runnable r){
|
public void runDelay(Runnable r){
|
||||||
if(enabled) {
|
if(enabled) {
|
||||||
synchronized (toRun) {
|
synchronized (toRun) {
|
||||||
toRun.add(r);
|
toRun.addLast(r);
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
Gdx.app.postRunnable(r);
|
Gdx.app.postRunnable(r);
|
||||||
@@ -62,7 +59,7 @@ public class ThreadHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public int getTPS(){
|
public int getTPS(){
|
||||||
return (int)(60/delta);
|
return (int)(60/smoothDelta);
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getFrameID(){
|
public long getFrameID(){
|
||||||
@@ -88,9 +85,6 @@ public class ThreadHandler {
|
|||||||
public void setEnabled(boolean enabled){
|
public void setEnabled(boolean enabled){
|
||||||
if(enabled){
|
if(enabled){
|
||||||
logic.doUpdate = false;
|
logic.doUpdate = false;
|
||||||
for(EntityGroup<?> group : Entities.getAllGroups()){
|
|
||||||
impl.switchContainer(group);
|
|
||||||
}
|
|
||||||
Timers.runTask(2f, () -> {
|
Timers.runTask(2f, () -> {
|
||||||
impl.start(this::runLogic);
|
impl.start(this::runLogic);
|
||||||
this.enabled = true;
|
this.enabled = true;
|
||||||
@@ -98,9 +92,6 @@ public class ThreadHandler {
|
|||||||
}else{
|
}else{
|
||||||
this.enabled = false;
|
this.enabled = false;
|
||||||
impl.stop();
|
impl.stop();
|
||||||
for(EntityGroup<?> group : Entities.getAllGroups()){
|
|
||||||
group.setContainer(new ArrayContainer<>());
|
|
||||||
}
|
|
||||||
Timers.runTask(2f, () -> {
|
Timers.runTask(2f, () -> {
|
||||||
logic.doUpdate = true;
|
logic.doUpdate = true;
|
||||||
});
|
});
|
||||||
@@ -112,7 +103,7 @@ public class ThreadHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean doInterpolate(){
|
public boolean doInterpolate(){
|
||||||
return enabled && Math.abs(Gdx.graphics.getFramesPerSecond() - getTPS()) > 15;
|
return enabled && Gdx.graphics.getFramesPerSecond() - getTPS() > 20 && getTPS() < 30;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isOnThread(){
|
public boolean isOnThread(){
|
||||||
@@ -124,11 +115,17 @@ public class ThreadHandler {
|
|||||||
while (true) {
|
while (true) {
|
||||||
long time = TimeUtils.nanoTime();
|
long time = TimeUtils.nanoTime();
|
||||||
|
|
||||||
synchronized (toRun) {
|
while(true){
|
||||||
for(Runnable r : toRun){
|
Runnable r;
|
||||||
r.run();
|
synchronized (toRun){
|
||||||
|
if(toRun.size > 0){
|
||||||
|
r = toRun.removeFirst();
|
||||||
|
}else{
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
toRun.clear();
|
}
|
||||||
|
|
||||||
|
r.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
logic.doUpdate = true;
|
logic.doUpdate = true;
|
||||||
@@ -138,8 +135,6 @@ public class ThreadHandler {
|
|||||||
long elapsed = TimeUtils.nanosToMillis(TimeUtils.timeSinceNanos(time));
|
long elapsed = TimeUtils.nanosToMillis(TimeUtils.timeSinceNanos(time));
|
||||||
long target = (long) ((1000) / 60f);
|
long target = (long) ((1000) / 60f);
|
||||||
|
|
||||||
delta = Math.max(elapsed, target) / 1000f * 60f;
|
|
||||||
|
|
||||||
if (elapsed < target) {
|
if (elapsed < target) {
|
||||||
impl.sleep(target - elapsed);
|
impl.sleep(target - elapsed);
|
||||||
}
|
}
|
||||||
@@ -151,6 +146,14 @@ public class ThreadHandler {
|
|||||||
rendered = false;
|
rendered = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
long actuallyElapsed = TimeUtils.nanosToMillis(TimeUtils.timeSinceNanos(time));
|
||||||
|
delta = Math.max(actuallyElapsed, target) / 1000f * 60f;
|
||||||
|
|
||||||
|
if(TimeUtils.timeSinceMillis(lastDeltaUpdate) > 1000){
|
||||||
|
lastDeltaUpdate = TimeUtils.millis();
|
||||||
|
smoothDelta = delta;
|
||||||
|
}
|
||||||
|
|
||||||
frame ++;
|
frame ++;
|
||||||
framesSinceUpdate = 0;
|
framesSinceUpdate = 0;
|
||||||
}
|
}
|
||||||
@@ -168,6 +171,5 @@ public class ThreadHandler {
|
|||||||
void stop();
|
void stop();
|
||||||
void wait(Object object) throws InterruptedException;
|
void wait(Object object) throws InterruptedException;
|
||||||
void notify(Object object);
|
void notify(Object object);
|
||||||
<T extends Entity> void switchContainer(EntityGroup<T> group);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ public class UI extends SceneModule{
|
|||||||
}
|
}
|
||||||
|
|
||||||
Graphics.end();
|
Graphics.end();
|
||||||
|
Draw.color();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -225,7 +225,7 @@ public class UI extends SceneModule{
|
|||||||
|
|
||||||
public void loadAnd(String text, Callable call){
|
public void loadAnd(String text, Callable call){
|
||||||
loadfrag.show(text);
|
loadfrag.show(text);
|
||||||
Timers.runTask(6f, () -> {
|
Timers.runTask(7f, () -> {
|
||||||
call.run();
|
call.run();
|
||||||
loadfrag.hide();
|
loadfrag.hide();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import io.anuke.mindustry.content.blocks.Blocks;
|
|||||||
import io.anuke.mindustry.core.GameState.State;
|
import io.anuke.mindustry.core.GameState.State;
|
||||||
import io.anuke.mindustry.game.EventType.TileChangeEvent;
|
import io.anuke.mindustry.game.EventType.TileChangeEvent;
|
||||||
import io.anuke.mindustry.game.EventType.WorldLoadEvent;
|
import io.anuke.mindustry.game.EventType.WorldLoadEvent;
|
||||||
|
import io.anuke.mindustry.game.Team;
|
||||||
import io.anuke.mindustry.io.*;
|
import io.anuke.mindustry.io.*;
|
||||||
import io.anuke.mindustry.world.Block;
|
import io.anuke.mindustry.world.Block;
|
||||||
import io.anuke.mindustry.world.Tile;
|
import io.anuke.mindustry.world.Tile;
|
||||||
@@ -93,11 +94,15 @@ public class World extends Module{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public int width(){
|
public int width(){
|
||||||
return tiles.length;
|
return tiles == null ? 0 : tiles.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int height(){
|
public int height(){
|
||||||
return tiles[0].length;
|
return tiles == null ? 0 : tiles[0].length;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int toPacked(int x, int y){
|
||||||
|
return x + y *width();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Tile tile(int packed){
|
public Tile tile(int packed){
|
||||||
@@ -112,6 +117,10 @@ public class World extends Module{
|
|||||||
return tiles[x][y];
|
return tiles[x][y];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Tile rawTile(int x, int y){
|
||||||
|
return tiles[x][y];
|
||||||
|
}
|
||||||
|
|
||||||
public Tile tileWorld(float x, float y){
|
public Tile tileWorld(float x, float y){
|
||||||
return tile(Mathf.scl2(x, tilesize), Mathf.scl2(y, tilesize));
|
return tile(Mathf.scl2(x, tilesize), Mathf.scl2(y, tilesize));
|
||||||
}
|
}
|
||||||
@@ -162,6 +171,10 @@ public class World extends Module{
|
|||||||
for(int x = 0; x < tiles.length; x ++) {
|
for(int x = 0; x < tiles.length; x ++) {
|
||||||
for (int y = 0; y < tiles[0].length; y++) {
|
for (int y = 0; y < tiles[0].length; y++) {
|
||||||
tiles[x][y].updateOcclusion();
|
tiles[x][y].updateOcclusion();
|
||||||
|
|
||||||
|
if(tiles[x][y].entity != null){
|
||||||
|
tiles[x][y].entity.updateProximity();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -255,6 +268,28 @@ public class World extends Module{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setBlock(Tile tile, Block block, Team team){
|
||||||
|
tile.setBlock(block);
|
||||||
|
if (block.isMultiblock()) {
|
||||||
|
int offsetx = -(block.size - 1) / 2;
|
||||||
|
int offsety = -(block.size - 1) / 2;
|
||||||
|
|
||||||
|
for (int dx = 0; dx < block.size; dx++) {
|
||||||
|
for (int dy = 0; dy < block.size; dy++) {
|
||||||
|
int worldx = dx + offsetx + tile.x;
|
||||||
|
int worldy = dy + offsety + tile.y;
|
||||||
|
if (!(worldx == tile.x && worldy == tile.y)) {
|
||||||
|
Tile toplace = world.tile(worldx, worldy);
|
||||||
|
if (toplace != null) {
|
||||||
|
toplace.setLinked((byte) (dx + offsetx), (byte) (dy + offsety));
|
||||||
|
toplace.setTeam(team);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**Raycast, but with world coordinates.*/
|
/**Raycast, but with world coordinates.*/
|
||||||
public GridPoint2 raycastWorld(float x, float y, float x2, float y2){
|
public GridPoint2 raycastWorld(float x, float y, float x2, float y2){
|
||||||
return raycast(Mathf.scl2(x, tilesize), Mathf.scl2(y, tilesize),
|
return raycast(Mathf.scl2(x, tilesize), Mathf.scl2(y, tilesize),
|
||||||
|
|||||||
@@ -39,14 +39,16 @@ public class MapEditor{
|
|||||||
return tags;
|
return tags;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void beginEdit(MapTileData map, ObjectMap<String, String> tags){
|
public void beginEdit(MapTileData map, ObjectMap<String, String> tags, boolean clear){
|
||||||
this.map = map;
|
this.map = map;
|
||||||
this.brushSize = 1;
|
this.brushSize = 1;
|
||||||
this.tags = tags;
|
this.tags = tags;
|
||||||
|
|
||||||
|
if(clear) {
|
||||||
for (int x = 0; x < map.width(); x++) {
|
for (int x = 0; x < map.width(); x++) {
|
||||||
for (int y = 0; y < map.height(); y++) {
|
for (int y = 0; y < map.height(); y++) {
|
||||||
map.write(x, y, DataPosition.floor, (byte)Blocks.stone.id);
|
map.write(x, y, DataPosition.floor, (byte) Blocks.stone.id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package io.anuke.mindustry.editor;
|
|||||||
import com.badlogic.gdx.Gdx;
|
import com.badlogic.gdx.Gdx;
|
||||||
import com.badlogic.gdx.files.FileHandle;
|
import com.badlogic.gdx.files.FileHandle;
|
||||||
import com.badlogic.gdx.graphics.Color;
|
import com.badlogic.gdx.graphics.Color;
|
||||||
import com.badlogic.gdx.graphics.Pixmap;
|
|
||||||
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||||
import com.badlogic.gdx.math.Vector2;
|
import com.badlogic.gdx.math.Vector2;
|
||||||
import com.badlogic.gdx.utils.Align;
|
import com.badlogic.gdx.utils.Align;
|
||||||
@@ -26,7 +25,6 @@ import io.anuke.ucore.core.Timers;
|
|||||||
import io.anuke.ucore.function.Consumer;
|
import io.anuke.ucore.function.Consumer;
|
||||||
import io.anuke.ucore.function.Listenable;
|
import io.anuke.ucore.function.Listenable;
|
||||||
import io.anuke.ucore.graphics.Draw;
|
import io.anuke.ucore.graphics.Draw;
|
||||||
import io.anuke.ucore.graphics.Pixmaps;
|
|
||||||
import io.anuke.ucore.input.Input;
|
import io.anuke.ucore.input.Input;
|
||||||
import io.anuke.ucore.scene.actions.Actions;
|
import io.anuke.ucore.scene.actions.Actions;
|
||||||
import io.anuke.ucore.scene.builders.build;
|
import io.anuke.ucore.scene.builders.build;
|
||||||
@@ -107,7 +105,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
|
|||||||
MapMeta meta = MapIO.readMapMeta(stream);
|
MapMeta meta = MapIO.readMapMeta(stream);
|
||||||
MapTileData data = MapIO.readTileData(stream, meta, false);
|
MapTileData data = MapIO.readTileData(stream, meta, false);
|
||||||
|
|
||||||
editor.beginEdit(data, meta.tags);
|
editor.beginEdit(data, meta.tags, false);
|
||||||
view.clearStack();
|
view.clearStack();
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
ui.showError(Bundles.format("text.editor.errorimageload", Strings.parseException(e, false)));
|
ui.showError(Bundles.format("text.editor.errorimageload", Strings.parseException(e, false)));
|
||||||
@@ -115,17 +113,17 @@ public class MapEditorDialog extends Dialog implements Disposable{
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}, true, mapExtension);
|
}, true, mapExtension);
|
||||||
},
|
}/*,
|
||||||
"$text.editor.importimage", "$text.editor.importimage.description", "icon-file-image", (Listenable)() -> {
|
"$text.editor.importimage", "$text.editor.importimage.description", "icon-file-image", (Listenable)() -> {
|
||||||
if(gwt){
|
if(gwt){
|
||||||
ui.showError("text.web.unsupported");
|
ui.showError("$text.web.unsupported");
|
||||||
}else {
|
}else {
|
||||||
Platform.instance.showFileChooser("$text.loadimage", "Image Files", file -> {
|
Platform.instance.showFileChooser("$text.loadimage", "Image Files", file -> {
|
||||||
ui.loadAnd(() -> {
|
ui.loadAnd(() -> {
|
||||||
try{
|
try{
|
||||||
MapTileData data = MapIO.readPixmap(new Pixmap(file));
|
MapTileData data = MapIO.readPixmap(new Pixmap(file));
|
||||||
|
|
||||||
editor.beginEdit(data, editor.getTags());
|
editor.beginEdit(data, editor.getTags(), false);
|
||||||
view.clearStack();
|
view.clearStack();
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
ui.showError(Bundles.format("text.editor.errorimageload", Strings.parseException(e, false)));
|
ui.showError(Bundles.format("text.editor.errorimageload", Strings.parseException(e, false)));
|
||||||
@@ -134,7 +132,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
|
|||||||
});
|
});
|
||||||
}, true, "png");
|
}, true, "png");
|
||||||
}
|
}
|
||||||
}));
|
}*/));
|
||||||
|
|
||||||
t.addImageTextButton("$text.editor.export", "icon-save-map", isize, () -> createDialog("$text.editor.export",
|
t.addImageTextButton("$text.editor.export", "icon-save-map", isize, () -> createDialog("$text.editor.export",
|
||||||
"$text.editor.exportfile", "$text.editor.exportfile.description", "icon-file", (Listenable)() -> {
|
"$text.editor.exportfile", "$text.editor.exportfile.description", "icon-file", (Listenable)() -> {
|
||||||
@@ -165,11 +163,11 @@ public class MapEditorDialog extends Dialog implements Disposable{
|
|||||||
Log.err(e);
|
Log.err(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
}/*,
|
||||||
"$text.editor.exportimage", "$text.editor.exportimage.description", "icon-file-image", (Listenable)() -> {
|
"$text.editor.exportimage", "$text.editor.exportimage.description", "icon-file-image", (Listenable)() -> {
|
||||||
if(gwt){
|
if(gwt){
|
||||||
ui.showError("text.web.unsupported");
|
ui.showError("$text.web.unsupported");
|
||||||
}else {
|
}else{
|
||||||
Platform.instance.showFileChooser("$text.saveimage", "Image Files", file -> {
|
Platform.instance.showFileChooser("$text.saveimage", "Image Files", file -> {
|
||||||
file = file.parent().child(file.nameWithoutExtension() + ".png");
|
file = file.parent().child(file.nameWithoutExtension() + ".png");
|
||||||
FileHandle result = file;
|
FileHandle result = file;
|
||||||
@@ -183,7 +181,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
|
|||||||
});
|
});
|
||||||
}, false, "png");
|
}, false, "png");
|
||||||
}
|
}
|
||||||
}));
|
}*/));
|
||||||
|
|
||||||
t.row();
|
t.row();
|
||||||
|
|
||||||
@@ -213,7 +211,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
|
|||||||
MapMeta meta = MapIO.readMapMeta(stream);
|
MapMeta meta = MapIO.readMapMeta(stream);
|
||||||
MapTileData data = MapIO.readTileData(stream, meta, false);
|
MapTileData data = MapIO.readTileData(stream, meta, false);
|
||||||
|
|
||||||
editor.beginEdit(data, meta.tags);
|
editor.beginEdit(data, meta.tags, false);
|
||||||
view.clearStack();
|
view.clearStack();
|
||||||
}catch (IOException e){
|
}catch (IOException e){
|
||||||
ui.showError(Bundles.format("text.editor.errormapload", Strings.parseException(e, false)));
|
ui.showError(Bundles.format("text.editor.errormapload", Strings.parseException(e, false)));
|
||||||
@@ -254,7 +252,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
|
|||||||
view.clearStack();
|
view.clearStack();
|
||||||
Core.scene.setScrollFocus(view);
|
Core.scene.setScrollFocus(view);
|
||||||
if(!shownWithMap){
|
if(!shownWithMap){
|
||||||
editor.beginEdit(new MapTileData(256, 256), new ObjectMap<>());
|
editor.beginEdit(new MapTileData(256, 256), new ObjectMap<>(), true);
|
||||||
}
|
}
|
||||||
shownWithMap = false;
|
shownWithMap = false;
|
||||||
|
|
||||||
@@ -348,7 +346,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
|
|||||||
shownWithMap = true;
|
shownWithMap = true;
|
||||||
DataInputStream stream = new DataInputStream(is);
|
DataInputStream stream = new DataInputStream(is);
|
||||||
MapMeta meta = MapIO.readMapMeta(stream);
|
MapMeta meta = MapIO.readMapMeta(stream);
|
||||||
editor.beginEdit(MapIO.readTileData(stream, meta, false), meta.tags);
|
editor.beginEdit(MapIO.readTileData(stream, meta, false), meta.tags, false);
|
||||||
is.close();
|
is.close();
|
||||||
show();
|
show();
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
@@ -368,13 +366,11 @@ public class MapEditorDialog extends Dialog implements Disposable{
|
|||||||
|
|
||||||
public void updateSelectedBlock(){
|
public void updateSelectedBlock(){
|
||||||
Block block = editor.getDrawBlock();
|
Block block = editor.getDrawBlock();
|
||||||
int i = 0;
|
|
||||||
for(int j = 0; j < Block.all().size; j ++){
|
for(int j = 0; j < Block.all().size; j ++){
|
||||||
if(block.id == j){
|
if(block.id == j && j < blockgroup.getButtons().size){
|
||||||
blockgroup.getButtons().get(i).setChecked(true);
|
blockgroup.getButtons().get(j).setChecked(true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import com.badlogic.gdx.utils.Queue;
|
|||||||
import io.anuke.annotations.Annotations.Loc;
|
import io.anuke.annotations.Annotations.Loc;
|
||||||
import io.anuke.annotations.Annotations.Remote;
|
import io.anuke.annotations.Annotations.Remote;
|
||||||
import io.anuke.mindustry.Vars;
|
import io.anuke.mindustry.Vars;
|
||||||
|
import io.anuke.mindustry.content.Mechs;
|
||||||
import io.anuke.mindustry.entities.effect.ItemDrop;
|
import io.anuke.mindustry.entities.effect.ItemDrop;
|
||||||
import io.anuke.mindustry.entities.effect.ScorchDecal;
|
import io.anuke.mindustry.entities.effect.ScorchDecal;
|
||||||
import io.anuke.mindustry.entities.traits.*;
|
import io.anuke.mindustry.entities.traits.*;
|
||||||
@@ -55,6 +56,7 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
|
|||||||
public float boostHeat;
|
public float boostHeat;
|
||||||
public Color color = new Color();
|
public Color color = new Color();
|
||||||
public Mech mech;
|
public Mech mech;
|
||||||
|
public int spawner;
|
||||||
|
|
||||||
public NetConnection con;
|
public NetConnection con;
|
||||||
public int playerIndex = 0;
|
public int playerIndex = 0;
|
||||||
@@ -63,7 +65,6 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
|
|||||||
public TargetTrait target;
|
public TargetTrait target;
|
||||||
public TargetTrait moveTarget;
|
public TargetTrait moveTarget;
|
||||||
|
|
||||||
private boolean respawning;
|
|
||||||
private float walktime;
|
private float walktime;
|
||||||
private Queue<BuildRequest> placeQueue = new ThreadQueue<>();
|
private Queue<BuildRequest> placeQueue = new ThreadQueue<>();
|
||||||
private Tile mining;
|
private Tile mining;
|
||||||
@@ -175,6 +176,11 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
|
|||||||
return mech.weapon.getAmmoType(item) != null && inventory.canAcceptAmmo(mech.weapon.getAmmoType(item));
|
return mech.weapon.getAmmoType(item) != null && inventory.canAcceptAmmo(mech.weapon.getAmmoType(item));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void added() {
|
||||||
|
baseRotation = 90f;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addAmmo(Item item) {
|
public void addAmmo(Item item) {
|
||||||
inventory.addAmmo(mech.weapon.getAmmoType(item));
|
inventory.addAmmo(mech.weapon.getAmmoType(item));
|
||||||
@@ -199,7 +205,7 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
|
|||||||
public void damage(float amount){
|
public void damage(float amount){
|
||||||
CallEntity.onPlayerDamage(this, calculateDamage(amount));
|
CallEntity.onPlayerDamage(this, calculateDamage(amount));
|
||||||
|
|
||||||
if(health <= 0 && !dead && isLocal){
|
if(health <= 0 && !dead){
|
||||||
CallEntity.onPlayerDeath(this);
|
CallEntity.onPlayerDeath(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -222,7 +228,6 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
|
|||||||
if(player == null) return;
|
if(player == null) return;
|
||||||
|
|
||||||
player.dead = true;
|
player.dead = true;
|
||||||
player.respawning = false;
|
|
||||||
player.placeQueue.clear();
|
player.placeQueue.clear();
|
||||||
|
|
||||||
player.dropCarry();
|
player.dropCarry();
|
||||||
@@ -269,6 +274,11 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
|
|||||||
return isLocal ? Float.MAX_VALUE : 40;
|
return isLocal ? Float.MAX_VALUE : 40;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void drawShadow(){
|
||||||
|
Draw.rect(mech.iconRegion, x + elevation*elevationScale, y - elevation*elevationScale, rotation - 90);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void draw(){
|
public void draw(){
|
||||||
if((debug && (!showPlayer || !showUI)) || dead) return;
|
if((debug && (!showPlayer || !showUI)) || dead) return;
|
||||||
@@ -364,7 +374,7 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
|
|||||||
float wobblyness = 0.6f;
|
float wobblyness = 0.6f;
|
||||||
trail.update(x + Angles.trnsx(rotation + 180f, 5f) + Mathf.range(wobblyness),
|
trail.update(x + Angles.trnsx(rotation + 180f, 5f) + Mathf.range(wobblyness),
|
||||||
y + Angles.trnsy(rotation + 180f, 5f) + Mathf.range(wobblyness));
|
y + Angles.trnsy(rotation + 180f, 5f) + Mathf.range(wobblyness));
|
||||||
trail.draw(mech.trailColor, mech.trailColor, 5f * (isFlying() ? 1f : boostHeat));
|
trail.draw(mech.trailColor, 5f * (isFlying() ? 1f : boostHeat));
|
||||||
}else{
|
}else{
|
||||||
trail.clear();
|
trail.clear();
|
||||||
}
|
}
|
||||||
@@ -435,12 +445,10 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
|
|||||||
if(isDead()){
|
if(isDead()){
|
||||||
isBoosting = false;
|
isBoosting = false;
|
||||||
boostHeat = 0f;
|
boostHeat = 0f;
|
||||||
CoreEntity entity = (CoreEntity)getClosestCore();
|
updateRespawning();
|
||||||
|
|
||||||
if (!respawning && entity != null) {
|
|
||||||
entity.trySetPlayer(this);
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
|
}else{
|
||||||
|
spawner = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!isLocal){
|
if(!isLocal){
|
||||||
@@ -465,7 +473,9 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
|
|||||||
updateMech();
|
updateMech();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(isLocal) {
|
||||||
avoidOthers(8f);
|
avoidOthers(8f);
|
||||||
|
}
|
||||||
|
|
||||||
if(!isShooting()) {
|
if(!isShooting()) {
|
||||||
updateBuilding(this);
|
updateBuilding(this);
|
||||||
@@ -532,7 +542,7 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
|
|||||||
pointerY = vec.y;
|
pointerY = vec.y;
|
||||||
updateShooting();
|
updateShooting();
|
||||||
|
|
||||||
movement.limit(speed);
|
movement.limit(speed * Timers.delta());
|
||||||
|
|
||||||
if(getCarrier() == null){
|
if(getCarrier() == null){
|
||||||
velocity.add(movement);
|
velocity.add(movement);
|
||||||
@@ -589,18 +599,13 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
|
|||||||
}
|
}
|
||||||
|
|
||||||
movement.set(targetX - x, targetY - y).limit(mech.speed);
|
movement.set(targetX - x, targetY - y).limit(mech.speed);
|
||||||
movement.setAngle(Mathf.slerpDelta(movement.angle(), velocity.angle(), 0.05f));
|
movement.setAngle(Mathf.slerp(movement.angle(), velocity.angle(), 0.05f));
|
||||||
|
|
||||||
if(distanceTo(targetX, targetY) < attractDst){
|
if(distanceTo(targetX, targetY) < attractDst){
|
||||||
movement.setZero();
|
movement.setZero();
|
||||||
}
|
}
|
||||||
|
|
||||||
velocity.add(movement);
|
velocity.add(movement);
|
||||||
updateVelocityStatus(mech.drag, mech.maxSpeed);
|
|
||||||
|
|
||||||
//hovering effect
|
|
||||||
x += Mathf.sin(Timers.time() + id * 999, 25f, 0.08f);
|
|
||||||
y += Mathf.cos(Timers.time() + id * 999, 25f, 0.08f);
|
|
||||||
|
|
||||||
if(velocity.len() <= 0.2f){
|
if(velocity.len() <= 0.2f){
|
||||||
rotation += Mathf.sin(Timers.time() + id * 99, 10f, 1f);
|
rotation += Mathf.sin(Timers.time() + id * 99, 10f, 1f);
|
||||||
@@ -608,6 +613,12 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
|
|||||||
rotation = Mathf.slerpDelta(rotation, velocity.angle(), velocity.len()/10f);
|
rotation = Mathf.slerpDelta(rotation, velocity.angle(), velocity.len()/10f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
updateVelocityStatus(mech.drag, mech.maxSpeed);
|
||||||
|
|
||||||
|
//hovering effect
|
||||||
|
x += Mathf.sin(Timers.time() + id * 999, 25f, 0.08f);
|
||||||
|
y += Mathf.cos(Timers.time() + id * 999, 25f, 0.08f);
|
||||||
|
|
||||||
//update shooting if not building, not mining and there's ammo left
|
//update shooting if not building, not mining and there's ammo left
|
||||||
if(!isBuilding() && inventory.hasAmmo() && getMineTile() == null){
|
if(!isBuilding() && inventory.hasAmmo() && getMineTile() == null){
|
||||||
|
|
||||||
@@ -652,13 +663,15 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
|
|||||||
|
|
||||||
/**Resets all values of the player.*/
|
/**Resets all values of the player.*/
|
||||||
public void reset(){
|
public void reset(){
|
||||||
|
status.clear();
|
||||||
team = Team.blue;
|
team = Team.blue;
|
||||||
inventory.clear();
|
inventory.clear();
|
||||||
placeQueue.clear();
|
placeQueue.clear();
|
||||||
dead = true;
|
dead = true;
|
||||||
respawning = false;
|
|
||||||
trail.clear();
|
trail.clear();
|
||||||
health = maxHealth();
|
health = maxHealth();
|
||||||
|
mech = (mobile ? Mechs.starterMobile : Mechs.starterDesktop);
|
||||||
|
placeQueue.clear();
|
||||||
|
|
||||||
add();
|
add();
|
||||||
}
|
}
|
||||||
@@ -667,12 +680,21 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
|
|||||||
return isShooting && inventory.hasAmmo() && (!isBoosting || mech.flying);
|
return isShooting && inventory.hasAmmo() && (!isBoosting || mech.flying);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setRespawning(){
|
public void updateRespawning(){
|
||||||
respawning = true;
|
|
||||||
|
if (spawner != -1 && world.tile(spawner) != null && world.tile(spawner).entity instanceof SpawnerTrait) {
|
||||||
|
((SpawnerTrait) world.tile(spawner).entity).updateSpawning(this);
|
||||||
|
}else{
|
||||||
|
CoreEntity entity = (CoreEntity)getClosestCore();
|
||||||
|
if(entity != null){
|
||||||
|
this.spawner = entity.tile.id();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setRespawning(boolean respawning){
|
public void beginRespawning(SpawnerTrait spawner){
|
||||||
this.respawning = respawning;
|
this.spawner = spawner.getTile().packedPosition();
|
||||||
|
this.dead = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -729,12 +751,14 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
|
|||||||
public void write(DataOutput buffer) throws IOException {
|
public void write(DataOutput buffer) throws IOException {
|
||||||
super.writeSave(buffer, !isLocal);
|
super.writeSave(buffer, !isLocal);
|
||||||
buffer.writeUTF(name); //TODO writing strings is very inefficient
|
buffer.writeUTF(name); //TODO writing strings is very inefficient
|
||||||
buffer.writeBoolean(isAdmin);
|
buffer.writeByte(Bits.toByte(isAdmin) | (Bits.toByte(dead) << 1) | (Bits.toByte(isBoosting) << 2));
|
||||||
buffer.writeInt(Color.rgba8888(color));
|
buffer.writeInt(Color.rgba8888(color));
|
||||||
buffer.writeBoolean(dead);
|
|
||||||
buffer.writeByte(mech.id);
|
buffer.writeByte(mech.id);
|
||||||
buffer.writeBoolean(isBoosting);
|
|
||||||
buffer.writeInt(mining == null ? -1 : mining.packedPosition());
|
buffer.writeInt(mining == null ? -1 : mining.packedPosition());
|
||||||
|
buffer.writeInt(spawner);
|
||||||
|
buffer.writeShort((short)(baseRotation * 2));
|
||||||
|
|
||||||
|
writeBuilding(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -742,13 +766,19 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
|
|||||||
float lastx = x, lasty = y, lastrot = rotation;
|
float lastx = x, lasty = y, lastrot = rotation;
|
||||||
super.readSave(buffer);
|
super.readSave(buffer);
|
||||||
name = buffer.readUTF();
|
name = buffer.readUTF();
|
||||||
isAdmin = buffer.readBoolean();
|
byte bools = buffer.readByte();
|
||||||
|
isAdmin = (bools & 1) != 0;
|
||||||
|
dead = (bools & 2) != 0;
|
||||||
|
boolean boosting = (bools & 4) != 0;
|
||||||
color.set(buffer.readInt());
|
color.set(buffer.readInt());
|
||||||
dead = buffer.readBoolean();
|
|
||||||
mech = Upgrade.getByID(buffer.readByte());
|
mech = Upgrade.getByID(buffer.readByte());
|
||||||
boolean boosting = buffer.readBoolean();
|
|
||||||
int mine = buffer.readInt();
|
int mine = buffer.readInt();
|
||||||
interpolator.read(lastx, lasty, x, y, time, rotation);
|
spawner = buffer.readInt();
|
||||||
|
float baseRotation = buffer.readShort()/2f;
|
||||||
|
|
||||||
|
readBuilding(buffer, !isLocal);
|
||||||
|
|
||||||
|
interpolator.read(lastx, lasty, x, y, time, rotation, baseRotation);
|
||||||
rotation = lastrot;
|
rotation = lastrot;
|
||||||
|
|
||||||
if(isLocal){
|
if(isLocal){
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
package io.anuke.mindustry.entities;
|
package io.anuke.mindustry.entities;
|
||||||
|
|
||||||
|
import com.badlogic.gdx.math.GridPoint2;
|
||||||
import com.badlogic.gdx.math.Vector2;
|
import com.badlogic.gdx.math.Vector2;
|
||||||
|
import com.badlogic.gdx.utils.Array;
|
||||||
|
import com.badlogic.gdx.utils.ObjectSet;
|
||||||
import io.anuke.annotations.Annotations.Loc;
|
import io.anuke.annotations.Annotations.Loc;
|
||||||
import io.anuke.annotations.Annotations.Remote;
|
import io.anuke.annotations.Annotations.Remote;
|
||||||
import io.anuke.mindustry.content.fx.Fx;
|
import io.anuke.mindustry.content.fx.Fx;
|
||||||
@@ -10,11 +13,14 @@ import io.anuke.mindustry.game.Team;
|
|||||||
import io.anuke.mindustry.gen.CallBlocks;
|
import io.anuke.mindustry.gen.CallBlocks;
|
||||||
import io.anuke.mindustry.net.In;
|
import io.anuke.mindustry.net.In;
|
||||||
import io.anuke.mindustry.world.Block;
|
import io.anuke.mindustry.world.Block;
|
||||||
|
import io.anuke.mindustry.world.Edges;
|
||||||
import io.anuke.mindustry.world.Tile;
|
import io.anuke.mindustry.world.Tile;
|
||||||
import io.anuke.mindustry.world.blocks.Wall;
|
import io.anuke.mindustry.world.blocks.Wall;
|
||||||
import io.anuke.mindustry.world.blocks.modules.InventoryModule;
|
import io.anuke.mindustry.world.consumers.Consume;
|
||||||
import io.anuke.mindustry.world.blocks.modules.LiquidModule;
|
import io.anuke.mindustry.world.modules.ConsumeModule;
|
||||||
import io.anuke.mindustry.world.blocks.modules.PowerModule;
|
import io.anuke.mindustry.world.modules.InventoryModule;
|
||||||
|
import io.anuke.mindustry.world.modules.LiquidModule;
|
||||||
|
import io.anuke.mindustry.world.modules.PowerModule;
|
||||||
import io.anuke.ucore.core.Effects;
|
import io.anuke.ucore.core.Effects;
|
||||||
import io.anuke.ucore.core.Timers;
|
import io.anuke.ucore.core.Timers;
|
||||||
import io.anuke.ucore.entities.EntityGroup;
|
import io.anuke.ucore.entities.EntityGroup;
|
||||||
@@ -34,6 +40,8 @@ public class TileEntity extends BaseEntity implements TargetTrait {
|
|||||||
/**This value is only used for debugging.*/
|
/**This value is only used for debugging.*/
|
||||||
public static int sleepingEntities = 0;
|
public static int sleepingEntities = 0;
|
||||||
|
|
||||||
|
private static final ObjectSet<Tile> tmpTiles = new ObjectSet<>();
|
||||||
|
|
||||||
public Tile tile;
|
public Tile tile;
|
||||||
public Timer timer;
|
public Timer timer;
|
||||||
public float health;
|
public float health;
|
||||||
@@ -41,7 +49,11 @@ public class TileEntity extends BaseEntity implements TargetTrait {
|
|||||||
public PowerModule power;
|
public PowerModule power;
|
||||||
public InventoryModule items;
|
public InventoryModule items;
|
||||||
public LiquidModule liquids;
|
public LiquidModule liquids;
|
||||||
|
public ConsumeModule cons;
|
||||||
|
|
||||||
|
//list of (cached) tiles with entities in proximity, used for outputting to
|
||||||
|
//TODO implement
|
||||||
|
private Array<Tile> proximity = new Array<>(8);
|
||||||
private boolean dead = false;
|
private boolean dead = false;
|
||||||
private boolean sleeping;
|
private boolean sleeping;
|
||||||
private float sleepTime;
|
private float sleepTime;
|
||||||
@@ -57,12 +69,7 @@ public class TileEntity extends BaseEntity implements TargetTrait {
|
|||||||
timer = new Timer(tile.block().timers);
|
timer = new Timer(tile.block().timers);
|
||||||
|
|
||||||
if(added){
|
if(added){
|
||||||
//if(!tile.block().autoSleep) { //TODO only autosleep when creating a fresh block!
|
|
||||||
add();
|
add();
|
||||||
/*}else{
|
|
||||||
sleeping = true;
|
|
||||||
sleepingEntities ++;
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
@@ -131,6 +138,64 @@ public class TileEntity extends BaseEntity implements TargetTrait {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Tile getTile(){
|
||||||
|
return tile;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean consumed(Class<? extends Consume> type){
|
||||||
|
return tile.block().consumes.get(type).valid(tile.block(), this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeFromProximity(){
|
||||||
|
GridPoint2[] nearby = Edges.getEdges(tile.block().size);
|
||||||
|
for (GridPoint2 point : nearby) {
|
||||||
|
Tile other = world.tile(tile.x + point.x, tile.y + point.y);
|
||||||
|
//remove this tile from all nearby tile's proximities
|
||||||
|
if(other != null){
|
||||||
|
other = other.target();
|
||||||
|
other.block().onProximityUpdate(other);
|
||||||
|
}
|
||||||
|
if(other != null && other.entity != null){
|
||||||
|
other.entity.proximity.removeValue(tile, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateProximity(){
|
||||||
|
tmpTiles.clear();
|
||||||
|
proximity.clear();
|
||||||
|
|
||||||
|
GridPoint2[] nearby = Edges.getEdges(tile.block().size);
|
||||||
|
for (GridPoint2 point : nearby) {
|
||||||
|
Tile other = world.tile(tile.x + point.x, tile.y + point.y);
|
||||||
|
|
||||||
|
if(other != null){
|
||||||
|
other.block().onProximityUpdate(other);
|
||||||
|
other = other.target();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(other != null && other.entity != null){
|
||||||
|
tmpTiles.add(other);
|
||||||
|
|
||||||
|
//add this tile to proximity of nearby tiles
|
||||||
|
if(!other.entity.proximity.contains(tile, true)){
|
||||||
|
other.entity.proximity.add(tile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//using a set to prevent duplicates
|
||||||
|
for(Tile tile : tmpTiles){
|
||||||
|
proximity.add(tile);
|
||||||
|
}
|
||||||
|
|
||||||
|
tile.block().onProximityUpdate(tile);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Array<Tile> proximity(){
|
||||||
|
return proximity;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Team getTeam() {
|
public Team getTeam() {
|
||||||
return tile.getTeam();
|
return tile.getTeam();
|
||||||
@@ -156,6 +221,9 @@ public class TileEntity extends BaseEntity implements TargetTrait {
|
|||||||
}
|
}
|
||||||
|
|
||||||
tile.block().update(tile);
|
tile.block().update(tile);
|
||||||
|
if(cons != null){
|
||||||
|
cons.update(this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -166,8 +234,10 @@ public class TileEntity extends BaseEntity implements TargetTrait {
|
|||||||
|
|
||||||
@Remote(called = Loc.server, in = In.blocks)
|
@Remote(called = Loc.server, in = In.blocks)
|
||||||
public static void onTileDamage(Tile tile, float health){
|
public static void onTileDamage(Tile tile, float health){
|
||||||
|
if(tile.entity != null){
|
||||||
tile.entity.health = health;
|
tile.entity.health = health;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Remote(called = Loc.server, in = In.blocks)
|
@Remote(called = Loc.server, in = In.blocks)
|
||||||
public static void onTileDestroyed(Tile tile){
|
public static void onTileDestroyed(Tile tile){
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ
|
|||||||
public static final float velocityPercision = 8f;
|
public static final float velocityPercision = 8f;
|
||||||
/**Maximum absolute value of a velocity vector component.*/
|
/**Maximum absolute value of a velocity vector component.*/
|
||||||
public static final float maxAbsVelocity = 127f/velocityPercision;
|
public static final float maxAbsVelocity = 127f/velocityPercision;
|
||||||
|
public static final float elevationScale = 4f;
|
||||||
|
|
||||||
private static final Vector2 moveVector = new Vector2();
|
private static final Vector2 moveVector = new Vector2();
|
||||||
|
|
||||||
@@ -52,6 +53,7 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ
|
|||||||
protected Vector2 velocity = new Translator(0f, 0.0001f);
|
protected Vector2 velocity = new Translator(0f, 0.0001f);
|
||||||
protected float hitTime;
|
protected float hitTime;
|
||||||
protected float drownTime;
|
protected float drownTime;
|
||||||
|
protected float elevation;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UnitInventory getInventory() {
|
public UnitInventory getInventory() {
|
||||||
@@ -132,6 +134,7 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ
|
|||||||
@Override
|
@Override
|
||||||
public void readSave(DataInput stream) throws IOException {
|
public void readSave(DataInput stream) throws IOException {
|
||||||
byte team = stream.readByte();
|
byte team = stream.readByte();
|
||||||
|
boolean dead = stream.readBoolean();
|
||||||
float x = stream.readFloat();
|
float x = stream.readFloat();
|
||||||
float y = stream.readFloat();
|
float y = stream.readFloat();
|
||||||
byte xv = stream.readByte();
|
byte xv = stream.readByte();
|
||||||
@@ -141,6 +144,7 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ
|
|||||||
|
|
||||||
this.status.readSave(stream);
|
this.status.readSave(stream);
|
||||||
this.inventory.readSave(stream);
|
this.inventory.readSave(stream);
|
||||||
|
this.dead = dead;
|
||||||
this.team = Team.all[team];
|
this.team = Team.all[team];
|
||||||
this.health = health;
|
this.health = health;
|
||||||
this.x = x;
|
this.x = x;
|
||||||
@@ -151,6 +155,7 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ
|
|||||||
|
|
||||||
public void writeSave(DataOutput stream, boolean net) throws IOException {
|
public void writeSave(DataOutput stream, boolean net) throws IOException {
|
||||||
stream.writeByte(team.ordinal());
|
stream.writeByte(team.ordinal());
|
||||||
|
stream.writeBoolean(isDead());
|
||||||
stream.writeFloat(net ? interpolator.target.x : x);
|
stream.writeFloat(net ? interpolator.target.x : x);
|
||||||
stream.writeFloat(net ? interpolator.target.y : y);
|
stream.writeFloat(net ? interpolator.target.y : y);
|
||||||
stream.writeByte((byte)(Mathf.clamp(velocity.x, -maxAbsVelocity, maxAbsVelocity) * velocityPercision));
|
stream.writeByte((byte)(Mathf.clamp(velocity.x, -maxAbsVelocity, maxAbsVelocity) * velocityPercision));
|
||||||
@@ -221,6 +226,10 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ
|
|||||||
if(isFlying()) {
|
if(isFlying()) {
|
||||||
x += velocity.x / getMass() * Timers.delta();
|
x += velocity.x / getMass() * Timers.delta();
|
||||||
y += velocity.y / getMass() * Timers.delta();
|
y += velocity.y / getMass() * Timers.delta();
|
||||||
|
|
||||||
|
if(tile != null){
|
||||||
|
elevation = Mathf.lerpDelta(elevation, tile.elevation, 0.04f);
|
||||||
|
}
|
||||||
}else{
|
}else{
|
||||||
boolean onLiquid = floor.isLiquid;
|
boolean onLiquid = floor.isLiquid;
|
||||||
|
|
||||||
@@ -295,6 +304,7 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ
|
|||||||
|
|
||||||
public void drawUnder(){}
|
public void drawUnder(){}
|
||||||
public void drawOver(){}
|
public void drawOver(){}
|
||||||
|
public void drawShadow(){}
|
||||||
|
|
||||||
public void drawView(){
|
public void drawView(){
|
||||||
Fill.circle(x, y, getViewDistance());
|
Fill.circle(x, y, getViewDistance());
|
||||||
|
|||||||
@@ -87,6 +87,7 @@ public class UnitInventory implements Saveable{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void addAmmo(AmmoType type){
|
public void addAmmo(AmmoType type){
|
||||||
|
if(type == null) return;
|
||||||
totalAmmo += type.quantityMultiplier;
|
totalAmmo += type.quantityMultiplier;
|
||||||
|
|
||||||
//find ammo entry by type
|
//find ammo entry by type
|
||||||
|
|||||||
@@ -19,6 +19,9 @@ import static io.anuke.mindustry.Vars.*;
|
|||||||
public class Units {
|
public class Units {
|
||||||
private static Rectangle rect = new Rectangle();
|
private static Rectangle rect = new Rectangle();
|
||||||
private static Rectangle hitrect = new Rectangle();
|
private static Rectangle hitrect = new Rectangle();
|
||||||
|
private static Unit result;
|
||||||
|
private static float cdist;
|
||||||
|
private static boolean boolResult;
|
||||||
|
|
||||||
/**Validates a target.
|
/**Validates a target.
|
||||||
* @param target The target to validate
|
* @param target The target to validate
|
||||||
@@ -49,20 +52,20 @@ public class Units {
|
|||||||
rect.setSize(type.size * tilesize, type.size * tilesize);
|
rect.setSize(type.size * tilesize, type.size * tilesize);
|
||||||
rect.setCenter(tile.drawx(), tile.drawy());
|
rect.setCenter(tile.drawx(), tile.drawy());
|
||||||
|
|
||||||
boolean[] value = new boolean[1];
|
boolResult = false;
|
||||||
|
|
||||||
Units.getNearby(rect, unit -> {
|
Units.getNearby(rect, unit -> {
|
||||||
if (value[0]) return;
|
if (boolResult) return;
|
||||||
if (!unit.isFlying()) {
|
if (!unit.isFlying()) {
|
||||||
unit.getHitbox(hitrect);
|
unit.getHitbox(hitrect);
|
||||||
|
|
||||||
if (hitrect.overlaps(rect)) {
|
if (hitrect.overlaps(rect)) {
|
||||||
value[0] = true;
|
boolResult = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return value[0];
|
return boolResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**Returns whether there are any entities on this tile, with the hitbox expanded.*/
|
/**Returns whether there are any entities on this tile, with the hitbox expanded.*/
|
||||||
@@ -138,8 +141,8 @@ public class Units {
|
|||||||
|
|
||||||
/**Returns the closest enemy of this team. Filter by predicate.*/
|
/**Returns the closest enemy of this team. Filter by predicate.*/
|
||||||
public static Unit getClosestEnemy(Team team, float x, float y, float range, Predicate<Unit> predicate){
|
public static Unit getClosestEnemy(Team team, float x, float y, float range, Predicate<Unit> predicate){
|
||||||
Unit[] result = {null};
|
result = null;
|
||||||
float[] cdist = {0};
|
cdist = 0f;
|
||||||
|
|
||||||
rect.setSize(range*2f).setCenter(x, y);
|
rect.setSize(range*2f).setCenter(x, y);
|
||||||
|
|
||||||
@@ -149,20 +152,20 @@ public class Units {
|
|||||||
|
|
||||||
float dist = Vector2.dst(e.x, e.y, x, y);
|
float dist = Vector2.dst(e.x, e.y, x, y);
|
||||||
if (dist < range) {
|
if (dist < range) {
|
||||||
if (result[0] == null || dist < cdist[0]) {
|
if (result == null || dist < cdist) {
|
||||||
result[0] = e;
|
result = e;
|
||||||
cdist[0] = dist;
|
cdist = dist;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return result[0];
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**Returns the closest ally of this team. Filter by predicate.*/
|
/**Returns the closest ally of this team. Filter by predicate.*/
|
||||||
public static Unit getClosest(Team team, float x, float y, float range, Predicate<Unit> predicate){
|
public static Unit getClosest(Team team, float x, float y, float range, Predicate<Unit> predicate){
|
||||||
Unit[] result = {null};
|
result = null;
|
||||||
float[] cdist = {0};
|
cdist = 0f;
|
||||||
|
|
||||||
rect.setSize(range*2f).setCenter(x, y);
|
rect.setSize(range*2f).setCenter(x, y);
|
||||||
|
|
||||||
@@ -172,14 +175,14 @@ public class Units {
|
|||||||
|
|
||||||
float dist = Vector2.dst(e.x, e.y, x, y);
|
float dist = Vector2.dst(e.x, e.y, x, y);
|
||||||
if (dist < range) {
|
if (dist < range) {
|
||||||
if (result[0] == null || dist < cdist[0]) {
|
if (result == null || dist < cdist) {
|
||||||
result[0] = e;
|
result = e;
|
||||||
cdist[0] = dist;
|
cdist = dist;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return result[0];
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**Iterates over all units in a rectangle.*/
|
/**Iterates over all units in a rectangle.*/
|
||||||
|
|||||||
@@ -91,9 +91,10 @@ public class Fire extends TimedEntity implements SaveTrait, SyncTrait, Poolable
|
|||||||
|
|
||||||
time = Mathf.clamp(time + Timers.delta(), 0, lifetime());
|
time = Mathf.clamp(time + Timers.delta(), 0, lifetime());
|
||||||
|
|
||||||
if(time >= lifetime()){
|
if(time >= lifetime() || tile == null){
|
||||||
CallEntity.onFireRemoved(getID());
|
CallEntity.onFireRemoved(getID());
|
||||||
remove();
|
remove();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
TileEntity entity = tile.target().entity;
|
TileEntity entity = tile.target().entity;
|
||||||
|
|||||||
@@ -57,8 +57,7 @@ public class ItemDrop extends SolidEntity implements SaveTrait, SyncTrait, DrawT
|
|||||||
return drop;
|
return drop;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Remote(called = Loc.server, in = In.entities)
|
public static void create(Item item, int amount, float x, float y, float velocityX, float velocityY){
|
||||||
public static void createItemDrop(Item item, int amount, float x, float y, float velocityX, float velocityY){
|
|
||||||
create(item, amount, x, y, 0).getVelocity().set(velocityX, velocityY);
|
create(item, amount, x, y, 0).getVelocity().set(velocityX, velocityY);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -69,8 +68,10 @@ public class ItemDrop extends SolidEntity implements SaveTrait, SyncTrait, DrawT
|
|||||||
Effects.effect(UnitFx.pickup, drop);
|
Effects.effect(UnitFx.pickup, drop);
|
||||||
}
|
}
|
||||||
itemGroup.removeByID(itemid);
|
itemGroup.removeByID(itemid);
|
||||||
|
if(Net.client()){
|
||||||
netClient.addRemovedEntity(itemid);
|
netClient.addRemovedEntity(itemid);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**Internal use only!*/
|
/**Internal use only!*/
|
||||||
public ItemDrop(){
|
public ItemDrop(){
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ public class ItemTransfer extends TimedEntity implements DrawTrait{
|
|||||||
for (int i = 0; i < Mathf.clamp(amount/3, 1, 8); i++) {
|
for (int i = 0; i < Mathf.clamp(amount/3, 1, 8); i++) {
|
||||||
Timers.run(i*3, () -> create(item, x, y, tile, () -> {}));
|
Timers.run(i*3, () -> create(item, x, y, tile, () -> {}));
|
||||||
}
|
}
|
||||||
tile.entity.items.addItem(item, amount);
|
tile.entity.items.add(item, amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void create(Item item, float fromx, float fromy, PosTrait to, Runnable done){
|
public static void create(Item item, float fromx, float fromy, PosTrait to, Runnable done){
|
||||||
|
|||||||
@@ -8,32 +8,36 @@ import io.anuke.mindustry.content.fx.BlockFx;
|
|||||||
import io.anuke.mindustry.entities.Player;
|
import io.anuke.mindustry.entities.Player;
|
||||||
import io.anuke.mindustry.entities.TileEntity;
|
import io.anuke.mindustry.entities.TileEntity;
|
||||||
import io.anuke.mindustry.entities.Unit;
|
import io.anuke.mindustry.entities.Unit;
|
||||||
import io.anuke.mindustry.gen.CallBlocks;
|
|
||||||
import io.anuke.mindustry.gen.CallEntity;
|
import io.anuke.mindustry.gen.CallEntity;
|
||||||
import io.anuke.mindustry.graphics.Palette;
|
import io.anuke.mindustry.graphics.Palette;
|
||||||
import io.anuke.mindustry.type.Item;
|
import io.anuke.mindustry.type.Item;
|
||||||
import io.anuke.mindustry.type.Recipe;
|
import io.anuke.mindustry.type.Recipe;
|
||||||
import io.anuke.mindustry.world.Build;
|
import io.anuke.mindustry.world.Build;
|
||||||
import io.anuke.mindustry.world.Tile;
|
import io.anuke.mindustry.world.Tile;
|
||||||
import io.anuke.mindustry.world.blocks.BreakBlock;
|
|
||||||
import io.anuke.mindustry.world.blocks.BreakBlock.BreakEntity;
|
|
||||||
import io.anuke.mindustry.world.blocks.BuildBlock;
|
import io.anuke.mindustry.world.blocks.BuildBlock;
|
||||||
import io.anuke.mindustry.world.blocks.BuildBlock.BuildEntity;
|
import io.anuke.mindustry.world.blocks.BuildBlock.BuildEntity;
|
||||||
import io.anuke.ucore.core.Effects;
|
import io.anuke.ucore.core.Effects;
|
||||||
import io.anuke.ucore.core.Timers;
|
import io.anuke.ucore.core.Timers;
|
||||||
|
import io.anuke.ucore.entities.trait.Entity;
|
||||||
import io.anuke.ucore.graphics.Draw;
|
import io.anuke.ucore.graphics.Draw;
|
||||||
import io.anuke.ucore.graphics.Fill;
|
import io.anuke.ucore.graphics.Fill;
|
||||||
import io.anuke.ucore.graphics.Lines;
|
import io.anuke.ucore.graphics.Lines;
|
||||||
import io.anuke.ucore.graphics.Shapes;
|
import io.anuke.ucore.graphics.Shapes;
|
||||||
import io.anuke.ucore.util.*;
|
import io.anuke.ucore.util.Angles;
|
||||||
|
import io.anuke.ucore.util.Geometry;
|
||||||
|
import io.anuke.ucore.util.Mathf;
|
||||||
|
import io.anuke.ucore.util.Translator;
|
||||||
|
|
||||||
|
import java.io.DataInput;
|
||||||
|
import java.io.DataOutput;
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
import static io.anuke.mindustry.Vars.tilesize;
|
import static io.anuke.mindustry.Vars.tilesize;
|
||||||
import static io.anuke.mindustry.Vars.world;
|
import static io.anuke.mindustry.Vars.world;
|
||||||
|
|
||||||
/**Interface for units that build, break or mine things.*/
|
/**Interface for units that build, break or mine things.*/
|
||||||
public interface BuilderTrait {
|
public interface BuilderTrait extends Entity{
|
||||||
//these are not instance variables!
|
//these are not instance variables!
|
||||||
Translator[] tmptr = {new Translator(), new Translator(), new Translator(), new Translator()};
|
Translator[] tmptr = {new Translator(), new Translator(), new Translator(), new Translator()};
|
||||||
float placeDistance = 140f;
|
float placeDistance = 140f;
|
||||||
@@ -54,6 +58,54 @@ public interface BuilderTrait {
|
|||||||
/**Build power, can be any float. 1 = builds recipes in normal time, 0 = doesn't build at all.*/
|
/**Build power, can be any float. 1 = builds recipes in normal time, 0 = doesn't build at all.*/
|
||||||
float getBuildPower(Tile tile);
|
float getBuildPower(Tile tile);
|
||||||
|
|
||||||
|
/**Whether this type of builder can begin creating new blocks.*/
|
||||||
|
default boolean canCreateBlocks(){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
default void writeBuilding(DataOutput output) throws IOException {
|
||||||
|
BuildRequest request = getCurrentRequest();
|
||||||
|
|
||||||
|
if(request != null){
|
||||||
|
output.writeByte(request.remove ? 1 : 0);
|
||||||
|
output.writeInt(world.toPacked(request.x, request.y));
|
||||||
|
if(!request.remove){
|
||||||
|
output.writeByte(request.recipe.id);
|
||||||
|
output.writeByte(request.rotation);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
output.writeByte(-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
default void readBuilding(DataInput input) throws IOException{
|
||||||
|
readBuilding(input, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
default void readBuilding(DataInput input, boolean applyChanges) throws IOException{
|
||||||
|
synchronized (getPlaceQueue()) {
|
||||||
|
if(applyChanges) getPlaceQueue().clear();
|
||||||
|
|
||||||
|
byte type = input.readByte();
|
||||||
|
if (type != -1) {
|
||||||
|
int position = input.readInt();
|
||||||
|
BuildRequest request;
|
||||||
|
|
||||||
|
if (type == 1) { //remove
|
||||||
|
request = new BuildRequest(position % world.width(), position / world.width());
|
||||||
|
} else { //place
|
||||||
|
byte recipe = input.readByte();
|
||||||
|
byte rotation = input.readByte();
|
||||||
|
request = new BuildRequest(position % world.width(), position / world.width(), rotation, Recipe.getByID(recipe));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(applyChanges){
|
||||||
|
getPlaceQueue().addLast(request);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**Return whether this builder's place queue contains items.*/
|
/**Return whether this builder's place queue contains items.*/
|
||||||
default boolean isBuilding(){
|
default boolean isBuilding(){
|
||||||
return getPlaceQueue().size != 0;
|
return getPlaceQueue().size != 0;
|
||||||
@@ -77,12 +129,8 @@ public interface BuilderTrait {
|
|||||||
|
|
||||||
/**Clears the placement queue.*/
|
/**Clears the placement queue.*/
|
||||||
default void clearBuilding(){
|
default void clearBuilding(){
|
||||||
if(this instanceof Player) {
|
|
||||||
CallBlocks.onBuildDeselect((Player) this);
|
|
||||||
}else{
|
|
||||||
getPlaceQueue().clear();
|
getPlaceQueue().clear();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**Add another build requests to the tail of the queue, if it doesn't exist there yet.*/
|
/**Add another build requests to the tail of the queue, if it doesn't exist there yet.*/
|
||||||
default void addBuildRequest(BuildRequest place){
|
default void addBuildRequest(BuildRequest place){
|
||||||
@@ -119,75 +167,40 @@ public interface BuilderTrait {
|
|||||||
setMineTile(null);
|
setMineTile(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TileEntity core = unit.getClosestCore();
|
||||||
|
|
||||||
|
//if there is no core to build with, stop building!
|
||||||
|
if(core == null){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Tile tile = world.tile(current.x, current.y);
|
Tile tile = world.tile(current.x, current.y);
|
||||||
|
|
||||||
if(unit.distanceTo(tile) > placeDistance || //out of range, skip it
|
if (!(tile.block() instanceof BuildBlock)) {
|
||||||
(current.lastEntity != null && current.lastEntity.isDead())) { //build/destroy request has died, skip it
|
if(canCreateBlocks() && !current.remove && Build.validPlace(unit.getTeam(), current.x, current.y, current.recipe.result, current.rotation)) {
|
||||||
getPlaceQueue().removeFirst();
|
Build.beginPlace(unit.getTeam(), current.x, current.y, current.recipe, current.rotation);
|
||||||
}else if(current.remove){
|
}else if(canCreateBlocks() && current.remove && Build.validBreak(unit.getTeam(), current.x, current.y)){
|
||||||
|
Build.beginBreak(unit.getTeam(), current.x, current.y);
|
||||||
if (!(tile.block() instanceof BreakBlock)) { //check if haven't started placing
|
|
||||||
if(Build.validBreak(unit.getTeam(), current.x, current.y)){
|
|
||||||
|
|
||||||
//if it's valid, place it
|
|
||||||
if(!current.requested && unit instanceof Player){
|
|
||||||
CallBlocks.breakBlock((Player)unit, unit.getTeam(), current.x, current.y);
|
|
||||||
current.requested = true;
|
|
||||||
}
|
|
||||||
}else{
|
}else{
|
||||||
//otherwise, skip it
|
|
||||||
getPlaceQueue().removeFirst();
|
getPlaceQueue().removeFirst();
|
||||||
}
|
|
||||||
}else{
|
|
||||||
TileEntity core = unit.getClosestCore();
|
|
||||||
|
|
||||||
//if there is no core to build with, stop building!
|
|
||||||
if(core == null){
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//otherwise, update it.
|
|
||||||
BreakEntity entity = tile.entity();
|
|
||||||
current.lastEntity = entity;
|
|
||||||
|
|
||||||
entity.addProgress(core, unit, 1f / entity.breakTime * Timers.delta() * getBuildPower(tile));
|
|
||||||
unit.rotation = Mathf.slerpDelta(unit.rotation, unit.angleTo(entity), 0.4f);
|
|
||||||
getCurrentRequest().progress = entity.progress();
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
if (!(tile.block() instanceof BuildBlock)) { //check if haven't started placing
|
|
||||||
if(Build.validPlace(unit.getTeam(), current.x, current.y, current.recipe.result, current.rotation)){
|
|
||||||
|
|
||||||
//if it's valid, place it
|
|
||||||
if(!current.requested && unit instanceof Player){
|
|
||||||
CallBlocks.placeBlock((Player)unit, unit.getTeam(), current.x, current.y, current.recipe, current.rotation);
|
|
||||||
current.requested = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
}else{
|
|
||||||
//otherwise, skip it
|
|
||||||
getPlaceQueue().removeFirst();
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
TileEntity core = unit.getClosestCore();
|
|
||||||
|
|
||||||
//if there is no core to build with, stop building!
|
|
||||||
if(core == null){
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//otherwise, update it.
|
//otherwise, update it.
|
||||||
BuildEntity entity = tile.entity();
|
BuildEntity entity = tile.entity();
|
||||||
current.lastEntity = entity;
|
|
||||||
|
|
||||||
entity.addProgress(core.items, 1f / entity.recipe.cost * Timers.delta() * getBuildPower(tile));
|
//deconstructing is 2x as fast
|
||||||
if(unit instanceof Player){
|
if(current.remove){
|
||||||
entity.lastBuilder = (Player)unit;
|
entity.deconstruct(unit, core, 2f / entity.buildCost * Timers.delta() * getBuildPower(tile));
|
||||||
|
}else{
|
||||||
|
entity.construct(unit, core, 1f / entity.buildCost * Timers.delta() * getBuildPower(tile));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(unit.distanceTo(tile) <= placeDistance){
|
||||||
unit.rotation = Mathf.slerpDelta(unit.rotation, unit.angleTo(entity), 0.4f);
|
unit.rotation = Mathf.slerpDelta(unit.rotation, unit.angleTo(entity), 0.4f);
|
||||||
getCurrentRequest().progress = entity.progress();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
current.progress = entity.progress();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**Do not call directly.*/
|
/**Do not call directly.*/
|
||||||
@@ -233,7 +246,11 @@ public interface BuilderTrait {
|
|||||||
|
|
||||||
Tile tile = world.tile(request.x, request.y);
|
Tile tile = world.tile(request.x, request.y);
|
||||||
|
|
||||||
Draw.color(unit.distanceTo(tile) > placeDistance || request.remove ? Palette.remove : Palette.accent);
|
if(unit.distanceTo(tile) > placeDistance){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Draw.color(Palette.accent);
|
||||||
float focusLen = 3.8f + Mathf.absin(Timers.time(), 1.1f, 0.6f);
|
float focusLen = 3.8f + Mathf.absin(Timers.time(), 1.1f, 0.6f);
|
||||||
float px = unit.x + Angles.trnsx(unit.rotation, focusLen);
|
float px = unit.x + Angles.trnsx(unit.rotation, focusLen);
|
||||||
float py = unit.y + Angles.trnsy(unit.rotation, focusLen);
|
float py = unit.y + Angles.trnsy(unit.rotation, focusLen);
|
||||||
@@ -302,9 +319,6 @@ public interface BuilderTrait {
|
|||||||
public final Recipe recipe;
|
public final Recipe recipe;
|
||||||
public final boolean remove;
|
public final boolean remove;
|
||||||
|
|
||||||
public boolean requested;
|
|
||||||
public TileEntity lastEntity;
|
|
||||||
|
|
||||||
public float progress;
|
public float progress;
|
||||||
|
|
||||||
/**This creates a build request.*/
|
/**This creates a build request.*/
|
||||||
|
|||||||
@@ -32,15 +32,16 @@ public interface CarryTrait extends TeamTrait, SolidTrait, TargetTrait{
|
|||||||
CallEntity.setCarryOf(this instanceof Player ? (Player)this : null, this, unit);
|
CallEntity.setCarryOf(this instanceof Player ? (Player)this : null, this, unit);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Remote(called = Loc.server, targets = Loc.both, forward = true, in = In.entities)
|
@Remote(called = Loc.both, targets = Loc.both, forward = true, in = In.entities)
|
||||||
static void dropSelf(Player player){
|
static void dropSelf(Player player){
|
||||||
if(player.getCarrier() != null){
|
if(player.getCarrier() != null){
|
||||||
player.getCarrier().dropCarry();
|
player.getCarrier().dropCarry();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Remote(called = Loc.server, targets = Loc.both, forward = true, in = In.entities)
|
@Remote(called = Loc.both, targets = Loc.both, forward = true, in = In.entities)
|
||||||
static void setCarryOf(Player player, CarryTrait trait, CarriableTrait unit){
|
static void setCarryOf(Player player, CarryTrait trait, CarriableTrait unit){
|
||||||
|
if(trait == null) return;
|
||||||
if(player != null){ //when a server recieves this called from a player, set the carrier to the player.
|
if(player != null){ //when a server recieves this called from a player, set the carrier to the player.
|
||||||
trait = player;
|
trait = player;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package io.anuke.mindustry.entities.traits;
|
||||||
|
|
||||||
|
import io.anuke.mindustry.entities.Unit;
|
||||||
|
import io.anuke.mindustry.world.Tile;
|
||||||
|
|
||||||
|
public interface SpawnerTrait {
|
||||||
|
Tile getTile();
|
||||||
|
void updateSpawning(Unit unit);
|
||||||
|
float getSpawnProgress();
|
||||||
|
}
|
||||||
@@ -12,6 +12,7 @@ import io.anuke.mindustry.entities.Unit;
|
|||||||
import io.anuke.mindustry.entities.Units;
|
import io.anuke.mindustry.entities.Units;
|
||||||
import io.anuke.mindustry.entities.effect.ScorchDecal;
|
import io.anuke.mindustry.entities.effect.ScorchDecal;
|
||||||
import io.anuke.mindustry.entities.traits.ShooterTrait;
|
import io.anuke.mindustry.entities.traits.ShooterTrait;
|
||||||
|
import io.anuke.mindustry.entities.traits.SpawnerTrait;
|
||||||
import io.anuke.mindustry.entities.traits.TargetTrait;
|
import io.anuke.mindustry.entities.traits.TargetTrait;
|
||||||
import io.anuke.mindustry.game.Team;
|
import io.anuke.mindustry.game.Team;
|
||||||
import io.anuke.mindustry.game.TeamInfo.TeamData;
|
import io.anuke.mindustry.game.TeamInfo.TeamData;
|
||||||
@@ -52,7 +53,7 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{
|
|||||||
|
|
||||||
protected boolean isWave;
|
protected boolean isWave;
|
||||||
protected Squad squad;
|
protected Squad squad;
|
||||||
protected int spawner = -1;
|
protected int spawner;
|
||||||
|
|
||||||
/**Initialize the type and team of this unit. Only call once!*/
|
/**Initialize the type and team of this unit. Only call once!*/
|
||||||
public void init(UnitType type, Team team){
|
public void init(UnitType type, Team team){
|
||||||
@@ -62,14 +63,18 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{
|
|||||||
this.team = team;
|
this.team = team;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSpawner(UnitFactoryEntity spawner) {
|
public void setSpawner(Tile tile) {
|
||||||
this.spawner = spawner.tile.packedPosition();
|
this.spawner = tile.packedPosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
public UnitType getType() {
|
public UnitType getType() {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Tile getSpawner(){
|
||||||
|
return world.tile(spawner);
|
||||||
|
}
|
||||||
|
|
||||||
/**internal constructor used for deserialization, DO NOT USE*/
|
/**internal constructor used for deserialization, DO NOT USE*/
|
||||||
public BaseUnit(){}
|
public BaseUnit(){}
|
||||||
|
|
||||||
@@ -92,6 +97,19 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{
|
|||||||
((TileEntity)target).tile.block().flags.contains(flag);
|
((TileEntity)target).tile.block().flags.contains(flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void updateRespawning(){
|
||||||
|
if(spawner == -1) return;
|
||||||
|
|
||||||
|
Tile tile = world.tile(spawner);
|
||||||
|
if(tile != null && tile.entity != null){
|
||||||
|
if(tile.entity instanceof SpawnerTrait){
|
||||||
|
((SpawnerTrait) tile.entity).updateSpawning(this);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
spawner = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void setState(UnitState state){
|
public void setState(UnitState state){
|
||||||
this.state.set(state);
|
this.state.set(state);
|
||||||
}
|
}
|
||||||
@@ -162,6 +180,11 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isValid() {
|
||||||
|
return super.isValid() && isAdded();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Timer getTimer() {
|
public Timer getTimer() {
|
||||||
return timer;
|
return timer;
|
||||||
@@ -249,13 +272,20 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{
|
|||||||
|
|
||||||
if(hitTime < 0) hitTime = 0;
|
if(hitTime < 0) hitTime = 0;
|
||||||
|
|
||||||
|
if(isDead()){
|
||||||
|
updateRespawning();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if(Net.client()){
|
if(Net.client()){
|
||||||
interpolate();
|
interpolate();
|
||||||
status.update(this);
|
status.update(this);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!Net.client()){
|
||||||
avoidOthers(8f);
|
avoidOthers(8f);
|
||||||
|
}
|
||||||
|
|
||||||
if(squad != null){
|
if(squad != null){
|
||||||
squad.update();
|
squad.update();
|
||||||
@@ -317,7 +347,7 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{
|
|||||||
hitboxTile.setSize(type.hitsizeTile);
|
hitboxTile.setSize(type.hitsizeTile);
|
||||||
state.set(getStartState());
|
state.set(getStartState());
|
||||||
|
|
||||||
heal();
|
health(maxHealth());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -348,6 +378,7 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{
|
|||||||
public void write(DataOutput data) throws IOException{
|
public void write(DataOutput data) throws IOException{
|
||||||
super.writeSave(data);
|
super.writeSave(data);
|
||||||
data.writeByte(type.id);
|
data.writeByte(type.id);
|
||||||
|
data.writeInt(spawner);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -355,6 +386,7 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{
|
|||||||
float lastx = x, lasty = y, lastrot = rotation;
|
float lastx = x, lasty = y, lastrot = rotation;
|
||||||
super.readSave(data);
|
super.readSave(data);
|
||||||
this.type = UnitType.getByID(data.readByte());
|
this.type = UnitType.getByID(data.readByte());
|
||||||
|
this.spawner = data.readInt();
|
||||||
|
|
||||||
interpolator.read(lastx, lasty, x, y, time, rotation);
|
interpolator.read(lastx, lasty, x, y, time, rotation);
|
||||||
rotation = lastrot;
|
rotation = lastrot;
|
||||||
@@ -368,7 +400,9 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{
|
|||||||
public static void onUnitDeath(BaseUnit unit){
|
public static void onUnitDeath(BaseUnit unit){
|
||||||
if(unit == null) return;
|
if(unit == null) return;
|
||||||
|
|
||||||
|
if(Net.server() || !Net.active()){
|
||||||
UnitDrops.dropItems(unit);
|
UnitDrops.dropItems(unit);
|
||||||
|
}
|
||||||
|
|
||||||
float explosiveness = 2f + (unit.inventory.hasItem() ? unit.inventory.getItem().item.explosiveness * unit.inventory.getItem().amount : 0f);
|
float explosiveness = 2f + (unit.inventory.hasItem() ? unit.inventory.getItem().item.explosiveness * unit.inventory.getItem().amount : 0f);
|
||||||
float flammability = (unit.inventory.hasItem() ? unit.inventory.getItem().item.flammability * unit.inventory.getItem().amount : 0f);
|
float flammability = (unit.inventory.hasItem() ? unit.inventory.getItem().item.flammability * unit.inventory.getItem().amount : 0f);
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ import static io.anuke.mindustry.Vars.world;
|
|||||||
|
|
||||||
public abstract class FlyingUnit extends BaseUnit implements CarryTrait{
|
public abstract class FlyingUnit extends BaseUnit implements CarryTrait{
|
||||||
protected static Translator vec = new Translator();
|
protected static Translator vec = new Translator();
|
||||||
protected static float maxAim = 30f;
|
|
||||||
protected static float wobblyness = 0.6f;
|
protected static float wobblyness = 0.6f;
|
||||||
|
|
||||||
protected Trail trail = new Trail(8);
|
protected Trail trail = new Trail(8);
|
||||||
@@ -33,6 +32,11 @@ public abstract class FlyingUnit extends BaseUnit implements CarryTrait{
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void drawShadow(){
|
||||||
|
Draw.rect(type.region, x + elevation*elevationScale, y - elevation*elevationScale, rotation - 90);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CarriableTrait getCarry() {
|
public CarriableTrait getCarry() {
|
||||||
return carrying;
|
return carrying;
|
||||||
@@ -72,7 +76,7 @@ public abstract class FlyingUnit extends BaseUnit implements CarryTrait{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void drawOver() {
|
public void drawOver() {
|
||||||
trail.draw(Palette.lightTrail, Palette.lightTrail, 5f);
|
trail.draw(Palette.lightTrail, 5f);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package io.anuke.mindustry.entities.units;
|
|||||||
|
|
||||||
import io.anuke.mindustry.Vars;
|
import io.anuke.mindustry.Vars;
|
||||||
import io.anuke.mindustry.content.Items;
|
import io.anuke.mindustry.content.Items;
|
||||||
import io.anuke.mindustry.gen.CallEntity;
|
import io.anuke.mindustry.entities.effect.ItemDrop;
|
||||||
import io.anuke.mindustry.type.Item;
|
import io.anuke.mindustry.type.Item;
|
||||||
import io.anuke.ucore.util.Mathf;
|
import io.anuke.ucore.util.Mathf;
|
||||||
|
|
||||||
@@ -21,9 +21,9 @@ public class UnitDrops {
|
|||||||
|
|
||||||
for (int i = 0; i < 3; i++) {
|
for (int i = 0; i < 3; i++) {
|
||||||
for(Item item : dropTable){
|
for(Item item : dropTable){
|
||||||
if(Mathf.chance(0.2)){
|
if(Mathf.chance(0.03)){
|
||||||
int amount = Mathf.random(1, 5);
|
int amount = Mathf.random(20, 40);
|
||||||
CallEntity.createItemDrop(item, amount, unit.x + Mathf.range(2f), unit.y + Mathf.range(2f),
|
ItemDrop.create(item, amount, unit.x + Mathf.range(2f), unit.y + Mathf.range(2f),
|
||||||
unit.getVelocity().x + Mathf.range(3f), unit.getVelocity().y + Mathf.range(3f));
|
unit.getVelocity().x + Mathf.range(3f), unit.getVelocity().y + Mathf.range(3f));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ import io.anuke.mindustry.gen.CallEntity;
|
|||||||
import io.anuke.mindustry.graphics.Palette;
|
import io.anuke.mindustry.graphics.Palette;
|
||||||
import io.anuke.mindustry.type.Item;
|
import io.anuke.mindustry.type.Item;
|
||||||
import io.anuke.mindustry.type.ItemStack;
|
import io.anuke.mindustry.type.ItemStack;
|
||||||
import io.anuke.mindustry.type.Recipe;
|
|
||||||
import io.anuke.mindustry.world.Tile;
|
import io.anuke.mindustry.world.Tile;
|
||||||
import io.anuke.mindustry.world.blocks.BuildBlock;
|
import io.anuke.mindustry.world.blocks.BuildBlock;
|
||||||
import io.anuke.mindustry.world.blocks.BuildBlock.BuildEntity;
|
import io.anuke.mindustry.world.blocks.BuildBlock.BuildEntity;
|
||||||
@@ -150,7 +149,7 @@ public class Drone extends FlyingUnit implements BuilderTrait {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void drawOver() {
|
public void drawOver() {
|
||||||
trail.draw(Palette.lightTrail, Palette.lightTrail, 3f);
|
trail.draw(Palette.lightTrail, 3f);
|
||||||
|
|
||||||
TargetTrait entity = target;
|
TargetTrait entity = target;
|
||||||
|
|
||||||
@@ -182,7 +181,7 @@ public class Drone extends FlyingUnit implements BuilderTrait {
|
|||||||
if(entity == null){
|
if(entity == null){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
targetItem = Mathf.findMin(toMine, (a, b) -> -Integer.compare(entity.items.getItem(a), entity.items.getItem(b)));
|
targetItem = Mathf.findMin(toMine, (a, b) -> -Integer.compare(entity.items.get(a), entity.items.get(b)));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected boolean findItemDrop(){
|
protected boolean findItemDrop(){
|
||||||
@@ -202,30 +201,28 @@ public class Drone extends FlyingUnit implements BuilderTrait {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canCreateBlocks() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void write(DataOutput data) throws IOException {
|
public void write(DataOutput data) throws IOException {
|
||||||
super.write(data);
|
super.write(data);
|
||||||
data.writeInt(mineTile == null ? -1 : mineTile.packedPosition());
|
data.writeInt(mineTile == null ? -1 : mineTile.packedPosition());
|
||||||
data.writeInt(placeQueue.size == 0 ? -1 : world.tile(placeQueue.last().x, placeQueue.last().y).packedPosition());
|
writeBuilding(data);
|
||||||
data.writeByte(placeQueue.size == 0 ? -1 : placeQueue.last().recipe.id);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void read(DataInput data, long time) throws IOException {
|
public void read(DataInput data, long time) throws IOException {
|
||||||
super.read(data, time);
|
super.read(data, time);
|
||||||
int mined = data.readInt();
|
int mined = data.readInt();
|
||||||
int pp = data.readInt();
|
|
||||||
byte rid = data.readByte();
|
readBuilding(data);
|
||||||
|
|
||||||
if(mined != -1){
|
if(mined != -1){
|
||||||
mineTile = world.tile(mined);
|
mineTile = world.tile(mined);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(pp != -1){
|
|
||||||
Tile tile = world.tile(pp);
|
|
||||||
placeQueue.clear();
|
|
||||||
placeQueue.addLast(new BuildRequest(tile.x, tile.y, tile.getRotation(), Recipe.getByID(rid)));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public final UnitState
|
public final UnitState
|
||||||
@@ -255,7 +252,7 @@ public class Drone extends FlyingUnit implements BuilderTrait {
|
|||||||
|
|
||||||
//if it's missing requirements, try and mine them
|
//if it's missing requirements, try and mine them
|
||||||
for(ItemStack stack : entity.recipe.requirements){
|
for(ItemStack stack : entity.recipe.requirements){
|
||||||
if(!core.items.hasItem(stack.item, stack.amount) && toMine.contains(stack.item)){
|
if(!core.items.has(stack.item, stack.amount) && toMine.contains(stack.item)){
|
||||||
targetItem = stack.item;
|
targetItem = stack.item;
|
||||||
getPlaceQueue().clear();
|
getPlaceQueue().clear();
|
||||||
setState(mine);
|
setState(mine);
|
||||||
|
|||||||
@@ -17,8 +17,8 @@ public class WaveCreator{
|
|||||||
}},
|
}},
|
||||||
|
|
||||||
new SpawnGroup(UnitTypes.vtol){{
|
new SpawnGroup(UnitTypes.vtol){{
|
||||||
begin = 6;
|
begin = 12;
|
||||||
end = 8;
|
end = 14;
|
||||||
}},
|
}},
|
||||||
|
|
||||||
new SpawnGroup(UnitTypes.scout){{
|
new SpawnGroup(UnitTypes.scout){{
|
||||||
@@ -100,7 +100,7 @@ public class WaveCreator{
|
|||||||
}},
|
}},
|
||||||
|
|
||||||
new SpawnGroup(UnitTypes.scout){{
|
new SpawnGroup(UnitTypes.scout){{
|
||||||
begin = 25;
|
begin = 35;
|
||||||
spacing = 3;
|
spacing = 3;
|
||||||
unitAmount = 4;
|
unitAmount = 4;
|
||||||
groupAmount = 2;
|
groupAmount = 2;
|
||||||
|
|||||||
@@ -57,37 +57,42 @@ public class BlockRenderer{
|
|||||||
|
|
||||||
int expandr = 4;
|
int expandr = 4;
|
||||||
|
|
||||||
Graphics.surface(renderer.effectSurface);
|
Graphics.surface(renderer.effectSurface, true, false);
|
||||||
|
|
||||||
for(int x = -rangex - expandr; x <= rangex + expandr; x++){
|
int avgx = Mathf.scl(camera.position.x, tilesize);
|
||||||
for(int y = -rangey - expandr; y <= rangey + expandr; y++){
|
int avgy = Mathf.scl(camera.position.y, tilesize);
|
||||||
int worldx = Mathf.scl(camera.position.x, tilesize) + x;
|
|
||||||
int worldy = Mathf.scl(camera.position.y, tilesize) + y;
|
|
||||||
boolean expanded = (x < -rangex || x > rangex || y < -rangey || y > rangey);
|
|
||||||
|
|
||||||
Tile tile = world.tile(worldx, worldy);
|
int minx = Math.max(avgx - rangex - expandr, 0);
|
||||||
|
int miny = Math.max(avgy - rangey - expandr, 0);
|
||||||
|
int maxx = Math.min(world.width() - 1, avgx + rangex + expandr);
|
||||||
|
int maxy = Math.min(world.height() - 1, avgy+ rangey + expandr);
|
||||||
|
|
||||||
if(tile != null){
|
for(int x = minx; x <= maxx; x++){
|
||||||
|
for(int y = miny; y <= maxy; y++){
|
||||||
|
boolean expanded = (Math.abs(x - avgx) > rangex || Math.abs(y - avgy) > rangey);
|
||||||
|
|
||||||
|
synchronized (Tile.tileSetLock) {
|
||||||
|
Tile tile = world.rawTile(x, y);
|
||||||
|
|
||||||
|
if (tile != null) {
|
||||||
Block block = tile.block();
|
Block block = tile.block();
|
||||||
|
|
||||||
if(!expanded && block != Blocks.air && world.isAccessible(worldx, worldy)){
|
if (!expanded && block != Blocks.air && world.isAccessible(x, y)) {
|
||||||
synchronized (Tile.tileSetLock) {
|
|
||||||
tile.block().drawShadow(tile);
|
tile.block().drawShadow(tile);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if(!(block instanceof StaticBlock)){
|
if (!(block instanceof StaticBlock)) {
|
||||||
if(block != Blocks.air){
|
if (block != Blocks.air) {
|
||||||
if(!expanded){
|
if (!expanded) {
|
||||||
addRequest(tile, Layer.block);
|
addRequest(tile, Layer.block);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(block.expanded || !expanded){
|
if (block.expanded || !expanded) {
|
||||||
if(block.layer != null && block.isLayer(tile)){
|
if (block.layer != null && block.isLayer(tile)) {
|
||||||
addRequest(tile, block.layer);
|
addRequest(tile, block.layer);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(block.layer2 != null && block.isLayer2(tile)){
|
if (block.layer2 != null && block.isLayer2(tile)) {
|
||||||
addRequest(tile, block.layer2);
|
addRequest(tile, block.layer2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -96,6 +101,7 @@ public class BlockRenderer{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//TODO this actually isn't necessary
|
//TODO this actually isn't necessary
|
||||||
Draw.color(0, 0, 0, 0.15f);
|
Draw.color(0, 0, 0, 0.15f);
|
||||||
|
|||||||