Merge branch 'master' of https://github.com/Anuken/Mindustry into 7.0-features
Conflicts: core/src/mindustry/content/Blocks.java
This commit is contained in:
@@ -18,7 +18,7 @@ See [CONTRIBUTING](CONTRIBUTING.md).
|
|||||||
Bleeding-edge builds are generated automatically for every commit. You can see them [here](https://github.com/Anuken/MindustryBuilds/releases).
|
Bleeding-edge builds are generated automatically for every commit. You can see them [here](https://github.com/Anuken/MindustryBuilds/releases).
|
||||||
|
|
||||||
If you'd rather compile on your own, follow these instructions.
|
If you'd rather compile on your own, follow these instructions.
|
||||||
First, make sure you have [JDK 14](https://adoptopenjdk.net/) installed. **Other JDK versions will not work.** Open a terminal in the Mindustry directory and run the following commands:
|
First, make sure you have [JDK 14](https://adoptopenjdk.net/archive.html?variant=openjdk14&jvmVariant=hotspot) installed. **Other JDK versions will not work.** Open a terminal in the Mindustry directory and run the following commands:
|
||||||
|
|
||||||
### Windows
|
### Windows
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ import dalvik.system.*;
|
|||||||
import mindustry.*;
|
import mindustry.*;
|
||||||
import mindustry.game.Saves.*;
|
import mindustry.game.Saves.*;
|
||||||
import mindustry.io.*;
|
import mindustry.io.*;
|
||||||
import mindustry.mod.*;
|
|
||||||
import mindustry.net.*;
|
import mindustry.net.*;
|
||||||
import mindustry.ui.dialogs.*;
|
import mindustry.ui.dialogs.*;
|
||||||
|
|
||||||
@@ -67,9 +66,7 @@ public class AndroidLauncher extends AndroidApplication{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public rhino.Context getScriptContext(){
|
public rhino.Context getScriptContext(){
|
||||||
rhino.Context result = AndroidRhinoContext.enter(((Context)AndroidLauncher.this).getCacheDir());
|
return AndroidRhinoContext.enter(getCacheDir());
|
||||||
result.setClassShutter(Scripts::allowClass);
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -78,7 +75,27 @@ public class AndroidLauncher extends AndroidApplication{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ClassLoader loadJar(Fi jar, ClassLoader parent) throws Exception{
|
public ClassLoader loadJar(Fi jar, ClassLoader parent) throws Exception{
|
||||||
return new DexClassLoader(jar.file().getPath(), getFilesDir().getPath(), null, parent);
|
return new DexClassLoader(jar.file().getPath(), getFilesDir().getPath(), null, parent){
|
||||||
|
@Override
|
||||||
|
protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException{
|
||||||
|
//check for loaded state
|
||||||
|
Class<?> loadedClass = findLoadedClass(name);
|
||||||
|
if(loadedClass == null){
|
||||||
|
try{
|
||||||
|
//try to load own class first
|
||||||
|
loadedClass = findClass(name);
|
||||||
|
}catch(ClassNotFoundException e){
|
||||||
|
//use parent if not found
|
||||||
|
loadedClass = super.loadClass(name, resolve);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(resolve){
|
||||||
|
resolveClass(loadedClass);
|
||||||
|
}
|
||||||
|
return loadedClass;
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ import com.android.dx.dex.cf.*;
|
|||||||
import com.android.dx.dex.file.DexFile;
|
import com.android.dx.dex.file.DexFile;
|
||||||
import com.android.dx.merge.*;
|
import com.android.dx.merge.*;
|
||||||
import dalvik.system.*;
|
import dalvik.system.*;
|
||||||
|
import mindustry.*;
|
||||||
|
import mindustry.mod.*;
|
||||||
import rhino.*;
|
import rhino.*;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
@@ -30,23 +32,6 @@ public class AndroidRhinoContext{
|
|||||||
* @return a context prepared for android
|
* @return a context prepared for android
|
||||||
*/
|
*/
|
||||||
public static Context enter(File cacheDirectory){
|
public static Context enter(File cacheDirectory){
|
||||||
if(!SecurityController.hasGlobal())
|
|
||||||
SecurityController.initGlobal(new SecurityController(){
|
|
||||||
@Override
|
|
||||||
public GeneratedClassLoader createClassLoader(ClassLoader classLoader, Object o){
|
|
||||||
return Context.getCurrentContext().createClassLoader(classLoader);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object getDynamicSecurityDomain(Object o){
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object callWithDomain(Object o, Context context, Callable callable, Scriptable scriptable, Scriptable scriptable1, Object[] objects){
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
AndroidContextFactory factory;
|
AndroidContextFactory factory;
|
||||||
if(!ContextFactory.hasExplicitGlobal()){
|
if(!ContextFactory.hasExplicitGlobal()){
|
||||||
@@ -78,6 +63,16 @@ public class AndroidRhinoContext{
|
|||||||
initApplicationClassLoader(createClassLoader(AndroidContextFactory.class.getClassLoader()));
|
initApplicationClassLoader(createClassLoader(AndroidContextFactory.class.getClassLoader()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Context makeContext(){
|
||||||
|
Context ctx = super.makeContext();
|
||||||
|
ctx.setClassShutter(Scripts::allowClass);
|
||||||
|
if(Vars.mods != null){
|
||||||
|
ctx.setApplicationClassLoader(Vars.mods.mainLoader());
|
||||||
|
}
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a ClassLoader which is able to deal with bytecode
|
* Create a ClassLoader which is able to deal with bytecode
|
||||||
* @param parent the parent of the create classloader
|
* @param parent the parent of the create classloader
|
||||||
|
|||||||
@@ -143,7 +143,8 @@ public class EntityIO{
|
|||||||
if(sl) cont("if(!islocal)");
|
if(sl) cont("if(!islocal)");
|
||||||
|
|
||||||
if(sf){
|
if(sf){
|
||||||
st(field.name + lastSuf + " = this." + field.name);
|
//TODO + targetSuf may not give the right result, test it
|
||||||
|
st(field.name + lastSuf + " = this." + field.name + targetSuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
io(field.type, "this." + (sf ? field.name + targetSuf : field.name) + " = ");
|
io(field.type, "this." + (sf ? field.name + targetSuf : field.name) + " = ");
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ allprojects{
|
|||||||
if(!project.hasProperty("versionType")) versionType = 'official'
|
if(!project.hasProperty("versionType")) versionType = 'official'
|
||||||
appName = 'Mindustry'
|
appName = 'Mindustry'
|
||||||
steamworksVersion = '0b86023401880bb5e586bc404bedbaae9b1f1c94'
|
steamworksVersion = '0b86023401880bb5e586bc404bedbaae9b1f1c94'
|
||||||
rhinoVersion = '099aed6c82f8094b3ba39a273b8d2ba7bdcc6443'
|
rhinoVersion = '55bf0dac1cfa7770672fd26112512c733ca9d5dc'
|
||||||
|
|
||||||
loadVersionProps = {
|
loadVersionProps = {
|
||||||
return new Properties().with{p -> p.load(file('../core/assets/version.properties').newReader()); return p }
|
return new Properties().with{p -> p.load(file('../core/assets/version.properties').newReader()); return p }
|
||||||
|
|||||||
BIN
core/assets-raw/sprites/blocks/environment/metal-floor-4.png
Normal file
BIN
core/assets-raw/sprites/blocks/environment/metal-floor-4.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 369 B |
@@ -460,6 +460,7 @@ toolmode.drawteams = Draw Teams
|
|||||||
toolmode.drawteams.description = Draw teams instead of blocks.
|
toolmode.drawteams.description = Draw teams instead of blocks.
|
||||||
|
|
||||||
filters.empty = [lightgray]No filters! Add one with the button below.
|
filters.empty = [lightgray]No filters! Add one with the button below.
|
||||||
|
|
||||||
filter.distort = Distort
|
filter.distort = Distort
|
||||||
filter.noise = Noise
|
filter.noise = Noise
|
||||||
filter.enemyspawn = Enemy Spawn Select
|
filter.enemyspawn = Enemy Spawn Select
|
||||||
@@ -476,6 +477,7 @@ filter.clear = Clear
|
|||||||
filter.option.ignore = Ignore
|
filter.option.ignore = Ignore
|
||||||
filter.scatter = Scatter
|
filter.scatter = Scatter
|
||||||
filter.terrain = Terrain
|
filter.terrain = Terrain
|
||||||
|
|
||||||
filter.option.scale = Scale
|
filter.option.scale = Scale
|
||||||
filter.option.chance = Chance
|
filter.option.chance = Chance
|
||||||
filter.option.mag = Magnitude
|
filter.option.mag = Magnitude
|
||||||
@@ -675,6 +677,7 @@ unit.nobuild = [scarlet]Unit can't build
|
|||||||
lastaccessed = [lightgray]Last Accessed: {0}
|
lastaccessed = [lightgray]Last Accessed: {0}
|
||||||
block.unknown = [lightgray]???
|
block.unknown = [lightgray]???
|
||||||
|
|
||||||
|
stat.showinmap = <load map to show>
|
||||||
stat.description = Purpose
|
stat.description = Purpose
|
||||||
stat.input = Input
|
stat.input = Input
|
||||||
stat.output = Output
|
stat.output = Output
|
||||||
@@ -1164,8 +1167,9 @@ block.spore-cluster.name = Spore Cluster
|
|||||||
block.metal-floor.name = Metal Floor 1
|
block.metal-floor.name = Metal Floor 1
|
||||||
block.metal-floor-2.name = Metal Floor 2
|
block.metal-floor-2.name = Metal Floor 2
|
||||||
block.metal-floor-3.name = Metal Floor 3
|
block.metal-floor-3.name = Metal Floor 3
|
||||||
block.metal-floor-5.name = Metal Floor 4
|
block.metal-floor-4.name = Metal Floor 4
|
||||||
block.metal-floor-damaged.name = Metal Floor Damaged
|
block.metal-floor-5.name = Metal Floor 5
|
||||||
|
block.metal-floor-damaged.name = Damaged Metal Floor
|
||||||
block.dark-panel-1.name = Dark Panel 1
|
block.dark-panel-1.name = Dark Panel 1
|
||||||
block.dark-panel-2.name = Dark Panel 2
|
block.dark-panel-2.name = Dark Panel 2
|
||||||
block.dark-panel-3.name = Dark Panel 3
|
block.dark-panel-3.name = Dark Panel 3
|
||||||
|
|||||||
@@ -67,6 +67,14 @@ schematic.delete.confirm = Dieser Entwurf wird vollständig vernichtet.
|
|||||||
schematic.rename = Entwurf umbenennen
|
schematic.rename = Entwurf umbenennen
|
||||||
schematic.info = {0}x{1}, {2} Blöcke
|
schematic.info = {0}x{1}, {2} Blöcke
|
||||||
schematic.disabled = [scarlet]Entwürfe deaktiviert[]\nAuf dieser [accent]Karte[] oder [accent]Server[] dürfen keine Entwürfe verwendet werden.
|
schematic.disabled = [scarlet]Entwürfe deaktiviert[]\nAuf dieser [accent]Karte[] oder [accent]Server[] dürfen keine Entwürfe verwendet werden.
|
||||||
|
schematic.tags = Tags:
|
||||||
|
schematic.edittags = Tags bearbeiten
|
||||||
|
schematic.addtag = Tag hinzufügen
|
||||||
|
schematic.texttag = Text-Tag
|
||||||
|
schematic.icontag = Bild-Tag
|
||||||
|
schematic.renametag = Tag umbenennen
|
||||||
|
schematic.tagdelconfirm = Dieses Tag wirklich löschen?
|
||||||
|
schematic.tagexists = Dieses Tag gibt es schon.
|
||||||
|
|
||||||
stats = Statistiken
|
stats = Statistiken
|
||||||
stat.wave = Wellen besiegt:[accent] {0}
|
stat.wave = Wellen besiegt:[accent] {0}
|
||||||
@@ -306,7 +314,6 @@ data.exported = Daten exportiert.
|
|||||||
data.invalid = Dies sind keine gültigen Spieldaten.
|
data.invalid = Dies sind keine gültigen Spieldaten.
|
||||||
data.import.confirm = Der Import von externen Daten wird [scarlet] alle[] deine gegenwärtigen Spieldaten löschen.\n[accent]Das kann nicht rückgängig gemacht werden![]\n\nSobald der Import abgeschlossen ist, wird dein Spiel sofort beendet.
|
data.import.confirm = Der Import von externen Daten wird [scarlet] alle[] deine gegenwärtigen Spieldaten löschen.\n[accent]Das kann nicht rückgängig gemacht werden![]\n\nSobald der Import abgeschlossen ist, wird dein Spiel sofort beendet.
|
||||||
quit.confirm = Willst du wirklich aufhören?
|
quit.confirm = Willst du wirklich aufhören?
|
||||||
quit.confirm.tutorial = Weißt du, was du tust?\nDu kannst das Tutorial unter[accent] Einstellungen->Spiel->Tutorial wiederholen[] erneut spielen.
|
|
||||||
loading = [accent]Wird geladen...
|
loading = [accent]Wird geladen...
|
||||||
reloading = [accent]Lade Mods neu...
|
reloading = [accent]Lade Mods neu...
|
||||||
saving = [accent]Speichere...
|
saving = [accent]Speichere...
|
||||||
@@ -477,6 +484,7 @@ filter.option.circle-scale = Kreisskalierung
|
|||||||
filter.option.octaves = Oktaven
|
filter.option.octaves = Oktaven
|
||||||
filter.option.falloff = Rückgang
|
filter.option.falloff = Rückgang
|
||||||
filter.option.angle = Winkel
|
filter.option.angle = Winkel
|
||||||
|
filter.option.rotate = Drehung
|
||||||
filter.option.amount = Menge
|
filter.option.amount = Menge
|
||||||
filter.option.block = Block
|
filter.option.block = Block
|
||||||
filter.option.floor = Boden
|
filter.option.floor = Boden
|
||||||
@@ -498,6 +506,7 @@ load = Laden
|
|||||||
save = Speichern
|
save = Speichern
|
||||||
fps = FPS: {0}
|
fps = FPS: {0}
|
||||||
ping = Ping: {0}ms
|
ping = Ping: {0}ms
|
||||||
|
tps = TPS: {0}
|
||||||
memory = Arbeitsspeicher: {0}mb
|
memory = Arbeitsspeicher: {0}mb
|
||||||
memory2 = Arbeitsspeicher:\n {0}mb +\n {1}mb
|
memory2 = Arbeitsspeicher:\n {0}mb +\n {1}mb
|
||||||
language.restart = Starte dein Spiel neu, um die Spracheinstellungen zu übernehmen.
|
language.restart = Starte dein Spiel neu, um die Spracheinstellungen zu übernehmen.
|
||||||
@@ -530,7 +539,7 @@ launch.from = Items werden von [accent]{0} []gestartet
|
|||||||
launch.destination = Ziel: {0}
|
launch.destination = Ziel: {0}
|
||||||
configure.invalid = Anzahl muss eine Zahl zwischen 0 und {0} sein.
|
configure.invalid = Anzahl muss eine Zahl zwischen 0 und {0} sein.
|
||||||
add = Hinzufügen...
|
add = Hinzufügen...
|
||||||
boss.health = Boss-Lebenspunkte
|
guardian = Boss
|
||||||
|
|
||||||
connectfail = [crimson] Verbindung zum Server konnte nicht hergestellt werden: [accent]{0}
|
connectfail = [crimson] Verbindung zum Server konnte nicht hergestellt werden: [accent]{0}
|
||||||
error.unreachable = Server nicht erreichbar.
|
error.unreachable = Server nicht erreichbar.
|
||||||
@@ -574,6 +583,7 @@ sector.attacked = Sektor [accent]{0}[white] wird angegriffen!
|
|||||||
sector.lost = Sektor [accent]{0}[white] verloren!
|
sector.lost = Sektor [accent]{0}[white] verloren!
|
||||||
#note: the missing space in the line below is intentional
|
#note: the missing space in the line below is intentional
|
||||||
sector.captured = Sektor [accent]{0}[white]erobert!
|
sector.captured = Sektor [accent]{0}[white]erobert!
|
||||||
|
sector.changeicon = Bild ändern
|
||||||
|
|
||||||
threat.low = Niedrig
|
threat.low = Niedrig
|
||||||
threat.medium = Mittel
|
threat.medium = Mittel
|
||||||
@@ -626,6 +636,7 @@ status.wet.name = Nass
|
|||||||
status.muddy.name = Schlammig
|
status.muddy.name = Schlammig
|
||||||
status.melting.name = Schmelzend
|
status.melting.name = Schmelzend
|
||||||
status.sapped.name = Schwächend
|
status.sapped.name = Schwächend
|
||||||
|
status.electrified.name = Elektrisch
|
||||||
status.spore-slowed.name = Sporen-verlangsamt
|
status.spore-slowed.name = Sporen-verlangsamt
|
||||||
status.tarred.name = Teerend
|
status.tarred.name = Teerend
|
||||||
status.overclock.name = Übertaktend
|
status.overclock.name = Übertaktend
|
||||||
@@ -654,6 +665,7 @@ settings.clearcampaignsaves.confirm = Möchtest du wirklich alle Kampagne-Speich
|
|||||||
paused = [accent]< Pausiert >
|
paused = [accent]< Pausiert >
|
||||||
clear = Leeren
|
clear = Leeren
|
||||||
banned = [scarlet]Verbannt
|
banned = [scarlet]Verbannt
|
||||||
|
unsupported.environment = [scarlet]Umgebung nicht unterstützt
|
||||||
yes = Ja
|
yes = Ja
|
||||||
no = Nein
|
no = Nein
|
||||||
info.title = Info
|
info.title = Info
|
||||||
@@ -682,8 +694,6 @@ stat.size = Größe
|
|||||||
stat.displaysize = Bildschirmgröße
|
stat.displaysize = Bildschirmgröße
|
||||||
stat.liquidcapacity = Flüssigkeitskapazität
|
stat.liquidcapacity = Flüssigkeitskapazität
|
||||||
stat.powerrange = Stromreichweite
|
stat.powerrange = Stromreichweite
|
||||||
stat.weapons = Waffen
|
|
||||||
stat.bullet = Geschoss
|
|
||||||
stat.linkrange = Verbindungsradius
|
stat.linkrange = Verbindungsradius
|
||||||
stat.instructions = Befehle
|
stat.instructions = Befehle
|
||||||
stat.powerconnections = Maximale Stromverbindungen
|
stat.powerconnections = Maximale Stromverbindungen
|
||||||
@@ -694,6 +704,9 @@ stat.memorycapacity = Speicherkapazität
|
|||||||
stat.basepowergeneration = Basis-Stromerzeugung
|
stat.basepowergeneration = Basis-Stromerzeugung
|
||||||
stat.productiontime = Produktionszeit
|
stat.productiontime = Produktionszeit
|
||||||
stat.repairtime = Zeit zur vollständigen Reparatur
|
stat.repairtime = Zeit zur vollständigen Reparatur
|
||||||
|
stat.repairspeed = Heilungsgeschwindigkeit
|
||||||
|
stat.weapons = Waffen
|
||||||
|
stat.bullet = Geschoss
|
||||||
stat.speedincrease = Geschwindigkeitserhöhung
|
stat.speedincrease = Geschwindigkeitserhöhung
|
||||||
stat.range = Reichweite
|
stat.range = Reichweite
|
||||||
stat.drilltier = Abbaubare Erze
|
stat.drilltier = Abbaubare Erze
|
||||||
@@ -737,13 +750,15 @@ stat.speedmultiplier = Geschwindigkeit-Multiplikator
|
|||||||
stat.reloadmultiplier = Nachlade-Multiplikator
|
stat.reloadmultiplier = Nachlade-Multiplikator
|
||||||
stat.buildspeedmultiplier = Baugeschwindigkeit-Multiplikator
|
stat.buildspeedmultiplier = Baugeschwindigkeit-Multiplikator
|
||||||
stat.reactive = Reagiert mit
|
stat.reactive = Reagiert mit
|
||||||
|
stat.healing = Heilung
|
||||||
|
|
||||||
ability.forcefield = Kraftfeld
|
ability.forcefield = Kraftfeld
|
||||||
ability.repairfield = Heilungsfeld
|
ability.repairfield = Heilungsfeld
|
||||||
ability.statusfield = Statusfeld
|
ability.statusfield = {0} Statusfeld
|
||||||
ability.unitspawn = {0} Fabrik
|
ability.unitspawn = {0} Fabrik
|
||||||
ability.shieldregenfield = Schild-regenerations-Feld
|
ability.shieldregenfield = Schild-regenerations-Feld
|
||||||
ability.movelightning = Bewegungsblitze
|
ability.movelightning = Bewegungsblitze
|
||||||
|
ability.energyfield = Energiefeld: [accent]{0}[] Schaden ~ [accent]{1}[] Blöcke / [accent]{2}[] Ziele
|
||||||
|
|
||||||
bar.drilltierreq = Besserer Bohrer benötigt
|
bar.drilltierreq = Besserer Bohrer benötigt
|
||||||
bar.noresources = Fehlende Ressourcen
|
bar.noresources = Fehlende Ressourcen
|
||||||
@@ -766,6 +781,7 @@ bar.power = Strom
|
|||||||
bar.progress = Baufortschritt
|
bar.progress = Baufortschritt
|
||||||
bar.input = Input
|
bar.input = Input
|
||||||
bar.output = Output
|
bar.output = Output
|
||||||
|
bar.strength = [stat]{0}[lightgray]x Stärke
|
||||||
|
|
||||||
units.processorcontrol = [lightgray]Prozessorgesteuert
|
units.processorcontrol = [lightgray]Prozessorgesteuert
|
||||||
|
|
||||||
@@ -974,6 +990,7 @@ rules.wavetimer = Wellen-Timer
|
|||||||
rules.waves = Wellen
|
rules.waves = Wellen
|
||||||
rules.attack = Angriff-Modus
|
rules.attack = Angriff-Modus
|
||||||
rules.buildai = KI kann bauen
|
rules.buildai = KI kann bauen
|
||||||
|
rules.corecapture = Kern nach Zerstörung einnehmen
|
||||||
rules.enemyCheat = Unbegrenzte Ressourcen für die KI (Rotes Team)
|
rules.enemyCheat = Unbegrenzte Ressourcen für die KI (Rotes Team)
|
||||||
rules.blockhealthmultiplier = Block-Lebenspunkte-Multiplikator
|
rules.blockhealthmultiplier = Block-Lebenspunkte-Multiplikator
|
||||||
rules.blockdamagemultiplier = Block-Schaden-Multiplikator
|
rules.blockdamagemultiplier = Block-Schaden-Multiplikator
|
||||||
@@ -1029,6 +1046,7 @@ item.blast-compound.name = Explosive Mischung
|
|||||||
item.pyratite.name = Pyratit
|
item.pyratite.name = Pyratit
|
||||||
item.metaglass.name = Metaglas
|
item.metaglass.name = Metaglas
|
||||||
item.scrap.name = Schrott
|
item.scrap.name = Schrott
|
||||||
|
|
||||||
liquid.water.name = Wasser
|
liquid.water.name = Wasser
|
||||||
liquid.slag.name = Schlacke
|
liquid.slag.name = Schlacke
|
||||||
liquid.oil.name = Öl
|
liquid.oil.name = Öl
|
||||||
@@ -1060,6 +1078,11 @@ unit.minke.name = Minke
|
|||||||
unit.bryde.name = Bryde
|
unit.bryde.name = Bryde
|
||||||
unit.sei.name = Sei
|
unit.sei.name = Sei
|
||||||
unit.omura.name = Omura
|
unit.omura.name = Omura
|
||||||
|
unit.retusa.name = Retusa
|
||||||
|
unit.oxynoe.name = Oxynoe
|
||||||
|
unit.cyerce.name = Cyerce
|
||||||
|
unit.aegires.name = Aegires
|
||||||
|
unit.navanax.name = Navanax
|
||||||
unit.alpha.name = Alpha
|
unit.alpha.name = Alpha
|
||||||
unit.beta.name = Beta
|
unit.beta.name = Beta
|
||||||
unit.gamma.name = Gamma
|
unit.gamma.name = Gamma
|
||||||
@@ -1120,6 +1143,7 @@ block.sand-water.name = Sandiges Wasser
|
|||||||
block.darksand-water.name = Dunkles sandiges Wasser
|
block.darksand-water.name = Dunkles sandiges Wasser
|
||||||
block.char.name = Holzkohle
|
block.char.name = Holzkohle
|
||||||
block.dacite.name = Dazit
|
block.dacite.name = Dazit
|
||||||
|
block.rhyolite.name = Rhyolith
|
||||||
block.dacite-wall.name = Dazitwand
|
block.dacite-wall.name = Dazitwand
|
||||||
block.dacite-boulder.name = Dazitgeröll
|
block.dacite-boulder.name = Dazitgeröll
|
||||||
block.ice-snow.name = Eisschnee
|
block.ice-snow.name = Eisschnee
|
||||||
@@ -1203,7 +1227,7 @@ block.pneumatic-drill.name = Pneumatischer Bohrer
|
|||||||
block.laser-drill.name = Laser-Bohrer
|
block.laser-drill.name = Laser-Bohrer
|
||||||
block.water-extractor.name = Wasser-Extraktor
|
block.water-extractor.name = Wasser-Extraktor
|
||||||
block.cultivator.name = Kultivierer
|
block.cultivator.name = Kultivierer
|
||||||
block.conduit.name = Leitungsrohr
|
block.conduit.name = Kanal
|
||||||
block.mechanical-pump.name = Mechanische Pumpe
|
block.mechanical-pump.name = Mechanische Pumpe
|
||||||
block.item-source.name = Materialquelle
|
block.item-source.name = Materialquelle
|
||||||
block.item-void.name = Materialschlucker
|
block.item-void.name = Materialschlucker
|
||||||
@@ -1227,6 +1251,7 @@ block.solar-panel.name = Solarpanel
|
|||||||
block.solar-panel-large.name = Großes Solarpanel
|
block.solar-panel-large.name = Großes Solarpanel
|
||||||
block.oil-extractor.name = Öl-Extraktor
|
block.oil-extractor.name = Öl-Extraktor
|
||||||
block.repair-point.name = Reparaturpunkt
|
block.repair-point.name = Reparaturpunkt
|
||||||
|
block.repair-turret.name = Reparaturstation
|
||||||
block.pulse-conduit.name = Impulskanal
|
block.pulse-conduit.name = Impulskanal
|
||||||
block.plated-conduit.name = Gepanzerter Kanal
|
block.plated-conduit.name = Gepanzerter Kanal
|
||||||
block.phase-conduit.name = Phasenkanal
|
block.phase-conduit.name = Phasenkanal
|
||||||
@@ -1269,6 +1294,12 @@ block.exponential-reconstructor.name = Exponentieller Rekonstrukteur
|
|||||||
block.tetrative-reconstructor.name = Tetrativer Rekonstrukteur
|
block.tetrative-reconstructor.name = Tetrativer Rekonstrukteur
|
||||||
block.payload-conveyor.name = Einheitenförderband
|
block.payload-conveyor.name = Einheitenförderband
|
||||||
block.payload-router.name = Einheitenverteiler
|
block.payload-router.name = Einheitenverteiler
|
||||||
|
block.duct.name = Rohrleitung
|
||||||
|
block.duct-router.name = Rohrleitungsverteiler
|
||||||
|
block.duct-bridge.name = Rohrleitungsbrücke
|
||||||
|
block.payload-propulsion-tower.name = Frachtantriebsturm
|
||||||
|
block.payload-void.name = Frachtschlucker
|
||||||
|
block.payload-source.name = Frachtquelle
|
||||||
block.disassembler.name = Großer Trenner
|
block.disassembler.name = Großer Trenner
|
||||||
block.silicon-crucible.name = Silizium Schmelztiegel
|
block.silicon-crucible.name = Silizium Schmelztiegel
|
||||||
block.overdrive-dome.name = Beschleunigungs-Maschine
|
block.overdrive-dome.name = Beschleunigungs-Maschine
|
||||||
@@ -1287,13 +1318,12 @@ block.large-logic-display.name = Großer Logik-Bildschirm
|
|||||||
block.memory-cell.name = Speicherzelle
|
block.memory-cell.name = Speicherzelle
|
||||||
block.memory-bank.name = Große Speicherzelle
|
block.memory-bank.name = Große Speicherzelle
|
||||||
|
|
||||||
team.blue.name = Blau
|
team.blue.name = blau
|
||||||
team.crux.name = Rot
|
team.crux.name = rot
|
||||||
team.sharded.name = Orange
|
team.sharded.name = gelb
|
||||||
team.orange.name = Orange
|
team.derelict.name = derelikt
|
||||||
team.derelict.name = Derelikt
|
team.green.name = grün
|
||||||
team.green.name = Grün
|
team.purple.name = lila
|
||||||
team.purple.name = Lila
|
|
||||||
|
|
||||||
hint.skip = Überspringen
|
hint.skip = Überspringen
|
||||||
hint.desktopMove = Drücke [accent][[WASD][], um dich zu bewegen.
|
hint.desktopMove = Drücke [accent][[WASD][], um dich zu bewegen.
|
||||||
@@ -1311,6 +1341,7 @@ hint.placeConveyor.mobile = Förderbänder bewegen Materialien zwischen verschie
|
|||||||
hint.placeTurret = Platziere \uf861 [accent]Geschütze[], um deine Basis vor Gegnern zu beschützen.\n\nGeschütze benötigen Munition - in diesem Fall \uf838Kupfer.\nBenutze Bohrer und Förderbänder, um dies zu besorgen.
|
hint.placeTurret = Platziere \uf861 [accent]Geschütze[], um deine Basis vor Gegnern zu beschützen.\n\nGeschütze benötigen Munition - in diesem Fall \uf838Kupfer.\nBenutze Bohrer und Förderbänder, um dies zu besorgen.
|
||||||
hint.breaking = Benutze [accent]Rechtsklick[] und bewege deine Maus, um zu zerstören.
|
hint.breaking = Benutze [accent]Rechtsklick[] und bewege deine Maus, um zu zerstören.
|
||||||
hint.breaking.mobile = Aktiviere den \ue817 [accent]Hammer[] unten rechts und tippe, um Blöcke zu zerstören.\n\nHalte deinen Finger auf dem Bildschirm, um eine Fläche auszuwählen.
|
hint.breaking.mobile = Aktiviere den \ue817 [accent]Hammer[] unten rechts und tippe, um Blöcke zu zerstören.\n\nHalte deinen Finger auf dem Bildschirm, um eine Fläche auszuwählen.
|
||||||
|
hint.blockInfo = Genauere Blockinformationen können im [accent]Baumenü[] rechts beim [accent][[?][]-Symbol gefunden werden.
|
||||||
hint.research = Nehme den \ue875 [accent]Forschen[]-Knopf um neue Technologien zu erforschen.
|
hint.research = Nehme den \ue875 [accent]Forschen[]-Knopf um neue Technologien zu erforschen.
|
||||||
hint.research.mobile = Nehme den \ue875 [accent]Forschen[]-Knopf im \ue88c [accent]Menü[], um neue Technologien zu erforschen.
|
hint.research.mobile = Nehme den \ue875 [accent]Forschen[]-Knopf im \ue88c [accent]Menü[], um neue Technologien zu erforschen.
|
||||||
hint.unitControl = Halte [accent][[L-STRG][] und [accent]klicke[], um alliierte Einheiten oder Geschütze zu steuern.
|
hint.unitControl = Halte [accent][[L-STRG][] und [accent]klicke[], um alliierte Einheiten oder Geschütze zu steuern.
|
||||||
@@ -1344,7 +1375,7 @@ item.graphite.description = Wird als Munition oder elektrischer Leiter eingesetz
|
|||||||
item.sand.description = Nützlich für die Herstellung vieler anderer Materialien.
|
item.sand.description = Nützlich für die Herstellung vieler anderer Materialien.
|
||||||
item.coal.description = Kann als Brennstoff oder zur Herstellung anderer Materialien verwendet werden.
|
item.coal.description = Kann als Brennstoff oder zur Herstellung anderer Materialien verwendet werden.
|
||||||
item.coal.details = Scheint versteinerte Pflanzenmasse zu sein, die sich schon lange vor dem Seeding gebildet hat.
|
item.coal.details = Scheint versteinerte Pflanzenmasse zu sein, die sich schon lange vor dem Seeding gebildet hat.
|
||||||
item.titanium.description = Wird im Flüssigkeitsbereich, im Bohrerbereich und für Flugzeuge vielfältig eingesetzt.
|
item.titanium.description = Wird für Flüssigkeiten, Bohrer und Fabriken vielfältig eingesetzt.
|
||||||
item.thorium.description = Wird als festes Baumaterial oder radioaktiver Kraftstoff verwendet.
|
item.thorium.description = Wird als festes Baumaterial oder radioaktiver Kraftstoff verwendet.
|
||||||
item.scrap.description = Wird in Pulverisierer und Schmelzer zu anderen Materialien bearbeitet.
|
item.scrap.description = Wird in Pulverisierer und Schmelzer zu anderen Materialien bearbeitet.
|
||||||
item.scrap.details = Übriggebliebene Reste alter Blöcke oder Einheiten.
|
item.scrap.details = Übriggebliebene Reste alter Blöcke oder Einheiten.
|
||||||
@@ -1565,7 +1596,7 @@ logic.nounitbuild = [red]Logik, die Blöcke baut, ist hier nicht erlaubt.
|
|||||||
lenum.type = Englischer Name eines Blocks / einer Einheit. Ein Verteiler gibt [accent]@router[] wieder.\nKein string.
|
lenum.type = Englischer Name eines Blocks / einer Einheit. Ein Verteiler gibt [accent]@router[] wieder.\nKein string.
|
||||||
lenum.shoot = Schießt auf eine Position.
|
lenum.shoot = Schießt auf eine Position.
|
||||||
lenum.shootp = Schießt auf eine Einheit / einen Block und sagt deren Position voraus.
|
lenum.shootp = Schießt auf eine Einheit / einen Block und sagt deren Position voraus.
|
||||||
lenum.configure = Blockkonfiguration, z.B. das ausgewählte Item in einem Sortierer.
|
lenum.config = Blockkonfiguration, z.B. das ausgewählte Item in einem Sortierer.
|
||||||
lenum.enabled = Ob der Block an oder aus ist.
|
lenum.enabled = Ob der Block an oder aus ist.
|
||||||
|
|
||||||
laccess.color = Illuminiererfarbe.
|
laccess.color = Illuminiererfarbe.
|
||||||
@@ -1573,6 +1604,7 @@ laccess.controller = Einheitensteurer. Gibt "processor" zurück, wenn die Einhei
|
|||||||
laccess.dead = Ob ein Block / eine Einheit tot oder nicht mehr gültig ist.
|
laccess.dead = Ob ein Block / eine Einheit tot oder nicht mehr gültig ist.
|
||||||
laccess.controlled = Gibt zurück:\n[accent]@ctrlProcessor[] wenn die Einheit prozessorgesteuert ist\n[accent]@ctrlPlayer[] wenn die Einheit / der Block von einem Spieler gesteuert wird\n[accent]@ctrlFormation[] wenn die Einheit Teil einer Formation ist\nSonst 0.
|
laccess.controlled = Gibt zurück:\n[accent]@ctrlProcessor[] wenn die Einheit prozessorgesteuert ist\n[accent]@ctrlPlayer[] wenn die Einheit / der Block von einem Spieler gesteuert wird\n[accent]@ctrlFormation[] wenn die Einheit Teil einer Formation ist\nSonst 0.
|
||||||
laccess.commanded = [red]Veraltet. Wird bald entfernt![]\nBenutze stattdessen [accent]controlled[].
|
laccess.commanded = [red]Veraltet. Wird bald entfernt![]\nBenutze stattdessen [accent]controlled[].
|
||||||
|
laccess.progress = Fortschritt, von 0 bis 1.\nGibt Produktion, Nachladestatus or Baufortschritt zurück.
|
||||||
|
|
||||||
graphicstype.stroke = Setzt die Linienbreite fest.
|
graphicstype.stroke = Setzt die Linienbreite fest.
|
||||||
graphicstype.line = Zeichnet eine Linie.
|
graphicstype.line = Zeichnet eine Linie.
|
||||||
@@ -1602,11 +1634,17 @@ lenum.xor = Bitwise XOR.
|
|||||||
|
|
||||||
lenum.min = Die Größte von zwei Zahlen.
|
lenum.min = Die Größte von zwei Zahlen.
|
||||||
lenum.max = Die Kleinste von zwei Zahlen.
|
lenum.max = Die Kleinste von zwei Zahlen.
|
||||||
lenum.angle = Angle of vector in degrees.
|
lenum.angle = Vektorwinkel in Grad.
|
||||||
lenum.len = Length of vector.
|
lenum.len = Vektorlänge.
|
||||||
|
|
||||||
lenum.sin = Sinus in Grad.
|
lenum.sin = Sinus in Grad.
|
||||||
lenum.cos = Cosinus in Grad.
|
lenum.cos = Cosinus in Grad.
|
||||||
lenum.tan = Tangens in Grad.
|
lenum.tan = Tangens in Grad.
|
||||||
|
|
||||||
|
lenum.asin = Arkussinus in Grad.
|
||||||
|
lenum.acos = Arkuskosinus in Grad.
|
||||||
|
lenum.atan = Arkustangens in Grad.
|
||||||
|
|
||||||
#not a typo, look up 'range notation'
|
#not a typo, look up 'range notation'
|
||||||
lenum.rand = Zufällige Zahl zwischen [0, <wert>).
|
lenum.rand = Zufällige Zahl zwischen [0, <wert>).
|
||||||
lenum.log = Logarithmus (ln).
|
lenum.log = Logarithmus (ln).
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ be.ignore = Abaikan
|
|||||||
be.noupdates = Tidak ada pembaruan yang ditemukan.
|
be.noupdates = Tidak ada pembaruan yang ditemukan.
|
||||||
be.check = Cek versi baru
|
be.check = Cek versi baru
|
||||||
|
|
||||||
mod.featured.dialog.title = Browser Mod
|
mods.browser = Browser Mod
|
||||||
mods.browser.selected = Mod yang Dipilih
|
mods.browser.selected = Mod yang Dipilih
|
||||||
mods.browser.add = Pasang mod
|
mods.browser.add = Pasang mod
|
||||||
mods.browser.reinstall = Pasang kembali
|
mods.browser.reinstall = Pasang kembali
|
||||||
@@ -67,6 +67,14 @@ schematic.delete.confirm = Bagan ini akan benar-benar dihapus.
|
|||||||
schematic.rename = Ganti Nama Bagan
|
schematic.rename = Ganti Nama Bagan
|
||||||
schematic.info = {0}x{1}, {2} blok
|
schematic.info = {0}x{1}, {2} blok
|
||||||
schematic.disabled = [scarlet]Bagan dilarang[]\nAnda tidak diperbolehkan untuk menggunakan bagan di [accent]peta[] atau [accent]server ini.
|
schematic.disabled = [scarlet]Bagan dilarang[]\nAnda tidak diperbolehkan untuk menggunakan bagan di [accent]peta[] atau [accent]server ini.
|
||||||
|
schematic.tags = Tanda:
|
||||||
|
schematic.edittags = Ubah Tanda
|
||||||
|
schematic.addtag = Tambah Tanda
|
||||||
|
schematic.texttag = Tanda Tulisan
|
||||||
|
schematic.icontag = Tanda Ikon
|
||||||
|
schematic.renametag = Ubah Nama Tanda
|
||||||
|
schematic.tagdelconfirm = Hapus tanda ini sepenuhnya?
|
||||||
|
schematic.tagexists = Tanda ini sudah ada.
|
||||||
|
|
||||||
stats = Statistik
|
stats = Statistik
|
||||||
stat.wave = Gelombang Terkalahkan:[accent] {0}
|
stat.wave = Gelombang Terkalahkan:[accent] {0}
|
||||||
@@ -530,7 +538,7 @@ launch.from = Meluncurkan Dari: [accent]{0}
|
|||||||
launch.destination = Destinasi: {0}
|
launch.destination = Destinasi: {0}
|
||||||
configure.invalid = Jumlah harus berupa angka diantara 0 dan {0}.
|
configure.invalid = Jumlah harus berupa angka diantara 0 dan {0}.
|
||||||
add = Menambahkan...
|
add = Menambahkan...
|
||||||
boss.health = Darah Penjaga
|
guardian = Penjaga
|
||||||
|
|
||||||
connectfail = [scarlet]Gagal menyambung ke server:\n\n[accent]{0}
|
connectfail = [scarlet]Gagal menyambung ke server:\n\n[accent]{0}
|
||||||
error.unreachable = Server tak terjangkau.\nApakah alamatnya benar?
|
error.unreachable = Server tak terjangkau.\nApakah alamatnya benar?
|
||||||
@@ -975,6 +983,7 @@ rules.wavetimer = Pengaturan Waktu Gelombang
|
|||||||
rules.waves = Gelombang
|
rules.waves = Gelombang
|
||||||
rules.attack = Mode Penyerangan
|
rules.attack = Mode Penyerangan
|
||||||
rules.buildai = Bangunan A.I.
|
rules.buildai = Bangunan A.I.
|
||||||
|
rules.corecapture = Tangkap Inti Saat Kehancuran
|
||||||
rules.enemyCheat = Sumber Daya A.I. Musuh (Tim Merah) Tak Terbatas
|
rules.enemyCheat = Sumber Daya A.I. Musuh (Tim Merah) Tak Terbatas
|
||||||
rules.blockhealthmultiplier = Penggandaan Darah Blok
|
rules.blockhealthmultiplier = Penggandaan Darah Blok
|
||||||
rules.blockdamagemultiplier = Penggandaan Kekuatan Blok
|
rules.blockdamagemultiplier = Penggandaan Kekuatan Blok
|
||||||
@@ -1304,7 +1313,6 @@ block.memory-bank.name = Bank Memori
|
|||||||
team.blue.name = biru
|
team.blue.name = biru
|
||||||
team.crux.name = merah
|
team.crux.name = merah
|
||||||
team.sharded.name = kuning
|
team.sharded.name = kuning
|
||||||
team.orange.name = jingga
|
|
||||||
team.derelict.name = abu-abu
|
team.derelict.name = abu-abu
|
||||||
team.green.name = hijau
|
team.green.name = hijau
|
||||||
team.purple.name = ungu
|
team.purple.name = ungu
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ link.google-play.description = Página da Google Play store
|
|||||||
link.f-droid.description = Listamento de catalogo do F-Droid
|
link.f-droid.description = Listamento de catalogo do F-Droid
|
||||||
link.wiki.description = Wiki oficial do Mindustry
|
link.wiki.description = Wiki oficial do Mindustry
|
||||||
link.suggestions.description = Sugira novos conteúdos
|
link.suggestions.description = Sugira novos conteúdos
|
||||||
|
link.bug.description = Achou algum? Reporte-o aqui
|
||||||
linkfail = Falha ao abrir o link\nO Url foi copiado para a área de transferência.
|
linkfail = Falha ao abrir o link\nO Url foi copiado para a área de transferência.
|
||||||
screenshot = Screenshot salvo para {0}
|
screenshot = Screenshot salvo para {0}
|
||||||
screenshot.invalid = Este mapa é grande demais, você pode estar potencialmente sem memória suficiente para captura de tela.
|
screenshot.invalid = Este mapa é grande demais, você pode estar potencialmente sem memória suficiente para captura de tela.
|
||||||
@@ -36,7 +37,7 @@ be.update.confirm = Baixar e reiniciar o jogo agora?
|
|||||||
be.updating = Atualizando...
|
be.updating = Atualizando...
|
||||||
be.ignore = Ignorar
|
be.ignore = Ignorar
|
||||||
be.noupdates = Nenhuma atualização encontrada.
|
be.noupdates = Nenhuma atualização encontrada.
|
||||||
be.check = Cheque por atualizações
|
be.check = Checar por atualizações
|
||||||
|
|
||||||
schematic = Esquema
|
schematic = Esquema
|
||||||
schematic.add = Salvar esquema
|
schematic.add = Salvar esquema
|
||||||
@@ -56,6 +57,14 @@ schematic.delete.confirm = Esse esquema será apagado. Tem certeza?
|
|||||||
schematic.rename = Renomear esquema
|
schematic.rename = Renomear esquema
|
||||||
schematic.info = {0}x{1}, {2} blocos
|
schematic.info = {0}x{1}, {2} blocos
|
||||||
schematic.disabled = [scarlet]Esquemas desativados[]\nVocê precisa de permissão para usar esquemas nesse [accent]mapa[] ou [accent]servidor.
|
schematic.disabled = [scarlet]Esquemas desativados[]\nVocê precisa de permissão para usar esquemas nesse [accent]mapa[] ou [accent]servidor.
|
||||||
|
schematic.tags = Tags:
|
||||||
|
schematic.edittags = Editar Tags
|
||||||
|
schematic.addtag = Adicionar Tag
|
||||||
|
schematic.texttag = Tag de Texto
|
||||||
|
schematic.icontag = Tag de Ícone
|
||||||
|
schematic.renametag = Renomear Tag
|
||||||
|
schematic.tagdelconfirm = Deletar essa tag completamente?
|
||||||
|
schematic.tagexists = Essa tag já existe.
|
||||||
|
|
||||||
stat.wave = Hordas derrotadas:[accent] {0}
|
stat.wave = Hordas derrotadas:[accent] {0}
|
||||||
stat.enemiesDestroyed = Inimigos destruídos:[accent] {0}
|
stat.enemiesDestroyed = Inimigos destruídos:[accent] {0}
|
||||||
@@ -267,6 +276,9 @@ cancel = Cancelar
|
|||||||
openlink = Abrir Link
|
openlink = Abrir Link
|
||||||
copylink = Copiar link
|
copylink = Copiar link
|
||||||
back = Voltar
|
back = Voltar
|
||||||
|
crash.export = Exportar Históricos de Crashes.
|
||||||
|
crash.none = Nenhum Histórico de Crashes Encontrado.
|
||||||
|
crash.exported = Históricos de Crashes Exportado.
|
||||||
data.export = Exportar dados
|
data.export = Exportar dados
|
||||||
data.import = Importar dados
|
data.import = Importar dados
|
||||||
data.openfolder = Abrir pasta de dados
|
data.openfolder = Abrir pasta de dados
|
||||||
@@ -331,7 +343,7 @@ editor.generation = Geração:
|
|||||||
editor.ingame = Editar em jogo
|
editor.ingame = Editar em jogo
|
||||||
editor.publish.workshop = Publicar na oficina
|
editor.publish.workshop = Publicar na oficina
|
||||||
editor.newmap = Novo mapa
|
editor.newmap = Novo mapa
|
||||||
editor.center = Center
|
editor.center = Centro
|
||||||
workshop = Oficina
|
workshop = Oficina
|
||||||
waves.title = Hordas
|
waves.title = Hordas
|
||||||
waves.remove = Remover
|
waves.remove = Remover
|
||||||
@@ -472,7 +484,7 @@ mapeditor = Editor de mapa
|
|||||||
abandon = Abandonar
|
abandon = Abandonar
|
||||||
abandon.text = Esta zona e todos os seus recursos serão perdidos para o inimigo.
|
abandon.text = Esta zona e todos os seus recursos serão perdidos para o inimigo.
|
||||||
locked = Trancado
|
locked = Trancado
|
||||||
complete = [lightgray]Completo:
|
complete = [lightgray]Complete:
|
||||||
requirement.wave = Alcançar a Horda {0} em {1}
|
requirement.wave = Alcançar a Horda {0} em {1}
|
||||||
requirement.core = Destruir o núcleo inimigo em {0}
|
requirement.core = Destruir o núcleo inimigo em {0}
|
||||||
requirement.research = Pesquise {0}
|
requirement.research = Pesquise {0}
|
||||||
@@ -531,26 +543,50 @@ planet.sun.name = Sol
|
|||||||
sector.groundZero.name = Marco Zero
|
sector.groundZero.name = Marco Zero
|
||||||
sector.craters.name = As Crateras
|
sector.craters.name = As Crateras
|
||||||
sector.frozenForest.name = Floresta Congelada
|
sector.frozenForest.name = Floresta Congelada
|
||||||
|
sector.biomassFacility.name = Instalação de Síntese de Biomassa
|
||||||
sector.ruinousShores.name = Costas Ruinosas
|
sector.ruinousShores.name = Costas Ruinosas
|
||||||
|
sector.windsweptIslands.name = Ilhas Ventadas
|
||||||
sector.stainedMountains.name = Montanhas Manchadas
|
sector.stainedMountains.name = Montanhas Manchadas
|
||||||
sector.desolateRift.name = Fenda Desolada
|
sector.desolateRift.name = Fenda Desolada
|
||||||
sector.nuclearComplex.name = Complexo de Prodção Nuclear
|
sector.nuclearComplex.name = Complexo de Produção Nuclear
|
||||||
sector.overgrowth.name = Supercrescimento
|
sector.overgrowth.name = Supercrescimento
|
||||||
sector.tarFields.name = Campos de Piche
|
sector.tarFields.name = Campos de Petróleo
|
||||||
sector.saltFlats.name = Planícies de Sal
|
sector.saltFlats.name = Planícies de Sal
|
||||||
sector.fungalPass.name = Passagem Fúngica
|
sector.fungalPass.name = Passagem Fúngica
|
||||||
|
sector.impact0078.name = Impacto 0078
|
||||||
|
sector.extractionOutpost.name = Posto Avançado de Extração
|
||||||
|
sector.planetaryTerminal.name = Terminal de Lançamento Planetário.
|
||||||
|
|
||||||
sector.groundZero.description = Um lugar bom para recomeçar. Baixa ameaça inimiga. Poucos recursos.\nConsiga o máximo possível de chumbo e cobre.\nContinue.
|
sector.groundZero.description = Um lugar bom para recomeçar. Baixa ameaça inimiga. Poucos recursos.\nConsiga o máximo possível de chumbo e cobre.\nContinue.
|
||||||
sector.frozenForest.description = Mesmo aqui, perto das montanhas, os esporos se espalharam. As temperaturas baixas não conseguirão contê-los para sempre.\n\nComeçe a aventura com energia. Construa geradores a combustão. Aprenda a usar reparadores.
|
sector.frozenForest.description = Mesmo aqui, perto das montanhas, os esporos se espalharam. As temperaturas baixas não conseguirão contê-los para sempre.\n\nComeçe a aventura com energia. Construa geradores a combustão. Aprenda a usar reparadores.
|
||||||
|
sector.biomassFacility.description = A origem dos esporos. Essa é a instalação onde eles foram pesquisados e produzidos inicialmente. Pesquise a tecnologia contido na instalação. Cultive esporos para a produção de combustíveis e plásticos. \n\nNo falecimento da instalação, os esporos foram liberados. Nada no ecossistema local conseguia competir com um organismo tão invasivo.
|
||||||
sector.saltFlats.description = Nos arredores do deserto ficam as planícies de sal. Muitos recursos podem ser encontrados nesse local.\n\nO inimigo construiu um complexo de armazenamento de recursos aqui. Destrua o núcleo deles. Não deixe nada sobrando.
|
sector.saltFlats.description = Nos arredores do deserto ficam as planícies de sal. Muitos recursos podem ser encontrados nesse local.\n\nO inimigo construiu um complexo de armazenamento de recursos aqui. Destrua o núcleo deles. Não deixe nada sobrando.
|
||||||
sector.craters.description = A água se acumulou nessa cratera, relíquias de guerras antigas. Re-conquiste a área. Colete areia. Faça metavidro. Use a água para melhorar suas brocas e torretas.
|
sector.craters.description = A água se acumulou nessa cratera, relíquias de guerras antigas. Re-conquiste a área. Colete areia. Faça metavidro. Use a água para melhorar suas brocas e torretas.
|
||||||
sector.ruinousShores.description = Passando o terreno desolado, está localizada a costa. Antigamente, este local abrigava uma rede de defesa costeira. Não restou muita coisa. Apenas as estruturas de defesas básicas permaneceram ilesas, o resto foi reduzido a sucata.\nContinue expandindo seus territórios, re-descubra a tecnologia.
|
sector.ruinousShores.description = Passando o terreno desolado, está localizada a costa. Antigamente, este local abrigava uma rede de defesa costeira. Não restou muita coisa. Apenas as estruturas de defesas básicas permaneceram ilesas, o resto foi reduzido a sucata.\nContinue expandindo seus territórios, re-descubra a tecnologia.
|
||||||
|
sector.windsweptIslands.description = Um pouco depois do literal tem essa remota série de ilhas. Registros mostram eles haviam estruturas produtoras de [accent]Plastânio[].\n\nAfase as unidades navais inimigas. Estabeleça uma base nas ilhas. Pesquise essas fábricas.
|
||||||
sector.stainedMountains.description = Mais para o interior estão as montanhas, ainda não contaminadas pelos esporos.\nExtraia o titânio que é abundante nessa área. Aprenda a usá-lo.\n\nA presença inimiga é maior aqui. Não dê tempo a eles de trazerem fortes unidades.
|
sector.stainedMountains.description = Mais para o interior estão as montanhas, ainda não contaminadas pelos esporos.\nExtraia o titânio que é abundante nessa área. Aprenda a usá-lo.\n\nA presença inimiga é maior aqui. Não dê tempo a eles de trazerem fortes unidades.
|
||||||
sector.overgrowth.description = Essa área coberta por vegetação, próxima ao local de origem dos esporos.\nO inimigo estabeleceu um posto de controle aqui. Faça unidades Titan. Destrua eles. Recupere o que foi perdido.
|
sector.overgrowth.description = Essa área coberta por vegetação, próxima ao local de origem dos esporos.\nO inimigo estabeleceu um posto de controle aqui. Faça unidades Titan. Destrua eles. Recupere o que foi perdido.
|
||||||
sector.tarFields.description = Nos arredores de uma zone de produção de petróleo, entre as montanhas e o deserto. Uma das poucas áreas com reservas de piche utilizáveis.\nMesmo abandonada, essa área tem forças inimigas por perto. Não subestime-os.\n\n[lightgray]Pesquise a tecnologia de processamento de petróleo se possível.
|
sector.tarFields.description = Nos arredores de uma zone de produção de petróleo, entre as montanhas e o deserto. Uma das poucas áreas com reservas de piche utilizáveis.\nMesmo abandonada, essa área tem forças inimigas por perto. Não subestime-os.\n\n[lightgray]Pesquise a tecnologia de processamento de petróleo se possível.
|
||||||
sector.desolateRift.description = Uma zona extremamente perigosa. Uma zona com recursos abundantes, mas pouco espaço. Grande risco de destruição. Saia o quanto antes. Não se deixe levar pelo tempo entre os ataques inimigos.
|
sector.desolateRift.description = Uma zona extremamente perigosa. Uma zona com recursos abundantes, mas pouco espaço. Grande risco de destruição. Saia o quanto antes. Não se deixe levar pelo tempo entre os ataques inimigos.
|
||||||
sector.nuclearComplex.description = Uma antiga instalação de produção e processamento de tório, reduzida a ruínas.\n[lightgray]Pesquise sobre o tório e seu vários usos.\n\nO inimigo está presente aqui em grande número, constantemente procurando por atacantes.
|
sector.nuclearComplex.description = Uma antiga instalação de produção e processamento de tório, reduzida a ruínas.\n[lightgray]Pesquise sobre o tório e seu vários usos.\n\nO inimigo está presente aqui em grande número, constantemente procurando por atacantes.
|
||||||
sector.fungalPass.description = Uma área de transição entre altas montanhas e terras baixas, repletas de esporos. Uma pequena base de reconhecimento inimiga está aqui.\nDestrua o núcleo.
|
sector.fungalPass.description = Uma área de transição entre altas montanhas e terras baixas, repletas de esporos. Uma pequena base de reconhecimento inimiga está aqui.\nDestrua o núcleo.
|
||||||
|
sector.impact0078.description = Aqui repousas restos de um reservatório de transporte interestelar que entrou nesse sistema primeiro.\n\Salve o quanto puder dos destroços. Pesquise qualquer tecnologia intacta.
|
||||||
|
sector.extractionOutpost.description = Um posto avançado remoto, construído pelo inimigo com o objetivo de lançar recursos para outros setores.\n\nTecnologia de transporte entre setores é essencial para mais conquista de território. Destrua a base. Pesquise suas Plataformas de Lançamento.
|
||||||
|
sector.planetaryTerminal.description = O último alvo.\n\nEssa base costeira contém a estrutura capaz de lançar Núcleos para planetas locais. É extremamente bem guardado.\n\nProduza unidades navais. Elimine o inimigo o mais rápido o possível. pesquise a estrutura de lançamento.
|
||||||
|
|
||||||
|
status.burning.name = Queimando
|
||||||
|
status.freezing.name = Congelado
|
||||||
|
status.wet.name = Molhado
|
||||||
|
status.muddy.name = Barrento
|
||||||
|
status.melting.name = Derretendo
|
||||||
|
status.sapped.name = Enfraquecido
|
||||||
|
status.electrified.name = Eletrificado
|
||||||
|
status.spore-slowed.name = Esporo-Desaceleração
|
||||||
|
status.tarred.name = Alcatroado
|
||||||
|
status.overclock.name = Overclock
|
||||||
|
status.shocked.name = Chocado
|
||||||
|
status.blasted.name = Impactado
|
||||||
|
status.unmoving.name = Imóvel
|
||||||
|
|
||||||
settings.language = Idioma
|
settings.language = Idioma
|
||||||
settings.data = Dados do jogo
|
settings.data = Dados do jogo
|
||||||
@@ -588,13 +624,15 @@ stat.output = Saída
|
|||||||
stat.booster = Apoio
|
stat.booster = Apoio
|
||||||
stat.tiles = Required Tiles
|
stat.tiles = Required Tiles
|
||||||
stat.affinities = Afinidades
|
stat.affinities = Afinidades
|
||||||
|
stat.opposites = Opostos
|
||||||
stat.powercapacity = Capacidade de Energia
|
stat.powercapacity = Capacidade de Energia
|
||||||
stat.powershot = Energia/tiro
|
stat.powershot = Energia/tiro
|
||||||
|
stat.weapons = Armas
|
||||||
stat.damage = Dano
|
stat.damage = Dano
|
||||||
stat.targetsair = Mira no ar
|
stat.targetsair = Mira no ar
|
||||||
stat.targetsground = Mira no chão
|
stat.targetsground = Mira no chão
|
||||||
stat.itemsmoved = Velocidade de movimento
|
stat.itemsmoved = Velocidade de movimento
|
||||||
stat.launchtime = Tempo entre Disparos.
|
stat.launchtime = Tempo entre Disparos
|
||||||
stat.shootrange = Alcance
|
stat.shootrange = Alcance
|
||||||
stat.size = Tamanho
|
stat.size = Tamanho
|
||||||
stat.displaysize = Tamanho do Display
|
stat.displaysize = Tamanho do Display
|
||||||
@@ -617,6 +655,7 @@ stat.drillspeed = Velocidade base da Broca
|
|||||||
stat.boosteffect = Efeito do Impulso
|
stat.boosteffect = Efeito do Impulso
|
||||||
stat.maxunits = Máximo de unidades ativas
|
stat.maxunits = Máximo de unidades ativas
|
||||||
stat.health = Saúde
|
stat.health = Saúde
|
||||||
|
stat.armor = Armadura
|
||||||
stat.buildtime = Tempo de construção
|
stat.buildtime = Tempo de construção
|
||||||
stat.maxconsecutive = Max Consecutive
|
stat.maxconsecutive = Max Consecutive
|
||||||
stat.buildcost = Custo de construção
|
stat.buildcost = Custo de construção
|
||||||
@@ -624,31 +663,45 @@ stat.inaccuracy = Imprecisão
|
|||||||
stat.shots = Tiros
|
stat.shots = Tiros
|
||||||
stat.reload = Tempo de recarga
|
stat.reload = Tempo de recarga
|
||||||
stat.ammo = Munição
|
stat.ammo = Munição
|
||||||
|
stat.ammouse = Consumo de Munição
|
||||||
|
stat.damagemultiplier = Multiplicador de Dano
|
||||||
|
stat.healthmultiplier = Multiplicador de Vida
|
||||||
|
stat.speedmultiplier = Multiplicador de Velocidade
|
||||||
|
stat.reloadmultiplier = Multiplicador de Recarregamento
|
||||||
|
stat.buildspeedmultiplier = Multiplicador de Velocidade de Construção
|
||||||
|
stat.reactive = Reage
|
||||||
|
stat.healing = Reparo
|
||||||
|
|
||||||
stat.shieldhealth = Vida do Escudo
|
stat.shieldhealth = Vida do Escudo
|
||||||
stat.cooldowntime = Tempo de espera
|
stat.cooldowntime = Tempo de espera
|
||||||
stat.explosiveness = Explosividade
|
stat.explosiveness = Explosividade
|
||||||
stat.basedeflectchance = Chance Base de Esquiva
|
stat.basedeflectchance = Chance Base de Esquiva
|
||||||
stat.lightningchance = Lightning Chance
|
stat.lightningchance = Chance de Raio
|
||||||
stat.lightningdamage = Dano por Raio
|
stat.lightningdamage = Dano por Raio
|
||||||
stat.flammability = Inflamabilidade
|
stat.flammability = Inflamabilidade
|
||||||
|
stat.charge = Carga de Eletricidade
|
||||||
stat.radioactivity = Radioatividade
|
stat.radioactivity = Radioatividade
|
||||||
stat.heatcapacity = Capacidade de Aquecimento
|
stat.heatcapacity = Capacidade de Aquecimento
|
||||||
stat.viscosity = Viscosidade
|
stat.viscosity = Viscosidade
|
||||||
stat.temperature = Temperatura
|
stat.temperature = Temperatura
|
||||||
stat.speed = Velocidade
|
stat.speed = Velocidade
|
||||||
|
stat.repairspeed = Taxa de Reparo
|
||||||
stat.buildspeed = Velocidade de Construção
|
stat.buildspeed = Velocidade de Construção
|
||||||
stat.minespeed = Velocidade de Mineração
|
stat.minespeed = Velocidade de Mineração
|
||||||
stat.minetier = Nível de Mineração
|
stat.minetier = Nível de Mineração
|
||||||
stat.payloadcapacity = Capacidade de Carga
|
stat.payloadcapacity = Capacidade de Carga
|
||||||
stat.commandlimit = Limite de Comando
|
stat.commandlimit = Limite de Comando
|
||||||
stat.abilities = Habilidades
|
stat.abilities = Habilidades
|
||||||
|
stat.canboost = Pode impulsionar
|
||||||
|
stat.flying = Voador
|
||||||
|
|
||||||
ability.forcefield = Campo de Força
|
ability.forcefield = Campo de Força
|
||||||
ability.repairfield = Campo de Reparação
|
ability.repairfield = Campo de Reparação
|
||||||
ability.statusfield = Status Field
|
ability.statusfield = Campo de Status {0}
|
||||||
ability.unitspawn = {0} Fábrica
|
ability.unitspawn = Fábrica de {0}
|
||||||
ability.shieldregenfield = Raio de Regeneração do Escudo
|
ability.shieldregenfield = Raio de Regeneração do Escudo
|
||||||
|
ability.movelightning = Raio de Movimento
|
||||||
|
ability.energyfield = Campo de Energia: dano [accent]{0}[] ~ blocos [accent]{1}[] / alvos [accent]{2}[]
|
||||||
|
|
||||||
bar.drilltierreq = Broca melhor necessária.
|
bar.drilltierreq = Broca melhor necessária.
|
||||||
bar.noresources = Recursos Insuficientes
|
bar.noresources = Recursos Insuficientes
|
||||||
@@ -665,12 +718,13 @@ bar.items = Itens: {0}
|
|||||||
bar.capacity = Capacidade: {0}
|
bar.capacity = Capacidade: {0}
|
||||||
bar.unitcap = {0} {1}/{2}
|
bar.unitcap = {0} {1}/{2}
|
||||||
bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled]
|
bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[unit disabled]
|
||||||
bar.liquid = Liquido
|
bar.liquid = Líquido
|
||||||
bar.heat = Aquecer
|
bar.heat = Aquecer
|
||||||
bar.power = Poder
|
bar.power = Poder
|
||||||
bar.progress = Progresso da construção
|
bar.progress = Progresso da construção
|
||||||
bar.input = Entrada
|
bar.input = Entrada
|
||||||
bar.output = Saída
|
bar.output = Saída
|
||||||
|
bar.strength = [stat]{0}[lightgray]x força
|
||||||
|
|
||||||
units.processorcontrol = [lightgray]Processor Controlled
|
units.processorcontrol = [lightgray]Processor Controlled
|
||||||
|
|
||||||
@@ -678,13 +732,13 @@ bullet.damage = [stat]{0}[lightgray] de dano
|
|||||||
bullet.splashdamage = [stat]{0}[lightgray] de dano em área ~[stat] {1}[lightgray] bloco(s)
|
bullet.splashdamage = [stat]{0}[lightgray] de dano em área ~[stat] {1}[lightgray] bloco(s)
|
||||||
bullet.incendiary = [stat]Incendiário
|
bullet.incendiary = [stat]Incendiário
|
||||||
bullet.homing = [stat]Guiado
|
bullet.homing = [stat]Guiado
|
||||||
bullet.shock = [stat]Choque
|
|
||||||
bullet.frag = [stat]Fragmentação
|
bullet.frag = [stat]Fragmentação
|
||||||
bullet.knockback = [stat]{0}[lightgray]Impulso
|
bullet.lightning = [stat]{0}[lightgray]x raio ~ [stat]{1}[lightgray] dano
|
||||||
|
bullet.buildingdamage = [stat]{0}%[lightgray] dano em construção
|
||||||
|
bullet.knockback = [stat]{0}[lightgray] Impulso
|
||||||
bullet.pierce = [stat]{0}[lightgray]x perfuração
|
bullet.pierce = [stat]{0}[lightgray]x perfuração
|
||||||
bullet.infinitepierce = [stat]perfuração
|
bullet.infinitepierce = [stat]perfuração
|
||||||
bullet.freezing = [stat]Congelamento
|
bullet.healpercent = [stat]{0}[lightgray]% reparo
|
||||||
bullet.tarred = [stat]Grudento
|
|
||||||
bullet.multiplier = [stat]{0}[lightgray]x multiplicador de munição
|
bullet.multiplier = [stat]{0}[lightgray]x multiplicador de munição
|
||||||
bullet.reload = [stat]{0}[lightgray]x cadência de tiro
|
bullet.reload = [stat]{0}[lightgray]x cadência de tiro
|
||||||
|
|
||||||
@@ -693,12 +747,12 @@ unit.blockssquared = Blocos²
|
|||||||
unit.powersecond = unidades de energia por segundo
|
unit.powersecond = unidades de energia por segundo
|
||||||
unit.liquidsecond = líquido segundo
|
unit.liquidsecond = líquido segundo
|
||||||
unit.itemssecond = itens por segundo
|
unit.itemssecond = itens por segundo
|
||||||
unit.liquidunits = unidades de liquido
|
unit.liquidunits = unidades de líquido
|
||||||
unit.powerunits = unidades de energia
|
unit.powerunits = unidades de energia
|
||||||
unit.degrees = Graus
|
unit.degrees = Graus
|
||||||
unit.seconds = segundos
|
unit.seconds = segundos
|
||||||
unit.minutes = mins
|
unit.minutes = mins
|
||||||
unit.persecond = por segundo
|
unit.persecond = /segundo
|
||||||
unit.perminute = /min
|
unit.perminute = /min
|
||||||
unit.timesspeed = x Velocidade
|
unit.timesspeed = x Velocidade
|
||||||
unit.percent = %
|
unit.percent = %
|
||||||
@@ -707,6 +761,7 @@ unit.items = itens
|
|||||||
unit.thousands = k
|
unit.thousands = k
|
||||||
unit.millions = m
|
unit.millions = m
|
||||||
unit.billions = b
|
unit.billions = b
|
||||||
|
unit.pershot = /disparo
|
||||||
category.general = Geral
|
category.general = Geral
|
||||||
category.power = Energia
|
category.power = Energia
|
||||||
category.liquids = Líquidos
|
category.liquids = Líquidos
|
||||||
@@ -719,8 +774,11 @@ setting.shadows.name = Sombras
|
|||||||
setting.blockreplace.name = Sugestões automáticas de blocos
|
setting.blockreplace.name = Sugestões automáticas de blocos
|
||||||
setting.linear.name = Filtragem linear
|
setting.linear.name = Filtragem linear
|
||||||
setting.hints.name = Dicas
|
setting.hints.name = Dicas
|
||||||
|
setting.logichints.name = Dicas de Lógica
|
||||||
setting.flow.name = Mostrar Fluxo de Recursos[scarlet] (experimental)
|
setting.flow.name = Mostrar Fluxo de Recursos[scarlet] (experimental)
|
||||||
setting.buildautopause.name = Pausar construções automaticamente
|
setting.buildautopause.name = Pausar Automaticamente Quando for Construir
|
||||||
|
setting.doubletapmine.name = Clique Duplo Para Minerar
|
||||||
|
setting.modcrashdisable.name = Desativar Mods em Crash de Começo
|
||||||
setting.animatedwater.name = Água animada
|
setting.animatedwater.name = Água animada
|
||||||
setting.animatedshields.name = Escudos animados
|
setting.animatedshields.name = Escudos animados
|
||||||
setting.antialias.name = Filtro suavizante[lightgray] (reinicialização requerida)[]
|
setting.antialias.name = Filtro suavizante[lightgray] (reinicialização requerida)[]
|
||||||
@@ -740,7 +798,7 @@ setting.difficulty.normal = Normal
|
|||||||
setting.difficulty.hard = Difícil
|
setting.difficulty.hard = Difícil
|
||||||
setting.difficulty.insane = Insano
|
setting.difficulty.insane = Insano
|
||||||
setting.difficulty.name = Dificuldade
|
setting.difficulty.name = Dificuldade
|
||||||
setting.screenshake.name = Balanço da Tela
|
setting.screenshake.name = Vibração da Tela
|
||||||
setting.effects.name = Efeitos
|
setting.effects.name = Efeitos
|
||||||
setting.destroyedblocks.name = Mostrar Blocos Destruídos
|
setting.destroyedblocks.name = Mostrar Blocos Destruídos
|
||||||
setting.blockstatus.name = Mostrar a Propriedade dos Blocos
|
setting.blockstatus.name = Mostrar a Propriedade dos Blocos
|
||||||
@@ -773,6 +831,7 @@ setting.chatopacity.name = Opacidade do chat
|
|||||||
setting.lasersopacity.name = Opacidade do laser
|
setting.lasersopacity.name = Opacidade do laser
|
||||||
setting.bridgeopacity.name = Opacidade da ponte
|
setting.bridgeopacity.name = Opacidade da ponte
|
||||||
setting.playerchat.name = Mostrar chat em jogo
|
setting.playerchat.name = Mostrar chat em jogo
|
||||||
|
setting.showweather.name = Mostrar Gráficos do Clima
|
||||||
public.confirm = Você quer fazer sua partida pública?\n[accent]Qualquer um será capaz de entrar na sua partida.\n[lightgray]Isso pode ser mudado depois em Configurações->Jogo->Visibilidade da partida pública.
|
public.confirm = Você quer fazer sua partida pública?\n[accent]Qualquer um será capaz de entrar na sua partida.\n[lightgray]Isso pode ser mudado depois em Configurações->Jogo->Visibilidade da partida pública.
|
||||||
public.beta = Note que as versões beta do jogo não podem fazer salas públicas.
|
public.beta = Note que as versões beta do jogo não podem fazer salas públicas.
|
||||||
uiscale.reset = A escala da interface foi mudada.\nPressione "OK" para confirmar esta escala.\n[scarlet]Revertendo e saindo em[accent] {0}[] segundos...
|
uiscale.reset = A escala da interface foi mudada.\nPressione "OK" para confirmar esta escala.\n[scarlet]Revertendo e saindo em[accent] {0}[] segundos...
|
||||||
@@ -837,6 +896,7 @@ keybind.menu.name = Menu
|
|||||||
keybind.pause.name = Pausar
|
keybind.pause.name = Pausar
|
||||||
keybind.pause_building.name = Parar/Resumir a construção
|
keybind.pause_building.name = Parar/Resumir a construção
|
||||||
keybind.minimap.name = Minimapa
|
keybind.minimap.name = Minimapa
|
||||||
|
keybind.research.name = Pesquisa
|
||||||
keybind.chat.name = Conversa
|
keybind.chat.name = Conversa
|
||||||
keybind.player_list.name = Lista de jogadores
|
keybind.player_list.name = Lista de jogadores
|
||||||
keybind.console.name = Console
|
keybind.console.name = Console
|
||||||
@@ -851,8 +911,8 @@ keybind.zoom_minimap.name = Ampliar minimapa
|
|||||||
mode.help.title = Descrição dos modos
|
mode.help.title = Descrição dos modos
|
||||||
mode.survival.name = Sobrevivência
|
mode.survival.name = Sobrevivência
|
||||||
mode.survival.description = O modo normal. Recursos limitados e hordas automáticas.
|
mode.survival.description = O modo normal. Recursos limitados e hordas automáticas.
|
||||||
mode.sandbox.name = Criativo
|
mode.sandbox.name = Sandbox
|
||||||
mode.sandbox.description = Recursos infinitos e sem tempo para ataques.
|
mode.sandbox.description = Recursos infinitos não há tempo entre ondas.
|
||||||
mode.editor.name = Editor
|
mode.editor.name = Editor
|
||||||
mode.pvp.name = JxJ
|
mode.pvp.name = JxJ
|
||||||
mode.pvp.description = Luta contra outros jogadores locais.
|
mode.pvp.description = Luta contra outros jogadores locais.
|
||||||
@@ -910,8 +970,8 @@ item.thorium.name = Tório
|
|||||||
item.silicon.name = Silício
|
item.silicon.name = Silício
|
||||||
item.plastanium.name = Plastânio
|
item.plastanium.name = Plastânio
|
||||||
item.phase-fabric.name = Tecido de fase
|
item.phase-fabric.name = Tecido de fase
|
||||||
item.surge-alloy.name = Liga de súrgio
|
item.surge-alloy.name = Liga de surto
|
||||||
item.spore-pod.name = Pedaço de esporo
|
item.spore-pod.name = Casulo de esporo
|
||||||
item.sand.name = Areia
|
item.sand.name = Areia
|
||||||
item.blast-compound.name = Composto Explosivo
|
item.blast-compound.name = Composto Explosivo
|
||||||
item.pyratite.name = Piratita
|
item.pyratite.name = Piratita
|
||||||
@@ -920,22 +980,25 @@ item.scrap.name = Sucata
|
|||||||
liquid.water.name = Água
|
liquid.water.name = Água
|
||||||
liquid.slag.name = Escória
|
liquid.slag.name = Escória
|
||||||
liquid.oil.name = Petróleo
|
liquid.oil.name = Petróleo
|
||||||
liquid.cryofluid.name = Fluído Criogênico
|
liquid.cryofluid.name = Crio-fluido
|
||||||
|
|
||||||
unit.dagger.name = Adaga
|
unit.dagger.name = Dagger
|
||||||
unit.mace.name = Mace
|
unit.mace.name = Mace
|
||||||
unit.fortress.name = Fortaleza
|
unit.fortress.name = Fortress
|
||||||
|
unit.scepter.name = Scepter
|
||||||
|
unit.reign.name = Reign
|
||||||
unit.nova.name = Nova
|
unit.nova.name = Nova
|
||||||
unit.pulsar.name = Pulsar
|
unit.pulsar.name = Pulsar
|
||||||
unit.quasar.name = Quasar
|
unit.quasar.name = Quasar
|
||||||
unit.crawler.name = Rastejante
|
unit.vela.name = Vela
|
||||||
unit.atrax.name = Atrax
|
unit.corvus.name = Corvus
|
||||||
|
unit.crawler.name = Rastejador
|
||||||
unit.spiroct.name = Spiroct
|
unit.spiroct.name = Spiroct
|
||||||
unit.arkyid.name = Arkyid
|
unit.arkyid.name = Arkyid
|
||||||
unit.toxopid.name = Toxopid
|
unit.toxopid.name = Toxopid
|
||||||
unit.flare.name = Flare
|
unit.flare.name = Flare
|
||||||
unit.horizon.name = Horizon
|
unit.horizon.name = Horizon
|
||||||
unit.zenith.name = Zênite
|
unit.zenith.name = Zenith
|
||||||
unit.antumbra.name = Antumbra
|
unit.antumbra.name = Antumbra
|
||||||
unit.eclipse.name = Eclipse
|
unit.eclipse.name = Eclipse
|
||||||
unit.mono.name = Mono
|
unit.mono.name = Mono
|
||||||
@@ -951,10 +1014,59 @@ unit.omura.name = Omura
|
|||||||
unit.alpha.name = Alpha
|
unit.alpha.name = Alpha
|
||||||
unit.beta.name = Beta
|
unit.beta.name = Beta
|
||||||
unit.gamma.name = Gamma
|
unit.gamma.name = Gamma
|
||||||
unit.scepter.name = Sceptro
|
|
||||||
unit.reign.name = Reign
|
unit.dagger.description = Dispara projéteis padrões em todos os inimigos em volta.
|
||||||
unit.vela.name = Vela
|
unit.mace.description = Dispara corrents de chamas em todos os inimigos em volta.
|
||||||
unit.corvus.name = Corvus
|
unit.fortress.description = Dispara artilharia de longo alcance em alvos terrestres.
|
||||||
|
unit.scepter.description = Dispara uma barragem de projéteis carregados em todos os inimigos em volta.
|
||||||
|
unit.reign.description = Dispara uma barragem de projéteis perfuradoes massivos em todos os inimigos em volta.
|
||||||
|
unit.nova.description = Dispara raios-lasers que danificam inimigos e repara estruturas aliadas. Capaz de voar.
|
||||||
|
unit.pulsar.description = Dispara arcos de eletricidade que danificam inimigos e repara estruturas aliadas. Capaz de voar.
|
||||||
|
unit.quasar.description = Dispara feixes penetradores de lasers que danificam inimigos e repara estruturas aliadas. Capaz de voar. Possui um escudo.
|
||||||
|
unit.vela.description = Dispara um massivo feixe de laser massivo que danificam inimigos, causa fogo e repara estruturas aliadas. Capaz de voar.
|
||||||
|
unit.corvus.description = Dispara um massivo laser que danificam inimigos e repara estruturas aliadas. Pode pisar em cima da maioria do terreno.
|
||||||
|
unit.crawler.description = Corre atrás de inimigos e se destrói, causando uma grande explosão.
|
||||||
|
unit.atrax.description = Dispara orbes debilitantes de escória em alvos terrestres. Pode pisar em cima da maioria do terreno.
|
||||||
|
unit.spiroct.description = Dispara lasers enfraquecedores em inimigos, se reparando no processo. Pode pisar em cima da maioria do terreno.
|
||||||
|
unit.arkyid.description = Dispara grandes lasers enfraquecedores em inimigos, se reparando no processo. Pode pisar em cima da maioria do terreno.
|
||||||
|
unit.toxopid.description = Dispara grande granadas agrupadas elétricas e lasers penetradoes em inimigos. Pode pisar em cima da maioria do terreno.
|
||||||
|
unit.flare.description = Dispara projéteis padrões em alvos terrestres.
|
||||||
|
unit.horizon.description = Larga aglomerados de bombas em alvos terrestres.
|
||||||
|
unit.zenith.description = Dispara salvos de mísseis em todos os inimigos em volta.
|
||||||
|
unit.antumbra.description = Dispara uma barragem de projéteis em todos os inimigos em volta.
|
||||||
|
unit.eclipse.description = Dispara dois lasers penetradores e uma barragem de fogo antiaéreo em todos os inimigos em volta.
|
||||||
|
unit.mono.description = Automaticamente minera cobre e chumbo, depositando-os no núcleo.
|
||||||
|
unit.poly.description = Automaticamente reconstrói estruturas destruídas e ajuda outras unidades em construção.
|
||||||
|
unit.mega.description = Automaticamente repara estruturas danificadas. Capaz de carregar blocos e unidades de chão pequenas.
|
||||||
|
unit.quad.description = Larga grandes bombas em alvos terrestres, reparando estruturas aliadas e danificando inimigos. Capaz de carregar unidades terrestres de tamanho médio.
|
||||||
|
unit.oct.description = Protege aliados em volta com o seu escudo regenerador. Capaz de carregar a maioria das unidades terrestres.
|
||||||
|
unit.risso.description = Dispara uma barragem de mísseis e projéteis em todos os inimigos em volta.
|
||||||
|
unit.minke.description = Dispara granadas e projéteis padrões em alvos terrestres.
|
||||||
|
unit.bryde.description = Dispara granadas de artilharia de longo alcance e mísseis em todos os inimigos em volta.
|
||||||
|
unit.sei.description = Dispara uma barragem de mísseis e projéteis penetradoras de armadura em inimigos.
|
||||||
|
unit.omura.description = Dispara um raio de longo alcance atravessador em inimigos. Constrói unidades flare.
|
||||||
|
unit.alpha.description = Defende o Fragmento do Núcleo de inimigos. Constrói estruturas.
|
||||||
|
unit.beta.description = Defende a Fundação do Núcleo de inimigos. Constrói estruturas.
|
||||||
|
unit.gamma.description = Defende o Centro do Núcleo de inimigos. Constrói estruturas.
|
||||||
|
|
||||||
|
lst.read = Lê um número de uma célula de memória conectada.
|
||||||
|
lst.write = Escreve um número a uma célula de memória conectada.
|
||||||
|
lst.print = Adiciona texto ao gravador principal.\nNão vai mostrar nada até que [accent]Print Flush[] seja usado.
|
||||||
|
lst.draw = Adiciona uma operação ao monitor principal.\nNão vai mostrar nada até que [accent]Draw Flush[] seja usado.
|
||||||
|
lst.drawflush = Coloca as operações [accent]Draw[] na fila para um monitor.
|
||||||
|
lst.printflush = Coloca as operações [accent]Write[] na fila para um bloco de mensagem.
|
||||||
|
lst.getlink = Pega um vínculo de processador por índice. Começa no 0.
|
||||||
|
lst.control = Controla uma construção.
|
||||||
|
lst.radar = Localiza unidades em volta de uma construção com alcance.
|
||||||
|
lst.sensor = Pega dados de uma unidade ou construção.
|
||||||
|
lst.set = Define uma variável.
|
||||||
|
lst.operation = Performa uma operação com 1-2 variáveis.
|
||||||
|
lst.end = Pula para o topo da pilha de instruções.
|
||||||
|
lst.jump = Condicionalmente pula para um outro comando.
|
||||||
|
lst.unitbind = Vincula a próxima unidade de um tipo, e armazena-a em [accent]@unit[].
|
||||||
|
lst.unitcontrol = Controla a unidade atualmente vinculada.
|
||||||
|
lst.unitradar = Localiza unidades em volta da unidade vinculada.
|
||||||
|
lst.unitlocate = Localiza um tipo específico de posição/construção em qualquer lugar do mapa.\nRequer uma unidade vinculada.
|
||||||
|
|
||||||
block.resupply-point.name = Ponto de Reabastecimento
|
block.resupply-point.name = Ponto de Reabastecimento
|
||||||
block.parallax.name = Paralaxe
|
block.parallax.name = Paralaxe
|
||||||
@@ -1048,7 +1160,7 @@ block.thorium-wall.name = Muro de Tório
|
|||||||
block.thorium-wall-large.name = Muralha de Tório
|
block.thorium-wall-large.name = Muralha de Tório
|
||||||
block.door.name = Porta
|
block.door.name = Porta
|
||||||
block.door-large.name = Porta grande
|
block.door-large.name = Porta grande
|
||||||
block.duo.name = Torreta dupla
|
block.duo.name = Duo
|
||||||
block.scorch.name = Lança-chamas
|
block.scorch.name = Lança-chamas
|
||||||
block.scatter.name = Dispersão
|
block.scatter.name = Dispersão
|
||||||
block.hail.name = Artilharia
|
block.hail.name = Artilharia
|
||||||
@@ -1066,12 +1178,12 @@ block.inverted-sorter.name = Ordenador invertido
|
|||||||
block.message.name = Mensagem
|
block.message.name = Mensagem
|
||||||
block.illuminator.name = Iluminador
|
block.illuminator.name = Iluminador
|
||||||
block.illuminator.description = Uma fonte de luz pequena, configurável e compacta. Precisa de energia para funcionar.
|
block.illuminator.description = Uma fonte de luz pequena, configurável e compacta. Precisa de energia para funcionar.
|
||||||
block.overflow-gate.name = Portão de Fluxo
|
block.overflow-gate.name = Portão de Sobrecarga
|
||||||
block.underflow-gate.name = Portão de Fluxo invertido
|
block.underflow-gate.name = Portão de Sobrecarga Invertido
|
||||||
block.silicon-smelter.name = Fundidora de silício
|
block.silicon-smelter.name = Fundidora de silício
|
||||||
block.phase-weaver.name = Palheta de fase
|
block.phase-weaver.name = Palheta de fase
|
||||||
block.pulverizer.name = Pulverizador
|
block.pulverizer.name = Pulverizador
|
||||||
block.cryofluid-mixer.name = Misturador de Crio Fluido
|
block.cryofluid-mixer.name = Misturador de Crio-Fluido
|
||||||
block.melter.name = Aparelho de fusão
|
block.melter.name = Aparelho de fusão
|
||||||
block.incinerator.name = Incinerador
|
block.incinerator.name = Incinerador
|
||||||
block.spore-press.name = Prensa de Esporo
|
block.spore-press.name = Prensa de Esporo
|
||||||
@@ -1079,7 +1191,7 @@ block.separator.name = Separador
|
|||||||
block.coal-centrifuge.name = Centrífugador de Carvão
|
block.coal-centrifuge.name = Centrífugador de Carvão
|
||||||
block.power-node.name = Célula de energia
|
block.power-node.name = Célula de energia
|
||||||
block.power-node-large.name = Célula de energia grande
|
block.power-node-large.name = Célula de energia grande
|
||||||
block.surge-tower.name = Torre de súrgio
|
block.surge-tower.name = Torre de surto
|
||||||
block.diode.name = Diodo
|
block.diode.name = Diodo
|
||||||
block.battery.name = Bateria
|
block.battery.name = Bateria
|
||||||
block.battery-large.name = Bateria grande
|
block.battery-large.name = Bateria grande
|
||||||
@@ -1107,15 +1219,16 @@ block.tsunami.name = Tsunami
|
|||||||
block.swarmer.name = Enxame
|
block.swarmer.name = Enxame
|
||||||
block.salvo.name = Salvo
|
block.salvo.name = Salvo
|
||||||
block.ripple.name = Ondulação
|
block.ripple.name = Ondulação
|
||||||
block.phase-conveyor.name = Transportador de Fase
|
block.phase-conveyor.name = Esteira de Fase
|
||||||
block.bridge-conveyor.name = Esteira-Ponte
|
block.bridge-conveyor.name = Esteira-Ponte
|
||||||
block.plastanium-compressor.name = Compressor de Plastânio
|
block.plastanium-compressor.name = Compressor de Plastânio
|
||||||
block.pyratite-mixer.name = Misturador de Piratita
|
block.pyratite-mixer.name = Misturador de Piratita
|
||||||
block.blast-mixer.name = Misturador de Explosão
|
block.blast-mixer.name = Misturador de Explosão
|
||||||
block.solar-panel.name = Painel Solar
|
block.solar-panel.name = Painel Solar
|
||||||
block.solar-panel-large.name = Painel Solar Grande
|
block.solar-panel-large.name = Painel Solar Grande
|
||||||
block.oil-extractor.name = Bomba de Petróleo
|
block.oil-extractor.name = Extrator de Petróleo
|
||||||
block.repair-point.name = Ponto de Reparo
|
block.repair-point.name = Ponto de Reparo
|
||||||
|
block.repair-turret.name = Torre de Reparo
|
||||||
block.pulse-conduit.name = Cano de Pulso
|
block.pulse-conduit.name = Cano de Pulso
|
||||||
block.plated-conduit.name = Cano Blindado
|
block.plated-conduit.name = Cano Blindado
|
||||||
block.phase-conduit.name = Cano de Fase
|
block.phase-conduit.name = Cano de Fase
|
||||||
@@ -1158,9 +1271,15 @@ block.exponential-reconstructor.name = Reconstrutor Exponencial
|
|||||||
block.tetrative-reconstructor.name = Reconstrutor Tetrativo
|
block.tetrative-reconstructor.name = Reconstrutor Tetrativo
|
||||||
block.payload-conveyor.name = Esteira de Carga
|
block.payload-conveyor.name = Esteira de Carga
|
||||||
block.payload-router.name = Roteador de Carga
|
block.payload-router.name = Roteador de Carga
|
||||||
|
block.payload-propulsion-tower.name = Torre de Propulsão De Cargas
|
||||||
|
block.payload-void.name = Destruidor de Cargas
|
||||||
|
block.payload-source.name = Criador de Cargas
|
||||||
block.disassembler.name = Desmontador
|
block.disassembler.name = Desmontador
|
||||||
block.silicon-crucible.name = Fornalha De Silício
|
block.silicon-crucible.name = Fornalha De Silício
|
||||||
block.overdrive-dome.name = Domo de Sobrecarga
|
block.overdrive-dome.name = Domo de Sobrecarga
|
||||||
|
block.duct.name = Duto
|
||||||
|
block.duct-router.name = Duto Roteador
|
||||||
|
block.duct-bridge.name = Duto-Ponte
|
||||||
|
|
||||||
block.switch.name = Alavanca
|
block.switch.name = Alavanca
|
||||||
block.micro-processor.name = Micro Processador
|
block.micro-processor.name = Micro Processador
|
||||||
@@ -1201,93 +1320,102 @@ tutorial.waves = O[lightgray] inimigo[] se aproxima.\n\nDefenda seu núcleo por
|
|||||||
tutorial.waves.mobile = O[lightgray] inimigo[] se aproxima.\n\nDefenda seu núcleo por 2 hordas. Seu drone vai atirar nos inimigos automaticamente.\nConstrua mais torretas e brocas. Minere mais cobre.
|
tutorial.waves.mobile = O[lightgray] inimigo[] se aproxima.\n\nDefenda seu núcleo por 2 hordas. Seu drone vai atirar nos inimigos automaticamente.\nConstrua mais torretas e brocas. Minere mais cobre.
|
||||||
tutorial.launch = Quando você atinge uma horda específica, você é capaz de[accent] lançar o núcleo[], deixando suas defesas para trás e[accent] obtendo todos os recursos em seu núcleo.[]\nEstes recursos podem ser usados para pesquisar novas tecnologias.\n\n[accent]Pressione o botão lançar.
|
tutorial.launch = Quando você atinge uma horda específica, você é capaz de[accent] lançar o núcleo[], deixando suas defesas para trás e[accent] obtendo todos os recursos em seu núcleo.[]\nEstes recursos podem ser usados para pesquisar novas tecnologias.\n\n[accent]Pressione o botão lançar.
|
||||||
|
|
||||||
item.copper.description = O material mais básico. Usado em todos os tipos de blocos.
|
item.copper.description = Usado em todos os tipos de construção e munição.
|
||||||
item.lead.description = Material de começo basico. usado extensivamente em blocos de transporte de líquidos e eletrônicos.
|
item.copper.details = Cobre. Metal anormalmente abundante em Serpulo. Estruturalmente fraco a não ser que seja reforçado.
|
||||||
item.metaglass.description = Composto de vidro super resistente. Extensivamente usado para distribuição e armazenagem de líquidos.
|
item.lead.description = Usado em transportação de líquido e estruturas elétricas.
|
||||||
item.graphite.description = Carbono mineralizado, usado como munição e para isolação elétrica.
|
item.lead.details = Denso. Inerte. Extensivamente usado em baterias.\nObservação: Provavelmente tóxico para formas de vida biológica. Não que tenha muito restando aqui.
|
||||||
item.sand.description = Um material comum que é usado extensivamente em derretimento, tanto em ligas como em fluxo.
|
item.metaglass.description = Usado para estruturas de distribuição e armazenagem de líquidos.
|
||||||
item.coal.description = Matéria vegetal fossilizada, formada muito depois de semeada. Usado extensivamente para produção de combustível e recursos.
|
item.graphite.description = Usado em componentes elétricos e como munição de torretas.
|
||||||
item.titanium.description = Um material raro super leve usado extensivamente no transporte de líquidos, em brocas e drones aéreos.
|
item.sand.description = Usado na produção de outros materiais refinados.
|
||||||
item.thorium.description = Um metal denso e radioativo, Usado como suporte material e combustivel nuclear.
|
item.coal.description = Usado como combustível e produção de materiais refinados.
|
||||||
item.scrap.description = Pedaços remanescentes de estruturas e unidades destruidas. Contem traços de diferentes metais.
|
item.coal.details = Matéria vegetal fossilizada, formada muito depois de semeada. Usado extensivamente para produção de combustível e recursos.
|
||||||
item.silicon.description = Condutor extremamente importante, com aplicação em paineis solares e dispositivos complexos.
|
item.titanium.description = Usado em estruturas de transportação de líquido, brocas e fábricas.
|
||||||
item.plastanium.description = Material leve e maleável usado em drones aéreos avançados e como munição de fragmentação.
|
item.thorium.description = Usado em estruturas duráveis e como combustível nuclear.
|
||||||
item.phase-fabric.description = Uma substância quase sem peso usada em eletrônica avançada e tecnologia de auto-reparo.
|
item.scrap.description = Usado em Aparelhos de Fusão e Pulverizadores para refinar em outros materiais.
|
||||||
item.surge-alloy.description = Uma liga avançada com propriedades elétricas únicas.
|
item.scrap.details = Pedaços restantes de estruturas e unidades destruidas. Contém traços de diferentes metais.
|
||||||
item.spore-pod.description = Uma cápsula de esporos sintéticos, sintetizada de concentrações atmosféricas para propósitos industriais. Usada para conversão em petróleo, explosivos e combustíveis.
|
item.silicon.description = Usado em paineis solares, eletrônicos complexos e como munição perseguidora em torretas.
|
||||||
item.blast-compound.description = Um composto instável usado em bombas e em explosivos. Sintetizado de cápsulas de esporos e outras substâncias voláteis. Uso como combustível não é recomendado.
|
item.plastanium.description = Usado em unidades avançadas, isolamento e munição de fragmentação.
|
||||||
item.pyratite.description = Substância extremamente inflamável usada em armas incendiárias.
|
item.phase-fabric.description = Usado em eletrônicos avançados e estruturas reparadoras.
|
||||||
liquid.water.description = O líquido mais útil, comumente usado em resfriamento de máquinas e no processamento de lixo. Dá pra beber, também.
|
item.surge-alloy.description = Usada em armamento avançado e estruturas defensia reativas.
|
||||||
|
item.spore-pod.description = Usado para a conversão em óleo, explosivos e combustível.
|
||||||
|
item.spore-pod.details = Esporos. Provavelmente uma forma de vida sintética. Emite gases tóxicos para outra vida biológica. Extremamente invasivo. Altamente inflamável em certas condições.
|
||||||
|
item.blast-compound.description = Usado em bombas e como munição explosiva.
|
||||||
|
item.pyratite.description = Usado em armamento incendiário e geradores abastecidos com combustão.
|
||||||
|
liquid.water.description = Usado para refrigerar máquinas e no processamento de lixo.
|
||||||
liquid.slag.description = Vários metais derretidos misturados juntos. Pode ser separado em seus minerais constituentes, ou jogado nas unidades inimigas como uma arma.
|
liquid.slag.description = Vários metais derretidos misturados juntos. Pode ser separado em seus minerais constituentes, ou jogado nas unidades inimigas como uma arma.
|
||||||
liquid.oil.description = Um líquido usado na produção de materias avançados. Pode ser convertido em carvão como combustível, ou pulverizado e incendiado como arma.
|
liquid.oil.description = Usado na produção de materiais avançados e como munição incendiária
|
||||||
liquid.cryofluid.description = A maneira mais eficiente de resfriar qualquer coisa, até seu corpo quando está calor, mas não faça isto.
|
liquid.cryofluid.description = Usado como refrigerador em reatores, torretas e fábricas.
|
||||||
|
|
||||||
block.message.description = Mostra uma mensagem. Usado para comunicação entre aliados.
|
block.message.description = Mostra uma mensagem. Usado para comunicação entre aliados.
|
||||||
block.graphite-press.description = Comprime pedaços de carvão em lâminas de grafite puro.
|
block.graphite-press.description = Comprime carvão em grafite.
|
||||||
block.multi-press.description = Uma versão melhorada da prensa de grafite. Usa água e energia para processar carvão rápida e eficientemente.
|
block.multi-press.description = Comprime carvão em grafite. Usada água como refrigerador.
|
||||||
block.silicon-smelter.description = Reduz areia a silício usando carvão puro. Produz silício.
|
block.silicon-smelter.description = Refina silício com carvão e areia.
|
||||||
block.kiln.description = Derrete chumbo e areia no composto conhecido como metavidro. Requer pequenas quantidades de energia.
|
block.silicon-crucible.description = Refina silício com carvão e areia, usando piratita como uma fonte de calor adicional. Mais eficiente em locais quentes.
|
||||||
block.plastanium-compressor.description = Produz plastânio usando petróleo e titânio.
|
block.kiln.description = Derrete areia e chumbo em metavidro.
|
||||||
block.phase-weaver.description = Produz tecido de fase usando tório radioativo e areia. Requer massivas quantidades de energia para funcionar.
|
block.plastanium-compressor.description = Produz plastânio do petróleo e titânio.
|
||||||
block.alloy-smelter.description = Combina titânio, chumbo, silício e cobre para produzir liga de surto.
|
block.phase-weaver.description = Sintetiza tecido de fase usando tório e areia.
|
||||||
block.cryofluid-mixer.description = Mistura água e pó fino de titânio para produzir criofluido. Essencial para o uso do reator a tório.
|
block.alloy-smelter.description = Funde titânio, chumbo, silício e cobre para produzir liga de surto.
|
||||||
block.blast-mixer.description = Quebra e mistura aglomerados de esporos com piratita para produzir composto de explosão.
|
block.cryofluid-mixer.description = Mistura água e pó fino de titânio para produzir crio-fluido.
|
||||||
block.pyratite-mixer.description = Mistura carvão, chumbo e areia em piratita altamente inflamável.
|
block.blast-mixer.description = Produz composto explosivo da piratita e capsulas de esporo.
|
||||||
block.melter.description = Derrete sucata em escória para processamento posterior ou uso em torretas.
|
block.pyratite-mixer.description = Mistura carvão, chumbo e areia em piratita.
|
||||||
block.separator.description = Separa escória em seus minerais componentes, oferece o resultado refriado.
|
block.melter.description = Derrete sucata em escória.
|
||||||
|
block.separator.description = Separa escória em seus minerais componentes.
|
||||||
|
block.disassembler.description = Separa escória em traços de minerais componentes exóticos. Pode produzir tório.
|
||||||
block.spore-press.description = Comprime cápsulas de esporos em petróleo.
|
block.spore-press.description = Comprime cápsulas de esporos em petróleo.
|
||||||
block.pulverizer.description = Esmaga sucata em areia. Util quando esta em falta de areia natural.
|
block.pulverizer.description = Esmaga sucata em areia.
|
||||||
block.coal-centrifuge.description = Solidifica petróleo em carvão.
|
block.coal-centrifuge.description = Solidifica petróleo em carvão.
|
||||||
block.incinerator.description = Se livra de itens em excesso ou liquidos.
|
block.incinerator.description = Vaporiza qualquer item ou líquido que recebe.
|
||||||
block.power-void.description = Destroi qualquer energia que entra dentro. Apenas no modo sandbox.
|
block.power-void.description = Destroi qualquer energia que é recebida. Apenas no modo sandbox.
|
||||||
block.power-source.description = Infinitivamente da energia. Apenas no modo sandbox.
|
block.power-source.description = Infinitivamente dá energia. Apenas no modo sandbox.
|
||||||
block.item-source.description = Infinitamente dá itens. Apenas caixa de areia.
|
block.item-source.description = Infinitamente dá itens. Apenas no modo sandbox.
|
||||||
block.item-void.description = Destroi qualquer item que entre sem requerir energia. Apenas no modo sandbox.
|
block.item-void.description = Destroi qualquer item que entrar. Apenas no modo sandbox.
|
||||||
block.liquid-source.description = Infinitivamente dá Liquidos. Apenas no modo sanbox.
|
block.liquid-source.description = Infinitivamente dá líquidos. Apenas no modo sandbox.
|
||||||
block.liquid-void.description = Destroi qualquer líquidos que entrar dentro. Apenas no modo sandbox.
|
block.liquid-void.description = Destroi qualquer líquido que entrar. Apenas no modo sandbox.
|
||||||
block.copper-wall.description = Um bloco defensivo barato.\nUtil para proteger o núcleo e torretas no começo.
|
block.copper-wall.description = Um bloco defensivo barato. Útil para proteger o núcleo e torretas no começo.
|
||||||
block.copper-wall-large.description = Um bloco defensivo barato.\nUtil para proteger o núcleo e torretas no começo.\nOcupa múltiplos blocos.
|
block.copper-wall-large.description = Um bloco defensivo barato. Útil para proteger o núcleo e torretas no começo. Ocupa múltiplos blocos.
|
||||||
block.titanium-wall.description = Um bloco defensivo moderadamente forte.\nProvidencia defesa moderada contra inimigos.
|
block.titanium-wall.description = Um bloco defensivo moderadamente forte. Providencia defesa moderada contra inimigos.
|
||||||
block.titanium-wall-large.description = Um bloco defensivo moderadamente forte.\nProvidencia defesa moderada contra inimigos.\nOcupa múltiplos blocos.
|
block.titanium-wall-large.description = Um bloco defensivo moderadamente forte. Providencia defesa moderada contra inimigos. Ocupa múltiplos blocos.
|
||||||
block.plastanium-wall.description = Um tipo especial de muro que absorve arcos elétricos e bloqueia conexões automáticas de células de energia.
|
block.plastanium-wall.description = Um tipo especial de muro que absorve arcos elétricos e bloqueia conexões automáticas de células de energia.
|
||||||
block.plastanium-wall-large.description = Um tipo especial de muro que absorve arcos elétricos e bloqueia conexões automáticas de células de energia.\nOcupa múltiplos blocos.
|
block.plastanium-wall-large.description = Um tipo especial de muro que absorve arcos elétricos e bloqueia conexões automáticas de células de energia.\nOcupa múltiplos blocos.
|
||||||
block.thorium-wall.description = Um bloco defensivo forte.\nBoa proteção contra inimigos.
|
block.thorium-wall.description = Um bloco defensivo forte. Boa proteção contra inimigos.
|
||||||
block.thorium-wall-large.description = Um bloco defensivo forte.\nBoa proteção contra inimigos.\nOcupa múltiplos blocos.
|
block.thorium-wall-large.description = Um bloco defensivo forte. Boa proteção contra inimigos. Ocupa múltiplos blocos.
|
||||||
block.phase-wall.description = Um muro revestido com um composto especial baseado em tecido de fase. Desvia a maioria das balas no impacto.
|
block.phase-wall.description = Um muro revestido com tecido de fase. Reflete a maioria das balas no impacto.
|
||||||
block.phase-wall-large.description = Um muro revestido com um composto especial baseado em tecido de fase. Desvia a maioria das balas ao impacto.\nOcupa múltiplos blocos.
|
block.phase-wall-large.description = Um muro revestido com tecido de fase. Reflete a maioria das balas ao impacto. Ocupa múltiplos blocos.
|
||||||
block.surge-wall.description = Um bloco defensivo extremamente durável.\nSe carrega com eletricidade no contato com as balas, soltando-as aleatoriamente.
|
block.surge-wall.description = Um bloco defensivo extremamente durável. Se carrega com eletricidade no contato com as balas, soltando-as aleatoriamente.
|
||||||
block.surge-wall-large.description = Um bloco defensivo extremamente durável.\nSe carrega com eletricidade no contato com as balas, soltando-as aleatoriamente.\nOcupa multiplos blocos.
|
block.surge-wall-large.description = Um bloco defensivo extremamente durável. Se carrega com eletricidade no contato com as balas, soltando-as aleatoriamente. Ocupa multiplos blocos.
|
||||||
block.door.description = Uma pequeda porta. Pode ser aberta e fechada ao tocar.
|
block.door.description = Uma pequeda porta. Pode ser aberta e fechada ao tocar.
|
||||||
block.door-large.description = Uma grande porta. Pode ser aberta e fechada ao tocar.\nOcupa múltiplos blocos.
|
block.door-large.description = Uma grande porta. Pode ser aberta e fechada ao tocar. Ocupa múltiplos blocos.
|
||||||
block.mender.description = Periodicamente repara blocos vizinhos. Mantem as defesas reparadas em e entre ondas.\nPode usar silício para aumentar o alcance e a eficácia.
|
block.mender.description = Periodicamente repara blocos vizinhos. Mantem as defesas reparadas em e entre ondas. Pode usar silício para aumentar o alcance e a eficácia.
|
||||||
block.mend-projector.description = Uma versão melhorada do reparador. Repara blocos vizinhos.\nPode usar tecido de fase para aumentar o alcance e a eficácia.
|
block.mend-projector.description = Uma versão melhorada do reparador. Repara blocos vizinhos. Pode usar tecido de fase para aumentar o alcance e a eficácia.
|
||||||
block.overdrive-projector.description = Aumenta a velocidade de construções vizinhas.\nPode usar tecido de fase para aumentar o alcance e a eficácia.
|
block.overdrive-projector.description = Aumenta a velocidade de construções vizinhas. Pode usar tecido de fase para aumentar o alcance e a eficácia.
|
||||||
block.force-projector.description = Cria um campo de força hexagonal ao redor de si, protegendo construções e unidades.\nAquece demais se o escudo tomar dano. Pode usar líquidos para evitar superaquecimento. Pode-se usar tecido de fase para aumentar o tamanho do escudo.
|
block.overdrive-dome.description = Aumenta a velocidade de construções vizinhas. Requer tecido de fase e silício para operar.
|
||||||
block.shock-mine.description = Danifica inimigos em cima da mina. Quase invisivel ao inimigo.
|
block.force-projector.description = Cria um campo de força hexagonal ao redor de si, protegendo construções e unidades. Superaquece se muito dano for recebido. Opcionalmente usa refrigeradores para evitar superaquecimento. Tecido de fase aumenta o tamanho do escudo.
|
||||||
block.conveyor.description = Bloco de transporte de item basico. Move os itens a frente e os deposita automaticamente em torretas ou construtores. Rotacionável.
|
block.shock-mine.description = Danifica inimigos em cima da mina. Quase invisível ao inimigo.
|
||||||
|
block.conveyor.description = Bloco de transporte de item básico. Move os itens a frente e os deposita automaticamente em torretas ou construtores. Rotacionável.
|
||||||
block.titanium-conveyor.description = Bloco de transporte de item avançado. Move itens mais rapidos que esteiras padrões.
|
block.titanium-conveyor.description = Bloco de transporte de item avançado. Move itens mais rapidos que esteiras padrões.
|
||||||
block.plastanium-conveyor.description = Move os itens por grupos.\nRecebe os itens por trás, e despeja eles nas três outras direções.
|
block.plastanium-conveyor.description = Move os itens por grupos.Recebe os itens por trás, e despeja eles nas três outras direções.
|
||||||
block.junction.description = Funciona como uma ponte para duas esteiras que estejam se cruzando. Util em situações que tenha duas esteiras separadas carregando materiais diferentes para lugares diferentes.
|
block.junction.description = Funciona como uma ponte para duas esteiras que estejam se cruzando. Útil em situações que tenha duas esteiras separadas carregando materiais diferentes para lugares diferentes.
|
||||||
block.bridge-conveyor.description = Bloco de transporte de itens avancado. Possibilita o transporte de itens acima de 3 blocos de construção ou paredes.
|
block.bridge-conveyor.description = Bloco de transporte de itens avançado. Possibilita o transporte de itens acima de 3 blocos de construção ou paredes.
|
||||||
block.phase-conveyor.description = Bloco de transporte de item avançado. Usa energia para teleportar itens a uma esteira de fase sobre uma severa distancia.
|
block.phase-conveyor.description = Instantaneamente transporta itens em cima de terreno ou contruções. Alcance mais longo do que uma esteira-ponte, mas requer energia.
|
||||||
block.sorter.description = Filtra itens passando o selecionado para frente e os outros para os lados.
|
block.sorter.description = Filtra itens passando o selecionado para frente e os outros para os lados.
|
||||||
block.inverted-sorter.description = Filtra os itens como um ordenador normal, porém, os itens escolhidos sairão pelas laterais.
|
block.inverted-sorter.description = Filtra os itens como um ordenador normal, porém, os itens escolhidos sairão pelas laterais.
|
||||||
block.router.description = Aceita itens de uma direção e os divide em 3 direções igualmente. Util para espalhar materiais de uma fonte para multiplos alvos.
|
block.router.description = Aceita itens de uma direção e os divide em 3 direções igualmente. Útil para espalhar materiais de uma fonte para multiplos alvos.
|
||||||
|
block.router.details = Um mal necessário. Usar próximo de entradas de produção não é recomendado, pois ele vai ser entupido pela saída de itens.
|
||||||
block.distributor.description = Um roteador avançado que espalhas os itens em 7 direções igualmente.
|
block.distributor.description = Um roteador avançado que espalhas os itens em 7 direções igualmente.
|
||||||
block.overflow-gate.description = Uma combinação de roteador e divisor que apenas manda para a esquerda e direita se a frente estiver bloqueada.
|
block.overflow-gate.description = Apenas manda itens para a esquerda e direita se a frente estiver bloqueada.
|
||||||
block.underflow-gate.description = O oposto de um portão de sobrecarga. Manda pra frente se a esquerda e a direita estiverem bloqueadas.
|
block.underflow-gate.description = O oposto de um portão de sobrecarga. Apenas manda itens para frente se a esquerda e a direita estiverem bloqueadas.
|
||||||
block.mass-driver.description = Bloco de transporte de itens supremo. Coleta itens severos e atira eles em outro mass driver de uma longa distancia.
|
block.mass-driver.description = Estrutura de transporte de itens de longo alcance. Coleta grupos de itens e os atira em outras catapultas electromagnéticas.
|
||||||
block.mechanical-pump.description = Uma bomba barata com baixa saída de líquidos, sem consumo de energia.
|
block.mechanical-pump.description = Uma bomba barata com baixa saída de líquidos que não consome energia.
|
||||||
block.rotary-pump.description = Uma bomba avançada. Bombeia mais líquido, mas requer energia.
|
block.rotary-pump.description = Uma bomba avançada. Bombeia mais líquido, mas requer energia.
|
||||||
block.thermal-pump.description = A bomba final.
|
block.thermal-pump.description = A bomba final. Bombeia líquidos com o máximo de eficiência, mas requer uma quantidade maior de energia.
|
||||||
block.conduit.description = Bloco básico de transporte de líquidos. Move líquidos para a frente. Usado em conjunto com bombas e outros canos.
|
block.conduit.description = Bloco básico de transporte de líquidos. Move líquidos para a frente. Usado em conjunto com bombas e outros canos.
|
||||||
block.pulse-conduit.description = Bloco avancado de transporte de liquido. Transporta liquidos mais rápido e armazena mais que os canos padrões.
|
block.pulse-conduit.description = Bloco avancado de transporte de líquido. Transporta líquidos mais rápido e armazena mais que os canos padrões.
|
||||||
block.plated-conduit.description = Move líquidos na mesma velocidade que canos de pulso, mas possui mais blindagem. Não aceita fluidos dos lados de nada além de outros canos.\nVaza menos.
|
block.plated-conduit.description = Move líquidos na mesma velocidade que canos de pulso, mas possui mais blindagem. Não aceita fluidos dos lados de nada além de outros canos.\nVaza menos.
|
||||||
block.liquid-router.description = Aceita liquidos de uma direcão e os joga em 3 direções igualmente. Pode armazenar uma certa quantidade de liquido. Útil para espalhar líquidos de uma fonte para múltiplos alvos.
|
block.liquid-router.description = Aceita líquidos de uma direcão e os joga em 3 direções igualmente. Pode armazenar uma certa quantidade de líquido. Útil para espalhar líquidos de uma fonte para múltiplos alvos.
|
||||||
block.liquid-tank.description = Armazena grandes quantidades de liquido. Use quando a demanda de materiais não for constante ou para guardar itens para resfriar blocos vitais.
|
block.liquid-tank.description = Armazena grandes quantidades de líquido. Manda para todos os lados, similarmente a um roteador de líquido.
|
||||||
block.liquid-junction.description = Age como uma ponte para dois canos que se cruzam. Útil em situações em que há dois cano carregando liquidos diferentes até localizações diferentes.
|
block.liquid-junction.description = Age como uma ponte para dois canos que se cruzam. Útil em situações em que há dois cano carregando líquidos diferentes até localizações diferentes.
|
||||||
block.bridge-conduit.description = Bloco de transporte de liquidos avancados. Possibilita o transporte de liquido sobre 3 blocos acima de construções ou paredes
|
block.bridge-conduit.description = Bloco de transporte de líquidos avancados. Possibilita o transporte de líquido sobre 3 blocos acima de construções ou paredes
|
||||||
block.phase-conduit.description = Bloco avancado de transporte de liquido. Usa energia para teleportar liquidos para outro cano de fase em uma grande distância.
|
block.phase-conduit.description = Bloco avancado de transporte de líquido. Usa energia para teleportar líquidos para outro cano de fase em uma grande distância.
|
||||||
block.power-node.description = Transmite energia para células conectadas. A célula vai receber energia ou alimentar qualquer bloco adjacente.
|
block.power-node.description = Transmite energia para células conectadas. A célula vai receber energia ou alimentar qualquer bloco adjacente.
|
||||||
block.power-node-large.description = Uma célula de energia avançada com maior alcance e mais conexões.
|
block.power-node-large.description = Uma célula de energia avançada com maior alcance e mais conexões.
|
||||||
block.surge-tower.description = Uma célula de energia com um extremo alcance mas com menos conexões disponíveis.
|
block.surge-tower.description = Uma célula de energia com um extremo alcance mas com menos conexões disponíveis.
|
||||||
@@ -1309,6 +1437,7 @@ block.laser-drill.description = Possibilita mineração ainda mais rapida usando
|
|||||||
block.blast-drill.description = A melhor mineradora. Requer muita energia.
|
block.blast-drill.description = A melhor mineradora. Requer muita energia.
|
||||||
block.water-extractor.description = Extrai água subterrânea. Usado em locais sem água disponível na superficie.
|
block.water-extractor.description = Extrai água subterrânea. Usado em locais sem água disponível na superficie.
|
||||||
block.cultivator.description = Cultiva pequenas concentrações de esporos na atmosfera em cápsulas prontas.
|
block.cultivator.description = Cultiva pequenas concentrações de esporos na atmosfera em cápsulas prontas.
|
||||||
|
block.cultivator.details = Tecnologia recuperada. Costumava produzir quantidades massivas de biomassa o mais eficiente o possível. Provavelmente o primeiro incubador de esporos cobrindo Serpulo agora.
|
||||||
block.oil-extractor.description = Usa altas quantidades de energia para extrair petróleo da areia. Use quando não tiver fontes de petróleo por perto.
|
block.oil-extractor.description = Usa altas quantidades de energia para extrair petróleo da areia. Use quando não tiver fontes de petróleo por perto.
|
||||||
block.core-shard.description = A primeira iteração do núcleo. Uma vez destruído, todo o contato com a região é perdido. Não deixe isso acontecer.
|
block.core-shard.description = A primeira iteração do núcleo. Uma vez destruído, todo o contato com a região é perdido. Não deixe isso acontecer.
|
||||||
block.core-foundation.description = A segunda versão do núcleo. Armadurado melhor. Armazena mais recursos.
|
block.core-foundation.description = A segunda versão do núcleo. Armadurado melhor. Armazena mais recursos.
|
||||||
@@ -1318,19 +1447,41 @@ block.container.description = Guarda uma pequena quantidade de itens. Usado para
|
|||||||
block.unloader.description = Descarrega itens de um container, Descarrega em uma esteira ou diretamente em um bloco adjacente. O tipo de item que pode ser descarregado pode ser mudado clicando no descarregador.
|
block.unloader.description = Descarrega itens de um container, Descarrega em uma esteira ou diretamente em um bloco adjacente. O tipo de item que pode ser descarregado pode ser mudado clicando no descarregador.
|
||||||
block.launch-pad.description = Lança montes de itens sem qualquer necessidade de um lançamento de núcleo.
|
block.launch-pad.description = Lança montes de itens sem qualquer necessidade de um lançamento de núcleo.
|
||||||
block.launch-pad-large.description = Uma versão melhorada da plataforma de lançamento. Guarda mais itens. Lança mais frequentemente.
|
block.launch-pad-large.description = Uma versão melhorada da plataforma de lançamento. Guarda mais itens. Lança mais frequentemente.
|
||||||
block.duo.description = Uma pequena torre de baixo custo. Útil contra unidades terrestres.
|
block.duo.description = Dispara balas alternadas em inimigos.
|
||||||
block.scatter.description = Uma torre antiaérea essencial para a defesa. Dispara vários tiros aglomerados de chumbo, sucata ou metavidro.
|
block.scatter.description = Dispara tiros aglomerados de chumbo, sucata ou metavidro em unidades aéreas.
|
||||||
block.scorch.description = Uma torre que queima qualquer unidade que estiver próxima. Altamente efetivo se for de perto.
|
block.scorch.description = Queima qualquer unidade que estiver próxima. Altamente efetivo se for de perto.
|
||||||
block.hail.description = Uma pequena torre de artilharia com grande alcance.
|
block.hail.description = Dispara pequenas granadas em inimigos terrestres a longas distâncias.
|
||||||
block.wave.description = Uma torre de tamanho médio. Lança jatos de líquidos nos seus inimigos. Automaticamente apaga incêndios se for abastecido com água ou fluido criogênico.
|
block.wave.description = Lança jatos de líquido nos seus inimigos. Automaticamente apaga incêndios se for abastecido com água ou crio-fluido.
|
||||||
block.lancer.description = Uma torre laser anti-terrestre média. Carrega e dispara poderosos feixes de energia.
|
block.tsunami.description = Lança poderosos jatos de líquido em inimigos. Automaticamente apaga incêndios se for abastecido com água ou crio-fluido.
|
||||||
block.arc.description = Uma pequena torre elétrica com curto alcance. Dispara arcos de eletricidade nos seus inimigos.
|
block.lancer.description = Carrega e dispara poderosos feixes de energia.
|
||||||
block.swarmer.description = Uma torre de mísseis de tamanho médio. Ataca ambos terrestre e aéreo disparando misseis teleguiados.
|
block.arc.description = Dispara arcos de eletricidade em alvos terrestres.
|
||||||
block.salvo.description = Uma grande, versão avançada da dupla. Dispara rápidas rajadas de tiros nos seus inimigos.
|
block.parallax.description = Dispara um feixe de energia que puxa unidades aéreas, danificando-as no processo.
|
||||||
block.fuse.description = Uma torre grande com curto alcance. Dispara três feixes perfurantes nos seus inimigos.
|
|
||||||
block.ripple.description = Uma torre de artilharia extremamente poderosa. Dispara varios tiros aglomerados a uma grande distância nos seus inimigos.
|
|
||||||
block.cyclone.description = Uma grande torre que dispara balas explosivas que se fragmentam em unidades aéreas e terrestres próximas.
|
|
||||||
block.spectre.description = Um grande canhão massivo. Dispara grandes tiros perfuradores de blindagem em inimigos aéreos e terrestres.
|
|
||||||
block.meltdown.description = Um grande canhão laser massivo. Carrega e dispara um poderoso e persistente feixe nos seus inimigos. Requer um resfriamento para ser operada.
|
|
||||||
block.repair-point.description = Continuamente repara a unidade danificada mais proxima.
|
|
||||||
block.segment.description = Destrói projéteis inimigos que se aproximam. Feixes não serão detectados.
|
block.segment.description = Destrói projéteis inimigos que se aproximam. Feixes não serão detectados.
|
||||||
|
block.swarmer.description = Dispara misseis teleguiados em inimigos.
|
||||||
|
block.salvo.description = Dispara rápidas rajadas de tiros em inimigos.
|
||||||
|
block.fuse.description = Dispara três feixes perfurantes em inimigos.
|
||||||
|
block.ripple.description = Dispara grupos de granadas em alvos terrestres a longas distâncias.
|
||||||
|
block.cyclone.description = Dispara aglomerados de fogo antiaéreo explosivos em inimigos próximos.
|
||||||
|
block.spectre.description = Dispara grandes tiros perfuradores de armaduras tanto em inimigos aéreos quanto terrestres.
|
||||||
|
block.meltdown.description = Carrega e dispara um poderoso e persistente feixe de laser em inimigos. Requer refrigeradores para operar.
|
||||||
|
block.foreshadow.description = Dispara um feixe gigante de único alvo a grandes distâncias. Prioriza inimigos com maior vida máxima.
|
||||||
|
block.repair-point.description = Continuamente repara a unidade danificada mais proxima.
|
||||||
|
block.payload-conveyor.description = Move cargas grandes, como unidades de fábricas.
|
||||||
|
block.payload-router.description = Separa cargas recebidas em 3 direções de saída.
|
||||||
|
block.command-center.description = Controla o comportamento de unidades com vários comandos diferentes.
|
||||||
|
block.ground-factory.description = Produz unidades terrestres. Unidades produzidas podem ser usadas diretamente, ou movido em reconstrutores para melhorar.
|
||||||
|
block.air-factory.description = Produz unidades aéreas. Unidades produzidas podem ser usadas diretamente, ou movido em reconstrutores para melhorar.
|
||||||
|
block.naval-factory.description = Produz unidades navais. Unidades produzidas podem ser usadas diretamente, ou movido em reconstrutores para melhorar.
|
||||||
|
block.additive-reconstructor.description = Melhora unidades recebidas para o seu segundo nível.
|
||||||
|
block.multiplicative-reconstructor.description = Melhora unidades recebidas para o seu terceiro nível.
|
||||||
|
block.exponential-reconstructor.description = Melhora unidades recebidas para o seu quarto nível.
|
||||||
|
block.tetrative-reconstructor.description = Melhora unidades recebidas para o seu quinto e último nível.
|
||||||
|
block.micro-processor.description = Executa uma sequência de instruções lógicas em um loop. Pode ser usado para controlar unidades e construções.
|
||||||
|
block.logic-processor.description = Executa uma sequência de instruções lógicas em um loop. Pode ser usado para controlar unidades e construções. Mais rápido que um micro processador.
|
||||||
|
block.hyper-processor.description = Executa uma sequência de instruções lógicas em um loop. Pode ser usado para controlar unidades e construções. Mais rápido que um processador lógico.
|
||||||
|
block.memory-cell.description = Guarda informações para um processador lógico.
|
||||||
|
block.memory-bank.description = Guarda informações para um processador lógico. Capacidade alta.
|
||||||
|
block.logic-display.description = Exibe gráficos arbitrários de um processador lógico.
|
||||||
|
block.large-logic-display.description = Exibe gráficos arbitrários de um processador lógico.
|
||||||
|
block.switch.description = Uma alavanca alternável. O seu estado pode ser lido e controlado com processadores lógicos.
|
||||||
|
block.interplanetary-accelerator.description = Uma torre-canhão eletromagnético gigante. Acelera núcleos escapando a velocidade para instalação interplanetária.
|
||||||
|
|||||||
@@ -67,6 +67,14 @@ schematic.delete.confirm = Schema această va fi ștearsă permanent.
|
|||||||
schematic.rename = Redenumește Schema
|
schematic.rename = Redenumește Schema
|
||||||
schematic.info = {0}x{1}, {2} blocuri
|
schematic.info = {0}x{1}, {2} blocuri
|
||||||
schematic.disabled = [scarlet]Schemele sunt dezactivate[]\nNu ai voie să folosești scheme pe această [accent]hartă[] sau [accent]server.
|
schematic.disabled = [scarlet]Schemele sunt dezactivate[]\nNu ai voie să folosești scheme pe această [accent]hartă[] sau [accent]server.
|
||||||
|
schematic.tags = Etichete:
|
||||||
|
schematic.edittags = Editează Etichetele
|
||||||
|
schematic.addtag = Adaugă Etichetă
|
||||||
|
schematic.texttag = Etichetă Text
|
||||||
|
schematic.icontag = Etichetă Iconiță
|
||||||
|
schematic.renametag = Redenumește Eticheta
|
||||||
|
schematic.tagdelconfirm = Vrei să ștergi permanent eticheta?
|
||||||
|
schematic.tagexists = Acea etichetă există deja.
|
||||||
|
|
||||||
stats = Informații
|
stats = Informații
|
||||||
stat.wave = Valuri Învinse:[accent] {0}
|
stat.wave = Valuri Învinse:[accent] {0}
|
||||||
@@ -306,9 +314,8 @@ data.exported = Date exportate.
|
|||||||
data.invalid = Aceste date de joc nu sunt valide.
|
data.invalid = Aceste date de joc nu sunt valide.
|
||||||
data.import.confirm = Importul de date externe va suprascrie[scarlet] toate[] datele tale de joc curente.\n[accent]Acest proces este ireversibil![]\n\nOdată ce datele sunt importate, jocul tău se va opri imediat.
|
data.import.confirm = Importul de date externe va suprascrie[scarlet] toate[] datele tale de joc curente.\n[accent]Acest proces este ireversibil![]\n\nOdată ce datele sunt importate, jocul tău se va opri imediat.
|
||||||
quit.confirm = Sigur vrei să abandonezi?
|
quit.confirm = Sigur vrei să abandonezi?
|
||||||
quit.confirm.tutorial = Sigur știi ce faci?\nTutorialul poate fi reluat în[accent] Setări->Joc->Reia Tutorialul.[]
|
|
||||||
loading = [accent]Se încarcă...
|
loading = [accent]Se încarcă...
|
||||||
reloading = [accent]Se Reincarcă Modurile...
|
reloading = [accent]Se Reîncarcă Modurile...
|
||||||
saving = [accent]Se salvează...
|
saving = [accent]Se salvează...
|
||||||
respawn = [accent][[{0}][] ca să te refaci în nucleu
|
respawn = [accent][[{0}][] ca să te refaci în nucleu
|
||||||
cancelbuilding = [accent][[{0}][] pt a curăța planul
|
cancelbuilding = [accent][[{0}][] pt a curăța planul
|
||||||
@@ -479,6 +486,7 @@ filter.option.circle-scale = Scară circulară
|
|||||||
filter.option.octaves = Octave
|
filter.option.octaves = Octave
|
||||||
filter.option.falloff = Cădere
|
filter.option.falloff = Cădere
|
||||||
filter.option.angle = Unghi
|
filter.option.angle = Unghi
|
||||||
|
filter.option.rotate = Rotește
|
||||||
filter.option.amount = Cantitate
|
filter.option.amount = Cantitate
|
||||||
filter.option.block = Bloc
|
filter.option.block = Bloc
|
||||||
filter.option.floor = Podea
|
filter.option.floor = Podea
|
||||||
@@ -499,6 +507,7 @@ campaign = Campanie
|
|||||||
load = Încarcă
|
load = Încarcă
|
||||||
save = Salvează
|
save = Salvează
|
||||||
fps = FPS: {0}
|
fps = FPS: {0}
|
||||||
|
tps = TPS: {0}
|
||||||
ping = Ping: {0}ms
|
ping = Ping: {0}ms
|
||||||
language.restart = Repornește jocul pentru ca setările de limbă să aibă efect.
|
language.restart = Repornește jocul pentru ca setările de limbă să aibă efect.
|
||||||
settings = Setări
|
settings = Setări
|
||||||
@@ -530,7 +539,7 @@ launch.from = Lansează Din: [accent]{0}
|
|||||||
launch.destination = Destinație: {0}
|
launch.destination = Destinație: {0}
|
||||||
configure.invalid = Cantitatea trebuie să fie un număr între 0 și {0}.
|
configure.invalid = Cantitatea trebuie să fie un număr între 0 și {0}.
|
||||||
add = Adaugă...
|
add = Adaugă...
|
||||||
boss.health = Viața Gardianului
|
guardian = Gardian
|
||||||
|
|
||||||
connectfail = [scarlet]Eroare de conexiune:\n\n[accent]{0}
|
connectfail = [scarlet]Eroare de conexiune:\n\n[accent]{0}
|
||||||
error.unreachable = Nu s-a putut ajunge la server.\nesigur adresa e scrisă corect?
|
error.unreachable = Nu s-a putut ajunge la server.\nesigur adresa e scrisă corect?
|
||||||
@@ -574,6 +583,7 @@ sector.attacked = Sectorul [accent]{0}[white] este atacat!
|
|||||||
sector.lost = Ai pierdut sectorul [accent]{0}[white]!
|
sector.lost = Ai pierdut sectorul [accent]{0}[white]!
|
||||||
#spațiul lipsă de mai jos e intenționat
|
#spațiul lipsă de mai jos e intenționat
|
||||||
sector.captured = Ai capturat sectorul [accent]{0}[white]!
|
sector.captured = Ai capturat sectorul [accent]{0}[white]!
|
||||||
|
sector.changeicon = Schimbă Iconița
|
||||||
|
|
||||||
threat.low = Scăzută
|
threat.low = Scăzută
|
||||||
threat.medium = Medie
|
threat.medium = Medie
|
||||||
@@ -626,7 +636,8 @@ status.wet.name = Umed
|
|||||||
status.muddy.name = Noroios
|
status.muddy.name = Noroios
|
||||||
status.melting.name = Topește
|
status.melting.name = Topește
|
||||||
status.sapped.name = Slăbește
|
status.sapped.name = Slăbește
|
||||||
status.spore-slowed.name = Împiedicat de Spori
|
status.electrified.name = Electrificat
|
||||||
|
status.spore-slowed.name = Încetinit de Spori
|
||||||
status.tarred.name = Păcurit
|
status.tarred.name = Păcurit
|
||||||
status.overclock.name = Suprasolicitat
|
status.overclock.name = Suprasolicitat
|
||||||
status.shocked.name = Șoc
|
status.shocked.name = Șoc
|
||||||
@@ -654,6 +665,7 @@ settings.clearcampaignsaves.confirm = Sigur vrei să ștergi toate salvările di
|
|||||||
paused = [accent]< Pauză >
|
paused = [accent]< Pauză >
|
||||||
clear = Curăță
|
clear = Curăță
|
||||||
banned = [scarlet]Interzis
|
banned = [scarlet]Interzis
|
||||||
|
unsupported.environment = [scarlet]Mediu Neacceptat
|
||||||
yes = Da
|
yes = Da
|
||||||
no = Nu
|
no = Nu
|
||||||
info.title = Info
|
info.title = Info
|
||||||
@@ -692,6 +704,7 @@ stat.memorycapacity = Capacitate Memorie
|
|||||||
stat.basepowergeneration = Generare Electricitate (Bază)
|
stat.basepowergeneration = Generare Electricitate (Bază)
|
||||||
stat.productiontime = Timp Producție
|
stat.productiontime = Timp Producție
|
||||||
stat.repairtime = Durată Reparare Bloc
|
stat.repairtime = Durată Reparare Bloc
|
||||||
|
stat.repairspeed = Viteză Reparare
|
||||||
stat.weapons = Arme
|
stat.weapons = Arme
|
||||||
stat.bullet = Glonț
|
stat.bullet = Glonț
|
||||||
stat.speedincrease = Creștere Viteză
|
stat.speedincrease = Creștere Viteză
|
||||||
@@ -737,13 +750,15 @@ stat.speedmultiplier = Multiplicator Viteză
|
|||||||
stat.reloadmultiplier = Multiplicator Lovituri/sec
|
stat.reloadmultiplier = Multiplicator Lovituri/sec
|
||||||
stat.buildspeedmultiplier = Multiplicator Viteză Construcție
|
stat.buildspeedmultiplier = Multiplicator Viteză Construcție
|
||||||
stat.reactive = Reacționează la
|
stat.reactive = Reacționează la
|
||||||
|
stat.healing = Reparare
|
||||||
|
|
||||||
ability.forcefield = Câmp de Forță
|
ability.forcefield = Câmp de Forță
|
||||||
ability.repairfield = Câmp de Reparare
|
ability.repairfield = Câmp de Reparare
|
||||||
ability.statusfield = Câmp Suprasolicitare Unități
|
ability.statusfield = {0} Câmp Suprasolicitare Unități
|
||||||
ability.unitspawn = Fabrică de {0}
|
ability.unitspawn = Fabrică de {0}
|
||||||
ability.shieldregenfield = Scut Regenerabil
|
ability.shieldregenfield = Scut Regenerabil
|
||||||
ability.movelightning = Mișcare Fulger
|
ability.movelightning = Mișcare Fulger
|
||||||
|
ability.energyfield = Câmp de Energie: [accent]{0}[] forță pe ~ [accent]{1}[] blocuri / [accent]{2}[] ținte
|
||||||
|
|
||||||
bar.drilltierreq = Burghiu Mai Bun Necesar
|
bar.drilltierreq = Burghiu Mai Bun Necesar
|
||||||
bar.noresources = Resurse lipsă
|
bar.noresources = Resurse lipsă
|
||||||
@@ -766,6 +781,7 @@ bar.power = Electricitate
|
|||||||
bar.progress = Progres
|
bar.progress = Progres
|
||||||
bar.input = Necesită
|
bar.input = Necesită
|
||||||
bar.output = Produce
|
bar.output = Produce
|
||||||
|
bar.strength = [stat]{0}[lightgray]x putere
|
||||||
|
|
||||||
units.processorcontrol = [lightgray]Controlat de Procesor
|
units.processorcontrol = [lightgray]Controlat de Procesor
|
||||||
|
|
||||||
@@ -974,6 +990,7 @@ rules.wavetimer = Valuri pe Timp
|
|||||||
rules.waves = Valuri
|
rules.waves = Valuri
|
||||||
rules.attack = Modul Atac
|
rules.attack = Modul Atac
|
||||||
rules.buildai = AI-ul Construiește
|
rules.buildai = AI-ul Construiește
|
||||||
|
rules.corecapture = Capturează Nucleele Distruse
|
||||||
rules.enemyCheat = Resurse infinite pt AI (echipa roșie)
|
rules.enemyCheat = Resurse infinite pt AI (echipa roșie)
|
||||||
rules.blockhealthmultiplier = Multiplicatorul Vieții Blocurilor
|
rules.blockhealthmultiplier = Multiplicatorul Vieții Blocurilor
|
||||||
rules.blockdamagemultiplier = Multiplicatorul Deteriorării Blocurilor
|
rules.blockdamagemultiplier = Multiplicatorul Deteriorării Blocurilor
|
||||||
@@ -1029,6 +1046,7 @@ item.blast-compound.name = Compus Explozibil
|
|||||||
item.pyratite.name = Piratită
|
item.pyratite.name = Piratită
|
||||||
item.metaglass.name = Metasticlă
|
item.metaglass.name = Metasticlă
|
||||||
item.scrap.name = Fier Vechi
|
item.scrap.name = Fier Vechi
|
||||||
|
|
||||||
liquid.water.name = Apă
|
liquid.water.name = Apă
|
||||||
liquid.slag.name = Zgură
|
liquid.slag.name = Zgură
|
||||||
liquid.oil.name = Petrol
|
liquid.oil.name = Petrol
|
||||||
@@ -1060,6 +1078,11 @@ unit.minke.name = Minke
|
|||||||
unit.bryde.name = Bryde
|
unit.bryde.name = Bryde
|
||||||
unit.sei.name = Sei
|
unit.sei.name = Sei
|
||||||
unit.omura.name = Omura
|
unit.omura.name = Omura
|
||||||
|
unit.retusa.name = Retusa
|
||||||
|
unit.oxynoe.name = Oxynoe
|
||||||
|
unit.cyerce.name = Cyerce
|
||||||
|
unit.aegires.name = Aegires
|
||||||
|
unit.navanax.name = Navanax
|
||||||
unit.alpha.name = Alpha
|
unit.alpha.name = Alpha
|
||||||
unit.beta.name = Beta
|
unit.beta.name = Beta
|
||||||
unit.gamma.name = Gamma
|
unit.gamma.name = Gamma
|
||||||
@@ -1119,6 +1142,7 @@ block.craters.name = Cratere
|
|||||||
block.sand-water.name = Apă cu Nisip
|
block.sand-water.name = Apă cu Nisip
|
||||||
block.darksand-water.name = Apă cu Nisip Negru
|
block.darksand-water.name = Apă cu Nisip Negru
|
||||||
block.char.name = Turbă
|
block.char.name = Turbă
|
||||||
|
block.rhyolite.name = Riolit
|
||||||
block.dacite.name = Dacit
|
block.dacite.name = Dacit
|
||||||
block.dacite-boulder.name = Bolovan de Dacit
|
block.dacite-boulder.name = Bolovan de Dacit
|
||||||
block.dacite-wall.name = Perete de Dacit
|
block.dacite-wall.name = Perete de Dacit
|
||||||
@@ -1206,9 +1230,9 @@ block.cultivator.name = Cultivator
|
|||||||
block.conduit.name = Conductă
|
block.conduit.name = Conductă
|
||||||
block.mechanical-pump.name = Pompă Mecanică
|
block.mechanical-pump.name = Pompă Mecanică
|
||||||
block.item-source.name = Sursă de Material
|
block.item-source.name = Sursă de Material
|
||||||
block.item-void.name = Portal de Material
|
block.item-void.name = Vid de Material
|
||||||
block.liquid-source.name = Sursă de Lichid
|
block.liquid-source.name = Sursă de Lichid
|
||||||
block.liquid-void.name = Portal de Lichid
|
block.liquid-void.name = Vid de Lichid
|
||||||
block.power-void.name = Consumator de Electricitate
|
block.power-void.name = Consumator de Electricitate
|
||||||
block.power-source.name = Sursă de Electricitate
|
block.power-source.name = Sursă de Electricitate
|
||||||
block.unloader.name = Descărcător
|
block.unloader.name = Descărcător
|
||||||
@@ -1227,6 +1251,7 @@ block.solar-panel.name = Panou Solar
|
|||||||
block.solar-panel-large.name = Panou Solar Mare
|
block.solar-panel-large.name = Panou Solar Mare
|
||||||
block.oil-extractor.name = Extractor de Petrol
|
block.oil-extractor.name = Extractor de Petrol
|
||||||
block.repair-point.name = Punct de Reparare
|
block.repair-point.name = Punct de Reparare
|
||||||
|
block.repair-turret.name = Pistol de Reparare
|
||||||
block.pulse-conduit.name = Conductă cu Puls
|
block.pulse-conduit.name = Conductă cu Puls
|
||||||
block.plated-conduit.name = Conductă Armată
|
block.plated-conduit.name = Conductă Armată
|
||||||
block.phase-conduit.name = Conductă de Fază
|
block.phase-conduit.name = Conductă de Fază
|
||||||
@@ -1269,6 +1294,12 @@ block.exponential-reconstructor.name = Reconstructor Exponențial
|
|||||||
block.tetrative-reconstructor.name = Reconstructor Tetrativ
|
block.tetrative-reconstructor.name = Reconstructor Tetrativ
|
||||||
block.payload-conveyor.name = Bandă în Masă
|
block.payload-conveyor.name = Bandă în Masă
|
||||||
block.payload-router.name = Router în Masă
|
block.payload-router.name = Router în Masă
|
||||||
|
block.duct.name = Canal
|
||||||
|
block.duct-router.name = Router de Canal
|
||||||
|
block.duct-bridge.name = Pod de Canal
|
||||||
|
block.payload-propulsion-tower.name = Turn Propulsor de Încărcătură
|
||||||
|
block.payload-void.name = Vid de Încărcătură
|
||||||
|
block.payload-source.name = Sursă de Încărcătură
|
||||||
block.disassembler.name = Dezasamblator
|
block.disassembler.name = Dezasamblator
|
||||||
block.silicon-crucible.name = Creuzet de Silicon
|
block.silicon-crucible.name = Creuzet de Silicon
|
||||||
block.overdrive-dome.name = Dom de Suprasolicitare
|
block.overdrive-dome.name = Dom de Suprasolicitare
|
||||||
@@ -1290,7 +1321,6 @@ block.memory-bank.name = Bancă de Memorie
|
|||||||
team.blue.name = albastră
|
team.blue.name = albastră
|
||||||
team.crux.name = roșie
|
team.crux.name = roșie
|
||||||
team.sharded.name = portocalie
|
team.sharded.name = portocalie
|
||||||
team.orange.name = portocalie
|
|
||||||
team.derelict.name = abandonată
|
team.derelict.name = abandonată
|
||||||
team.green.name = verde
|
team.green.name = verde
|
||||||
team.purple.name = mov
|
team.purple.name = mov
|
||||||
@@ -1311,6 +1341,7 @@ hint.placeConveyor.mobile = Benzile transportă materiale din burghie către alt
|
|||||||
hint.placeTurret = Construiește \uf861 [accent]Arme[] pt a-ți apăra baza de inamici.\n\nArmele necesită muniție. Putem folosi \uf838cupru.\nAlimentează arma folosind benzi și burghie.
|
hint.placeTurret = Construiește \uf861 [accent]Arme[] pt a-ți apăra baza de inamici.\n\nArmele necesită muniție. Putem folosi \uf838cupru.\nAlimentează arma folosind benzi și burghie.
|
||||||
hint.breaking = Ține apăsat [accent]click-dreapta[] și trage pe ecran pt a distruge blocuri.
|
hint.breaking = Ține apăsat [accent]click-dreapta[] și trage pe ecran pt a distruge blocuri.
|
||||||
hint.breaking.mobile = Activează \ue817 [accent]ciocanul[] din dreapta-jos și dă click pt a distruge blocuri.\n\nȚine apăsat cu degetul pt o secundă și trage pt a distruge mai multe blocuri deodată.
|
hint.breaking.mobile = Activează \ue817 [accent]ciocanul[] din dreapta-jos și dă click pt a distruge blocuri.\n\nȚine apăsat cu degetul pt o secundă și trage pt a distruge mai multe blocuri deodată.
|
||||||
|
hint.blockInfo = Poți vedea informații despre un bloc selectându-l în [accent]meniul de construcție[] și dând click pe butonul [accent][[?][] din dreapta.
|
||||||
hint.research = Folosește butonul \ue875 [accent]Cercetează[] pt a cerceta noi tehnologii.
|
hint.research = Folosește butonul \ue875 [accent]Cercetează[] pt a cerceta noi tehnologii.
|
||||||
hint.research.mobile = Folosește butonul \ue875 [accent]Cercetează[] din \ue88c [accent]Meniu[] pt a cerceta noi tehnologii.
|
hint.research.mobile = Folosește butonul \ue875 [accent]Cercetează[] din \ue88c [accent]Meniu[] pt a cerceta noi tehnologii.
|
||||||
hint.unitControl = Ține apăsat [accent][[Ctrl][] și [accent]dă click[] pt a controla unități aliate sau arme.
|
hint.unitControl = Ține apăsat [accent][[Ctrl][] și [accent]dă click[] pt a controla unități aliate sau arme.
|
||||||
@@ -1344,7 +1375,7 @@ item.graphite.description = Folosit pt componente electrice și alimentarea arme
|
|||||||
item.sand.description = Folosit pt producție sau alte materiale rafinate.
|
item.sand.description = Folosit pt producție sau alte materiale rafinate.
|
||||||
item.coal.description = Folosit extensiv ca combustibil și pt producerea de materiale rafinate.
|
item.coal.description = Folosit extensiv ca combustibil și pt producerea de materiale rafinate.
|
||||||
item.coal.details = Pare să fie materie vegetală fosilizată, formată cu mult înainte de evenimentul însămânțării.
|
item.coal.details = Pare să fie materie vegetală fosilizată, formată cu mult înainte de evenimentul însămânțării.
|
||||||
item.titanium.description = Folosit pt structuri transportatoare de lichid, burghie și aeronautică.
|
item.titanium.description = Folosit pt structuri transportatoare de lichid, burghie și în fabrici.
|
||||||
item.thorium.description = Folosit în structuri durabile și combustibil nuclear.
|
item.thorium.description = Folosit în structuri durabile și combustibil nuclear.
|
||||||
item.scrap.description = Folosit in topitoare și pulverizatoare pt a fi rafinat în alte materiale.
|
item.scrap.description = Folosit in topitoare și pulverizatoare pt a fi rafinat în alte materiale.
|
||||||
item.scrap.details = Rămășițe ale structurilor și unităților vechi.
|
item.scrap.details = Rămășițe ale structurilor și unităților vechi.
|
||||||
@@ -1565,7 +1596,7 @@ logic.nounitbuild = [red]Nu ai voie să construiești cu unitățile folosind pr
|
|||||||
lenum.type = Tipul clădirii/unității.\nde ex.: pt orice Router, va returna [accent]@router[].\nNu e un șir de caractere.
|
lenum.type = Tipul clădirii/unității.\nde ex.: pt orice Router, va returna [accent]@router[].\nNu e un șir de caractere.
|
||||||
lenum.shoot = Lovește către o locație.
|
lenum.shoot = Lovește către o locație.
|
||||||
lenum.shootp = Lovește către o unitate/clădire. Anticipează viteza țintei și a proiectilului.
|
lenum.shootp = Lovește către o unitate/clădire. Anticipează viteza țintei și a proiectilului.
|
||||||
lenum.configure = Configurația clădirii, de ex. materialul selectat pt Sortator.
|
lenum.config = Configurația clădirii, de ex. materialul selectat pt Sortator.
|
||||||
lenum.enabled = Specifică dacă clădirea este pornită.
|
lenum.enabled = Specifică dacă clădirea este pornită.
|
||||||
|
|
||||||
laccess.color = Culoarea iluminatorului.
|
laccess.color = Culoarea iluminatorului.
|
||||||
@@ -1573,6 +1604,7 @@ laccess.controller = Controlorul unității. Dacă e controlată de procesor, re
|
|||||||
laccess.dead = Specifică dacă o unitate sau clădire a murit/nu mai e validă.
|
laccess.dead = Specifică dacă o unitate sau clădire a murit/nu mai e validă.
|
||||||
laccess.controlled = Returnează:\n[accent]@ctrlProcessor[] dacă controlorul unității e procesor\n[accent]@ctrlPlayer[] dacă controlorul unității/clădirii e jucător\n[accent]@ctrlFormation[] dacă unitatea e într-o formație\nAltfel dă 0.
|
laccess.controlled = Returnează:\n[accent]@ctrlProcessor[] dacă controlorul unității e procesor\n[accent]@ctrlPlayer[] dacă controlorul unității/clădirii e jucător\n[accent]@ctrlFormation[] dacă unitatea e într-o formație\nAltfel dă 0.
|
||||||
laccess.commanded = [red]Învechit. Se va șterge![]\nFolosește [accent]controlled[].
|
laccess.commanded = [red]Învechit. Se va șterge![]\nFolosește [accent]controlled[].
|
||||||
|
laccess.progress = Progresul acțiunii, de la 0 la 1.\nReturnează progresul producției, al construcției sau reîncărcarea armelor.
|
||||||
|
|
||||||
graphicstype.clear = Umple monitorul cu o culoare.
|
graphicstype.clear = Umple monitorul cu o culoare.
|
||||||
graphicstype.color = Setează culoarea pt următoarele instrucțiuni Draw.
|
graphicstype.color = Setează culoarea pt următoarele instrucțiuni Draw.
|
||||||
@@ -1604,9 +1636,15 @@ lenum.min = Minimul a două numere.
|
|||||||
lenum.max = Maximul a două numere.
|
lenum.max = Maximul a două numere.
|
||||||
lenum.angle = Unghiul unui vector în grade.
|
lenum.angle = Unghiul unui vector în grade.
|
||||||
lenum.len = Lungimea unui vector.
|
lenum.len = Lungimea unui vector.
|
||||||
|
|
||||||
lenum.sin = Sinus în grade.
|
lenum.sin = Sinus în grade.
|
||||||
lenum.cos = Cosinus în grade.
|
lenum.cos = Cosinus în grade.
|
||||||
lenum.tan = Tangentă în grade.
|
lenum.tan = Tangentă în grade.
|
||||||
|
|
||||||
|
lenum.asin = Arcsinus în grade.
|
||||||
|
lenum.acos = Arccosinus în grade.
|
||||||
|
lenum.atan = Arctangentă în grade.
|
||||||
|
|
||||||
#cea de mai jos nu-i o greșeală, caută pe net notarea intervalelor în matematică
|
#cea de mai jos nu-i o greșeală, caută pe net notarea intervalelor în matematică
|
||||||
lenum.rand = Număr natural aleatoriu în intervalul [0, val).
|
lenum.rand = Număr natural aleatoriu în intervalul [0, val).
|
||||||
lenum.log = Logaritm natural (ln).
|
lenum.log = Logaritm natural (ln).
|
||||||
|
|||||||
@@ -1506,7 +1506,7 @@ block.memory-cell.description = Хранит информацию для лог
|
|||||||
block.memory-bank.description = Хранит информацию для логического процессора. Большая ёмкость.
|
block.memory-bank.description = Хранит информацию для логического процессора. Большая ёмкость.
|
||||||
block.logic-display.description = Отображает произвольную графику из логического процессора.
|
block.logic-display.description = Отображает произвольную графику из логического процессора.
|
||||||
block.large-logic-display.description = Отображает произвольную графику из логического процессора.
|
block.large-logic-display.description = Отображает произвольную графику из логического процессора.
|
||||||
block.interplanetary-accelerator.description = Массивный рельсотронный ускоритель. Ускоряет ядро, позволяя преодолеть гравитацию для межпланетного развёртывания
|
block.interplanetary-accelerator.description = Массивная электромагнитная башня-рельсотрон. Ускоряет ядро, позволяя преодолеть гравитацию для межпланетного развёртывания.
|
||||||
|
|
||||||
unit.dagger.description = Стреляет стандартными пулями по всем врагам поблизости.
|
unit.dagger.description = Стреляет стандартными пулями по всем врагам поблизости.
|
||||||
unit.mace.description = Стреляет потоками огня по всем врагам поблизости.
|
unit.mace.description = Стреляет потоками огня по всем врагам поблизости.
|
||||||
|
|||||||
@@ -13,11 +13,14 @@ link.google-play.description = Google Play mağaza sayfası
|
|||||||
link.f-droid.description = F-Droid kataloğu
|
link.f-droid.description = F-Droid kataloğu
|
||||||
link.wiki.description = Resmi Mindustry wikisi
|
link.wiki.description = Resmi Mindustry wikisi
|
||||||
link.suggestions.description = Yeni özellikler öner
|
link.suggestions.description = Yeni özellikler öner
|
||||||
|
link.bug.description = Hata mı buldun? Hemen şikayet et!
|
||||||
linkfail = Link açılamadı!\nURL kopyalandı.
|
linkfail = Link açılamadı!\nURL kopyalandı.
|
||||||
screenshot = Ekran görüntüsü {0} konumuna kaydedildi
|
screenshot = Ekran görüntüsü {0} konumuna kaydedildi
|
||||||
screenshot.invalid = Harita çok büyük, muhtemelen ekran görüntüsü için yeterli bellek yok.
|
screenshot.invalid = Harita çok büyük, muhtemelen ekran görüntüsü için yeterli bellek yok.
|
||||||
gameover = Kaybettin
|
gameover = Kaybettin
|
||||||
|
gameover.waiting = [accent]Harita Bekleniyor...
|
||||||
gameover.pvp = [accent] {0}[] Takımı kazandı!
|
gameover.pvp = [accent] {0}[] Takımı kazandı!
|
||||||
|
gameover.disconnect = Bağlantı Koptu!
|
||||||
highscore = [accent]Yeni rekor!
|
highscore = [accent]Yeni rekor!
|
||||||
copied = Panoya Kopyalandı.
|
copied = Panoya Kopyalandı.
|
||||||
indev.popup = [accent]v6[] şu anda [accent]beta aşamasındadır[].\n[lightgray]Bu demektir ki:[]\n[scarlet]- Mücadele modu tamamlanmamıştır[]\n- Müzik ve ses efektleri tamamlanmamıştır veya eksiktir\n- Gördüğün her şey değişime ya da kaldırılmaya açıktır.\n\nHataları ve çökmeleri [accent]Github[]'da bildir.
|
indev.popup = [accent]v6[] şu anda [accent]beta aşamasındadır[].\n[lightgray]Bu demektir ki:[]\n[scarlet]- Mücadele modu tamamlanmamıştır[]\n- Müzik ve ses efektleri tamamlanmamıştır veya eksiktir\n- Gördüğün her şey değişime ya da kaldırılmaya açıktır.\n\nHataları ve çökmeleri [accent]Github[]'da bildir.
|
||||||
@@ -38,11 +41,13 @@ be.ignore = Hayır
|
|||||||
be.noupdates = Yeni güncelleme bulunamadı.
|
be.noupdates = Yeni güncelleme bulunamadı.
|
||||||
be.check = Güncellemeleri kontrol et
|
be.check = Güncellemeleri kontrol et
|
||||||
|
|
||||||
mod.featured.title = Mod Tarayıcısı
|
mods.browser = Mod Tarayıcı
|
||||||
mod.featured.dialog.title = Mod Tarayıcısı
|
mods.browser.selected = Seçilmiş Mod
|
||||||
mods.browser.selected = Seçilen Mod
|
mods.browser.add = Yükle
|
||||||
mods.browser.add = Modu İndir
|
mods.browser.reinstall = Yeniden Yükle
|
||||||
mods.github.open = Modun GitHub Sayfasını Aç
|
mods.github.open = Repo
|
||||||
|
mods.browser.sortdate = En Yeniye göre Sırala
|
||||||
|
mods.browser.sortstars = Yıldıza göre Sırala
|
||||||
|
|
||||||
schematic = Şema
|
schematic = Şema
|
||||||
schematic.add = Şemayı Kaydet...
|
schematic.add = Şemayı Kaydet...
|
||||||
@@ -62,7 +67,16 @@ schematic.delete.confirm = Bu şema tamamen yok edilecek.
|
|||||||
schematic.rename = Şemayı yeniden adlandır
|
schematic.rename = Şemayı yeniden adlandır
|
||||||
schematic.info = {0}x{1}, {2} blok
|
schematic.info = {0}x{1}, {2} blok
|
||||||
schematic.disabled = [scarlet]Schematics disabled[]\nYou are not allowed to use schematics on this [accent]map[] or [accent]server.
|
schematic.disabled = [scarlet]Schematics disabled[]\nYou are not allowed to use schematics on this [accent]map[] or [accent]server.
|
||||||
|
schematic.tags = Etiketler:
|
||||||
|
schematic.edittags = Etiketleri Düzenle
|
||||||
|
schematic.addtag = Etiket Ekle
|
||||||
|
schematic.texttag = Yazı Etiketi
|
||||||
|
schematic.icontag = İcon Etiketi
|
||||||
|
schematic.renametag = Etiketi Yeniden Adlandır
|
||||||
|
schematic.tagdelconfirm = Bu Etiketi Silmek istediğine emin misin?
|
||||||
|
schematic.tagexists = Böyle bir Etiket zaten var.
|
||||||
|
|
||||||
|
stats = İstatistikler
|
||||||
stat.wave = Yenilen Dalgalar:[accent] {0}
|
stat.wave = Yenilen Dalgalar:[accent] {0}
|
||||||
stat.enemiesDestroyed = Yok Edilen Düşmanlar:[accent] {0}
|
stat.enemiesDestroyed = Yok Edilen Düşmanlar:[accent] {0}
|
||||||
stat.built = İnşa Edilen Yapılar:[accent] {0}
|
stat.built = İnşa Edilen Yapılar:[accent] {0}
|
||||||
@@ -86,6 +100,7 @@ joingame = Oyuna Katıl
|
|||||||
customgame = Özel Oyun
|
customgame = Özel Oyun
|
||||||
newgame = Yeni Oyun
|
newgame = Yeni Oyun
|
||||||
none = <yok>
|
none = <yok>
|
||||||
|
none.found = [lightgray]<Bulunamadı>
|
||||||
minimap = Harita
|
minimap = Harita
|
||||||
position = Pozisyon
|
position = Pozisyon
|
||||||
close = Kapat
|
close = Kapat
|
||||||
@@ -106,17 +121,20 @@ committingchanges = Değişiklikler Uygulanıyor
|
|||||||
done = Bitti
|
done = Bitti
|
||||||
feature.unsupported = Cihazınızda bu özellik desteklenmemektedir.
|
feature.unsupported = Cihazınızda bu özellik desteklenmemektedir.
|
||||||
|
|
||||||
mods.alphainfo = Modların alfa aşamasında olduğunu ve [scarlet]oldukça hatalı olabileceklerini[] unutmayın.\nBulduğunuz sorunları Mindustry GitHub'ı veya Discord'una bildirin.
|
mods.initfailed = [red]⚠[] OH NO! Mindustry Çöktü. Bu Büyük ihtimalle bir moddan kaynaklandı.\n\nSonsuz Çökmeyi önlemek için, [red]tüm modlar kapatıldı.[]\n\nBu özelliği kapamak için, [accent]Ayarlar->Oyun->Modları Çökmede Kapa[].
|
||||||
mods = Modlar
|
mods = Modlar
|
||||||
mods.none = [lightgray]Hiç mod bulunamadı!
|
mods.none = [lightgray]Hiç mod bulunamadı!
|
||||||
mods.guide = Mod Rehberi
|
mods.guide = Mod Rehberi
|
||||||
mods.report = Hata bildir
|
mods.report = Hata bildir
|
||||||
mods.openfolder = Mod klasörünü aç
|
mods.openfolder = Mod klasörünü aç
|
||||||
|
mods.viewcontent = İçeriği Görüntüle
|
||||||
mods.reload = Yeniden Yükle
|
mods.reload = Yeniden Yükle
|
||||||
mods.reloadexit = Modları yeniden yüklemek için oyun kapanacak.
|
mods.reloadexit = Modları yeniden yüklemek için oyun kapanacak.
|
||||||
|
mod.installed = [[Yüklendi]
|
||||||
mod.display = [gray]Mod:[orange] {0}
|
mod.display = [gray]Mod:[orange] {0}
|
||||||
mod.enabled = [lightgray]Etkin
|
mod.enabled = [lightgray]Etkin
|
||||||
mod.disabled = [scarlet]Devre Dışı
|
mod.disabled = [scarlet]Devre Dışı
|
||||||
|
mod.multiplayer.compatible = [gray]Çok Oyunculuya Uygun
|
||||||
mod.disable = Devre Dışı Bırak
|
mod.disable = Devre Dışı Bırak
|
||||||
mod.content = İçerik:
|
mod.content = İçerik:
|
||||||
mod.delete.error = Mod silinemiyor. Dosya kullanımda olabilir.
|
mod.delete.error = Mod silinemiyor. Dosya kullanımda olabilir.
|
||||||
@@ -150,7 +168,11 @@ launchcore = Kalkış
|
|||||||
filename = Dosya Adı:
|
filename = Dosya Adı:
|
||||||
unlocked = Yeni içerik açıldı!
|
unlocked = Yeni içerik açıldı!
|
||||||
completed = [accent]Tamamlandı
|
completed = [accent]Tamamlandı
|
||||||
|
available = Yeni Araştırma Mümkün!
|
||||||
techtree = Teknoloji Ağacı
|
techtree = Teknoloji Ağacı
|
||||||
|
research.legacy = [accent]5.0[] Araştırma Datası Bulnudu.\n[accent]Bu datayı Yüklemek ister misin?[], yoksa [accent]silip[] baştan mı başlamak istersin? (önerilir)?
|
||||||
|
research.load = Yükle
|
||||||
|
research.discard = Sil
|
||||||
research.list = [lightgray]Araştırmalar:
|
research.list = [lightgray]Araştırmalar:
|
||||||
research = Araştır
|
research = Araştır
|
||||||
researched = [lightgray]{0} Araştırıldı.
|
researched = [lightgray]{0} Araştırıldı.
|
||||||
@@ -181,8 +203,8 @@ host.info = [accent]host[], [scarlet]6567[] portunda bir sunucuya ev sahipliği
|
|||||||
join.info = Burada, bağlanmak istediğin sunucunun [accent]IP[] adresini girebilir veya [accent]yerel ağ[] sunucularını görebilirsin..\nHem yerel ağ hem de geniş alan ağı çoklu oyuncu için destekleniyor.\n\n[lightgray]Not: Otomatik bir global sunucu listesi yok; eğer birisine IP adresi kullanarak bağlanmak istiyorsan IP adresini istemelisin.
|
join.info = Burada, bağlanmak istediğin sunucunun [accent]IP[] adresini girebilir veya [accent]yerel ağ[] sunucularını görebilirsin..\nHem yerel ağ hem de geniş alan ağı çoklu oyuncu için destekleniyor.\n\n[lightgray]Not: Otomatik bir global sunucu listesi yok; eğer birisine IP adresi kullanarak bağlanmak istiyorsan IP adresini istemelisin.
|
||||||
hostserver = Çok Oyunculu Oyun Aç
|
hostserver = Çok Oyunculu Oyun Aç
|
||||||
invitefriends = Arkadaşlarını Davet Et
|
invitefriends = Arkadaşlarını Davet Et
|
||||||
hostserver.mobile = Oyun Kur
|
hostserver.mobile = Sunucu Kur
|
||||||
host = Kur
|
host = Sunucu Kur
|
||||||
hosting = [accent]Sunucu açılıyor...
|
hosting = [accent]Sunucu açılıyor...
|
||||||
hosts.refresh = Yenile
|
hosts.refresh = Yenile
|
||||||
hosts.discovering = Yerel ağ oyunu aranıyor
|
hosts.discovering = Yerel ağ oyunu aranıyor
|
||||||
@@ -195,10 +217,17 @@ servers.local = Yerel Sunucular
|
|||||||
servers.remote = Uzak Sunucular
|
servers.remote = Uzak Sunucular
|
||||||
servers.global = Topluluk Sunucuları
|
servers.global = Topluluk Sunucuları
|
||||||
|
|
||||||
|
servers.disclaimer = Topluluk Sunucuları, [accent]Yapımcı tarafından yönetilmiyor!\n\nSunucularda, her yaşa uygun olmayan yapı ve içerikler içerebilir!
|
||||||
|
servers.showhidden = Gizli Sunucuları Göster
|
||||||
|
server.shown = Görünür
|
||||||
|
server.hidden = Gizli
|
||||||
|
|
||||||
trace = Oyuncuyu Takip Et
|
trace = Oyuncuyu Takip Et
|
||||||
trace.playername = Oyuncu İsmi: [accent]{0}
|
trace.playername = Oyuncu İsmi: [accent]{0}
|
||||||
trace.ip = IP: [accent]{0}
|
trace.ip = IP: [accent]{0}
|
||||||
trace.id = Özel ID: [accent]{0}
|
trace.id = Özel ID: [accent]{0}
|
||||||
|
trace.times.joined = Girme Sayısı: [accent]{0}
|
||||||
|
trace.times.kicked = Atılma Sayısı: [accent]{0}
|
||||||
trace.mobile = Mobil Sürüm: [accent]{0}
|
trace.mobile = Mobil Sürüm: [accent]{0}
|
||||||
trace.modclient = Özel Sürüm: [accent]{0}
|
trace.modclient = Özel Sürüm: [accent]{0}
|
||||||
invalidid = Geçersiz Sürüm ID'si! Bir hata raporu gönder.
|
invalidid = Geçersiz Sürüm ID'si! Bir hata raporu gönder.
|
||||||
@@ -228,6 +257,7 @@ disconnect.timeout = Zaman aşımı.
|
|||||||
disconnect.data = Dünya verisi yüklenemedi!
|
disconnect.data = Dünya verisi yüklenemedi!
|
||||||
cantconnect = Oyuna girilemiyor ([accent]{0}[]).
|
cantconnect = Oyuna girilemiyor ([accent]{0}[]).
|
||||||
connecting = [accent]Bağlanılıyor...
|
connecting = [accent]Bağlanılıyor...
|
||||||
|
reconnecting = [accent]Yeniden Bağlanılıyor...
|
||||||
connecting.data = [accent]Dünya verisi yükleniyor...
|
connecting.data = [accent]Dünya verisi yükleniyor...
|
||||||
server.port = Port:
|
server.port = Port:
|
||||||
server.addressinuse = Adres zaten kullanılıyor!
|
server.addressinuse = Adres zaten kullanılıyor!
|
||||||
@@ -273,6 +303,10 @@ cancel = İptal
|
|||||||
openlink = Bağlantıyı Aç
|
openlink = Bağlantıyı Aç
|
||||||
copylink = Bağlantıyı Kopyala
|
copylink = Bağlantıyı Kopyala
|
||||||
back = Geri
|
back = Geri
|
||||||
|
max = Maks
|
||||||
|
crash.export = Çökme Hatasını Günlüğünü Dışarı Aktar
|
||||||
|
crash.none = Çökme Hatası Günlüğü Bulunamadı.
|
||||||
|
crash.exported = Çökme Hatası Günlüğü Dışarı Aktarıldı.
|
||||||
data.export = Veriyi Dışa Aktar
|
data.export = Veriyi Dışa Aktar
|
||||||
data.import = Veriyi İçe Aktar
|
data.import = Veriyi İçe Aktar
|
||||||
data.openfolder = Veri Klasörü Aç
|
data.openfolder = Veri Klasörü Aç
|
||||||
@@ -280,7 +314,6 @@ data.exported = Veri dışa aktarıldı.
|
|||||||
data.invalid = Bu oyun verisi geçerli değil.
|
data.invalid = Bu oyun verisi geçerli değil.
|
||||||
data.import.confirm = Dışarıdan içeri veri aktarmak şu anki verilerinizin [scarlet]tamamını[] silecektir.[accent]Bu işlem geri alınamaz![]\n\nVeri içeri aktarıldığında oyundan çıkacaksınız.
|
data.import.confirm = Dışarıdan içeri veri aktarmak şu anki verilerinizin [scarlet]tamamını[] silecektir.[accent]Bu işlem geri alınamaz![]\n\nVeri içeri aktarıldığında oyundan çıkacaksınız.
|
||||||
quit.confirm = Çıkmak istediğinize emin misiniz?
|
quit.confirm = Çıkmak istediğinize emin misiniz?
|
||||||
quit.confirm.tutorial = Ne yaptığınıza emin misiniz?\nÖğreticiyi [accent] Ayarlar -> Oyun -> Öğreticiyi Yeniden Al[]'dan tekrar yapabilirsiniz.
|
|
||||||
loading = [accent]Yükleniyor...
|
loading = [accent]Yükleniyor...
|
||||||
reloading = [accent]Modlar Yeniden Yükleniyor...
|
reloading = [accent]Modlar Yeniden Yükleniyor...
|
||||||
saving = [accent]Kayıt ediliyor...
|
saving = [accent]Kayıt ediliyor...
|
||||||
@@ -289,6 +322,8 @@ cancelbuilding = [accent][[{0}][] Planı temizle
|
|||||||
selectschematic = [accent][[{0}][] Seç ve kopyala
|
selectschematic = [accent][[{0}][] Seç ve kopyala
|
||||||
pausebuilding = [accent][[{0}][] İnşaatı durdur
|
pausebuilding = [accent][[{0}][] İnşaatı durdur
|
||||||
resumebuilding = [scarlet][[{0}][] İnşaata devam et
|
resumebuilding = [scarlet][[{0}][] İnşaata devam et
|
||||||
|
enablebuilding = [scarlet][[{0}][] İnşa Etmeyi Başlat
|
||||||
|
showui = UI Kapalı.\nAçmak için [accent][[{0}][] bas.
|
||||||
wave = [accent]Dalga {0}
|
wave = [accent]Dalga {0}
|
||||||
wave.cap = [accent]Dalga {0}/{1}
|
wave.cap = [accent]Dalga {0}/{1}
|
||||||
wave.waiting = [lightgray]{0} saniye içinde dalga başlayacak
|
wave.waiting = [lightgray]{0} saniye içinde dalga başlayacak
|
||||||
@@ -296,6 +331,8 @@ wave.waveInProgress = [lightgray]Dalga gerçekleşiyor
|
|||||||
waiting = [lightgray]Bekleniliyor...
|
waiting = [lightgray]Bekleniliyor...
|
||||||
waiting.players = Oyuncular bekleniliyor...
|
waiting.players = Oyuncular bekleniliyor...
|
||||||
wave.enemies = [lightgray]{0} Tane Düşman Kaldı
|
wave.enemies = [lightgray]{0} Tane Düşman Kaldı
|
||||||
|
wave.enemycores = [accent]{0}[lightgray] Düşman Çekirdekler
|
||||||
|
wave.enemycore = [accent]{0}[lightgray] Düşman Çekirdek
|
||||||
wave.enemy = [lightgray]{0} Tane Düşman Kaldı
|
wave.enemy = [lightgray]{0} Tane Düşman Kaldı
|
||||||
wave.guardianwarn = [accent]{0}[] dalga sonra gardiyan yaklaşıyor.
|
wave.guardianwarn = [accent]{0}[] dalga sonra gardiyan yaklaşıyor.
|
||||||
wave.guardianwarn.one = [accent]{0}[] dalga sonra gardiyan yaklaşıyor.
|
wave.guardianwarn.one = [accent]{0}[] dalga sonra gardiyan yaklaşıyor.
|
||||||
@@ -341,7 +378,6 @@ editor.center = Ortala
|
|||||||
workshop = Atölye
|
workshop = Atölye
|
||||||
waves.title = Dalgalar
|
waves.title = Dalgalar
|
||||||
waves.remove = Kaldır
|
waves.remove = Kaldır
|
||||||
waves.never = <asla>
|
|
||||||
waves.every = her
|
waves.every = her
|
||||||
waves.waves = dalga(lar)
|
waves.waves = dalga(lar)
|
||||||
waves.perspawn = doğma noktası başına
|
waves.perspawn = doğma noktası başına
|
||||||
@@ -356,6 +392,7 @@ waves.invalid = Panoda geçersiz dalga sayısı var.
|
|||||||
waves.copied = Dalgalar kopyalandı.
|
waves.copied = Dalgalar kopyalandı.
|
||||||
waves.none = Düşman bulunamadı.\nBoş dalga düzenlerin otomatik olarak varsayılan düzenle değiştirileceğini unutmayın
|
waves.none = Düşman bulunamadı.\nBoş dalga düzenlerin otomatik olarak varsayılan düzenle değiştirileceğini unutmayın
|
||||||
|
|
||||||
|
#bunlar özellikle küçük başlıyor.
|
||||||
wavemode.counts = miktarlar
|
wavemode.counts = miktarlar
|
||||||
wavemode.totals = toplamlar
|
wavemode.totals = toplamlar
|
||||||
wavemode.health = can
|
wavemode.health = can
|
||||||
@@ -447,6 +484,7 @@ filter.option.circle-scale = Daire Ölçek
|
|||||||
filter.option.octaves = Oktavlar
|
filter.option.octaves = Oktavlar
|
||||||
filter.option.falloff = Düşüş
|
filter.option.falloff = Düşüş
|
||||||
filter.option.angle = Açı
|
filter.option.angle = Açı
|
||||||
|
filter.option.rotate = Döndür
|
||||||
filter.option.amount = Miktar
|
filter.option.amount = Miktar
|
||||||
filter.option.block = Blok
|
filter.option.block = Blok
|
||||||
filter.option.floor = Zemin
|
filter.option.floor = Zemin
|
||||||
@@ -468,6 +506,9 @@ load = Yükle
|
|||||||
save = Kaydet
|
save = Kaydet
|
||||||
fps = FPS: {0}
|
fps = FPS: {0}
|
||||||
ping = Ping: {0}ms
|
ping = Ping: {0}ms
|
||||||
|
tps = TPS: {0}
|
||||||
|
memory = Mem: {0}mb
|
||||||
|
memory2 = Mem:\n {0}mb +\n {1}mb
|
||||||
language.restart = Dil ayarlarının çalışması için lütfen oyunu yeniden başlatın.
|
language.restart = Dil ayarlarının çalışması için lütfen oyunu yeniden başlatın.
|
||||||
settings = Ayarlar
|
settings = Ayarlar
|
||||||
tutorial = Öğretici
|
tutorial = Öğretici
|
||||||
@@ -482,26 +523,23 @@ complete = [lightgray]Ulaş:
|
|||||||
requirement.wave = Bölge {1}'de Dalga {0}
|
requirement.wave = Bölge {1}'de Dalga {0}
|
||||||
requirement.core = {0}`da Düşman Çekirdeği Yok Et
|
requirement.core = {0}`da Düşman Çekirdeği Yok Et
|
||||||
requirement.research = {0} araştır
|
requirement.research = {0} araştır
|
||||||
|
requirement.produce = {0} üret
|
||||||
requirement.capture = {0} sektörünü ele geçir
|
requirement.capture = {0} sektörünü ele geçir
|
||||||
bestwave = [lightgray]En İyi Dalga: {0}
|
bestwave = [lightgray]En İyi Dalga: {0}
|
||||||
launch.text = Kalkış
|
launch.text = Kalkış
|
||||||
research.multiplayer = Sadece kurucu araştırma yapabilir.
|
research.multiplayer = Sadece kurucu araştırma yapabilir.
|
||||||
uncover = Aç
|
uncover = Aç
|
||||||
configure = Ekipmanı Yapılandır
|
configure = Ekipmanı Yapılandır
|
||||||
|
|
||||||
loadout = Yükleme
|
loadout = Yükleme
|
||||||
resources = Kaynaklar
|
resources = Kaynaklar
|
||||||
bannedblocks = Yasaklı Bloklar
|
bannedblocks = Yasaklı Bloklar
|
||||||
addall = Hepsini Ekle
|
addall = Hepsini Ekle
|
||||||
|
launch.from = [accent]{0} dan fırlatılıyor.
|
||||||
launch.destination = Varış Yeri: {0}
|
launch.destination = Varış Yeri: {0}
|
||||||
configure.invalid = Miktar 0 ve {0} arasında bir sayı olmalı.
|
configure.invalid = Miktar 0 ve {0} arasında bir sayı olmalı.
|
||||||
zone.unlocked = [lightgray]{0} kilidi açıldı.
|
|
||||||
zone.requirement.complete = {0}. dalgaya ulaşıldı:\n{1} bölge şartları karşılandı.
|
|
||||||
zone.resources = [lightgray]Tespit Edilen Kaynaklar:
|
|
||||||
zone.objective = [lightgray]Hedef: [accent]{0}
|
|
||||||
zone.objective.survival = Hayatta Kal
|
|
||||||
zone.objective.attack = Düşman Merkezini Yok Et
|
|
||||||
add = Ekle...
|
add = Ekle...
|
||||||
boss.health = Boss Canı
|
guardian = Gardian
|
||||||
|
|
||||||
connectfail = [crimson]Bağlantı hatası:\n\n[accent]{0}
|
connectfail = [crimson]Bağlantı hatası:\n\n[accent]{0}
|
||||||
error.unreachable = Sunucuya ulaşılamıyor.\nAdresin doğru yazıldığına emin misiniz?
|
error.unreachable = Sunucuya ulaşılamıyor.\nAdresin doğru yazıldığına emin misiniz?
|
||||||
@@ -523,28 +561,57 @@ weather.fog.name = Sis
|
|||||||
sectors.unexplored = [lightgray]Keşfedilmemiş
|
sectors.unexplored = [lightgray]Keşfedilmemiş
|
||||||
sectors.resources = Kaynaklar:
|
sectors.resources = Kaynaklar:
|
||||||
sectors.production = Üretim:
|
sectors.production = Üretim:
|
||||||
|
sectors.export = İhracat:
|
||||||
|
sectors.time = Zaman:
|
||||||
|
sectors.threat = Tehlike:
|
||||||
|
sectors.wave = Dalga:
|
||||||
sectors.stored = Depolanan:
|
sectors.stored = Depolanan:
|
||||||
sectors.resume = Devam Et
|
sectors.resume = Devam Et
|
||||||
sectors.launch = Kalkış
|
sectors.launch = Fırlat
|
||||||
sectors.select = Seç
|
sectors.select = Seç
|
||||||
sectors.nonelaunch = [lightgray]yok (güneş)
|
sectors.nonelaunch = [lightgray]yok (güneş)
|
||||||
sectors.rename = Sektörü Yeniden Adlandır
|
sectors.rename = Sektörü Yeniden Adlandır
|
||||||
|
sectors.enemybase = [scarlet]Düşman Base
|
||||||
|
sectors.vulnerable = [scarlet]Dayanıksız
|
||||||
|
sectors.underattack = [scarlet]Saldırı Altında! [accent]{0}% hasarlı
|
||||||
|
sectors.survives = [accent]{0} Dalgaya dayanabilir!
|
||||||
|
sectors.go = Git
|
||||||
|
sector.curcapture = Sektör Yakalandı
|
||||||
|
sector.curlost = Sektör Kaybedildi
|
||||||
sector.missingresources = [scarlet]Yetersiz Çekirdek Kaynakları
|
sector.missingresources = [scarlet]Yetersiz Çekirdek Kaynakları
|
||||||
|
sector.attacked = Sektör [accent]{0}[white] saldırı altında!
|
||||||
|
sector.lost = Sektör [accent]{0}[white] kaybedildi!
|
||||||
|
#note: the missing space in the line below is intentional
|
||||||
|
sector.captured = Sektör [accent]{0}[white]yakalandı!
|
||||||
|
sector.changeicon = İkon Değiştir
|
||||||
|
|
||||||
|
threat.low = Düşük
|
||||||
|
threat.medium = Orta
|
||||||
|
threat.high = Yüksek
|
||||||
|
threat.extreme = Aşırı
|
||||||
|
threat.eradication = İmkansız
|
||||||
|
|
||||||
|
planets = Gezegenler
|
||||||
|
|
||||||
planet.serpulo.name = Serpulo
|
planet.serpulo.name = Serpulo
|
||||||
planet.sun.name = Güneş
|
planet.sun.name = Güneş
|
||||||
|
|
||||||
|
sector.impact0078.name = 0078 Darbesi
|
||||||
sector.groundZero.name = Sıfır Noktası
|
sector.groundZero.name = Sıfır Noktası
|
||||||
sector.craters.name = Kraterler
|
sector.craters.name = Kraterler
|
||||||
sector.frozenForest.name = Donmuş Orman
|
sector.frozenForest.name = Donmuş Orman
|
||||||
sector.ruinousShores.name = Harap Kıyılar
|
sector.ruinousShores.name = Harap Kıyılar
|
||||||
sector.stainedMountains.name = Lekeli Dağlar
|
sector.stainedMountains.name = Lekeli Dağlar
|
||||||
sector.desolateRift.name = Issız Aralık
|
sector.desolateRift.name = Issız Kanyon
|
||||||
sector.nuclearComplex.name = Kompleks Nükleer Üretimi
|
sector.nuclearComplex.name = Nüleer Santral Kompleksi
|
||||||
sector.overgrowth.name = Fazla Büyüme
|
sector.overgrowth.name = Aşırı Büyüme
|
||||||
sector.tarFields.name = Katran Alanları
|
sector.tarFields.name = Katran Çölü
|
||||||
sector.saltFlats.name = Tuz Düzlükleri
|
sector.saltFlats.name = Tuz Düzlükleri
|
||||||
sector.fungalPass.name = Mantar Geçidi
|
sector.fungalPass.name = Mantar Geçidi
|
||||||
|
sector.biomassFacility.name = Sentetik BioMadde Santrali
|
||||||
|
sector.windsweptIslands.name = Rüzgarlı Adalar
|
||||||
|
sector.extractionOutpost.name = Kazı Üssü
|
||||||
|
sector.planetaryTerminal.name = Gezegenler Arası Terminal
|
||||||
|
|
||||||
sector.groundZero.description = Yeniden başlamak için ideal bölge. Düşük düşman tehlikesi ve az miktarda kaynak mevcut. Mümkün olduğunca çok bakır ve kurşun topla.\nİlerle.
|
sector.groundZero.description = Yeniden başlamak için ideal bölge. Düşük düşman tehlikesi ve az miktarda kaynak mevcut. Mümkün olduğunca çok bakır ve kurşun topla.\nİlerle.
|
||||||
sector.frozenForest.description = Burada, dağlara yakın bölgelerde bile sporlar etrafa yayıldı. Dondurucu soğuk onları sonsuza dek durduramaz.\n\nEnerji kullanmaya başla. Termik jeneratörler inşa et. Tamircileri kullanmayı öğren.
|
sector.frozenForest.description = Burada, dağlara yakın bölgelerde bile sporlar etrafa yayıldı. Dondurucu soğuk onları sonsuza dek durduramaz.\n\nEnerji kullanmaya başla. Termik jeneratörler inşa et. Tamircileri kullanmayı öğren.
|
||||||
@@ -557,6 +624,25 @@ sector.tarFields.description = Bir petrol üretim bölgesinin eteklerinde, dağl
|
|||||||
sector.desolateRift.description = Aşırı tehlikeli bir bölge. Bol kaynaklar, ama az yer mevcut. Yüksek yıkım riski. Mümkün olduğunca çabuk ayrılmaya çalış. Düşman saldırıları arasındaki uzun mesafeye aldanma.
|
sector.desolateRift.description = Aşırı tehlikeli bir bölge. Bol kaynaklar, ama az yer mevcut. Yüksek yıkım riski. Mümkün olduğunca çabuk ayrılmaya çalış. Düşman saldırıları arasındaki uzun mesafeye aldanma.
|
||||||
sector.nuclearComplex.description = Toryum üretimi ve işlenmesi için eski bir tesistir, harabeye dönüşmüştür.\n[lightgray]Toryumu ve onun birçok kullanımını araştır. \n\nDüşman burada çok sayıda mevcut ve sürekli saldırganları arıyorlar.
|
sector.nuclearComplex.description = Toryum üretimi ve işlenmesi için eski bir tesistir, harabeye dönüşmüştür.\n[lightgray]Toryumu ve onun birçok kullanımını araştır. \n\nDüşman burada çok sayıda mevcut ve sürekli saldırganları arıyorlar.
|
||||||
sector.fungalPass.description = Yüksek dağlar ve daha alçak, sporla dolu topraklar arasında bir geçiş alanıdır. Burada küçük bir düşman keşif üssü bulunuyor.\nOnu yok et.\nDagger ve Crawler birlikleri kullan. İki çekirdeği çıkar.
|
sector.fungalPass.description = Yüksek dağlar ve daha alçak, sporla dolu topraklar arasında bir geçiş alanıdır. Burada küçük bir düşman keşif üssü bulunuyor.\nOnu yok et.\nDagger ve Crawler birlikleri kullan. İki çekirdeği çıkar.
|
||||||
|
sector.biomassFacility.description = Sporların ana kaynağı. Burası, onların üretim yeri.\nOnların içindeki gücü araştır. Sporları parçala, enerji ve plastik üret..\n\n[lightgray]Bu Fabrika yıkıldığında, sporlar etrafa yayldı. Hiçbir yaşam formu, bu forma üstün gelemedi.
|
||||||
|
sector.windsweptIslands.description = Kıyının hemen yanında, bir adalar topluluğu. Kayıtlar bir zamanlar, [accent]Plastik[]-üreten binalar olduğunu gösteriyor.\n\nDüşman gemilerini batır, bir üs inşa et ve plastik üretmeye başla.
|
||||||
|
sector.extractionOutpost.description = Uzak bir üs, düşman tarafından inşa edildiği düşünülüyor.\n\nSektörler arası aktarım, gelecek için çok önemli bir kademe. Üssü yok et, Fırlatış rampasını aç!
|
||||||
|
sector.impact0078.description = Burası, eskiden buraya düşmüş bir yıldızlar arası uzay gemisinin kalıntıları.\n\nOlabildiğince çok şeyi araştır. Teknolojiden yaralan.
|
||||||
|
sector.planetaryTerminal.description = Son aşama.\n\nBu üs, başka gezegenlere gitmeyi sağlayan teknolojiyi barıdırıyor. Aşırı iyi bir şekilde korunuyor.\n\nOlabildiğince hızlı bir şekilde gemi üret ve düşman üssü elegeçir. Gezegenler Arası Hızladırıcıyı aç!
|
||||||
|
|
||||||
|
status.burning.name = Yanıyor
|
||||||
|
status.freezing.name = Donuyor
|
||||||
|
status.wet.name = Islak
|
||||||
|
status.muddy.name = Çamurlu
|
||||||
|
status.melting.name = Eriyor
|
||||||
|
status.sapped.name = Emilmiş
|
||||||
|
status.electrified.name = Elektirklenmiş
|
||||||
|
status.spore-slowed.name = Sporlanmış
|
||||||
|
status.tarred.name = Ziftlenmiş
|
||||||
|
status.overclock.name = Hızlandırlımış
|
||||||
|
status.shocked.name = Çarpılmış
|
||||||
|
status.blasted.name = Patlatılmış
|
||||||
|
status.unmoving.name =Sabit
|
||||||
|
|
||||||
settings.language = Dil
|
settings.language = Dil
|
||||||
settings.data = Oyun Verisi
|
settings.data = Oyun Verisi
|
||||||
@@ -589,11 +675,13 @@ unit.nobuild = [scarlet]Birlik inşa edemiyor
|
|||||||
lastaccessed = [lightgray]Son Erişme: {0}
|
lastaccessed = [lightgray]Son Erişme: {0}
|
||||||
block.unknown = [lightgray]???
|
block.unknown = [lightgray]???
|
||||||
|
|
||||||
|
stat.description = Amaç
|
||||||
stat.input = Giriş
|
stat.input = Giriş
|
||||||
stat.output = Çıkış
|
stat.output = Çıkış
|
||||||
stat.booster = Güçlendirici
|
stat.booster = Güçlendirici
|
||||||
stat.tiles = Gereken Kare
|
stat.tiles = Gereken Kare
|
||||||
stat.affinities = Yakınlıklar
|
stat.affinities = Yakınlıklar
|
||||||
|
stat.opposites = Zıtlıklar
|
||||||
stat.powercapacity = Enerji Kapasitesi
|
stat.powercapacity = Enerji Kapasitesi
|
||||||
stat.powershot = Enerji/Atış
|
stat.powershot = Enerji/Atış
|
||||||
stat.damage = Hasar
|
stat.damage = Hasar
|
||||||
@@ -615,7 +703,10 @@ stat.itemcapacity = Eşya Kapasitesi
|
|||||||
stat.memorycapacity = Bellek Kapasitesi
|
stat.memorycapacity = Bellek Kapasitesi
|
||||||
stat.basepowergeneration = Temel Enerji Üretimi
|
stat.basepowergeneration = Temel Enerji Üretimi
|
||||||
stat.productiontime = Üretim Süresi
|
stat.productiontime = Üretim Süresi
|
||||||
stat.repairtime = Tamir Tamir Edilme Süresi
|
stat.repairtime = Tamir Edilme Süresi
|
||||||
|
stat.repairspeed = Tamir Hızı
|
||||||
|
stat.weapons = Silahlar
|
||||||
|
stat.bullet = Mermi
|
||||||
stat.speedincrease = Hız Artışı
|
stat.speedincrease = Hız Artışı
|
||||||
stat.range = Menzil
|
stat.range = Menzil
|
||||||
stat.drilltier = Kazılabilenler
|
stat.drilltier = Kazılabilenler
|
||||||
@@ -623,6 +714,7 @@ stat.drillspeed = Temel Matkap Hızı
|
|||||||
stat.boosteffect = Hızlandırma Efekti
|
stat.boosteffect = Hızlandırma Efekti
|
||||||
stat.maxunits = Maksimum Aktif Birim
|
stat.maxunits = Maksimum Aktif Birim
|
||||||
stat.health = Can
|
stat.health = Can
|
||||||
|
stat.armor = Zırh
|
||||||
stat.buildtime = İnşaat Süresi
|
stat.buildtime = İnşaat Süresi
|
||||||
stat.maxconsecutive = Art Arda En Fazla
|
stat.maxconsecutive = Art Arda En Fazla
|
||||||
stat.buildcost = İnşaat Fiyatı
|
stat.buildcost = İnşaat Fiyatı
|
||||||
@@ -638,6 +730,7 @@ stat.lightningchance = Yıldırım Çarpma Şansı
|
|||||||
stat.lightningdamage = Yıldırım Hasarı
|
stat.lightningdamage = Yıldırım Hasarı
|
||||||
stat.flammability = Yanıcılık
|
stat.flammability = Yanıcılık
|
||||||
stat.radioactivity = Radyoaktivite
|
stat.radioactivity = Radyoaktivite
|
||||||
|
stat.charge = Elektirk Yükü
|
||||||
stat.heatcapacity = Isı Kapasitesi
|
stat.heatcapacity = Isı Kapasitesi
|
||||||
stat.viscosity = Viskosite
|
stat.viscosity = Viskosite
|
||||||
stat.temperature = Sıcaklık
|
stat.temperature = Sıcaklık
|
||||||
@@ -648,12 +741,24 @@ stat.minetier = Kazı Seviyesi
|
|||||||
stat.payloadcapacity = Yük Kapasitesi
|
stat.payloadcapacity = Yük Kapasitesi
|
||||||
stat.commandlimit = Komut Limiti
|
stat.commandlimit = Komut Limiti
|
||||||
stat.abilities = Kabiliyetler
|
stat.abilities = Kabiliyetler
|
||||||
|
stat.canboost = Can Boost
|
||||||
|
stat.flying = Uçuyor
|
||||||
|
stat.ammouse = Mermi Kullanıyor
|
||||||
|
stat.damagemultiplier = Hasar Çarpanı
|
||||||
|
stat.healthmultiplier = Can Çarpanı
|
||||||
|
stat.speedmultiplier = Hız Çarpanı
|
||||||
|
stat.reloadmultiplier = Yeniden Yükleme Çarpanı
|
||||||
|
stat.buildspeedmultiplier = İnşa Hızı Çarpanı
|
||||||
|
stat.reactive = Tepki Verir
|
||||||
|
stat.healing = İyileştirir
|
||||||
|
|
||||||
ability.forcefield = Güç Kalkanı
|
ability.forcefield = Güç Kalkanı
|
||||||
ability.repairfield = Onarma Alanı
|
ability.repairfield = Onarma Alanı
|
||||||
ability.statusfield = Hızlandırma Alanı
|
ability.statusfield = Hızlandırma Alanı
|
||||||
ability.unitspawn = {0} Birliği Fabrikası
|
ability.unitspawn = {0} Birliği Fabrikası
|
||||||
ability.shieldregenfield = Kalkan Yenileme Alanı
|
ability.shieldregenfield = Kalkan Yenileme Alanı
|
||||||
|
ability.movelightning = Hareket Enerjisi
|
||||||
|
ability.energyfield = Güç Kalkanı: [accent]{0}[] hasar ~ [accent]{1}[] blok / [accent]{2}[] hedef
|
||||||
|
|
||||||
bar.drilltierreq = Daha İyi Matkap Gerekli
|
bar.drilltierreq = Daha İyi Matkap Gerekli
|
||||||
bar.noresources = Eksik Kaynaklar
|
bar.noresources = Eksik Kaynaklar
|
||||||
@@ -676,6 +781,7 @@ bar.power = Enerji
|
|||||||
bar.progress = İnşa İlerlemesi
|
bar.progress = İnşa İlerlemesi
|
||||||
bar.input = Girdi
|
bar.input = Girdi
|
||||||
bar.output = Çıktı
|
bar.output = Çıktı
|
||||||
|
bar.strength = [stat]{0}[lightgray]x Güç
|
||||||
|
|
||||||
units.processorcontrol = [lightgray]İşlemci Kontrolünde
|
units.processorcontrol = [lightgray]İşlemci Kontrolünde
|
||||||
|
|
||||||
@@ -710,8 +816,10 @@ unit.percent = %
|
|||||||
unit.shieldhealth = kalkan canı
|
unit.shieldhealth = kalkan canı
|
||||||
unit.items = eşya
|
unit.items = eşya
|
||||||
unit.thousands = k
|
unit.thousands = k
|
||||||
unit.millions = mil
|
unit.millions = m
|
||||||
unit.billions = b
|
unit.billions = b
|
||||||
|
unit.pershot = /vuruş
|
||||||
|
category.purpose = Amaç
|
||||||
category.general = Genel
|
category.general = Genel
|
||||||
category.power = Enerji
|
category.power = Enerji
|
||||||
category.liquids = Sıvılar
|
category.liquids = Sıvılar
|
||||||
@@ -724,8 +832,12 @@ setting.shadows.name = Gölgeler
|
|||||||
setting.blockreplace.name = Otomatik Blok önerileri
|
setting.blockreplace.name = Otomatik Blok önerileri
|
||||||
setting.linear.name = Lineer Filtreleme
|
setting.linear.name = Lineer Filtreleme
|
||||||
setting.hints.name = İpuçları
|
setting.hints.name = İpuçları
|
||||||
setting.flow.name = Kaynak Geçiş Hızını Göster[scarlet] (deneysel)
|
setting.logichints.name = İşemci İpuçları
|
||||||
|
setting.flow.name = Kaynak Geçiş Hızını Göster[scarlet]
|
||||||
|
setting.backgroundpause.name = Arka Planda Durdur
|
||||||
setting.buildautopause.name = İnşa etmeyi otomatik olarak durdur
|
setting.buildautopause.name = İnşa etmeyi otomatik olarak durdur
|
||||||
|
setting.doubletapmine.name = İki Tıklamayla Kaz
|
||||||
|
setting.modcrashdisable.name = Modları Çökmede Kapa
|
||||||
setting.animatedwater.name = Animasyonlu Su
|
setting.animatedwater.name = Animasyonlu Su
|
||||||
setting.animatedshields.name = Animasyonlu Kalkanlar
|
setting.animatedshields.name = Animasyonlu Kalkanlar
|
||||||
setting.antialias.name = Düzgünleştirme [lightgray](yeniden başlatma gerekebilir)[]
|
setting.antialias.name = Düzgünleştirme [lightgray](yeniden başlatma gerekebilir)[]
|
||||||
@@ -743,7 +855,7 @@ setting.difficulty.training = Eğitim
|
|||||||
setting.difficulty.easy = Kolay
|
setting.difficulty.easy = Kolay
|
||||||
setting.difficulty.normal = Normal
|
setting.difficulty.normal = Normal
|
||||||
setting.difficulty.hard = Zor
|
setting.difficulty.hard = Zor
|
||||||
setting.difficulty.insane = Çılgın
|
setting.difficulty.insane = İmkansız
|
||||||
setting.difficulty.name = Zorluk:
|
setting.difficulty.name = Zorluk:
|
||||||
setting.screenshake.name = Ekranı Salla
|
setting.screenshake.name = Ekranı Salla
|
||||||
setting.effects.name = Efektleri Görüntüle
|
setting.effects.name = Efektleri Görüntüle
|
||||||
@@ -753,7 +865,6 @@ setting.conveyorpathfinding.name = Konveyör Yol Bulma
|
|||||||
setting.sensitivity.name = Kontrolcü Hassasiyeti
|
setting.sensitivity.name = Kontrolcü Hassasiyeti
|
||||||
setting.saveinterval.name = Kayıt Aralığı
|
setting.saveinterval.name = Kayıt Aralığı
|
||||||
setting.seconds = {0} Saniye
|
setting.seconds = {0} Saniye
|
||||||
setting.blockselecttimeout.name = Blok Seçme Zaman Aşımı
|
|
||||||
setting.milliseconds = {0} milisaniye
|
setting.milliseconds = {0} milisaniye
|
||||||
setting.fullscreen.name = Tam Ekran
|
setting.fullscreen.name = Tam Ekran
|
||||||
setting.borderlesswindow.name = Kenarsız Pencere [lightgray](yeniden açmak gerekebilir)
|
setting.borderlesswindow.name = Kenarsız Pencere [lightgray](yeniden açmak gerekebilir)
|
||||||
@@ -764,7 +875,7 @@ setting.pixelate.name = Pixelleştir [lightgray](animasyonları kapatır)
|
|||||||
setting.minimap.name = Haritayı Göster
|
setting.minimap.name = Haritayı Göster
|
||||||
setting.coreitems.name = Çekirdekteki Eşyaları Göster [lightgray](üzerinde çalışılıyor)
|
setting.coreitems.name = Çekirdekteki Eşyaları Göster [lightgray](üzerinde çalışılıyor)
|
||||||
setting.position.name = Oyuncu Noktasını Göster
|
setting.position.name = Oyuncu Noktasını Göster
|
||||||
setting.musicvol.name = Müzik
|
setting.musicvol.name = Müzik Sesi
|
||||||
setting.atmosphere.name = Gezegen Atmosferini Göster
|
setting.atmosphere.name = Gezegen Atmosferini Göster
|
||||||
setting.ambientvol.name = Çevresel Ses
|
setting.ambientvol.name = Çevresel Ses
|
||||||
setting.mutemusic.name = Müziği Kapat
|
setting.mutemusic.name = Müziği Kapat
|
||||||
@@ -778,7 +889,9 @@ setting.chatopacity.name = Mesajlaşma Opaklığı
|
|||||||
setting.lasersopacity.name = Enerji Lazeri Opaklığı
|
setting.lasersopacity.name = Enerji Lazeri Opaklığı
|
||||||
setting.bridgeopacity.name = Köprü Opaklığı
|
setting.bridgeopacity.name = Köprü Opaklığı
|
||||||
setting.playerchat.name = Oyun-içi Konuşmayı Göster
|
setting.playerchat.name = Oyun-içi Konuşmayı Göster
|
||||||
|
setting.showweather.name = Hava Durmu Grafiklerini Göster
|
||||||
public.confirm = Oyununuzu halka açık yapmak ister misiniz?\n[accent]Oyunlarınıza herkes katılabilecektir.\n[lightgray]Bu seçenek daha sonra Ayarlar->Oyun->Halka Açık Oyunlar'dan değiştirilebilir.
|
public.confirm = Oyununuzu halka açık yapmak ister misiniz?\n[accent]Oyunlarınıza herkes katılabilecektir.\n[lightgray]Bu seçenek daha sonra Ayarlar->Oyun->Halka Açık Oyunlar'dan değiştirilebilir.
|
||||||
|
public.confirm.really = Eğer Arkadaşlarınla oynamak istiyorsan [green]Arkadaş Davet Et[] e bas. [scarlet]Halka Açık Sunucuya Değil[]!\nOyununu Gerçekten Halka açık yapmak istediğine [scarlet]Emin Misin[]?
|
||||||
public.beta = Oyunun beta sürümlerinin halka açık lobiler yapamayacağını unutmayın.
|
public.beta = Oyunun beta sürümlerinin halka açık lobiler yapamayacağını unutmayın.
|
||||||
uiscale.reset = Arayüz ölçeği değiştirildi.\nBu ölçeği onaylamak için "Tamam" butonuna basın.\n[accent] {0}[] [scarlet]saniye içinde eski ayarlara geri dönülüp oyundan çıkılıyor…[]
|
uiscale.reset = Arayüz ölçeği değiştirildi.\nBu ölçeği onaylamak için "Tamam" butonuna basın.\n[accent] {0}[] [scarlet]saniye içinde eski ayarlara geri dönülüp oyundan çıkılıyor…[]
|
||||||
uiscale.cancel = İptal Et ve Çık
|
uiscale.cancel = İptal Et ve Çık
|
||||||
@@ -842,6 +955,9 @@ keybind.menu.name = Menü
|
|||||||
keybind.pause.name = Durdur
|
keybind.pause.name = Durdur
|
||||||
keybind.pause_building.name = İnşaatı Duraklat/İnşaata Devam Et
|
keybind.pause_building.name = İnşaatı Duraklat/İnşaata Devam Et
|
||||||
keybind.minimap.name = Harita
|
keybind.minimap.name = Harita
|
||||||
|
keybind.planet_map.name = Gezegen Haritası
|
||||||
|
keybind.research.name = Araştırma
|
||||||
|
keybind.block_info.name = Blok Bilgisi
|
||||||
keybind.chat.name = Konuş
|
keybind.chat.name = Konuş
|
||||||
keybind.player_list.name = Oyuncu Listesi
|
keybind.player_list.name = Oyuncu Listesi
|
||||||
keybind.console.name = Konsol
|
keybind.console.name = Konsol
|
||||||
@@ -851,6 +967,7 @@ keybind.toggle_menus.name = Menüleri Aç/Kapa
|
|||||||
keybind.chat_history_prev.name = Sohbet geçmişi önceki
|
keybind.chat_history_prev.name = Sohbet geçmişi önceki
|
||||||
keybind.chat_history_next.name = Sohbet geçmişi sonraki
|
keybind.chat_history_next.name = Sohbet geçmişi sonraki
|
||||||
keybind.chat_scroll.name = Sohbet Kaydırma
|
keybind.chat_scroll.name = Sohbet Kaydırma
|
||||||
|
keybind.chat_mode.name = Konuşma Modunu Değiştir
|
||||||
keybind.drop_unit.name = Birlik Düşürme
|
keybind.drop_unit.name = Birlik Düşürme
|
||||||
keybind.zoom_minimap.name = Haritada Yakınlaştırma/Uzaklaştırma
|
keybind.zoom_minimap.name = Haritada Yakınlaştırma/Uzaklaştırma
|
||||||
mode.help.title = Modların açıklamaları
|
mode.help.title = Modların açıklamaları
|
||||||
@@ -867,17 +984,21 @@ mode.custom = Özel Kurallar
|
|||||||
|
|
||||||
rules.infiniteresources = Sınırsız Kaynaklar
|
rules.infiniteresources = Sınırsız Kaynaklar
|
||||||
rules.reactorexplosions = Reaktör Patlamaları
|
rules.reactorexplosions = Reaktör Patlamaları
|
||||||
|
rules.coreincinerates = Çekirdek Taşanları Eritir
|
||||||
rules.schematic = Schematics Allowed
|
rules.schematic = Schematics Allowed
|
||||||
rules.wavetimer = Dalga Zamanlayıcısı
|
rules.wavetimer = Dalga Zamanlayıcısı
|
||||||
rules.waves = Dalgalar
|
rules.waves = Dalgalar
|
||||||
rules.attack = Saldırı Modu
|
rules.attack = Saldırı Modu
|
||||||
rules.buildai = Yapay Zeka İnşası
|
rules.buildai = Yapay Zeka İnşası
|
||||||
|
rules.corecapture = Yıkımca Çekirdeği Elegeçir
|
||||||
rules.enemyCheat = Sonsuz AI (Kırmızı Takım) Kaynakları
|
rules.enemyCheat = Sonsuz AI (Kırmızı Takım) Kaynakları
|
||||||
rules.blockhealthmultiplier = Blok Canı Çarpanı
|
rules.blockhealthmultiplier = Blok Canı Çarpanı
|
||||||
rules.blockdamagemultiplier = Blok Hasarı Çarpanı
|
rules.blockdamagemultiplier = Blok Hasarı Çarpanı
|
||||||
rules.unitbuildspeedmultiplier = Birim Üretim Hızı Çarpanı
|
rules.unitbuildspeedmultiplier = Birim Üretim Hızı Çarpanı
|
||||||
rules.unithealthmultiplier = Birim Canı Çarpanı
|
rules.unithealthmultiplier = Birim Canı Çarpanı
|
||||||
rules.unitdamagemultiplier = Birim Hasarı Çapanı
|
rules.unitdamagemultiplier = Birim Hasarı Çapanı
|
||||||
|
rules.unitcapvariable = Çekirdekler Eleman Sınırını Etkiler
|
||||||
|
rules.unitcap = Sabit eleman Sınırı
|
||||||
rules.enemycorebuildradius = Düşman Çekirdeği İnşa Yasağı Yarıçapı: [lightgray](kare)
|
rules.enemycorebuildradius = Düşman Çekirdeği İnşa Yasağı Yarıçapı: [lightgray](kare)
|
||||||
rules.wavespacing = Dalga Aralığı: [lightgray](sn)
|
rules.wavespacing = Dalga Aralığı: [lightgray](sn)
|
||||||
rules.buildcostmultiplier = İnşa Ücreti Çarpanı
|
rules.buildcostmultiplier = İnşa Ücreti Çarpanı
|
||||||
@@ -899,12 +1020,15 @@ rules.explosions = Blok/Birlik Patlama Hasarı
|
|||||||
rules.ambientlight = Ortam Işığı
|
rules.ambientlight = Ortam Işığı
|
||||||
rules.weather = Hava
|
rules.weather = Hava
|
||||||
rules.weather.frequency = Sıklık:
|
rules.weather.frequency = Sıklık:
|
||||||
|
rules.weather.always = Herzaman
|
||||||
rules.weather.duration = Süreklilik:
|
rules.weather.duration = Süreklilik:
|
||||||
|
|
||||||
content.item.name = Eşyalar
|
content.item.name = Malzemeler
|
||||||
content.liquid.name = Sıvılar
|
content.liquid.name = Sıvılar
|
||||||
content.unit.name = Birimler
|
content.unit.name = Birimler
|
||||||
content.block.name = Bloklar
|
content.block.name = Bloklar
|
||||||
|
content.status.name = Durum Etkileri
|
||||||
|
content.sector.name = Sektörler
|
||||||
|
|
||||||
item.copper.name = Bakır
|
item.copper.name = Bakır
|
||||||
item.lead.name = Kurşun
|
item.lead.name = Kurşun
|
||||||
@@ -922,6 +1046,7 @@ item.blast-compound.name = Patlayıcı Bileşik
|
|||||||
item.pyratite.name = Pirratit
|
item.pyratite.name = Pirratit
|
||||||
item.metaglass.name = Metacam
|
item.metaglass.name = Metacam
|
||||||
item.scrap.name = Hurda
|
item.scrap.name = Hurda
|
||||||
|
|
||||||
liquid.water.name = Su
|
liquid.water.name = Su
|
||||||
liquid.slag.name = Cüruf
|
liquid.slag.name = Cüruf
|
||||||
liquid.oil.name = Petrol
|
liquid.oil.name = Petrol
|
||||||
@@ -953,6 +1078,11 @@ unit.minke.name = Minke
|
|||||||
unit.bryde.name = Bryde
|
unit.bryde.name = Bryde
|
||||||
unit.sei.name = Sei
|
unit.sei.name = Sei
|
||||||
unit.omura.name = Omura
|
unit.omura.name = Omura
|
||||||
|
unit.retusa.name = Retusa
|
||||||
|
unit.oxynoe.name = Oxynoe
|
||||||
|
unit.cyerce.name = Cyerce
|
||||||
|
unit.aegires.name = Aegires
|
||||||
|
unit.navanax.name = Navanax
|
||||||
unit.alpha.name = Alpha
|
unit.alpha.name = Alpha
|
||||||
unit.beta.name = Beta
|
unit.beta.name = Beta
|
||||||
unit.gamma.name = Gamma
|
unit.gamma.name = Gamma
|
||||||
@@ -961,10 +1091,11 @@ unit.reign.name = Reign
|
|||||||
unit.vela.name = Vela
|
unit.vela.name = Vela
|
||||||
unit.corvus.name = Corvus
|
unit.corvus.name = Corvus
|
||||||
|
|
||||||
block.resupply-point.name = Resupply Point
|
block.resupply-point.name = İkmal Noktası
|
||||||
block.parallax.name = Parallax
|
block.parallax.name = Parallax
|
||||||
block.cliff.name = Uçurum
|
block.cliff.name = Uçurum
|
||||||
block.sand-boulder.name = Kumlu Kaya Parçaları
|
block.sand-boulder.name = Kumlu Kaya Parçaları
|
||||||
|
block.basalt-boulder.name = Bazalt Kaya
|
||||||
block.grass.name = Çimen
|
block.grass.name = Çimen
|
||||||
block.slag.name = Cüruf
|
block.slag.name = Cüruf
|
||||||
block.space.name = Uzay
|
block.space.name = Uzay
|
||||||
@@ -1012,6 +1143,7 @@ block.sand-water.name = Kumlu Su
|
|||||||
block.darksand-water.name = Kara Kumlu Su
|
block.darksand-water.name = Kara Kumlu Su
|
||||||
block.char.name = Kömür
|
block.char.name = Kömür
|
||||||
block.dacite.name = Dakit
|
block.dacite.name = Dakit
|
||||||
|
block.rhyolite.name = Riyolit
|
||||||
block.dacite-wall.name = Dakit Duvar
|
block.dacite-wall.name = Dakit Duvar
|
||||||
block.dacite-boulder.name = Dakit Kaya Parçaları
|
block.dacite-boulder.name = Dakit Kaya Parçaları
|
||||||
block.ice-snow.name = Buzlu Kar
|
block.ice-snow.name = Buzlu Kar
|
||||||
@@ -1062,7 +1194,6 @@ block.conveyor.name = Konveyör
|
|||||||
block.titanium-conveyor.name = Titanyum Konveyör
|
block.titanium-conveyor.name = Titanyum Konveyör
|
||||||
block.plastanium-conveyor.name = Plastanyum Konveyör
|
block.plastanium-conveyor.name = Plastanyum Konveyör
|
||||||
block.armored-conveyor.name = Zırhlı Konveyör
|
block.armored-conveyor.name = Zırhlı Konveyör
|
||||||
block.armored-conveyor.description = Materyalleri titanyum konveyörlerle aynı hızda taşır ama daha fazla zırha sahiptir. Diğer konveyörler dışında yan taraflardan materyal kabul etmez.
|
|
||||||
block.junction.name = Kavşak
|
block.junction.name = Kavşak
|
||||||
block.router.name = Yönlendirici
|
block.router.name = Yönlendirici
|
||||||
block.distributor.name = Dağıtıcı
|
block.distributor.name = Dağıtıcı
|
||||||
@@ -1070,7 +1201,6 @@ block.sorter.name = Ayıklayıcı
|
|||||||
block.inverted-sorter.name = Ters Ayıklayıcı
|
block.inverted-sorter.name = Ters Ayıklayıcı
|
||||||
block.message.name = Mesaj
|
block.message.name = Mesaj
|
||||||
block.illuminator.name = Aydınlatıcı
|
block.illuminator.name = Aydınlatıcı
|
||||||
block.illuminator.description = Küçük, kompakt, yapılandırılabilir bir ışık kaynağı. Çalışması için enerji gerekir.
|
|
||||||
block.overflow-gate.name = Taşma Geçidi
|
block.overflow-gate.name = Taşma Geçidi
|
||||||
block.underflow-gate.name = Yana Taşma Geçidi
|
block.underflow-gate.name = Yana Taşma Geçidi
|
||||||
block.silicon-smelter.name = Silikon Fırını
|
block.silicon-smelter.name = Silikon Fırını
|
||||||
@@ -1121,6 +1251,7 @@ block.solar-panel.name = Güneş Paneli
|
|||||||
block.solar-panel-large.name = Büyük Güneş Paneli
|
block.solar-panel-large.name = Büyük Güneş Paneli
|
||||||
block.oil-extractor.name = Petrol Çıkarıcı
|
block.oil-extractor.name = Petrol Çıkarıcı
|
||||||
block.repair-point.name = Tamir Noktası
|
block.repair-point.name = Tamir Noktası
|
||||||
|
block.repair-turret.name = Tamir Turreti
|
||||||
block.pulse-conduit.name = Dalga Borusu
|
block.pulse-conduit.name = Dalga Borusu
|
||||||
block.plated-conduit.name = Kaplı Boru
|
block.plated-conduit.name = Kaplı Boru
|
||||||
block.phase-conduit.name = Faz Borusu
|
block.phase-conduit.name = Faz Borusu
|
||||||
@@ -1163,9 +1294,20 @@ block.exponential-reconstructor.name = Üstel Yeniden Yapılandırıcı
|
|||||||
block.tetrative-reconstructor.name = Dörtlü Yeniden Yapılandırıcı
|
block.tetrative-reconstructor.name = Dörtlü Yeniden Yapılandırıcı
|
||||||
block.payload-conveyor.name = Yük Konveyörü
|
block.payload-conveyor.name = Yük Konveyörü
|
||||||
block.payload-router.name = Yük Yönlendirici
|
block.payload-router.name = Yük Yönlendirici
|
||||||
|
block.duct.name = Tüp
|
||||||
|
block.duct-router.name = Tüp Yönlendirici
|
||||||
|
block.duct-bridge.name = Tüp Köprü
|
||||||
|
block.payload-propulsion-tower.name = Yük Aktarma Kulesi
|
||||||
|
block.payload-void.name = Yük Yokedici
|
||||||
|
block.payload-source.name = Yük Kaynağı
|
||||||
block.disassembler.name = Sökücü
|
block.disassembler.name = Sökücü
|
||||||
block.silicon-crucible.name = Büyük Silikon Fırını
|
block.silicon-crucible.name = Büyük Silikon Fırını
|
||||||
block.overdrive-dome.name = Hızlandırma Kubbesi
|
block.overdrive-dome.name = Hızlandırma Kubbesi
|
||||||
|
#Düzgün tutun bu TR translatei uğraştırıyonuz beni. -RTOmega
|
||||||
|
block.block-forge.name = Blok Fabrikası
|
||||||
|
block.block-loader.name = Blok Yükleyici
|
||||||
|
block.block-unloader.name = Blok Boşaltıcı
|
||||||
|
block.interplanetary-accelerator.name = Gezegenler Arası Hızlandırıcı
|
||||||
|
|
||||||
block.switch.name = Düğme
|
block.switch.name = Düğme
|
||||||
block.micro-processor.name = Mikro İşlemci
|
block.micro-processor.name = Mikro İşlemci
|
||||||
@@ -1179,54 +1321,83 @@ block.memory-bank.name = Bellek Bankası
|
|||||||
team.blue.name = mavi
|
team.blue.name = mavi
|
||||||
team.crux.name = öz
|
team.crux.name = öz
|
||||||
team.sharded.name = parçalanmış
|
team.sharded.name = parçalanmış
|
||||||
team.orange.name = turuncu
|
|
||||||
team.derelict.name = sahipsiz
|
team.derelict.name = sahipsiz
|
||||||
team.green.name = yeşil
|
team.green.name = yeşil
|
||||||
team.purple.name = mor
|
team.purple.name = mor
|
||||||
|
|
||||||
tutorial.next = [lightgray]<Devam etmek için dokunun.>
|
hint.skip = Geç
|
||||||
tutorial.intro = [scarlet]Mindustry öğreticisine hoş geldiniz.[]\n[accent]Bakır kazarak[] başlayın. Bunu yapmak için merkezinize yakın bir bakır madenine dokunun.\n\n[accent]{0}/{1} bakır
|
hint.desktopMove = [accent][[WASD][] ile hareket et.
|
||||||
tutorial.intro.mobile = [scarlet]Mindustry öğreticisine hoş geldiniz.[]\nHareket etmek için ekranı kaydırın.\nYakınlaştırmak ve uzaklaştırmak için [accent]iki parmakla kıstırın[].\n[accent]Bakır kazarak[] başlayın. Bunu yapmak için merkezinize yakın bir bakır madenine dokunun.\n\n[accent]{0}/{1} bakır
|
hint.zoom = [accent]Scroll[] ile Zoom yap.
|
||||||
tutorial.drill = Manuel olarak kazmak verimsizdir.\n[accent]Matkaplar []otomatikman kazabilir.\nSağ alttaki matkap sekmesine tıklayınız.\n[accent]Mekanik matkabı[] seçiniz. Tıklayarak bir bakır madenine yerleştirin.\n Yapımı durdurmak için [accent]sağ tıklayın[] ve yakınlaştırmak ve uzaklaştırmak için [accent]CTRL basılı tutarak tekerleği kaydırın[].
|
hint.mine = Yakındaki bir \uf8c4 Bakır madenine yaklaş ve [accent]tıklayarak[] kaz.
|
||||||
tutorial.drill.mobile = Manuel olarak kazmak verimsizdir.\n[accent]Matkaplar []otomatik olarak kazabilir.\nSağ alttaki matkap sekmesine dokunun.\n[accent]Mekanik matkabı[] seçin. \nDokunarak bir bakır madenine yerleştirin, sonra seçiminizi onaylamak için alttaki [accent] tik düğmesine[] basın.\nYerleştirmenizi iptal etmek için [accent] X butonuna[] basın.
|
hint.desktopShoot = [accent][[Sol Tılayarak][] ateş et.
|
||||||
tutorial.blockinfo = Her bloğun farklı istatistikleri vardır. Her matkap sadece belirli madenleri kazabilir.\nBir bloğun bilgi ve istatistiklerine bakmak için,[accent] yapım menüsünde seçerken "?" tuşuna dokunun.[]\n\n[accent]Şimdi mekanik matkabın istatistiklerine erişin.[]
|
hint.depositItems = Malzeme transferi için, kendi biriminden çekirdeğe sürkle ve bıraz.
|
||||||
tutorial.conveyor = [accent]Konveyörler[] merkeze eşyaları ulaştırmak için kullanılır.\nMatkaptan merkeze konveyörlerden oluşan bir sıra yapın.\n[accent]Bir sıra halinde yerleştirmek için farenizi basılı tutun.[]\nÇaprazlama bir yol konveyör yerleştirmek için [accent]CTRL[] tuşunu basılı tutun.\n\n[accent]Sıra aracı ile 2 konveyör yerleştirin, sonra bir eşyayı merkeze götürün.
|
hint.respawn = Tekrar doğmak için, [accent][[V][] ye bas.
|
||||||
tutorial.conveyor.mobile = [accent]Konveyörler[] merkeze eşyaları ulaştırmak için kullanılır.\nMatkaptan merkeze konveyörlerden oluşan bir sıra yapın.\n[accent] Bir sıra halinde yerleştirmek için parmağınızı birkaç saniye basılı tutup[] bir yöne çekin.\n\n[accent]Sıra aracı ile 2 konveyör yerleştirin, sonra bir eşyayı merkeze götürün.
|
hint.respawn.mobile = Bir Bina veya Birimi kontrol ediyorsun. Tekrar doğmak için, [accent]sol üstteki avatara tıkla.[]
|
||||||
tutorial.turret = Bir eşya merkezinize girdiğinde, inşa için kullanılabilir.\nHer eşyaların sadece inşa için kullanılmadığını aklınızda tutun.\nİnşa için kullanılmayan eşyalar,[accent] kömür[] ya da[accent] hurda[] gibi materyaller merkeze konulamaz.\n[lightgray]Düşmanı[] püskürtmek için savunma yapıları inşa edilmelidir.\nÜssünüze yakın bir yerde [accent] duo tareti[] inşa edin.
|
hint.desktopPause = [accent][[Boşluk][] tuşuna basarak oyunu durdurup yeniden başlata bilrisin.
|
||||||
tutorial.drillturret = Duo taretleri ateş etmek için [accent]bakır mühimmata[] ihtiyaç duyar.\nTaretin yakınına bir matkap yerleştirin.\nKonveyörleri tarete yönelterek tarete bakır ikmal edin.\n\n[accent]İkmal edilen mühimmat: 0/1
|
hint.placeDrill =İnşa menüsünden, \ue85e [accent]Kazıcı[] bölmesine tıkla \uf870 [accent]Kazıcıyı[] al ve bir madenin üstüne tıklayarak koy.
|
||||||
tutorial.pause = Mücadele sırasında [accent]oyunu durdurabilirsiniz.[]\nOyun durmaktayken inşaat emirlerini kuyruğa alabilirsiniz.\n\n[accent]Oyunu durdurmak için boşluk tuşuna basın.
|
hint.placeDrill.mobile = İnşa menüsünden, \ue85e [accent]Kazıcı[] bölmesini seç, ardından \uf870 [accent]Kazıcı[] ya tıkla ve bir madenin üstüne tıkla.\n\n \ue800 [accent]Check tuşuna bas[] ve inşayı tamala.
|
||||||
tutorial.pause.mobile = Mücadele sırasında [accent]oyunu durdurabilirsiniz.[]\nOyun durmaktayken inşaat emirlerini kuyruğa alabilirsiniz.\n\n[accent]Oyunu durdurmak için sol üstteki bu butona basın.
|
hint.placeConveyor = Konveyörler, bir kazıcıdan başka bir bloğa malzeme aktarmada kullanılır. Menüden bir \uf896 [accent]Konveyör[] seç, konveyörler \ue814 [accent]Taşıma[] menüsündedir.\n\nTıklayıp basılı tutraka biren fazla inşa edebilrsin.\n[accent]Scroll[] la döndürebilirsin.
|
||||||
tutorial.unpause = Şimdi devam etmek için boşluk tuşuna tekrar basın.
|
hint.placeConveyor.mobile = Konveyörler, bir kazıcıdan başka bir bloğa malzeme aktarmada kullanılır. Menüden bir \uf896 [accent]Konveyör[] seç, konveyörler \ue814 [accent]Taşıma[] menüsündedir.\n\nParmağını basılı tutup sürüklersen birden fazla konveyör doşeyebilirsin.
|
||||||
tutorial.unpause.mobile = Şimdi devam etmek için butona tekrar basın.
|
hint.placeTurret = \uf861 [accent]Silahlar[] seni düşman birimlerinden korumak içindir.\n\nSilahlar, mermi gerektirir, \uf838(bakır).\nOnlara Konveyör ve Kazıcı kullanarak mermi sağla.
|
||||||
tutorial.breaking = Blokların sık sık yok edilmesi gerekir.\n[accent]Sağ fare butonuna basılı tutarak[] bir alan içindeki blokları seçip yok edebilirsiniz.[]\n\n[accent]Çekirdeğinizin solundaki bütün hurda bloklarını bu şekilde yok edin.
|
hint.breaking = Blokları silmek için silmek istediğiniz objelerin üstüne [accent]Sağ Tıklayın[]. Birden fazla obje silmek için sağ tuşu basılı tutun ve farenizi sürükleyin.
|
||||||
tutorial.breaking.mobile = Blokların sık sık yok edilmesi gerekir.\n[accent]Yıkım modunu seçin[], sonra bir bloğa dokunarak onu yok edin. Ekrana birkaç saniye basılı tutarak bir alan içindeki blokları seçip yok edebilirsiniz.\nTik butonuna basarak yıkım işlemini onaylayın.\n\n[accent]Çekirdeğinizin solundaki bütün hurda bloklarını bu şekilde yok edin.
|
hint.breaking.mobile = Ekranın sağ altındaki \ue817 [accent]çekiç[] tuşuna basın ve silmek istediğiniz objelere tıklayın. \n\nBirden fazla obje silmek için parmağınızı ekranda 1 saniye basılı tutun ve parmağınızı sürükleyin.
|
||||||
tutorial.withdraw = Bazı durumlarda bloklardan materyalleri direkt olarak almak gerekir.\nBunun için önce içinde materyaller olan [accent]bir bloğa dokunun[], sonra envanterdeki [accent]malzemeye dokunun[].\n[accent]dokunup basılı tutarak[] birden fazla materyali alabilirsiniz.\n\nÇekirdekten biraz bakır alın.
|
hint.blockInfo = Bir blok hakkında bilgiyi görüntülemek için [accent]inşa menüsüne[] tıklayın. Sonra sağdaki [accent][[?][] sembolüne tıklayın.
|
||||||
tutorial.deposit = Malzemeleri geminizden hedef bloğa sürükleyerek malzemeleri bırakabilirsiniz.\n\n[accent]Bakırı çekirdeğe geri bırakın.[]
|
hint.research = \ue875 [accent]Araştırma[] sekmesini kullanarak yeni teknolojiler araştırabilirsiniz.
|
||||||
tutorial.waves = [lightgray]Düşman[] yaklaşıyor.\n\nÇekirdeği 2 dalga boyunca koruyun. Ateş etmek için [accent]tıklayın[].\nDaha fazla taret ve matkap inşa edin ve daha fazla bakır toplayın.
|
hint.research.mobile = \ue88c [accent]Menüdeki[] \ue875 [accent]Araştırma[] sekmesini kullanarak yeni teknolojiler araştırabilirsiniz.
|
||||||
tutorial.waves.mobile = [lightgray]Düşman[] yaklaşıyor.\n\nÇekirdeği 2 dalga boyunca koruyun. Geminiz düşmanlara otomatik olarak ateş edecektir.\nDaha fazla taret ve matkap inşa edin ve daha fazla bakır toplayın.
|
hint.unitControl = Kendi takımınızdaki taret ve birimleri kontrol etmek için [accent][[Sol CTRL][] tuşunu basılı tutarak istediğiniz taretin yada birimin üstüne sol tıklayın.
|
||||||
tutorial.launch = Belirli bir dalgaya ulaşınca, çekirdeği bulunduğu bölgeden [accent]kaldırabilir[], bütün binalarınızı arkada bırakıp [accent]çekirdeğinizdeki bütün materyallere sahip olabilirsiniz.[]Bu materyaller daha sonra yeni teknolojiler geliştirmek için kullanılabilir.\n\n[accent]Kalkış butonuna basın.
|
hint.unitControl.mobile = Kendi takımınızdaki taret ve birimleri kontrol etmek için istediğiniz taretin yada birimin üstüne [accent][[2 kere tıklayın.][]
|
||||||
|
hint.launch = Yeterince kaynak topladıktan sonra, üssünüzü başka bir sektöre [accent]fırlatmak[] için sağ alttaki \ue827 [accent]harita[] tuşuna basın.
|
||||||
|
hint.launch.mobile = Yeterince kaynak topladıktan sonra, üssünüzü başka bir sektöre [accent]fırlatmak[] için sağ alttaki \ue88c [accent]menüden[] \ue827 [accent]harita[] tuşuna basın.
|
||||||
|
hint.schematicSelect = İstediğiniz blokları kopyalayıp yapıştırmak için [accent][[F][] tuşunu basılı tutun ve farenizi sürükleyin.\n\n[accent][[Orta Tuş'a (Fare Tekerleği'ne)][] basarak tek bir blok seçebilirsiniz.
|
||||||
|
hint.conveyorPathfind = Konveyörler ile yol yaparken bir noktadan diğer noktaya otomatik yol oluşturmak için [accent][[Sol CTRL][] tuşunu basılı tutun.
|
||||||
|
hint.conveyorPathfind.mobile = Konveyörler ile yol yaparken bir noktadan diğer noktaya otomatik yol oluşturmak için \ue844 [accent]Çapraz Mod'u[] etkinleştirin.
|
||||||
|
hint.boost = Bazı yer birimleri duvarların, taretlerin, diğer birimlerin üstünden uçma özelliği vardır. [accent][[Sol Shift][] tuşunu basılı tutarak bazı yer üniteleri ile uçabilirsiniz.
|
||||||
|
hint.command = [accent]Benzer Türdeki[] birimleri kontrol etmek için [accent][[G][] tuşuna basın. \n\nYer birimlerini kontrol etmek için ilk önce bir yer birimini kontrol etmeniz gerekir.
|
||||||
|
hint.command.mobile = Ekrana [accent][[2 kere yıklayarak][] benzer türdeki birimleri kontrol edebilirsiniz. \n\nYer birimlerini kontrol etmek için ilk önce bir yer birimini kontrol etmeniz gerekir.
|
||||||
|
hint.payloadPickup = Bazı birimlerin binaları ve birimleri alma özelliği vardır. Bir binanın yada birimin üstündeyken [accent][[[] tuşuna basarak kendinizden küçük binaları ve birimleri alabilirsiniz.
|
||||||
|
hint.payloadPickup.mobile = Bazı birimlerin binaları ve birimleri alma özelliği vardır. Bir binaya yada birime [accent]Tıklayıp Basılı Tutarak[] kendinizden küçük binaları ve birimleri alabilirsiniz.
|
||||||
|
hint.payloadDrop = [accent]][] tuşuna basarak taşıdğınız yükü bırakabilirsiniz.
|
||||||
|
hint.payloadDrop.mobile = Boş bir yere [accent]tıklayıp basılı tutarak[] taşıdığınız yükü bırakabilirsiniz.
|
||||||
|
hint.waveFire = [accent]Wave[] tareti su ile dolu olduğu zaman etrafta çıkan yangınları otomatik olarak söndürür.
|
||||||
|
hint.generator = \uf879 [accent]Termik Jeneratör[] kömür yakarak enerji üretir.\n\nEnerjiyi bir yerden başka bir yere götürmek için \uf87f [accent]Enerji Noktalarını[] kullanırız.
|
||||||
|
hint.guardian = [accent]Gardiyan[] birimleri güçlü bir zırha sahiptir. [accent]bakır[] ve [accent]kurşun[] gibi mermilere karşı [scarlet]Dayanıklıdır[].\n\nGardiyanları öldürmek için [accent]salvo[] gibi daha güçlü taretleri ve \uf835 [accent]grafit[] gibi daha çok hasar veren mermileri kullanın.
|
||||||
|
hint.coreUpgrade = Merkezinizi, [accent]merkezinizin üstüne daha gelişmiş bir merkez[] koyarak geliştirebilirsiniz. \n\n[accent]Parçacık[] olarak adlandırılan fakirhanenizin üstüne [accent]Temel[] olarak adlandırılan merkezinizi koyun. Merkezinizin etrafında hiçbir yapı olmamalıdır.
|
||||||
|
hint.presetLaunch = [accent]Donmuş Ormanlar[] gibi [accent]ana sektörlere iniş[] herhangi bir yerden yapılabilir. Yakındaki bir sektörden fırlatma gerektirmez.\n\nBunun gibi [accent]sayı ile isimlendirilmiş[] sektörleri ele geçirmek [accent]isteğe bağlıdır.[].
|
||||||
|
hint.coreUpgrade = Bir çekirdeğin Üstüne başka bir çekirdek koayarak onu geliştirebilirsin!\n\n Daha gelişmiş çekirdekler daha fazla kapasite demektir.
|
||||||
|
hint.presetLaunch = Hikaye Sektörlerine her yerden fırltış yapabilirsin! Ancak Numaralı Sektörlere temas olmadan Fırlatış yapılamaz.
|
||||||
|
hint.coreIncinerate = Bir çekirdek ağzına kadar dolduktan sonra, ekstra itemler [accent]eritilir[].
|
||||||
|
hint.coopCampaign = Arkadaşlarınla Multiplayer Campaign oynarken, her yaptığınız Araştırma ve item aktarımı, senin oyun içi Campaign ine de aktarılır.
|
||||||
|
#Yukarıdaki bağzı cümleler Anti Dragon tarafından çevirildi.
|
||||||
item.copper.description = En basit materyal. Her türlü blokda kullanılır.
|
item.copper.description = En basit materyal. Her türlü blokda kullanılır.
|
||||||
|
item.copper.details = Bakır. En basit materyal. Tüm alt düzey binalarda gerekir. Zayıf ve dayanıksızdır.
|
||||||
item.lead.description = Basit bir materyal. Elektronikte ve sıvı taşımada kullanılır.
|
item.lead.description = Basit bir materyal. Elektronikte ve sıvı taşımada kullanılır.
|
||||||
|
item.lead.details = Yoğun. Durağan. Pillerde yaygın olarak kullanılır.\nNot: Yaşam formlarına toksik. Tabi burda onlardan pek yok...
|
||||||
item.metaglass.description = Süper sert camdan bir bileşim. Sıvı dağıtımı ve depolamak için yaygın olarak kullanılır.
|
item.metaglass.description = Süper sert camdan bir bileşim. Sıvı dağıtımı ve depolamak için yaygın olarak kullanılır.
|
||||||
item.graphite.description = Mineralize karbon. Mermi ve elektrik yalıtımında kullanılır.
|
item.graphite.description = Mineralize karbon. Mermi ve elektrik yalıtımında kullanılır.
|
||||||
item.sand.description = Hem alaşım yapmada hem de arıtkan olarak metalurji işlemlerinde kullanılan bir malzeme.
|
item.sand.description = Hem alaşım yapmada hem de arıtkan olarak metalurji işlemlerinde kullanılan bir malzeme.
|
||||||
item.coal.description = Tohumlama olayından çok önce oluşmuş, fosilleşmiş bitki maddesi. Yaygın olarak yakıt ve kaynak üretimi için kullanılır.
|
item.coal.description = Tohumlama olayından çok önce oluşmuş, fosilleşmiş bitki maddesi. Yaygın olarak yakıt ve kaynak üretimi için kullanılır.
|
||||||
|
item.coal.details = Fosilleşmiş bitki kalıntısına benziyor. Herhalde tohumlanmadan çok uzun zaman önce ölmüşler.
|
||||||
item.titanium.description = Yaygın olarak sıvı taşımada, matkaplarda ve uçaklarda kullanılan nadir bir süper-hafif metal.
|
item.titanium.description = Yaygın olarak sıvı taşımada, matkaplarda ve uçaklarda kullanılan nadir bir süper-hafif metal.
|
||||||
item.thorium.description = Yapısal destek ve nükleer yakıt olarak kullanılan yoğun, radyoaktif bir metal.
|
item.thorium.description = Yapısal destek ve nükleer yakıt olarak kullanılan yoğun, radyoaktif bir metal.
|
||||||
item.scrap.description = Eski yapılar ve birimlerin kalıntıları. Birçok farklı metalden eser miktarları içerir.
|
item.scrap.description = Eski yapılar ve birimlerin kalıntıları. Birçok farklı metalden eser miktarları içerir.
|
||||||
|
item.scrap.details = Eski bina ve birimlerin kalıntıları.
|
||||||
item.silicon.description = Kullanışlı bir yarı iletken. Güneş panellerinde, elektronikler ve güdümlü cephanesi için kullanılır.
|
item.silicon.description = Kullanışlı bir yarı iletken. Güneş panellerinde, elektronikler ve güdümlü cephanesi için kullanılır.
|
||||||
item.plastanium.description = Gelişmiş uçak ve parçalama için kullanılan hafif, sünek bir malzeme.
|
item.plastanium.description = Gelişmiş uçak ve parçalama için kullanılan hafif, sünek bir malzeme.
|
||||||
item.phase-fabric.description = Gelişmiş elektronik ve kendi kendini tamir etme teknolojisınde kullanılan neredeyse ağırlıksız bir madde.
|
item.phase-fabric.description = Gelişmiş elektronik ve kendi kendini tamir etme teknolojisınde kullanılan neredeyse ağırlıksız bir madde.
|
||||||
item.surge-alloy.description = Kendine özgü elektriksel özelliklere sahip gelişmiş bir alaşım.
|
item.surge-alloy.description = Kendine özgü elektriksel özelliklere sahip gelişmiş bir alaşım.
|
||||||
item.spore-pod.description = Endüstriyel kullanım için atmosferik partiküllerden üretilen sentetik sporlarla dolu bir kapsül. Yağ, patlayıcı ve yakıt yapımı için kullanılır.
|
item.spore-pod.description = Endüstriyel kullanım için atmosferik partiküllerden üretilen sentetik sporlarla dolu bir kapsül. Yağ, patlayıcı ve yakıt yapımı için kullanılır.
|
||||||
|
item.spore-pod.details = Spor.Büyük ihtimalle sentetik bir yaşam formu. Tokisk bir gaz yayıyor. Aşırı istilacı. Aşırı yanıcı.
|
||||||
item.blast-compound.description = Bomba ve patlayıcılarda kullanılan dengesiz bir bileşim. Spor kapsülleri ve diğer uçucu maddelerden sentezlenir. Yakıt olarak tavsiye edilmez.
|
item.blast-compound.description = Bomba ve patlayıcılarda kullanılan dengesiz bir bileşim. Spor kapsülleri ve diğer uçucu maddelerden sentezlenir. Yakıt olarak tavsiye edilmez.
|
||||||
item.pyratite.description = Yakıcı silahlarda kullanılan son derece yanıcı bir madde.
|
item.pyratite.description = Yakıcı silahlarda kullanılan son derece yanıcı bir madde.
|
||||||
|
|
||||||
liquid.water.description = En kullanışlı sıvı. Makineleri soğutmak ve atık işlenmesi için kullanılır.
|
liquid.water.description = En kullanışlı sıvı. Makineleri soğutmak ve atık işlenmesi için kullanılır.
|
||||||
liquid.slag.description = Çeşitli tipte erimiş metallerin birbirine karışımı. Bileşenlerine ayrılabilir veya düşmanlara silah olarak püskürtülebilir.
|
liquid.slag.description = Çeşitli tipte erimiş metallerin birbirine karışımı. Bileşenlerine ayrılabilir veya düşmanlara silah olarak püskürtülebilir.
|
||||||
liquid.oil.description = İleri seviye malzeme üretiminde kullanılan bir sıvıdır. Yakıt olarak kömür haline getirilebilir veya püskürtülüp ateşe verilerek bir silah olarak kullanılabilir.
|
liquid.oil.description = İleri seviye malzeme üretiminde kullanılan bir sıvıdır. Yakıt olarak kömür haline getirilebilir veya püskürtülüp ateşe verilerek bir silah olarak kullanılabilir.
|
||||||
liquid.cryofluid.description = Su ve titanyumdan oluşturulan inaktif bir sıvı. Son derece yüksek ısı kapasitesine sahiptir. Soğutucu olarak yaygın olarak kullanılır.
|
liquid.cryofluid.description = Su ve titanyumdan oluşturulan inaktif bir sıvı. Son derece yüksek ısı kapasitesine sahiptir. Soğutucu olarak yaygın olarak kullanılır.
|
||||||
|
|
||||||
|
block.resupply-point.description = Yakındaki birimlere mermi verir. Elektikle çalışmaz.
|
||||||
|
block.armored-conveyor.description = Materyalleri titanyum konveyörlerle aynı hızda taşır ama daha fazla zırha sahiptir. Diğer konveyörler dışında yan taraflardan materyal kabul etmez.
|
||||||
|
block.illuminator.description = Küçük, kompakt, yapılandırılabilir bir ışık kaynağı. Çalışması için enerji gerekir.
|
||||||
block.message.description = Bir mesajı saklar. Müttefikler arasındaki haberleşmede kullanılır.
|
block.message.description = Bir mesajı saklar. Müttefikler arasındaki haberleşmede kullanılır.
|
||||||
block.graphite-press.description = Kömür parçalarını sıkıştırıp saf grafit tabakaları üretir.
|
block.graphite-press.description = Kömür parçalarını sıkıştırıp saf grafit tabakaları üretir.
|
||||||
block.multi-press.description = Grafit presinin yükseltilmiş versiyonu. Kömürün hızlı ve verimli bir şekilde işlenmesi için su ve enerji kullanır.
|
block.multi-press.description = Grafit presinin yükseltilmiş versiyonu. Kömürün hızlı ve verimli bir şekilde işlenmesi için su ve enerji kullanır.
|
||||||
@@ -1278,6 +1449,7 @@ block.phase-conveyor.description = Gelişmiş materyal taşıma bloğu. Materyal
|
|||||||
block.sorter.description = Materyalleri ayıklar. Eğer materyal seçilen ile eşleşiyorsa geçmesine izin verilir. Yoksa materyal sağa ya da sola atılır.
|
block.sorter.description = Materyalleri ayıklar. Eğer materyal seçilen ile eşleşiyorsa geçmesine izin verilir. Yoksa materyal sağa ya da sola atılır.
|
||||||
block.inverted-sorter.description = Materyalleri sıradan bir ayıklayıcı gibi işler, ancak seçili öğeleri önden değil yanlardan geçirir.
|
block.inverted-sorter.description = Materyalleri sıradan bir ayıklayıcı gibi işler, ancak seçili öğeleri önden değil yanlardan geçirir.
|
||||||
block.router.description = Materyalleri bir yönden alıp diğer üç yöne eşit olarak dağıtır. Materyalleri bir kaynaktan birden fazla hedefe iletmek için kullanılır.\n\n[scarlet]Asla üretim yapan binaların dibine yerleştirmeyin, yoksa istenmeyen materyaller tarafından tıkanabilir.[]
|
block.router.description = Materyalleri bir yönden alıp diğer üç yöne eşit olarak dağıtır. Materyalleri bir kaynaktan birden fazla hedefe iletmek için kullanılır.\n\n[scarlet]Asla üretim yapan binaların dibine yerleştirmeyin, yoksa istenmeyen materyaller tarafından tıkanabilir.[]
|
||||||
|
block.router.details = [#ff]Sakın, asla, kattiyen iki tanesini yan yana koyma! Yoksa Tüm evren parçalanabilir!
|
||||||
block.distributor.description = Gelişmiş bir yönlendirici. Materyalleri yedi farklı yöne dağıtabilir.
|
block.distributor.description = Gelişmiş bir yönlendirici. Materyalleri yedi farklı yöne dağıtabilir.
|
||||||
block.overflow-gate.description = Ayırıcı ve yönlendiricinin bir karışımı. Materyalleri sadece ön kısım kapalı olduğunda sağa ve sola atar.
|
block.overflow-gate.description = Ayırıcı ve yönlendiricinin bir karışımı. Materyalleri sadece ön kısım kapalı olduğunda sağa ve sola atar.
|
||||||
block.underflow-gate.description = Taşma geçidinin zıttıdır. Sol ve sağ taraf kapalıysa materyalleri ön tarafa atar.
|
block.underflow-gate.description = Taşma geçidinin zıttıdır. Sol ve sağ taraf kapalıysa materyalleri ön tarafa atar.
|
||||||
@@ -1314,14 +1486,18 @@ block.laser-drill.description = Lazer teknolojisi sayesinde daha da hızlı kazm
|
|||||||
block.blast-drill.description = En iyi matkap. Çalışması için çok miktarda enerji gerekir.
|
block.blast-drill.description = En iyi matkap. Çalışması için çok miktarda enerji gerekir.
|
||||||
block.water-extractor.description = Yeraltındaki suyu çıkarır. Hiç su bulunmayan yerlerde kullanılır.
|
block.water-extractor.description = Yeraltındaki suyu çıkarır. Hiç su bulunmayan yerlerde kullanılır.
|
||||||
block.cultivator.description = Atmosferdeki küçük spor partiküllerini büyütüp endüstriyel kullanıma hazır kapsüllere çevirir.
|
block.cultivator.description = Atmosferdeki küçük spor partiküllerini büyütüp endüstriyel kullanıma hazır kapsüllere çevirir.
|
||||||
|
block.cultivator.details = Geri Dönüştürülmüş Teknoloji. Yüksek miktarda bio kütle üretmede kullanılır. Serpulo yu kaplayan sporların kaynağı.
|
||||||
block.oil-extractor.description = Çokça enerji, su kullanarak yerden petrol çıkarır.
|
block.oil-extractor.description = Çokça enerji, su kullanarak yerden petrol çıkarır.
|
||||||
block.core-shard.description = Çekirdek kapsülünün ilk versiyonu. Yok edilirse, bölge ile bütün iletişim kesilir. Bunun olmasına izin verme.
|
block.core-shard.description = Çekirdek kapsülünün ilk versiyonu. Yok edilirse, bölge ile bütün iletişim kesilir. Bunun olmasına izin verme.
|
||||||
|
block.core-shard.details = İlk aşama. Bu üstün makine, kendini kopyalama ve tek inişlik roket özelliklerine sahip. Gezegenler arası ulaşımda kullanılamaz!
|
||||||
block.core-foundation.description = Çekirdek kapsülünün ikinci versiyonu. Daha iyi zırhlı ve daha çok materyal depolayabilir.
|
block.core-foundation.description = Çekirdek kapsülünün ikinci versiyonu. Daha iyi zırhlı ve daha çok materyal depolayabilir.
|
||||||
|
block.core-foundation.details = İkinci Aşama.
|
||||||
block.core-nucleus.description = Çekirdek kapsülünün üçüncü ve son versiyonu. Aşırı derecede zırhlı ve dev miktarda materyal depolayabilir.
|
block.core-nucleus.description = Çekirdek kapsülünün üçüncü ve son versiyonu. Aşırı derecede zırhlı ve dev miktarda materyal depolayabilir.
|
||||||
|
block.core-nucleus.details = Üçüncü ve Son Aşama.
|
||||||
block.vault.description = Her materyalden az miktarda saklar. Materyalleri kasadan almak için bir boşaltıcı bloğu kullanılabilir.
|
block.vault.description = Her materyalden az miktarda saklar. Materyalleri kasadan almak için bir boşaltıcı bloğu kullanılabilir.
|
||||||
block.container.description = Her materyalden az miktarda saklar. Materyalleri konteynerden almak için bir boşaltıcı bloğu kullanılabilir.
|
block.container.description = Her materyalden az miktarda saklar. Materyalleri konteynerden almak için bir boşaltıcı bloğu kullanılabilir.
|
||||||
block.unloader.description = Materyalleri bir konteyner, kasa, veya çekirdekten çıkarıp; bir konveyöre veya dibindeki bir bloğa koyar. Çıkardığı materyal türü dokunularak değiştirilebilir.
|
block.unloader.description = Materyalleri bir konteyner, kasa, veya çekirdekten çıkarıp; bir konveyöre veya dibindeki bir bloğa koyar. Çıkardığı materyal türü dokunularak değiştirilebilir.
|
||||||
block.launch-pad.description = Çekirdek kalkışına gerek duymadan materyalleri üsse gönderir.
|
block.launch-pad.description = Başka Bir Sektöre item gönderir.
|
||||||
block.launch-pad-large.description = Kalkış pistinin daha gelişmiş bir versiyonu. Daha fazla materyali daha sık gönderebilir.
|
block.launch-pad-large.description = Kalkış pistinin daha gelişmiş bir versiyonu. Daha fazla materyali daha sık gönderebilir.
|
||||||
block.duo.description = Küçük, ucuz bir taret. Yer birimlerine karşı etkilidir.
|
block.duo.description = Küçük, ucuz bir taret. Yer birimlerine karşı etkilidir.
|
||||||
block.scatter.description = Önemli bir uçaksavar tareti. Düşman birimlerine hurda ya da kurşun uçaksavar mermileri atar.
|
block.scatter.description = Önemli bir uçaksavar tareti. Düşman birimlerine hurda ya da kurşun uçaksavar mermileri atar.
|
||||||
@@ -1339,3 +1515,211 @@ block.spectre.description = Dev bir çift namlulu top. Hava ve kara birimlerine
|
|||||||
block.meltdown.description = Dev bir lazer topu. Yüklenip yakındaki düşmanlara uzun süreli lazer ışınları yollar. Çalışması için soğutucu gerekir.
|
block.meltdown.description = Dev bir lazer topu. Yüklenip yakındaki düşmanlara uzun süreli lazer ışınları yollar. Çalışması için soğutucu gerekir.
|
||||||
block.repair-point.description = Kendisine en yakın hasarlı birimi tamir eder.
|
block.repair-point.description = Kendisine en yakın hasarlı birimi tamir eder.
|
||||||
block.segment.description = Gelen mermilere zarar verir ve onları yok eder. Lazer mermilere etki etmez.
|
block.segment.description = Gelen mermilere zarar verir ve onları yok eder. Lazer mermilere etki etmez.
|
||||||
|
block.parallax.description = Çekici bir ışın fırlatarak hava düşmanlarını kendine çeker. Onlara az da olsa zarar verir.
|
||||||
|
block.tsunami.description = Düşmanlara yüksek miktarda sıvı püskürtür. Ateşleri otomatik söndürür.
|
||||||
|
block.silicon-crucible.description = Kum ve Kömürü, Pirratitle eriterek Silikon üretir. Sıcak ortamda daha iyi çalışır.
|
||||||
|
block.disassembler.description = Cürüfü aşırı sıcak ortamda seritir. Toryum elde edebilir.
|
||||||
|
block.overdrive-dome.description = Yakındaki binaları hızlandırır. Çalışmak için silikon ve faz gerektirir.
|
||||||
|
block.payload-conveyor.description = Büyük yükleri hareket ettirir. Birimler gibi.
|
||||||
|
block.payload-router.description = Büyük Yükleri 3 Ayrı yöne aktarır.
|
||||||
|
block.command-center.description = Birimleri birkaç farklı şekilde yönlendirir.
|
||||||
|
block.ground-factory.description = Yer Birimi üretir. Bu birimler direk kullanılabilir veya geliştirilebilir.
|
||||||
|
block.air-factory.description = Hava Birimi üretir. Bu birimler direk kullanılabilir veya geliştirilebilir.
|
||||||
|
block.naval-factory.description = Su Birimi üretir. Bu birimler direk kullanılabilir veya geliştirilebilir.
|
||||||
|
block.additive-reconstructor.description = Birimleri 2. seviyeye yükseltir.
|
||||||
|
block.multiplicative-reconstructor.description = Birimleri 3. seviyeye yükseltir.
|
||||||
|
block.exponential-reconstructor.description = Birimleri 4. seviyeye yükseltir.
|
||||||
|
block.tetrative-reconstructor.description = Birimleri 5. ve son seviyeye yükseltir.
|
||||||
|
block.switch.description = Aktif edilebilen bir düğme.
|
||||||
|
block.micro-processor.description = Birtakım işlemleri döngü halinde yapar. Birimleri ve binaları kontrol edebilir.
|
||||||
|
block.logic-processor.description = Birtakım işlemleri döngü halinde yapar. Birimleri ve binaları kontrol edebilir. Daha hızlı çalışır.
|
||||||
|
block.hyper-processor.description = Birtakım işlemleri döngü halinde yapar. Birimleri ve binaları kontrol edebilir. Daha-da hızlı çalışır.
|
||||||
|
block.memory-cell.description = Bilgi saklar.
|
||||||
|
block.memory-bank.description = Bilgi saklar. Yüksek kapasiteye sahiptir.
|
||||||
|
block.logic-display.description = Bir işlemciden bilgi alarak grafik gösteririr.
|
||||||
|
block.large-logic-display.description = Bir işlemciden bilgi alarak grafik gösteririr.
|
||||||
|
block.interplanetary-accelerator.description = Gezegenler Arası ulaşım şimdi parmaklarının ucunda...
|
||||||
|
#burdan sonraki her şeyi benim translate etmem gerekti!!! -RTOmega
|
||||||
|
unit.dagger.description = Düşmanlara basit mermilerle ateş eder.
|
||||||
|
unit.mace.description = Düşmanlara alev atar.
|
||||||
|
unit.fortress.description = Yer Düşmanlarına uzun menzil gülleler fırlatır.
|
||||||
|
unit.scepter.description = Düşmanlara süper yüklü mermiler fırlatır.
|
||||||
|
unit.reign.description = Düşmanlara devasa delici mermilerle ateş eder.
|
||||||
|
unit.nova.description = Minik lazerler atar ve binaları tamir eder. Uçabilir.
|
||||||
|
unit.pulsar.description = Minik elektroşoklar atar ve binaları tamir eder. Uçabilir.
|
||||||
|
unit.quasar.description = Delici lazerlerle ateş eder ve binaları tamir eder. Uçabilir.
|
||||||
|
unit.vela.description = Uzun süreli büyük bir lazer ateş eder ve binaları tamir eder. Uçabilir.
|
||||||
|
unit.corvus.description = Çok Yüksek Menzilli devasa bir lazer atar. Her şeyi deler. Binaların üstünden yürüyebilir.
|
||||||
|
unit.crawler.description = Düşmana doğru koşar ve kendini imha eder.
|
||||||
|
unit.atrax.description = Cürüf topları fırlator. Binaların üstünden yürüyebilir.
|
||||||
|
unit.spiroct.description = Emici lazerler ateş eder, kendini onarır. Binaların üstünden yürüyebilir.
|
||||||
|
unit.arkyid.description = Emci ilazerler ateş eder ve devasa bir gülle fırlatır. Binaların üstünden yürüyebilir.
|
||||||
|
unit.toxopid.description = Devasa bir enerji topu fırlatır. Binaların üstünden yürüyebilir.
|
||||||
|
unit.flare.description = Yakındakilere basit mermi atar.
|
||||||
|
unit.horizon.description = Yakındaki yer düşmanlarına bombarduman yapar.
|
||||||
|
unit.zenith.description = Swarmer-gibi füzeler fırlatır.
|
||||||
|
unit.antumbra.description = Büyük boyutta mermiler fırlatır.
|
||||||
|
unit.eclipse.description = Büyük mermiler fırlatır ve lazer atar.
|
||||||
|
unit.mono.description = Otomatik bir şekilde Bakır ve Kurşun kazar ve çekirdeğe getirir.
|
||||||
|
unit.poly.description = Otomatik bir şekilde kırılmış binaları geri inşa eder ve oyuncuya inşaatta yardımcı olur.
|
||||||
|
unit.mega.description = Otomayik bir şekilde hasarlı bolkları onarır. Blokları ve Birimleri taşıyabilir.
|
||||||
|
unit.quad.description = Büyük bombalar atar, hasarlı bolkları onarır ve düşmanlara zarar verir. Bolkları ve Birimleri taşıyabilir.
|
||||||
|
unit.oct.description = Yakındaki birimleri korur ve tamir eder. Blokları ve Birimleri taşıyabilir.
|
||||||
|
unit.risso.description = Yakındaki düşmanlara Füze atar.
|
||||||
|
unit.minke.description = Yakındaki düşmanlara basit mermi ve toplarla saldırır.
|
||||||
|
unit.bryde.description = Düşmanlara uzun menzil havanıyla saldırır.
|
||||||
|
unit.sei.description = Düşmanlara füze atar ve devasa zırh delici mermilerle saldırır.
|
||||||
|
unit.omura.description = Uzun menzil bir ışın atıcıya sahiptir. Mermisi nerdeyse her bolğu delebilir. Flare üretir.
|
||||||
|
unit.alpha.description = Çekirdeği korur. Bina inşa eder
|
||||||
|
unit.beta.description = Çekirdeği korur. Bina inşa eder
|
||||||
|
unit.gamma.description = Çekirdeği korur. Bina inşa eder
|
||||||
|
|
||||||
|
lst.read = Bağlı hafıza kutusundaki numarayı okur.
|
||||||
|
lst.write = Bağlı hafıza kutuaundaki numaraya yazar.
|
||||||
|
lst.print = Text yazar.
|
||||||
|
lst.draw = Ekrana Çizer.
|
||||||
|
lst.drawflush = Ekrana Çizimi Aktarır.
|
||||||
|
lst.printflush = Mesaj bloğuna texti aktarır,
|
||||||
|
lst.getlink = Bağlı blokları alır.
|
||||||
|
lst.control = Bir binayı yönet.
|
||||||
|
lst.radar = Bir silahın yakınındaki birimleri alıgılar,
|
||||||
|
lst.sensor = Bloklardan bilgi alır.
|
||||||
|
lst.set = Bir değişken ata.
|
||||||
|
lst.operation = Değişkenlerle işlem yap.
|
||||||
|
lst.end = Döngünün sonuna atla.
|
||||||
|
lst.jump = Bir yerden başka bir yere atla.
|
||||||
|
lst.unitbind = Bir birimi bağla: [accent]@unit[].
|
||||||
|
lst.unitcontrol = Bağlı birimi kontrol et.
|
||||||
|
lst.unitradar = Bağlı birimin etrafındaki birimleri tara.
|
||||||
|
lst.unitlocate = Etraftaki blokları algılar.\nBağlı birim gerektirir.
|
||||||
|
|
||||||
|
logic.nounitbuild = [red]Birim İnşası Yasak!
|
||||||
|
|
||||||
|
lenum.type = Bir bina/birim türü.\nörnek: [accent]@router[].
|
||||||
|
lenum.shoot = Bir konuma ateş et.
|
||||||
|
lenum.shootp = Belli bir birim veya binaya ateş et.
|
||||||
|
lenum.config = Bina configurasyonu, örnek: Ayıklayıcı Türü
|
||||||
|
lenum.enabled = Blok aktif mi?
|
||||||
|
|
||||||
|
laccess.color = Aydınlatıcı Rengi.
|
||||||
|
laccess.controller = Nirim Kontrol edici. Eğer işlemci kontrol ediyorsa işlemci döner.
|
||||||
|
laccess.dead = Bir bina veya birim hala var mı?
|
||||||
|
laccess.controlled = Bir birim ne tarafından kontrol ediliyor?
|
||||||
|
laccess.commanded = [red]Bu komut sonradan silicek! Controlled kullan!
|
||||||
|
laccess.progress = Bir şeyin oluş aşaması, örnek: bir turetin yeniden doldurma süresindeki aşama.
|
||||||
|
|
||||||
|
graphicstype.clear = Ekranı bir renkle kapla.
|
||||||
|
graphicstype.color = Bir sonraki çizim için Renk.
|
||||||
|
graphicstype.stroke = Çizgi Kalınlığını belirle.
|
||||||
|
graphicstype.line = Çizgiyi Belirle.
|
||||||
|
graphicstype.rect = Bir Dikdörtgeni doldur.
|
||||||
|
graphicstype.linerect = İçi boş Dikdörtgen çiz.
|
||||||
|
graphicstype.poly = İçi Dolu Çokgen Çiz.
|
||||||
|
graphicstype.linepoly = İçi Boş Çokgen Çiz.
|
||||||
|
graphicstype.triangle = İçi Dolu Üçgen Çiz.
|
||||||
|
graphicstype.image = Bir ikon çiz. \nörnek: [accent]@router[] veya [accent]@dagger[].
|
||||||
|
|
||||||
|
lenum.always = Her Zaman Doğru
|
||||||
|
lenum.idiv = Tamsayı Bölme
|
||||||
|
lenum.div = Bölme
|
||||||
|
lenum.mod = Mod
|
||||||
|
lenum.equal = Eşit
|
||||||
|
lenum.notequal = Eşit Değil
|
||||||
|
lenum.strictequal = Aynı
|
||||||
|
lenum.shl = Shift Sol
|
||||||
|
lenum.shr = Shift Sağ
|
||||||
|
lenum.or = Veya
|
||||||
|
lenum.land = Çapraz Ve
|
||||||
|
lenum.and = Ve
|
||||||
|
lenum.not = Değil
|
||||||
|
lenum.xor = Çapraz Veya
|
||||||
|
|
||||||
|
lenum.min = İki sayıdan en küçüğü.
|
||||||
|
lenum.max = İki sayıdan en büyüğü.
|
||||||
|
lenum.angle = İki Işının yaptığı Açı.
|
||||||
|
lenum.len = Bir Işının Uzunluğu.
|
||||||
|
|
||||||
|
lenum.sin = Sinüs
|
||||||
|
lenum.cos = Cosinüs
|
||||||
|
lenum.tan = Tanjant
|
||||||
|
|
||||||
|
lenum.asin = Arc Sinüs
|
||||||
|
lenum.acos = Arc Cosinüs
|
||||||
|
lenum.atan = Arc Tanjant
|
||||||
|
|
||||||
|
#not a typo, look up 'range notation'
|
||||||
|
lenum.rand = [0 ile Sayı) arasında rastgele bir sayı.
|
||||||
|
lenum.log = Logaritma
|
||||||
|
lenum.log10 = Logaritma 10
|
||||||
|
lenum.noise = 2D Noise
|
||||||
|
lenum.abs = Absulute
|
||||||
|
lenum.sqrt = KareKök
|
||||||
|
|
||||||
|
lenum.any = Herhangi bir Birim.
|
||||||
|
lenum.ally = Aynı Takımdan Birim.
|
||||||
|
lenum.attacker = Silahlı Birim.
|
||||||
|
lenum.enemy = Düşman Birim.
|
||||||
|
lenum.boss = Gardiyan Biri.
|
||||||
|
lenum.flying = Uçan Birim.
|
||||||
|
lenum.ground = Yürüyen Birim.
|
||||||
|
lenum.player = Oyuncu olan bir Birim.
|
||||||
|
|
||||||
|
lenum.ore = Maden.
|
||||||
|
lenum.damaged = Hasarlı Aynı Takımdan bir Blok.
|
||||||
|
lenum.spawn = Düşman Oluşum Noktası
|
||||||
|
lenum.building = Bir guruptan bir blok.
|
||||||
|
|
||||||
|
lenum.core = Herhangi bir Çekirdek.
|
||||||
|
lenum.storage = Depolama Bloğu,
|
||||||
|
lenum.generator = Enerji Üreten bir Blok.
|
||||||
|
lenum.factory = Fabrika Bloğu,
|
||||||
|
lenum.repair = Tamir Bloğu.
|
||||||
|
lenum.rally = Komut Bloğu.
|
||||||
|
lenum.battery = Pil.
|
||||||
|
lenum.resupply = Mermi Aktarım Bloğu.
|
||||||
|
lenum.reactor = Patlama/Thorium Reaktör.
|
||||||
|
lenum.turret = Herhangi bir taret.
|
||||||
|
|
||||||
|
sensor.in = Algılanan Blok/Birim.
|
||||||
|
|
||||||
|
radar.from = Algı Oluşturulan Blok.
|
||||||
|
radar.target = Algılanan Birimler için Filtre.
|
||||||
|
radar.and = Extra Filtre.
|
||||||
|
radar.order = Sıralama Filtresi.
|
||||||
|
radar.sort = Sıralama Sırası.
|
||||||
|
radar.output = Dışarı Aktarılan Değişken.
|
||||||
|
|
||||||
|
unitradar.target = Algılanan Birim için Filtre.
|
||||||
|
unitradar.and = Extra Filtre.
|
||||||
|
unitradar.order = Sıralama Filtresi.
|
||||||
|
unitradar.sort = Sıralama Sırası.
|
||||||
|
unitradar.output = Dışarı Aktarılan Değişken.
|
||||||
|
|
||||||
|
control.of = Kontrol Edilen.
|
||||||
|
control.unit = Ateş ediceğimiz Obje.
|
||||||
|
control.shoot = Ateş edilsin mi?
|
||||||
|
|
||||||
|
unitlocate.enemy = Düşman mı?
|
||||||
|
unitlocate.found = Obje bulundu mu?
|
||||||
|
unitlocate.building = Bulunan binanın Türü.
|
||||||
|
unitlocate.outx = X kordinatı.
|
||||||
|
unitlocate.outy = Y kordinatı.
|
||||||
|
unitlocate.group = Aranan binanın türü.
|
||||||
|
|
||||||
|
lenum.idle = Hareket etmez ancak kazmaya ve inşa etmeye devam eder.
|
||||||
|
lenum.stop = Dur!
|
||||||
|
lenum.move = Tam konuma git.
|
||||||
|
lenum.approach = Bir Konuma yaklaş.
|
||||||
|
lenum.pathfind = Düşman Doğuş noktasına git.
|
||||||
|
lenum.target = Bir alana ateş et,
|
||||||
|
lenum.targetp = Bir cisme ateş et.
|
||||||
|
lenum.itemdrop = Bir itemi bırak.
|
||||||
|
lenum.itemtake = Bir binadan item al.
|
||||||
|
lenum.paydrop = Kargoyu bırak.
|
||||||
|
lenum.paytake = Kargo al.
|
||||||
|
lenum.flag = Numara ile işaretle,
|
||||||
|
lenum.mine = Kaz.
|
||||||
|
lenum.build = Bina inşa et.
|
||||||
|
lenum.getblock = Bir bloğun verilerini al.
|
||||||
|
lenum.within = Bir birim menzil alanında mı?
|
||||||
|
lenum.boost = Boostlamaya başla/dur
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ BeefEX
|
|||||||
Lorex
|
Lorex
|
||||||
老滑稽
|
老滑稽
|
||||||
Spico The Spirit Guy
|
Spico The Spirit Guy
|
||||||
|
RTOmega
|
||||||
TunacanGamer
|
TunacanGamer
|
||||||
kemalinanc13
|
kemalinanc13
|
||||||
Zachary
|
Zachary
|
||||||
|
|||||||
@@ -378,3 +378,4 @@
|
|||||||
63355=silicon-arc-smelter|block-silicon-arc-smelter-ui
|
63355=silicon-arc-smelter|block-silicon-arc-smelter-ui
|
||||||
63354=payload-launch-pad|block-payload-launch-pad-ui
|
63354=payload-launch-pad|block-payload-launch-pad-ui
|
||||||
63353=silicon-arc-furnace|block-silicon-arc-furnace-ui
|
63353=silicon-arc-furnace|block-silicon-arc-furnace-ui
|
||||||
|
63352=metal-floor-4|block-metal-floor-4-ui
|
||||||
|
|||||||
@@ -27,8 +27,6 @@ public class BlockIndexer{
|
|||||||
private static final Rect rect = new Rect();
|
private static final Rect rect = new Rect();
|
||||||
private static boolean returnBool = false;
|
private static boolean returnBool = false;
|
||||||
|
|
||||||
private final IntSet intSet = new IntSet();
|
|
||||||
|
|
||||||
private int quadWidth, quadHeight;
|
private int quadWidth, quadHeight;
|
||||||
|
|
||||||
/** Stores all ore quadrants on the map. Maps ID to qX to qY to a list of tiles with that ore. */
|
/** Stores all ore quadrants on the map. Maps ID to qX to qY to a list of tiles with that ore. */
|
||||||
@@ -41,9 +39,9 @@ public class BlockIndexer{
|
|||||||
private Seq<Team> activeTeams = new Seq<>(Team.class);
|
private Seq<Team> activeTeams = new Seq<>(Team.class);
|
||||||
/** Maps teams to a map of flagged tiles by flag. */
|
/** Maps teams to a map of flagged tiles by flag. */
|
||||||
private TileArray[][] flagMap = new TileArray[Team.all.length][BlockFlag.all.length];
|
private TileArray[][] flagMap = new TileArray[Team.all.length][BlockFlag.all.length];
|
||||||
|
/** Counts whether a certain floor is present in the world upon load. */
|
||||||
|
private boolean[] blocksPresent;
|
||||||
|
|
||||||
/** Empty set used for returning. */
|
|
||||||
private TileArray emptySet = new TileArray();
|
|
||||||
/** Array used for returning and reusing. */
|
/** Array used for returning and reusing. */
|
||||||
private Seq<Tile> returnArray = new Seq<>();
|
private Seq<Tile> returnArray = new Seq<>();
|
||||||
/** Array used for returning and reusing. */
|
/** Array used for returning and reusing. */
|
||||||
@@ -74,6 +72,7 @@ public class BlockIndexer{
|
|||||||
ores = new IntSeq[content.items().size][][];
|
ores = new IntSeq[content.items().size][][];
|
||||||
quadWidth = Mathf.ceil(world.width() / (float)quadrantSize);
|
quadWidth = Mathf.ceil(world.width() / (float)quadrantSize);
|
||||||
quadHeight = Mathf.ceil(world.height() / (float)quadrantSize);
|
quadHeight = Mathf.ceil(world.height() / (float)quadrantSize);
|
||||||
|
blocksPresent = new boolean[content.blocks().size];
|
||||||
|
|
||||||
for(Tile tile : world.tiles){
|
for(Tile tile : world.tiles){
|
||||||
process(tile);
|
process(tile);
|
||||||
@@ -153,6 +152,12 @@ public class BlockIndexer{
|
|||||||
seq.removeValue(pos);
|
seq.removeValue(pos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @return whether a certain block is anywhere on this map. */
|
||||||
|
public boolean isBlockPresent(Block block){
|
||||||
|
return blocksPresent != null && blocksPresent[block.id];
|
||||||
}
|
}
|
||||||
|
|
||||||
private TileArray[] getFlagged(Team team){
|
private TileArray[] getFlagged(Team team){
|
||||||
@@ -383,6 +388,13 @@ public class BlockIndexer{
|
|||||||
}
|
}
|
||||||
data.buildings.insert(tile.build);
|
data.buildings.insert(tile.build);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!tile.block().isStatic()){
|
||||||
|
blocksPresent[tile.floorID()] = true;
|
||||||
|
blocksPresent[tile.overlayID()] = true;
|
||||||
|
}
|
||||||
|
//bounds checks only needed in very specific scenarios
|
||||||
|
if(tile.blockID() < blocksPresent.length) blocksPresent[tile.blockID()] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class TileArray implements Iterable<Tile>{
|
public static class TileArray implements Iterable<Tile>{
|
||||||
|
|||||||
@@ -156,7 +156,7 @@ public class WaveSpawner{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(state.rules.attackMode && state.teams.isActive(state.rules.waveTeam)){
|
if(state.rules.attackMode && state.teams.isActive(state.rules.waveTeam)){
|
||||||
for(Building core : state.teams.get(state.rules.waveTeam).cores){
|
for(Building core : state.rules.waveTeam.data().cores){
|
||||||
cons.get(core.x, core.y);
|
cons.get(core.x, core.y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,8 +75,4 @@ public class MinerAI extends AIController{
|
|||||||
circle(core, unit.type.range / 1.8f);
|
circle(core, unit.type.range / 1.8f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void updateTargeting(){
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -209,7 +209,7 @@ public class SoundControl{
|
|||||||
|
|
||||||
/** Whether to play dark music.*/
|
/** Whether to play dark music.*/
|
||||||
protected boolean isDark(){
|
protected boolean isDark(){
|
||||||
if(state.teams.get(player.team()).hasCore() && state.teams.get(player.team()).core().healthf() < 0.85f){
|
if(player.team().data().hasCore() && player.team().data().core().healthf() < 0.85f){
|
||||||
//core damaged -> dark
|
//core damaged -> dark
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ public class Blocks implements ContentList{
|
|||||||
regolithWall, yellowStoneWall, rhyoliteWall, carbonWall,
|
regolithWall, yellowStoneWall, rhyoliteWall, carbonWall,
|
||||||
graphiticStone,
|
graphiticStone,
|
||||||
iceSnow, sandWater, darksandWater, duneWall, sandWall, moss, sporeMoss, shale, shaleWall, shaleBoulder, sandBoulder, daciteBoulder, boulder, snowBoulder, basaltBoulder, grass, salt,
|
iceSnow, sandWater, darksandWater, duneWall, sandWall, moss, sporeMoss, shale, shaleWall, shaleBoulder, sandBoulder, daciteBoulder, boulder, snowBoulder, basaltBoulder, grass, salt,
|
||||||
metalFloor, metalFloorDamaged, metalFloor2, metalFloor3, metalFloor5, basalt, magmarock, hotrock, snowWall, saltWall,
|
metalFloor, metalFloorDamaged, metalFloor2, metalFloor3, metalFloor4, metalFloor5, basalt, magmarock, hotrock, snowWall, saltWall,
|
||||||
darkPanel1, darkPanel2, darkPanel3, darkPanel4, darkPanel5, darkPanel6, darkMetal,
|
darkPanel1, darkPanel2, darkPanel3, darkPanel4, darkPanel5, darkPanel6, darkMetal,
|
||||||
pebbles, tendrils,
|
pebbles, tendrils,
|
||||||
|
|
||||||
@@ -493,32 +493,24 @@ public class Blocks implements ContentList{
|
|||||||
wall = sporeWall;
|
wall = sporeWall;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
metalFloor = new Floor("metal-floor"){{
|
metalFloor = new MetalFloor("metal-floor"){{
|
||||||
variants = 0;
|
variants = 0;
|
||||||
|
attributes.set(Attribute.water, -1f);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
metalFloorDamaged = new Floor("metal-floor-damaged"){{
|
metalFloorDamaged = new MetalFloor("metal-floor-damaged", 3);
|
||||||
variants = 3;
|
|
||||||
}};
|
|
||||||
|
|
||||||
metalFloor2 = new Floor("metal-floor-2"){{
|
metalFloor2 = new MetalFloor("metal-floor-2");
|
||||||
variants = 0;
|
metalFloor3 = new MetalFloor("metal-floor-3");
|
||||||
}};
|
metalFloor4 = new MetalFloor("metal-floor-4");
|
||||||
|
metalFloor5 = new MetalFloor("metal-floor-5");
|
||||||
|
|
||||||
metalFloor3 = new Floor("metal-floor-3"){{
|
darkPanel1 = new MetalFloor("dark-panel-1");
|
||||||
variants = 0;
|
darkPanel2 = new MetalFloor("dark-panel-2");
|
||||||
}};
|
darkPanel3 = new MetalFloor("dark-panel-3");
|
||||||
|
darkPanel4 = new MetalFloor("dark-panel-4");
|
||||||
metalFloor5 = new Floor("metal-floor-5"){{
|
darkPanel5 = new MetalFloor("dark-panel-5");
|
||||||
variants = 0;
|
darkPanel6 = new MetalFloor("dark-panel-6");
|
||||||
}};
|
|
||||||
|
|
||||||
darkPanel1 = new Floor("dark-panel-1"){{ variants = 0; }};
|
|
||||||
darkPanel2 = new Floor("dark-panel-2"){{ variants = 0; }};
|
|
||||||
darkPanel3 = new Floor("dark-panel-3"){{ variants = 0; }};
|
|
||||||
darkPanel4 = new Floor("dark-panel-4"){{ variants = 0; }};
|
|
||||||
darkPanel5 = new Floor("dark-panel-5"){{ variants = 0; }};
|
|
||||||
darkPanel6 = new Floor("dark-panel-6"){{ variants = 0; }};
|
|
||||||
|
|
||||||
darkMetal = new StaticWall("dark-metal");
|
darkMetal = new StaticWall("dark-metal");
|
||||||
|
|
||||||
@@ -1773,8 +1765,8 @@ public class Blocks implements ContentList{
|
|||||||
);
|
);
|
||||||
|
|
||||||
size = 2;
|
size = 2;
|
||||||
range = 180f;
|
range = 190f;
|
||||||
reloadTime = 38f;
|
reloadTime = 34f;
|
||||||
restitution = 0.03f;
|
restitution = 0.03f;
|
||||||
ammoEjectBack = 3f;
|
ammoEjectBack = 3f;
|
||||||
cooldown = 0.03f;
|
cooldown = 0.03f;
|
||||||
@@ -2013,7 +2005,7 @@ public class Blocks implements ContentList{
|
|||||||
}};
|
}};
|
||||||
|
|
||||||
health = 200 * size * size;
|
health = 200 * size * size;
|
||||||
consumes.add(new ConsumeLiquidFilter(liquid -> liquid.temperature <= 0.5f && liquid.flammability < 0.1f, 0.5f)).update(false);
|
consumes.add(new ConsumeCoolant(0.5f)).update(false);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
//endregion
|
//endregion
|
||||||
@@ -2191,10 +2183,11 @@ public class Blocks implements ContentList{
|
|||||||
payloadPropulsionTower = new PayloadMassDriver("payload-propulsion-tower"){{
|
payloadPropulsionTower = new PayloadMassDriver("payload-propulsion-tower"){{
|
||||||
requirements(Category.units, with(Items.thorium, 300, Items.silicon, 200, Items.plastanium, 200, Items.phaseFabric, 50));
|
requirements(Category.units, with(Items.thorium, 300, Items.silicon, 200, Items.plastanium, 200, Items.phaseFabric, 50));
|
||||||
size = 5;
|
size = 5;
|
||||||
reloadTime = 150f;
|
reloadTime = 140f;
|
||||||
chargeTime = 100f;
|
chargeTime = 100f;
|
||||||
range = 300f;
|
range = 500f;
|
||||||
consumes.power(10f);
|
maxPayloadSize = 3.5f;
|
||||||
|
consumes.power(6f);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
//endregion
|
//endregion
|
||||||
|
|||||||
@@ -1231,10 +1231,10 @@ public class Fx{
|
|||||||
});
|
});
|
||||||
}),
|
}),
|
||||||
|
|
||||||
shootLiquid = new Effect(40f, 80f, e -> {
|
shootLiquid = new Effect(15f, 80f, e -> {
|
||||||
color(e.color, Color.white, e.fout() / 6f + Mathf.randomSeedRange(e.id, 0.1f));
|
color(e.color);
|
||||||
|
|
||||||
randLenVectors(e.id, 6, e.finpow() * 60f, e.rotation, 11f, (x, y) -> {
|
randLenVectors(e.id, 2, e.finpow() * 15f, e.rotation, 11f, (x, y) -> {
|
||||||
Fill.circle(e.x + x, e.y + y, 0.5f + e.fout() * 2.5f);
|
Fill.circle(e.x + x, e.y + y, 0.5f + e.fout() * 2.5f);
|
||||||
});
|
});
|
||||||
}),
|
}),
|
||||||
|
|||||||
@@ -709,7 +709,7 @@ public class TechTree implements ContentList{
|
|||||||
/** Item requirements for this content. */
|
/** Item requirements for this content. */
|
||||||
public ItemStack[] requirements;
|
public ItemStack[] requirements;
|
||||||
/** Requirements that have been fulfilled. Always the same length as the requirement array. */
|
/** Requirements that have been fulfilled. Always the same length as the requirement array. */
|
||||||
public final ItemStack[] finishedRequirements;
|
public ItemStack[] finishedRequirements;
|
||||||
/** Extra objectives needed to research this. */
|
/** Extra objectives needed to research this. */
|
||||||
public Seq<Objective> objectives = new Seq<>();
|
public Seq<Objective> objectives = new Seq<>();
|
||||||
/** Nodes that depend on this node. */
|
/** Nodes that depend on this node. */
|
||||||
@@ -720,14 +720,8 @@ public class TechTree implements ContentList{
|
|||||||
|
|
||||||
this.parent = parent;
|
this.parent = parent;
|
||||||
this.content = content;
|
this.content = content;
|
||||||
this.requirements = requirements;
|
|
||||||
this.depth = parent == null ? 0 : parent.depth + 1;
|
this.depth = parent == null ? 0 : parent.depth + 1;
|
||||||
this.finishedRequirements = new ItemStack[requirements.length];
|
setupRequirements(requirements);
|
||||||
|
|
||||||
//load up the requirements that have been finished if settings are available
|
|
||||||
for(int i = 0; i < requirements.length; i++){
|
|
||||||
finishedRequirements[i] = new ItemStack(requirements[i].item, Core.settings == null ? 0 : Core.settings.getInt("req-" + content.name + "-" + requirements[i].item.name));
|
|
||||||
}
|
|
||||||
|
|
||||||
var used = new ObjectSet<Content>();
|
var used = new ObjectSet<Content>();
|
||||||
|
|
||||||
@@ -742,6 +736,16 @@ public class TechTree implements ContentList{
|
|||||||
all.add(this);
|
all.add(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setupRequirements(ItemStack[] requirements){
|
||||||
|
this.requirements = requirements;
|
||||||
|
this.finishedRequirements = new ItemStack[requirements.length];
|
||||||
|
|
||||||
|
//load up the requirements that have been finished if settings are available
|
||||||
|
for(int i = 0; i < requirements.length; i++){
|
||||||
|
finishedRequirements[i] = new ItemStack(requirements[i].item, Core.settings == null ? 0 : Core.settings.getInt("req-" + content.name + "-" + requirements[i].item.name));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** Resets finished requirements and saves. */
|
/** Resets finished requirements and saves. */
|
||||||
public void reset(){
|
public void reset(){
|
||||||
for(ItemStack stack : finishedRequirements){
|
for(ItemStack stack : finishedRequirements){
|
||||||
|
|||||||
@@ -611,7 +611,7 @@ public class UnitTypes implements ContentList{
|
|||||||
|
|
||||||
bullet = new LiquidBulletType(Liquids.slag){{
|
bullet = new LiquidBulletType(Liquids.slag){{
|
||||||
damage = 11;
|
damage = 11;
|
||||||
speed = 2.3f;
|
speed = 2.4f;
|
||||||
drag = 0.01f;
|
drag = 0.01f;
|
||||||
shootEffect = Fx.shootSmall;
|
shootEffect = Fx.shootSmall;
|
||||||
lifetime = 56f;
|
lifetime = 56f;
|
||||||
|
|||||||
@@ -117,5 +117,4 @@ public class Weathers implements ContentList{
|
|||||||
baseSpeed = 0.03f;
|
baseSpeed = 0.03f;
|
||||||
}};
|
}};
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -247,12 +247,12 @@ public class Control implements ApplicationListener, Loadable{
|
|||||||
saves.load();
|
saves.load();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Automatically unlocks things with no requirements. */
|
/** Automatically unlocks things with no requirements and no locked parents. */
|
||||||
void checkAutoUnlocks(){
|
void checkAutoUnlocks(){
|
||||||
if(net.client()) return;
|
if(net.client()) return;
|
||||||
|
|
||||||
for(TechNode node : TechTree.all){
|
for(TechNode node : TechTree.all){
|
||||||
if(!node.content.unlocked() && node.requirements.length == 0 && !node.objectives.contains(o -> !o.complete())){
|
if(!node.content.unlocked() && (node.parent == null || node.parent.content.unlocked()) && node.requirements.length == 0 && !node.objectives.contains(o -> !o.complete())){
|
||||||
node.content.unlock();
|
node.content.unlock();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ public class Logic implements ApplicationListener{
|
|||||||
|
|
||||||
Events.on(BlockBuildEndEvent.class, event -> {
|
Events.on(BlockBuildEndEvent.class, event -> {
|
||||||
if(!event.breaking){
|
if(!event.breaking){
|
||||||
TeamData data = state.teams.get(event.team);
|
TeamData data = event.team.data();
|
||||||
Iterator<BlockPlan> it = data.blocks.iterator();
|
Iterator<BlockPlan> it = data.blocks.iterator();
|
||||||
while(it.hasNext()){
|
while(it.hasNext()){
|
||||||
BlockPlan b = it.next();
|
BlockPlan b = it.next();
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ import mindustry.gen.*;
|
|||||||
import mindustry.net.Administration.*;
|
import mindustry.net.Administration.*;
|
||||||
import mindustry.net.*;
|
import mindustry.net.*;
|
||||||
import mindustry.net.Packets.*;
|
import mindustry.net.Packets.*;
|
||||||
import mindustry.ui.*;
|
|
||||||
import mindustry.world.*;
|
import mindustry.world.*;
|
||||||
import mindustry.world.modules.*;
|
import mindustry.world.modules.*;
|
||||||
|
|
||||||
@@ -160,6 +159,18 @@ public class NetClient implements ApplicationListener{
|
|||||||
clientPacketReliable(type, contents);
|
clientPacketReliable(type, contents);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Remote(variants = Variant.both, unreliable = true)
|
||||||
|
public static void effect(Effect effect, float x, float y, float rotation, Color color){
|
||||||
|
if(effect == null) return;
|
||||||
|
|
||||||
|
effect.at(x, y, rotation, color);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Remote(variants = Variant.both)
|
||||||
|
public static void effectReliable(Effect effect, float x, float y, float rotation, Color color){
|
||||||
|
effect(effect, x, y, rotation, color);
|
||||||
|
}
|
||||||
|
|
||||||
//called on all clients
|
//called on all clients
|
||||||
@Remote(targets = Loc.server, variants = Variant.both)
|
@Remote(targets = Loc.server, variants = Variant.both)
|
||||||
public static void sendMessage(String message, String sender, Player playersender){
|
public static void sendMessage(String message, String sender, Player playersender){
|
||||||
@@ -314,78 +325,6 @@ public class NetClient implements ApplicationListener{
|
|||||||
ui.loadfrag.hide();
|
ui.loadfrag.hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Remote(variants = Variant.both, unreliable = true)
|
|
||||||
public static void setHudText(String message){
|
|
||||||
if(message == null) return;
|
|
||||||
|
|
||||||
ui.hudfrag.setHudText(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Remote(variants = Variant.both)
|
|
||||||
public static void hideHudText(){
|
|
||||||
ui.hudfrag.toggleHudText(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** TCP version */
|
|
||||||
@Remote(variants = Variant.both)
|
|
||||||
public static void setHudTextReliable(String message){
|
|
||||||
setHudText(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Remote(variants = Variant.both)
|
|
||||||
public static void announce(String message){
|
|
||||||
if(message == null) return;
|
|
||||||
|
|
||||||
ui.announce(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Remote(variants = Variant.both)
|
|
||||||
public static void infoMessage(String message){
|
|
||||||
if(message == null) return;
|
|
||||||
|
|
||||||
ui.showText("", message);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Remote(variants = Variant.both)
|
|
||||||
public static void infoPopup(String message, float duration, int align, int top, int left, int bottom, int right){
|
|
||||||
if(message == null) return;
|
|
||||||
|
|
||||||
ui.showInfoPopup(message, duration, align, top, left, bottom, right);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Remote(variants = Variant.both)
|
|
||||||
public static void label(String message, float duration, float worldx, float worldy){
|
|
||||||
if(message == null) return;
|
|
||||||
|
|
||||||
ui.showLabel(message, duration, worldx, worldy);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Remote(variants = Variant.both, unreliable = true)
|
|
||||||
public static void effect(Effect effect, float x, float y, float rotation, Color color){
|
|
||||||
if(effect == null) return;
|
|
||||||
|
|
||||||
effect.at(x, y, rotation, color);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Remote(variants = Variant.both)
|
|
||||||
public static void effectReliable(Effect effect, float x, float y, float rotation, Color color){
|
|
||||||
effect(effect, x, y, rotation, color);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Remote(variants = Variant.both)
|
|
||||||
public static void infoToast(String message, float duration){
|
|
||||||
if(message == null) return;
|
|
||||||
|
|
||||||
ui.showInfoToast(message, duration);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Remote(variants = Variant.both)
|
|
||||||
public static void warningToast(int unicode, String text){
|
|
||||||
if(text == null || Fonts.icon.getData().getGlyph((char)unicode) == null) return;
|
|
||||||
|
|
||||||
ui.hudfrag.showToast(Fonts.getGlyph(Fonts.icon, (char)unicode), text);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Remote(variants = Variant.both)
|
@Remote(variants = Variant.both)
|
||||||
public static void setRules(Rules rules){
|
public static void setRules(Rules rules){
|
||||||
state.rules = rules;
|
state.rules = rules;
|
||||||
@@ -518,7 +457,7 @@ public class NetClient implements ApplicationListener{
|
|||||||
int teams = input.readUnsignedByte();
|
int teams = input.readUnsignedByte();
|
||||||
for(int i = 0; i < teams; i++){
|
for(int i = 0; i < teams; i++){
|
||||||
int team = input.readUnsignedByte();
|
int team = input.readUnsignedByte();
|
||||||
TeamData data = state.teams.get(Team.all[team]);
|
TeamData data = Team.all[team].data();
|
||||||
if(data.cores.any()){
|
if(data.cores.any()){
|
||||||
data.cores.first().items.read(dataReads);
|
data.cores.first().items.read(dataReads);
|
||||||
}else{
|
}else{
|
||||||
|
|||||||
@@ -335,7 +335,7 @@ public class NetServer implements ApplicationListener{
|
|||||||
votes += d;
|
votes += d;
|
||||||
voted.addAll(player.uuid(), admins.getInfo(player.uuid()).lastIP);
|
voted.addAll(player.uuid(), admins.getInfo(player.uuid()).lastIP);
|
||||||
|
|
||||||
Call.sendMessage(Strings.format("[lightgray]@[lightgray] has voted on kicking[orange] @[].[accent] (@/@)\n[lightgray]Type[orange] /vote <y/n>[] to agree.",
|
Call.sendMessage(Strings.format("[lightgray]@[lightgray] has voted on kicking[orange] @[lightgray].[accent] (@/@)\n[lightgray]Type[orange] /vote <y/n>[] to agree.",
|
||||||
player.name, target.name, votes, votesRequired()));
|
player.name, target.name, votes, votesRequired()));
|
||||||
|
|
||||||
checkPass();
|
checkPass();
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import arc.math.*;
|
|||||||
import arc.struct.*;
|
import arc.struct.*;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
import arc.util.serialization.*;
|
import arc.util.serialization.*;
|
||||||
|
import mindustry.*;
|
||||||
import mindustry.mod.*;
|
import mindustry.mod.*;
|
||||||
import mindustry.net.*;
|
import mindustry.net.*;
|
||||||
import mindustry.net.Net.*;
|
import mindustry.net.Net.*;
|
||||||
@@ -20,9 +21,29 @@ import static mindustry.Vars.*;
|
|||||||
|
|
||||||
public interface Platform{
|
public interface Platform{
|
||||||
|
|
||||||
/** Dynamically creates a class loader for a jar file. */
|
/** Dynamically creates a class loader for a jar file. This loader must be child-first. */
|
||||||
default ClassLoader loadJar(Fi jar, ClassLoader parent) throws Exception{
|
default ClassLoader loadJar(Fi jar, ClassLoader parent) throws Exception{
|
||||||
return new URLClassLoader(new URL[]{jar.file().toURI().toURL()}, parent);
|
return new URLClassLoader(new URL[]{jar.file().toURI().toURL()}, parent){
|
||||||
|
@Override
|
||||||
|
protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException{
|
||||||
|
//check for loaded state
|
||||||
|
Class<?> loadedClass = findLoadedClass(name);
|
||||||
|
if(loadedClass == null){
|
||||||
|
try{
|
||||||
|
//try to load own class first
|
||||||
|
loadedClass = findClass(name);
|
||||||
|
}catch(ClassNotFoundException e){
|
||||||
|
//use parent if not found
|
||||||
|
loadedClass = super.loadClass(name, resolve);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(resolve){
|
||||||
|
resolveClass(loadedClass);
|
||||||
|
}
|
||||||
|
return loadedClass;
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Steam: Update lobby visibility.*/
|
/** Steam: Update lobby visibility.*/
|
||||||
@@ -64,6 +85,9 @@ public interface Platform{
|
|||||||
protected Context makeContext(){
|
protected Context makeContext(){
|
||||||
Context ctx = super.makeContext();
|
Context ctx = super.makeContext();
|
||||||
ctx.setClassShutter(Scripts::allowClass);
|
ctx.setClassShutter(Scripts::allowClass);
|
||||||
|
if(Vars.mods != null){
|
||||||
|
ctx.setApplicationClassLoader(Vars.mods.mainLoader());
|
||||||
|
}
|
||||||
return ctx;
|
return ctx;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -201,6 +201,7 @@ public class Renderer implements ApplicationListener{
|
|||||||
|
|
||||||
Draw.proj(camera);
|
Draw.proj(camera);
|
||||||
|
|
||||||
|
blocks.checkChanges();
|
||||||
blocks.floor.checkChanges();
|
blocks.floor.checkChanges();
|
||||||
blocks.processBlocks();
|
blocks.processBlocks();
|
||||||
|
|
||||||
|
|||||||
@@ -539,6 +539,38 @@ public class UI implements ApplicationListener, Loadable{
|
|||||||
dialog.show();
|
dialog.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Shows a menu that fires a callback when an option is selected. If nothing is selected, -1 is returned. */
|
||||||
|
public void showMenu(String title, String message, String[][] options, Intc callback){
|
||||||
|
new Dialog(title){{
|
||||||
|
cont.row();
|
||||||
|
cont.image().width(400f).pad(2).colspan(2).height(4f).color(Pal.accent);
|
||||||
|
cont.row();
|
||||||
|
cont.add(message).width(400f).wrap().get().setAlignment(Align.center);
|
||||||
|
cont.row();
|
||||||
|
|
||||||
|
int option = 0;
|
||||||
|
for(var optionsRow : options){
|
||||||
|
Table buttonRow = buttons.row().table().get().row();
|
||||||
|
int fullWidth = 400 - (optionsRow.length - 1) * 8; // adjust to count padding as well
|
||||||
|
int width = fullWidth / optionsRow.length;
|
||||||
|
int lastWidth = fullWidth - width * (optionsRow.length - 1); // take the rest of space for uneven table
|
||||||
|
|
||||||
|
for(int i = 0; i < optionsRow.length; i++){
|
||||||
|
if(optionsRow[i] == null) continue;
|
||||||
|
|
||||||
|
String optionName = optionsRow[i];
|
||||||
|
int finalOption = option;
|
||||||
|
buttonRow.button(optionName, () -> {
|
||||||
|
callback.get(finalOption);
|
||||||
|
hide();
|
||||||
|
}).size(i == optionsRow.length - 1 ? lastWidth : width, 50).pad(4);
|
||||||
|
option++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
closeOnBack(() -> callback.get(-1));
|
||||||
|
}}.show();
|
||||||
|
}
|
||||||
|
|
||||||
public static String formatTime(float ticks){
|
public static String formatTime(float ticks){
|
||||||
int time = (int)(ticks / 60);
|
int time = (int)(ticks / 60);
|
||||||
if(time < 60) return "0:" + (time < 10 ? "0" : "") + time;
|
if(time < 60) return "0:" + (time < 10 ? "0" : "") + time;
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import arc.math.*;
|
|||||||
import arc.math.geom.*;
|
import arc.math.geom.*;
|
||||||
import arc.math.geom.Geometry.*;
|
import arc.math.geom.Geometry.*;
|
||||||
import arc.struct.*;
|
import arc.struct.*;
|
||||||
import arc.struct.ObjectIntMap.*;
|
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
import arc.util.noise.*;
|
import arc.util.noise.*;
|
||||||
import mindustry.content.*;
|
import mindustry.content.*;
|
||||||
@@ -21,7 +20,6 @@ import mindustry.maps.*;
|
|||||||
import mindustry.maps.filters.*;
|
import mindustry.maps.filters.*;
|
||||||
import mindustry.maps.filters.GenerateFilter.*;
|
import mindustry.maps.filters.GenerateFilter.*;
|
||||||
import mindustry.type.*;
|
import mindustry.type.*;
|
||||||
import mindustry.type.Weather.*;
|
|
||||||
import mindustry.world.*;
|
import mindustry.world.*;
|
||||||
import mindustry.world.blocks.environment.*;
|
import mindustry.world.blocks.environment.*;
|
||||||
import mindustry.world.blocks.legacy.*;
|
import mindustry.world.blocks.legacy.*;
|
||||||
@@ -336,7 +334,7 @@ public class World{
|
|||||||
ui.showErrorMessage("@map.nospawn.pvp");
|
ui.showErrorMessage("@map.nospawn.pvp");
|
||||||
}
|
}
|
||||||
}else if(checkRules.attackMode){ //attack maps need two cores to be valid
|
}else if(checkRules.attackMode){ //attack maps need two cores to be valid
|
||||||
invalidMap = state.teams.get(state.rules.waveTeam).noCores();
|
invalidMap = state.rules.waveTeam.data().noCores();
|
||||||
if(invalidMap){
|
if(invalidMap){
|
||||||
ui.showErrorMessage("@map.nospawn.attack");
|
ui.showErrorMessage("@map.nospawn.attack");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -241,14 +241,14 @@ public class MapView extends Element implements GestureListener{
|
|||||||
|
|
||||||
image.setImageSize(editor.width(), editor.height());
|
image.setImageSize(editor.width(), editor.height());
|
||||||
|
|
||||||
if(!ScissorStack.push(rect.set(x, y + Core.scene.marginBottom, width, height))){
|
if(!ScissorStack.push(rect.set(x + Core.scene.marginLeft, y + Core.scene.marginBottom, width, height))){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Draw.color(Pal.remove);
|
Draw.color(Pal.remove);
|
||||||
Lines.stroke(2f);
|
Lines.stroke(2f);
|
||||||
Lines.rect(centerx - sclwidth / 2 - 1, centery - sclheight / 2 - 1, sclwidth + 2, sclheight + 2);
|
Lines.rect(centerx - sclwidth / 2 - 1, centery - sclheight / 2 - 1, sclwidth + 2, sclheight + 2);
|
||||||
editor.renderer.draw(centerx - sclwidth / 2, centery - sclheight / 2 + Core.scene.marginBottom, sclwidth, sclheight);
|
editor.renderer.draw(centerx - sclwidth / 2 + Core.scene.marginLeft, centery - sclheight / 2 + Core.scene.marginBottom, sclwidth, sclheight);
|
||||||
Draw.reset();
|
Draw.reset();
|
||||||
|
|
||||||
if(grid){
|
if(grid){
|
||||||
|
|||||||
@@ -31,11 +31,16 @@ public class Damage{
|
|||||||
|
|
||||||
/** Creates a dynamic explosion based on specified parameters. */
|
/** Creates a dynamic explosion based on specified parameters. */
|
||||||
public static void dynamicExplosion(float x, float y, float flammability, float explosiveness, float power, float radius, boolean damage){
|
public static void dynamicExplosion(float x, float y, float flammability, float explosiveness, float power, float radius, boolean damage){
|
||||||
dynamicExplosion(x, y, flammability, explosiveness, power, radius, damage, true, null);
|
dynamicExplosion(x, y, flammability, explosiveness, power, radius, damage, true, null, Fx.dynamicExplosion);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Creates a dynamic explosion based on specified parameters. */
|
/** Creates a dynamic explosion based on specified parameters. */
|
||||||
public static void dynamicExplosion(float x, float y, float flammability, float explosiveness, float power, float radius, boolean damage, boolean fire, @Nullable Team ignoreTeam){
|
public static void dynamicExplosion(float x, float y, float flammability, float explosiveness, float power, float radius, boolean damage, boolean fire, @Nullable Team ignoreTeam){
|
||||||
|
dynamicExplosion(x, y, flammability, explosiveness, power, radius, damage, fire, ignoreTeam, Fx.dynamicExplosion);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Creates a dynamic explosion based on specified parameters. */
|
||||||
|
public static void dynamicExplosion(float x, float y, float flammability, float explosiveness, float power, float radius, boolean damage, boolean fire, @Nullable Team ignoreTeam, Effect explosion){
|
||||||
if(damage){
|
if(damage){
|
||||||
for(int i = 0; i < Mathf.clamp(power / 700, 0, 8); i++){
|
for(int i = 0; i < Mathf.clamp(power / 700, 0, 8); i++){
|
||||||
int length = 5 + Mathf.clamp((int)(power / 500), 1, 20);
|
int length = 5 + Mathf.clamp((int)(power / 500), 1, 20);
|
||||||
@@ -69,7 +74,7 @@ public class Damage{
|
|||||||
|
|
||||||
float shake = Math.min(explosiveness / 4f + 3f, 9f);
|
float shake = Math.min(explosiveness / 4f + 3f, 9f);
|
||||||
Effect.shake(shake, shake, x, y);
|
Effect.shake(shake, shake, x, y);
|
||||||
Fx.dynamicExplosion.at(x, y, radius / 8f);
|
explosion.at(x, y, radius / 8f);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void createIncend(float x, float y, float range, int amount){
|
public static void createIncend(float x, float y, float range, int amount){
|
||||||
|
|||||||
@@ -163,6 +163,8 @@ public class BulletType extends Content implements Cloneable{
|
|||||||
public float puddleAmount = 5f;
|
public float puddleAmount = 5f;
|
||||||
public Liquid puddleLiquid = Liquids.water;
|
public Liquid puddleLiquid = Liquids.water;
|
||||||
|
|
||||||
|
public boolean displayAmmoMultiplier = true;
|
||||||
|
|
||||||
public float lightRadius = -1f;
|
public float lightRadius = -1f;
|
||||||
public float lightOpacity = 0.3f;
|
public float lightOpacity = 0.3f;
|
||||||
public Color lightColor = Pal.powerLight;
|
public Color lightColor = Pal.powerLight;
|
||||||
@@ -405,10 +407,10 @@ public class BulletType extends Content implements Cloneable{
|
|||||||
if(status == StatusEffects.none){
|
if(status == StatusEffects.none){
|
||||||
status = StatusEffects.shocked;
|
status = StatusEffects.shocked;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(lightningType == null){
|
if(lightningType == null){
|
||||||
lightningType = !collidesAir ? Bullets.damageLightningGround : Bullets.damageLightning;
|
lightningType = !collidesAir ? Bullets.damageLightningGround : Bullets.damageLightning;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ public class LiquidBulletType extends BulletType{
|
|||||||
shootEffect = Fx.none;
|
shootEffect = Fx.none;
|
||||||
drag = 0.001f;
|
drag = 0.001f;
|
||||||
knockback = 0.55f;
|
knockback = 0.55f;
|
||||||
|
displayAmmoMultiplier = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public LiquidBulletType(){
|
public LiquidBulletType(){
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package mindustry.entities.comp;
|
package mindustry.entities.comp;
|
||||||
|
|
||||||
import arc.math.*;
|
import arc.math.*;
|
||||||
import arc.math.geom.*;
|
|
||||||
import mindustry.annotations.Annotations.*;
|
import mindustry.annotations.Annotations.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
|
|
||||||
@@ -12,7 +11,6 @@ abstract class BoundedComp implements Velc, Posc, Healthc, Flyingc{
|
|||||||
static final float warpDst = 40f;
|
static final float warpDst = 40f;
|
||||||
|
|
||||||
@Import float x, y;
|
@Import float x, y;
|
||||||
@Import Vec2 vel;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void update(){
|
public void update(){
|
||||||
|
|||||||
@@ -222,7 +222,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TeamData data = state.teams.get(team);
|
TeamData data = team.data();
|
||||||
|
|
||||||
if(checkPrevious){
|
if(checkPrevious){
|
||||||
//remove existing blocks that have been placed here.
|
//remove existing blocks that have been placed here.
|
||||||
@@ -1399,7 +1399,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
|
|||||||
return switch(sensor){
|
return switch(sensor){
|
||||||
case type -> block;
|
case type -> block;
|
||||||
case firstItem -> items == null ? null : items.first();
|
case firstItem -> items == null ? null : items.first();
|
||||||
case config -> block.configurations.containsKey(Item.class) || block.configurations.containsKey(Liquid.class) ? config() : null;
|
case config -> block.configSenseable() ? config() : null;
|
||||||
case payloadType -> getPayload() instanceof UnitPayload p1 ? p1.unit.type : getPayload() instanceof BuildPayload p2 ? p2.block() : null;
|
case payloadType -> getPayload() instanceof UnitPayload p1 ? p1.unit.type : getPayload() instanceof BuildPayload p2 ? p2.block() : null;
|
||||||
default -> noSensed;
|
default -> noSensed;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ abstract class FireComp implements Timedc, Posc, Syncc, Drawc{
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(time >= lifetime || tile == null){
|
if(time >= lifetime || tile == null || Float.isNaN(lifetime)){
|
||||||
remove();
|
remove();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I
|
|||||||
transient float healTime;
|
transient float healTime;
|
||||||
private transient float resupplyTime = Mathf.random(10f);
|
private transient float resupplyTime = Mathf.random(10f);
|
||||||
private transient boolean wasPlayer;
|
private transient boolean wasPlayer;
|
||||||
private transient float lastHealth;
|
private transient boolean wasHealed;
|
||||||
|
|
||||||
public void moveAt(Vec2 vector){
|
public void moveAt(Vec2 vector){
|
||||||
moveAt(vector, type.accel);
|
moveAt(vector, type.accel);
|
||||||
@@ -320,16 +320,23 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I
|
|||||||
type.landed(self());
|
type.landed(self());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void heal(float amount){
|
||||||
|
if(health < maxHealth && amount > 0){
|
||||||
|
wasHealed = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void update(){
|
public void update(){
|
||||||
|
|
||||||
type.update(self());
|
type.update(self());
|
||||||
|
|
||||||
if(health > lastHealth && lastHealth > 0 && healTime <= -1f){
|
if(wasHealed && healTime <= -1f){
|
||||||
healTime = 1f;
|
healTime = 1f;
|
||||||
}
|
}
|
||||||
healTime -= Time.delta / 20f;
|
healTime -= Time.delta / 20f;
|
||||||
lastHealth = health;
|
wasHealed = false;
|
||||||
|
|
||||||
//check if environment is unsupported
|
//check if environment is unsupported
|
||||||
if(!type.supportsEnv(state.rules.environment) && !dead){
|
if(!type.supportsEnv(state.rules.environment) && !dead){
|
||||||
@@ -450,7 +457,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I
|
|||||||
float power = item().charge * stack().amount * 150f;
|
float power = item().charge * stack().amount * 150f;
|
||||||
|
|
||||||
if(!spawnedByCore){
|
if(!spawnedByCore){
|
||||||
Damage.dynamicExplosion(x, y, flammability, explosiveness, power, bounds() / 2f, state.rules.damageExplosions, item().flammability > 1, team);
|
Damage.dynamicExplosion(x, y, flammability, explosiveness, power, bounds() / 2f, state.rules.damageExplosions, item().flammability > 1, team, type.deathExplosionEffect);
|
||||||
}
|
}
|
||||||
|
|
||||||
float shake = hitSize / 3f;
|
float shake = hitSize / 3f;
|
||||||
|
|||||||
@@ -134,6 +134,18 @@ public class EventType{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Consider using Menus.registerMenu instead. */
|
||||||
|
public static class MenuOptionChooseEvent{
|
||||||
|
public final Player player;
|
||||||
|
public final int menuId, option;
|
||||||
|
|
||||||
|
public MenuOptionChooseEvent(Player player, int menuId, int option){
|
||||||
|
this.player = player;
|
||||||
|
this.option = option;
|
||||||
|
this.menuId = menuId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static class PlayerChatEvent{
|
public static class PlayerChatEvent{
|
||||||
public final Player player;
|
public final Player player;
|
||||||
public final String message;
|
public final String message;
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import mindustry.content.*;
|
|||||||
import mindustry.game.EventType.*;
|
import mindustry.game.EventType.*;
|
||||||
import mindustry.game.Teams.*;
|
import mindustry.game.Teams.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
import mindustry.ui.*;
|
|
||||||
import mindustry.world.*;
|
import mindustry.world.*;
|
||||||
import mindustry.world.blocks.power.*;
|
import mindustry.world.blocks.power.*;
|
||||||
|
|
||||||
@@ -142,11 +141,21 @@ public class BlockRenderer{
|
|||||||
Tile other = world.tile(cx, cy);
|
Tile other = world.tile(cx, cy);
|
||||||
if(other != null){
|
if(other != null){
|
||||||
darkEvents.add(other.pos());
|
darkEvents.add(other.pos());
|
||||||
|
floor.recacheTile(other);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void checkChanges(){
|
||||||
|
darkEvents.each(pos -> {
|
||||||
|
var tile = world.tile(pos);
|
||||||
|
if(tile != null){
|
||||||
|
tile.data = world.getWallDarkness(tile);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public void drawDarkness(){
|
public void drawDarkness(){
|
||||||
if(!darkEvents.isEmpty()){
|
if(!darkEvents.isEmpty()){
|
||||||
Draw.flush();
|
Draw.flush();
|
||||||
@@ -156,10 +165,9 @@ public class BlockRenderer{
|
|||||||
|
|
||||||
darkEvents.each(pos -> {
|
darkEvents.each(pos -> {
|
||||||
var tile = world.tile(pos);
|
var tile = world.tile(pos);
|
||||||
tile.data = world.getWallDarkness(tile);
|
|
||||||
float darkness = world.getDarkness(tile.x, tile.y);
|
float darkness = world.getDarkness(tile.x, tile.y);
|
||||||
//then draw the shadow
|
//then draw the shadow
|
||||||
Draw.colorl(!tile.isDarkened() || darkness <= 0f ? 1f : 1f - Math.min((darkness + 0.5f) / 4f, 1f));
|
Draw.colorl(darkness <= 0f ? 1f : 1f - Math.min((darkness + 0.5f) / 4f, 1f));
|
||||||
Fill.rect(tile.x + 0.5f, tile.y + 0.5f, 1, 1);
|
Fill.rect(tile.x + 0.5f, tile.y + 0.5f, 1, 1);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -186,7 +194,7 @@ public class BlockRenderer{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(brokenFade > 0.001f){
|
if(brokenFade > 0.001f){
|
||||||
for(BlockPlan block : state.teams.get(player.team()).blocks){
|
for(BlockPlan block : player.team().data().blocks){
|
||||||
Block b = content.block(block.block);
|
Block b = content.block(block.block);
|
||||||
if(!camera.bounds(Tmp.r1).grow(tilesize * 2f).overlaps(Tmp.r2.setSize(b.size * tilesize).setCenter(block.x * tilesize + b.offset, block.y * tilesize + b.offset))) continue;
|
if(!camera.bounds(Tmp.r1).grow(tilesize * 2f).overlaps(Tmp.r2.setSize(b.size * tilesize).setCenter(block.x * tilesize + b.offset, block.y * tilesize + b.offset))) continue;
|
||||||
|
|
||||||
|
|||||||
@@ -97,7 +97,6 @@ public class FloorRenderer{
|
|||||||
|
|
||||||
/** Queues up a cache change for a tile. Only runs in render loop. */
|
/** Queues up a cache change for a tile. Only runs in render loop. */
|
||||||
public void recacheTile(Tile tile){
|
public void recacheTile(Tile tile){
|
||||||
//TODO will be faster it the position also specified the layer to be recached
|
|
||||||
//recaching all layers may not be necessary
|
//recaching all layers may not be necessary
|
||||||
recacheSet.add(Point2.pack(tile.x / chunksize, tile.y / chunksize));
|
recacheSet.add(Point2.pack(tile.x / chunksize, tile.y / chunksize));
|
||||||
}
|
}
|
||||||
@@ -168,7 +167,6 @@ public class FloorRenderer{
|
|||||||
shader.setUniformi("u_texture", 0);
|
shader.setUniformi("u_texture", 0);
|
||||||
|
|
||||||
//only ever use the base environment texture
|
//only ever use the base environment texture
|
||||||
//TODO show error texture for anything else
|
|
||||||
texture.bind(0);
|
texture.bind(0);
|
||||||
|
|
||||||
//enable all mesh attributes
|
//enable all mesh attributes
|
||||||
|
|||||||
@@ -47,7 +47,6 @@ public class MenuRenderer implements Disposable{
|
|||||||
Simplex s1 = new Simplex(offset);
|
Simplex s1 = new Simplex(offset);
|
||||||
Simplex s2 = new Simplex(offset + 1);
|
Simplex s2 = new Simplex(offset + 1);
|
||||||
Simplex s3 = new Simplex(offset + 2);
|
Simplex s3 = new Simplex(offset + 2);
|
||||||
RidgedPerlin rid = new RidgedPerlin(1 + offset, 1);
|
|
||||||
Block[] selected = Structs.select(
|
Block[] selected = Structs.select(
|
||||||
new Block[]{Blocks.sand, Blocks.sandWall},
|
new Block[]{Blocks.sand, Blocks.sandWall},
|
||||||
new Block[]{Blocks.shale, Blocks.shaleWall},
|
new Block[]{Blocks.shale, Blocks.shaleWall},
|
||||||
@@ -141,7 +140,7 @@ public class MenuRenderer implements Disposable{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(tendrils){
|
if(tendrils){
|
||||||
if(rid.getValue(x, y, 1f / 17f) > 0f){
|
if(RidgedPerlin.noise2d(1 + offset, x, y, 1f / 17f) > 0f){
|
||||||
floor = Mathf.chance(0.2) ? Blocks.sporeMoss : Blocks.moss;
|
floor = Mathf.chance(0.2) ? Blocks.sporeMoss : Blocks.moss;
|
||||||
|
|
||||||
if(wall != Blocks.air){
|
if(wall != Blocks.air){
|
||||||
|
|||||||
@@ -131,22 +131,24 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
|
|||||||
|
|
||||||
@Remote(called = Loc.both, targets = Loc.both, forward = true, unreliable = true)
|
@Remote(called = Loc.both, targets = Loc.both, forward = true, unreliable = true)
|
||||||
public static void deletePlans(Player player, int[] positions){
|
public static void deletePlans(Player player, int[] positions){
|
||||||
if(netServer.admins.allowAction(player, ActionType.removePlanned, a -> a.plans = positions)){
|
if(net.server() && !netServer.admins.allowAction(player, ActionType.removePlanned, a -> a.plans = positions)){
|
||||||
|
throw new ValidateException(player, "Player cannot remove plans.");
|
||||||
|
}
|
||||||
|
|
||||||
var it = state.teams.get(player.team()).blocks.iterator();
|
if(player == null) return;
|
||||||
//O(n^2) search here; no way around it
|
|
||||||
outer:
|
|
||||||
while(it.hasNext()){
|
|
||||||
BlockPlan req = it.next();
|
|
||||||
|
|
||||||
for(int pos : positions){
|
var it = player.team().data().blocks.iterator();
|
||||||
if(req.x == Point2.x(pos) && req.y == Point2.y(pos)){
|
//O(n^2) search here; no way around it
|
||||||
it.remove();
|
outer:
|
||||||
continue outer;
|
while(it.hasNext()){
|
||||||
}
|
BlockPlan req = it.next();
|
||||||
|
|
||||||
|
for(int pos : positions){
|
||||||
|
if(req.x == Point2.x(pos) && req.y == Point2.y(pos)){
|
||||||
|
it.remove();
|
||||||
|
continue outer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -885,7 +887,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
|
|||||||
removed.clear();
|
removed.clear();
|
||||||
|
|
||||||
//remove blocks to rebuild
|
//remove blocks to rebuild
|
||||||
Iterator<BlockPlan> broken = state.teams.get(player.team()).blocks.iterator();
|
Iterator<BlockPlan> broken = player.team().data().blocks.iterator();
|
||||||
while(broken.hasNext()){
|
while(broken.hasNext()){
|
||||||
BlockPlan req = broken.next();
|
BlockPlan req = broken.next();
|
||||||
Block block = content.block(req.block);
|
Block block = content.block(req.block);
|
||||||
@@ -938,9 +940,9 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
|
|||||||
//check if tapped block is configurable
|
//check if tapped block is configurable
|
||||||
if(build.block.configurable && build.interactable(player.team())){
|
if(build.block.configurable && build.interactable(player.team())){
|
||||||
consumed = true;
|
consumed = true;
|
||||||
if(((!frag.config.isShown() && build.shouldShowConfigure(player)) //if the config fragment is hidden, show
|
if((!frag.config.isShown() && build.shouldShowConfigure(player)) //if the config fragment is hidden, show
|
||||||
//alternatively, the current selected block can 'agree' to switch config tiles
|
//alternatively, the current selected block can 'agree' to switch config tiles
|
||||||
|| (frag.config.isShown() && frag.config.getSelectedTile().onConfigureTileTapped(build)))){
|
|| (frag.config.isShown() && frag.config.getSelectedTile().onConfigureTileTapped(build))){
|
||||||
Sounds.click.at(build);
|
Sounds.click.at(build);
|
||||||
frag.config.showConfig(build);
|
frag.config.showConfig(build);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -588,6 +588,30 @@ public class TypeIO{
|
|||||||
return new TraceInfo(readString(read), readString(read), read.b() == 1, read.b() == 1, read.i(), read.i());
|
return new TraceInfo(readString(read), readString(read), read.b() == 1, read.b() == 1, read.i(), read.i());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void writeStrings(Writes write, String[][] strings){
|
||||||
|
write.b(strings.length);
|
||||||
|
for(String[] string : strings){
|
||||||
|
write.b(string.length);
|
||||||
|
for(String s : string){
|
||||||
|
writeString(write, s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String[][] readStrings(Reads read){
|
||||||
|
int rows = read.ub();
|
||||||
|
|
||||||
|
String[][] strings = new String[rows][];
|
||||||
|
for(int i = 0; i < rows; i++){
|
||||||
|
int columns = read.ub();
|
||||||
|
strings[i] = new String[columns];
|
||||||
|
for(int j = 0; j < columns; j++){
|
||||||
|
strings[i][j] = readString(read);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return strings;
|
||||||
|
}
|
||||||
|
|
||||||
public static void writeStringData(DataOutput buffer, String string) throws IOException{
|
public static void writeStringData(DataOutput buffer, String string) throws IOException{
|
||||||
if(string != null){
|
if(string != null){
|
||||||
byte[] bytes = string.getBytes(charset);
|
byte[] bytes = string.getBytes(charset);
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
package mindustry.logic;
|
package mindustry.logic;
|
||||||
|
|
||||||
import arc.struct.*;
|
import arc.struct.*;
|
||||||
|
import arc.util.*;
|
||||||
import mindustry.*;
|
import mindustry.*;
|
||||||
import mindustry.content.*;
|
import mindustry.content.*;
|
||||||
|
import mindustry.entities.units.*;
|
||||||
import mindustry.logic.LExecutor.*;
|
import mindustry.logic.LExecutor.*;
|
||||||
import mindustry.type.*;
|
import mindustry.type.*;
|
||||||
import mindustry.world.*;
|
import mindustry.world.*;
|
||||||
@@ -55,6 +57,10 @@ public class GlobalConstants{
|
|||||||
for(LAccess sensor : LAccess.all){
|
for(LAccess sensor : LAccess.all){
|
||||||
put("@" + sensor.name(), sensor);
|
put("@" + sensor.name(), sensor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for(UnitCommand cmd : UnitCommand.all){
|
||||||
|
put("@command" + Strings.capitalize(cmd.name()), cmd);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @return a constant ID > 0 if there is a constant with this name, otherwise -1. */
|
/** @return a constant ID > 0 if there is a constant with this name, otherwise -1. */
|
||||||
|
|||||||
@@ -922,6 +922,7 @@ public class LExecutor{
|
|||||||
v.objval instanceof Content ? "[content]" :
|
v.objval instanceof Content ? "[content]" :
|
||||||
v.objval instanceof Building build ? build.block.name :
|
v.objval instanceof Building build ? build.block.name :
|
||||||
v.objval instanceof Unit unit ? unit.type.name :
|
v.objval instanceof Unit unit ? unit.type.name :
|
||||||
|
v.objval instanceof Enum<?> e ? e.name() :
|
||||||
"[object]";
|
"[object]";
|
||||||
|
|
||||||
exec.textBuffer.append(strValue);
|
exec.textBuffer.append(strValue);
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package mindustry.maps.filters;
|
package mindustry.maps.filters;
|
||||||
|
|
||||||
import arc.math.*;
|
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
import mindustry.content.*;
|
import mindustry.content.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
@@ -17,7 +16,7 @@ public class BlendFilter extends GenerateFilter{
|
|||||||
return Structs.arr(
|
return Structs.arr(
|
||||||
new SliderOption("radius", () -> radius, f -> radius = f, 1f, 10f),
|
new SliderOption("radius", () -> radius, f -> radius = f, 1f, 10f),
|
||||||
new BlockOption("block", () -> block, b -> block = b, anyOptional),
|
new BlockOption("block", () -> block, b -> block = b, anyOptional),
|
||||||
new BlockOption("floor", () -> floor, b -> floor = b, floorsOnly),
|
new BlockOption("floor", () -> floor, b -> floor = b, anyOptional),
|
||||||
new BlockOption("ignore", () -> ignore, b -> ignore = b, floorsOptional)
|
new BlockOption("ignore", () -> ignore, b -> ignore = b, floorsOptional)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -34,7 +33,7 @@ public class BlendFilter extends GenerateFilter{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void apply(){
|
public void apply(){
|
||||||
if(in.floor == block || block == Blocks.air || in.floor == ignore) return;
|
if(in.floor == block || block == Blocks.air || in.floor == ignore || (!floor.isFloor() && (in.block == block || in.block == ignore))) return;
|
||||||
|
|
||||||
int rad = (int)radius;
|
int rad = (int)radius;
|
||||||
boolean found = false;
|
boolean found = false;
|
||||||
@@ -42,7 +41,7 @@ public class BlendFilter extends GenerateFilter{
|
|||||||
outer:
|
outer:
|
||||||
for(int x = -rad; x <= rad; x++){
|
for(int x = -rad; x <= rad; x++){
|
||||||
for(int y = -rad; y <= rad; y++){
|
for(int y = -rad; y <= rad; y++){
|
||||||
if(Mathf.within(x, y, rad)) continue;
|
if(x*x + y*y > rad*rad) continue;
|
||||||
Tile tile = in.tile(in.x + x, in.y + y);
|
Tile tile = in.tile(in.x + x, in.y + y);
|
||||||
|
|
||||||
if(tile.floor() == block || tile.block() == block || tile.overlay() == block){
|
if(tile.floor() == block || tile.block() == block || tile.overlay() == block){
|
||||||
@@ -53,7 +52,11 @@ public class BlendFilter extends GenerateFilter{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(found){
|
if(found){
|
||||||
in.floor = floor;
|
if(!floor.isFloor()){
|
||||||
|
in.block = floor;
|
||||||
|
}else{
|
||||||
|
in.floor = floor;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import arc.scene.ui.layout.*;
|
|||||||
import mindustry.*;
|
import mindustry.*;
|
||||||
import mindustry.content.*;
|
import mindustry.content.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
import mindustry.ui.*;
|
|
||||||
import mindustry.ui.dialogs.*;
|
import mindustry.ui.dialogs.*;
|
||||||
import mindustry.world.*;
|
import mindustry.world.*;
|
||||||
import mindustry.world.blocks.environment.*;
|
import mindustry.world.blocks.environment.*;
|
||||||
@@ -105,6 +104,7 @@ public abstract class FilterOption{
|
|||||||
if(++i % 10 == 0) dialog.cont.row();
|
if(++i % 10 == 0) dialog.cont.row();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dialog.closeOnBack();
|
||||||
dialog.show();
|
dialog.show();
|
||||||
}).pad(4).margin(12f);
|
}).pad(4).margin(12f);
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import mindustry.world.*;
|
|||||||
|
|
||||||
public abstract class GenerateFilter{
|
public abstract class GenerateFilter{
|
||||||
protected transient float o = (float)(Math.random() * 10000000.0);
|
protected transient float o = (float)(Math.random() * 10000000.0);
|
||||||
protected transient long seed;
|
protected transient int seed;
|
||||||
protected transient GenerateInput in;
|
protected transient GenerateInput in;
|
||||||
|
|
||||||
public void apply(Tiles tiles, GenerateInput in){
|
public void apply(Tiles tiles, GenerateInput in){
|
||||||
@@ -75,11 +75,16 @@ public abstract class GenerateFilter{
|
|||||||
/** draw any additional guides */
|
/** draw any additional guides */
|
||||||
public void draw(Image image){}
|
public void draw(Image image){}
|
||||||
|
|
||||||
/** localized display name */
|
public String simpleName(){
|
||||||
public String name(){
|
|
||||||
Class c = getClass();
|
Class c = getClass();
|
||||||
if(c.isAnonymousClass()) c = c.getSuperclass();
|
if(c.isAnonymousClass()) c = c.getSuperclass();
|
||||||
return Core.bundle.get("filter." + c.getSimpleName().toLowerCase().replace("filter", ""), c.getSimpleName().replace("Filter", ""));
|
return c.getSimpleName().toLowerCase().replace("filter", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
/** localized display name */
|
||||||
|
public String name(){
|
||||||
|
var s = simpleName();
|
||||||
|
return Core.bundle.get("filter." + s);
|
||||||
}
|
}
|
||||||
|
|
||||||
public char icon(){
|
public char icon(){
|
||||||
@@ -112,11 +117,15 @@ public abstract class GenerateFilter{
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected float rnoise(float x, float y, float scl, float mag){
|
protected float rnoise(float x, float y, float scl, float mag){
|
||||||
return in.pnoise.getValue((int)(x + o), (int)(y + o), 1f / scl) * mag;
|
return RidgedPerlin.noise2d(seed + 1, (int)(x + o), (int)(y + o), 1f / scl) * mag;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected float rnoise(float x, float y, int octaves, float scl, float falloff, float mag){
|
||||||
|
return RidgedPerlin.noise2d(seed + 1, (int)(x + o), (int)(y + o), octaves, falloff, 1f / scl) * mag;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected float chance(){
|
protected float chance(){
|
||||||
return Mathf.randomSeed(Pack.longInt(in.x, in.y + (int)seed));
|
return Mathf.randomSeed(Pack.longInt(in.x, in.y + seed));
|
||||||
}
|
}
|
||||||
|
|
||||||
/** an input for generating at a certain coordinate. should only be instantiated once. */
|
/** an input for generating at a certain coordinate. should only be instantiated once. */
|
||||||
@@ -129,7 +138,6 @@ public abstract class GenerateFilter{
|
|||||||
public Block floor, block, overlay;
|
public Block floor, block, overlay;
|
||||||
|
|
||||||
Simplex noise = new Simplex();
|
Simplex noise = new Simplex();
|
||||||
RidgedPerlin pnoise = new RidgedPerlin(0, 1);
|
|
||||||
TileProvider buffer;
|
TileProvider buffer;
|
||||||
|
|
||||||
public void apply(int x, int y, Block block, Block floor, Block overlay){
|
public void apply(int x, int y, Block block, Block floor, Block overlay){
|
||||||
@@ -145,7 +153,6 @@ public abstract class GenerateFilter{
|
|||||||
this.width = width;
|
this.width = width;
|
||||||
this.height = height;
|
this.height = height;
|
||||||
noise.setSeed(filter.seed);
|
noise.setSeed(filter.seed);
|
||||||
pnoise.setSeed((int)(filter.seed + 1));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Tile tile(float x, float y){
|
Tile tile(float x, float y){
|
||||||
|
|||||||
@@ -10,14 +10,15 @@ import mindustry.world.*;
|
|||||||
import static mindustry.Vars.*;
|
import static mindustry.Vars.*;
|
||||||
|
|
||||||
public class MedianFilter extends GenerateFilter{
|
public class MedianFilter extends GenerateFilter{
|
||||||
|
private static final IntSeq blocks = new IntSeq(), floors = new IntSeq();
|
||||||
|
|
||||||
float radius = 2;
|
float radius = 2;
|
||||||
float percentile = 0.5f;
|
float percentile = 0.5f;
|
||||||
IntSeq blocks = new IntSeq(), floors = new IntSeq();
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FilterOption[] options(){
|
public FilterOption[] options(){
|
||||||
return Structs.arr(
|
return Structs.arr(
|
||||||
new SliderOption("radius", () -> radius, f -> radius = f, 1f, 12f),
|
new SliderOption("radius", () -> radius, f -> radius = f, 1f, 10f),
|
||||||
new SliderOption("percentile", () -> percentile, f -> percentile = f, 0f, 1f)
|
new SliderOption("percentile", () -> percentile, f -> percentile = f, 0f, 1f)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,15 +8,17 @@ import mindustry.world.*;
|
|||||||
import static mindustry.maps.filters.FilterOption.*;
|
import static mindustry.maps.filters.FilterOption.*;
|
||||||
|
|
||||||
public class RiverNoiseFilter extends GenerateFilter{
|
public class RiverNoiseFilter extends GenerateFilter{
|
||||||
float scl = 40, threshold = 0f, threshold2 = 0.1f;
|
float scl = 40, threshold = 0f, threshold2 = 0.1f, octaves = 1, falloff = 0.5f;
|
||||||
Block floor = Blocks.water, floor2 = Blocks.deepwater, block = Blocks.sandWall;
|
Block floor = Blocks.water, floor2 = Blocks.deepwater, block = Blocks.sandWall;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FilterOption[] options(){
|
public FilterOption[] options(){
|
||||||
return Structs.arr(
|
return Structs.arr(
|
||||||
new SliderOption("scale", () -> scl, f -> scl = f, 1f, 500f),
|
new SliderOption("scale", () -> scl, f -> scl = f, 1f, 500f),
|
||||||
new SliderOption("threshold", () -> threshold, f -> threshold = f, -1f, 0.3f),
|
new SliderOption("threshold", () -> threshold, f -> threshold = f, -1f, 1f),
|
||||||
new SliderOption("threshold2", () -> threshold2, f -> threshold2 = f, -1f, 0.3f),
|
new SliderOption("threshold2", () -> threshold2, f -> threshold2 = f, -1f, 1f),
|
||||||
|
new SliderOption("octaves", () -> octaves, f -> octaves = f, 1f, 10f),
|
||||||
|
new SliderOption("falloff", () -> falloff, f -> falloff = f, 0f, 1f),
|
||||||
new BlockOption("block", () -> block, b -> block = b, wallsOnly),
|
new BlockOption("block", () -> block, b -> block = b, wallsOnly),
|
||||||
new BlockOption("floor", () -> floor, b -> floor = b, floorsOnly),
|
new BlockOption("floor", () -> floor, b -> floor = b, floorsOnly),
|
||||||
new BlockOption("floor2", () -> floor2, b -> floor2 = b, floorsOnly)
|
new BlockOption("floor2", () -> floor2, b -> floor2 = b, floorsOnly)
|
||||||
@@ -30,7 +32,7 @@ public class RiverNoiseFilter extends GenerateFilter{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void apply(){
|
public void apply(){
|
||||||
float noise = rnoise(in.x, in.y, scl, 1f);
|
float noise = rnoise(in.x, in.y, (int)octaves, scl, falloff, 1f);
|
||||||
|
|
||||||
if(noise >= threshold){
|
if(noise >= threshold){
|
||||||
in.floor = floor;
|
in.floor = floor;
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ import mindustry.world.*;
|
|||||||
import static mindustry.Vars.*;
|
import static mindustry.Vars.*;
|
||||||
|
|
||||||
public class SerpuloPlanetGenerator extends PlanetGenerator{
|
public class SerpuloPlanetGenerator extends PlanetGenerator{
|
||||||
RidgedPerlin rid = new RidgedPerlin(1, 2);
|
|
||||||
BaseGenerator basegen = new BaseGenerator();
|
BaseGenerator basegen = new BaseGenerator();
|
||||||
float scl = 5f;
|
float scl = 5f;
|
||||||
float waterOffset = 0.07f;
|
float waterOffset = 0.07f;
|
||||||
@@ -115,7 +114,7 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{
|
|||||||
tile.floor = getBlock(position);
|
tile.floor = getBlock(position);
|
||||||
tile.block = tile.floor.asFloor().wall;
|
tile.block = tile.floor.asFloor().wall;
|
||||||
|
|
||||||
if(rid.getValue(position.x, position.y, position.z, 22) > 0.31){
|
if(RidgedPerlin.noise3d(1, position.x, position.y, position.z, 2, 22) > 0.31){
|
||||||
tile.block = Blocks.air;
|
tile.block = Blocks.air;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -121,6 +121,11 @@ public class ContentParser{
|
|||||||
return sound;
|
return sound;
|
||||||
});
|
});
|
||||||
put(Objectives.Objective.class, (type, data) -> {
|
put(Objectives.Objective.class, (type, data) -> {
|
||||||
|
if(data.isString()){
|
||||||
|
var cont = locateAny(data.asString());
|
||||||
|
if(cont == null) throw new IllegalArgumentException("Unknown objective content: " + data.asString());
|
||||||
|
return new Research((UnlockableContent)cont);
|
||||||
|
}
|
||||||
var oc = resolve(data.getString("type", ""), SectorComplete.class);
|
var oc = resolve(data.getString("type", ""), SectorComplete.class);
|
||||||
data.remove("type");
|
data.remove("type");
|
||||||
Objectives.Objective obj = make(oc);
|
Objectives.Objective obj = make(oc);
|
||||||
@@ -228,6 +233,7 @@ public class ContentParser{
|
|||||||
case "item" -> block.consumes.item(find(ContentType.item, child.asString()));
|
case "item" -> block.consumes.item(find(ContentType.item, child.asString()));
|
||||||
case "items" -> block.consumes.add((Consume)parser.readValue(ConsumeItems.class, child));
|
case "items" -> block.consumes.add((Consume)parser.readValue(ConsumeItems.class, child));
|
||||||
case "liquid" -> block.consumes.add((Consume)parser.readValue(ConsumeLiquid.class, child));
|
case "liquid" -> block.consumes.add((Consume)parser.readValue(ConsumeLiquid.class, child));
|
||||||
|
case "coolant" -> block.consumes.add((Consume)parser.readValue(ConsumeCoolant.class, child));
|
||||||
case "power" -> {
|
case "power" -> {
|
||||||
if(child.isNumber()){
|
if(child.isNumber()){
|
||||||
block.consumes.power(child.asFloat());
|
block.consumes.power(child.asFloat());
|
||||||
@@ -543,6 +549,16 @@ public class ContentParser{
|
|||||||
return first != null ? first : Vars.content.getByName(type, currentMod.name + "-" + name);
|
return first != null ? first : Vars.content.getByName(type, currentMod.name + "-" + name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private <T extends MappableContent> T locateAny(String name){
|
||||||
|
for(ContentType t : ContentType.all){
|
||||||
|
var out = locate(t, name);
|
||||||
|
if(out != null){
|
||||||
|
return (T)out;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
<T> T make(Class<T> type){
|
<T> T make(Class<T> type){
|
||||||
try{
|
try{
|
||||||
Constructor<T> cons = type.getDeclaredConstructor();
|
Constructor<T> cons = type.getDeclaredConstructor();
|
||||||
@@ -679,18 +695,26 @@ public class ContentParser{
|
|||||||
lastNode.remove();
|
lastNode.remove();
|
||||||
}
|
}
|
||||||
|
|
||||||
TechNode node = new TechNode(null, unlock, customRequirements == null ? unlock.researchRequirements() : customRequirements);
|
TechNode node = new TechNode(null, unlock, customRequirements == null ? ItemStack.empty : customRequirements);
|
||||||
LoadedMod cur = currentMod;
|
LoadedMod cur = currentMod;
|
||||||
|
|
||||||
postreads.add(() -> {
|
postreads.add(() -> {
|
||||||
currentContent = unlock;
|
currentContent = unlock;
|
||||||
currentMod = cur;
|
currentMod = cur;
|
||||||
|
|
||||||
|
//add custom objectives
|
||||||
|
if(research.has("objectives")){
|
||||||
|
node.objectives.addAll(parser.readValue(Objective[].class, research.get("objectives")));
|
||||||
|
}
|
||||||
|
|
||||||
//remove old node from parent
|
//remove old node from parent
|
||||||
if(node.parent != null){
|
if(node.parent != null){
|
||||||
node.parent.children.remove(node);
|
node.parent.children.remove(node);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(customRequirements == null){
|
||||||
|
node.setupRequirements(unlock.researchRequirements());
|
||||||
|
}
|
||||||
|
|
||||||
//find parent node.
|
//find parent node.
|
||||||
TechNode parent = TechTree.all.find(t -> t.content.name.equals(researchName) || t.content.name.equals(currentMod.name + "-" + researchName));
|
TechNode parent = TechTree.all.find(t -> t.content.name.equals(researchName) || t.content.name.equals(currentMod.name + "-" + researchName));
|
||||||
|
|||||||
@@ -11,25 +11,23 @@ public class ModClassLoader extends ClassLoader{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected synchronized Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException{
|
protected Class<?> findClass(String name) throws ClassNotFoundException{
|
||||||
//always try the superclass first
|
//a child may try to delegate class loading to its parent, which is *this class loader* - do not let that happen
|
||||||
try{
|
if(inChild) throw new ClassNotFoundException(name);
|
||||||
return super.loadClass(name, resolve);
|
|
||||||
}catch(ClassNotFoundException error){
|
ClassNotFoundException last = null;
|
||||||
//a child may try to delegate class loading to its parent, which is *this class loader* - do not let that happen
|
int size = children.size;
|
||||||
if(inChild) throw error;
|
//if it doesn't exist in the main class loader, try all the children
|
||||||
int size = children.size;
|
for(int i = 0; i < size; i++){
|
||||||
//if it doesn't exist in the main class loader, try all the children
|
try{
|
||||||
for(int i = 0; i < size; i++){
|
inChild = true;
|
||||||
try{
|
var out = children.get(i).loadClass(name);
|
||||||
inChild = true;
|
inChild = false;
|
||||||
var out = children.get(i).loadClass(name);
|
return out;
|
||||||
inChild = false;
|
}catch(ClassNotFoundException e){
|
||||||
return out;
|
last = e;
|
||||||
}catch(ClassNotFoundException ignored){
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
throw error;
|
|
||||||
}
|
}
|
||||||
|
throw (last == null ? new ClassNotFoundException(name) : last);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ public class Scripts implements Disposable{
|
|||||||
|
|
||||||
public String runConsole(String text){
|
public String runConsole(String text){
|
||||||
try{
|
try{
|
||||||
Object o = context.evaluateString(scope, text, "console.js", 1, null);
|
Object o = context.evaluateString(scope, text, "console.js", 1);
|
||||||
if(o instanceof NativeJavaObject n) o = n.unwrap();
|
if(o instanceof NativeJavaObject n) o = n.unwrap();
|
||||||
if(o instanceof Undefined) o = "undefined";
|
if(o instanceof Undefined) o = "undefined";
|
||||||
return String.valueOf(o);
|
return String.valueOf(o);
|
||||||
@@ -172,11 +172,11 @@ public class Scripts implements Disposable{
|
|||||||
try{
|
try{
|
||||||
if(currentMod != null){
|
if(currentMod != null){
|
||||||
//inject script info into file
|
//inject script info into file
|
||||||
context.evaluateString(scope, "modName = \"" + currentMod.name + "\"\nscriptName = \"" + file + "\"", "initscript.js", 1, null);
|
context.evaluateString(scope, "modName = \"" + currentMod.name + "\"\nscriptName = \"" + file + "\"", "initscript.js", 1);
|
||||||
}
|
}
|
||||||
context.evaluateString(scope,
|
context.evaluateString(scope,
|
||||||
wrap ? "(function(){'use strict';\n" + script + "\n})();" : script,
|
wrap ? "(function(){'use strict';\n" + script + "\n})();" : script,
|
||||||
file, 0, null);
|
file, 0);
|
||||||
return true;
|
return true;
|
||||||
}catch(Throwable t){
|
}catch(Throwable t){
|
||||||
if(currentMod != null){
|
if(currentMod != null){
|
||||||
@@ -224,7 +224,7 @@ public class Scripts implements Disposable{
|
|||||||
if(!module.exists() || module.isDirectory()) return null;
|
if(!module.exists() || module.isDirectory()) return null;
|
||||||
return new ModuleSource(
|
return new ModuleSource(
|
||||||
new InputStreamReader(new ByteArrayInputStream((module.readString()).getBytes())),
|
new InputStreamReader(new ByteArrayInputStream((module.readString()).getBytes())),
|
||||||
null, new URI(moduleId), root.file().toURI(), validator);
|
new URI(moduleId), root.file().toURI(), validator);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -188,24 +188,22 @@ public class ArcNetProvider implements NetProvider{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void pingHost(String address, int port, Cons<Host> valid, Cons<Exception> invalid){
|
public void pingHost(String address, int port, Cons<Host> valid, Cons<Exception> invalid){
|
||||||
executor.submit(() -> {
|
try{
|
||||||
try{
|
DatagramSocket socket = new DatagramSocket();
|
||||||
DatagramSocket socket = new DatagramSocket();
|
long time = Time.millis();
|
||||||
long time = Time.millis();
|
socket.send(new DatagramPacket(new byte[]{-2, 1}, 2, InetAddress.getByName(address), port));
|
||||||
socket.send(new DatagramPacket(new byte[]{-2, 1}, 2, InetAddress.getByName(address), port));
|
socket.setSoTimeout(2000);
|
||||||
socket.setSoTimeout(2000);
|
|
||||||
|
|
||||||
DatagramPacket packet = packetSupplier.get();
|
DatagramPacket packet = packetSupplier.get();
|
||||||
socket.receive(packet);
|
socket.receive(packet);
|
||||||
|
|
||||||
ByteBuffer buffer = ByteBuffer.wrap(packet.getData());
|
ByteBuffer buffer = ByteBuffer.wrap(packet.getData());
|
||||||
Host host = NetworkIO.readServerData((int)Time.timeSinceMillis(time), packet.getAddress().getHostAddress(), buffer);
|
Host host = NetworkIO.readServerData((int)Time.timeSinceMillis(time), packet.getAddress().getHostAddress(), buffer);
|
||||||
|
|
||||||
Core.app.post(() -> valid.get(host));
|
Core.app.post(() -> valid.get(host));
|
||||||
}catch(Exception e){
|
}catch(Exception e){
|
||||||
Core.app.post(() -> invalid.get(e));
|
Core.app.post(() -> invalid.get(e));
|
||||||
}
|
}
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import arc.func.*;
|
|||||||
import arc.net.*;
|
import arc.net.*;
|
||||||
import arc.struct.*;
|
import arc.struct.*;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
|
import arc.util.async.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
import mindustry.net.Packets.*;
|
import mindustry.net.Packets.*;
|
||||||
import mindustry.net.Streamable.*;
|
import mindustry.net.Streamable.*;
|
||||||
@@ -12,6 +13,7 @@ import mindustry.net.Streamable.*;
|
|||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.nio.*;
|
import java.nio.*;
|
||||||
import java.nio.channels.*;
|
import java.nio.channels.*;
|
||||||
|
import java.util.concurrent.*;
|
||||||
|
|
||||||
import static arc.util.Log.*;
|
import static arc.util.Log.*;
|
||||||
import static mindustry.Vars.*;
|
import static mindustry.Vars.*;
|
||||||
@@ -31,6 +33,7 @@ public class Net{
|
|||||||
private final ObjectMap<Class<?>, Cons> clientListeners = new ObjectMap<>();
|
private final ObjectMap<Class<?>, Cons> clientListeners = new ObjectMap<>();
|
||||||
private final ObjectMap<Class<?>, Cons2<NetConnection, Object>> serverListeners = new ObjectMap<>();
|
private final ObjectMap<Class<?>, Cons2<NetConnection, Object>> serverListeners = new ObjectMap<>();
|
||||||
private final IntMap<StreamBuilder> streams = new IntMap<>();
|
private final IntMap<StreamBuilder> streams = new IntMap<>();
|
||||||
|
private final ExecutorService pingExecutor = Threads.executor(Math.max(Runtime.getRuntime().availableProcessors(), 6));
|
||||||
|
|
||||||
private final NetProvider provider;
|
private final NetProvider provider;
|
||||||
|
|
||||||
@@ -316,10 +319,17 @@ public class Net{
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Pings a host in an new thread. If an error occured, failed() should be called with the exception.
|
* Pings a host in a pooled thread. If an error occurred, failed() should be called with the exception.
|
||||||
*/
|
*/
|
||||||
public void pingHost(String address, int port, Cons<Host> valid, Cons<Exception> failed){
|
public void pingHost(String address, int port, Cons<Host> valid, Cons<Exception> failed){
|
||||||
provider.pingHost(address, port, valid, failed);
|
pingExecutor.submit(() -> provider.pingHost(address, port, valid, failed));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pings a host in an new thread. If an error occurred, failed() should be called with the exception.
|
||||||
|
*/
|
||||||
|
public void pingHostThread(String address, int port, Cons<Host> valid, Cons<Exception> failed){
|
||||||
|
Threads.daemon(() -> provider.pingHost(address, port, valid, failed));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -367,7 +377,7 @@ public class Net{
|
|||||||
*/
|
*/
|
||||||
void discoverServers(Cons<Host> callback, Runnable done);
|
void discoverServers(Cons<Host> callback, Runnable done);
|
||||||
|
|
||||||
/** Ping a host. If an error occurred, failed() should be called with the exception. */
|
/** Ping a host. If an error occurred, failed() should be called with the exception. This method should block. */
|
||||||
void pingHost(String address, int port, Cons<Host> valid, Cons<Exception> failed);
|
void pingHost(String address, int port, Cons<Host> valid, Cons<Exception> failed);
|
||||||
|
|
||||||
/** Host a server at specified port. */
|
/** Host a server at specified port. */
|
||||||
|
|||||||
@@ -71,6 +71,7 @@ public class UnitType extends UnlockableContent{
|
|||||||
public boolean omniMovement = true;
|
public boolean omniMovement = true;
|
||||||
public Effect fallEffect = Fx.fallSmoke;
|
public Effect fallEffect = Fx.fallSmoke;
|
||||||
public Effect fallThrusterEffect = Fx.fallSmoke;
|
public Effect fallThrusterEffect = Fx.fallSmoke;
|
||||||
|
public Effect deathExplosionEffect = Fx.dynamicExplosion;
|
||||||
public Seq<Ability> abilities = new Seq<>();
|
public Seq<Ability> abilities = new Seq<>();
|
||||||
public BlockFlag targetFlag = BlockFlag.generator;
|
public BlockFlag targetFlag = BlockFlag.generator;
|
||||||
|
|
||||||
|
|||||||
102
core/src/mindustry/ui/Menus.java
Normal file
102
core/src/mindustry/ui/Menus.java
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
package mindustry.ui;
|
||||||
|
|
||||||
|
import arc.*;
|
||||||
|
import arc.struct.*;
|
||||||
|
import arc.util.*;
|
||||||
|
import mindustry.annotations.Annotations.*;
|
||||||
|
import mindustry.game.EventType.*;
|
||||||
|
import mindustry.gen.*;
|
||||||
|
|
||||||
|
import static mindustry.Vars.*;
|
||||||
|
|
||||||
|
/** Class for handling menus and notifications across the network. Unstable API! */
|
||||||
|
public class Menus{
|
||||||
|
private static IntMap<MenuListener> menuListeners = new IntMap<>();
|
||||||
|
|
||||||
|
/** Register a *global* menu listener. If no option is chosen, the option is returned as -1. */
|
||||||
|
public static void registerMenu(int id, MenuListener listener){
|
||||||
|
menuListeners.put(id, listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
//do not invoke any of the methods below directly, use Call
|
||||||
|
|
||||||
|
@Remote(variants = Variant.both)
|
||||||
|
public static void menu(int menuId, String title, String message, String[][] options){
|
||||||
|
if(title == null) title = "";
|
||||||
|
if(options == null) options = new String[0][0];
|
||||||
|
|
||||||
|
ui.showMenu(title, message, options, (option) -> Call.menuChoose(player, menuId, option));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Remote(targets = Loc.both, called = Loc.both)
|
||||||
|
public static void menuChoose(@Nullable Player player, int menuId, int option){
|
||||||
|
if(player != null && menuListeners.containsKey(menuId)){
|
||||||
|
Events.fire(new MenuOptionChooseEvent(player, menuId, option));
|
||||||
|
menuListeners.get(menuId).get(player, option);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Remote(variants = Variant.both, unreliable = true)
|
||||||
|
public static void setHudText(String message){
|
||||||
|
if(message == null) return;
|
||||||
|
|
||||||
|
ui.hudfrag.setHudText(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Remote(variants = Variant.both)
|
||||||
|
public static void hideHudText(){
|
||||||
|
ui.hudfrag.toggleHudText(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** TCP version */
|
||||||
|
@Remote(variants = Variant.both)
|
||||||
|
public static void setHudTextReliable(String message){
|
||||||
|
setHudText(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Remote(variants = Variant.both)
|
||||||
|
public static void announce(String message){
|
||||||
|
if(message == null) return;
|
||||||
|
|
||||||
|
ui.announce(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Remote(variants = Variant.both)
|
||||||
|
public static void infoMessage(String message){
|
||||||
|
if(message == null) return;
|
||||||
|
|
||||||
|
ui.showText("", message);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Remote(variants = Variant.both)
|
||||||
|
public static void infoPopup(String message, float duration, int align, int top, int left, int bottom, int right){
|
||||||
|
if(message == null) return;
|
||||||
|
|
||||||
|
ui.showInfoPopup(message, duration, align, top, left, bottom, right);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Remote(variants = Variant.both)
|
||||||
|
public static void label(String message, float duration, float worldx, float worldy){
|
||||||
|
if(message == null) return;
|
||||||
|
|
||||||
|
ui.showLabel(message, duration, worldx, worldy);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Remote(variants = Variant.both)
|
||||||
|
public static void infoToast(String message, float duration){
|
||||||
|
if(message == null) return;
|
||||||
|
|
||||||
|
ui.showInfoToast(message, duration);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Remote(variants = Variant.both)
|
||||||
|
public static void warningToast(int unicode, String text){
|
||||||
|
if(text == null || Fonts.icon.getData().getGlyph((char)unicode) == null) return;
|
||||||
|
|
||||||
|
ui.hudfrag.showToast(Fonts.getGlyph(Fonts.icon, (char)unicode), text);
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface MenuListener{
|
||||||
|
void get(Player player, int option);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -67,7 +67,7 @@ public class ContentInfoDialog extends BaseDialog{
|
|||||||
for(Stat stat : map.keys()){
|
for(Stat stat : map.keys()){
|
||||||
table.table(inset -> {
|
table.table(inset -> {
|
||||||
inset.left();
|
inset.left();
|
||||||
inset.add("[lightgray]" + stat.localized() + ":[] ").left();
|
inset.add("[lightgray]" + stat.localized() + ":[] ").left().top();
|
||||||
Seq<StatValue> arr = map.get(stat);
|
Seq<StatValue> arr = map.get(stat);
|
||||||
for(StatValue value : arr){
|
for(StatValue value : arr){
|
||||||
value.display(inset);
|
value.display(inset);
|
||||||
|
|||||||
@@ -364,7 +364,7 @@ public class JoinDialog extends BaseDialog{
|
|||||||
for(String address : group.addresses){
|
for(String address : group.addresses){
|
||||||
String resaddress = address.contains(":") ? address.split(":")[0] : address;
|
String resaddress = address.contains(":") ? address.split(":")[0] : address;
|
||||||
int resport = address.contains(":") ? Strings.parseInt(address.split(":")[1]) : port;
|
int resport = address.contains(":") ? Strings.parseInt(address.split(":")[1]) : port;
|
||||||
net.pingHost(resaddress, resport, res -> {
|
net.pingHostThread(resaddress, resport, res -> {
|
||||||
if(refreshes != cur) return;
|
if(refreshes != cur) return;
|
||||||
res.port = resport;
|
res.port = resport;
|
||||||
|
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ public class ModsDialog extends BaseDialog{
|
|||||||
float w = Math.min(Core.graphics.getWidth() / 1.1f, 520f);
|
float w = Math.min(Core.graphics.getWidth() / 1.1f, 520f);
|
||||||
|
|
||||||
cont.clear();
|
cont.clear();
|
||||||
cont.defaults().width(Math.min(Core.graphics.getWidth() / 1.2f, 520f)).pad(4);
|
cont.defaults().width(Math.min(Core.graphics.getWidth() / 1.2f, 556f)).pad(4);
|
||||||
cont.add("@mod.reloadrequired").visible(mods::requiresReload).center().get().setAlignment(Align.center);
|
cont.add("@mod.reloadrequired").visible(mods::requiresReload).center().get().setAlignment(Align.center);
|
||||||
cont.row();
|
cont.row();
|
||||||
|
|
||||||
|
|||||||
@@ -286,7 +286,7 @@ public class HudFragment extends Fragment{
|
|||||||
.update(label -> label.color.set(Color.orange).lerp(Color.scarlet, Mathf.absin(Time.time, 2f, 1f))), true,
|
.update(label -> label.color.set(Color.orange).lerp(Color.scarlet, Mathf.absin(Time.time, 2f, 1f))), true,
|
||||||
() -> {
|
() -> {
|
||||||
if(!shown || state.isPaused()) return false;
|
if(!shown || state.isPaused()) return false;
|
||||||
if(state.isMenu() || !state.teams.get(player.team()).hasCore()){
|
if(state.isMenu() || !player.team().data().hasCore()){
|
||||||
coreAttackTime[0] = 0f;
|
coreAttackTime[0] = 0f;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -322,7 +322,17 @@ public class HudFragment extends Fragment{
|
|||||||
}
|
}
|
||||||
return max == 0f ? 0f : val / max;
|
return max == 0f ? 0f : val / max;
|
||||||
}).blink(Color.white).outline(new Color(0, 0, 0, 0.6f), 7f)).grow())
|
}).blink(Color.white).outline(new Color(0, 0, 0, 0.6f), 7f)).grow())
|
||||||
.fillX().width(320f).height(60f).name("boss").visible(() -> state.rules.waves && state.boss() != null).padTop(7);
|
.fillX().width(320f).height(60f).name("boss").visible(() -> state.rules.waves && state.boss() != null).padTop(7).row();
|
||||||
|
|
||||||
|
t.table(Styles.black3, p -> p.margin(4).label(() -> hudText).style(Styles.outlineLabel)).touchable(Touchable.disabled).with(p -> p.visible(() -> {
|
||||||
|
p.color.a = Mathf.lerpDelta(p.color.a, Mathf.num(showHudText), 0.2f);
|
||||||
|
if(state.isMenu()){
|
||||||
|
p.color.a = 0f;
|
||||||
|
showHudText = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return p.color.a >= 0.001f;
|
||||||
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
//spawner warning
|
//spawner warning
|
||||||
@@ -342,20 +352,6 @@ public class HudFragment extends Fragment{
|
|||||||
t.add("@saving").style(Styles.outlineLabel);
|
t.add("@saving").style(Styles.outlineLabel);
|
||||||
});
|
});
|
||||||
|
|
||||||
parent.fill(p -> {
|
|
||||||
p.name = "hudtext";
|
|
||||||
p.top().table(Styles.black3, t -> t.margin(4).label(() -> hudText)
|
|
||||||
.style(Styles.outlineLabel)).padTop(10).visible(p.color.a >= 0.001f);
|
|
||||||
p.update(() -> {
|
|
||||||
p.color.a = Mathf.lerpDelta(p.color.a, Mathf.num(showHudText), 0.2f);
|
|
||||||
if(state.isMenu()){
|
|
||||||
p.color.a = 0f;
|
|
||||||
showHudText = false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
p.touchable = Touchable.disabled;
|
|
||||||
});
|
|
||||||
|
|
||||||
//TODO DEBUG: rate table
|
//TODO DEBUG: rate table
|
||||||
if(false)
|
if(false)
|
||||||
parent.fill(t -> {
|
parent.fill(t -> {
|
||||||
|
|||||||
@@ -451,6 +451,10 @@ public class Block extends UnlockableContent{
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean configSenseable(){
|
||||||
|
return configurations.containsKey(Item.class) || configurations.containsKey(Liquid.class);
|
||||||
|
}
|
||||||
|
|
||||||
public Object nextConfig(){
|
public Object nextConfig(){
|
||||||
if(saveConfig && lastConfig != null){
|
if(saveConfig && lastConfig != null){
|
||||||
return lastConfig;
|
return lastConfig;
|
||||||
|
|||||||
@@ -119,11 +119,11 @@ public class Tile implements Position, QuadTreeObject, Displayable{
|
|||||||
float result = 0f;
|
float result = 0f;
|
||||||
|
|
||||||
if(block.hasItems){
|
if(block.hasItems){
|
||||||
result += build.items.sum((item, amount) -> item.flammability * amount) / block.itemCapacity * Mathf.clamp(block.itemCapacity / 2.4f, 1f, 3f);
|
result += build.items.sum((item, amount) -> item.flammability * amount) / Math.max(block.itemCapacity, 1) * Mathf.clamp(block.itemCapacity / 2.4f, 1f, 3f);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(block.hasLiquids){
|
if(block.hasLiquids){
|
||||||
result += build.liquids.sum((liquid, amount) -> liquid.flammability * amount / 1.6f) / block.liquidCapacity * Mathf.clamp(block.liquidCapacity / 30f, 1f, 2f);
|
result += build.liquids.sum((liquid, amount) -> liquid.flammability * amount / 1.6f) / Math.max(block.liquidCapacity, 1) * Mathf.clamp(block.liquidCapacity / 30f, 1f, 2f);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ public class ForceProjector extends Block{
|
|||||||
hasItems = true;
|
hasItems = true;
|
||||||
ambientSound = Sounds.shield;
|
ambientSound = Sounds.shield;
|
||||||
ambientSoundVolume = 0.08f;
|
ambientSoundVolume = 0.08f;
|
||||||
consumes.add(new ConsumeLiquidFilter(liquid -> liquid.temperature <= 0.5f && liquid.flammability < 0.1f, 0.1f)).boost().update(false);
|
consumes.add(new ConsumeCoolant(0.1f)).boost().update(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ public class BaseTurret extends Block{
|
|||||||
public void init(){
|
public void init(){
|
||||||
if(acceptCoolant && !consumes.has(ConsumeType.liquid)){
|
if(acceptCoolant && !consumes.has(ConsumeType.liquid)){
|
||||||
hasLiquids = true;
|
hasLiquids = true;
|
||||||
consumes.add(new ConsumeLiquidFilter(liquid -> liquid.temperature <= 0.5f && liquid.flammability < 0.1f, 0.2f)).update(false).boost();
|
consumes.add(new ConsumeCoolant(0.2f)).update(false).boost();
|
||||||
}
|
}
|
||||||
|
|
||||||
super.init();
|
super.init();
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ public class LaserTurret extends PowerTurret{
|
|||||||
super(name);
|
super(name);
|
||||||
canOverdrive = false;
|
canOverdrive = false;
|
||||||
|
|
||||||
consumes.add(new ConsumeLiquidFilter(liquid -> liquid.temperature <= 0.5f && liquid.flammability < 0.1f, 0.01f)).update(false);
|
consumes.add(new ConsumeCoolant(0.01f)).update(false);
|
||||||
coolantMultiplier = 1f;
|
coolantMultiplier = 1f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,6 +27,8 @@ public class LiquidTurret extends Turret{
|
|||||||
hasLiquids = true;
|
hasLiquids = true;
|
||||||
loopSound = Sounds.spray;
|
loopSound = Sounds.spray;
|
||||||
shootSound = Sounds.none;
|
shootSound = Sounds.none;
|
||||||
|
smokeEffect = Fx.none;
|
||||||
|
shootEffect = Fx.none;
|
||||||
outlinedIcon = 1;
|
outlinedIcon = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ public class Turret extends ReloadTurret{
|
|||||||
public void init(){
|
public void init(){
|
||||||
if(acceptCoolant && !consumes.has(ConsumeType.liquid)){
|
if(acceptCoolant && !consumes.has(ConsumeType.liquid)){
|
||||||
hasLiquids = true;
|
hasLiquids = true;
|
||||||
consumes.add(new ConsumeLiquidFilter(liquid -> liquid.temperature <= 0.5f && liquid.flammability < 0.1f, coolantUsage)).update(false).boost();
|
consumes.add(new ConsumeCoolant(coolantUsage)).update(false).boost();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(shootLength < 0) shootLength = size * tilesize / 2f;
|
if(shootLength < 0) shootLength = size * tilesize / 2f;
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ public class Duct extends Block implements Autotiler{
|
|||||||
@Override
|
@Override
|
||||||
public boolean acceptItem(Building source, Item item){
|
public boolean acceptItem(Building source, Item item){
|
||||||
return current == null && items.total() == 0 &&
|
return current == null && items.total() == 0 &&
|
||||||
(source.block instanceof Duct || Edges.getFacingEdge(source.tile(), tile).relativeTo(tile) == rotation);
|
((source.block.rotate && source.front() == this && source.block.hasItems) || Edges.getFacingEdge(source.tile(), tile).relativeTo(tile) == rotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package mindustry.world.blocks.distribution;
|
package mindustry.world.blocks.distribution;
|
||||||
|
|
||||||
import arc.graphics.g2d.*;
|
import arc.graphics.g2d.*;
|
||||||
|
import arc.math.*;
|
||||||
import arc.math.geom.*;
|
import arc.math.geom.*;
|
||||||
import arc.struct.*;
|
import arc.struct.*;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
@@ -16,8 +17,10 @@ import mindustry.world.meta.*;
|
|||||||
|
|
||||||
import static mindustry.Vars.*;
|
import static mindustry.Vars.*;
|
||||||
|
|
||||||
//TODO display range
|
|
||||||
public class DuctBridge extends Block{
|
public class DuctBridge extends Block{
|
||||||
|
private static BuildPlan otherReq;
|
||||||
|
private int otherDst = 0;
|
||||||
|
|
||||||
public @Load("@-bridge") TextureRegion bridgeRegion;
|
public @Load("@-bridge") TextureRegion bridgeRegion;
|
||||||
public @Load("@-bridge-bottom") TextureRegion bridgeBotRegion;
|
public @Load("@-bridge-bottom") TextureRegion bridgeBotRegion;
|
||||||
//public @Load("@-bridge-top") TextureRegion bridgeTopRegion;
|
//public @Load("@-bridge-top") TextureRegion bridgeTopRegion;
|
||||||
@@ -46,6 +49,26 @@ public class DuctBridge extends Block{
|
|||||||
Draw.rect(dirRegion, req.drawx(), req.drawy(), req.rotation * 90);
|
Draw.rect(dirRegion, req.drawx(), req.drawy(), req.rotation * 90);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void drawRequestConfigTop(BuildPlan req, Eachable<BuildPlan> list){
|
||||||
|
otherReq = null;
|
||||||
|
otherDst = range;
|
||||||
|
Point2 d = Geometry.d4(req.rotation);
|
||||||
|
list.each(other -> {
|
||||||
|
if(other.block == this && req != other && Mathf.clamp(other.x - req.x, -1, 1) == d.x && Mathf.clamp(other.y - req.y, -1, 1) == d.y){
|
||||||
|
int dst = Math.max(Math.abs(other.x - req.x), Math.abs(other.y - req.y));
|
||||||
|
if(dst <= otherDst){
|
||||||
|
otherReq = other;
|
||||||
|
otherDst = dst;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if(otherReq != null){
|
||||||
|
drawBridge(req.rotation, req.drawx(), req.drawy(), otherReq.drawx(), otherReq.drawy());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TextureRegion[] icons(){
|
public TextureRegion[] icons(){
|
||||||
return new TextureRegion[]{region, dirRegion};
|
return new TextureRegion[]{region, dirRegion};
|
||||||
@@ -56,16 +79,14 @@ public class DuctBridge extends Block{
|
|||||||
Placement.calculateNodes(points, this, rotation, (point, other) -> Math.max(Math.abs(point.x - other.x), Math.abs(point.y - other.y)) <= range);
|
Placement.calculateNodes(points, this, rotation, (point, other) -> Math.max(Math.abs(point.x - other.x), Math.abs(point.y - other.y)) <= range);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public void drawPlace(int x, int y, int rotation, boolean valid, boolean line){
|
||||||
public void drawPlace(int x, int y, int rotation, boolean valid){
|
|
||||||
super.drawPlace(x, y, rotation, valid);
|
|
||||||
|
|
||||||
int length = range;
|
int length = range;
|
||||||
Building found = null;
|
Building found = null;
|
||||||
|
int dx = Geometry.d4x(rotation), dy = Geometry.d4y(rotation);
|
||||||
|
|
||||||
//find the link
|
//find the link
|
||||||
for(int i = 1; i <= range; i++){
|
for(int i = 1; i <= range; i++){
|
||||||
Tile other = world.tile(x + Geometry.d4x(rotation) * i, y + Geometry.d4y(rotation) * i);
|
Tile other = world.tile(x + dx * i, y + dy * i);
|
||||||
|
|
||||||
if(other != null && other.build instanceof DuctBridgeBuild build && build.team == player.team()){
|
if(other != null && other.build instanceof DuctBridgeBuild build && build.team == player.team()){
|
||||||
length = i;
|
length = i;
|
||||||
@@ -74,17 +95,50 @@ public class DuctBridge extends Block{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Drawf.dashLine(Pal.placing,
|
if(line || found != null){
|
||||||
x * tilesize + Geometry.d4[rotation].x * (tilesize / 2f + 2),
|
Drawf.dashLine(Pal.placing,
|
||||||
y * tilesize + Geometry.d4[rotation].y * (tilesize / 2f + 2),
|
x * tilesize + dx * (tilesize / 2f + 2),
|
||||||
x * tilesize + Geometry.d4[rotation].x * (length) * tilesize,
|
y * tilesize + dy * (tilesize / 2f + 2),
|
||||||
y * tilesize + Geometry.d4[rotation].y * (length) * tilesize
|
x * tilesize + dx * (length) * tilesize,
|
||||||
);
|
y * tilesize + dy * (length) * tilesize
|
||||||
|
);
|
||||||
if(found != null){
|
|
||||||
Drawf.square(found.x, found.y, found.block.size * tilesize/2f + 2.5f, 0f);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(found != null){
|
||||||
|
if(line){
|
||||||
|
Drawf.square(found.x, found.y, found.block.size * tilesize/2f + 2.5f, 0f);
|
||||||
|
}else{
|
||||||
|
Drawf.square(found.x, found.y, 2f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void drawPlace(int x, int y, int rotation, boolean valid){
|
||||||
|
super.drawPlace(x, y, rotation, valid);
|
||||||
|
|
||||||
|
drawPlace(x, y, rotation, valid, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void drawBridge(int rotation, float x1, float y1, float x2, float y2){
|
||||||
|
Draw.alpha(Renderer.bridgeOpacity);
|
||||||
|
float
|
||||||
|
angle = Angles.angle(x1, y1, x2, y2),
|
||||||
|
cx = (x1 + x2)/2f,
|
||||||
|
cy = (y1 + y2)/2f,
|
||||||
|
len = Math.max(Math.abs(x1 - x2), Math.abs(y1 - y2)) - size * tilesize;
|
||||||
|
|
||||||
|
Draw.rect(bridgeRegion, cx, cy, len, tilesize, angle);
|
||||||
|
Draw.color(0.4f, 0.4f, 0.4f, 0.4f * Renderer.bridgeOpacity);
|
||||||
|
Draw.rect(bridgeBotRegion, cx, cy, len, tilesize, angle);
|
||||||
|
Draw.reset();
|
||||||
|
Draw.alpha(Renderer.bridgeOpacity);
|
||||||
|
|
||||||
|
for(float i = 6f; i <= len + size * tilesize - 5f; i += 5f){
|
||||||
|
Draw.rect(arrowRegion, x1 + Geometry.d4x(rotation) * i, y1 + Geometry.d4y(rotation) * i, angle);
|
||||||
|
}
|
||||||
|
|
||||||
|
Draw.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean positionsValid(int x1, int y1, int x2, int y2){
|
public boolean positionsValid(int x1, int y1, int x2, int y2){
|
||||||
@@ -108,24 +162,42 @@ public class DuctBridge extends Block{
|
|||||||
var link = findLink();
|
var link = findLink();
|
||||||
if(link != null){
|
if(link != null){
|
||||||
Draw.z(Layer.power);
|
Draw.z(Layer.power);
|
||||||
Draw.alpha(Renderer.bridgeOpacity);
|
drawBridge(rotation, x, y, link.x, link.y);
|
||||||
float
|
}
|
||||||
angle = angleTo(link),
|
}
|
||||||
cx = (x + link.x)/2f,
|
|
||||||
cy = (y + link.y)/2f,
|
|
||||||
len = Math.max(Math.abs(x - link.x), Math.abs(y - link.y)) - size * tilesize;
|
|
||||||
|
|
||||||
Draw.rect(bridgeRegion, cx, cy, len, tilesize, angle);
|
@Override
|
||||||
Draw.color(0.4f, 0.4f, 0.4f, 0.4f * Renderer.bridgeOpacity);
|
public void drawSelect(){
|
||||||
Draw.rect(bridgeBotRegion, cx, cy, len, tilesize, angle);
|
drawPlace(tile.x, tile.y, rotation, true, false);
|
||||||
Draw.reset();
|
//draw incoming bridges
|
||||||
Draw.alpha(Renderer.bridgeOpacity);
|
for(int dir = 0; dir < 4; dir++){
|
||||||
|
if(dir != rotation){
|
||||||
|
int dx = Geometry.d4x(dir), dy = Geometry.d4y(dir);
|
||||||
|
int length = range;
|
||||||
|
Building found = null;
|
||||||
|
|
||||||
for(float i = 6f; i <= len + size * tilesize - 5f; i += 5f){
|
//find the link
|
||||||
Draw.rect(arrowRegion, x + Geometry.d4x(rotation) * i, y + Geometry.d4y(rotation) * i, angle);
|
for(int i = 1; i <= range; i++){
|
||||||
|
Tile other = world.tile(tile.x + dx * i, tile.y + dy * i);
|
||||||
|
|
||||||
|
if(other != null && other.build instanceof DuctBridgeBuild build && build.team == player.team() && (build.rotation + 2) % 4 == dir){
|
||||||
|
length = i;
|
||||||
|
found = other.build;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(found != null){
|
||||||
|
Drawf.dashLine(Pal.place,
|
||||||
|
found.x - dx * (tilesize / 2f + 2),
|
||||||
|
found.y - dy * (tilesize / 2f + 2),
|
||||||
|
found.x - dx * (length) * tilesize,
|
||||||
|
found.y - dy * (length) * tilesize
|
||||||
|
);
|
||||||
|
|
||||||
|
Drawf.square(found.x, found.y, 2f, 45f, Pal.place);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Draw.reset();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -173,7 +245,7 @@ public class DuctBridge extends Block{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean acceptItem(Building source, Item item){
|
public boolean acceptItem(Building source, Item item){
|
||||||
int rel = this.relativeTo(source);
|
int rel = this.relativeToEdge(source.tile);
|
||||||
return items.total() < itemCapacity && rel != rotation && occupied[(rel + 2) % 4] == null;
|
return items.total() < itemCapacity && rel != rotation && occupied[(rel + 2) % 4] == null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
19
core/src/mindustry/world/blocks/environment/MetalFloor.java
Normal file
19
core/src/mindustry/world/blocks/environment/MetalFloor.java
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
package mindustry.world.blocks.environment;
|
||||||
|
|
||||||
|
import mindustry.world.meta.*;
|
||||||
|
|
||||||
|
/** Class for quickly defining a floor with no water and no variants. Offers no new functionality. */
|
||||||
|
public class MetalFloor extends Floor{
|
||||||
|
|
||||||
|
public MetalFloor(String name){
|
||||||
|
super(name);
|
||||||
|
variants = 0;
|
||||||
|
attributes.set(Attribute.water, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public MetalFloor(String name, int variants){
|
||||||
|
super(name);
|
||||||
|
this.variants = variants;
|
||||||
|
attributes.set(Attribute.water, -1);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -16,6 +16,11 @@ public class BlockUnloader extends BlockLoader{
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean rotatedOutput(int x, int y){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public class BlockUnloaderBuild extends BlockLoaderBuild{
|
public class BlockUnloaderBuild extends BlockLoaderBuild{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -66,6 +66,12 @@ public class PayloadMassDriver extends PayloadBlock{
|
|||||||
config(Integer.class, (PayloadDriverBuild tile, Integer point) -> tile.link = point);
|
config(Integer.class, (PayloadDriverBuild tile, Integer point) -> tile.link = point);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init(){
|
||||||
|
super.init();
|
||||||
|
clipSize = Math.max(clipSize, range*2f + tilesize*size);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setStats(){
|
public void setStats(){
|
||||||
super.setStats();
|
super.setStats();
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package mindustry.world.blocks.power;
|
||||||
|
|
||||||
|
import arc.func.*;
|
||||||
|
import mindustry.gen.*;
|
||||||
|
import mindustry.world.consumers.*;
|
||||||
|
|
||||||
|
/** A power consumer that uses a dynamic amount of power. */
|
||||||
|
public class DynamicConsumePower extends ConsumePower{
|
||||||
|
private final Floatf<Building> usage;
|
||||||
|
|
||||||
|
public DynamicConsumePower(Floatf<Building> usage){
|
||||||
|
super(0, 0, false);
|
||||||
|
this.usage = usage;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float requestedPower(Building entity){
|
||||||
|
return usage.get(entity);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -20,6 +20,8 @@ import mindustry.world.*;
|
|||||||
import mindustry.world.meta.*;
|
import mindustry.world.meta.*;
|
||||||
|
|
||||||
public class CommandCenter extends Block{
|
public class CommandCenter extends Block{
|
||||||
|
public final int timerEffect = timers ++;
|
||||||
|
|
||||||
public TextureRegionDrawable[] commandRegions = new TextureRegionDrawable[UnitCommand.all.length];
|
public TextureRegionDrawable[] commandRegions = new TextureRegionDrawable[UnitCommand.all.length];
|
||||||
public Color topColor = null, bottomColor = Color.valueOf("5e5e5e");
|
public Color topColor = null, bottomColor = Color.valueOf("5e5e5e");
|
||||||
public Effect effect = Fx.commandSend;
|
public Effect effect = Fx.commandSend;
|
||||||
@@ -33,11 +35,17 @@ public class CommandCenter extends Block{
|
|||||||
solid = true;
|
solid = true;
|
||||||
configurable = true;
|
configurable = true;
|
||||||
drawDisabled = false;
|
drawDisabled = false;
|
||||||
|
logicConfigurable = true;
|
||||||
|
|
||||||
config(UnitCommand.class, (CommandBuild build, UnitCommand command) -> {
|
config(UnitCommand.class, (CommandBuild build, UnitCommand command) -> {
|
||||||
build.team.data().command = command;
|
if(build.team.data().command != command){
|
||||||
effect.at(build, effectSize);
|
build.team.data().command = command;
|
||||||
Events.fire(new CommandIssueEvent(build, command));
|
//do not spam effect
|
||||||
|
if(build.timer(timerEffect, 60f)){
|
||||||
|
effect.at(build, effectSize);
|
||||||
|
}
|
||||||
|
Events.fire(new CommandIssueEvent(build, command));
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -52,6 +60,11 @@ public class CommandCenter extends Block{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean configSenseable(){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
public class CommandBuild extends Building{
|
public class CommandBuild extends Building{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ public class RepairPoint extends Block{
|
|||||||
public void init(){
|
public void init(){
|
||||||
if(acceptCoolant){
|
if(acceptCoolant){
|
||||||
hasLiquids = true;
|
hasLiquids = true;
|
||||||
consumes.add(new ConsumeLiquidFilter(liquid -> liquid.temperature <= 0.5f && liquid.flammability < 0.1f, coolantUse)).optional(true, true);
|
consumes.add(new ConsumeCoolant(coolantUse)).optional(true, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
consumes.powerCond(powerUse, (RepairPointBuild entity) -> entity.target != null);
|
consumes.powerCond(powerUse, (RepairPointBuild entity) -> entity.target != null);
|
||||||
|
|||||||
16
core/src/mindustry/world/consumers/ConsumeCoolant.java
Normal file
16
core/src/mindustry/world/consumers/ConsumeCoolant.java
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
package mindustry.world.consumers;
|
||||||
|
|
||||||
|
/** A ConsumeLiquidFilter that consumes specific coolant, selected based on stats. */
|
||||||
|
public class ConsumeCoolant extends ConsumeLiquidFilter{
|
||||||
|
public float maxTemp = 0.5f, maxFlammability = 0.1f;
|
||||||
|
|
||||||
|
public ConsumeCoolant(float amount){
|
||||||
|
this.filter = liquid -> liquid.temperature <= maxTemp && liquid.flammability < maxFlammability;
|
||||||
|
this.amount = amount;
|
||||||
|
}
|
||||||
|
|
||||||
|
//mods
|
||||||
|
public ConsumeCoolant(){
|
||||||
|
this(0.1f);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,12 +4,14 @@ import mindustry.gen.*;
|
|||||||
|
|
||||||
public abstract class ConsumeLiquidBase extends Consume{
|
public abstract class ConsumeLiquidBase extends Consume{
|
||||||
/** amount used per frame */
|
/** amount used per frame */
|
||||||
public final float amount;
|
public float amount;
|
||||||
|
|
||||||
public ConsumeLiquidBase(float amount){
|
public ConsumeLiquidBase(float amount){
|
||||||
this.amount = amount;
|
this.amount = amount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ConsumeLiquidBase(){}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ConsumeType type(){
|
public ConsumeType type(){
|
||||||
return ConsumeType.liquid;
|
return ConsumeType.liquid;
|
||||||
|
|||||||
@@ -11,13 +11,17 @@ import mindustry.world.meta.*;
|
|||||||
import static mindustry.Vars.*;
|
import static mindustry.Vars.*;
|
||||||
|
|
||||||
public class ConsumeLiquidFilter extends ConsumeLiquidBase{
|
public class ConsumeLiquidFilter extends ConsumeLiquidBase{
|
||||||
public final Boolf<Liquid> filter;
|
public Boolf<Liquid> filter;
|
||||||
|
|
||||||
public ConsumeLiquidFilter(Boolf<Liquid> liquid, float amount){
|
public ConsumeLiquidFilter(Boolf<Liquid> liquid, float amount){
|
||||||
super(amount);
|
super(amount);
|
||||||
this.filter = liquid;
|
this.filter = liquid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ConsumeLiquidFilter(){
|
||||||
|
this.filter = l -> false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void applyLiquidFilter(Bits arr){
|
public void applyLiquidFilter(Bits arr){
|
||||||
content.liquids().each(filter, item -> arr.set(item.id));
|
content.liquids().each(filter, item -> arr.set(item.id));
|
||||||
|
|||||||
@@ -68,6 +68,11 @@ public class Consumers{
|
|||||||
return add(new ConditionalConsumePower(usage, (Boolf<Building>)cons));
|
return add(new ConditionalConsumePower(usage, (Boolf<Building>)cons));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Creates a consumer that consumes a dynamic amount of power. */
|
||||||
|
public <T extends Building> ConsumePower powerDynamic(Floatf<T> usage){
|
||||||
|
return add(new DynamicConsumePower((Floatf<Building>)usage));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a consumer which stores power.
|
* Creates a consumer which stores power.
|
||||||
* @param powerCapacity The maximum capacity in power units.
|
* @param powerCapacity The maximum capacity in power units.
|
||||||
|
|||||||
@@ -8,10 +8,12 @@ import arc.scene.ui.*;
|
|||||||
import arc.scene.ui.layout.*;
|
import arc.scene.ui.layout.*;
|
||||||
import arc.struct.*;
|
import arc.struct.*;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
|
import mindustry.*;
|
||||||
import mindustry.content.*;
|
import mindustry.content.*;
|
||||||
import mindustry.ctype.*;
|
import mindustry.ctype.*;
|
||||||
import mindustry.entities.bullet.*;
|
import mindustry.entities.bullet.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
|
import mindustry.maps.*;
|
||||||
import mindustry.type.*;
|
import mindustry.type.*;
|
||||||
import mindustry.ui.*;
|
import mindustry.ui.*;
|
||||||
import mindustry.world.*;
|
import mindustry.world.*;
|
||||||
@@ -117,6 +119,51 @@ public class StatValues{
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static StatValue floors(Attribute attr, boolean floating, float scale, boolean startZero){
|
||||||
|
return table -> table.table(c -> {
|
||||||
|
Runnable[] rebuild = {null};
|
||||||
|
Map[] lastMap = {null};
|
||||||
|
|
||||||
|
rebuild[0] = () -> {
|
||||||
|
c.clearChildren();
|
||||||
|
c.left();
|
||||||
|
|
||||||
|
if(state.isGame()){
|
||||||
|
var blocks = Vars.content.blocks()
|
||||||
|
.select(block -> block instanceof Floor f && indexer.isBlockPresent(block) && f.attributes.get(attr) != 0 && !(f.isLiquid && !floating))
|
||||||
|
.<Floor>as().with(s -> s.sort(f -> f.attributes.get(attr)));
|
||||||
|
|
||||||
|
if(blocks.any()){
|
||||||
|
int i = 0;
|
||||||
|
for(var block : blocks){
|
||||||
|
|
||||||
|
floorEfficiency(block, block.attributes.get(attr) * scale, startZero).display(c);
|
||||||
|
if(++i % 5 == 0){
|
||||||
|
c.row();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
c.add("@none.found");
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
c.add("@stat.showinmap");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
rebuild[0].run();
|
||||||
|
|
||||||
|
//rebuild when map changes.
|
||||||
|
c.update(() -> {
|
||||||
|
Map current = state.isGame() ? state.map : null;
|
||||||
|
|
||||||
|
if(current != lastMap[0]){
|
||||||
|
rebuild[0].run();
|
||||||
|
lastMap[0] = current;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public static StatValue blocks(Boolf<Block> pred){
|
public static StatValue blocks(Boolf<Block> pred){
|
||||||
return blocks(content.blocks().select(pred));
|
return blocks(content.blocks().select(pred));
|
||||||
}
|
}
|
||||||
@@ -246,7 +293,7 @@ public class StatValues{
|
|||||||
sep(bt, Core.bundle.format("bullet.splashdamage", (int)type.splashDamage, Strings.fixed(type.splashDamageRadius / tilesize, 1)));
|
sep(bt, Core.bundle.format("bullet.splashdamage", (int)type.splashDamage, Strings.fixed(type.splashDamageRadius / tilesize, 1)));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!unit && !Mathf.equal(type.ammoMultiplier, 1f)){
|
if(!unit && !Mathf.equal(type.ammoMultiplier, 1f) && type.displayAmmoMultiplier){
|
||||||
sep(bt, Core.bundle.format("bullet.multiplier", (int)type.ammoMultiplier));
|
sep(bt, Core.bundle.format("bullet.multiplier", (int)type.ammoMultiplier));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,7 @@ package mindustry.world.meta;
|
|||||||
import arc.struct.ObjectMap.*;
|
import arc.struct.ObjectMap.*;
|
||||||
import arc.struct.*;
|
import arc.struct.*;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
import mindustry.*;
|
|
||||||
import mindustry.type.*;
|
import mindustry.type.*;
|
||||||
import mindustry.world.blocks.environment.*;
|
|
||||||
|
|
||||||
/** Hold and organizes a list of block stats. */
|
/** Hold and organizes a list of block stats. */
|
||||||
public class Stats{
|
public class Stats{
|
||||||
@@ -68,11 +66,7 @@ public class Stats{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void add(Stat stat, Attribute attr, boolean floating, float scale, boolean startZero){
|
public void add(Stat stat, Attribute attr, boolean floating, float scale, boolean startZero){
|
||||||
for(var block : Vars.content.blocks()
|
add(stat, StatValues.floors(attr, floating, scale, startZero));
|
||||||
.select(block -> block instanceof Floor f && f.attributes.get(attr) != 0 && !(f.isLiquid && !floating))
|
|
||||||
.<Floor>as().with(s -> s.sort(f -> f.attributes.get(attr)))){
|
|
||||||
add(stat, StatValues.floorEfficiency(block, block.attributes.get(attr) * scale, startZero));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Adds a single string value with this stat. */
|
/** Adds a single string value with this stat. */
|
||||||
|
|||||||
@@ -9,4 +9,4 @@ kapt.use.worker.api=true
|
|||||||
kapt.include.compile.classpath=false
|
kapt.include.compile.classpath=false
|
||||||
# I don't need to use the kotlin stdlib yet, so remove it to prevent extra bloat & method count issues
|
# I don't need to use the kotlin stdlib yet, so remove it to prevent extra bloat & method count issues
|
||||||
kotlin.stdlib.default.dependency=false
|
kotlin.stdlib.default.dependency=false
|
||||||
archash=759b136340ea98d4cb9881e340fb219c6d602a66
|
archash=dabe9d3e89a9ed1b1c4cb8496a4525dedf29f613
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
"address": "mindustry.pl:7777"
|
"address": "mindustry.pl:7777"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"address": "46.17.104.254:9999"
|
"address": "mindurka.tk:9999"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"address": "mindustrypvp.ml:6000"
|
"address": "mindustrypvp.ml:6000"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"name": "RCR",
|
"name": "RCM",
|
||||||
"address": ["185.104.248.61"]
|
"address": ["185.104.248.61", "easyplay.su"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "SMokeOfAnarchy.duckdns.org",
|
"name": "SMokeOfAnarchy.duckdns.org",
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "C.A.M.S.",
|
"name": "C.A.M.S.",
|
||||||
"address": ["routerchain.ddns.net", "nikochio.ddns.net", "easyplay.su", "play.thedimas.pp.ua"]
|
"address": ["routerchain.ddns.net", "nikochio.ddns.net", "play.thedimas.pp.ua"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "BE6.RUN",
|
"name": "BE6.RUN",
|
||||||
@@ -89,7 +89,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "MD Community",
|
"name": "MD Community",
|
||||||
"address": ["46.17.104.254", "46.17.104.254:4000"]
|
"address": ["mindurka.tk", "mindurka.tk:4000"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Mindustry.Party",
|
"name": "Mindustry.Party",
|
||||||
@@ -102,5 +102,9 @@
|
|||||||
{
|
{
|
||||||
"name": "Sakura",
|
"name": "Sakura",
|
||||||
"address": ["160.16.207.141"]
|
"address": ["160.16.207.141"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "MeowLand",
|
||||||
|
"address": ["34.134.111.15"]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -739,7 +739,7 @@ public class ApplicationTests{
|
|||||||
core.build.items.set(item, 3000);
|
core.build.items.set(item, 3000);
|
||||||
}
|
}
|
||||||
|
|
||||||
assertEquals(core.build, state.teams.get(Team.sharded).core());
|
assertEquals(core.build, Team.sharded.data().core());
|
||||||
}
|
}
|
||||||
|
|
||||||
void depositTest(Block block, Item item){
|
void depositTest(Block block, Item item){
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ public class SectorTests{
|
|||||||
assertTrue(Team.sharded.core().items.total() < 1000, "Sector must not have starting resources: " + zone);
|
assertTrue(Team.sharded.core().items.total() < 1000, "Sector must not have starting resources: " + zone);
|
||||||
|
|
||||||
assertTrue(hasSpawnPoint, "Sector \"" + zone.name + "\" has no spawn points.");
|
assertTrue(hasSpawnPoint, "Sector \"" + zone.name + "\" has no spawn points.");
|
||||||
assertTrue(spawner.countSpawns() > 0 || (state.rules.attackMode && state.teams.get(state.rules.waveTeam).hasCore()), "Sector \"" + zone.name + "\" has no enemy spawn points: " + spawner.countSpawns());
|
assertTrue(spawner.countSpawns() > 0 || (state.rules.attackMode && state.rules.waveTeam.data().hasCore()), "Sector \"" + zone.name + "\" has no enemy spawn points: " + spawner.countSpawns());
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,15 +1,16 @@
|
|||||||
sourceSets.main.java.srcDirs = ["src/"]
|
sourceSets.main.java.srcDirs = ["src/"]
|
||||||
|
|
||||||
|
|
||||||
import arc.files.Fi
|
import arc.files.Fi
|
||||||
import arc.graphics.Color
|
import arc.graphics.Color
|
||||||
import arc.graphics.Pixmap
|
import arc.graphics.Pixmap
|
||||||
import arc.packer.TexturePacker
|
import arc.packer.TexturePacker
|
||||||
import arc.struct.IntIntMap
|
import arc.struct.IntIntMap
|
||||||
import arc.struct.IntMap
|
import arc.struct.IntMap
|
||||||
|
import arc.util.async.Threads
|
||||||
|
|
||||||
import java.util.concurrent.ExecutorService
|
import java.util.concurrent.ExecutorService
|
||||||
import java.util.concurrent.Executors
|
import java.util.concurrent.Executors
|
||||||
import java.util.concurrent.TimeUnit
|
|
||||||
|
|
||||||
def genFolder = "../core/assets-raw/sprites_out/generated/"
|
def genFolder = "../core/assets-raw/sprites_out/generated/"
|
||||||
def doAntialias = !project.hasProperty("disableAntialias")
|
def doAntialias = !project.hasProperty("disableAntialias")
|
||||||
@@ -222,12 +223,7 @@ task pack(dependsOn: [classes, configurations.runtimeClasspath]){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
executor.shutdown()
|
Threads.await(executor)
|
||||||
try{
|
|
||||||
executor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS)
|
|
||||||
}catch(InterruptedException e){
|
|
||||||
e.printStackTrace()
|
|
||||||
}
|
|
||||||
|
|
||||||
println "Time taken for AA: ${(System.currentTimeMillis() - ms) / 1000f}"
|
println "Time taken for AA: ${(System.currentTimeMillis() - ms) / 1000f}"
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import arc.math.*;
|
|||||||
import arc.math.geom.*;
|
import arc.math.geom.*;
|
||||||
import arc.struct.*;
|
import arc.struct.*;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
|
import arc.util.async.*;
|
||||||
import arc.util.noise.*;
|
import arc.util.noise.*;
|
||||||
import mindustry.ctype.*;
|
import mindustry.ctype.*;
|
||||||
import mindustry.game.*;
|
import mindustry.game.*;
|
||||||
@@ -161,16 +162,10 @@ public class Generators{
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
try{
|
Threads.await(exec);
|
||||||
exec.shutdown();
|
|
||||||
exec.awaitTermination(Long.MAX_VALUE, TimeUnit.SECONDS);
|
|
||||||
}catch(Exception e){
|
|
||||||
throw new RuntimeException("go away", e);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
generate("cracks", () -> {
|
generate("cracks", () -> {
|
||||||
RidgedPerlin r = new RidgedPerlin(1, 3);
|
|
||||||
for(int size = 1; size <= BlockRenderer.maxCrackSize; size++){
|
for(int size = 1; size <= BlockRenderer.maxCrackSize; size++){
|
||||||
int dim = size * 32;
|
int dim = size * 32;
|
||||||
int steps = BlockRenderer.crackRegions;
|
int steps = BlockRenderer.crackRegions;
|
||||||
@@ -181,7 +176,7 @@ public class Generators{
|
|||||||
for(int x = 0; x < dim; x++){
|
for(int x = 0; x < dim; x++){
|
||||||
for(int y = 0; y < dim; y++){
|
for(int y = 0; y < dim; y++){
|
||||||
float dst = Mathf.dst((float)x/dim, (float)y/dim, 0.5f, 0.5f) * 2f;
|
float dst = Mathf.dst((float)x/dim, (float)y/dim, 0.5f, 0.5f) * 2f;
|
||||||
if(dst < 1.2f && r.getValue(x, y, 1f / 40f) - dst*(1f-fract) > 0.16f){
|
if(dst < 1.2f && RidgedPerlin.noise2d(1, x, y, 3, 1f / 40f) - dst*(1f-fract) > 0.16f){
|
||||||
image.setRaw(x, y, Color.whiteRgba);
|
image.setRaw(x, y, Color.whiteRgba);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -335,7 +330,7 @@ public class Generators{
|
|||||||
average.mul(1f / asum);
|
average.mul(1f / asum);
|
||||||
|
|
||||||
if(block instanceof Floor){
|
if(block instanceof Floor){
|
||||||
average.mul(0.8f);
|
average.mul(0.77f);
|
||||||
}else{
|
}else{
|
||||||
average.mul(1.1f);
|
average.mul(1.1f);
|
||||||
}
|
}
|
||||||
@@ -489,12 +484,11 @@ public class Generators{
|
|||||||
wrecks[i] = new Pixmap(image.width, image.height);
|
wrecks[i] = new Pixmap(image.width, image.height);
|
||||||
}
|
}
|
||||||
|
|
||||||
RidgedPerlin r = new RidgedPerlin(1, 3);
|
|
||||||
VoronoiNoise vn = new VoronoiNoise(type.id, true);
|
VoronoiNoise vn = new VoronoiNoise(type.id, true);
|
||||||
|
|
||||||
image.each((x, y) -> {
|
image.each((x, y) -> {
|
||||||
//add darker cracks on top
|
//add darker cracks on top
|
||||||
boolean rValue = Math.max(r.getValue(x, y, 1f / (20f + image.width/8f)), 0) > 0.16f;
|
boolean rValue = Math.max(RidgedPerlin.noise2d(1, x, y, 3, 1f / (20f + image.width/8f)), 0) > 0.16f;
|
||||||
//cut out random chunks with voronoi
|
//cut out random chunks with voronoi
|
||||||
boolean vval = vn.noise(x, y, 1f / (14f + image.width/40f)) > 0.47;
|
boolean vval = vn.noise(x, y, 1f / (14f + image.width/40f)) > 0.47;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user