Merge branch 'Anuken:master' into balancing_burst-drill-optional-multiplier
This commit is contained in:
@@ -18,7 +18,7 @@ jobs:
|
||||
- name: Setup Gradle
|
||||
uses: gradle/gradle-build-action@v2
|
||||
- name: Run unit tests
|
||||
run: ./gradlew clean cleanTest test --stacktrace
|
||||
run: ./gradlew tests:test --stacktrace --rerun
|
||||
- name: Run unit tests and build JAR
|
||||
run: ./gradlew desktop:dist
|
||||
- name: Upload desktop JAR for testing
|
||||
|
||||
@@ -57,4 +57,4 @@ jobs:
|
||||
git push https://Anuken:${{ secrets.API_TOKEN_GITHUB }}@github.com/Anuken/MindustryJitpack
|
||||
cd ../Mindustry
|
||||
- name: Run unit tests
|
||||
run: ./gradlew clean cleanTest test --stacktrace
|
||||
run: ./gradlew tests:test --rerun --stacktrace
|
||||
|
||||
+6
-3
@@ -18,13 +18,16 @@ You'll need to either hire some moderators, or make use of (currently non-existe
|
||||
4. **Get some good maps.** *(optional, but highly recommended)*. Add some maps to your server and set the map rotation to custom-only. You can get maps from the Steam workshop by subscribing and exporting them; using the `#maps` channel on Discord is also an option.
|
||||
5. **Check your server configuration.** *(optional)* I would recommend adding a message rate limit of 1 second (`config messageRateLimit 1`), and disabling connect/disconnect messages to reduce spam (`config showConnectMessages false`).
|
||||
6. Finally, **submit a pull request** to add your server's IP to the list.
|
||||
This should be fairly straightforward: Press the edit button on the [server file](https://github.com/Anuken/Mindustry/blob/master/servers_v7.json), then add a JSON object with a single key, indicating your server address.
|
||||
For example, if your server address is `example.com:6000`, you would add a comma after the last entry and insert:
|
||||
This should be fairly straightforward: Press the edit button on the [server file](https://github.com/Anuken/Mindustry/blob/master/servers_v7.json), then add a JSON object with the following format:
|
||||
```json
|
||||
{
|
||||
"address": "example.com:6000"
|
||||
"name": "Your Server Group Name",
|
||||
"address": ["your.server.address"]
|
||||
}
|
||||
```
|
||||
|
||||
If your group has multiple servers, simply add extra addresses inside the square brackets, separated by commas. For example: `["address1", "address2"]`
|
||||
|
||||
> Note that Mindustry also support SRV records. This allows you to use a subdomain for your server address instead of specifying the port. For example, if you want to use `play.example.com` instead of `example.com:6000`, in the dns settings of your domain, add an SRV record with `_mindustry` as the service, `tcp` as the protocol, `play` as the target and `6000` as the port. You can also setup fallback servers by modifying the weight or priority of the record. Although SRV records are very convenient, keep in mind they are slower than regular addresses. Avoid using them in the server list, but rather as an easy way to share your server address.
|
||||
|
||||
Then, press the *'submit pull request'* button and I'll take a look at your server. If I have any issues with it, I'll let you know in the PR comments.
|
||||
|
||||
@@ -101,64 +101,68 @@ public class AndroidLauncher extends AndroidApplication{
|
||||
}
|
||||
|
||||
void showFileChooser(boolean open, String title, Cons<Fi> cons, String... extensions){
|
||||
String extension = extensions[0];
|
||||
try{
|
||||
String extension = extensions[0];
|
||||
|
||||
if(VERSION.SDK_INT >= VERSION_CODES.Q){
|
||||
Intent intent = new Intent(open ? Intent.ACTION_OPEN_DOCUMENT : Intent.ACTION_CREATE_DOCUMENT);
|
||||
intent.addCategory(Intent.CATEGORY_OPENABLE);
|
||||
intent.setType(extension.equals("zip") && !open && extensions.length == 1 ? "application/zip" : "*/*");
|
||||
if(VERSION.SDK_INT >= VERSION_CODES.Q){
|
||||
Intent intent = new Intent(open ? Intent.ACTION_OPEN_DOCUMENT : Intent.ACTION_CREATE_DOCUMENT);
|
||||
intent.addCategory(Intent.CATEGORY_OPENABLE);
|
||||
intent.setType(extension.equals("zip") && !open && extensions.length == 1 ? "application/zip" : "*/*");
|
||||
|
||||
addResultListener(i -> startActivityForResult(intent, i), (code, in) -> {
|
||||
if(code == Activity.RESULT_OK && in != null && in.getData() != null){
|
||||
Uri uri = in.getData();
|
||||
addResultListener(i -> startActivityForResult(intent, i), (code, in) -> {
|
||||
if(code == Activity.RESULT_OK && in != null && in.getData() != null){
|
||||
Uri uri = in.getData();
|
||||
|
||||
if(uri.getPath().contains("(invalid)")) return;
|
||||
if(uri.getPath().contains("(invalid)")) return;
|
||||
|
||||
Core.app.post(() -> Core.app.post(() -> cons.get(new Fi(uri.getPath()){
|
||||
@Override
|
||||
public InputStream read(){
|
||||
try{
|
||||
return getContentResolver().openInputStream(uri);
|
||||
}catch(IOException e){
|
||||
throw new ArcRuntimeException(e);
|
||||
Core.app.post(() -> Core.app.post(() -> cons.get(new Fi(uri.getPath()){
|
||||
@Override
|
||||
public InputStream read(){
|
||||
try{
|
||||
return getContentResolver().openInputStream(uri);
|
||||
}catch(IOException e){
|
||||
throw new ArcRuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public OutputStream write(boolean append){
|
||||
try{
|
||||
return getContentResolver().openOutputStream(uri);
|
||||
}catch(IOException e){
|
||||
throw new ArcRuntimeException(e);
|
||||
@Override
|
||||
public OutputStream write(boolean append){
|
||||
try{
|
||||
return getContentResolver().openOutputStream(uri);
|
||||
}catch(IOException e){
|
||||
throw new ArcRuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
})));
|
||||
}
|
||||
});
|
||||
}else if(VERSION.SDK_INT >= VERSION_CODES.M && !(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED &&
|
||||
})));
|
||||
}
|
||||
});
|
||||
}else if(VERSION.SDK_INT >= VERSION_CODES.M && !(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED &&
|
||||
checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)){
|
||||
chooser = new FileChooser(title, file -> Structs.contains(extensions, file.extension().toLowerCase()), open, file -> {
|
||||
if(!open){
|
||||
cons.get(file.parent().child(file.nameWithoutExtension() + "." + extension));
|
||||
}else{
|
||||
cons.get(file);
|
||||
}
|
||||
});
|
||||
chooser = new FileChooser(title, file -> Structs.contains(extensions, file.extension().toLowerCase()), open, file -> {
|
||||
if(!open){
|
||||
cons.get(file.parent().child(file.nameWithoutExtension() + "." + extension));
|
||||
}else{
|
||||
cons.get(file);
|
||||
}
|
||||
});
|
||||
|
||||
ArrayList<String> perms = new ArrayList<>();
|
||||
if(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
|
||||
perms.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
}
|
||||
if(checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
|
||||
perms.add(Manifest.permission.READ_EXTERNAL_STORAGE);
|
||||
}
|
||||
requestPermissions(perms.toArray(new String[0]), PERMISSION_REQUEST_CODE);
|
||||
}else{
|
||||
if(open){
|
||||
new FileChooser(title, file -> Structs.contains(extensions, file.extension().toLowerCase()), true, cons).show();
|
||||
ArrayList<String> perms = new ArrayList<>();
|
||||
if(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
|
||||
perms.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
}
|
||||
if(checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
|
||||
perms.add(Manifest.permission.READ_EXTERNAL_STORAGE);
|
||||
}
|
||||
requestPermissions(perms.toArray(new String[0]), PERMISSION_REQUEST_CODE);
|
||||
}else{
|
||||
super.showFileChooser(open, "@open", extension, cons);
|
||||
if(open){
|
||||
new FileChooser(title, file -> Structs.contains(extensions, file.extension().toLowerCase()), true, cons).show();
|
||||
}else{
|
||||
super.showFileChooser(open, "@open", extension, cons);
|
||||
}
|
||||
}
|
||||
}catch(Throwable error){
|
||||
Core.app.post(() -> Vars.ui.showException(error));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BIN
Binary file not shown.
|
After Width: | Height: | Size: 510 B |
@@ -501,6 +501,7 @@ editor.default = [lightgray]<Default>
|
||||
details = Details...
|
||||
edit = Edit
|
||||
variables = Vars
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = Name:
|
||||
editor.spawn = Spawn Unit
|
||||
editor.removeunit = Remove Unit
|
||||
@@ -613,7 +614,7 @@ filter.option.threshold2 = Secondary Threshold
|
||||
filter.option.radius = Radius
|
||||
filter.option.percentile = Percentile
|
||||
|
||||
locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: @[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable)
|
||||
locales.info = Here, you can add locale bundles for specific languages to your map. In locale bundles, each property has a name and a value. These properties can be used by world processors and objectives using their names. They support text formatting (replacing placeholders with actual values).\n\n[cyan]Example property:\n[]name: [accent]timer[]\nvalue: [accent]Example timer, time left: {0}[]\n\n[cyan]Usage:\n[]Set it as objective's text: [accent]@timer\n\n[]Print it in a world processor:\n[accent]localeprint "timer"\nformat time\n[gray](where time is a separately calculated variable)
|
||||
locales.deletelocale = Are you sure you want to delete this locale bundle?
|
||||
locales.applytoall = Apply Changes To All Locales
|
||||
locales.addtoother = Add To Other Locales
|
||||
@@ -682,10 +683,11 @@ objective.commandmode.name = Command Mode
|
||||
objective.flag.name = Flag
|
||||
|
||||
marker.shapetext.name = Shape Text
|
||||
marker.minimap.name = Minimap
|
||||
marker.point.name = Point
|
||||
marker.shape.name = Shape
|
||||
marker.text.name = Text
|
||||
marker.line.name = Line
|
||||
marker.quad.name = Quad
|
||||
|
||||
marker.background = Background
|
||||
marker.outline = Outline
|
||||
@@ -773,8 +775,8 @@ sector.curlost = Sector Lost
|
||||
sector.missingresources = [scarlet]Insufficient Core Resources
|
||||
sector.attacked = Sector [accent]{0}[white] under attack!
|
||||
sector.lost = Sector [accent]{0}[white] lost!
|
||||
#note: the missing space in the line below is intentional
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture = Sector [accent]{0}[white] Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = Change Icon
|
||||
sector.noswitch.title = Unable to Switch Sectors
|
||||
sector.noswitch = You may not switch sectors while an existing sector is under attack.\n\nSector: [accent]{0}[] on [accent]{1}[]
|
||||
@@ -1564,6 +1566,7 @@ block.inverted-sorter.name = Inverted Sorter
|
||||
block.message.name = Message
|
||||
block.reinforced-message.name = Reinforced Message
|
||||
block.world-message.name = World Message
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = Illuminator
|
||||
block.overflow-gate.name = Overflow Gate
|
||||
block.underflow-gate.name = Underflow Gate
|
||||
@@ -2312,6 +2315,8 @@ lst.getblock = Get tile data at any location.
|
||||
lst.setblock = Set tile data at any location.
|
||||
lst.spawnunit = Spawn unit at a location.
|
||||
lst.applystatus = Apply or clear a status effect from a unit.
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = Spawn a wave.
|
||||
lst.explosion = Create an explosion at a location.
|
||||
lst.setrate = Set processor execution speed in instructions/tick.
|
||||
@@ -2329,6 +2334,49 @@ lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this
|
||||
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.\n[accent]null []values are ignored.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True if the client running the code is on mobile, false otherwise
|
||||
|
||||
logic.nounitbuild = [red]Unit building logic is not allowed here.
|
||||
|
||||
lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string.
|
||||
@@ -2485,3 +2533,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed color, used for line and quad markers with index zero being the first color.
|
||||
|
||||
@@ -489,6 +489,7 @@ editor.default = [lightgray]<Па змаўчанні>
|
||||
details = Падрабязнасці...
|
||||
edit = Рэдагаваць...
|
||||
variables = Пераменныя
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = Назва:
|
||||
editor.spawn = Стварыць баявую адзінку
|
||||
editor.removeunit = Выдаліць баявую адзінку
|
||||
@@ -664,10 +665,11 @@ objective.destroycore.name = Знішчыць Ядро
|
||||
objective.commandmode.name = Рэжым Загадаў
|
||||
objective.flag.name = Сцяг
|
||||
marker.shapetext.name = Форма Тэксту
|
||||
marker.minimap.name = Міні-Мапа
|
||||
marker.point.name = Point
|
||||
marker.shape.name = Форма
|
||||
marker.text.name = Тэкст
|
||||
marker.line.name = Line
|
||||
marker.quad.name = Quad
|
||||
marker.background = Задні Фон
|
||||
marker.outline = Контур
|
||||
objective.research = [accent]Даследаваць:\n[]{0}[lightgray]{1}
|
||||
@@ -751,6 +753,7 @@ sector.missingresources = [scarlet]Insufficient Core Resources
|
||||
sector.attacked = Сектар [accent]{0}[white] атакуецца!
|
||||
sector.lost = Сектар [accent]{0}[white] згублены!
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = Змяніць Іконку
|
||||
sector.noswitch.title = Немагчыма Пераключыцца на Сектар
|
||||
sector.noswitch = Вы не можаце пераключацца на сектары калі гэты сектар атакуецца.\n\nСектар: [accent]{0}[] у [accent]{1}[]
|
||||
@@ -1529,6 +1532,7 @@ block.inverted-sorter.name = Інвертаваны сартавальнік
|
||||
block.message.name = Паведамленне
|
||||
block.reinforced-message.name = Узмоцненнае Паведамленне
|
||||
block.world-message.name = Паведамленне Свету
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = Асвятляльнік
|
||||
block.overflow-gate.name = Залішнi затвор
|
||||
block.underflow-gate.name = Залішнi шлюз
|
||||
@@ -2260,6 +2264,8 @@ lst.getblock = Get tile data at any location.
|
||||
lst.setblock = Set tile data at any location.
|
||||
lst.spawnunit = Spawn unit at a location.
|
||||
lst.applystatus = Apply or clear a status effect from a uniut.
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter.
|
||||
lst.explosion = Create an explosion at a location.
|
||||
lst.setrate = Set processor execution speed in instructions/tick.
|
||||
@@ -2276,6 +2282,42 @@ lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second a
|
||||
lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
|
||||
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
logic.nounitbuild = [red]Unit building logic is not allowed here.
|
||||
lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string.
|
||||
lenum.shoot = Shoot at a position.
|
||||
@@ -2412,3 +2454,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||
|
||||
@@ -495,6 +495,7 @@ editor.default = [lightgray]<Стандартно>
|
||||
details = Детайли...
|
||||
edit = Редактирай...
|
||||
variables = Vars
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = Име:
|
||||
editor.spawn = Създай Единица
|
||||
editor.removeunit = Премахни Единица
|
||||
@@ -670,10 +671,11 @@ objective.destroycore.name = Destroy Core
|
||||
objective.commandmode.name = Command Mode
|
||||
objective.flag.name = Flag
|
||||
marker.shapetext.name = Shape Text
|
||||
marker.minimap.name = Minimap
|
||||
marker.point.name = Point
|
||||
marker.shape.name = Shape
|
||||
marker.text.name = Text
|
||||
marker.line.name = Line
|
||||
marker.quad.name = Quad
|
||||
marker.background = Background
|
||||
marker.outline = Outline
|
||||
objective.research = [accent]Research:\n[]{0}[lightgray]{1}
|
||||
@@ -758,6 +760,7 @@ sector.missingresources = [scarlet]Недостатъчни ресурси в я
|
||||
sector.attacked = Зона [accent]{0}[white] е под атака!
|
||||
sector.lost = Зона [accent]{0}[white] беше загубена!
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = Change Icon
|
||||
sector.noswitch.title = Unable to Switch Sectors
|
||||
sector.noswitch = You may not switch sectors while an existing sector is under attack.\n\nSector: [accent]{0}[] on [accent]{1}[]
|
||||
@@ -1540,6 +1543,7 @@ block.inverted-sorter.name = Обърнат сортирач
|
||||
block.message.name = Съобщение
|
||||
block.reinforced-message.name = Reinforced Message
|
||||
block.world-message.name = World Message
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = Осветител
|
||||
block.overflow-gate.name = Преливаща Порта
|
||||
block.underflow-gate.name = Обратна Преливаща Порта
|
||||
@@ -2274,6 +2278,8 @@ lst.getblock = Get tile data at any location.
|
||||
lst.setblock = Set tile data at any location.
|
||||
lst.spawnunit = Spawn unit at a location.
|
||||
lst.applystatus = Apply or clear a status effect from a uniut.
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter.
|
||||
lst.explosion = Create an explosion at a location.
|
||||
lst.setrate = Set processor execution speed in instructions/tick.
|
||||
@@ -2290,6 +2296,42 @@ lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second a
|
||||
lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
|
||||
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
|
||||
logic.nounitbuild = [red]Действия за строене на единици не са позволени тук.
|
||||
|
||||
@@ -2442,3 +2484,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||
|
||||
@@ -495,6 +495,7 @@ editor.default = [lightgray]<Per defecte>
|
||||
details = Detalls
|
||||
edit = Edita
|
||||
variables = Variables
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = Nom:
|
||||
editor.spawn = Genera una unitat
|
||||
editor.removeunit = Treu una unitat
|
||||
@@ -673,10 +674,11 @@ objective.destroycore.name = Destrueix el nucli
|
||||
objective.commandmode.name = Mode de comandament
|
||||
objective.flag.name = Bandera
|
||||
marker.shapetext.name = Forma del text
|
||||
marker.minimap.name = Minimapa
|
||||
marker.point.name = Punt
|
||||
marker.shape.name = Forma
|
||||
marker.text.name = Text
|
||||
marker.line.name = Línia
|
||||
marker.quad.name = Rectangle
|
||||
marker.background = Fons
|
||||
marker.outline = Contorn
|
||||
|
||||
@@ -761,7 +763,8 @@ sector.curlost = Sector perdut
|
||||
sector.missingresources = [scarlet]Recursos insuficients al nucli
|
||||
sector.attacked = Ataquen el sector [accent]{0}[white]!
|
||||
sector.lost = Heu perdut el sector [accent]{0}[white]!
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture = S’ha capturat el sector [accent]{0}[white]!
|
||||
sector.capture.current = Sector capturat!
|
||||
sector.changeicon = Canvia la icona
|
||||
sector.noswitch.title = Els sectors no es poden canviar.
|
||||
sector.noswitch = Potser no podeu canviar de sector perquè n’ataquen un altre.\n\nSector: [accent]{0}[] de [accent]{1}[]
|
||||
@@ -1142,7 +1145,7 @@ setting.sfxvol.name = Volums dels efectes de so
|
||||
setting.mutesound.name = Silencia el so
|
||||
setting.crashreport.name = Envia informes d’error anònims
|
||||
setting.savecreate.name = Desa automàticament la partida
|
||||
setting.steampublichost.name = Public Game Visibility
|
||||
setting.steampublichost.name = Visibilitat de la partida pública
|
||||
setting.playerlimit.name = Límit de jugadors
|
||||
setting.chatopacity.name = Opacitat del xat
|
||||
setting.lasersopacity.name = Opacitat dels làsers d’energia
|
||||
@@ -1547,6 +1550,7 @@ block.inverted-sorter.name = Classificador invers
|
||||
block.message.name = Missatge
|
||||
block.reinforced-message.name = Missatge destacat
|
||||
block.world-message.name = Missatge mundial
|
||||
block.world-switch.name = Interruptor mundial
|
||||
block.illuminator.name = Il·luminador
|
||||
block.overflow-gate.name = Porta de desbordament
|
||||
block.underflow-gate.name = Porta de subdesbordament
|
||||
@@ -1907,7 +1911,7 @@ onset.turrets = Les unitats són efectives, però les [accent]torretes[] proporc
|
||||
onset.turretammo = Subministreu [accent]munició de beril·li[] a la torreta.
|
||||
onset.walls = Els [accent]murs[] poden evitar que el dany arribi a les estructures importants.\nConstruïu alguns \uf6ee [accent]murs de beril·li[] al voltant de la torreta.
|
||||
onset.enemies = S’apropa un enemic. Prepareu la defensa.
|
||||
onset.defenses = [accent]Set up defenses:[lightgray] {0}
|
||||
onset.defenses = [accent]Establiu defenses:[lightgray] {0}
|
||||
onset.attack = L’enemic és vulnerable. Contraataqueu.
|
||||
onset.cores = Els nuclis nous es poden construir en [accent]caselles de nucli[].\nEls nuclis nous funcionen com a bases i comparteixen un inventari de recursos amb altres nuclis.\nConstruïu un \uf725 nucli.
|
||||
onset.detect = L’enemic us detectarà d’aquí 2 minuts.\nEstabliu les defenses i les explotacions mineres i de producció.
|
||||
@@ -2284,6 +2288,8 @@ lst.getblock = Obtén les dades d’un bloc en qualsevol posició.
|
||||
lst.setblock = Estableix les dades d’un bloc en qualsevol posició.
|
||||
lst.spawnunit = Fes aparèixer una unitat en una posició.
|
||||
lst.applystatus = Aplica o esborra un efecte d’estat d’una unitat.
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = Simula l’aparició d’una onada enemiga en una posició arbitrària.\nEl comptador d’onades no s’incrementarà.
|
||||
lst.explosion = Crea una explosió en una posició.
|
||||
lst.setrate = Estableix la velocitat d’execució del processador en instruccions/tic.
|
||||
@@ -2300,6 +2306,42 @@ lst.sync = Sincronitza una variable a través de la xarxa.\nS’invoca com a mol
|
||||
lst.makemarker = Crea una marca lògica al món.\nS’ha de donar un ID per a identificar-la.\nEs poden establir fins a 20.000 marcadors per món.
|
||||
lst.setmarker = Estableix una propietat per a la marca.\nL’ID que es faci servir ha de ser el mateix que el de la instrucció de crear la marca.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
|
||||
logic.nounitbuild = [red]Aquí no es permet construir blocs de tipus lògic.
|
||||
|
||||
@@ -2451,7 +2493,10 @@ lenum.build = Construeix una estructura.
|
||||
lenum.getblock = Obté un bloc i el seu tipus a les coordenades indicades.\nLa posició escollida ha d’estar a l’abast de la unitat.\nEls blocs que no són construccions tindran el tipus [accent]@solid[].
|
||||
lenum.within = Comprova si la unitat està a prop d’una posició.
|
||||
lenum.boost = Inicia/Detén el vol.
|
||||
lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fetch is set to true, tries to fetch properties from map locale bundle or game's bundle.
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.flushtext = Passa el contingut de la cua d’impressió al marcador, si es pot.\nSi s’estableix «fetch» a vertader, s’intentarà carregar les propietats de la traducció del mapa o del joc.
|
||||
lenum.texture = Nom de la textura directa de l’atles de textures del joc (amb l’estil de noms kebab-case).\nSi «printFlush» s’estableix a vertader, consumeix el contingut de la cua d’impressió com a argument de text.
|
||||
lenum.texturesize = Mida de la textura a les caselles. Un valor de zero indica que s’ha d'escalar l’amplada del marcador a la mida original de la textura.
|
||||
lenum.autoscale = Indica si cal escalar el marcador segons el nivell de zoom del jugador.
|
||||
lenum.posi = Posició indexada que es fa servir per a marcadors de línia i de rectangles on l’índex zero és la primera posició.
|
||||
lenum.uvi = Posició de la textura que va de zero a u i que es fa servir per a marcadors de tipus rectangle.
|
||||
lenum.colori = Posició indexada que es fa servir per a marcadors de línies i rectangles on l’índex zero és el primer color.
|
||||
|
||||
@@ -153,12 +153,12 @@ mod.unmetdependencies = [red]Nesplněné Dependencies
|
||||
mod.erroredcontent = [scarlet]V obsahu jsou chyby[]
|
||||
mod.circulardependencies = [red]Kruhové Dependencies
|
||||
mod.incompletedependencies = [red]Nedokončené Dependencies
|
||||
mod.requiresversion.details = Requires game version: [accent]{0}[]\nYour game is outdated. This mod requires a newer version of the game (possibly a beta/alpha release) to function.
|
||||
mod.outdatedv7.details = This mod is incompatible with the latest version of the game. The author must update it, and add [accent]minGameVersion: 136[] to its [accent]mod.json[] file.
|
||||
mod.blacklisted.details = This mod has been manually blacklisted for causing crashes or other issues with this version of the game. Do not use it.
|
||||
mod.missingdependencies.details = This mod is missing dependencies: {0}
|
||||
mod.erroredcontent.details = This game caused errors when loading. Ask the mod author to fix them.
|
||||
mod.circulardependencies.details = This mod has dependencies that depends on each other.
|
||||
mod.requiresversion.details = Vyžaduje verzi hry: [accent]{0}[]\nVaše hra je zastaralá. Tento mod vyžaduje novější verzi hry (možná beta/alfa verze) aby fungoval.
|
||||
mod.outdatedv7.details = Tento mod není kompatibilní s nejnovější verzí hry. Autor ho musí aktualizovat a přidat [accent]minGameVersion: 136[] ho do [accent]mod.json[] složky.
|
||||
mod.blacklisted.details = Tento mod byl ručně zařazen na černou listinu, protože způsobuje pády nebo jiné problémy s touto verzí hry. Nepoužívejte jej.
|
||||
mod.missingdependencies.details = Tomuto módu chybí závislosti: {0}
|
||||
mod.erroredcontent.details = Tato hra způsobovala chyby při načítání. Požádejte autora módu o jejich opravu.
|
||||
mod.circulardependencies.details = Tento mod má závislosti, které na sobě navzájem závisí.
|
||||
mod.incompletedependencies.details = This mod is unable to be loaded due to invalid or missing dependencies: {0}.
|
||||
mod.requiresversion = Requires game version: [red]{0}
|
||||
mod.errors = Při načítání obsahu hry se vyskytly problémy.
|
||||
@@ -261,13 +261,13 @@ trace.modclient = Upravený klient hry: [accent]{0}[]
|
||||
trace.times.joined = Krát Připojen: [accent]{0}
|
||||
trace.times.kicked = Krát Vyhozen: [accent]{0}
|
||||
trace.ips = IPs:
|
||||
trace.names = Names:
|
||||
trace.names = Jména:
|
||||
invalidid = Neplatná adresa IP klienta! Zašli prosím zprávu o chybě.
|
||||
player.ban = Ban
|
||||
player.kick = Kick
|
||||
player.kick = Vyhodit
|
||||
player.trace = Trace
|
||||
player.admin = Toggle Admin
|
||||
player.team = Change Team
|
||||
player.admin = Přepínání správce
|
||||
player.team = Změnit tým
|
||||
server.bans = Zákazy
|
||||
server.bans.none = Žádní hráči se zákazem nebyli nalezeni.
|
||||
server.admins = Správci
|
||||
@@ -340,13 +340,14 @@ ok = OK
|
||||
open = Otevřít
|
||||
customize = Přizpůsobit pravidla
|
||||
cancel = Zrušit
|
||||
command = Command
|
||||
command.queue = [lightgray][Queuing]
|
||||
command.mine = Mine
|
||||
command.repair = Repair
|
||||
command.rebuild = Rebuild
|
||||
command.assist = Assist Player
|
||||
command.move = Move
|
||||
command = Velet
|
||||
command.queue = Queue
|
||||
command.mine = Těžit
|
||||
command.repair = Opravovat
|
||||
command.rebuild = Přestavět
|
||||
command.assist = Asistovat hráči
|
||||
command.move = Pohyb
|
||||
|
||||
command.boost = Boost
|
||||
command.enterPayload = Enter Payload Block
|
||||
command.loadUnits = Load Units
|
||||
@@ -362,7 +363,7 @@ openlink = Otevřít odkaz
|
||||
copylink = Zkopírovat odkaz
|
||||
back = Zpět
|
||||
max = Max
|
||||
objective = Map Objective
|
||||
objective = Úkol mapy
|
||||
crash.export = Exportovat záznamy o zhroucení hry
|
||||
crash.none = Záznamy o zhroucení hry nebyly nalezeny.
|
||||
crash.exported = Záznamy o zhroucení hry byly exportovány.
|
||||
@@ -383,7 +384,7 @@ pausebuilding = [accent][[{0}][] zastaví stavění
|
||||
resumebuilding = [scarlet][[{0}][] bude pokračovat ve stavění
|
||||
enablebuilding = [scarlet][[{0}][] povolí stavení
|
||||
showui = UI je skryto.\nZmáčkni [accent][[{0}][] pro jeho zobrazení.
|
||||
commandmode.name = [accent]Command Mode
|
||||
commandmode.name = [accent]Velící zežim
|
||||
commandmode.nounits = [no units]
|
||||
wave = [accent]Vlna číslo {0}[]
|
||||
wave.cap = [accent]Vlna {0} z {1}[]
|
||||
@@ -495,6 +496,7 @@ editor.default = [lightgray]<Výchozí>[]
|
||||
details = Podrobnosti...
|
||||
edit = Upravit...
|
||||
variables = Hodnoty
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = Jméno:
|
||||
editor.spawn = Zrodit jednotku
|
||||
editor.removeunit = Odstranit jednotku
|
||||
@@ -671,10 +673,11 @@ objective.destroycore.name = Zničit Jádro
|
||||
objective.commandmode.name = Příkazovy Režim
|
||||
objective.flag.name = Vlajka
|
||||
marker.shapetext.name = Shape Text
|
||||
marker.minimap.name = Minimapa
|
||||
marker.point.name = Point
|
||||
marker.shape.name = Tvar
|
||||
marker.text.name = Text
|
||||
marker.line.name = Line
|
||||
marker.quad.name = Quad
|
||||
marker.background = Pozadí
|
||||
marker.outline = Outline
|
||||
objective.research = [accent]Research:\n[]{0}[lightgray]{1}
|
||||
@@ -704,7 +707,7 @@ bannedunits.whitelist = Banned Units As Whitelist
|
||||
bannedblocks.whitelist = Banned Blocks As Whitelist
|
||||
addall = Přidat vše
|
||||
launch.from = Vysláno z: [accent]{0}
|
||||
launch.capacity = Launching Item Capacity: [accent]{0}
|
||||
launch.capacity = Odpalovací kapacita: [accent]{0}
|
||||
launch.destination = Cíl: {0}
|
||||
configure.invalid = Hodnota musí být číslo mezi 0 a {0}.
|
||||
add = Přidat...
|
||||
@@ -734,8 +737,8 @@ sectorlist.attacked = {0} pod útokem
|
||||
sectors.unexplored = [lightgray]Neprozkoumáno
|
||||
sectors.resources = Zdroje:
|
||||
sectors.production = Výroba:
|
||||
sectors.export = Export:
|
||||
sectors.import = Import:
|
||||
sectors.export = Exportovat:
|
||||
sectors.import = Importovat:
|
||||
sectors.time = Čas:
|
||||
sectors.threat = Ohrožení:
|
||||
sectors.wave = Vlna:
|
||||
@@ -759,6 +762,7 @@ sector.missingresources = [scarlet]Nedostatečné zdroje v jádře
|
||||
sector.attacked = Sektor [accent]{0}[white] pod útokem!
|
||||
sector.lost = Sektor [accent]{0}[white] ztracen! :(
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = Změnit Ikonu
|
||||
sector.noswitch.title = Nelze Vyměnit Sektor
|
||||
sector.noswitch = Sektory nelze přepnut, pokud je stávající sektor pod útokem.\n\nSektor: [accent]{0}[] na [accent]{1}[]
|
||||
@@ -811,43 +815,43 @@ sector.windsweptIslands.description = Vzdálen od pevniny je tento řetízek ost
|
||||
sector.extractionOutpost.description = Vzdálená pevnost, postavená nepřítelem za účelem vysílání zdrojů do okolních sektorů.\n\nDoprava položek napříč sektory je nezbytná pro lapení dalších sektorů. Znič základnu. Vyzkoumej jejich Vysílací plošiny.
|
||||
sector.impact0078.description = Zde leží zbytky mezihvězdné lodi, která vstoupila do tohoto systému.\n\nZachraň z vraku vše, co se dá. Vyzkoumej nepoškozenou technologii.
|
||||
sector.planetaryTerminal.description = Konečný cíl.\n\nTato pobřežní základna obsahuje konstrukce schopné vyslat jádra na okolní planety. Je mimořádně dobře opevněna.\n\nVyrob námořní jednotky. Odstraň nepřítele tak rychle, jak umíš. Vyzkoumej vysílací konstrukci.
|
||||
sector.coastline.description = Remnants of naval unit technology have been detected at this location. Repel the enemy attacks, capture this sector, and acquire the technology.
|
||||
sector.navalFortress.description = The enemy has established a base on a remote, naturally-fortified island. Destroy this outpost. Acquire their advanced naval craft technology, and research it.
|
||||
sector.onset.name = The Onset
|
||||
sector.coastline.description = V této lokaci byly objeveny pozůstatky techniky námořních jednotek. Odražte nepřátelské útoky, dobijte tento sektor a získejte technologii.
|
||||
sector.navalFortress.description = Nepřítel si vybudoval základnu na odlehlém, přírodou opevněném ostrově. Zničte tuto základnu. Získejte jejich pokročilou technologii námořních plavidel a vyzkoumejte ji.
|
||||
sector.onset.name = Nástup
|
||||
sector.aegis.name = Aegis
|
||||
sector.lake.name = Lake
|
||||
sector.intersect.name = Intersect
|
||||
sector.lake.name = Jezero
|
||||
sector.intersect.name = Průsečík
|
||||
sector.atlas.name = Atlas
|
||||
sector.split.name = Split
|
||||
sector.basin.name = Basin
|
||||
sector.marsh.name = Marsh
|
||||
sector.peaks.name = Peaks
|
||||
sector.ravine.name = Ravine
|
||||
sector.caldera-erekir.name = Caldera
|
||||
sector.stronghold.name = Stronghold
|
||||
sector.crevice.name = Crevice
|
||||
sector.siege.name = Siege
|
||||
sector.crossroads.name = Crossroads
|
||||
sector.karst.name = Karst
|
||||
sector.origin.name = Origin
|
||||
sector.onset.description = Commence the conquest of Erekir. Gather resources, produce units, and begin researching technology.
|
||||
sector.split.name = Rozdělení
|
||||
sector.basin.name = Povodí
|
||||
sector.marsh.name = Marš
|
||||
sector.peaks.name = Vrcholy
|
||||
sector.ravine.name = Rokle
|
||||
sector.caldera-erekir.name = Kaldera
|
||||
sector.stronghold.name = Pevnost
|
||||
sector.crevice.name = Štěrbina
|
||||
sector.siege.name = Obléhání
|
||||
sector.crossroads.name = Křižovatka
|
||||
sector.karst.name = Kras
|
||||
sector.origin.name = Původ
|
||||
sector.onset.description = Zahajte dobývání Erekiru. Shromážděte zdroje, vyrobte jednotky a začněte zkoumat technologie.
|
||||
|
||||
sector.aegis.description = This sector contains deposits of tungsten.\nResearch the [accent]Impact Drill[] to mine this resource, and destroy the enemy base in the area.
|
||||
sector.lake.description = This sector's slag lake greatly limits viable units. A hover unit is the only option.\nResearch the [accent]ship fabricator[] and produce an [accent]elude[] unit as soon as possible.
|
||||
sector.intersect.description = Scans suggest that this sector will be attacked from multiple sides soon after landing.\nSet up defenses quickly and expand as soon as possible.\n[accent]Mech[] units will be required for the area's rough terrain.
|
||||
sector.atlas.description = This sector contains varied terrain and will require a variety of units to attack effectively.\nUpgraded units may also be necessary to get past some of the tougher enemy bases detected here.\nResearch the [accent]Electrolyzer[] and the [accent]Tank Refabricator[].
|
||||
sector.split.description = The minimal enemy presence in this sector makes it perfect for testing new transport tech.
|
||||
sector.basin.description = Large enemy presence detected in this sector.\nBuild units quickly and capture enemy cores to gain a foothold.
|
||||
sector.marsh.description = This sector has an abundance of arkycite, but has limited vents.\nBuild [accent]Chemical Combustion Chambers[] to generate power.
|
||||
sector.peaks.description = The mountainous terrain in this sector make most units useless. Flying units will be required.\nBe aware of enemy anti-air installations. It may be possible to disable some of these installations by targeting their supporting buildings.
|
||||
sector.ravine.description = No enemy cores detected in the sector, although it's an important transportation route for the enemy. Expect variety of enemy forces.\nProduce [accent]surge alloy[]. Construct [accent]Afflict[] turrets.
|
||||
sector.caldera-erekir.description = The resources detected in this sector are scattered across several islands.\nResearch and deploy drone-based transportation.
|
||||
sector.stronghold.description = The large enemy encampment in this sector guards significant deposits of [accent]thorium[].\nUse it to develop higher tier units and turrets.
|
||||
sector.crevice.description = The enemy will send fierce attack forces to take out your base in this sector.\nDeveloping [accent]carbide[] and the [accent]Pyrolysis Generator[] may be imperative for survival.
|
||||
sector.siege.description = This sector features two parallel canyons that will force a two-pronged attack.\nResearch [accent]cyanogen[] to gain the capability to create even stronger tank units.\nCaution: enemy long-range missiles have been detected. The missiles may be shot down before impact.
|
||||
sector.crossroads.description = The enemy bases in this sector have been established in varying terrain. Research different units to adapt.\nAdditionally, some bases are protected by shields. Figure out how they are powered.
|
||||
sector.karst.description = This sector is rich in resources, but will be attacked by the enemy once a new core lands.\nTake advantage of the resources and research [accent]phase fabric[].
|
||||
sector.origin.description = The final sector with a significant enemy presence.\nNo probable research opportunities remain - focus solely on destroying all enemy cores.
|
||||
sector.aegis.description = Tento sektor obsahuje ložiska wolframu.\nVyzkoumej [accent]Nárazový vrták[] k vytěžení této suroviny, a znič nepřátelskou základnu.
|
||||
sector.lake.description = Struskové jezero v tomto sektoru značně omezuje použitelné jednotky. Jedinou možností je vznášecí jednotka.\nVyzkoumej [accent]továrna na výrobu lodí[] a vyrob [accent]elude[] jednotku co nejdříve
|
||||
sector.intersect.description = Podle průzkumů bude tento sektor brzy po přistání napaden z více stran.\nRychle vytvořte obranu a co nejdříve expandujte.\n[accent]Mech[] jednotky budou zapotřebí pro překročení teréu v oblasti.
|
||||
sector.atlas.description = Tento sektor obsahuje rozmanitý terén a pro efektivní útok bude vyžadovat různé jednotky.\nPro překonání některých těžších nepřátelských základen zde mohou být nutné i vylepšené jednotky.\nVyzkoumej [accent]Electrolyzér[] a [accent]Přestavovač tanků[].
|
||||
sector.split.description = Minimální přítomnost nepřátel v tomto sektoru je ideální pro testování nových dopravních technologií.
|
||||
sector.basin.description = V tomto sektoru byla zjištěna velká přítomnost nepřátel.\nRychle postavte jednotky a získejte nepřátelská jádra, abyste se prosadili.
|
||||
sector.marsh.description = Tento sektor má hojnost arkycitu, ale má omezené průduchy.\nPostav [accent]Chemické spalovací komory[] k výrobě energie.
|
||||
sector.peaks.description = Hornatý terén v tomto sektoru činí většinu jednotek nepoužitelnými. Bude zapotřebí létajících jednotek.\nDejte si pozor na nepřátelská protiletecká zařízení. Některá z těchto zařízení je možné vyřadit zaměřením jejich podpůrných budov.
|
||||
sector.ravine.description = V sektoru nebyla zjištěna žádná nepřátelská jádra, ačkoli se jedná o důležitou dopravní trasu pro nepřítele. Očekávejte rozmanitost nepřátelských sil.\nVyrob [accent]rázová slitina[]. Postav [accent]Aflict[] věže.
|
||||
sector.caldera-erekir.description = Zdroje zjištěné v tomto sektoru jsou rozptýleny na několika ostrovech. \nVyzkoumejte a nasaďte dopravu pomocí dronů.
|
||||
sector.stronghold.description = Rozsáhlé nepřátelské ležení v tomto sektoru střeží významná ložiska [accent]thoria[].\nPoužijte ho na vývoj jednotek a věží vyšší úrovně.
|
||||
sector.crevice.description = Nepřítel vyšle ostré útočné síly, aby zničily vaši základnu v tomto sektoru.\nVývoj [accent]karbid[] a [accent]Pyrolytický generátor[] může být nezbytný pro přežití.
|
||||
sector.siege.description = V tomto sektoru se nacházejí dva paralelní kaňony, které si vynutí útok dvěma směry.\nVyzkoumej [accent]kyan[] pro získání schopnosti vytvářet ještě silnější tankové jednotky.\nPozor: byly detekovány nepřátelské rakety dlouhého doletu. Rakety mohou být sestřeleny před dopadem.
|
||||
sector.crossroads.description = Nepřátelské základny v tomto sektoru jsou rozmístěny v různém terénu. Výzkumem různých jednotek se jim přizpůsobíte.\nNěkteré základny jsou navíc chráněny štíty. Zjistěte, jak jsou napájeny.
|
||||
sector.karst.description = Tento sektor je bohatý na zdroje, ale jakmile se zde objeví nové jádro, bude napaden nepřítelem.\nVyužijte zdroje a vyzkoumej [accent]fázová tkanina[].
|
||||
sector.origin.description = Poslední sektor s výrazným výskytem nepřátel.\nŽádné pravděpodobné možnosti výzkumu nezbývají - soustřeďte se výhradně na zničení všech nepřátelských jader.
|
||||
|
||||
status.burning.name = Hořící
|
||||
status.freezing.name = Mrazící
|
||||
@@ -1543,6 +1547,7 @@ block.inverted-sorter.name = Obrácená třídička
|
||||
block.message.name = Zpráva
|
||||
block.reinforced-message.name = Posílená Zpráva
|
||||
block.world-message.name = Světová Zpráva
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = Osvětlovač
|
||||
block.overflow-gate.name = Brána s přepadem
|
||||
block.underflow-gate.name = Brána s podtokem
|
||||
@@ -2278,6 +2283,8 @@ lst.getblock = Get tile data at any location.
|
||||
lst.setblock = Set tile data at any location.
|
||||
lst.spawnunit = Spawn unit at a location.
|
||||
lst.applystatus = Apply or clear a status effect from a uniut.
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter.
|
||||
lst.explosion = Create an explosion at a location.
|
||||
lst.setrate = Set processor execution speed in instructions/tick.
|
||||
@@ -2294,6 +2301,42 @@ lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second a
|
||||
lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
|
||||
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
|
||||
logic.nounitbuild = [red]Stavba budov pomoci jednotek kontrolované procesorem neni povolené.
|
||||
|
||||
@@ -2449,3 +2492,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||
|
||||
@@ -490,6 +490,7 @@ editor.default = [lightgray]<standard>
|
||||
details = Detaljer...
|
||||
edit = Rediger...
|
||||
variables = Vars
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = Navn:
|
||||
editor.spawn = Påkald enhed
|
||||
editor.removeunit = Fjern enhed
|
||||
@@ -665,10 +666,11 @@ objective.destroycore.name = Destroy Core
|
||||
objective.commandmode.name = Command Mode
|
||||
objective.flag.name = Flag
|
||||
marker.shapetext.name = Shape Text
|
||||
marker.minimap.name = Minimap
|
||||
marker.point.name = Point
|
||||
marker.shape.name = Shape
|
||||
marker.text.name = Text
|
||||
marker.line.name = Line
|
||||
marker.quad.name = Quad
|
||||
marker.background = Background
|
||||
marker.outline = Outline
|
||||
objective.research = [accent]Research:\n[]{0}[lightgray]{1}
|
||||
@@ -752,6 +754,7 @@ sector.missingresources = [scarlet]Ikke nok resurser i kernen.
|
||||
sector.attacked = Sector [accent]{0}[white] under attack!
|
||||
sector.lost = Sector [accent]{0}[white] lost!
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = Change Icon
|
||||
sector.noswitch.title = Unable to Switch Sectors
|
||||
sector.noswitch = You may not switch sectors while an existing sector is under attack.\n\nSector: [accent]{0}[] on [accent]{1}[]
|
||||
@@ -1531,6 +1534,7 @@ block.inverted-sorter.name = Omvendt Filter
|
||||
block.message.name = Besked
|
||||
block.reinforced-message.name = Reinforced Message
|
||||
block.world-message.name = World Message
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = Lyskilde
|
||||
block.overflow-gate.name = Overflods-låge
|
||||
block.underflow-gate.name = Underflods-låge
|
||||
@@ -2260,6 +2264,8 @@ lst.getblock = Get tile data at any location.
|
||||
lst.setblock = Set tile data at any location.
|
||||
lst.spawnunit = Spawn unit at a location.
|
||||
lst.applystatus = Apply or clear a status effect from a uniut.
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter.
|
||||
lst.explosion = Create an explosion at a location.
|
||||
lst.setrate = Set processor execution speed in instructions/tick.
|
||||
@@ -2276,6 +2282,42 @@ lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second a
|
||||
lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
|
||||
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
logic.nounitbuild = [red]Unit building logic is not allowed here.
|
||||
lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string.
|
||||
lenum.shoot = Shoot at a position.
|
||||
@@ -2412,3 +2454,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||
|
||||
@@ -498,6 +498,7 @@ editor.default = [lightgray]<Standard>
|
||||
details = Details
|
||||
edit = Bearbeiten
|
||||
variables = Variablen
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = Name:
|
||||
editor.spawn = Spawnbereich
|
||||
editor.removeunit = Bereich entfernen
|
||||
@@ -678,10 +679,11 @@ objective.commandmode.name = Steuerungsmodus
|
||||
objective.flag.name = Flag
|
||||
|
||||
marker.shapetext.name = Geformter Text
|
||||
marker.minimap.name = Minimap
|
||||
marker.point.name = Point
|
||||
marker.shape.name = Form
|
||||
marker.text.name = Text
|
||||
marker.line.name = Line
|
||||
marker.quad.name = Quad
|
||||
|
||||
marker.background = Hintergrund
|
||||
marker.outline = Umriss
|
||||
@@ -770,6 +772,7 @@ sector.missingresources = [scarlet]Fehlende Kernressourcen
|
||||
sector.attacked = Sektor [accent]{0}[white] wird angegriffen!
|
||||
sector.lost = Sektor [accent]{0}[white] verloren!
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = Bild ändern
|
||||
sector.noswitch.title = Kann Sektoren nicht wechseln
|
||||
sector.noswitch = Du kannst nicht zwischen Sektoren wechseln, wenn ein anderer angegriffen wird.\n\nSektor: [accent]{0}[] auf [accent]{1}[]
|
||||
@@ -1557,6 +1560,7 @@ block.inverted-sorter.name = Invertierter Sortierer
|
||||
block.message.name = Nachricht
|
||||
block.reinforced-message.name = Verstärkte Nachricht
|
||||
block.world-message.name = Weltnachricht
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = Illuminierer
|
||||
block.overflow-gate.name = Überlauftor
|
||||
block.underflow-gate.name = Unterlauftor
|
||||
@@ -2309,6 +2313,8 @@ lst.getblock = Lese Tile-Daten von jedem Standort.
|
||||
lst.setblock = Setze Tile-Daten an jedem Standort.
|
||||
lst.spawnunit = Einheit an einem Standort erstellen.
|
||||
lst.applystatus = Füge einer Einheit einen Effekt hinzu oder entferne ihn.
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = Schickt die nächste Welle.
|
||||
lst.explosion = Erstellt an einer beliebigen Stelle eine Explosion.
|
||||
lst.setrate = Setzt die Ausführungsgeschwindigkeit von Prozessoren in Anweisungen/tick.
|
||||
@@ -2325,6 +2331,42 @@ lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second a
|
||||
lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
|
||||
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
|
||||
logic.nounitbuild = [red]Logik, die Blöcke baut, ist hier nicht erlaubt.
|
||||
|
||||
@@ -2481,3 +2523,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||
|
||||
@@ -495,6 +495,7 @@ editor.default = [lightgray]<Por defecto>
|
||||
details = Detalles...
|
||||
edit = Editar...
|
||||
variables = Variables
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = Nombre:
|
||||
editor.spawn = Generar unidad
|
||||
editor.removeunit = Eliminar unidad
|
||||
@@ -675,10 +676,11 @@ objective.commandmode.name = Modo comando
|
||||
objective.flag.name = Bandera
|
||||
|
||||
marker.shapetext.name = Forma del texto
|
||||
marker.minimap.name = Minimapa
|
||||
marker.point.name = Point
|
||||
marker.shape.name = Forma
|
||||
marker.text.name = Texto
|
||||
marker.line.name = Line
|
||||
marker.quad.name = Quad
|
||||
|
||||
marker.background = Fondo
|
||||
marker.outline = Bordes
|
||||
@@ -766,6 +768,7 @@ sector.missingresources = [scarlet]Recursos insuficientes en el núcleo
|
||||
sector.attacked = ¡Sector [accent]{0}[white] bajo ataque!
|
||||
sector.lost = ¡Sector [accent]{0}[white] perdido!
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = Cambiar icono
|
||||
sector.noswitch.title = No se pueden cambiar los sectores
|
||||
sector.noswitch = Tal vez no puedas cambiar de sector mientras se encuentre bajo ataque.\n\nSector: [accent]{0}[] en [accent]{1}[]
|
||||
@@ -1553,6 +1556,7 @@ block.inverted-sorter.name = Clasificador invertido
|
||||
block.message.name = Mensaje
|
||||
block.reinforced-message.name = Mensaje reforzado
|
||||
block.world-message.name = Mensaje estático
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = Iluminador
|
||||
block.overflow-gate.name = Compuerta de desborde
|
||||
block.underflow-gate.name = Compuerta de subdesbordamiento
|
||||
@@ -2302,6 +2306,8 @@ lst.getblock = Obtiene los datos de un bloque en cualquier lugar.
|
||||
lst.setblock = Cambia los datos de un bloque en cualquier lugar.
|
||||
lst.spawnunit = Crea una unidad en una localización.
|
||||
lst.applystatus = Aplica o elimina un efecto de alteración de estado a una unidad.
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = Simula la aparición de una oleada de enemigos en una localización arbitraria.\nNo incrementará el contador de oleadas.
|
||||
lst.explosion = Crea una explosión en una localización.
|
||||
lst.setrate = Establece la velocidad de ejecución de los procesadores lógicos en formato instrucción/tick.
|
||||
@@ -2318,6 +2324,42 @@ lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second a
|
||||
lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
|
||||
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
|
||||
logic.nounitbuild = [red]No se permite construir bloques de categoría lógica.
|
||||
|
||||
@@ -2474,3 +2516,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||
|
||||
@@ -490,6 +490,7 @@ editor.default = [lightgray]<Vaikimisi>
|
||||
details = Üksikasjad...
|
||||
edit = Muuda...
|
||||
variables = Vars
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = Nimi:
|
||||
editor.spawn = Tekita väeüksus
|
||||
editor.removeunit = Eemalda väeüksus
|
||||
@@ -665,10 +666,11 @@ objective.destroycore.name = Destroy Core
|
||||
objective.commandmode.name = Command Mode
|
||||
objective.flag.name = Flag
|
||||
marker.shapetext.name = Shape Text
|
||||
marker.minimap.name = Minimap
|
||||
marker.point.name = Point
|
||||
marker.shape.name = Shape
|
||||
marker.text.name = Text
|
||||
marker.line.name = Line
|
||||
marker.quad.name = Quad
|
||||
marker.background = Background
|
||||
marker.outline = Outline
|
||||
objective.research = [accent]Research:\n[]{0}[lightgray]{1}
|
||||
@@ -752,6 +754,7 @@ sector.missingresources = [scarlet]Insufficient Core Resources
|
||||
sector.attacked = Sector [accent]{0}[white] under attack!
|
||||
sector.lost = Sector [accent]{0}[white] lost!
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = Change Icon
|
||||
sector.noswitch.title = Unable to Switch Sectors
|
||||
sector.noswitch = You may not switch sectors while an existing sector is under attack.\n\nSector: [accent]{0}[] on [accent]{1}[]
|
||||
@@ -1531,6 +1534,7 @@ block.inverted-sorter.name = Inverted Sorter
|
||||
block.message.name = Sõnum
|
||||
block.reinforced-message.name = Reinforced Message
|
||||
block.world-message.name = World Message
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = Illuminator
|
||||
block.overflow-gate.name = Ülevooluvärav
|
||||
block.underflow-gate.name = Underflow Gate
|
||||
@@ -2262,6 +2266,8 @@ lst.getblock = Get tile data at any location.
|
||||
lst.setblock = Set tile data at any location.
|
||||
lst.spawnunit = Spawn unit at a location.
|
||||
lst.applystatus = Apply or clear a status effect from a uniut.
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter.
|
||||
lst.explosion = Create an explosion at a location.
|
||||
lst.setrate = Set processor execution speed in instructions/tick.
|
||||
@@ -2278,6 +2284,42 @@ lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second a
|
||||
lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
|
||||
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
logic.nounitbuild = [red]Unit building logic is not allowed here.
|
||||
lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string.
|
||||
lenum.shoot = Shoot at a position.
|
||||
@@ -2414,3 +2456,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||
|
||||
@@ -492,6 +492,7 @@ editor.default = [lightgray]<Lehenetsia>
|
||||
details = Xehetasunak...
|
||||
edit = Editatu...
|
||||
variables = Vars
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = Izena:
|
||||
editor.spawn = Sortu unitatea
|
||||
editor.removeunit = Kendu unitatea
|
||||
@@ -667,10 +668,11 @@ objective.destroycore.name = Destroy Core
|
||||
objective.commandmode.name = Command Mode
|
||||
objective.flag.name = Flag
|
||||
marker.shapetext.name = Shape Text
|
||||
marker.minimap.name = Minimap
|
||||
marker.point.name = Point
|
||||
marker.shape.name = Shape
|
||||
marker.text.name = Text
|
||||
marker.line.name = Line
|
||||
marker.quad.name = Quad
|
||||
marker.background = Background
|
||||
marker.outline = Outline
|
||||
objective.research = [accent]Research:\n[]{0}[lightgray]{1}
|
||||
@@ -754,6 +756,7 @@ sector.missingresources = [scarlet]Insufficient Core Resources
|
||||
sector.attacked = Sector [accent]{0}[white] under attack!
|
||||
sector.lost = Sector [accent]{0}[white] lost!
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = Change Icon
|
||||
sector.noswitch.title = Unable to Switch Sectors
|
||||
sector.noswitch = You may not switch sectors while an existing sector is under attack.\n\nSector: [accent]{0}[] on [accent]{1}[]
|
||||
@@ -1533,6 +1536,7 @@ block.inverted-sorter.name = Alderantzizko antolatzailea
|
||||
block.message.name = Mezua
|
||||
block.reinforced-message.name = Reinforced Message
|
||||
block.world-message.name = World Message
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = Illuminator
|
||||
block.overflow-gate.name = Gainezkatze atea
|
||||
block.underflow-gate.name = Underflow Gate
|
||||
@@ -2264,6 +2268,8 @@ lst.getblock = Get tile data at any location.
|
||||
lst.setblock = Set tile data at any location.
|
||||
lst.spawnunit = Spawn unit at a location.
|
||||
lst.applystatus = Apply or clear a status effect from a uniut.
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter.
|
||||
lst.explosion = Create an explosion at a location.
|
||||
lst.setrate = Set processor execution speed in instructions/tick.
|
||||
@@ -2280,6 +2286,42 @@ lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second a
|
||||
lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
|
||||
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
logic.nounitbuild = [red]Unit building logic is not allowed here.
|
||||
lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string.
|
||||
lenum.shoot = Shoot at a position.
|
||||
@@ -2416,3 +2458,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||
|
||||
@@ -490,6 +490,7 @@ editor.default = [lightgray]<Oletus>
|
||||
details = Yksityiskohdat...
|
||||
edit = Muokkaa...
|
||||
variables = Muuttujat
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = Nimi:
|
||||
editor.spawn = Luo yksikkö
|
||||
editor.removeunit = Poista yksikkö
|
||||
@@ -665,10 +666,11 @@ objective.destroycore.name = Destroy Core
|
||||
objective.commandmode.name = Command Mode
|
||||
objective.flag.name = Flag
|
||||
marker.shapetext.name = Shape Text
|
||||
marker.minimap.name = Pikkukartta
|
||||
marker.point.name = Point
|
||||
marker.shape.name = Shape
|
||||
marker.text.name = Teksti
|
||||
marker.line.name = Line
|
||||
marker.quad.name = Quad
|
||||
marker.background = Background
|
||||
marker.outline = Outline
|
||||
objective.research = [accent]Tutki:\n[]{0}[lightgray]{1}
|
||||
@@ -752,6 +754,7 @@ sector.missingresources = [scarlet]Sinulla ei ole tarpeeksi resursseja.
|
||||
sector.attacked = Sektori [accent]{0}[white] on hyökkäyksen kohteena!
|
||||
sector.lost = Sektori [accent]{0}[white] menetetty!
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = Vaihda kuvaketta
|
||||
sector.noswitch.title = Sektoria ei voida vaihtaa
|
||||
sector.noswitch = Et voi vaihtaa sektoria, kun olemassaoleva sektori on hyökkäyksen kohteena.\n\nSektori: [accent]{0}[] planeetalla [accent]{1}[]
|
||||
@@ -1532,6 +1535,7 @@ block.inverted-sorter.name = Käänteinen Lajittelija
|
||||
block.message.name = Viesti
|
||||
block.reinforced-message.name = Reinforced Message
|
||||
block.world-message.name = World Message
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = Lamppu
|
||||
block.overflow-gate.name = Ylivuotoportti
|
||||
block.underflow-gate.name = Alivuotoportti
|
||||
@@ -2265,6 +2269,8 @@ lst.getblock = Selvitä laattadata missä tahansa sijainnissa.
|
||||
lst.setblock = Aseta laattadata missä tahansa sijainnissa.
|
||||
lst.spawnunit = Luo joukko tietyssä sijainnissa.
|
||||
lst.applystatus = Lisää tai poista statusefekti yksiköltä.
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = Simuloi tason syntymistä mielivaltaisessa sijainnissa.\nEi vaikuta tasolaskuriin.
|
||||
lst.explosion = Luo räjähdys tietyssä sijainnissa.
|
||||
lst.setrate = Aseta prosessorin suoritusnopeus ohjeessa/sekunti.
|
||||
@@ -2281,6 +2287,42 @@ lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second a
|
||||
lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
|
||||
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
logic.nounitbuild = [red]Logiikan käyttö ei täällä ole sallittu yksikköjen tuottamisessa.
|
||||
lenum.type = Rakennuksen/Yksikön tyyppi.\nEsim. jokaisesta reitittimestä tämä palauttaa [accent]@router[].\nEi ole merkkijono.
|
||||
lenum.shoot = Ammu tiettyä sijaintia.
|
||||
@@ -2417,3 +2459,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||
|
||||
@@ -490,6 +490,7 @@ editor.default = [lightgray]<Default>
|
||||
details = Details...
|
||||
edit = Edit...
|
||||
variables = Vars
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = Name:
|
||||
editor.spawn = Spawn Unit
|
||||
editor.removeunit = Remove Unit
|
||||
@@ -665,10 +666,11 @@ objective.destroycore.name = Destroy Core
|
||||
objective.commandmode.name = Command Mode
|
||||
objective.flag.name = Flag
|
||||
marker.shapetext.name = Shape Text
|
||||
marker.minimap.name = Minimap
|
||||
marker.point.name = Point
|
||||
marker.shape.name = Shape
|
||||
marker.text.name = Text
|
||||
marker.line.name = Line
|
||||
marker.quad.name = Quad
|
||||
marker.background = Background
|
||||
marker.outline = Outline
|
||||
objective.research = [accent]Research:\n[]{0}[lightgray]{1}
|
||||
@@ -752,6 +754,7 @@ sector.missingresources = [scarlet]Kulang ang mga Core Resources
|
||||
sector.attacked = Ang sector [accent]{0}[white] ay inaatake!
|
||||
sector.lost = Ang sector [accent]{0}[white] ay nawala!
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = Change Icon
|
||||
sector.noswitch.title = Unable to Switch Sectors
|
||||
sector.noswitch = You may not switch sectors while an existing sector is under attack.\n\nSector: [accent]{0}[] on [accent]{1}[]
|
||||
@@ -1530,6 +1533,7 @@ block.inverted-sorter.name = Inverted Sorter
|
||||
block.message.name = Message
|
||||
block.reinforced-message.name = Reinforced Message
|
||||
block.world-message.name = World Message
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = Illuminator
|
||||
block.overflow-gate.name = Overflow Gate
|
||||
block.underflow-gate.name = Underflow Gate
|
||||
@@ -2261,6 +2265,8 @@ lst.getblock = Get tile data at any location.
|
||||
lst.setblock = Set tile data at any location.
|
||||
lst.spawnunit = Spawn unit at a location.
|
||||
lst.applystatus = Apply or clear a status effect from a uniut.
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter.
|
||||
lst.explosion = Create an explosion at a location.
|
||||
lst.setrate = Set processor execution speed in instructions/tick.
|
||||
@@ -2277,6 +2283,42 @@ lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second a
|
||||
lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
|
||||
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
logic.nounitbuild = [red]Unit building logic is not allowed here.
|
||||
lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string.
|
||||
lenum.shoot = Shoot at a position.
|
||||
@@ -2413,3 +2455,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||
|
||||
@@ -501,6 +501,7 @@ editor.default = [lightgray]<par défaut>
|
||||
details = Détails...
|
||||
edit = Modifier...
|
||||
variables = Variables
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = Nom :
|
||||
editor.spawn = Ajouter une unité
|
||||
editor.removeunit = Retirer l'unité
|
||||
@@ -681,10 +682,11 @@ objective.commandmode.name = Mode « Commande »
|
||||
objective.flag.name = Drapeau
|
||||
|
||||
marker.shapetext.name = Forme de Texte
|
||||
marker.minimap.name = Minicarte
|
||||
marker.point.name = Point
|
||||
marker.shape.name = Forme
|
||||
marker.text.name = Texte
|
||||
marker.line.name = Ligne
|
||||
marker.quad.name = Quad
|
||||
|
||||
marker.background = Fond
|
||||
marker.outline = Contour
|
||||
@@ -773,6 +775,7 @@ sector.missingresources = [scarlet]Ressources du Noyau insuffisantes !
|
||||
sector.attacked = Secteur [accent]{0}[white] attaqué !
|
||||
sector.lost = Secteur [accent]{0}[white] perdu !
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = Changer l'Icône
|
||||
sector.noswitch.title = Impossible de changer de Secteur
|
||||
sector.noswitch = Vous ne pouvez pas changer de secteur pendant qu’un autre est attaqué.\n\nSecteur: [accent]{0}[] sur [accent]{1}[]
|
||||
@@ -1562,6 +1565,7 @@ block.inverted-sorter.name = Trieur Inversé
|
||||
block.message.name = Bloc de Message
|
||||
block.reinforced-message.name = Bloc de Message Renforcé
|
||||
block.world-message.name = Bloc de Message Global
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = Illuminateur
|
||||
block.overflow-gate.name = Barrière de Débordement
|
||||
block.underflow-gate.name = Barrière de Refoulement
|
||||
@@ -2310,6 +2314,8 @@ lst.getblock = Obtient les données d'une tuile à n'importe quel emplacement.
|
||||
lst.setblock = Définit les données d'une tuile à n'importe quel emplacement.
|
||||
lst.spawnunit = Fait apparaître une unité à un emplacement.
|
||||
lst.applystatus = Ajoute ou enlève un effet de statut d'une unité.
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = Simule un déclenchement de vague à n'importe quel emplacement.\nCela n'incrémente pas le compteur de vaugues.
|
||||
lst.explosion = Crée une explosion à un emplacement.
|
||||
lst.setrate = Définit la vitesse d'exécution d'un processeur en instructions/tick.
|
||||
@@ -2326,6 +2332,42 @@ lst.sync = Synchronise une variable dans le réseau.\nLimité à 20 fois par sec
|
||||
lst.makemarker = Crée un marqueur dans le monde.\nUn ID pour identifier le marqueur doit être donné.\nLes marqueurs sont limités à 20,000 par monde.
|
||||
lst.setmarker = Change une propriété d'un marqueur.\nL'ID utilisé doit être le même que celui de l'instruction "Make Marker".
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
|
||||
logic.nounitbuild = [red]Les unités contrôlées par des processeurs ne peuvent pas construire ici.
|
||||
|
||||
@@ -2482,3 +2524,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -495,6 +495,7 @@ editor.default = [lightgray]<Standar>
|
||||
details = Detail...
|
||||
edit = Sunting...
|
||||
variables = Vars
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = Nama:
|
||||
editor.spawn = Munculkan Unit
|
||||
editor.removeunit = Hapus Unit
|
||||
@@ -675,10 +676,11 @@ objective.commandmode.name = Mode Perintah
|
||||
objective.flag.name = Bendera
|
||||
|
||||
marker.shapetext.name = Teks Berbentuk
|
||||
marker.minimap.name = Peta Kecil
|
||||
marker.point.name = Point
|
||||
marker.shape.name = Bentuk
|
||||
marker.text.name = Teks
|
||||
marker.line.name = Line
|
||||
marker.quad.name = Quad
|
||||
|
||||
marker.background = Latar Belakang
|
||||
marker.outline = Garis Luar
|
||||
@@ -766,6 +768,7 @@ sector.missingresources = [scarlet]Sumber Daya Inti Tidak Cukup
|
||||
sector.attacked = Sektor [accent]{0}[white] sedang diserang!
|
||||
sector.lost = Sektor [accent]{0}[white] telah dihancurkan!
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = Ubah Ikon
|
||||
sector.noswitch.title = Tidak Dapat beralih Sektor
|
||||
sector.noswitch = Andak tidak boleh berpindah sektor jika salah satu sektor terkena serangan.\nSektor: [accent]{0}[] di [accent]{1}[]
|
||||
@@ -1553,6 +1556,7 @@ block.inverted-sorter.name = Penyortir Terbalik
|
||||
block.message.name = Pesan
|
||||
block.reinforced-message.name = Reinforced Message
|
||||
block.world-message.name = World Message
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = Lampu
|
||||
block.overflow-gate.name = Gerbang Luap
|
||||
block.underflow-gate.name = Gerbang Luap Terbalik
|
||||
@@ -2300,6 +2304,8 @@ lst.getblock = Mendapatkan data petak di lokasi manapun.
|
||||
lst.setblock = Menentukan data petak di lokasi manapun.
|
||||
lst.spawnunit = Munculkan unit pada tempat yang ditentukan.
|
||||
lst.applystatus = Menerapkan atau menghapus status efek dari sebuah unit.
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = Simulasikan adanya gelombang pada lokasi acak.\nTidak akan ditambahkan pada jumlah gelombang keseluruhan.
|
||||
lst.explosion = Membuat sebuah ledakan pada lokasi yang ditentukan.
|
||||
lst.setrate = Menentukan kecepatan eksekusi prosesor dalam instruksi per tick.
|
||||
@@ -2316,6 +2322,42 @@ lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second a
|
||||
lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
|
||||
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
|
||||
logic.nounitbuild = [red]Logika unit membangun tidak diperbolehkan di sini.
|
||||
|
||||
@@ -2472,3 +2514,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||
|
||||
@@ -493,6 +493,7 @@ editor.default = [lightgray]<Predefinito>
|
||||
details = Dettagli...
|
||||
edit = Modifica...
|
||||
variables = Vars
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = Nome:
|
||||
editor.spawn = Piazza un'Unità
|
||||
editor.removeunit = Rimuovi un'Unità
|
||||
@@ -668,10 +669,11 @@ objective.destroycore.name = Distruggi nuclei
|
||||
objective.commandmode.name = Modalità comando
|
||||
objective.flag.name = Flag
|
||||
marker.shapetext.name = Shape Text
|
||||
marker.minimap.name = Minimappa
|
||||
marker.point.name = Point
|
||||
marker.shape.name = Forma
|
||||
marker.text.name = Testo
|
||||
marker.line.name = Line
|
||||
marker.quad.name = Quad
|
||||
marker.background = Sfondo
|
||||
marker.outline = Outline
|
||||
objective.research = [accent]Ricerca:\n[]{0}[lightgray]{1}
|
||||
@@ -756,6 +758,7 @@ sector.missingresources = [scarlet]Risorse del Nucleo Insufficienti
|
||||
sector.attacked = Settore [accent]{0}[white] sotto attacco!
|
||||
sector.lost = Settore [accent]{0}[white] perso!
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = Cambia icona
|
||||
sector.noswitch.title = Impossibile cambiare settore
|
||||
sector.noswitch = Non puoi cambiare settore mentre sei sotto attacco.\n\nSectore: [accent]{0}[] on [accent]{1}[]
|
||||
@@ -1541,6 +1544,7 @@ block.inverted-sorter.name = Filtro Inverso
|
||||
block.message.name = Messaggio
|
||||
block.reinforced-message.name = Reinforced Message
|
||||
block.world-message.name = World Message
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = Lanterna
|
||||
block.overflow-gate.name = Separatore per Eccesso
|
||||
block.underflow-gate.name = Separatore per Eccesso Inverso
|
||||
@@ -2274,6 +2278,8 @@ lst.getblock = Get tile data at any location.
|
||||
lst.setblock = Set tile data at any location.
|
||||
lst.spawnunit = Spawn unit at a location.
|
||||
lst.applystatus = Apply or clear a status effect from a uniut.
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter.
|
||||
lst.explosion = Create an explosion at a location.
|
||||
lst.setrate = Set processor execution speed in instructions/tick.
|
||||
@@ -2290,6 +2296,42 @@ lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second a
|
||||
lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
|
||||
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
logic.nounitbuild = [red]Unit building logic is not allowed here.
|
||||
lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string.
|
||||
lenum.shoot = Shoot at a position.
|
||||
@@ -2426,3 +2468,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||
|
||||
@@ -495,6 +495,7 @@ editor.default = [lightgray]<デフォルト>
|
||||
details = 詳細...
|
||||
edit = 編集...
|
||||
variables = 変数
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = 名前:
|
||||
editor.spawn = ユニットを出す
|
||||
editor.removeunit = ユニットを消す
|
||||
@@ -672,10 +673,11 @@ objective.destroycore.name = コアを破壊する
|
||||
objective.commandmode.name = コマンドモード
|
||||
objective.flag.name = フラグ
|
||||
marker.shapetext.name = テキストの形
|
||||
marker.minimap.name = ミニマップ
|
||||
marker.point.name = Point
|
||||
marker.shape.name = 図形
|
||||
marker.text.name = 文章
|
||||
marker.line.name = Line
|
||||
marker.quad.name = Quad
|
||||
marker.background = 背景
|
||||
marker.outline = 輪郭
|
||||
objective.research = [accent]Research:\n[]{0}[lightgray]{1}
|
||||
@@ -760,6 +762,7 @@ sector.missingresources = [scarlet]資源が足りません
|
||||
sector.attacked = セクター [accent]{0}[white] が攻撃を受けています!
|
||||
sector.lost = セクター [accent]{0}[white] 喪失!
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = アイコンを変更
|
||||
sector.noswitch.title = セクターを切り替えることができません
|
||||
sector.noswitch = 既存のセクターが攻撃を受けている間は、セクターを切り替えることはできません。\n\nセクター: [accent]{0}[] on [accent]{1}[]
|
||||
@@ -1544,6 +1547,7 @@ block.inverted-sorter.name = 反転ソーター
|
||||
block.message.name = メッセージブロック
|
||||
block.reinforced-message.name = 強化されたメッセージブロック
|
||||
block.world-message.name = ワールドメッセージブロック
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = イルミネーター
|
||||
block.overflow-gate.name = オーバーフローゲート
|
||||
block.underflow-gate.name = アンダーフローゲート
|
||||
@@ -2278,6 +2282,8 @@ lst.getblock = 任意の座標のタイルの情報を取得します。
|
||||
lst.setblock = 任意の座標のタイルの情報を変更します。
|
||||
lst.spawnunit = 任意の座標にユニットをスポーンさせます。
|
||||
lst.applystatus = ユニットからステータス効果を適用または削除する。
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = 任意の座標で発生するウェーブをシミュレーションします。\nウェーブを進めません。
|
||||
lst.explosion = ある場所で爆発を起こします。
|
||||
lst.setrate = プロセッサーの実行速度を1命令/tickで設定します。
|
||||
@@ -2294,6 +2300,42 @@ lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second a
|
||||
lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
|
||||
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
logic.nounitbuild = [red]ここではユニット構築ロジックは使用できません。
|
||||
lenum.type = ユニットや建物の種類を取得します。\n例:任意のルーターに対して、 [accent]@router[] を返します。\n文字列ではありません。
|
||||
lenum.shoot = 指定した座標に向かって撃ちます。
|
||||
@@ -2430,3 +2472,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||
|
||||
@@ -494,6 +494,7 @@ editor.default = [lightgray]<기본값>
|
||||
details = 설명...
|
||||
edit = 편집...
|
||||
variables = 변수
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = 이름:
|
||||
editor.spawn = 기체 생성
|
||||
editor.removeunit = 기체 삭제
|
||||
@@ -672,10 +673,11 @@ objective.destroycore.name = 코어 파괴
|
||||
objective.commandmode.name = 명령 모드
|
||||
objective.flag.name = 플래그
|
||||
marker.shapetext.name = 도형과 문자
|
||||
marker.minimap.name = 미니맵
|
||||
marker.point.name = Point
|
||||
marker.shape.name = 도형
|
||||
marker.text.name = 문자
|
||||
marker.line.name = Line
|
||||
marker.quad.name = Quad
|
||||
marker.background = 배경
|
||||
marker.outline = 외곽선
|
||||
|
||||
@@ -761,6 +763,7 @@ sector.missingresources = [scarlet]코어 자원 부족[]
|
||||
sector.attacked = [accent]{0}[white] 지역이 공격받고 있습니다![]
|
||||
sector.lost = [accent]{0}[white] 지역을 잃었습니다![]
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = 아이콘 바꾸기
|
||||
sector.noswitch.title = 지역 전환 불가능
|
||||
sector.noswitch = 기존 지역이 공격받는 동안은 지역을 전환할 수 없습니다.\n\n지역: [accent]{0}[] 중 [accent]{1}[]
|
||||
@@ -1543,6 +1546,7 @@ block.inverted-sorter.name = 반전 필터
|
||||
block.message.name = 메모 블록
|
||||
block.reinforced-message.name = 보강된 메모 블록
|
||||
block.world-message.name = 월드 메모 블록
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = 조명
|
||||
block.overflow-gate.name = 포화 필터
|
||||
block.underflow-gate.name = 불포화 필터
|
||||
@@ -2277,6 +2281,8 @@ lst.getblock = 특정 위치의 타일 정보를 불러옴
|
||||
lst.setblock = 특정 위치의 타일 정보 설정
|
||||
lst.spawnunit = 특정 위치에 기체 소환
|
||||
lst.applystatus = 기체에게 상태이상을 적용하거나 삭제
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = 특정 위치에 이전 단계를 실행\n실제 단계가 넘어가지 않습니다
|
||||
lst.explosion = 특정 위치에 폭발 생성
|
||||
lst.setrate = 프로세서 실행 속도를 틱당 연산량으로 설정
|
||||
@@ -2293,6 +2299,42 @@ lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second a
|
||||
lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
|
||||
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
|
||||
logic.nounitbuild = [red]기체의 건설 로직은 여기서 허용되지 않습니다.
|
||||
|
||||
@@ -2448,3 +2490,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||
|
||||
@@ -490,6 +490,7 @@ editor.default = [lightgray]<Numatytasis>
|
||||
details = Detaliau...
|
||||
edit = Redaguoti...
|
||||
variables = Vars
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = Pavadinimas:
|
||||
editor.spawn = Atradinti vienetą
|
||||
editor.removeunit = Panaikinti vienetą
|
||||
@@ -665,10 +666,11 @@ objective.destroycore.name = Destroy Core
|
||||
objective.commandmode.name = Command Mode
|
||||
objective.flag.name = Flag
|
||||
marker.shapetext.name = Shape Text
|
||||
marker.minimap.name = Minimap
|
||||
marker.point.name = Point
|
||||
marker.shape.name = Shape
|
||||
marker.text.name = Text
|
||||
marker.line.name = Line
|
||||
marker.quad.name = Quad
|
||||
marker.background = Background
|
||||
marker.outline = Outline
|
||||
objective.research = [accent]Research:\n[]{0}[lightgray]{1}
|
||||
@@ -752,6 +754,7 @@ sector.missingresources = [scarlet]Insufficient Core Resources
|
||||
sector.attacked = Sector [accent]{0}[white] under attack!
|
||||
sector.lost = Sector [accent]{0}[white] lost!
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = Change Icon
|
||||
sector.noswitch.title = Unable to Switch Sectors
|
||||
sector.noswitch = You may not switch sectors while an existing sector is under attack.\n\nSector: [accent]{0}[] on [accent]{1}[]
|
||||
@@ -1531,6 +1534,7 @@ block.inverted-sorter.name = Atbulinis Rūšiuotojas
|
||||
block.message.name = Žinutė
|
||||
block.reinforced-message.name = Reinforced Message
|
||||
block.world-message.name = World Message
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = Šviestuvas
|
||||
block.overflow-gate.name = Perpildymo Užtvara
|
||||
block.underflow-gate.name = Neperpildymo Užtvara
|
||||
@@ -2262,6 +2266,8 @@ lst.getblock = Get tile data at any location.
|
||||
lst.setblock = Set tile data at any location.
|
||||
lst.spawnunit = Spawn unit at a location.
|
||||
lst.applystatus = Apply or clear a status effect from a uniut.
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter.
|
||||
lst.explosion = Create an explosion at a location.
|
||||
lst.setrate = Set processor execution speed in instructions/tick.
|
||||
@@ -2278,6 +2284,42 @@ lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second a
|
||||
lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
|
||||
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
logic.nounitbuild = [red]Unit building logic is not allowed here.
|
||||
lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string.
|
||||
lenum.shoot = Shoot at a position.
|
||||
@@ -2414,3 +2456,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||
|
||||
@@ -498,6 +498,7 @@ editor.default = [lightgray]<Standaard>
|
||||
details = Details...
|
||||
edit = Bewerk...
|
||||
variables = Vars
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = Naam:
|
||||
editor.spawn = Voeg Eenheid toe
|
||||
editor.removeunit = Verwijder Eenheid
|
||||
@@ -676,10 +677,11 @@ objective.destroycore.name = Vernietig Core
|
||||
objective.commandmode.name = Commando Modus
|
||||
objective.flag.name = Vlag
|
||||
marker.shapetext.name = Vorm Tekst
|
||||
marker.minimap.name = Minimap
|
||||
marker.point.name = Point
|
||||
marker.shape.name = Vorm
|
||||
marker.text.name = Tekst
|
||||
marker.line.name = Line
|
||||
marker.quad.name = Quad
|
||||
marker.background = Achtergrond
|
||||
marker.outline = Omtrek
|
||||
objective.research = [accent]Onderzoek:\n[]{0}[lightgray]{1}
|
||||
@@ -763,6 +765,7 @@ sector.missingresources = [scarlet]Onvoeldoende Materialen in Core
|
||||
sector.attacked = Sector [accent]{0}[white] onder vuur!
|
||||
sector.lost = Sector [accent]{0}[white] verloren!
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = Verander icoon
|
||||
sector.noswitch.title = Kan niet van sector wisselen
|
||||
sector.noswitch = Je mag niet van sector wisselen terwijl een bestaande sector wordt aangevallen.\n\nSector: [accent]{0}[] op [accent]{1}[]
|
||||
@@ -1543,6 +1546,7 @@ block.inverted-sorter.name = Omgekeerder Sorteerder
|
||||
block.message.name = Bericht
|
||||
block.reinforced-message.name = Gepansterd Bericht
|
||||
block.world-message.name = Wereldbericht
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = Lamp
|
||||
block.overflow-gate.name = Overstroom Poort
|
||||
block.underflow-gate.name = Onderstroom Poort
|
||||
@@ -2275,6 +2279,8 @@ lst.getblock = Get tile data at any location.
|
||||
lst.setblock = Set tile data at any location.
|
||||
lst.spawnunit = Spawn unit at a location.
|
||||
lst.applystatus = Apply or clear a status effect from a uniut.
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter.
|
||||
lst.explosion = Create an explosion at a location.
|
||||
lst.setrate = Set processor execution speed in instructions/tick.
|
||||
@@ -2291,6 +2297,42 @@ lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second a
|
||||
lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
|
||||
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
logic.nounitbuild = [red]Unit building logic is not allowed here.
|
||||
lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string.
|
||||
lenum.shoot = Shoot at a position.
|
||||
@@ -2427,3 +2469,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||
|
||||
@@ -490,6 +490,7 @@ editor.default = [lightgray]<Default>
|
||||
details = Details...
|
||||
edit = Edit...
|
||||
variables = Vars
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = Name:
|
||||
editor.spawn = Spawn Unit
|
||||
editor.removeunit = Remove Unit
|
||||
@@ -665,10 +666,11 @@ objective.destroycore.name = Destroy Core
|
||||
objective.commandmode.name = Command Mode
|
||||
objective.flag.name = Flag
|
||||
marker.shapetext.name = Shape Text
|
||||
marker.minimap.name = Minimap
|
||||
marker.point.name = Point
|
||||
marker.shape.name = Shape
|
||||
marker.text.name = Text
|
||||
marker.line.name = Line
|
||||
marker.quad.name = Quad
|
||||
marker.background = Background
|
||||
marker.outline = Outline
|
||||
objective.research = [accent]Research:\n[]{0}[lightgray]{1}
|
||||
@@ -752,6 +754,7 @@ sector.missingresources = [scarlet]Insufficient Core Resources
|
||||
sector.attacked = Sector [accent]{0}[white] under attack!
|
||||
sector.lost = Sector [accent]{0}[white] lost!
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = Change Icon
|
||||
sector.noswitch.title = Unable to Switch Sectors
|
||||
sector.noswitch = You may not switch sectors while an existing sector is under attack.\n\nSector: [accent]{0}[] on [accent]{1}[]
|
||||
@@ -1531,6 +1534,7 @@ block.inverted-sorter.name = Inverted Sorter
|
||||
block.message.name = Message
|
||||
block.reinforced-message.name = Reinforced Message
|
||||
block.world-message.name = World Message
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = Illuminator
|
||||
block.overflow-gate.name = Overflow Gate
|
||||
block.underflow-gate.name = Underflow Gate
|
||||
@@ -2262,6 +2266,8 @@ lst.getblock = Get tile data at any location.
|
||||
lst.setblock = Set tile data at any location.
|
||||
lst.spawnunit = Spawn unit at a location.
|
||||
lst.applystatus = Apply or clear a status effect from a uniut.
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter.
|
||||
lst.explosion = Create an explosion at a location.
|
||||
lst.setrate = Set processor execution speed in instructions/tick.
|
||||
@@ -2278,6 +2284,42 @@ lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second a
|
||||
lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
|
||||
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
logic.nounitbuild = [red]Unit building logic is not allowed here.
|
||||
lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string.
|
||||
lenum.shoot = Shoot at a position.
|
||||
@@ -2414,3 +2456,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||
|
||||
@@ -495,6 +495,7 @@ editor.default = [lightgray]<Domyślne>
|
||||
details = Detale...
|
||||
edit = Edytuj...
|
||||
variables = Zmienne
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = Nazwa:
|
||||
editor.spawn = Stwórz Jednostkę
|
||||
editor.removeunit = Usuń Jednostkę
|
||||
@@ -670,10 +671,11 @@ objective.destroycore.name = Zniszcz Rdzeń
|
||||
objective.commandmode.name = Tryb Poleceń
|
||||
objective.flag.name = Oznaczenie
|
||||
marker.shapetext.name = Dostosuj Tekst
|
||||
marker.minimap.name = Minimapa
|
||||
marker.point.name = Point
|
||||
marker.shape.name = Figura
|
||||
marker.text.name = Tekst
|
||||
marker.line.name = Line
|
||||
marker.quad.name = Quad
|
||||
marker.background = Tło
|
||||
marker.outline = Kontur
|
||||
objective.research = [accent]Zbadaj:\n[]{0}[lightgray]{1}
|
||||
@@ -758,6 +760,7 @@ sector.missingresources = [scarlet]Niewystarczające Zasoby Rdzenia
|
||||
sector.attacked = Sektor [accent]{0}[white] jest atakowany!
|
||||
sector.lost = Sektor [accent]{0}[white] został stracony!
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = Zmień Ikonę
|
||||
sector.noswitch.title = Nie można zmienić sektorów
|
||||
sector.noswitch = Nie możesz zmieniać sektorów, gdy istniejący sektor jest atakowany.\n\nSektor: [accent]{0}[] na [accent]{1}[]
|
||||
@@ -1550,6 +1553,7 @@ block.inverted-sorter.name = Odwrotny Sortownik
|
||||
block.message.name = Wiadomość
|
||||
block.reinforced-message.name = Wzmocniona Wiadomość
|
||||
block.world-message.name = World Message
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = Rozświetlacz
|
||||
block.overflow-gate.name = Brama Przepełnieniowa
|
||||
block.underflow-gate.name = Brama Niedomiaru
|
||||
@@ -2296,6 +2300,8 @@ lst.getblock = Uzyskaj dane dla dowolnej lokalizacji.
|
||||
lst.setblock = Ustaw dane dla dowolnej lokalizacji.
|
||||
lst.spawnunit = Odródź jednostkę w lokalizacji.
|
||||
lst.applystatus = Zastosuj lub wyczyść efekty statusu jednostki.
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = Symuluj falę odradzającą się w dowolnym miejscu.\nNie zwiększy licznika fali.
|
||||
lst.explosion = Stwórz eksplozję w lokalizacji.
|
||||
lst.setrate = Ustaw szybkość wykonywania procesora w instrukcjach/tick.
|
||||
@@ -2312,6 +2318,42 @@ lst.sync = Synchronizuje zmienną poprzez sieć.\nWywoływane maksymalnie 10 raz
|
||||
lst.makemarker = Stwórz nowy marker logiki.\nMusisz podać ID, aby móc go później zidentyfikować.\nLimit markerów to 20,000.
|
||||
lst.setmarker = Ustaw właściwości markera.\nID markera musi być takie samo jak podczas jego tworzenia.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
|
||||
logic.nounitbuild = [red]Logika budowania jednostek nie jest tu dozwolona.
|
||||
|
||||
@@ -2467,3 +2509,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||
|
||||
@@ -495,6 +495,7 @@ editor.default = [lightgray]<padrão>
|
||||
details = Detalhes...
|
||||
edit = Editar...
|
||||
variables = Variáveis
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = Nome:
|
||||
editor.spawn = Spawnar unidade
|
||||
editor.removeunit = Remover unidade
|
||||
@@ -675,10 +676,11 @@ objective.commandmode.name = Modo de Comando
|
||||
objective.flag.name = Flag
|
||||
|
||||
marker.shapetext.name = Shape Text
|
||||
marker.minimap.name = Minimapa
|
||||
marker.point.name = Point
|
||||
marker.shape.name = Shape
|
||||
marker.text.name = Texto
|
||||
marker.line.name = Line
|
||||
marker.quad.name = Quad
|
||||
|
||||
marker.background = Fundo
|
||||
marker.outline = Contorno
|
||||
@@ -766,6 +768,7 @@ sector.missingresources = [scarlet]Recursos Insuficientes no Núcleo
|
||||
sector.attacked = Setor [accent]{0}[white] sob ataque!
|
||||
sector.lost = Setor [accent]{0}[white] perdido!
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = Trocar Ícone
|
||||
sector.noswitch.title = Incapaz de Mudar de Setores
|
||||
sector.noswitch = Você não pode trocar de setor enquanto um setor existente estiver sob ataque.\n\nSetor: [accent]{0}[] em [accent]{1}[]
|
||||
@@ -1550,6 +1553,7 @@ block.inverted-sorter.name = Ordenador invertido
|
||||
block.message.name = Mensagem
|
||||
block.reinforced-message.name = Reinforced Message
|
||||
block.world-message.name = World Message
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = Iluminador
|
||||
block.overflow-gate.name = Portão de Sobrecarga
|
||||
block.underflow-gate.name = Portão de Sobrecarga Invertido
|
||||
@@ -2295,6 +2299,8 @@ lst.getblock = Obtenha dados de blocos em qualquer local.
|
||||
lst.setblock = Defina os dados do bloco em qualquer local.
|
||||
lst.spawnunit = Gere uma unidade em um local.
|
||||
lst.applystatus = Aplique ou elimine um efeito de status de uma unidade.
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = Gerar uma onda.
|
||||
lst.explosion = Crie uma explosão em um local.
|
||||
lst.setrate = Defina a velocidade de execução do processador em instruções/tick.
|
||||
@@ -2311,6 +2317,42 @@ lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second a
|
||||
lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
|
||||
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
|
||||
logic.nounitbuild = [red]Lógica de construção de unidades não é permitida aqui.
|
||||
|
||||
@@ -2465,3 +2507,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||
|
||||
@@ -490,6 +490,7 @@ editor.default = [lightgray]<padrão>
|
||||
details = Detalhes...
|
||||
edit = Editar...
|
||||
variables = Vars
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = Nome:
|
||||
editor.spawn = Criar unidade
|
||||
editor.removeunit = Remover unidade
|
||||
@@ -665,10 +666,11 @@ objective.destroycore.name = Destroy Core
|
||||
objective.commandmode.name = Command Mode
|
||||
objective.flag.name = Flag
|
||||
marker.shapetext.name = Shape Text
|
||||
marker.minimap.name = Minimap
|
||||
marker.point.name = Point
|
||||
marker.shape.name = Shape
|
||||
marker.text.name = Text
|
||||
marker.line.name = Line
|
||||
marker.quad.name = Quad
|
||||
marker.background = Background
|
||||
marker.outline = Outline
|
||||
objective.research = [accent]Research:\n[]{0}[lightgray]{1}
|
||||
@@ -752,6 +754,7 @@ sector.missingresources = [scarlet]Insufficient Core Resources
|
||||
sector.attacked = Sector [accent]{0}[white] under attack!
|
||||
sector.lost = Sector [accent]{0}[white] lost!
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = Change Icon
|
||||
sector.noswitch.title = Unable to Switch Sectors
|
||||
sector.noswitch = You may not switch sectors while an existing sector is under attack.\n\nSector: [accent]{0}[] on [accent]{1}[]
|
||||
@@ -1531,6 +1534,7 @@ block.inverted-sorter.name = Inverted Sorter
|
||||
block.message.name = Mensagem
|
||||
block.reinforced-message.name = Reinforced Message
|
||||
block.world-message.name = World Message
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = Illuminator
|
||||
block.overflow-gate.name = Portão Sobrecarregado
|
||||
block.underflow-gate.name = Portão Desobrecarregado
|
||||
@@ -2262,6 +2266,8 @@ lst.getblock = Get tile data at any location.
|
||||
lst.setblock = Set tile data at any location.
|
||||
lst.spawnunit = Spawn unit at a location.
|
||||
lst.applystatus = Apply or clear a status effect from a uniut.
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter.
|
||||
lst.explosion = Create an explosion at a location.
|
||||
lst.setrate = Set processor execution speed in instructions/tick.
|
||||
@@ -2278,6 +2284,42 @@ lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second a
|
||||
lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
|
||||
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
logic.nounitbuild = [red]Unit building logic is not allowed here.
|
||||
lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string.
|
||||
lenum.shoot = Shoot at a position.
|
||||
@@ -2414,3 +2456,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||
|
||||
@@ -495,6 +495,7 @@ editor.default = [lightgray]<Prestabilit>
|
||||
details = Detalii...
|
||||
edit = Editează...
|
||||
variables = Vars
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = Nume:
|
||||
editor.spawn = Adaugă Unitate
|
||||
editor.removeunit = Înlătură Unitate
|
||||
@@ -672,10 +673,11 @@ objective.destroycore.name = Destroy Core
|
||||
objective.commandmode.name = Command Mode
|
||||
objective.flag.name = Flag
|
||||
marker.shapetext.name = Shape Text
|
||||
marker.minimap.name = Minimap
|
||||
marker.point.name = Point
|
||||
marker.shape.name = Shape
|
||||
marker.text.name = Text
|
||||
marker.line.name = Line
|
||||
marker.quad.name = Quad
|
||||
marker.background = Background
|
||||
marker.outline = Outline
|
||||
objective.research = [accent]Research:\n[]{0}[lightgray]{1}
|
||||
@@ -760,6 +762,7 @@ sector.missingresources = [scarlet]Resurse din Nucleu Insuficiente
|
||||
sector.attacked = Sectorul [accent]{0}[white] este atacat!
|
||||
sector.lost = Ai pierdut sectorul [accent]{0}[white]!
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = Schimbă Iconița
|
||||
sector.noswitch.title = Unable to Switch Sectors
|
||||
sector.noswitch = You may not switch sectors while an existing sector is under attack.\n\nSector: [accent]{0}[] on [accent]{1}[]
|
||||
@@ -1544,6 +1547,7 @@ block.inverted-sorter.name = Sortator Invers
|
||||
block.message.name = Mesaj
|
||||
block.reinforced-message.name = Reinforced Message
|
||||
block.world-message.name = World Message
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = Iluminator
|
||||
block.overflow-gate.name = Poartă de Revărsare
|
||||
block.underflow-gate.name = Poartă de Subversare
|
||||
@@ -2279,6 +2283,8 @@ lst.getblock = Get tile data at any location.
|
||||
lst.setblock = Set tile data at any location.
|
||||
lst.spawnunit = Spawn unit at a location.
|
||||
lst.applystatus = Apply or clear a status effect from a uniut.
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter.
|
||||
lst.explosion = Create an explosion at a location.
|
||||
lst.setrate = Set processor execution speed in instructions/tick.
|
||||
@@ -2295,6 +2301,42 @@ lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second a
|
||||
lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
|
||||
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
|
||||
logic.nounitbuild = [red]Nu ai voie să construiești cu unitățile folosind procesoare.
|
||||
|
||||
@@ -2450,3 +2492,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||
|
||||
@@ -495,6 +495,7 @@ editor.default = [lightgray]<По умолчанию>
|
||||
details = Подробности…
|
||||
edit = Редактировать…
|
||||
variables = Переменные
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = Название:
|
||||
editor.spawn = Создать боевую единицу
|
||||
editor.removeunit = Удалить боевую единицу
|
||||
@@ -672,10 +673,11 @@ objective.destroycore.name = Уничтожить ядро
|
||||
objective.commandmode.name = Командовать единицей
|
||||
objective.flag.name = Флаг
|
||||
marker.shapetext.name = Фигура с текстом
|
||||
marker.minimap.name = Миникарта
|
||||
marker.point.name = Point
|
||||
marker.shape.name = Фигура
|
||||
marker.text.name = Текст
|
||||
marker.line.name = Line
|
||||
marker.quad.name = Quad
|
||||
marker.background = Фон
|
||||
marker.outline = Контур
|
||||
objective.research = [accent]Исследуйте:\n[]{0}[lightgray]{1}
|
||||
@@ -761,6 +763,7 @@ sector.missingresources = [scarlet]Недостаточно ресурсов д
|
||||
sector.attacked = Сектор [accent]{0}[white] атакован!
|
||||
sector.lost = Сектор [accent]{0}[white] потерян!
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = Изменить иконку
|
||||
sector.noswitch.title = Перемещение между секторами
|
||||
sector.noswitch = Вы не можете переключаться между секторами, пока существующий сектор находится под атакой.\n\nСектор: [accent]{0}[] на [accent]{1}[]
|
||||
@@ -1544,6 +1547,7 @@ block.inverted-sorter.name = Инвертированный сортировщи
|
||||
block.message.name = Сообщение
|
||||
block.reinforced-message.name = Усиленное сообщение
|
||||
block.world-message.name = Мировое сообщение
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = Осветитель
|
||||
block.overflow-gate.name = Избыточный затвор
|
||||
block.underflow-gate.name = Избыточный шлюз
|
||||
@@ -1903,13 +1907,13 @@ onset.turrets = Боевые единицы эффективны, но [accent]
|
||||
onset.turretammo = Снабдите турель [accent]бериллиевыми боеприпасами.[]
|
||||
onset.walls = [accent]Стены[] могут предотвратить повреждение близлежащих построек.\nПоставьте \uf6ee [accent]бериллиевые стены[] вокруг турели.
|
||||
onset.enemies = Враг на подходе, приготовьтесь защищаться.
|
||||
onset.defenses = [accent]Set up defenses:[lightgray] {0}
|
||||
onset.defenses = [accent]Приготовьте оборону:[lightgray] {0}
|
||||
onset.attack = Враг уязвим. Начните контратаку.
|
||||
onset.cores = Новые ядра могут быть поставлены на [accent]зоны ядра[].\nНовые ядра функционируют как передовые базы и имеют общий инвентарь между другими ядрами.\nПоставьте \uf725 ядро.
|
||||
onset.detect = Враг обнаружит вас через 2 минуты.\nПриготовьте оборону, добычу и производство.
|
||||
onset.commandmode = Удерживайте [accent]shift[], чтобы войти в [accent]режим командования[].\n[accent]Щелкните левой кнопкой мыши и выделите область[] для выбора боевых единиц.\n[accent]Щелкните правой кнопкой мыши[], чтобы приказать выбранным единицам двигаться или атаковать.
|
||||
onset.commandmode.mobile = Нажмите [accent]Командовать[], чтобы войти в [accent]режим командования[].\nЗажмите палец, затем [accent]выделите область[] для выбора боевых единиц.\n[accent]Нажмите[], чтобы приказать выбранным единицам двигаться или атаковать.
|
||||
aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[].
|
||||
aegis.tungsten = Вольфрам может быть добыт [accent]ударной дрелью[].\nЭта постройка требует [accent]воду[] и [accent]энергию[].
|
||||
|
||||
split.pickup = Некоторые блоки можно подобрать боевой единицей ядра.\nВозьмите этот [accent]контейнер[] и поставьте его на [accent]грузовой загрузчик[].\n(Клавиши по умолчанию - [ и ] для поднятия и разгрузки)
|
||||
split.pickup.mobile = Некоторые блоки можно подобрать боевой единицей ядра.\nВозьмите этот [accent]контейнер[] и поставьте его на [accent]грузовой загрузчик[].\n(Чтобы поднять или разгрузить что-либо, удерживайте палец.)
|
||||
@@ -2281,6 +2285,8 @@ lst.getblock = Получает данные о плитке в любом ме
|
||||
lst.setblock = Устанавливает плитку в любом месте.
|
||||
lst.spawnunit = Создает боевую единицу на локации.
|
||||
lst.applystatus = Применяет или снимает эффект статуса с боевой единицы.
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = Имитация волны, создаваемой в произвольном месте.\nСчетчик волн не увеличивается.
|
||||
lst.explosion = Создает взрыв на локации.
|
||||
lst.setrate = Устанавливает скорость выполнения процессора в инструкциях/тиках.
|
||||
@@ -2297,6 +2303,42 @@ lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second a
|
||||
lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
|
||||
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
|
||||
logic.nounitbuild = [red]Строительство с помощью процессоров здесь запрещено.
|
||||
|
||||
@@ -2452,3 +2494,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||
|
||||
@@ -495,6 +495,7 @@ editor.default = [lightgray]<Default>
|
||||
details = Detalji...
|
||||
edit = Izmeni...
|
||||
variables = Varijabla
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = Ime:
|
||||
editor.spawn = Prizovi Jedinicu
|
||||
editor.removeunit = Ukloni Jedinicu
|
||||
@@ -672,10 +673,11 @@ objective.destroycore.name = Uništi Jezgro
|
||||
objective.commandmode.name = Upravljački Mod
|
||||
objective.flag.name = Zastava
|
||||
marker.shapetext.name = Tekst i Oblik
|
||||
marker.minimap.name = Minimapa
|
||||
marker.point.name = Point
|
||||
marker.shape.name = Oblik
|
||||
marker.text.name = Tekst
|
||||
marker.line.name = Line
|
||||
marker.quad.name = Quad
|
||||
marker.background = Pozadina
|
||||
marker.outline = Outline
|
||||
objective.research = [accent]Izuči:\n[]{0}[lightgray]{1}
|
||||
@@ -761,6 +763,7 @@ sector.missingresources = [scarlet]Nedovoljnema Resursa u Jezgru
|
||||
sector.attacked = Sektor [accent]{0}[white] je napadnut!
|
||||
sector.lost = Sektor [accent]{0}[white] je izgubljen!
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = Promeni Ikonicu
|
||||
sector.noswitch.title = Nije Moguće Promeniti Sektor
|
||||
sector.noswitch = Ne možete promeniti sektor dok je drugi napadnut.\n\nSektor: [accent]{0}[] na [accent]{1}[]
|
||||
@@ -1546,6 +1549,7 @@ block.inverted-sorter.name = Naopaki Sorter
|
||||
block.message.name = Poruka
|
||||
block.reinforced-message.name = Armirana Poruka
|
||||
block.world-message.name = Svetovna Poruka
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = Svetlo
|
||||
block.overflow-gate.name = Prelivna Kapija
|
||||
block.underflow-gate.name = Podlivna Kapija
|
||||
@@ -2282,6 +2286,8 @@ lst.getblock = Get tile data at any location.
|
||||
lst.setblock = Set tile data at any location.
|
||||
lst.spawnunit = Prizovi jedinicu na mestu.
|
||||
lst.applystatus = Dodaj ili ukloni statusni efekat na jedinicu/e.
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter.
|
||||
lst.explosion = Izazovi eksploziju na mestu.
|
||||
lst.setrate = Set processor execution speed in instructions/tick.
|
||||
@@ -2298,6 +2304,42 @@ lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second a
|
||||
lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
|
||||
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
|
||||
logic.nounitbuild = [red]Unit building logic is not allowed here.
|
||||
|
||||
@@ -2453,3 +2495,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||
|
||||
@@ -490,6 +490,7 @@ editor.default = [lightgray]<Default>
|
||||
details = Details...
|
||||
edit = Redigera...
|
||||
variables = Vars
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = Namn:
|
||||
editor.spawn = Spawn Unit
|
||||
editor.removeunit = Remove Unit
|
||||
@@ -665,10 +666,11 @@ objective.destroycore.name = Destroy Core
|
||||
objective.commandmode.name = Command Mode
|
||||
objective.flag.name = Flag
|
||||
marker.shapetext.name = Shape Text
|
||||
marker.minimap.name = Minimap
|
||||
marker.point.name = Point
|
||||
marker.shape.name = Shape
|
||||
marker.text.name = Text
|
||||
marker.line.name = Line
|
||||
marker.quad.name = Quad
|
||||
marker.background = Background
|
||||
marker.outline = Outline
|
||||
objective.research = [accent]Research:\n[]{0}[lightgray]{1}
|
||||
@@ -752,6 +754,7 @@ sector.missingresources = [scarlet]Insufficient Core Resources
|
||||
sector.attacked = Sector [accent]{0}[white] under attack!
|
||||
sector.lost = Sector [accent]{0}[white] lost!
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = Change Icon
|
||||
sector.noswitch.title = Unable to Switch Sectors
|
||||
sector.noswitch = You may not switch sectors while an existing sector is under attack.\n\nSector: [accent]{0}[] on [accent]{1}[]
|
||||
@@ -1531,6 +1534,7 @@ block.inverted-sorter.name = Inverted Sorter
|
||||
block.message.name = Meddelande
|
||||
block.reinforced-message.name = Reinforced Message
|
||||
block.world-message.name = World Message
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = Illuminator
|
||||
block.overflow-gate.name = Överflödesgrind
|
||||
block.underflow-gate.name = Underflow Gate
|
||||
@@ -2262,6 +2266,8 @@ lst.getblock = Get tile data at any location.
|
||||
lst.setblock = Set tile data at any location.
|
||||
lst.spawnunit = Spawn unit at a location.
|
||||
lst.applystatus = Apply or clear a status effect from a uniut.
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter.
|
||||
lst.explosion = Create an explosion at a location.
|
||||
lst.setrate = Set processor execution speed in instructions/tick.
|
||||
@@ -2278,6 +2284,42 @@ lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second a
|
||||
lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
|
||||
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
logic.nounitbuild = [red]Unit building logic is not allowed here.
|
||||
lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string.
|
||||
lenum.shoot = Shoot at a position.
|
||||
@@ -2414,3 +2456,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||
|
||||
@@ -495,6 +495,7 @@ editor.default = [lightgray]<ค่าเริ่มต้น>
|
||||
details = รายละเอียด...
|
||||
edit = แก้ไข...
|
||||
variables = ตัวแปร
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = ชื่อ:
|
||||
editor.spawn = สร้างยูนิต
|
||||
editor.removeunit = ลบยูนิต
|
||||
@@ -672,10 +673,11 @@ objective.destroycore.name = ทำลายแกนกลาง
|
||||
objective.commandmode.name = โหมดสั่งการ
|
||||
objective.flag.name = ธง
|
||||
marker.shapetext.name = ข้อความในรูปทรง
|
||||
marker.minimap.name = มินิแมพ
|
||||
marker.point.name = Point
|
||||
marker.shape.name = รูปทรง
|
||||
marker.text.name = ข้อความ
|
||||
marker.line.name = Line
|
||||
marker.quad.name = Quad
|
||||
marker.background = พื้นหลัง
|
||||
marker.outline = โครงร่าง
|
||||
objective.research = [accent]วิจัย:\n[]{0}[lightgray]{1}
|
||||
@@ -761,6 +763,7 @@ sector.missingresources = [scarlet]ขาดทรัพยากรในกา
|
||||
sector.attacked = เซ็กเตอร์ [accent]{0}[white] ถูกโจมตี!
|
||||
sector.lost = เราเสียเซ็กเตอร์ [accent]{0}[white]!
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = เปลี่ยนไอคอน
|
||||
sector.noswitch.title = ไม่สามารถเปลี่ยนเซ็กเตอร์ได้
|
||||
sector.noswitch = คุณไม่สามารถเปลี่ยนเซ็กเตอร์ได้ระหว่างที่อีกเซ็กเตอร์กำลังถูกโจมตีอยู่\n\nเซ็กเตอร์: [accent]{0}[] บนดาว [accent]{1}[]
|
||||
@@ -1551,6 +1554,7 @@ block.inverted-sorter.name = เครื่องคัดแยกกลับ
|
||||
block.message.name = กล่องข้อความ
|
||||
block.reinforced-message.name = กล่องข้อความเสริมกำลัง
|
||||
block.world-message.name = กล่องข้อความโลก
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = ตัวเปล่งแสง
|
||||
block.overflow-gate.name = ประตูระบาย
|
||||
block.underflow-gate.name = ประตูระบายข้าง
|
||||
@@ -2299,6 +2303,8 @@ lst.getblock = รับข้อมูลของช่องที่ตำ
|
||||
lst.setblock = ปรับแต่งข้อมูลของช่องที่ตำแหน่งใดๆ
|
||||
lst.spawnunit = เสกยูนิตมาที่ตำแหน่งที่กำหนดไว้
|
||||
lst.applystatus = ใส่หรือล้างเอฟเฟกต์สถานะจากยูนิต
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = จำลองคลื่นที่ตำแหน่งใดๆ
|
||||
lst.explosion = เสกระเบิดที่ตำแหน่ง
|
||||
lst.setrate = ตั้งค่าความเร็วการสั่งเป็นคำสั่งใน คำสั่ง/ติก
|
||||
@@ -2315,6 +2321,42 @@ lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second a
|
||||
lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
|
||||
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
|
||||
logic.nounitbuild = [red]ไม่อนุญาตให้ใช้ลอจิกควบคุมให้ยูนิตสร้างที่นี่
|
||||
|
||||
@@ -2471,3 +2513,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||
|
||||
@@ -490,6 +490,7 @@ editor.default = [lightgray]<Default>
|
||||
details = Details...
|
||||
edit = Edit...
|
||||
variables = Vars
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = isim:
|
||||
editor.spawn = Spawn Unit
|
||||
editor.removeunit = Remove Unit
|
||||
@@ -665,10 +666,11 @@ objective.destroycore.name = Destroy Core
|
||||
objective.commandmode.name = Command Mode
|
||||
objective.flag.name = Flag
|
||||
marker.shapetext.name = Shape Text
|
||||
marker.minimap.name = Minimap
|
||||
marker.point.name = Point
|
||||
marker.shape.name = Shape
|
||||
marker.text.name = Text
|
||||
marker.line.name = Line
|
||||
marker.quad.name = Quad
|
||||
marker.background = Background
|
||||
marker.outline = Outline
|
||||
objective.research = [accent]Research:\n[]{0}[lightgray]{1}
|
||||
@@ -752,6 +754,7 @@ sector.missingresources = [scarlet]Insufficient Core Resources
|
||||
sector.attacked = Sector [accent]{0}[white] under attack!
|
||||
sector.lost = Sector [accent]{0}[white] lost!
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = Change Icon
|
||||
sector.noswitch.title = Unable to Switch Sectors
|
||||
sector.noswitch = You may not switch sectors while an existing sector is under attack.\n\nSector: [accent]{0}[] on [accent]{1}[]
|
||||
@@ -1531,6 +1534,7 @@ block.inverted-sorter.name = Inverted Sorter
|
||||
block.message.name = Message
|
||||
block.reinforced-message.name = Reinforced Message
|
||||
block.world-message.name = World Message
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = Illuminator
|
||||
block.overflow-gate.name = Kapali dagatici
|
||||
block.underflow-gate.name = Underflow Gate
|
||||
@@ -2262,6 +2266,8 @@ lst.getblock = Get tile data at any location.
|
||||
lst.setblock = Set tile data at any location.
|
||||
lst.spawnunit = Spawn unit at a location.
|
||||
lst.applystatus = Apply or clear a status effect from a uniut.
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter.
|
||||
lst.explosion = Create an explosion at a location.
|
||||
lst.setrate = Set processor execution speed in instructions/tick.
|
||||
@@ -2278,6 +2284,42 @@ lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second a
|
||||
lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
|
||||
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
logic.nounitbuild = [red]Unit building logic is not allowed here.
|
||||
lenum.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string.
|
||||
lenum.shoot = Shoot at a position.
|
||||
@@ -2414,3 +2456,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||
|
||||
@@ -495,6 +495,7 @@ editor.default = [lightgray]<Varsayılan>
|
||||
details = Detaylar...
|
||||
edit = Düzenle...
|
||||
variables = Değişkenler
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = İsim:
|
||||
editor.spawn = Birim Oluştur
|
||||
editor.removeunit = Birim Kaldır
|
||||
@@ -672,10 +673,11 @@ objective.destroycore.name = Merkezi Yok Et
|
||||
objective.commandmode.name = Komuta Et
|
||||
objective.flag.name = Bayrak
|
||||
marker.shapetext.name = Şekilli Yazı
|
||||
marker.minimap.name = Harita
|
||||
marker.point.name = Point
|
||||
marker.shape.name = Şekil
|
||||
marker.text.name = Yazı
|
||||
marker.line.name = Line
|
||||
marker.quad.name = Quad
|
||||
marker.background = Arkaplan
|
||||
marker.outline = Anahat
|
||||
objective.research = [accent]Araştır:\n[]{0}[lightgray]{1}
|
||||
@@ -760,6 +762,7 @@ sector.missingresources = [scarlet]Yetersiz Merkez Kaynakları
|
||||
sector.attacked = Sektör [accent]{0}[white] saldırı altında!
|
||||
sector.lost = Sektör [accent]{0}[white] kaybedildi!
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = İkon Değiştir
|
||||
sector.noswitch.title = Sektör Değiştirilemiyor
|
||||
sector.noswitch = Bir Sektör saldırı altındayken başka bir sektöre geçemezsin.\n\nSektör: [accent]{1}[] deki [accent]{0}[]
|
||||
@@ -1542,6 +1545,7 @@ block.inverted-sorter.name = Ters Ayıklayıcı
|
||||
block.message.name = Mesaj Bloğu
|
||||
block.reinforced-message.name = Güçlendirilmiş Mesaj Bloğu
|
||||
block.world-message.name = Evrensel Mesaj Bloğu
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = Aydınlatıcı
|
||||
block.overflow-gate.name = Taşma Geçidi
|
||||
block.underflow-gate.name = Yana Taşma Geçidi
|
||||
@@ -2279,6 +2283,8 @@ lst.getblock = Herhangi bir yerdeki blok bilgisini al.
|
||||
lst.setblock = Herhangi bir yerdeki blok bilgisini değiştir.
|
||||
lst.spawnunit = Herhangi bir yerde birim var et.
|
||||
lst.applystatus = Bir Birime Durum Etkisi ekle.
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = Bellir bir noktada dalga başlat.\nDalga Zamanlayıcı Oluşturmaz!
|
||||
lst.explosion = Bir Noktada Patlama oluştur.
|
||||
lst.setrate = İşlemci Hızını Ayarla (işlem/tick)
|
||||
@@ -2295,6 +2301,42 @@ lst.sync = Ağ boyunca bir değişkeni senkronize et.\nSaniyede en fazla 10 kere
|
||||
lst.makemarker = Dünyada yeni bir İşlemci İşareti koy.\nBu İşarete bir Kimlik adamalısın.\nDünya başına 20.000 limit bulunmakta.
|
||||
lst.setmarker = Bir İşlemci İşareti için bir arazi seç.\nKimlik, İşaret Koyucudaki ile aynı olmalı.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
|
||||
logic.nounitbuild = [red]Birim İnşası Yasak!
|
||||
|
||||
@@ -2450,3 +2492,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||
|
||||
@@ -497,6 +497,7 @@ editor.default = [lightgray]<За замовчуванням>
|
||||
details = Подробиці…
|
||||
edit = Змінити…
|
||||
variables = Змінні
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = Ім’я:
|
||||
editor.spawn = Створити бойову одиницю
|
||||
editor.removeunit = Видалити бойову одиницю
|
||||
@@ -677,10 +678,11 @@ objective.commandmode.name = Режим командування
|
||||
objective.flag.name = Прапорець
|
||||
|
||||
marker.shapetext.name = Форма тексту
|
||||
marker.minimap.name = Мінімапа
|
||||
marker.point.name = Point
|
||||
marker.shape.name = Форма
|
||||
marker.text.name = Текст
|
||||
marker.line.name = Line
|
||||
marker.quad.name = Quad
|
||||
|
||||
marker.background = Фон
|
||||
marker.outline = Контур
|
||||
@@ -769,6 +771,7 @@ sector.missingresources = [scarlet]Недостатньо ресурсів у я
|
||||
sector.attacked = Сектор [accent]{0}[white] під атакою!
|
||||
sector.lost = Сектор [accent]{0}[white] втрачено!
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = Змінити значок
|
||||
sector.noswitch.title = Неможливо переключити сектори
|
||||
sector.noswitch = Ви не можете змінювати сектори, поки поточний сектор піддається атаці.\n\nСектор: [accent]{0}[] на [accent]{1}[]
|
||||
@@ -1555,6 +1558,7 @@ block.inverted-sorter.name = Зворотний сортувальник
|
||||
block.message.name = Повідомлення
|
||||
block.reinforced-message.name = Посилене повідомлення
|
||||
block.world-message.name = Світове повідомлення
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = Освітлювач
|
||||
block.overflow-gate.name = Надмірний затвор
|
||||
block.underflow-gate.name = Недостатній затвор
|
||||
@@ -2306,6 +2310,8 @@ lst.getblock = Отримує дані плитки в будь-якому мі
|
||||
lst.setblock = Установлює дані плитки в будь-якому місці.
|
||||
lst.spawnunit = Породжує одиницю на певному місці.
|
||||
lst.applystatus = Застосовує або видаляє ефект стану з одиниці.
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = Змодельовує хвилю, що виникає у довільному місці.\nНе збільшує лічильник хвиль.
|
||||
lst.explosion = Створює вибух у певному місці.
|
||||
lst.setrate = Установлює швидкість виконання процесора в інструкціях за такт.
|
||||
@@ -2322,6 +2328,42 @@ lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second a
|
||||
lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
|
||||
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
|
||||
logic.nounitbuild = [red]Будування за допомогою процесорів заборено.
|
||||
|
||||
@@ -2478,3 +2520,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||
|
||||
@@ -496,6 +496,7 @@ editor.default = [lightgray]<Mặc định>
|
||||
details = Chi tiết...
|
||||
edit = Chỉnh sửa...
|
||||
variables = Thông số
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = Tên:
|
||||
editor.spawn = Thêm kẻ địch
|
||||
editor.removeunit = Xóa kẻ địch
|
||||
@@ -673,10 +674,11 @@ objective.destroycore.name = Phá huỷ căn cứ
|
||||
objective.commandmode.name = Chế độ ra lệnh
|
||||
objective.flag.name = Cờ
|
||||
marker.shapetext.name = Hình dạng văn bản
|
||||
marker.minimap.name = Bản đồ nhỏ
|
||||
marker.point.name = Point
|
||||
marker.shape.name = Hình dạng
|
||||
marker.text.name = Văn bản
|
||||
marker.line.name = Line
|
||||
marker.quad.name = Quad
|
||||
marker.background = Nền
|
||||
marker.outline = Đường viền
|
||||
objective.research = [accent]Nghiên cứu:\n[]{0}[lightgray]{1}
|
||||
@@ -761,6 +763,7 @@ sector.missingresources = [scarlet]Không đủ tài nguyên căn cứ
|
||||
sector.attacked = Khu vực [accent]{0}[white] đang bị tấn công!
|
||||
sector.lost = Khu vực [accent]{0}[white] đã mất!
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = Thay đổi biểu tượng
|
||||
sector.noswitch.title = Không thể thay đổi sang khu vực khác
|
||||
sector.noswitch = Bạn không thể đổi sang khu vực khác khi một khu vực đang bị tấn công.\n\nKhu vực: [accent]{0}[] ở [accent]{1}[]
|
||||
@@ -1546,6 +1549,7 @@ block.inverted-sorter.name = Bộ lọc ngược
|
||||
block.message.name = Thông điệp
|
||||
block.reinforced-message.name = Thông điệp [Gia cố]
|
||||
block.world-message.name = Thông điệp thế giới
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = Đèn
|
||||
block.overflow-gate.name = Cổng tràn
|
||||
block.underflow-gate.name = Cổng tràn ngược
|
||||
@@ -2280,6 +2284,8 @@ lst.getblock = Lấy dữ liệu từ ô từ vị trí bất kì.
|
||||
lst.setblock = Chỉnh sửa dữ liệu từ ô từ vị trí bất kì.
|
||||
lst.spawnunit = Tạo ra quân từ vị trí.
|
||||
lst.applystatus = Áp dụng hoặc loại bỏ một hiệu ứng trạng thái cho một đơn vị.
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = Mô phỏng một lượt xuất hiện ở vị trí tùy ý.\nSẽ không tăng số đếm lượt.
|
||||
lst.explosion = Tạo ra một vụ nổ tại vị trí đó.
|
||||
lst.setrate = Đặt tốc độ thực thi khối xử lý theo chỉ thị/tíc-tắc.
|
||||
@@ -2296,6 +2302,42 @@ lst.sync = Đồng bộ giá trị biến qua mạng.\nChỉ gọi tối đa 10
|
||||
lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
|
||||
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
|
||||
logic.nounitbuild = [red]Lô-gíc xây dựng đơn vị không được phép ở đây.
|
||||
|
||||
@@ -2451,3 +2493,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||
|
||||
@@ -498,6 +498,7 @@ editor.default = [lightgray]<默认>
|
||||
details = 详情…
|
||||
edit = 编辑…
|
||||
variables = 变量
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = 名称:
|
||||
editor.spawn = 生成单位
|
||||
editor.removeunit = 移除单位
|
||||
@@ -678,10 +679,11 @@ objective.commandmode.name = 指挥模式
|
||||
objective.flag.name = 标签
|
||||
|
||||
marker.shapetext.name = 带形状文本
|
||||
marker.minimap.name = 小地图
|
||||
marker.point.name = Point
|
||||
marker.shape.name = 形状
|
||||
marker.text.name = 文本
|
||||
marker.line.name = Line
|
||||
marker.quad.name = Quad
|
||||
|
||||
marker.background = 背景
|
||||
marker.outline = 轮廓
|
||||
@@ -770,6 +772,7 @@ sector.missingresources = [scarlet]建造核心所需资源不足
|
||||
sector.attacked = 区块[accent]{0}[white]受到攻击!
|
||||
sector.lost = 区块[accent]{0}[white]已丢失!
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = 更改图标
|
||||
sector.noswitch.title = 无法切换区块
|
||||
sector.noswitch = 你无法在当前区块遭受攻击时切换区块。\n\n区块:[accent]{0}[]位于[accent]{1}[]
|
||||
@@ -1556,6 +1559,7 @@ block.inverted-sorter.name = 反向分类器
|
||||
block.message.name = 信息板
|
||||
block.reinforced-message.name = 强化信息板
|
||||
block.world-message.name = 世界信息板
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = 照明器
|
||||
block.overflow-gate.name = 溢流门
|
||||
block.underflow-gate.name = 反向溢流门
|
||||
@@ -1927,7 +1931,7 @@ onset.commandmode = 按住[accent]shift[]键进入[accent]指挥模式[]。\n按
|
||||
onset.commandmode.mobile = 点击左下角的[accent]指挥[]进入[accent]指挥模式[]。\n按住屏幕,[accent]拖动[]框选单位。\n[accent]点击[]指挥所选单位移动或攻击。
|
||||
aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis structure requires [accent]water[] and [accent]power[].
|
||||
|
||||
split.pickup = 核心单位可以拾取一些方块。\n拾取这个[accent]强化容器[]并将其放到[accent]载荷装载器[]中。\n(默认使用[拾取,]放下载荷)
|
||||
split.pickup = 核心单位可以拾取一些方块。\n拾取这个[accent]强化容器[]并将其放到[accent]载荷装载器[]中。\n(默认使用快捷键“[”拾取载荷,“]“放下载荷)
|
||||
split.pickup.mobile = 核心单位可以拾取一些方块。\n拾取这个[accent]强化容器[]并将其放到[accent]载荷装载器[]中。\n(长按以拾取或放下载荷)
|
||||
split.acquire = 你需要获取钨来生产单位。
|
||||
split.build = 单位必须被运输到墙的另一侧。\n在墙壁两侧各放置一个[accent]载荷质量驱动器[]。\n点击其中一个,然后点击另一个以连接它们。
|
||||
@@ -2305,6 +2309,8 @@ lst.getblock = 获取任意位置的地块数据
|
||||
lst.setblock = 设置任意位置的地块数据
|
||||
lst.spawnunit = 在指定位置生成单位
|
||||
lst.applystatus = 添加或清除单位的一个状态效果
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = 在任意位置生成一波敌人\n并不记录在波数计数器中
|
||||
lst.explosion = 在某个位置生成爆炸
|
||||
lst.setrate = 在指令/时间刻的时间下设置处理器处理速度
|
||||
@@ -2321,6 +2327,42 @@ lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second a
|
||||
lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
|
||||
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
|
||||
logic.nounitbuild = [red]此处不允许处理器操控单位去建设
|
||||
|
||||
@@ -2477,3 +2519,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||
|
||||
@@ -495,6 +495,7 @@ editor.default = [lightgray](預設)
|
||||
details = 詳細資訊……
|
||||
edit = 編輯……
|
||||
variables = 變數
|
||||
logic.globals = Built-in Variables
|
||||
editor.name = 名稱:
|
||||
editor.spawn = 重生單位
|
||||
editor.removeunit = 移除單位
|
||||
@@ -675,10 +676,11 @@ objective.commandmode.name = 指揮模式
|
||||
objective.flag.name = 全局Flag
|
||||
|
||||
marker.shapetext.name = 稜框+文字標示
|
||||
marker.minimap.name = 小地圖標示
|
||||
marker.point.name = Point
|
||||
marker.shape.name = 稜框標示
|
||||
marker.text.name = 文字標示
|
||||
marker.line.name = Line
|
||||
marker.quad.name = Quad
|
||||
|
||||
marker.background = 反黑背景
|
||||
marker.outline = 描邊
|
||||
@@ -766,6 +768,7 @@ sector.missingresources = [scarlet]核心資源不足
|
||||
sector.attacked = 地區 [accent]{0}[white] 遭受攻擊!
|
||||
sector.lost = 地區 [accent]{0}[white] 戰敗!
|
||||
sector.capture = Sector [accent]{0}[white]Captured!
|
||||
sector.capture.current = Sector Captured!
|
||||
sector.changeicon = 更改圖標
|
||||
sector.noswitch.title = 無法切換地區
|
||||
sector.noswitch = 當前地區遭受攻擊時,無法切換地區\n\n地區: [accent]{0}[] 於 [accent]{1}[]
|
||||
@@ -1552,6 +1555,7 @@ block.inverted-sorter.name = 反向分類器
|
||||
block.message.name = 訊息板
|
||||
block.reinforced-message.name = Reinforced Message
|
||||
block.world-message.name = World Message
|
||||
block.world-switch.name = World Switch
|
||||
block.illuminator.name = 照明燈
|
||||
block.overflow-gate.name = 溢流器
|
||||
block.underflow-gate.name = 反向溢流器
|
||||
@@ -2291,6 +2295,8 @@ lst.getblock = 由位置取方塊數據
|
||||
lst.setblock = 由位置設置方塊數據
|
||||
lst.spawnunit = 在某一位置生成單位
|
||||
lst.applystatus = 爲單位添加或移除狀態效果
|
||||
lst.weathersensor = Check if a type of weather is active.
|
||||
lst.weatherset = Set the current state of a type of weather.
|
||||
lst.spawnwave = 在某一位置生成一波敵人\n不計入波數
|
||||
lst.explosion = 在某一位置製造爆炸
|
||||
lst.setrate = 以指令/每時刻設置處理器速度
|
||||
@@ -2307,6 +2313,42 @@ lst.sync = Sync a variable across the network.\nOnly invoked 10 times a second a
|
||||
lst.makemarker = Create a new logic marker in the world.\nAn ID to identify this marker must be provided.\nMarkers currently limited to 20,000 per world.
|
||||
lst.setmarker = Set a property for a marker.\nThe ID used must be the same as in the Make Marker instruction.
|
||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
||||
lglobal.false = 0
|
||||
lglobal.true = 1
|
||||
lglobal.null = null
|
||||
lglobal.@pi = The mathematical constant pi (3.141...)
|
||||
lglobal.@e = The mathematical constant e (2.718...)
|
||||
lglobal.@degToRad = Multiply by this number to convert degrees to radians
|
||||
lglobal.@radToDeg = Multiply by this number to convert radians to degrees
|
||||
lglobal.@time = Playtime of current save, in milliseconds
|
||||
lglobal.@tick = Playtime of current save, in ticks (1 second = 60 ticks)
|
||||
lglobal.@second = Playtime of current save, in seconds
|
||||
lglobal.@minute = Playtime of current save, in minutes
|
||||
lglobal.@waveNumber = Current wave number, if waves are enabled
|
||||
lglobal.@waveTime = Countdown timer for waves, in seconds
|
||||
lglobal.@mapw = Map width in tiles
|
||||
lglobal.@maph = Map height in tiles
|
||||
lglobal.sectionMap = Map
|
||||
lglobal.sectionGeneral = General
|
||||
lglobal.sectionNetwork = Network/Clientside [World Processor Only]
|
||||
lglobal.sectionProcessor = Processor
|
||||
lglobal.sectionLookup = Lookup
|
||||
lglobal.@this = The logic block executing the code
|
||||
lglobal.@thisx = X coordinate of block executing the code
|
||||
lglobal.@thisy = Y coordinate of block executing the code
|
||||
lglobal.@links = Total number of blocks linked to this processors
|
||||
lglobal.@ipt = Execution speed of the processor in instructions per tick (60 ticks = 1 second)
|
||||
lglobal.@unitCount = Total number of types of unit content in the game; used with the lookup instruction
|
||||
lglobal.@blockCount = Total number of types of block content in the game; used with the lookup instruction
|
||||
lglobal.@itemCount = Total number of types of item content in the game; used with the lookup instruction
|
||||
lglobal.@liquidCount = Total number of types of liquid content in the game; used with the lookup instruction
|
||||
lglobal.@server = True if the code is running on a server or in singleplayer, false otherwise
|
||||
lglobal.@client = True if the code is running on a client connected to a server
|
||||
lglobal.@clientLocale = Locale of the client running the code. For example: en_US
|
||||
lglobal.@clientUnit = Unit of client running the code
|
||||
lglobal.@clientName = Player name of client running the code
|
||||
lglobal.@clientTeam = Team ID of client running the code
|
||||
lglobal.@clientMobile = True is the client running the code is on mobile, false otherwise
|
||||
|
||||
logic.nounitbuild = [red]單位建造邏輯已被禁止。
|
||||
|
||||
@@ -2463,3 +2505,6 @@ lenum.flushtext = Flush print buffer's content to marker, if applicable.\nIf fet
|
||||
lenum.texture = Texture name straight from game's texture atlas (using kebab-case naming style).\nIf printFlush is set to true, consumes text buffer content as text argument.
|
||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||
|
||||
@@ -164,3 +164,4 @@ summoner
|
||||
OpalSoPL
|
||||
BalaM314
|
||||
Redstonneur1256
|
||||
ApsZoldat
|
||||
|
||||
Binary file not shown.
@@ -2,7 +2,6 @@ uniform sampler2D u_texture;
|
||||
|
||||
uniform float u_time;
|
||||
uniform float u_progress;
|
||||
uniform vec4 u_color;
|
||||
uniform vec2 u_uv;
|
||||
uniform vec2 u_uv2;
|
||||
uniform vec2 u_texsize;
|
||||
@@ -14,8 +13,7 @@ void main(){
|
||||
vec2 coords = (v_texCoords - u_uv) / (u_uv2 - u_uv);
|
||||
vec2 v = vec2(1.0/u_texsize.x, 1.0/u_texsize.y);
|
||||
|
||||
vec4 c = texture2D(u_texture, v_texCoords);
|
||||
|
||||
vec4 c = texture2D(u_texture, v_texCoords);
|
||||
c.a *= u_progress;
|
||||
c.a *= step(abs(sin(coords.y*3.0 + u_time)), 0.9);
|
||||
|
||||
|
||||
@@ -69,6 +69,7 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform
|
||||
return (Float.isNaN(result) || Float.isInfinite(result)) ? 1f : Mathf.clamp(result, 0.0001f, 60f / 10f);
|
||||
});
|
||||
|
||||
UI.loadColors();
|
||||
batch = new SortedSpriteBatch();
|
||||
assets = new AssetManager();
|
||||
assets.setLoader(Texture.class, "." + mapExtension, new MapPreviewLoader());
|
||||
|
||||
@@ -19,7 +19,23 @@ public class UnitGroup{
|
||||
public int collisionLayer;
|
||||
public volatile float[] positions, originalPositions;
|
||||
public volatile boolean valid;
|
||||
public long lastSpeedUpdate = -1;
|
||||
public float minSpeed = 999999f;
|
||||
|
||||
public void updateMinSpeed(){
|
||||
if(lastSpeedUpdate == Vars.state.updateId) return;
|
||||
|
||||
lastSpeedUpdate = Vars.state.updateId;
|
||||
minSpeed = 999999f;
|
||||
|
||||
for(Unit unit : units){
|
||||
//don't factor in the floor speed multiplier
|
||||
Floor on = unit.isFlying() ? Blocks.air.asFloor() : unit.floorOn();
|
||||
minSpeed = Math.min(unit.speed() / on.speedMultiplier, minSpeed);
|
||||
}
|
||||
|
||||
if(Float.isInfinite(minSpeed) || Float.isNaN(minSpeed)) minSpeed = 999999f;
|
||||
}
|
||||
|
||||
public void calculateFormation(Vec2 dest, int collisionLayer){
|
||||
this.collisionLayer = collisionLayer;
|
||||
@@ -33,19 +49,16 @@ public class UnitGroup{
|
||||
cy /= units.size;
|
||||
positions = new float[units.size * 2];
|
||||
|
||||
|
||||
//all positions are relative to the center
|
||||
for(int i = 0; i < units.size; i ++){
|
||||
Unit unit = units.get(i);
|
||||
positions[i * 2] = unit.x - cx;
|
||||
positions[i * 2 + 1] = unit.y - cy;
|
||||
unit.command().groupIndex = i;
|
||||
|
||||
//don't factor in the floor speed multiplier
|
||||
Floor on = unit.isFlying() ? Blocks.air.asFloor() : unit.floorOn();
|
||||
minSpeed = Math.min(unit.speed() / on.speedMultiplier, minSpeed);
|
||||
}
|
||||
|
||||
if(Float.isInfinite(minSpeed) || Float.isNaN(minSpeed)) minSpeed = 999999f;
|
||||
updateMinSpeed();
|
||||
|
||||
//run on new thread to prevent stutter
|
||||
Vars.mainExecutor.submit(() -> {
|
||||
|
||||
@@ -148,6 +148,10 @@ public class CommandAI extends AIController{
|
||||
}
|
||||
}
|
||||
|
||||
if(group != null){
|
||||
group.updateMinSpeed();
|
||||
}
|
||||
|
||||
if(!net.client() && command == UnitCommand.enterPayloadCommand && unit.buildOn() != null && (targetPos == null || (world.buildWorld(targetPos.x, targetPos.y) != null && world.buildWorld(targetPos.x, targetPos.y) == unit.buildOn()))){
|
||||
var build = unit.buildOn();
|
||||
tmpPayload.unit = unit;
|
||||
|
||||
@@ -2,6 +2,8 @@ package mindustry.ai.types;
|
||||
|
||||
import arc.math.*;
|
||||
import arc.util.*;
|
||||
import mindustry.*;
|
||||
import mindustry.entities.*;
|
||||
import mindustry.entities.units.*;
|
||||
import mindustry.gen.*;
|
||||
|
||||
@@ -29,6 +31,11 @@ public class MissileAI extends AIController{
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Teamc target(float x, float y, float range, boolean air, boolean ground){
|
||||
return Units.closestTarget(unit.team, x, y, range, u -> u.checkTarget(air, ground), t -> ground && (!t.block.underBullets || (shooter != null && t == Vars.world.buildWorld(shooter.aimX, shooter.aimY))));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean retarget(){
|
||||
//more frequent retarget due to high speed. TODO won't this lag?
|
||||
|
||||
@@ -4571,6 +4571,7 @@ public class Blocks{
|
||||
loopSoundVolume = 0.6f;
|
||||
deathSound = Sounds.largeExplosion;
|
||||
targetAir = false;
|
||||
targetUnderBlocks = false;
|
||||
|
||||
fogRadius = 6f;
|
||||
|
||||
@@ -5505,23 +5506,6 @@ public class Blocks{
|
||||
);
|
||||
}};
|
||||
|
||||
mechRefabricator = new Reconstructor("mech-refabricator"){{
|
||||
requirements(Category.units, with(Items.beryllium, 250, Items.tungsten, 120, Items.silicon, 150));
|
||||
regionSuffix = "-dark";
|
||||
|
||||
size = 3;
|
||||
consumePower(2.5f);
|
||||
consumeLiquid(Liquids.hydrogen, 3f / 60f);
|
||||
consumeItems(with(Items.silicon, 50, Items.tungsten, 40));
|
||||
|
||||
constructTime = 60f * 45f;
|
||||
researchCostMultiplier = 0.75f;
|
||||
|
||||
upgrades.addAll(
|
||||
new UnitType[]{UnitTypes.merui, UnitTypes.cleroi}
|
||||
);
|
||||
}};
|
||||
|
||||
shipRefabricator = new Reconstructor("ship-refabricator"){{
|
||||
requirements(Category.units, with(Items.beryllium, 200, Items.tungsten, 100, Items.silicon, 150, Items.oxide, 40));
|
||||
regionSuffix = "-dark";
|
||||
@@ -5540,6 +5524,23 @@ public class Blocks{
|
||||
researchCost = with(Items.beryllium, 500, Items.tungsten, 200, Items.silicon, 300, Items.oxide, 80);
|
||||
}};
|
||||
|
||||
mechRefabricator = new Reconstructor("mech-refabricator"){{
|
||||
requirements(Category.units, with(Items.beryllium, 250, Items.tungsten, 120, Items.silicon, 150));
|
||||
regionSuffix = "-dark";
|
||||
|
||||
size = 3;
|
||||
consumePower(2.5f);
|
||||
consumeLiquid(Liquids.hydrogen, 3f / 60f);
|
||||
consumeItems(with(Items.silicon, 50, Items.tungsten, 40));
|
||||
|
||||
constructTime = 60f * 45f;
|
||||
researchCostMultiplier = 0.75f;
|
||||
|
||||
upgrades.addAll(
|
||||
new UnitType[]{UnitTypes.merui, UnitTypes.cleroi}
|
||||
);
|
||||
}};
|
||||
|
||||
//yes very silly name
|
||||
primeRefabricator = new Reconstructor("prime-refabricator"){{
|
||||
requirements(Category.units, with(Items.thorium, 250, Items.oxide, 200, Items.tungsten, 200, Items.silicon, 400));
|
||||
|
||||
@@ -4063,6 +4063,8 @@ public class UnitTypes{
|
||||
isEnemy = false;
|
||||
envDisabled = 0;
|
||||
|
||||
range = 60f;
|
||||
faceTarget = true;
|
||||
targetPriority = -2;
|
||||
lowAltitude = false;
|
||||
mineWalls = true;
|
||||
@@ -4127,8 +4129,10 @@ public class UnitTypes{
|
||||
isEnemy = false;
|
||||
envDisabled = 0;
|
||||
|
||||
range = 60f;
|
||||
targetPriority = -2;
|
||||
lowAltitude = false;
|
||||
faceTarget = true;
|
||||
mineWalls = true;
|
||||
mineFloor = false;
|
||||
mineHardnessScaling = false;
|
||||
@@ -4204,6 +4208,8 @@ public class UnitTypes{
|
||||
isEnemy = false;
|
||||
envDisabled = 0;
|
||||
|
||||
range = 65f;
|
||||
faceTarget = true;
|
||||
targetPriority = -2;
|
||||
lowAltitude = false;
|
||||
mineWalls = true;
|
||||
|
||||
@@ -17,7 +17,7 @@ public class Weathers{
|
||||
suspendParticles;
|
||||
|
||||
public static void load(){
|
||||
snow = new ParticleWeather("snow"){{
|
||||
snow = new ParticleWeather("snowing"){{
|
||||
particleRegion = "particle";
|
||||
sizeMax = 13f;
|
||||
sizeMin = 2.6f;
|
||||
|
||||
@@ -314,6 +314,14 @@ public class ContentLoader{
|
||||
return getByName(ContentType.planet, name);
|
||||
}
|
||||
|
||||
public Seq<Weather> weathers(){
|
||||
return getBy(ContentType.weather);
|
||||
}
|
||||
|
||||
public Weather weather(String name){
|
||||
return getByName(ContentType.weather, name);
|
||||
}
|
||||
|
||||
public Seq<UnitStance> unitStances(){
|
||||
return getBy(ContentType.unitStance);
|
||||
}
|
||||
|
||||
@@ -86,11 +86,12 @@ public class GameState{
|
||||
}
|
||||
|
||||
public boolean isPaused(){
|
||||
return is(State.paused);
|
||||
return state == State.paused;
|
||||
}
|
||||
|
||||
/** @return whether there is an unpaused game in progress. */
|
||||
public boolean isPlaying(){
|
||||
return (state == State.playing) || (state == State.paused && !isPaused());
|
||||
return state == State.playing;
|
||||
}
|
||||
|
||||
/** @return whether the current state is *not* the menu. */
|
||||
|
||||
@@ -357,7 +357,8 @@ public class Logic implements ApplicationListener{
|
||||
|
||||
//map is over, no more world processor objective stuff
|
||||
state.rules.disableWorldProcessors = true;
|
||||
state.rules.objectives.clear();
|
||||
|
||||
Call.clearObjectives();
|
||||
|
||||
//save, just in case
|
||||
if(!headless && !net.client()){
|
||||
@@ -460,9 +461,6 @@ public class Logic implements ApplicationListener{
|
||||
|
||||
if(!state.isEditor()){
|
||||
state.rules.objectives.update();
|
||||
if(state.rules.objectives.checkChanged() && net.server()){
|
||||
Call.setObjectives(state.rules.objectives);
|
||||
}
|
||||
}
|
||||
|
||||
if(state.rules.waves && state.rules.waveTimer && !state.gameOver){
|
||||
|
||||
@@ -340,15 +340,23 @@ public class NetClient implements ApplicationListener{
|
||||
state.rules = rules;
|
||||
}
|
||||
|
||||
//NOTE: avoid using this, runs into packet/buffer size limitations
|
||||
@Remote(variants = Variant.both)
|
||||
public static void setObjectives(MapObjectives executor){
|
||||
state.rules.objectives = executor;
|
||||
}
|
||||
|
||||
@Remote(called = Loc.server)
|
||||
public static void objectiveCompleted(String[] flagsRemoved, String[] flagsAdded){
|
||||
state.rules.objectiveFlags.removeAll(flagsRemoved);
|
||||
state.rules.objectiveFlags.addAll(flagsAdded);
|
||||
@Remote(variants = Variant.both, called = Loc.server)
|
||||
public static void clearObjectives(){
|
||||
state.rules.objectives.clear();
|
||||
}
|
||||
|
||||
@Remote(variants = Variant.both, called = Loc.server)
|
||||
public static void completeObjective(int index){
|
||||
var obj = state.rules.objectives.get(index);
|
||||
if(obj != null){
|
||||
obj.done();
|
||||
}
|
||||
}
|
||||
|
||||
@Remote(variants = Variant.both)
|
||||
|
||||
@@ -372,18 +372,20 @@ public class Renderer implements ApplicationListener{
|
||||
});
|
||||
}
|
||||
|
||||
float scaleFactor = 4f / renderer.getDisplayScale();
|
||||
|
||||
//draw objective markers
|
||||
state.rules.objectives.eachRunning(obj -> {
|
||||
for(var marker : obj.markers){
|
||||
if(!marker.minimap){
|
||||
marker.drawWorld();
|
||||
if(marker.world){
|
||||
marker.draw(marker.autoscale ? scaleFactor : 1);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
for(var marker : state.markers){
|
||||
if(!marker.isHidden() && !marker.minimap){
|
||||
marker.drawWorld();
|
||||
if(marker.world){
|
||||
marker.draw(marker.autoscale ? scaleFactor : 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -101,8 +101,6 @@ public class UI implements ApplicationListener, Loadable{
|
||||
|
||||
@Override
|
||||
public void loadSync(){
|
||||
loadColors();
|
||||
|
||||
Fonts.outline.getData().markupEnabled = true;
|
||||
Fonts.def.getData().markupEnabled = true;
|
||||
Fonts.def.setOwnsTexture(false);
|
||||
@@ -281,7 +279,7 @@ public class UI implements ApplicationListener, Loadable{
|
||||
|
||||
public void showTextInput(String titleText, String text, int textLength, String def, boolean numbers, boolean allowEmpty, Cons<String> confirmed, Runnable closed){
|
||||
if(mobile){
|
||||
var description = text;
|
||||
var description = (text.startsWith("@") ? Core.bundle.get(text.substring(1)) : text);
|
||||
var empty = allowEmpty;
|
||||
Core.input.getTextInput(new TextInput(){{
|
||||
this.title = (titleText.startsWith("@") ? Core.bundle.get(titleText.substring(1)) : titleText);
|
||||
|
||||
@@ -43,6 +43,8 @@ public abstract class UnlockableContent extends MappableContent{
|
||||
public TextureRegion uiIcon;
|
||||
/** Icon of the full content. Unscaled.*/
|
||||
public TextureRegion fullIcon;
|
||||
/** Override for the full icon. Useful for mod content with duplicate icons. Overrides any other full icon.*/
|
||||
public String fullOverride = "";
|
||||
/** The tech tree node for this content, if applicable. Null if not part of a tech tree. */
|
||||
public @Nullable TechNode techNode;
|
||||
/** Tech nodes for all trees that this content is part of. */
|
||||
@@ -62,11 +64,12 @@ public abstract class UnlockableContent extends MappableContent{
|
||||
@Override
|
||||
public void loadIcon(){
|
||||
fullIcon =
|
||||
Core.atlas.find(fullOverride,
|
||||
Core.atlas.find(getContentType().name() + "-" + name + "-full",
|
||||
Core.atlas.find(name + "-full",
|
||||
Core.atlas.find(name,
|
||||
Core.atlas.find(getContentType().name() + "-" + name,
|
||||
Core.atlas.find(name + "1")))));
|
||||
Core.atlas.find(name + "1"))))));
|
||||
|
||||
uiIcon = Core.atlas.find(getContentType().name() + "-" + name + "-ui", fullIcon);
|
||||
}
|
||||
@@ -115,6 +118,7 @@ public abstract class UnlockableContent extends MappableContent{
|
||||
var result = Pixmaps.outline(base, outlineColor, outlineRadius);
|
||||
Drawf.checkBleed(result);
|
||||
packer.add(page, regName, result);
|
||||
result.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -126,6 +130,7 @@ public abstract class UnlockableContent extends MappableContent{
|
||||
var result = Pixmaps.outline(base, outlineColor, outlineRadius);
|
||||
Drawf.checkBleed(result);
|
||||
packer.add(PageType.main, name, result);
|
||||
result.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -301,6 +301,14 @@ public class MapEditor{
|
||||
if(previous.in(px, py)){
|
||||
tiles.set(x, y, previous.getn(px, py));
|
||||
Tile tile = tiles.getn(x, y);
|
||||
|
||||
Object config = null;
|
||||
|
||||
//fetch the old config first, configs can be relative to block position (tileX/tileY) before those are reassigned
|
||||
if(tile.build != null && tile.isCenter()){
|
||||
config = tile.build.config();
|
||||
}
|
||||
|
||||
tile.x = (short)x;
|
||||
tile.y = (short)y;
|
||||
|
||||
@@ -309,9 +317,12 @@ public class MapEditor{
|
||||
tile.build.y = y * tilesize + tile.block().offset;
|
||||
|
||||
//shift links to account for map resize
|
||||
Object config = tile.build.config();
|
||||
if(config != null){
|
||||
Object out = BuildPlan.pointConfig(tile.block(), config, p -> p.sub(offsetX, offsetY));
|
||||
Object out = BuildPlan.pointConfig(tile.block(), config, p -> {
|
||||
if(!tile.build.block.ignoreResizeConfig){
|
||||
p.sub(offsetX, offsetY);
|
||||
}
|
||||
});
|
||||
if(out != config){
|
||||
tile.build.configureAny(out);
|
||||
}
|
||||
|
||||
@@ -91,6 +91,8 @@ public class MapLocalesDialog extends BaseDialog{
|
||||
t.button("@edit", Icon.edit, this::editDialog).size(210f, 64f);
|
||||
}).growX();
|
||||
|
||||
resized(this::buildMain);
|
||||
|
||||
buttons.button("?", () -> ui.showInfo("@locales.info")).size(60f, 64f).uniform();
|
||||
|
||||
shown(this::setup);
|
||||
@@ -158,7 +160,7 @@ public class MapLocalesDialog extends BaseDialog{
|
||||
|
||||
saved = false;
|
||||
buildMain();
|
||||
}).padTop(10f).size(400f, 50f).fillX().row();
|
||||
}).padTop(10f).size(cardWidth, 50f).fillX().row();
|
||||
}).right();
|
||||
}
|
||||
|
||||
@@ -184,7 +186,7 @@ public class MapLocalesDialog extends BaseDialog{
|
||||
|
||||
selectedLocale = name;
|
||||
buildTables();
|
||||
}).update(b -> b.setChecked(selectedLocale.equals(name))).size(300f, 50f);
|
||||
}).update(b -> b.setChecked(selectedLocale.equals(name))).width(200f).minHeight(50f);
|
||||
p.button(Icon.edit, Styles.flati, () -> localeEditDialog(name)).size(50f);
|
||||
p.button(Icon.trash, Styles.flati, () -> ui.showConfirm("@confirm", "@locales.deletelocale", () -> {
|
||||
locales.remove(name);
|
||||
@@ -196,7 +198,7 @@ public class MapLocalesDialog extends BaseDialog{
|
||||
}
|
||||
}
|
||||
}).row();
|
||||
langs.button("@add", Icon.add, this::addLocaleDialog).padTop(10f).width(400f);
|
||||
langs.button("@add", Icon.add, this::addLocaleDialog).padTop(10f).width(250f);
|
||||
}
|
||||
|
||||
private void buildMain(){
|
||||
@@ -206,7 +208,7 @@ public class MapLocalesDialog extends BaseDialog{
|
||||
|
||||
main.image().color(Pal.gray).height(3f).growX().expandY().top().row();
|
||||
main.pane(p -> {
|
||||
int cols = Math.max(1, (Core.graphics.getWidth() - 630) / ((int)cardWidth + 10));
|
||||
int cols = Math.max(1, (int)((Core.graphics.getWidth() / Scl.scl() - 410f) / cardWidth) - 1);
|
||||
if(props.size == 0){
|
||||
main.add("@empty").center().row();
|
||||
return;
|
||||
@@ -512,7 +514,7 @@ public class MapLocalesDialog extends BaseDialog{
|
||||
|
||||
propView.image().color(Pal.gray).height(3f).fillX().top().row();
|
||||
propView.pane(p -> {
|
||||
int cols = (Core.graphics.getWidth() - 100) / ((int)cardWidth + 10);
|
||||
int cols = Math.max(1, (int)((Core.graphics.getWidth() / Scl.scl() - 100f) / cardWidth));
|
||||
if(cols == 0){
|
||||
propView.add("@empty").center().row();
|
||||
return;
|
||||
@@ -720,7 +722,9 @@ public class MapLocalesDialog extends BaseDialog{
|
||||
if(!locales.containsKey(key)) return "";
|
||||
|
||||
for(var prop : locales.get(key).entries()){
|
||||
data.append(prop.key).append(" = ").append(prop.value).append("\n");
|
||||
// Convert \n in plain text to \\n, then convert newlines to \n
|
||||
data.append(prop.key).append(" = ").append(prop.value
|
||||
.replace("\\n", "\\\\n").replace("\n", "\\n")).append("\n");
|
||||
}
|
||||
|
||||
return data.toString();
|
||||
@@ -738,7 +742,9 @@ public class MapLocalesDialog extends BaseDialog{
|
||||
}else{
|
||||
int sepIndex = line.indexOf(" = ");
|
||||
if(sepIndex != -1 && !currentLocale.isEmpty()){
|
||||
bundles.get(currentLocale).put(line.substring(0, sepIndex), line.substring(sepIndex + 3));
|
||||
// Convert \n in file to newlines in text, then revert newlines with escape characters
|
||||
bundles.get(currentLocale).put(line.substring(0, sepIndex), line.substring(sepIndex + 3)
|
||||
.replace("\\n", "\n").replace("\\\n", "\\n"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -752,7 +758,9 @@ public class MapLocalesDialog extends BaseDialog{
|
||||
for(var line : data.split("\\r?\\n|\\r")){
|
||||
int sepIndex = line.indexOf(" = ");
|
||||
if(sepIndex != -1){
|
||||
map.put(line.substring(0, sepIndex), line.substring(sepIndex + 3));
|
||||
// Convert \n in file to newlines in text, then revert newlines with escape characters
|
||||
map.put(line.substring(0, sepIndex), line.substring(sepIndex + 3)
|
||||
.replace("\\n", "\n").replace("\\\n", "\\n"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -246,6 +246,38 @@ public class MapObjectivesDialog extends BaseDialog{
|
||||
show();
|
||||
}});
|
||||
|
||||
setInterpreter(Vertices.class, float[].class, (cont, name, type, field, remover, indexer, get, set) -> cont.table(main -> {
|
||||
float[] data = get.get();
|
||||
|
||||
name(cont, name, remover, indexer);
|
||||
cont.table(t -> {
|
||||
t.left().defaults().left();
|
||||
|
||||
String[] names = {"x", "y", "color", "u", "v"};
|
||||
int stride = 6;
|
||||
int vertices = data.length / stride;
|
||||
|
||||
for(int i = 0; i < vertices; i++){
|
||||
int offset = i * stride;
|
||||
|
||||
t.table(row -> {
|
||||
for(int j = 0; j < names.length; j++){
|
||||
int index = offset + j;
|
||||
|
||||
if("color".equals(names[j])) {
|
||||
getInterpreter(Color.class).build(row, names[j], new TypeInfo(Color.class), null, null, null, () -> new Color().abgr8888(data[index]), value -> data[index] = value.toFloatBits());
|
||||
}else{
|
||||
float scale = j <= 1 ? tilesize : 1;
|
||||
getInterpreter(float.class).build(row, names[j], new TypeInfo(float.class), null, null, null, () -> data[index] / scale, value -> data[index] = value * scale);
|
||||
}
|
||||
|
||||
row.add().pad(4);
|
||||
}
|
||||
}).row();
|
||||
}
|
||||
});
|
||||
}));
|
||||
|
||||
// Types that use the default interpreter. It would be nice if all types could use it, but I don't know how to reliably prevent classes like [? extends Content] from using it.
|
||||
for(var obj : MapObjectives.allObjectiveTypes) setInterpreter(obj.get().getClass(), defaultInterpreter());
|
||||
for(var mark : MapObjectives.allMarkerTypes) setInterpreter(mark.get().getClass(), defaultInterpreter());
|
||||
@@ -290,10 +322,12 @@ public class MapObjectivesDialog extends BaseDialog{
|
||||
t.button(Icon.downOpen, Styles.emptyi, () -> indexer.get(false)).fill().padRight(4f);
|
||||
}
|
||||
|
||||
t.button(Icon.add, Styles.emptyi, () -> getProvider(type.element.raw).get(type.element, res -> {
|
||||
arr.add(res);
|
||||
rebuild[0].run();
|
||||
})).fill();
|
||||
if(!field.isAnnotationPresent(Immutable.class)) {
|
||||
t.button(Icon.add, Styles.emptyi, () -> getProvider(type.element.raw).get(type.element, res -> {
|
||||
arr.add(res);
|
||||
rebuild[0].run();
|
||||
})).fill();
|
||||
}
|
||||
}).growX().height(46f).pad(0f, -10f, 0f, -10f).get();
|
||||
|
||||
main.row().table(Tex.button, t -> rebuild[0] = () -> {
|
||||
@@ -312,10 +346,10 @@ public class MapObjectivesDialog extends BaseDialog{
|
||||
|
||||
getInterpreter((Class<Object>)arr.get(index).getClass()).build(
|
||||
t, "", new TypeInfo(arr.get(index).getClass()),
|
||||
field, () -> {
|
||||
field, field == null || !field.isAnnotationPresent(Immutable.class) ? () -> {
|
||||
arr.remove(index);
|
||||
rebuild[0].run();
|
||||
}, field == null || !field.isAnnotationPresent(Unordered.class) ? in -> {
|
||||
} : null, field == null || !field.isAnnotationPresent(Unordered.class) ? in -> {
|
||||
if(in && index > 0){
|
||||
arr.swap(index, index - 1);
|
||||
rebuild[0].run();
|
||||
|
||||
@@ -192,8 +192,18 @@ public class Units{
|
||||
|
||||
/** Returns the nearest enemy tile in a range. */
|
||||
public static Building findEnemyTile(Team team, float x, float y, float range, Boolf<Building> pred){
|
||||
return findEnemyTile(team, x, y, range, false, pred);
|
||||
}
|
||||
|
||||
/** Returns the nearest enemy tile in a range. */
|
||||
public static Building findEnemyTile(Team team, float x, float y, float range, boolean checkUnder, Boolf<Building> pred){
|
||||
if(team == Team.derelict) return null;
|
||||
|
||||
if(checkUnder){
|
||||
Building target = indexer.findEnemyTile(team, x, y, range, build -> !build.block.underBullets && pred.get(build));
|
||||
if(target != null) return target;
|
||||
}
|
||||
|
||||
return indexer.findEnemyTile(team, x, y, range, pred);
|
||||
}
|
||||
|
||||
@@ -243,7 +253,7 @@ public class Units{
|
||||
if(unit != null){
|
||||
return unit;
|
||||
}else{
|
||||
return findEnemyTile(team, x, y, range, tilePred);
|
||||
return findEnemyTile(team, x, y, range, true, tilePred);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -255,7 +265,7 @@ public class Units{
|
||||
if(unit != null){
|
||||
return unit;
|
||||
}else{
|
||||
return findEnemyTile(team, x, y, range, tilePred);
|
||||
return findEnemyTile(team, x, y, range, true, tilePred);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -12,10 +12,20 @@ import mindustry.world.meta.*;
|
||||
|
||||
public class ArmorPlateAbility extends Ability{
|
||||
public TextureRegion plateRegion;
|
||||
public Color color = Color.valueOf("d1efff");
|
||||
public TextureRegion shineRegion;
|
||||
public String plateSuffix = "-armor";
|
||||
public String shineSuffix = "-shine";
|
||||
/** Color of the shine. If null, uses team color. */
|
||||
public @Nullable Color color = null;
|
||||
public float shineSpeed = 1f;
|
||||
public float z = -1;
|
||||
|
||||
/** Whether to draw the plate region. */
|
||||
public boolean drawPlate = true;
|
||||
/** Whether to draw the shine over the plate region. */
|
||||
public boolean drawShine = true;
|
||||
|
||||
public float healthMultiplier = 0.2f;
|
||||
public float z = Layer.effect;
|
||||
|
||||
protected float warmup;
|
||||
|
||||
@@ -34,24 +44,39 @@ public class ArmorPlateAbility extends Ability{
|
||||
|
||||
@Override
|
||||
public void draw(Unit unit){
|
||||
if(!drawPlate && !drawShine) return;
|
||||
|
||||
if(warmup > 0.001f){
|
||||
if(plateRegion == null){
|
||||
plateRegion = Core.atlas.find(unit.type.name + "-armor", unit.type.region);
|
||||
plateRegion = Core.atlas.find(unit.type.name + plateSuffix, unit.type.region);
|
||||
shineRegion = Core.atlas.find(unit.type.name + shineSuffix, plateRegion);
|
||||
}
|
||||
|
||||
Draw.draw(z <= 0 ? Draw.z() : z, () -> {
|
||||
Shaders.armor.region = plateRegion;
|
||||
Shaders.armor.progress = warmup;
|
||||
Shaders.armor.time = -Time.time / 20f;
|
||||
float pz = Draw.z();
|
||||
if(z > 0) Draw.z(z);
|
||||
|
||||
Draw.rect(Shaders.armor.region, unit.x, unit.y, unit.rotation - 90f);
|
||||
Draw.color(color);
|
||||
Draw.shader(Shaders.armor);
|
||||
Draw.rect(Shaders.armor.region, unit.x, unit.y, unit.rotation - 90f);
|
||||
Draw.shader();
|
||||
if(drawPlate){
|
||||
Draw.alpha(warmup);
|
||||
Draw.rect(plateRegion, unit.x, unit.y, unit.rotation - 90f);
|
||||
Draw.alpha(1f);
|
||||
}
|
||||
|
||||
Draw.reset();
|
||||
});
|
||||
if(drawShine){
|
||||
Draw.draw(Draw.z(), () -> {
|
||||
Shaders.armor.region = shineRegion;
|
||||
Shaders.armor.progress = warmup;
|
||||
Shaders.armor.time = -Time.time / 20f * shineSpeed;
|
||||
|
||||
Draw.color(color == null ? unit.team.color : color);
|
||||
Draw.shader(Shaders.armor);
|
||||
Draw.rect(shineRegion, unit.x, unit.y, unit.rotation - 90f);
|
||||
Draw.shader();
|
||||
|
||||
Draw.reset();
|
||||
});
|
||||
}
|
||||
|
||||
Draw.z(pz);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -174,6 +174,8 @@ public class BulletType extends Content implements Cloneable{
|
||||
public float fragVelocityMin = 0.2f, fragVelocityMax = 1f;
|
||||
/** Random range of frag lifetime as a multiplier. */
|
||||
public float fragLifeMin = 1f, fragLifeMax = 1f;
|
||||
/** Random offset of frag bullets from the parent bullet. */
|
||||
public float fragOffsetMin = 1f, fragOffsetMax = 7f;
|
||||
|
||||
/** Bullet that is created at a fixed interval. */
|
||||
public @Nullable BulletType intervalBullet;
|
||||
@@ -509,7 +511,7 @@ public class BulletType extends Content implements Cloneable{
|
||||
public void createFrags(Bullet b, float x, float y){
|
||||
if(fragBullet != null && (fragOnAbsorb || !b.absorbed)){
|
||||
for(int i = 0; i < fragBullets; i++){
|
||||
float len = Mathf.random(1f, 7f);
|
||||
float len = Mathf.random(fragOffsetMin, fragOffsetMax);
|
||||
float a = b.rotation() + Mathf.range(fragRandomSpread / 2) + fragAngle + ((i - fragBullets/2) * fragSpread);
|
||||
fragBullet.create(b, x + Angles.trnsx(a, len), y + Angles.trnsy(a, len), a, Mathf.random(fragVelocityMin, fragVelocityMax), Mathf.random(fragLifeMin, fragLifeMax));
|
||||
}
|
||||
|
||||
@@ -127,10 +127,10 @@ abstract class StatusComp implements Posc, Flyingc{
|
||||
return entry;
|
||||
}
|
||||
|
||||
/** Uses a dynamic status effect to override speed. */
|
||||
/** Uses a dynamic status effect to override speed (in tiles/second). */
|
||||
public void statusSpeed(float speed){
|
||||
//type.speed should never be 0
|
||||
applyDynamicStatus().speedMultiplier = speed / type.speed;
|
||||
applyDynamicStatus().speedMultiplier = speed / (type.speed * 60f / tilesize);
|
||||
}
|
||||
|
||||
/** Uses a dynamic status effect to change damage. */
|
||||
|
||||
@@ -21,18 +21,32 @@ public class SoundEffect extends Effect{
|
||||
public Effect effect;
|
||||
|
||||
public SoundEffect(){
|
||||
startDelay = -1;
|
||||
}
|
||||
|
||||
public SoundEffect(Sound sound, Effect effect){
|
||||
this();
|
||||
this.sound = sound;
|
||||
this.effect = effect;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(){
|
||||
if(startDelay < 0){
|
||||
startDelay = effect.startDelay;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void create(float x, float y, float rotation, Color color, Object data){
|
||||
if(!shouldCreate()) return;
|
||||
|
||||
sound.at(x, y, Mathf.random(minPitch, maxPitch), Mathf.random(minVolume, maxVolume));
|
||||
if(startDelay > 0){
|
||||
Time.run(startDelay, () -> sound.at(x, y, Mathf.random(minPitch, maxPitch), Mathf.random(minVolume, maxVolume)));
|
||||
}else{
|
||||
sound.at(x, y, Mathf.random(minPitch, maxPitch), Mathf.random(minVolume, maxVolume));
|
||||
}
|
||||
|
||||
effect.create(x, y, rotation, color, data);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -227,7 +227,7 @@ public class AIController implements UnitController{
|
||||
}
|
||||
|
||||
public Teamc target(float x, float y, float range, boolean air, boolean ground){
|
||||
return Units.closestTarget(unit.team, x, y, range, u -> u.checkTarget(air, ground), t -> ground);
|
||||
return Units.closestTarget(unit.team, x, y, range, u -> u.checkTarget(air, ground), t -> ground && (unit.type.targetUnderBlocks || !t.block.underBullets));
|
||||
}
|
||||
|
||||
public boolean retarget(){
|
||||
|
||||
@@ -39,6 +39,7 @@ public class EventType{
|
||||
socketConfigChanged,
|
||||
update,
|
||||
unitCommandChange,
|
||||
unitCommandPosition,
|
||||
unitCommandAttack,
|
||||
importMod,
|
||||
draw,
|
||||
|
||||
@@ -39,8 +39,6 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
||||
* @see #eachRunning(Cons)
|
||||
*/
|
||||
public Seq<MapObjective> all = new Seq<>(4);
|
||||
/** @see #checkChanged() */
|
||||
protected transient boolean changed;
|
||||
|
||||
static{
|
||||
registerObjective(
|
||||
@@ -61,12 +59,15 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
||||
|
||||
registerMarker(
|
||||
ShapeTextMarker::new,
|
||||
MinimapMarker::new,
|
||||
PointMarker::new,
|
||||
ShapeMarker::new,
|
||||
TextMarker::new,
|
||||
LineMarker::new,
|
||||
TextureMarker::new
|
||||
TextureMarker::new,
|
||||
QuadMarker::new
|
||||
);
|
||||
|
||||
registerLegacyMarker("Minimap", PointMarker::new);
|
||||
}
|
||||
|
||||
@SafeVarargs
|
||||
@@ -96,6 +97,15 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
||||
}
|
||||
}
|
||||
|
||||
public static void registerLegacyMarker(String name, Prov<? extends ObjectiveMarker> prov) {
|
||||
Class<?> type = prov.get().getClass();
|
||||
|
||||
markerNameToType.put(name, prov);
|
||||
markerNameToType.put(Strings.camelize(name), prov);
|
||||
JsonIO.classTag(Strings.camelize(name), type);
|
||||
JsonIO.classTag(name, type);
|
||||
}
|
||||
|
||||
/** Adds all given objectives to the executor as root objectives. */
|
||||
public void add(MapObjective... objectives){
|
||||
for(var objective : objectives) flatten(objective);
|
||||
@@ -114,21 +124,13 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
||||
eachRunning(obj -> {
|
||||
//objectives cannot get completed on the client, but they do try to update for timers and such
|
||||
if(obj.update() && !net.client()){
|
||||
obj.completed = true;
|
||||
obj.done();
|
||||
Call.completeObjective(all.indexOf(obj));
|
||||
}
|
||||
|
||||
changed |= obj.changed;
|
||||
obj.changed = false;
|
||||
});
|
||||
}
|
||||
|
||||
/** @return True if map rules should be synced. Reserved for {@link Vars#logic}; do not invoke directly! */
|
||||
public boolean checkChanged(){
|
||||
boolean has = changed;
|
||||
changed = false;
|
||||
|
||||
return has;
|
||||
public @Nullable MapObjective get(int index){
|
||||
return index < 0 || index >= all.size ? null : all.get(index);
|
||||
}
|
||||
|
||||
/** @return Whether there are any qualified objectives at all. */
|
||||
@@ -137,7 +139,6 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
||||
}
|
||||
|
||||
public void clear(){
|
||||
if(all.size > 0) changed = true;
|
||||
all.clear();
|
||||
}
|
||||
|
||||
@@ -179,7 +180,7 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
||||
/** Whether this objective has been done yet. This is internally set. */
|
||||
private boolean completed;
|
||||
/** Internal value. Do not modify! */
|
||||
private transient boolean depFinished, changed;
|
||||
private transient boolean depFinished;
|
||||
|
||||
/** @return True if this objective is done and should be removed from the executor. */
|
||||
public abstract boolean update();
|
||||
@@ -189,13 +190,9 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
||||
|
||||
/** Called once after {@link #update()} returns true, before this objective is removed. */
|
||||
public void done(){
|
||||
changed();
|
||||
Call.objectiveCompleted(flagsRemoved, flagsAdded);
|
||||
}
|
||||
|
||||
/** Notifies the executor that map rules should be synced. */
|
||||
protected void changed(){
|
||||
changed = true;
|
||||
state.rules.objectiveFlags.removeAll(flagsRemoved);
|
||||
state.rules.objectiveFlags.addAll(flagsAdded);
|
||||
completed = true;
|
||||
}
|
||||
|
||||
/** @return True if all {@link #parents} are completed, rendering this objective able to execute. */
|
||||
@@ -617,38 +614,26 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
||||
/** Internal use only! Do not access. */
|
||||
public transient int arrayIndex;
|
||||
|
||||
/** Whether to display marker on minimap instead of world. {@link MinimapMarker} ignores this value. */
|
||||
/** Whether to display marker in the world. */
|
||||
public boolean world = true;
|
||||
/** Whether to display marker on minimap. */
|
||||
public boolean minimap = false;
|
||||
/** Whether to scale marker corresponding to player's zoom level. {@link MinimapMarker} ignores this value. */
|
||||
/** Whether to scale marker corresponding to player's zoom level. */
|
||||
public boolean autoscale = false;
|
||||
/** Hides the marker, used by world processors. */
|
||||
protected boolean hidden = false;
|
||||
/** On which z-sorting layer is marker drawn. */
|
||||
protected float drawLayer = Layer.overlayUI;
|
||||
|
||||
/** Draws the marker. Actual marker position and scale are calculated in {@link #drawWorld()} and {@link #drawMinimap(MinimapRenderer)}. */
|
||||
public void baseDraw(float x, float y, float scaleFactor){}
|
||||
|
||||
/** Called in the main renderer. */
|
||||
public void drawWorld(){}
|
||||
|
||||
/** Called in the small and large map. */
|
||||
public void drawMinimap(MinimapRenderer minimap){}
|
||||
|
||||
/** Whether the marker is hidden */
|
||||
public boolean isHidden(){
|
||||
return hidden;
|
||||
}
|
||||
public void draw(float scaleFactor){}
|
||||
|
||||
/** Control marker with world processor code. Ignores NaN (null) values. */
|
||||
public void control(LMarkerControl type, double p1, double p2, double p3){
|
||||
if(Double.isNaN(p1)) return;
|
||||
|
||||
switch(type){
|
||||
case visibility -> hidden = Mathf.equal((float)p1, 0f);
|
||||
case drawLayer -> drawLayer = (float)p1;
|
||||
case world -> world = !Mathf.equal((float)p1, 0f);
|
||||
case minimap -> minimap = !Mathf.equal((float)p1, 0f);
|
||||
case autoscale -> autoscale = !Mathf.equal((float)p1, 0f);
|
||||
case drawLayer -> drawLayer = (float)p1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -688,34 +673,19 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
||||
/** Position of marker, in world coordinates */
|
||||
public @TilePos Vec2 pos = new Vec2();
|
||||
|
||||
/** Called in the main renderer. */
|
||||
@Override
|
||||
public void drawWorld(){
|
||||
baseDraw(pos.x, pos.y, autoscale ? 4f / renderer.getDisplayScale() : 1f);
|
||||
}
|
||||
|
||||
/** Called in the small and large map. */
|
||||
@Override
|
||||
public void drawMinimap(MinimapRenderer minimap){
|
||||
minimap.transform(Tmp.v1.set(pos.x + 4f, pos.y + 4f));
|
||||
baseDraw(Tmp.v1.x, Tmp.v1.y, minimap.getScaleFactor(autoscale));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void control(LMarkerControl type, double p1, double p2, double p3){
|
||||
super.control(type, p1, p2, p3);
|
||||
|
||||
if(!Double.isNaN(p1)){
|
||||
if(type == LMarkerControl.pos){
|
||||
pos.x = (float)p1 * tilesize;
|
||||
}else{
|
||||
super.control(type, p1, p2, p3);
|
||||
}
|
||||
}
|
||||
|
||||
if(!Double.isNaN(p2)){
|
||||
if(type == LMarkerControl.pos){
|
||||
pos.y = (float)p2 * tilesize;
|
||||
}else{
|
||||
super.control(type, p1, p2, p3);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -763,15 +733,15 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
||||
public ShapeTextMarker(){}
|
||||
|
||||
@Override
|
||||
public void baseDraw(float x, float y, float scaleFactor){
|
||||
public void draw(float scaleFactor){
|
||||
//in case some idiot decides to make 9999999 sides and freeze the game
|
||||
int sides = Math.min(this.sides, 300);
|
||||
|
||||
Draw.z(drawLayer);
|
||||
Lines.stroke(3f * scaleFactor, Pal.gray);
|
||||
Lines.poly(x, y, sides, (radius + 1f) * scaleFactor, rotation);
|
||||
Lines.poly(pos.x, pos.y, sides, (radius + 1f) * scaleFactor, rotation);
|
||||
Lines.stroke(scaleFactor, color);
|
||||
Lines.poly(x, y, sides, (radius + 1f) * scaleFactor, rotation);
|
||||
Lines.poly(pos.x, pos.y, sides, (radius + 1f) * scaleFactor, rotation);
|
||||
Draw.reset();
|
||||
|
||||
if(fetchedText == null){
|
||||
@@ -781,11 +751,13 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
||||
// font size cannot be 0
|
||||
if(Mathf.equal(fontSize, 0f)) return;
|
||||
|
||||
WorldLabel.drawAt(fetchedText, x, y + radius * scaleFactor + textHeight * scaleFactor, drawLayer, flags, fontSize * scaleFactor);
|
||||
WorldLabel.drawAt(fetchedText, pos.x, pos.y + radius * scaleFactor + textHeight * scaleFactor, drawLayer, flags, fontSize * scaleFactor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void control(LMarkerControl type, double p1, double p2, double p3){
|
||||
super.control(type, p1, p2, p3);
|
||||
|
||||
if(!Double.isNaN(p1)){
|
||||
switch(type){
|
||||
case fontSize -> fontSize = (float)p1;
|
||||
@@ -799,9 +771,8 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
||||
}
|
||||
case radius -> radius = (float)p1;
|
||||
case rotation -> rotation = (float)p1;
|
||||
case color -> color.set(Tmp.c1.fromDouble(p1));
|
||||
case color -> color.fromDouble(p1);
|
||||
case shape -> sides = (int)p1;
|
||||
default -> super.control(type, p1, p2, p3);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -814,7 +785,6 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
||||
flags &= ~WorldLabel.flagOutline;
|
||||
}
|
||||
}
|
||||
default -> super.control(type, p1, p2, p3);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -830,73 +800,50 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
||||
}
|
||||
}
|
||||
|
||||
/** Displays a circle on the minimap. */
|
||||
public static class MinimapMarker extends ObjectiveMarker{
|
||||
public Point2 pos = new Point2();
|
||||
/** Displays a circle in the world. */
|
||||
public static class PointMarker extends PosMarker{
|
||||
public float radius = 5f, stroke = 11f;
|
||||
public Color color = Color.valueOf("f25555");
|
||||
|
||||
public MinimapMarker(int x, int y){
|
||||
public PointMarker(int x, int y){
|
||||
this.pos.set(x, y);
|
||||
}
|
||||
|
||||
public MinimapMarker(int x, int y, Color color){
|
||||
public PointMarker(int x, int y, Color color){
|
||||
this.pos.set(x, y);
|
||||
this.color = color;
|
||||
minimap = true;
|
||||
}
|
||||
|
||||
public MinimapMarker(int x, int y, float radius, float stroke, Color color){
|
||||
public PointMarker(int x, int y, float radius, float stroke, Color color){
|
||||
this.pos.set(x, y);
|
||||
this.stroke = stroke;
|
||||
this.radius = radius;
|
||||
this.color = color;
|
||||
minimap = true;
|
||||
}
|
||||
|
||||
public MinimapMarker(){}
|
||||
public PointMarker(){}
|
||||
|
||||
@Override
|
||||
public void baseDraw(float x, float y, float scaleFactor){
|
||||
public void draw(float scaleFactor){
|
||||
float rad = radius * tilesize * scaleFactor;
|
||||
float fin = Interp.pow2Out.apply((Time.globalTime / 100f) % 1f);
|
||||
|
||||
Draw.z(drawLayer);
|
||||
Lines.stroke(Scl.scl((1f - fin) * stroke + 0.1f), color);
|
||||
Lines.circle(x, y, rad * fin);
|
||||
Lines.circle(pos.x, pos.y, rad * fin);
|
||||
|
||||
Draw.reset();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawWorld(){
|
||||
minimap = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawMinimap(MinimapRenderer minimap){
|
||||
minimap.transform(Tmp.v1.set(pos.x * tilesize, pos.y * tilesize));
|
||||
baseDraw(Tmp.v1.x, Tmp.v1.y, minimap.getScaleFactor(autoscale));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void control(LMarkerControl type, double p1, double p2, double p3){
|
||||
super.control(type, p1, p2, p3);
|
||||
|
||||
if(!Double.isNaN(p1)){
|
||||
switch(type){
|
||||
case pos -> pos.x = (int)p1;
|
||||
case radius -> radius = (float)p1;
|
||||
case stroke -> stroke = (float)p1;
|
||||
case color -> color.set(Tmp.c1.fromDouble(p1));
|
||||
case minimap -> minimap = true;
|
||||
default -> super.control(type, p1, p2, p3);
|
||||
}
|
||||
}
|
||||
|
||||
if(!Double.isNaN(p2)){
|
||||
if(type == LMarkerControl.pos){
|
||||
pos.y = (int)p2;
|
||||
}else{
|
||||
super.control(type, p1, p2, p3);
|
||||
case color -> color.fromDouble(p1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -922,7 +869,7 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
||||
public ShapeMarker(){}
|
||||
|
||||
@Override
|
||||
public void baseDraw(float x, float y, float scaleFactor){
|
||||
public void draw(float scaleFactor){
|
||||
//in case some idiot decides to make 9999999 sides and freeze the game
|
||||
int sides = Math.min(this.sides, 200);
|
||||
|
||||
@@ -930,14 +877,14 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
||||
if(!fill){
|
||||
if(outline){
|
||||
Lines.stroke((stroke + 2f) * scaleFactor, Pal.gray);
|
||||
Lines.poly(x, y, sides, (radius + 1f) * scaleFactor, rotation);
|
||||
Lines.poly(pos.x, pos.y, sides, (radius + 1f) * scaleFactor, rotation);
|
||||
}
|
||||
|
||||
Lines.stroke(stroke * scaleFactor, color);
|
||||
Lines.poly(x, y, sides, (radius + 1f) * scaleFactor, rotation);
|
||||
Lines.poly(pos.x, pos.y, sides, (radius + 1f) * scaleFactor, rotation);
|
||||
}else{
|
||||
Draw.color(color);
|
||||
Fill.poly(x, y, sides, radius * scaleFactor, rotation);
|
||||
Fill.poly(pos.x, pos.y, sides, radius * scaleFactor, rotation);
|
||||
}
|
||||
|
||||
Draw.reset();
|
||||
@@ -945,29 +892,27 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
||||
|
||||
@Override
|
||||
public void control(LMarkerControl type, double p1, double p2, double p3){
|
||||
super.control(type, p1, p2, p3);
|
||||
|
||||
if(!Double.isNaN(p1)){
|
||||
switch(type){
|
||||
case radius -> radius = (float)p1;
|
||||
case stroke -> stroke = (float)p1;
|
||||
case rotation -> rotation = (float)p1;
|
||||
case color -> color.set(Tmp.c1.fromDouble(p1));
|
||||
case color -> color.fromDouble(p1);
|
||||
case shape -> sides = (int)p1;
|
||||
default -> super.control(type, p1, p2, p3);
|
||||
}
|
||||
}
|
||||
|
||||
if(!Double.isNaN(p2)){
|
||||
switch(type){
|
||||
case shape -> fill = !Mathf.equal((float)p2, 0f);
|
||||
default -> super.control(type, p1, p2, p3);
|
||||
}
|
||||
}
|
||||
|
||||
if(!Double.isNaN(p3)){
|
||||
if(type == LMarkerControl.shape){
|
||||
outline = !Mathf.equal((float)p3, 0f);
|
||||
}else{
|
||||
super.control(type, p1, p2, p3);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -996,7 +941,7 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
||||
public TextMarker(){}
|
||||
|
||||
@Override
|
||||
public void baseDraw(float x, float y, float scaleFactor){
|
||||
public void draw(float scaleFactor){
|
||||
// font size cannot be 0
|
||||
if(Mathf.equal(fontSize, 0f)) return;
|
||||
|
||||
@@ -1004,11 +949,13 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
||||
fetchedText = fetchText(text);
|
||||
}
|
||||
|
||||
WorldLabel.drawAt(fetchedText, x, y, drawLayer, flags, fontSize * scaleFactor);
|
||||
WorldLabel.drawAt(fetchedText, pos.x, pos.y, drawLayer, flags, fontSize * scaleFactor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void control(LMarkerControl type, double p1, double p2, double p3){
|
||||
super.control(type, p1, p2, p3);
|
||||
|
||||
if(!Double.isNaN(p1)){
|
||||
switch(type){
|
||||
case fontSize -> fontSize = (float)p1;
|
||||
@@ -1019,7 +966,6 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
||||
flags &= ~WorldLabel.flagBackground;
|
||||
}
|
||||
}
|
||||
default -> super.control(type, p1, p2, p3);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1032,7 +978,6 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
||||
flags &= ~WorldLabel.flagOutline;
|
||||
}
|
||||
}
|
||||
default -> super.control(type, p1, p2, p3);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1053,7 +998,8 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
||||
public @TilePos Vec2 endPos = new Vec2();
|
||||
public float stroke = 1f;
|
||||
public boolean outline = true;
|
||||
public Color color = Color.valueOf("ffd37f");
|
||||
public Color color1 = Color.valueOf("ffd37f");
|
||||
public Color color2 = Color.valueOf("ffd37f");
|
||||
|
||||
public LineMarker(float x1, float y1, float x2, float y2, float stroke){
|
||||
this.stroke = stroke;
|
||||
@@ -1068,44 +1014,46 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
||||
|
||||
public LineMarker(){}
|
||||
|
||||
public void baseLineDraw(float x1, float y1, float x2, float y2, float scaleFactor){
|
||||
@Override
|
||||
public void draw(float scaleFactor){
|
||||
Draw.z(drawLayer);
|
||||
if(outline){
|
||||
Lines.stroke((stroke + 2f) * scaleFactor, Pal.gray);
|
||||
Lines.line(x1, y1, x2, y2);
|
||||
Lines.line(pos.x, pos.y, endPos.x, endPos.y);
|
||||
}
|
||||
|
||||
Lines.stroke(stroke * scaleFactor, color);
|
||||
Lines.line(x1, y1, x2, y2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawWorld(){
|
||||
baseLineDraw(pos.x, pos.y, endPos.x, endPos.y, autoscale ? 4f / renderer.getDisplayScale() : 1f);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawMinimap(MinimapRenderer minimap){
|
||||
minimap.transform(Tmp.v1.set(pos.x + 4f, pos.y + 4f));
|
||||
minimap.transform(Tmp.v2.set(endPos.x + 4f, endPos.y + 4f));
|
||||
baseLineDraw(Tmp.v1.x, Tmp.v1.y, Tmp.v2.x, Tmp.v2.y, minimap.getScaleFactor(autoscale));
|
||||
Lines.stroke(stroke * scaleFactor, Color.white);
|
||||
Lines.line(pos.x, pos.y, color1, endPos.x, endPos.y, color2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void control(LMarkerControl type, double p1, double p2, double p3){
|
||||
super.control(type, p1, p2, p3);
|
||||
|
||||
if(!Double.isNaN(p1)){
|
||||
switch(type){
|
||||
case endPos -> endPos.x = (float)p1 * tilesize;
|
||||
case stroke -> stroke = (float)p1;
|
||||
case color -> color.set(Tmp.c1.fromDouble(p1));
|
||||
default -> super.control(type, p1, p2, p3);
|
||||
case color -> color1.set(color2.fromDouble(p1));
|
||||
}
|
||||
}
|
||||
|
||||
if(!Double.isNaN(p2)){
|
||||
switch(type){
|
||||
case endPos -> endPos.y = (float)p2 * tilesize;
|
||||
default -> super.control(type, p1, p2, p3);
|
||||
}
|
||||
}
|
||||
|
||||
if(!Double.isNaN(p1) && !Double.isNaN(p2)){
|
||||
switch (type){
|
||||
case posi -> ((int)p1 == 0 ? pos : (int)p1 == 1 ? endPos : Tmp.v1).x = (float)p2 * tilesize;
|
||||
case colori -> ((int)p1 == 0 ? color1 : (int)p1 == 1 ? color2 : Tmp.c1).fromDouble(p2);
|
||||
}
|
||||
}
|
||||
|
||||
if(!Double.isNaN(p1) && !Double.isNaN(p3)){
|
||||
switch(type){
|
||||
case posi -> ((int)p1 == 0 ? pos : (int)p1 == 1 ? endPos : Tmp.v1).y = (float)p3 * tilesize;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1135,25 +1083,25 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
||||
|
||||
@Override
|
||||
public void control(LMarkerControl type, double p1, double p2, double p3){
|
||||
super.control(type, p1, p2, p3);
|
||||
|
||||
if(!Double.isNaN(p1)){
|
||||
switch(type){
|
||||
case rotation -> rotation = (float)p1;
|
||||
case textureSize -> width = (float)p1 * tilesize;
|
||||
case color -> color.set(Tmp.c1.fromDouble(p1));
|
||||
default -> super.control(type, p1, p2, p3);
|
||||
case color -> color.fromDouble(p1);
|
||||
}
|
||||
}
|
||||
|
||||
if(!Double.isNaN(p2)){
|
||||
switch(type){
|
||||
case textureSize -> height = (float)p2 * tilesize;
|
||||
default -> super.control(type, p1, p2, p3);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void baseDraw(float x, float y, float scaleFactor){
|
||||
public void draw(float scaleFactor){
|
||||
if(textureName.isEmpty()) return;
|
||||
|
||||
if(fetchedRegion == null) setTexture(textureName);
|
||||
@@ -1164,7 +1112,7 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
||||
|
||||
Draw.z(drawLayer);
|
||||
Draw.color(color);
|
||||
Draw.rect(fetchedRegion, x, y, width * scaleFactor, height * scaleFactor, rotation);
|
||||
Draw.rect(fetchedRegion, pos.x, pos.y, width * scaleFactor, height * scaleFactor, rotation);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1172,19 +1120,126 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
||||
this.textureName = textureName;
|
||||
|
||||
if(fetchedRegion == null) fetchedRegion = new TextureRegion();
|
||||
lookupRegion(textureName, fetchedRegion);
|
||||
}
|
||||
|
||||
TextureRegion region = Core.atlas.find(textureName);
|
||||
if(region.found()){
|
||||
fetchedRegion.set(region);
|
||||
}else{
|
||||
if(Core.assets.isLoaded(textureName, Texture.class)){
|
||||
fetchedRegion.set(Core.assets.get(textureName, Texture.class));
|
||||
}else{
|
||||
fetchedRegion.set(Core.atlas.find("error"));
|
||||
}
|
||||
|
||||
public static class QuadMarker extends ObjectiveMarker{
|
||||
public String textureName = "white";
|
||||
public @Vertices float[] vertices = new float[24];
|
||||
private boolean mapRegion = true;
|
||||
|
||||
private transient TextureRegion fetchedRegion;
|
||||
|
||||
public QuadMarker() {
|
||||
for(int i = 0; i < 4; i++){
|
||||
vertices[i * 6 + 2] = Color.white.toFloatBits();
|
||||
vertices[i * 6 + 5] = Color.clearFloatBits;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw(float scaleFactor){
|
||||
if(fetchedRegion == null) setTexture(textureName);
|
||||
|
||||
Draw.z(drawLayer);
|
||||
Draw.vert(fetchedRegion.texture, vertices, 0, vertices.length);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void control(LMarkerControl type, double p1, double p2, double p3){
|
||||
super.control(type, p1, p2, p3);
|
||||
|
||||
if(!Double.isNaN(p1)){
|
||||
switch(type){
|
||||
case color -> {
|
||||
float col = Tmp.c1.fromDouble(p1).toFloatBits();
|
||||
for(int i = 0; i < 4; i++) vertices[i * 6 + 2] = col;
|
||||
}
|
||||
case pos -> vertices[0] = (float)p1 * tilesize;
|
||||
case posi -> setPos((int)p1, p2, p3);
|
||||
case uvi -> setUv((int)p1, p2, p3);
|
||||
}
|
||||
}
|
||||
|
||||
if(!Double.isNaN(p2)){
|
||||
switch(type){
|
||||
case pos -> vertices[1] = (float)p1 * tilesize;
|
||||
}
|
||||
}
|
||||
|
||||
if(!Double.isNaN(p1) && !Double.isNaN(p2)){
|
||||
switch(type){
|
||||
case colori -> setColor((int)p1, p2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTexture(String textureName){
|
||||
this.textureName = textureName;
|
||||
|
||||
boolean firstUpdate = fetchedRegion == null;
|
||||
|
||||
if(fetchedRegion == null) fetchedRegion = new TextureRegion();
|
||||
Tmp.tr1.set(fetchedRegion);
|
||||
|
||||
lookupRegion(textureName, fetchedRegion);
|
||||
|
||||
if(firstUpdate){
|
||||
if(mapRegion){
|
||||
mapRegion = false;
|
||||
|
||||
// possibly from the editor, we need to clamp the values
|
||||
for(int i = 0; i < 4; i++){
|
||||
vertices[i * 6 + 3] = Mathf.map(Mathf.clamp(vertices[i * 6 + 3]), fetchedRegion.u, fetchedRegion.u2);
|
||||
vertices[i * 6 + 4] = Mathf.map(1 - Mathf.clamp(vertices[i * 6 + 4]), fetchedRegion.v, fetchedRegion.v2);
|
||||
}
|
||||
}
|
||||
}else{
|
||||
for(int i = 0; i < 4; i++){
|
||||
vertices[i * 6 + 3] = Mathf.map(vertices[i * 6 + 3], Tmp.tr1.u, Tmp.tr1.u2, fetchedRegion.u, fetchedRegion.u2);
|
||||
vertices[i * 6 + 4] = Mathf.map(vertices[i * 6 + 4], Tmp.tr1.v, Tmp.tr1.v2, fetchedRegion.v, fetchedRegion.v2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setPos(int i, double x, double y){
|
||||
if(i >= 0 && i < 4){
|
||||
if(!Double.isNaN(x)) vertices[i * 6] = (float)x * tilesize;
|
||||
if(!Double.isNaN(y)) vertices[i * 6 + 1] = (float)y * tilesize;
|
||||
}
|
||||
}
|
||||
|
||||
private void setColor(int i, double c){
|
||||
if(i >= 0 && i < 4){
|
||||
vertices[i * 6 + 2] = Tmp.c1.fromDouble(c).toFloatBits();
|
||||
}
|
||||
}
|
||||
|
||||
private void setUv(int i, double u, double v){
|
||||
if(i >= 0 && i < 4){
|
||||
if(fetchedRegion == null) setTexture(textureName);
|
||||
|
||||
if(!Double.isNaN(u)) vertices[i * 6 + 3] = Mathf.map(Mathf.clamp((float)u), fetchedRegion.u, fetchedRegion.u2);
|
||||
if(!Double.isNaN(v)) vertices[i * 6 + 4] = Mathf.map(1 - Mathf.clamp((float)v), fetchedRegion.v, fetchedRegion.v2);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static void lookupRegion(String name, TextureRegion out){
|
||||
TextureRegion region = Core.atlas.find(name);
|
||||
if(region.found()){
|
||||
out.set(region);
|
||||
}else{
|
||||
if(Core.assets.isLoaded(name, Texture.class)){
|
||||
out.set(Core.assets.get(name, Texture.class));
|
||||
}else{
|
||||
out.set(Core.atlas.find("error"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** For arrays or {@link Seq}s; does not create element rearrangement buttons. */
|
||||
@@ -1192,6 +1247,16 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
||||
@Retention(RUNTIME)
|
||||
public @interface Unordered{}
|
||||
|
||||
/** For arrays or {@link Seq}s; does not add the new and delete buttons */
|
||||
@Target(FIELD)
|
||||
@Retention(RUNTIME)
|
||||
public @interface Immutable{}
|
||||
|
||||
/** For {@code float[]}; treats it as an array of vertices. */
|
||||
@Target(FIELD)
|
||||
@Retention(RUNTIME)
|
||||
public @interface Vertices{}
|
||||
|
||||
/** For {@code byte}; treats it as a world label flag. */
|
||||
@Target(FIELD)
|
||||
@Retention(RUNTIME)
|
||||
|
||||
@@ -31,7 +31,7 @@ public class Schematic implements Publishable, Comparable<Schematic>{
|
||||
}
|
||||
|
||||
public float powerProduction(){
|
||||
return tiles.sumf(s -> s.block instanceof PowerGenerator p ? p.powerProduction : 0f);
|
||||
return tiles.sumf(s -> s.block instanceof PowerGenerator p ? p.getDisplayedPowerProduction() : 0f);
|
||||
}
|
||||
|
||||
public float powerConsumption(){
|
||||
|
||||
@@ -146,26 +146,37 @@ public class MinimapRenderer{
|
||||
|
||||
rect.set((dx - sz) * tilesize, (dy - sz) * tilesize, sz * 2 * tilesize, sz * 2 * tilesize);
|
||||
|
||||
Tmp.m2.set(Draw.trans());
|
||||
|
||||
float scaleFactor;
|
||||
var trans = Tmp.m1.idt();
|
||||
trans.translate(lastX, lastY);
|
||||
if(!worldSpace){
|
||||
trans.scl(Tmp.v1.set(scaleFactor = lastW / rect.width, lastH / rect.height));
|
||||
trans.translate(-rect.x, -rect.y);
|
||||
}else{
|
||||
trans.scl(Tmp.v1.set(scaleFactor = lastW / world.unitWidth(), lastH / world.unitHeight()));
|
||||
}
|
||||
trans.translate(tilesize / 2f, tilesize / 2f);
|
||||
Draw.trans(trans);
|
||||
|
||||
scaleFactor = 1f / scaleFactor;
|
||||
|
||||
for(Unit unit : units){
|
||||
if(unit.inFogTo(player.team()) || !unit.type.drawMinimap) continue;
|
||||
|
||||
float rx = !fullView ? (unit.x - rect.x) / rect.width * w : unit.x / (world.width() * tilesize) * w;
|
||||
float ry = !fullView ? (unit.y - rect.y) / rect.width * h : unit.y / (world.height() * tilesize) * h;
|
||||
float scale = Scl.scl(1f) * tilesize * 3;
|
||||
var region = unit.icon();
|
||||
|
||||
Draw.mixcol(unit.team.color, 1f);
|
||||
float scale = Scl.scl(1f) / 2f * scaling * 32f;
|
||||
var region = unit.icon();
|
||||
Draw.rect(region, x + rx, y + ry, scale, scale * (float)region.height / region.width, unit.rotation() - 90);
|
||||
Draw.rect(region, unit.x, unit.y, scale, scale * (float)region.height / region.width, unit.rotation() - 90);
|
||||
Draw.reset();
|
||||
}
|
||||
|
||||
if(fullView && net.active()){
|
||||
for(Player player : Groups.player){
|
||||
if(!player.dead()){
|
||||
float rx = player.x / (world.width() * tilesize) * w;
|
||||
float ry = player.y / (world.height() * tilesize) * h;
|
||||
|
||||
drawLabel(x + rx, y + ry, player.name, player.color);
|
||||
drawLabel(player.x, player.y, player.name, player.color);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -186,15 +197,14 @@ public class MinimapRenderer{
|
||||
//crisp pixels
|
||||
dynamicTex.setFilter(TextureFilter.nearest);
|
||||
|
||||
if(worldSpace){
|
||||
region.set(0f, 0f, 1f, 1f);
|
||||
}
|
||||
|
||||
Tmp.tr1.set(dynamicTex);
|
||||
Tmp.tr1.set(region.u, 1f - region.v, region.u2, 1f - region.v2);
|
||||
Tmp.tr1.set(0f, 1f, 1f, 0f);
|
||||
|
||||
float wf = world.width() * tilesize;
|
||||
float hf = world.height() * tilesize;
|
||||
|
||||
Draw.color(state.rules.dynamicColor, 0.5f);
|
||||
Draw.rect(Tmp.tr1, x + w/2f, y + h/2f, w, h);
|
||||
Draw.rect(Tmp.tr1, wf / 2, hf / 2, wf, hf);
|
||||
|
||||
if(state.rules.staticFog){
|
||||
staticTex.setFilter(TextureFilter.nearest);
|
||||
@@ -202,7 +212,7 @@ public class MinimapRenderer{
|
||||
Tmp.tr1.texture = staticTex;
|
||||
//must be black to fit with borders
|
||||
Draw.color(0f, 0f, 0f, 1f);
|
||||
Draw.rect(Tmp.tr1, x + w/2f, y + h/2f, w, h);
|
||||
Draw.rect(Tmp.tr1, wf / 2, hf / 2, wf, hf);
|
||||
}
|
||||
|
||||
Draw.color();
|
||||
@@ -211,23 +221,21 @@ public class MinimapRenderer{
|
||||
|
||||
//TODO might be useful in the standard minimap too
|
||||
if(fullView){
|
||||
drawSpawns(x, y, w, h, scaling);
|
||||
drawSpawns();
|
||||
|
||||
if(!mobile){
|
||||
//draw bounds for camera - not drawn on mobile because you can't shift it by tapping anyway
|
||||
Rect r = Core.camera.bounds(Tmp.r1);
|
||||
Vec2 bot = transform(Tmp.v1.set(r.x, r.y));
|
||||
Vec2 top = transform(Tmp.v2.set(r.x + r.width, r.y + r.height));
|
||||
Lines.stroke(Scl.scl(3f));
|
||||
Lines.stroke(Scl.scl(3f) * scaleFactor);
|
||||
Draw.color(Pal.accent);
|
||||
Lines.rect(bot.x,bot.y, top.x - bot.x, top.y - bot.y);
|
||||
Lines.rect(r.x, r.y, r.width, r.height);
|
||||
Draw.reset();
|
||||
}
|
||||
}
|
||||
|
||||
LongSeq indicators = control.indicators.list();
|
||||
float fin = ((Time.globalTime / 30f) % 1f);
|
||||
float rad = scale(fin * 5f + tilesize - 2f);
|
||||
float rad = fin * 5f + tilesize - 2f;
|
||||
Lines.stroke(Scl.scl((1f - fin) * 4f + 0.5f));
|
||||
|
||||
for(int i = 0; i < indicators.size; i++){
|
||||
@@ -244,31 +252,32 @@ public class MinimapRenderer{
|
||||
offset = build.block.offset / tilesize;
|
||||
}
|
||||
|
||||
Vec2 v = transform(Tmp.v1.set((ix + 0.5f + offset) * tilesize, (iy + 0.5f + offset) * tilesize));
|
||||
|
||||
Draw.color(Color.orange, Color.scarlet, Mathf.clamp(time / 70f));
|
||||
|
||||
Lines.square(v.x, v.y, rad);
|
||||
Lines.square((ix + 0.5f + offset) * tilesize, (iy + 0.5f + offset) * tilesize, rad);
|
||||
}
|
||||
|
||||
Draw.reset();
|
||||
|
||||
//TODO autoscale markers
|
||||
state.rules.objectives.eachRunning(obj -> {
|
||||
for(var marker : obj.markers){
|
||||
if(marker.minimap){
|
||||
marker.drawMinimap(this);
|
||||
marker.draw(1);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
for(var marker : state.markers){
|
||||
if(!marker.isHidden() && marker.minimap){
|
||||
marker.drawMinimap(this);
|
||||
if(marker.minimap){
|
||||
marker.draw(1);
|
||||
}
|
||||
}
|
||||
|
||||
Draw.trans(Tmp.m2);
|
||||
}
|
||||
|
||||
public void drawSpawns(float x, float y, float w, float h, float scaling){
|
||||
public void drawSpawns(){
|
||||
if(!state.rules.showSpawns || !state.hasSpawns() || !state.rules.waves) return;
|
||||
|
||||
TextureRegion icon = Icon.units.getRegion();
|
||||
@@ -277,44 +286,21 @@ public class MinimapRenderer{
|
||||
|
||||
Draw.color(state.rules.waveTeam.color, Tmp.c2.set(state.rules.waveTeam.color).value(1.2f), Mathf.absin(Time.time, 16f, 1f));
|
||||
|
||||
float rad = scale(state.rules.dropZoneRadius);
|
||||
float rad = state.rules.dropZoneRadius;
|
||||
float curve = Mathf.curve(Time.time % 240f, 120f, 240f);
|
||||
|
||||
for(Tile tile : spawner.getSpawns()){
|
||||
float tx = ((tile.x + 0.5f) / world.width()) * w;
|
||||
float ty = ((tile.y + 0.5f) / world.height()) * h;
|
||||
float tx = tile.worldx();
|
||||
float ty = tile.worldy();
|
||||
|
||||
Draw.rect(icon, x + tx, y + ty, icon.width, icon.height);
|
||||
Lines.circle(x + tx, y + ty, rad);
|
||||
if(curve > 0f) Lines.circle(x + tx, y + ty, rad * Interp.pow3Out.apply(curve));
|
||||
Draw.rect(icon, tx, ty, icon.width, icon.height);
|
||||
Lines.circle(tx, ty, rad);
|
||||
if(curve > 0f) Lines.circle(tx, ty, rad * Interp.pow3Out.apply(curve));
|
||||
}
|
||||
|
||||
Draw.reset();
|
||||
}
|
||||
|
||||
//TODO horrible code, everywhere.
|
||||
public Vec2 transform(Vec2 position){
|
||||
if(!worldSpace){
|
||||
position.sub(rect.x, rect.y).scl(lastW / rect.width, lastH / rect.height);
|
||||
}else{
|
||||
position.scl(lastW / world.unitWidth(), lastH / world.unitHeight());
|
||||
}
|
||||
|
||||
return position.add(lastX, lastY);
|
||||
}
|
||||
|
||||
public float scale(float radius){
|
||||
return worldSpace ? (radius / (baseSize / 2f)) * 5f * lastScl : lastW / rect.width * radius;
|
||||
}
|
||||
|
||||
public float getScaleFactor(boolean zoomAutoScale){
|
||||
if(!zoomAutoScale){
|
||||
return worldSpace ? (1 / (baseSize / 2f)) * 5f * lastScl : lastW / rect.width;
|
||||
}else{
|
||||
return worldSpace ? (1 / (baseSize / 2f)) * 5f : lastW / 256f;
|
||||
}
|
||||
}
|
||||
|
||||
public @Nullable TextureRegion getRegion(){
|
||||
if(texture == null) return null;
|
||||
|
||||
|
||||
@@ -97,8 +97,12 @@ public class MultiPacker implements Disposable{
|
||||
|
||||
@Override
|
||||
public void dispose(){
|
||||
for(PixmapPacker packer : packers){
|
||||
packer.dispose();
|
||||
for(int i = 0; i < PageType.all.length; i ++){
|
||||
var packer = packers[i];
|
||||
//the UI packer's image is later used when merging with the font, don't dispose it
|
||||
if(i != PageType.ui.ordinal()){
|
||||
packer.forceDispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -474,6 +474,6 @@ public class Shaders{
|
||||
}
|
||||
|
||||
public static Fi getShaderFi(String file){
|
||||
return Core.files.internal("shaders/" + file);
|
||||
return tree.get("shaders/" + file);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -203,17 +203,7 @@ public class PlanetRenderer implements Disposable{
|
||||
}
|
||||
|
||||
public void setPlane(Sector sector){
|
||||
float rotation = -sector.planet.getRotation();
|
||||
float length = 0.01f;
|
||||
|
||||
projector.setPlane(
|
||||
//origin on sector position
|
||||
Tmp.v33.set(sector.tile.v).setLength((outlineRad + length) * sector.planet.radius).rotate(Vec3.Y, rotation).add(sector.planet.position),
|
||||
//face up
|
||||
sector.plane.project(Tmp.v32.set(sector.tile.v).add(Vec3.Y)).sub(sector.tile.v, sector.planet.radius).rotate(Vec3.Y, rotation).nor(),
|
||||
//right vector
|
||||
Tmp.v31.set(Tmp.v32).rotate(Vec3.Y, -rotation).add(sector.tile.v).rotate(sector.tile.v, 90).sub(sector.tile.v).rotate(Vec3.Y, rotation).nor()
|
||||
);
|
||||
sector.planet.setPlane(sector, projector);
|
||||
}
|
||||
|
||||
public void fill(Sector sector, Color color, float offset){
|
||||
|
||||
@@ -451,7 +451,7 @@ public class DesktopInput extends InputHandler{
|
||||
cursorType = cursor.build.getCursor();
|
||||
}
|
||||
|
||||
if(cursor.build != null && cursor.build.team == Team.derelict && Build.validPlace(cursor.block(), player.team(), cursor.build.tileX(), cursor.build.tileY(), cursor.build.rotation)){
|
||||
if(cursor.build != null && player.team() != Team.derelict && cursor.build.team == Team.derelict && Build.validPlace(cursor.block(), player.team(), cursor.build.tileX(), cursor.build.tileY(), cursor.build.rotation)){
|
||||
cursorType = ui.repairCursor;
|
||||
}
|
||||
|
||||
|
||||
@@ -1012,6 +1012,8 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
|
||||
|
||||
if(attack != null){
|
||||
Events.fire(Trigger.unitCommandAttack);
|
||||
}else{
|
||||
Events.fire(Trigger.unitCommandPosition);
|
||||
}
|
||||
|
||||
int maxChunkSize = 200;
|
||||
@@ -1179,7 +1181,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
|
||||
|
||||
var last = lastSchematic;
|
||||
|
||||
ui.showTextInput("@schematic.add", "@name", "", text -> {
|
||||
ui.showTextInput("@schematic.add", "@name", 1000, "", text -> {
|
||||
Schematic replacement = schematics.all().find(s -> s.name().equals(text));
|
||||
if(replacement != null){
|
||||
ui.showConfirm("@confirm", "@schematic.replace", () -> {
|
||||
@@ -1661,7 +1663,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
|
||||
}
|
||||
|
||||
boolean tryRepairDerelict(Tile selected){
|
||||
if(selected != null && selected.build != null && selected.build.block.unlockedNow() && selected.build.team == Team.derelict && Build.validPlace(selected.block(), player.team(), selected.build.tileX(), selected.build.tileY(), selected.build.rotation)){
|
||||
if(selected != null && player.team() != Team.derelict && selected.build != null && selected.build.block.unlockedNow() && selected.build.team == Team.derelict && Build.validPlace(selected.block(), player.team(), selected.build.tileX(), selected.build.tileY(), selected.build.rotation)){
|
||||
player.unit().addBuild(new BuildPlan(selected.build.tileX(), selected.build.tileY(), selected.build.rotation, selected.block(), selected.build.config()));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -743,6 +743,11 @@ public class MobileInput extends InputHandler implements GestureListener{
|
||||
queueCommandMode = false;
|
||||
}
|
||||
|
||||
//cannot rebuild and place at the same time
|
||||
if(block != null){
|
||||
rebuildMode = false;
|
||||
}
|
||||
|
||||
if(player.dead()){
|
||||
mode = none;
|
||||
manualShooting = false;
|
||||
@@ -766,7 +771,7 @@ public class MobileInput extends InputHandler implements GestureListener{
|
||||
renderer.scaleCamera(Core.input.axisTap(Binding.zoom));
|
||||
}
|
||||
|
||||
if(!Core.settings.getBool("keyboard") && !locked){
|
||||
if(!Core.settings.getBool("keyboard") && !locked && !scene.hasKeyboard()){
|
||||
//move camera around
|
||||
float camSpeed = 6f;
|
||||
Core.camera.position.add(Tmp.v1.setZero().add(Core.input.axis(Binding.move_x), Core.input.axis(Binding.move_y)).nor().scl(Time.delta * camSpeed));
|
||||
@@ -967,7 +972,6 @@ public class MobileInput extends InputHandler implements GestureListener{
|
||||
boolean allowHealing = type.canHeal;
|
||||
boolean validHealTarget = allowHealing && target instanceof Building b && b.isValid() && target.team() == unit.team && b.damaged() && target.within(unit, type.range);
|
||||
boolean boosted = (unit instanceof Mechc && unit.isFlying());
|
||||
|
||||
//reset target if:
|
||||
// - in the editor, or...
|
||||
// - it's both an invalid standard target and an invalid heal target
|
||||
|
||||
@@ -27,45 +27,63 @@ public class GlobalVars{
|
||||
public static final Rand rand = new Rand();
|
||||
|
||||
//non-constants that depend on state
|
||||
private static int varTime, varTick, varSecond, varMinute, varWave, varWaveTime, varServer, varClient, varClientLocale, varClientUnit, varClientName, varClientTeam, varClientMobile;
|
||||
private static int varTime, varTick, varSecond, varMinute, varWave, varWaveTime, varMapW, varMapH, varServer, varClient, varClientLocale, varClientUnit, varClientName, varClientTeam, varClientMobile;
|
||||
|
||||
private ObjectIntMap<String> namesToIds = new ObjectIntMap<>();
|
||||
private Seq<Var> vars = new Seq<>(Var.class);
|
||||
private Seq<VarEntry> varEntries = new Seq<>();
|
||||
private IntSet privilegedIds = new IntSet();
|
||||
private UnlockableContent[][] logicIdToContent;
|
||||
private int[][] contentIdToLogicId;
|
||||
|
||||
public void init(){
|
||||
put("the end", null);
|
||||
putEntryOnly("sectionProcessor");
|
||||
|
||||
putEntryOnly("@this");
|
||||
putEntryOnly("@thisx");
|
||||
putEntryOnly("@thisy");
|
||||
putEntryOnly("@links");
|
||||
putEntryOnly("@ipt");
|
||||
|
||||
putEntryOnly("sectionGeneral");
|
||||
|
||||
put("the end", null, false, true);
|
||||
//add default constants
|
||||
put("false", 0);
|
||||
put("true", 1);
|
||||
put("null", null);
|
||||
putEntry("false", 0);
|
||||
putEntry("true", 1);
|
||||
put("null", null, false, true);
|
||||
|
||||
//math
|
||||
put("@pi", Mathf.PI);
|
||||
put("π", Mathf.PI); //for the "cool" kids
|
||||
put("@e", Mathf.E);
|
||||
put("@degToRad", Mathf.degRad);
|
||||
put("@radToDeg", Mathf.radDeg);
|
||||
putEntry("@pi", Mathf.PI);
|
||||
put("π", Mathf.PI, false, true); //for the "cool" kids
|
||||
putEntry("@e", Mathf.E);
|
||||
putEntry("@degToRad", Mathf.degRad);
|
||||
putEntry("@radToDeg", Mathf.radDeg);
|
||||
|
||||
putEntryOnly("sectionMap");
|
||||
|
||||
//time
|
||||
varTime = put("@time", 0);
|
||||
varTick = put("@tick", 0);
|
||||
varSecond = put("@second", 0);
|
||||
varMinute = put("@minute", 0);
|
||||
varWave = put("@waveNumber", 0);
|
||||
varWaveTime = put("@waveTime", 0);
|
||||
varTime = putEntry("@time", 0);
|
||||
varTick = putEntry("@tick", 0);
|
||||
varSecond = putEntry("@second", 0);
|
||||
varMinute = putEntry("@minute", 0);
|
||||
varWave = putEntry("@waveNumber", 0);
|
||||
varWaveTime = putEntry("@waveTime", 0);
|
||||
|
||||
varServer = put("@server", 0, true);
|
||||
varClient = put("@client", 0, true);
|
||||
varMapW = putEntry("@mapw", 0);
|
||||
varMapH = putEntry("@maph", 0);
|
||||
|
||||
putEntryOnly("sectionNetwork");
|
||||
|
||||
varServer = putEntry("@server", 0, true);
|
||||
varClient = putEntry("@client", 0, true);
|
||||
|
||||
//privileged desynced client variables
|
||||
varClientLocale = put("@clientLocale", null, true);
|
||||
varClientUnit = put("@clientUnit", null, true);
|
||||
varClientName = put("@clientName", null, true);
|
||||
varClientTeam = put("@clientTeam", 0, true);
|
||||
varClientMobile = put("@clientMobile", 0, true);
|
||||
varClientLocale = putEntry("@clientLocale", null, true);
|
||||
varClientUnit = putEntry("@clientUnit", null, true);
|
||||
varClientName = putEntry("@clientName", null, true);
|
||||
varClientTeam = putEntry("@clientTeam", 0, true);
|
||||
varClientMobile = putEntry("@clientMobile", 0, true);
|
||||
|
||||
//special enums
|
||||
put("@ctrlProcessor", ctrlProcessor);
|
||||
@@ -107,6 +125,10 @@ public class GlobalVars{
|
||||
put("@" + type.name, type);
|
||||
}
|
||||
|
||||
for(Weather weather : Vars.content.weathers()){
|
||||
put("@" + weather.name, weather);
|
||||
}
|
||||
|
||||
//store sensor constants
|
||||
for(LAccess sensor : LAccess.all){
|
||||
put("@" + sensor.name(), sensor);
|
||||
@@ -115,6 +137,8 @@ public class GlobalVars{
|
||||
logicIdToContent = new UnlockableContent[ContentType.all.length][];
|
||||
contentIdToLogicId = new int[ContentType.all.length][];
|
||||
|
||||
putEntryOnly("sectionLookup");
|
||||
|
||||
Fi ids = Core.files.internal("logicids.dat");
|
||||
if(ids.exists()){
|
||||
//read logic ID mapping data (generated in ImagePacker)
|
||||
@@ -125,7 +149,7 @@ public class GlobalVars{
|
||||
contentIdToLogicId[ctype.ordinal()] = new int[Vars.content.getBy(ctype).size];
|
||||
|
||||
//store count constants
|
||||
put("@" + ctype.name() + "Count", amount);
|
||||
putEntry("@" + ctype.name() + "Count", amount);
|
||||
|
||||
for(int i = 0; i < amount; i++){
|
||||
String name = in.readUTF();
|
||||
@@ -159,6 +183,9 @@ public class GlobalVars{
|
||||
vars.items[varWave].numval = state.wave;
|
||||
vars.items[varWaveTime].numval = state.wavetime / 60f;
|
||||
|
||||
vars.items[varMapW].numval = world.width();
|
||||
vars.items[varMapH].numval = world.height();
|
||||
|
||||
//network
|
||||
vars.items[varServer].numval = (net.server() || !net.active()) ? 1 : 0;
|
||||
vars.items[varClient].numval = net.client() ? 1 : 0;
|
||||
@@ -173,6 +200,10 @@ public class GlobalVars{
|
||||
}
|
||||
}
|
||||
|
||||
public Seq<VarEntry> getEntries(){
|
||||
return varEntries;
|
||||
}
|
||||
|
||||
/** @return a piece of content based on its logic ID. This is not equivalent to content ID. */
|
||||
public @Nullable Content lookupContent(ContentType type, int id){
|
||||
var arr = logicIdToContent[type.ordinal()];
|
||||
@@ -209,6 +240,11 @@ public class GlobalVars{
|
||||
|
||||
/** Adds a constant value by name. */
|
||||
public int put(String name, Object value, boolean privileged){
|
||||
return put(name, value, privileged, true);
|
||||
}
|
||||
|
||||
/** Adds a constant value by name. */
|
||||
public int put(String name, Object value, boolean privileged, boolean hidden){
|
||||
int existingIdx = namesToIds.get(name, -1);
|
||||
if(existingIdx != -1){ //don't overwrite existing vars (see #6910)
|
||||
Log.debug("Failed to add global logic variable '@', as it already exists.", name);
|
||||
@@ -228,10 +264,44 @@ public class GlobalVars{
|
||||
namesToIds.put(name, index);
|
||||
if(privileged) privilegedIds.add(index);
|
||||
vars.add(var);
|
||||
|
||||
if(!hidden){
|
||||
varEntries.add(new VarEntry(index, name, "", "", privileged));
|
||||
}
|
||||
return index;
|
||||
}
|
||||
|
||||
public int put(String name, Object value){
|
||||
return put(name, value, false);
|
||||
}
|
||||
|
||||
public int putEntry(String name, Object value){
|
||||
return put(name, value, false, false);
|
||||
}
|
||||
|
||||
public int putEntry(String name, Object value, boolean privileged){
|
||||
return put(name, value, privileged, false);
|
||||
}
|
||||
|
||||
public void putEntryOnly(String name){
|
||||
varEntries.add(new VarEntry(0, name, "", "", false));
|
||||
}
|
||||
|
||||
/** An entry that describes a variable for documentation purposes. This is *only* used inside UI for global variables. */
|
||||
public static class VarEntry{
|
||||
public int id;
|
||||
public String name, description, icon;
|
||||
public boolean privileged;
|
||||
|
||||
public VarEntry(int id, String name, String description, String icon, boolean privileged){
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.description = description;
|
||||
this.icon = icon;
|
||||
this.privileged = privileged;
|
||||
}
|
||||
|
||||
public VarEntry(){
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
package mindustry.logic;
|
||||
|
||||
import arc.*;
|
||||
import arc.graphics.*;
|
||||
import arc.scene.ui.*;
|
||||
import arc.scene.ui.layout.*;
|
||||
import arc.util.*;
|
||||
import mindustry.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.graphics.*;
|
||||
import mindustry.ui.*;
|
||||
import mindustry.ui.dialogs.*;
|
||||
|
||||
public class GlobalVarsDialog extends BaseDialog{
|
||||
|
||||
public GlobalVarsDialog(){
|
||||
super("@logic.globals");
|
||||
|
||||
addCloseButton();
|
||||
shown(this::setup);
|
||||
onResize(this::setup);
|
||||
}
|
||||
|
||||
void setup(){
|
||||
float prefWidth = Math.min(Core.graphics.getWidth() * 0.9f / Scl.scl(1f) - 240f, 600f);
|
||||
cont.clearChildren();
|
||||
|
||||
cont.pane(t -> {
|
||||
t.margin(10f).marginRight(16f);
|
||||
t.defaults().fillX().fillY();
|
||||
for(var entry : Vars.logicVars.getEntries()){
|
||||
|
||||
if(entry.name.startsWith("section")){
|
||||
Color color = Pal.accent;
|
||||
t.add("@lglobal." + entry.name).fillX().center().labelAlign(Align.center).colspan(4).color(color).padTop(4f).padBottom(2f).row();
|
||||
t.image(Tex.whiteui).height(4f).color(color).colspan(4).padBottom(8f).row();
|
||||
}else{
|
||||
Color varColor = Pal.gray;
|
||||
float stub = 8f, mul = 0.5f, pad = 4;
|
||||
|
||||
String desc = entry.description;
|
||||
if(desc == null || desc.isEmpty()){
|
||||
desc = Core.bundle.get("lglobal." + entry.name, "");
|
||||
}
|
||||
|
||||
String fdesc = desc;
|
||||
|
||||
t.add(new Image(Tex.whiteui, varColor.cpy().mul(mul))).width(stub);
|
||||
t.stack(new Image(Tex.whiteui, varColor), new Label(" " + entry.name + " ", Styles.outlineLabel)).padRight(pad);
|
||||
|
||||
t.add(new Image(Tex.whiteui, Pal.gray.cpy().mul(mul))).width(stub);
|
||||
t.table(Tex.pane, out -> out.add(fdesc).style(Styles.outlineLabel).width(prefWidth).padLeft(2).padRight(2).wrap()).padRight(pad);
|
||||
|
||||
t.row();
|
||||
|
||||
t.add().fillX().colspan(4).height(4).row();
|
||||
}
|
||||
}
|
||||
}).grow();
|
||||
}
|
||||
}
|
||||
@@ -67,7 +67,7 @@ public enum LAccess{
|
||||
all = values(),
|
||||
senseable = Seq.select(all, t -> t.params.length <= 1).toArray(LAccess.class),
|
||||
controls = Seq.select(all, t -> t.params.length > 0).toArray(LAccess.class),
|
||||
settable = {x, y, rotation, speed, armor, health, team, flag, totalPower, payloadType};
|
||||
settable = {x, y, rotation, speed, armor, health, shield, team, flag, totalPower, payloadType};
|
||||
|
||||
LAccess(String... params){
|
||||
this.params = params;
|
||||
|
||||
@@ -13,8 +13,8 @@ import mindustry.content.*;
|
||||
import mindustry.core.*;
|
||||
import mindustry.ctype.*;
|
||||
import mindustry.entities.*;
|
||||
import mindustry.game.*;
|
||||
import mindustry.game.EventType.*;
|
||||
import mindustry.game.*;
|
||||
import mindustry.game.MapObjectives.*;
|
||||
import mindustry.game.Teams.*;
|
||||
import mindustry.gen.*;
|
||||
@@ -706,7 +706,7 @@ public class LExecutor{
|
||||
int address = exec.numi(position);
|
||||
Building from = exec.building(target);
|
||||
|
||||
if(from instanceof MemoryBuild mem && (exec.privileged || from.team == exec.team) && address >= 0 && address < mem.memory.length){
|
||||
if(from instanceof MemoryBuild mem && (exec.privileged || (from.team == exec.team && !mem.block.privileged)) && address >= 0 && address < mem.memory.length){
|
||||
mem.memory[address] = exec.num(value);
|
||||
}
|
||||
}
|
||||
@@ -1025,14 +1025,17 @@ public class LExecutor{
|
||||
exec.textBuffer.setLength(0);
|
||||
}
|
||||
}else{
|
||||
int num1 = exec.numi(p1);
|
||||
int num1 = exec.numi(p1), xval = packSign(exec.numi(x)), yval = packSign(exec.numi(y));
|
||||
|
||||
if(type == LogicDisplay.commandImage){
|
||||
num1 = exec.obj(p1) instanceof UnlockableContent u ? u.iconId : 0;
|
||||
}else if(type == LogicDisplay.commandScale){
|
||||
xval = packSign((int)(exec.numf(x) / LogicDisplay.scaleStep));
|
||||
yval = packSign((int)(exec.numf(y) / LogicDisplay.scaleStep));
|
||||
}
|
||||
|
||||
//add graphics calls, cap graphics buffer size
|
||||
exec.graphicsBuffer.add(DisplayCmd.get(type, packSign(exec.numi(x)), packSign(exec.numi(y)), packSign(num1), packSign(exec.numi(p2)), packSign(exec.numi(p3)), packSign(exec.numi(p4))));
|
||||
exec.graphicsBuffer.add(DisplayCmd.get(type, xval, yval, packSign(num1), packSign(exec.numi(p2)), packSign(exec.numi(p3)), packSign(exec.numi(p4))));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1508,6 +1511,47 @@ public class LExecutor{
|
||||
}
|
||||
}
|
||||
|
||||
public static class SenseWeatherI implements LInstruction{
|
||||
public int type, to;
|
||||
|
||||
public SenseWeatherI(int type, int to){
|
||||
this.type = type;
|
||||
this.to = to;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(LExecutor exec){
|
||||
exec.setbool(to, exec.obj(type) instanceof Weather weather && weather.isActive());
|
||||
}
|
||||
}
|
||||
|
||||
public static class SetWeatherI implements LInstruction{
|
||||
public int type, state;
|
||||
|
||||
public SetWeatherI(int type, int state){
|
||||
this.type = type;
|
||||
this.state = state;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(LExecutor exec){
|
||||
if(exec.obj(type) instanceof Weather weather){
|
||||
if(exec.bool(state)){
|
||||
if(!weather.isActive()){ //Create is not already active
|
||||
Tmp.v1.setToRandomDirection();
|
||||
Call.createWeather(weather, 1f, WeatherState.fadeTime, Tmp.v1.x, Tmp.v1.y);
|
||||
}else{
|
||||
weather.instance().life(WeatherState.fadeTime);
|
||||
}
|
||||
}else{
|
||||
if(weather.isActive() && weather.instance().life > WeatherState.fadeTime){
|
||||
weather.instance().life(WeatherState.fadeTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class ApplyEffectI implements LInstruction{
|
||||
public boolean clear;
|
||||
public String effect;
|
||||
|
||||
@@ -2,7 +2,7 @@ package mindustry.logic;
|
||||
|
||||
public enum LMarkerControl{
|
||||
remove,
|
||||
visibility("true/false"),
|
||||
world("true/false"),
|
||||
minimap("true/false"),
|
||||
autoscale("true/false"),
|
||||
pos("x", "y"),
|
||||
@@ -18,7 +18,10 @@ public enum LMarkerControl{
|
||||
textHeight("height"),
|
||||
labelFlags("background", "outline"),
|
||||
texture("printFlush", "name"),
|
||||
textureSize("width", "height");
|
||||
textureSize("width", "height"),
|
||||
posi("index", "x", "y"),
|
||||
uvi("index", "x", "y"),
|
||||
colori("index", "color");
|
||||
|
||||
public final String[] params;
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ import mindustry.logic.LCanvas.*;
|
||||
import mindustry.logic.LExecutor.*;
|
||||
import mindustry.ui.*;
|
||||
|
||||
import static mindustry.Vars.ui;
|
||||
import static mindustry.Vars.*;
|
||||
import static mindustry.logic.LCanvas.*;
|
||||
|
||||
/**
|
||||
|
||||
@@ -260,6 +260,13 @@ public class LStatements{
|
||||
}, 2, cell -> cell.size(165, 50)));
|
||||
}, Styles.logict, () -> {}).size(165, 40).color(s.color).left().padLeft(2);
|
||||
}
|
||||
case translate, scale -> {
|
||||
fields(s, "x", x, v -> x = v);
|
||||
fields(s, "y", y, v -> y = v);
|
||||
}
|
||||
case rotate -> {
|
||||
fields(s, "degrees", p1, v -> p1 = v);
|
||||
}
|
||||
}
|
||||
}).expand().left();
|
||||
}
|
||||
@@ -1373,6 +1380,115 @@ public class LStatements{
|
||||
}
|
||||
}
|
||||
|
||||
@RegisterStatement("weathersensor")
|
||||
public static class WeatherSenseStatement extends LStatement{
|
||||
public String to = "result";
|
||||
public String weather = "@rain";
|
||||
|
||||
private transient TextField tfield;
|
||||
|
||||
@Override
|
||||
public void build(Table table){
|
||||
field(table, to, str -> to = str);
|
||||
|
||||
table.add(" = weather ");
|
||||
|
||||
row(table);
|
||||
|
||||
tfield = field(table, weather, str -> weather = str).padRight(0f).get();
|
||||
|
||||
table.button(b -> {
|
||||
b.image(Icon.pencilSmall);
|
||||
|
||||
b.clicked(() -> showSelectTable(b, (t, hide) -> {
|
||||
t.row();
|
||||
t.table(i -> {
|
||||
i.left();
|
||||
int c = 0;
|
||||
for(Weather w : Vars.content.weathers()){
|
||||
i.button(w.name, Styles.flatt, () -> {
|
||||
weather = "@" + w.name;
|
||||
tfield.setText(weather);
|
||||
hide.run();
|
||||
}).height(40f).uniformX().wrapLabel(false).growX();
|
||||
|
||||
if(++c % 2 == 0) i.row();
|
||||
}
|
||||
}).left();
|
||||
}));
|
||||
}, Styles.logict, () -> {}).size(40f).padLeft(-1).color(table.color);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean privileged(){
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LInstruction build(LAssembler builder){
|
||||
return new SenseWeatherI(builder.var(weather), builder.var(to));
|
||||
}
|
||||
|
||||
@Override
|
||||
public LCategory category(){
|
||||
return LCategory.world;
|
||||
}
|
||||
}
|
||||
|
||||
@RegisterStatement("weatherset")
|
||||
public static class WeatherSetStatement extends LStatement{
|
||||
public String weather = "@rain", state = "true";
|
||||
|
||||
private transient TextField tfield;
|
||||
|
||||
@Override
|
||||
public void build(Table table){
|
||||
table.add(" set weather ");
|
||||
|
||||
tfield = field(table, weather, str -> weather = str).padRight(0f).get();
|
||||
|
||||
table.button(b -> {
|
||||
b.image(Icon.pencilSmall);
|
||||
|
||||
b.clicked(() -> showSelectTable(b, (t, hide) -> {
|
||||
t.row();
|
||||
t.table(i -> {
|
||||
i.left();
|
||||
int c = 0;
|
||||
for(Weather w : Vars.content.weathers()){
|
||||
i.button(w.name, Styles.flatt, () -> {
|
||||
weather = "@" + w.name;
|
||||
tfield.setText(weather);
|
||||
hide.run();
|
||||
}).height(40f).uniformX().wrapLabel(false).growX();
|
||||
|
||||
if(++c % 2 == 0) i.row();
|
||||
}
|
||||
}).left();
|
||||
}));
|
||||
}, Styles.logict, () -> {}).size(40f).padLeft(-1).color(table.color);
|
||||
|
||||
table.add(" state ");
|
||||
|
||||
fields(table, state, str -> state = str);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean privileged(){
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LInstruction build(LAssembler builder){
|
||||
return new SetWeatherI(builder.var(weather), builder.var(state));
|
||||
}
|
||||
|
||||
@Override
|
||||
public LCategory category(){
|
||||
return LCategory.world;
|
||||
}
|
||||
}
|
||||
|
||||
@RegisterStatement("spawnwave")
|
||||
public static class SpawnWaveStatement extends LStatement{
|
||||
public String x = "10", y = "10", natural = "false";
|
||||
@@ -1999,11 +2115,14 @@ public class LStatements{
|
||||
table.table(t -> {
|
||||
t.setColor(table.color);
|
||||
|
||||
fields(t, type.params[i], i == 0 ? p1 : i == 1 ? p2 : p3, i == 0 ? v -> p1 = v : i == 1 ? v -> p2 = v : v -> p3 = v).width(100f);
|
||||
String value = i == 0 ? p1 : i == 1 ? p2 : p3;
|
||||
Cons<String> setter = i == 0 ? v -> p1 = v : i == 1 ? v -> p2 = v : v -> p3 = v;
|
||||
|
||||
if(type == LMarkerControl.color){
|
||||
col(t, p1, res -> {
|
||||
p1 = "%" + res.toString().substring(0, res.a >= 1f ? 6 : 8);
|
||||
fields(t, type.params[i], value, setter).width(100f);
|
||||
|
||||
if(type == LMarkerControl.color || (type == LMarkerControl.colori && i == 1)){
|
||||
col(t, value, res -> {
|
||||
setter.get("%" + res.toString().substring(0, res.a >= 1f ? 6 : 8));
|
||||
build(table);
|
||||
});
|
||||
}else if(type == LMarkerControl.drawLayer){
|
||||
@@ -2013,10 +2132,10 @@ public class LStatements{
|
||||
o.row();
|
||||
o.table(s -> {
|
||||
s.left();
|
||||
for(var layer : Layer.class.getFields()){
|
||||
float value = Reflect.get(Layer.class, layer.getName());
|
||||
s.button(layer.getName() + " = " + value, Styles.logicTogglet, () -> {
|
||||
p1 = Float.toString(value);
|
||||
for(var field : Layer.class.getFields()){
|
||||
float layer = Reflect.get(field);
|
||||
s.button(field.getName() + " = " + layer, Styles.logicTogglet, () -> {
|
||||
p1 = Float.toString(layer);
|
||||
rebuild(table);
|
||||
hide.run();
|
||||
}).size(240f, 40f).row();
|
||||
|
||||
@@ -26,6 +26,7 @@ public class LogicDialog extends BaseDialog{
|
||||
Cons<String> consumer = s -> {};
|
||||
boolean privileged;
|
||||
@Nullable LExecutor executor;
|
||||
GlobalVarsDialog globalsDialog = new GlobalVarsDialog();
|
||||
|
||||
public LogicDialog(){
|
||||
super("logic");
|
||||
@@ -51,7 +52,7 @@ public class LogicDialog extends BaseDialog{
|
||||
add(buttons).growX().name("canvas");
|
||||
}
|
||||
|
||||
private Color typeColor(Var s, Color color){
|
||||
public static Color typeColor(Var s, Color color){
|
||||
return color.set(
|
||||
!s.isobj ? Pal.place :
|
||||
s.objval == null ? Color.darkGray :
|
||||
@@ -65,7 +66,7 @@ public class LogicDialog extends BaseDialog{
|
||||
);
|
||||
}
|
||||
|
||||
private String typeName(Var s){
|
||||
public static String typeName(Var s){
|
||||
return
|
||||
!s.isobj ? "number" :
|
||||
s.objval == null ? "null" :
|
||||
@@ -178,6 +179,8 @@ public class LogicDialog extends BaseDialog{
|
||||
});
|
||||
|
||||
dialog.addCloseButton();
|
||||
dialog.buttons.button("@logic.globals", Icon.list, () -> globalsDialog.show()).size(210f, 64f);
|
||||
|
||||
dialog.show();
|
||||
}).name("variables").disabled(b -> executor == null || executor.vars.length == 0);
|
||||
|
||||
|
||||
@@ -57,6 +57,12 @@ public class LogicFx{
|
||||
return map.get(name);
|
||||
}
|
||||
|
||||
/** Adds an effect entry to the map. */
|
||||
public static void add(String name, EffectEntry entry){
|
||||
entry.name = name;
|
||||
map.put(name, entry);
|
||||
}
|
||||
|
||||
public static String[] all(){
|
||||
return map.orderedKeys().toArray(String.class);
|
||||
}
|
||||
|
||||
@@ -271,8 +271,9 @@ public class ContentParser{
|
||||
return new Vec3(data.getFloat("x", 0f), data.getFloat("y", 0f), data.getFloat("z", 0f));
|
||||
});
|
||||
put(Sound.class, (type, data) -> {
|
||||
var field = fieldOpt(Sounds.class, data);
|
||||
if(data.isArray()) return new RandomSound(parser.readValue(Sound[].class, data));
|
||||
|
||||
var field = fieldOpt(Sounds.class, data);
|
||||
return field != null ? field : Vars.tree.loadSound(data.asString());
|
||||
});
|
||||
put(Music.class, (type, data) -> {
|
||||
@@ -445,6 +446,17 @@ public class ContentParser{
|
||||
if(value.has("consumes") && value.get("consumes").isObject()){
|
||||
for(JsonValue child : value.get("consumes")){
|
||||
switch(child.name){
|
||||
case "remove" -> {
|
||||
String[] values = child.isString() ? new String[]{child.asString()} : child.asStringArray();
|
||||
for(String type : values){
|
||||
Class<?> consumeType = resolve("Consume" + Strings.capitalize(type), Consume.class);
|
||||
if(consumeType != Consume.class){
|
||||
block.removeConsumers(b -> consumeType.isAssignableFrom(b.getClass()));
|
||||
}else{
|
||||
Log.warn("Unknown consumer type '@' (Class: @) in consume: remove.", type, "Consume" + Strings.capitalize(type));
|
||||
}
|
||||
}
|
||||
}
|
||||
case "item" -> block.consumeItem(find(ContentType.item, child.asString()));
|
||||
case "itemCharged" -> block.consume((Consume)parser.readValue(ConsumeItemCharged.class, child));
|
||||
case "itemFlammable" -> block.consume((Consume)parser.readValue(ConsumeItemFlammable.class, child));
|
||||
|
||||
@@ -218,7 +218,10 @@ public class Mods implements Loadable{
|
||||
}
|
||||
//this returns a *runnable* which actually packs the resulting pixmap; this has to be done synchronously outside the method
|
||||
return () -> {
|
||||
String fullName = (prefix ? mod.name + "-" : "") + baseName;
|
||||
//don't prefix with mod name if it's already prefixed by a category, e.g. `block-modname-content-full`.
|
||||
int hyphen = baseName.indexOf('-');
|
||||
String fullName = ((prefix && !(hyphen != -1 && baseName.substring(hyphen + 1).startsWith(mod.name + "-"))) ? mod.name + "-" : "") + baseName;
|
||||
|
||||
packer.add(getPage(file), fullName, new PixmapRegion(pix));
|
||||
if(textureScale != 1.0f){
|
||||
textureResize.put(fullName, textureScale);
|
||||
@@ -358,7 +361,24 @@ public class Mods implements Loadable{
|
||||
Log.debug("Time to generate icons: @", Time.elapsed());
|
||||
|
||||
//dispose old atlas data
|
||||
Core.atlas = packer.flush(filter, new TextureAtlas());
|
||||
Core.atlas = packer.flush(filter, new TextureAtlas(){
|
||||
PixmapRegion fake = new PixmapRegion(new Pixmap(1, 1));
|
||||
boolean didWarn = false;
|
||||
|
||||
@Override
|
||||
public PixmapRegion getPixmap(AtlasRegion region){
|
||||
var other = super.getPixmap(region);
|
||||
if(other.pixmap.isDisposed()){
|
||||
if(!didWarn){
|
||||
Log.err(new RuntimeException("Calling getPixmap outside of createIcons is not supported! This will be a crash in the future."));
|
||||
didWarn = true;
|
||||
}
|
||||
return fake;
|
||||
}
|
||||
|
||||
return other;
|
||||
}
|
||||
});
|
||||
|
||||
textureResize.each(e -> Core.atlas.find(e.key).scale = e.value);
|
||||
|
||||
@@ -856,7 +876,7 @@ public class Mods implements Loadable{
|
||||
return false;
|
||||
// If dependency present, resolve it, or if it's not required, ignore it
|
||||
}else if(context.dependencies.containsKey(dependency.name)){
|
||||
if(!context.ordered.contains(dependency.name) && !resolve(dependency.name, context) && dependency.required){
|
||||
if(((!context.ordered.contains(dependency.name) && !resolve(dependency.name, context)) || !Core.settings.getBool("mod-" + dependency.name + "-enabled", true)) && dependency.required){
|
||||
context.invalid.put(element, ModState.incompleteDependencies);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -577,6 +577,10 @@ public class Administration{
|
||||
changed.run();
|
||||
}
|
||||
|
||||
public boolean isDefault(){
|
||||
return Structs.eq(get(), defaultValue);
|
||||
}
|
||||
|
||||
private static boolean debug(){
|
||||
return Config.debug.bool();
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ public enum Achievement{
|
||||
issueAttackCommand,
|
||||
active100Units(SStat.maxUnitActive, 100),
|
||||
build1000Units(SStat.unitsBuilt, 1000),
|
||||
buildAllUnits(SStat.unitTypesBuilt, 30),
|
||||
buildAllUnits(SStat.unitTypesBuilt, 50),
|
||||
buildT5,
|
||||
pickupT5,
|
||||
active10Polys,
|
||||
|
||||
@@ -84,8 +84,6 @@ public class Liquid extends UnlockableContent implements Senseable{
|
||||
super.init();
|
||||
|
||||
if(gas){
|
||||
//gases can't be coolants
|
||||
coolant = false;
|
||||
//always "boils", it's a gas
|
||||
boilPoint = -1;
|
||||
//ensure no accidental global mutation
|
||||
|
||||
@@ -536,4 +536,26 @@ public class Planet extends UnlockableContent{
|
||||
}
|
||||
batch.flush(Gl.lineStrip);
|
||||
}
|
||||
|
||||
public Vec3 lookAt(Sector sector, Vec3 out){
|
||||
return out.set(sector.tile.v).rotate(Vec3.Y, -getRotation());
|
||||
}
|
||||
|
||||
public Vec3 project(Sector sector, Camera3D cam, Vec3 out){
|
||||
return cam.project(out.set(sector.tile.v).setLength(outlineRad * radius).rotate(Vec3.Y, -getRotation()).add(position));
|
||||
}
|
||||
|
||||
public void setPlane(Sector sector, PlaneBatch3D projector){
|
||||
float rotation = -getRotation();
|
||||
float length = 0.01f;
|
||||
|
||||
projector.setPlane(
|
||||
//origin on sector position
|
||||
Tmp.v33.set(sector.tile.v).setLength((outlineRad + length) * radius).rotate(Vec3.Y, rotation).add(position),
|
||||
//face up
|
||||
sector.plane.project(Tmp.v32.set(sector.tile.v).add(Vec3.Y)).sub(sector.tile.v, radius).rotate(Vec3.Y, rotation).nor(),
|
||||
//right vector
|
||||
Tmp.v31.set(Tmp.v32).rotate(Vec3.Y, -rotation).add(sector.tile.v).rotate(sector.tile.v, 90).sub(sector.tile.v).rotate(Vec3.Y, rotation).nor()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -236,7 +236,7 @@ public class Sector{
|
||||
|
||||
/** Projects this sector onto a 4-corner square for use in map gen.
|
||||
* Allocates a new object. Do not call in the main loop. */
|
||||
private SectorRect makeRect(){
|
||||
protected SectorRect makeRect(){
|
||||
Vec3[] corners = new Vec3[tile.corners.length];
|
||||
for(int i = 0; i < corners.length; i++){
|
||||
corners[i] = tile.corners[i].v.cpy().setLength(planet.radius);
|
||||
|
||||
@@ -39,8 +39,10 @@ public class SectorPreset extends UnlockableContent{
|
||||
/** Internal use only! */
|
||||
public SectorPreset(String name, LoadedMod mod){
|
||||
super(name);
|
||||
this.minfo.mod = mod;
|
||||
this.generator = new FileMapGenerator(name, this);
|
||||
if(mod != null){
|
||||
this.minfo.mod = mod;
|
||||
}
|
||||
this.generator = new FileMapGenerator(this.name, this);
|
||||
}
|
||||
|
||||
/** Internal use only! */
|
||||
|
||||
@@ -215,6 +215,8 @@ public class UnitType extends UnlockableContent implements Senseable{
|
||||
naval = false,
|
||||
/** if false, RTS AI controlled units do not automatically attack things while moving. This is automatically assigned. */
|
||||
autoFindTarget = true,
|
||||
/** If false, 'under' blocks like conveyors are not targeted. */
|
||||
targetUnderBlocks = true,
|
||||
/** if true, this unit will always shoot while moving regardless of slowdown */
|
||||
alwaysShootWhenMoving = false,
|
||||
|
||||
@@ -967,6 +969,7 @@ public class UnitType extends UnlockableContent implements Senseable{
|
||||
Drawf.checkBleed(outlined);
|
||||
|
||||
packer.add(PageType.main, regionName + "-outline", outlined);
|
||||
outlined.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1019,7 +1022,9 @@ public class UnitType extends UnlockableContent implements Senseable{
|
||||
}
|
||||
|
||||
packer.add(PageType.main, name + "-treads" + r + "-" + i, frame);
|
||||
frame.dispose();
|
||||
}
|
||||
slice.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -297,31 +297,9 @@ public class Weapon implements Cloneable{
|
||||
mount.warmup = Mathf.lerpDelta(mount.warmup, warmupTarget, shootWarmupSpeed);
|
||||
}
|
||||
|
||||
//rotate if applicable
|
||||
if(rotate && (mount.rotate || mount.shoot) && can){
|
||||
float axisX = unit.x + Angles.trnsx(unit.rotation - 90, x, y),
|
||||
axisY = unit.y + Angles.trnsy(unit.rotation - 90, x, y);
|
||||
|
||||
mount.targetRotation = Angles.angle(axisX, axisY, mount.aimX, mount.aimY) - unit.rotation;
|
||||
mount.rotation = Angles.moveToward(mount.rotation, mount.targetRotation, rotateSpeed * Time.delta);
|
||||
if(rotationLimit < 360){
|
||||
float dst = Angles.angleDist(mount.rotation, baseRotation);
|
||||
if(dst > rotationLimit/2f){
|
||||
mount.rotation = Angles.moveToward(mount.rotation, baseRotation, dst - rotationLimit/2f);
|
||||
}
|
||||
}
|
||||
}else if(!rotate){
|
||||
mount.rotation = baseRotation;
|
||||
mount.targetRotation = unit.angleTo(mount.aimX, mount.aimY);
|
||||
}
|
||||
|
||||
float
|
||||
weaponRotation = unit.rotation - 90 + (rotate ? mount.rotation : baseRotation),
|
||||
mountX = unit.x + Angles.trnsx(unit.rotation - 90, x, y),
|
||||
mountY = unit.y + Angles.trnsy(unit.rotation - 90, x, y),
|
||||
bulletX = mountX + Angles.trnsx(weaponRotation, this.shootX, this.shootY),
|
||||
bulletY = mountY + Angles.trnsy(weaponRotation, this.shootX, this.shootY),
|
||||
shootAngle = bulletRotation(unit, mount, bulletX, bulletY);
|
||||
mountY = unit.y + Angles.trnsy(unit.rotation - 90, x, y);
|
||||
|
||||
//find a new target
|
||||
if(!controllable && autoTarget){
|
||||
@@ -355,6 +333,30 @@ public class Weapon implements Cloneable{
|
||||
//logic will return shooting as false even if these return true, which is fine
|
||||
}
|
||||
|
||||
//rotate if applicable
|
||||
if(rotate && (mount.rotate || mount.shoot) && can){
|
||||
float axisX = unit.x + Angles.trnsx(unit.rotation - 90, x, y),
|
||||
axisY = unit.y + Angles.trnsy(unit.rotation - 90, x, y);
|
||||
|
||||
mount.targetRotation = Angles.angle(axisX, axisY, mount.aimX, mount.aimY) - unit.rotation;
|
||||
mount.rotation = Angles.moveToward(mount.rotation, mount.targetRotation, rotateSpeed * Time.delta);
|
||||
if(rotationLimit < 360){
|
||||
float dst = Angles.angleDist(mount.rotation, baseRotation);
|
||||
if(dst > rotationLimit/2f){
|
||||
mount.rotation = Angles.moveToward(mount.rotation, baseRotation, dst - rotationLimit/2f);
|
||||
}
|
||||
}
|
||||
}else if(!rotate){
|
||||
mount.rotation = baseRotation;
|
||||
mount.targetRotation = unit.angleTo(mount.aimX, mount.aimY);
|
||||
}
|
||||
|
||||
float
|
||||
weaponRotation = unit.rotation - 90 + (rotate ? mount.rotation : baseRotation),
|
||||
bulletX = mountX + Angles.trnsx(weaponRotation, this.shootX, this.shootY),
|
||||
bulletY = mountY + Angles.trnsy(weaponRotation, this.shootX, this.shootY),
|
||||
shootAngle = bulletRotation(unit, mount, bulletX, bulletY);
|
||||
|
||||
if(alwaysShooting) mount.shoot = true;
|
||||
|
||||
//update continuous state
|
||||
@@ -430,7 +432,7 @@ public class Weapon implements Cloneable{
|
||||
}
|
||||
|
||||
protected Teamc findTarget(Unit unit, float x, float y, float range, boolean air, boolean ground){
|
||||
return Units.closestTarget(unit.team, x, y, range + Math.abs(shootY), u -> u.checkTarget(air, ground), t -> ground);
|
||||
return Units.closestTarget(unit.team, x, y, range + Math.abs(shootY), u -> u.checkTarget(air, ground), t -> ground && (unit.type.targetUnderBlocks || !t.block.underBullets));
|
||||
}
|
||||
|
||||
protected boolean checkTarget(Unit unit, Teamc target, float x, float y, float range){
|
||||
|
||||
@@ -314,7 +314,7 @@ public class Weather extends UnlockableContent{
|
||||
@EntityDef(value = {WeatherStatec.class}, pooled = true, isFinal = false)
|
||||
@Component(base = true)
|
||||
abstract static class WeatherStateComp implements Drawc, Syncc{
|
||||
private static final float fadeTime = 60 * 4;
|
||||
public static final float fadeTime = 60 * 4;
|
||||
|
||||
Weather weather;
|
||||
float intensity = 1f, opacity = 0f, life, effectTimer;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package mindustry.ui.dialogs;
|
||||
|
||||
import arc.*;
|
||||
import arc.freetype.FreeTypeFontGenerator.*;
|
||||
import arc.graphics.*;
|
||||
import arc.input.*;
|
||||
import arc.math.*;
|
||||
@@ -35,6 +36,7 @@ public class JoinDialog extends BaseDialog{
|
||||
int refreshes;
|
||||
boolean showHidden;
|
||||
TextButtonStyle style;
|
||||
Task fontIgnoreDirtyTask;
|
||||
|
||||
String lastIp;
|
||||
int lastPort, lastColumns = -1;
|
||||
@@ -413,6 +415,15 @@ public class JoinDialog extends BaseDialog{
|
||||
net.pingHost(resaddress, resport, res -> {
|
||||
if(refreshes != cur) return;
|
||||
|
||||
//don't recache the texture for a while
|
||||
if(fontIgnoreDirtyTask == null){
|
||||
FreeTypeFontData.ignoreDirty = true;
|
||||
fontIgnoreDirtyTask = Time.runTask(0.6f * 60f, () -> {
|
||||
FreeTypeFontData.ignoreDirty = false;
|
||||
fontIgnoreDirtyTask = null;
|
||||
});
|
||||
}
|
||||
|
||||
if(!serverSearch.isEmpty() && !(group.name.toLowerCase().contains(serverSearch)
|
||||
|| res.name.toLowerCase().contains(serverSearch)
|
||||
|| res.description.toLowerCase().contains(serverSearch)
|
||||
|
||||
@@ -167,7 +167,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
|
||||
|
||||
//show selection of Erekir/Serpulo campaign if the user has no bases, and hasn't selected yet (essentially a "have they played campaign before" check)
|
||||
shown(() -> {
|
||||
if(!settings.getBool("campaignselect") && !content.planets().contains(p -> p.sectors.contains(s -> s.hasBase()))){
|
||||
if(!settings.getBool("campaignselect") && !content.planets().contains(p -> p.sectors.contains(Sector::hasBase))){
|
||||
var diag = new BaseDialog("@campaign.select");
|
||||
|
||||
Planet[] selected = {null};
|
||||
@@ -214,7 +214,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
|
||||
}
|
||||
|
||||
//unlock defaults for older campaign saves (TODO move? where to?)
|
||||
if(content.planets().contains(p -> p.sectors.contains(s -> s.hasBase())) || Blocks.scatter.unlocked() || Blocks.router.unlocked()){
|
||||
if(content.planets().contains(p -> p.sectors.contains(Sector::hasBase)) || Blocks.scatter.unlocked() || Blocks.router.unlocked()){
|
||||
Seq.with(Blocks.junction, Blocks.mechanicalDrill, Blocks.conveyor, Blocks.duo, Items.copper, Items.lead).each(UnlockableContent::quietUnlock);
|
||||
}
|
||||
}
|
||||
@@ -372,11 +372,17 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
|
||||
super.show();
|
||||
}
|
||||
|
||||
void lookAt(Sector sector){
|
||||
public void lookAt(Sector sector){
|
||||
if(sector.tile == Ptile.empty) return;
|
||||
|
||||
//TODO should this even set `state.planet`? the other lookAt() doesn't, so...
|
||||
state.planet = sector.planet;
|
||||
state.camPos.set(Tmp.v33.set(sector.tile.v).rotate(Vec3.Y, -sector.planet.getRotation()));
|
||||
sector.planet.lookAt(sector, state.camPos);
|
||||
}
|
||||
|
||||
public void lookAt(Sector sector, float alpha){
|
||||
float len = state.camPos.len();
|
||||
state.camPos.slerp(sector.planet.lookAt(sector, Tmp.v33).setLength(len), alpha);
|
||||
}
|
||||
|
||||
boolean canSelect(Sector sector){
|
||||
@@ -648,10 +654,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
|
||||
}
|
||||
}).visible(() -> mode != select),
|
||||
|
||||
new Table(c -> {
|
||||
expandTable = c;
|
||||
})).grow();
|
||||
|
||||
new Table(c -> expandTable = c)).grow();
|
||||
rebuildExpand();
|
||||
}
|
||||
|
||||
@@ -770,11 +773,6 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
|
||||
}
|
||||
}
|
||||
|
||||
public void lookAt(Sector sector, float alpha){
|
||||
float len = state.camPos.len();
|
||||
state.camPos.slerp(Tmp.v31.set(sector.tile.v).rotate(Vec3.Y, -sector.planet.getRotation()).setLength(len), alpha);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void act(float delta){
|
||||
super.act(delta);
|
||||
@@ -801,7 +799,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
|
||||
hoverLabel.touchable = Touchable.disabled;
|
||||
hoverLabel.color.a = state.uiAlpha;
|
||||
|
||||
Vec3 pos = planets.cam.project(Tmp.v31.set(hovered.tile.v).setLength(PlanetRenderer.outlineRad * state.planet.radius).rotate(Vec3.Y, -state.planet.getRotation()).add(state.planet.position));
|
||||
Vec3 pos = hovered.planet.project(hovered, planets.cam, Tmp.v31);
|
||||
hoverLabel.setPosition(pos.x - Core.scene.marginLeft, pos.y - Core.scene.marginBottom, Align.center);
|
||||
|
||||
hoverLabel.getText().setLength(0);
|
||||
|
||||
@@ -36,8 +36,6 @@ public class TraceDialog extends BaseDialog{
|
||||
c.add(Core.bundle.format("trace.ip", info.ip)).row();
|
||||
c.button(Icon.copySmall, style, () -> copy(info.uuid)).size(s).padRight(4f);
|
||||
c.add(Core.bundle.format("trace.id", info.uuid)).row();
|
||||
c.button(Icon.copySmall, style, () -> copy(player.locale)).size(s).padRight(4f);
|
||||
c.add(Core.bundle.format("trace.language", player.locale)).row();
|
||||
}).row();
|
||||
|
||||
table.add(Core.bundle.format("trace.modclient", info.modded)).row();
|
||||
|
||||
@@ -72,9 +72,9 @@ public class HudFragment{
|
||||
|
||||
Events.on(SectorCaptureEvent.class, e -> {
|
||||
if(e.sector.isBeingPlayed()){
|
||||
ui.announce(Core.bundle.format("sector.capture", ""), 5f);
|
||||
ui.announce("@sector.capture.current", 5f);
|
||||
}else{
|
||||
showToast(Core.bundle.format("sector.capture", e.sector.name() + " "));
|
||||
showToast(Core.bundle.format("sector.capture", e.sector.name()));
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user