Merge branch 'Anuken:master' into balancing_burst-drill-optional-multiplier

This commit is contained in:
SomeonesShade
2024-03-21 14:44:30 +08:00
committed by GitHub
122 changed files with 3883 additions and 1296 deletions
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
View File
@@ -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));
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 510 B

+55 -4
View File
@@ -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.
+46 -1
View File
@@ -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.
+46 -1
View File
@@ -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.
+53 -8
View File
@@ -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 = Sha 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è nataquen 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 derror 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 denergia
@@ -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 = Sapropa un enemic. Prepareu la defensa.
onset.defenses = [accent]Set up defenses:[lightgray] {0}
onset.defenses = [accent]Establiu defenses:[lightgray] {0}
onset.attack = Lenemic é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 = Lenemic us detectarà daquí 2 minuts.\nEstabliu les defenses i les explotacions mineres i de producció.
@@ -2284,6 +2288,8 @@ lst.getblock = Obtén les dades dun bloc en qualsevol posició.
lst.setblock = Estableix les dades dun bloc en qualsevol posició.
lst.spawnunit = Fes aparèixer una unitat en una posició.
lst.applystatus = Aplica o esborra un efecte destat duna 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 laparició duna onada enemiga en una posició arbitrària.\nEl comptador donades no sincrementarà.
lst.explosion = Crea una explosió en una posició.
lst.setrate = Estableix la velocitat dexecució del processador en instruccions/tic.
@@ -2300,6 +2306,42 @@ lst.sync = Sincronitza una variable a través de la xarxa.\nSinvoca com a mol
lst.makemarker = Crea una marca lògica al món.\nSha 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.\nLID 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 destar a labast de la unitat.\nEls blocs que no són construccions tindran el tipus [accent]@solid[].
lenum.within = Comprova si la unitat està a prop duna 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 dimpressió al marcador, si es pot.\nSi sestableix «fetch» a vertader, sintentarà carregar les propietats de la traducció del mapa o del joc.
lenum.texture = Nom de la textura directa de latles de textures del joc (amb lestil de noms kebab-case).\nSi «printFlush» sestableix a vertader, consumeix el contingut de la cua dimpressió com a argument de text.
lenum.texturesize = Mida de la textura a les caselles. Un valor de zero indica que sha d'escalar lamplada 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.
+103 -57
View File
@@ -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.
+46 -1
View File
@@ -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.
+46 -1
View File
@@ -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.
+46 -1
View File
@@ -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.
+46 -1
View File
@@ -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.
+46 -1
View File
@@ -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.
+46 -1
View File
@@ -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.
+46 -1
View File
@@ -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.
+46 -1
View File
@@ -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 quun 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
+46 -1
View File
@@ -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.
+46 -1
View File
@@ -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.
+46 -1
View File
@@ -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.
+46 -1
View File
@@ -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.
+46 -1
View File
@@ -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.
+46 -1
View File
@@ -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.
+46 -1
View File
@@ -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.
+46 -1
View File
@@ -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.
+46 -1
View File
@@ -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.
+46 -1
View File
@@ -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.
+46 -1
View File
@@ -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.
+48 -3
View File
@@ -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.
+46 -1
View File
@@ -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.
+46 -1
View File
@@ -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.
+46 -1
View File
@@ -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.
+46 -1
View File
@@ -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.
+46 -1
View File
@@ -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.
+46 -1
View File
@@ -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.
+46 -1
View File
@@ -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.
+47 -2
View File
@@ -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.
+46 -1
View File
@@ -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.
+1
View File
@@ -164,3 +164,4 @@ summoner
OpalSoPL
BalaM314
Redstonneur1256
ApsZoldat
Binary file not shown.
+1 -3
View File
@@ -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);
+1
View File
@@ -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());
+18 -5
View File
@@ -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?
+18 -17
View File
@@ -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;
+1 -1
View File
@@ -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);
}
+3 -2
View File
@@ -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. */
+2 -4
View File
@@ -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){
+12 -4
View File
@@ -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)
+6 -4
View File
@@ -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);
}
}
+1 -3
View File
@@ -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();
}
}
+13 -2
View File
@@ -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();
+12 -2
View File
@@ -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(){
+1
View File
@@ -39,6 +39,7 @@ public class EventType{
socketConfigChanged,
update,
unitCommandChange,
unitCommandPosition,
unitCommandAttack,
importMod,
draw,
+212 -147
View File
@@ -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)
+1 -1
View File
@@ -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;
+6 -2
View File
@@ -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();
}
}
}
+1 -1
View File
@@ -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){
+1 -1
View File
@@ -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;
}
+4 -2
View File
@@ -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;
}
+6 -2
View File
@@ -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
+94 -24
View File
@@ -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();
}
}
+1 -1
View File
@@ -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;
+48 -4
View File
@@ -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;
+5 -2
View File
@@ -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;
+1 -1
View File
@@ -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.*;
/**
+127 -8
View File
@@ -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();
+5 -2
View File
@@ -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);
+6
View File
@@ -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);
}
+13 -1
View File
@@ -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));
+23 -3
View File
@@ -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();
}
+1 -1
View File
@@ -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,
-2
View File
@@ -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
+22
View File
@@ -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()
);
}
}
+1 -1
View File
@@ -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);
+4 -2
View File
@@ -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! */
+5
View File
@@ -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();
}
}
}
+26 -24
View File
@@ -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){
+1 -1
View File
@@ -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)
+12 -14
View File
@@ -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