Merge branch 'Anuken:master' into balancing_burst-drill-optional-multiplier
This commit is contained in:
2
.github/workflows/pr.yml
vendored
2
.github/workflows/pr.yml
vendored
@@ -18,7 +18,7 @@ jobs:
|
|||||||
- name: Setup Gradle
|
- name: Setup Gradle
|
||||||
uses: gradle/gradle-build-action@v2
|
uses: gradle/gradle-build-action@v2
|
||||||
- name: Run unit tests
|
- name: Run unit tests
|
||||||
run: ./gradlew clean cleanTest test --stacktrace
|
run: ./gradlew tests:test --stacktrace --rerun
|
||||||
- name: Run unit tests and build JAR
|
- name: Run unit tests and build JAR
|
||||||
run: ./gradlew desktop:dist
|
run: ./gradlew desktop:dist
|
||||||
- name: Upload desktop JAR for testing
|
- name: Upload desktop JAR for testing
|
||||||
|
|||||||
2
.github/workflows/push.yml
vendored
2
.github/workflows/push.yml
vendored
@@ -57,4 +57,4 @@ jobs:
|
|||||||
git push https://Anuken:${{ secrets.API_TOKEN_GITHUB }}@github.com/Anuken/MindustryJitpack
|
git push https://Anuken:${{ secrets.API_TOKEN_GITHUB }}@github.com/Anuken/MindustryJitpack
|
||||||
cd ../Mindustry
|
cd ../Mindustry
|
||||||
- name: Run unit tests
|
- name: Run unit tests
|
||||||
run: ./gradlew clean cleanTest test --stacktrace
|
run: ./gradlew tests:test --rerun --stacktrace
|
||||||
|
|||||||
@@ -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.
|
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`).
|
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.
|
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.
|
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:
|
||||||
For example, if your server address is `example.com:6000`, you would add a comma after the last entry and insert:
|
|
||||||
```json
|
```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.
|
> 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.
|
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){
|
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){
|
if(VERSION.SDK_INT >= VERSION_CODES.Q){
|
||||||
Intent intent = new Intent(open ? Intent.ACTION_OPEN_DOCUMENT : Intent.ACTION_CREATE_DOCUMENT);
|
Intent intent = new Intent(open ? Intent.ACTION_OPEN_DOCUMENT : Intent.ACTION_CREATE_DOCUMENT);
|
||||||
intent.addCategory(Intent.CATEGORY_OPENABLE);
|
intent.addCategory(Intent.CATEGORY_OPENABLE);
|
||||||
intent.setType(extension.equals("zip") && !open && extensions.length == 1 ? "application/zip" : "*/*");
|
intent.setType(extension.equals("zip") && !open && extensions.length == 1 ? "application/zip" : "*/*");
|
||||||
|
|
||||||
addResultListener(i -> startActivityForResult(intent, i), (code, in) -> {
|
addResultListener(i -> startActivityForResult(intent, i), (code, in) -> {
|
||||||
if(code == Activity.RESULT_OK && in != null && in.getData() != null){
|
if(code == Activity.RESULT_OK && in != null && in.getData() != null){
|
||||||
Uri uri = in.getData();
|
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()){
|
Core.app.post(() -> Core.app.post(() -> cons.get(new Fi(uri.getPath()){
|
||||||
@Override
|
@Override
|
||||||
public InputStream read(){
|
public InputStream read(){
|
||||||
try{
|
try{
|
||||||
return getContentResolver().openInputStream(uri);
|
return getContentResolver().openInputStream(uri);
|
||||||
}catch(IOException e){
|
}catch(IOException e){
|
||||||
throw new ArcRuntimeException(e);
|
throw new ArcRuntimeException(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public OutputStream write(boolean append){
|
public OutputStream write(boolean append){
|
||||||
try{
|
try{
|
||||||
return getContentResolver().openOutputStream(uri);
|
return getContentResolver().openOutputStream(uri);
|
||||||
}catch(IOException e){
|
}catch(IOException e){
|
||||||
throw new ArcRuntimeException(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)){
|
checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)){
|
||||||
chooser = new FileChooser(title, file -> Structs.contains(extensions, file.extension().toLowerCase()), open, file -> {
|
chooser = new FileChooser(title, file -> Structs.contains(extensions, file.extension().toLowerCase()), open, file -> {
|
||||||
if(!open){
|
if(!open){
|
||||||
cons.get(file.parent().child(file.nameWithoutExtension() + "." + extension));
|
cons.get(file.parent().child(file.nameWithoutExtension() + "." + extension));
|
||||||
}else{
|
}else{
|
||||||
cons.get(file);
|
cons.get(file);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
ArrayList<String> perms = new ArrayList<>();
|
ArrayList<String> perms = new ArrayList<>();
|
||||||
if(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
|
if(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
|
||||||
perms.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
perms.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||||
}
|
}
|
||||||
if(checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
|
if(checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
|
||||||
perms.add(Manifest.permission.READ_EXTERNAL_STORAGE);
|
perms.add(Manifest.permission.READ_EXTERNAL_STORAGE);
|
||||||
}
|
}
|
||||||
requestPermissions(perms.toArray(new String[0]), PERMISSION_REQUEST_CODE);
|
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();
|
|
||||||
}else{
|
}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 |
@@ -501,6 +501,7 @@ editor.default = [lightgray]<Default>
|
|||||||
details = Details...
|
details = Details...
|
||||||
edit = Edit
|
edit = Edit
|
||||||
variables = Vars
|
variables = Vars
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = Name:
|
editor.name = Name:
|
||||||
editor.spawn = Spawn Unit
|
editor.spawn = Spawn Unit
|
||||||
editor.removeunit = Remove Unit
|
editor.removeunit = Remove Unit
|
||||||
@@ -613,7 +614,7 @@ filter.option.threshold2 = Secondary Threshold
|
|||||||
filter.option.radius = Radius
|
filter.option.radius = Radius
|
||||||
filter.option.percentile = Percentile
|
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.deletelocale = Are you sure you want to delete this locale bundle?
|
||||||
locales.applytoall = Apply Changes To All Locales
|
locales.applytoall = Apply Changes To All Locales
|
||||||
locales.addtoother = Add To Other Locales
|
locales.addtoother = Add To Other Locales
|
||||||
@@ -682,10 +683,11 @@ objective.commandmode.name = Command Mode
|
|||||||
objective.flag.name = Flag
|
objective.flag.name = Flag
|
||||||
|
|
||||||
marker.shapetext.name = Shape Text
|
marker.shapetext.name = Shape Text
|
||||||
marker.minimap.name = Minimap
|
marker.point.name = Point
|
||||||
marker.shape.name = Shape
|
marker.shape.name = Shape
|
||||||
marker.text.name = Text
|
marker.text.name = Text
|
||||||
marker.line.name = Line
|
marker.line.name = Line
|
||||||
|
marker.quad.name = Quad
|
||||||
|
|
||||||
marker.background = Background
|
marker.background = Background
|
||||||
marker.outline = Outline
|
marker.outline = Outline
|
||||||
@@ -773,8 +775,8 @@ sector.curlost = Sector Lost
|
|||||||
sector.missingresources = [scarlet]Insufficient Core Resources
|
sector.missingresources = [scarlet]Insufficient Core Resources
|
||||||
sector.attacked = Sector [accent]{0}[white] under attack!
|
sector.attacked = Sector [accent]{0}[white] under attack!
|
||||||
sector.lost = Sector [accent]{0}[white] lost!
|
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.changeicon = Change Icon
|
||||||
sector.noswitch.title = Unable to Switch Sectors
|
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}[]
|
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.message.name = Message
|
||||||
block.reinforced-message.name = Reinforced Message
|
block.reinforced-message.name = Reinforced Message
|
||||||
block.world-message.name = World Message
|
block.world-message.name = World Message
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = Illuminator
|
block.illuminator.name = Illuminator
|
||||||
block.overflow-gate.name = Overflow Gate
|
block.overflow-gate.name = Overflow Gate
|
||||||
block.underflow-gate.name = Underflow 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.setblock = Set tile data at any location.
|
||||||
lst.spawnunit = Spawn unit at a location.
|
lst.spawnunit = Spawn unit at a location.
|
||||||
lst.applystatus = Apply or clear a status effect from a unit.
|
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.spawnwave = Spawn a wave.
|
||||||
lst.explosion = Create an explosion at a location.
|
lst.explosion = Create an explosion at a location.
|
||||||
lst.setrate = Set processor execution speed in instructions/tick.
|
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.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.
|
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.
|
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.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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed color, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
@@ -489,6 +489,7 @@ editor.default = [lightgray]<Па змаўчанні>
|
|||||||
details = Падрабязнасці...
|
details = Падрабязнасці...
|
||||||
edit = Рэдагаваць...
|
edit = Рэдагаваць...
|
||||||
variables = Пераменныя
|
variables = Пераменныя
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = Назва:
|
editor.name = Назва:
|
||||||
editor.spawn = Стварыць баявую адзінку
|
editor.spawn = Стварыць баявую адзінку
|
||||||
editor.removeunit = Выдаліць баявую адзінку
|
editor.removeunit = Выдаліць баявую адзінку
|
||||||
@@ -664,10 +665,11 @@ objective.destroycore.name = Знішчыць Ядро
|
|||||||
objective.commandmode.name = Рэжым Загадаў
|
objective.commandmode.name = Рэжым Загадаў
|
||||||
objective.flag.name = Сцяг
|
objective.flag.name = Сцяг
|
||||||
marker.shapetext.name = Форма Тэксту
|
marker.shapetext.name = Форма Тэксту
|
||||||
marker.minimap.name = Міні-Мапа
|
marker.point.name = Point
|
||||||
marker.shape.name = Форма
|
marker.shape.name = Форма
|
||||||
marker.text.name = Тэкст
|
marker.text.name = Тэкст
|
||||||
marker.line.name = Line
|
marker.line.name = Line
|
||||||
|
marker.quad.name = Quad
|
||||||
marker.background = Задні Фон
|
marker.background = Задні Фон
|
||||||
marker.outline = Контур
|
marker.outline = Контур
|
||||||
objective.research = [accent]Даследаваць:\n[]{0}[lightgray]{1}
|
objective.research = [accent]Даследаваць:\n[]{0}[lightgray]{1}
|
||||||
@@ -751,6 +753,7 @@ sector.missingresources = [scarlet]Insufficient Core Resources
|
|||||||
sector.attacked = Сектар [accent]{0}[white] атакуецца!
|
sector.attacked = Сектар [accent]{0}[white] атакуецца!
|
||||||
sector.lost = Сектар [accent]{0}[white] згублены!
|
sector.lost = Сектар [accent]{0}[white] згублены!
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = Sector [accent]{0}[white]Captured!
|
||||||
|
sector.capture.current = Sector Captured!
|
||||||
sector.changeicon = Змяніць Іконку
|
sector.changeicon = Змяніць Іконку
|
||||||
sector.noswitch.title = Немагчыма Пераключыцца на Сектар
|
sector.noswitch.title = Немагчыма Пераключыцца на Сектар
|
||||||
sector.noswitch = Вы не можаце пераключацца на сектары калі гэты сектар атакуецца.\n\nСектар: [accent]{0}[] у [accent]{1}[]
|
sector.noswitch = Вы не можаце пераключацца на сектары калі гэты сектар атакуецца.\n\nСектар: [accent]{0}[] у [accent]{1}[]
|
||||||
@@ -1529,6 +1532,7 @@ block.inverted-sorter.name = Інвертаваны сартавальнік
|
|||||||
block.message.name = Паведамленне
|
block.message.name = Паведамленне
|
||||||
block.reinforced-message.name = Узмоцненнае Паведамленне
|
block.reinforced-message.name = Узмоцненнае Паведамленне
|
||||||
block.world-message.name = Паведамленне Свету
|
block.world-message.name = Паведамленне Свету
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = Асвятляльнік
|
block.illuminator.name = Асвятляльнік
|
||||||
block.overflow-gate.name = Залішнi затвор
|
block.overflow-gate.name = Залішнi затвор
|
||||||
block.underflow-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.setblock = Set tile data at any location.
|
||||||
lst.spawnunit = Spawn unit at a location.
|
lst.spawnunit = Spawn unit at a location.
|
||||||
lst.applystatus = Apply or clear a status effect from a uniut.
|
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.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.explosion = Create an explosion at a location.
|
||||||
lst.setrate = Set processor execution speed in instructions/tick.
|
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.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.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.
|
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.
|
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.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string.
|
||||||
lenum.shoot = Shoot at a position.
|
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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
@@ -495,6 +495,7 @@ editor.default = [lightgray]<Стандартно>
|
|||||||
details = Детайли...
|
details = Детайли...
|
||||||
edit = Редактирай...
|
edit = Редактирай...
|
||||||
variables = Vars
|
variables = Vars
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = Име:
|
editor.name = Име:
|
||||||
editor.spawn = Създай Единица
|
editor.spawn = Създай Единица
|
||||||
editor.removeunit = Премахни Единица
|
editor.removeunit = Премахни Единица
|
||||||
@@ -670,10 +671,11 @@ objective.destroycore.name = Destroy Core
|
|||||||
objective.commandmode.name = Command Mode
|
objective.commandmode.name = Command Mode
|
||||||
objective.flag.name = Flag
|
objective.flag.name = Flag
|
||||||
marker.shapetext.name = Shape Text
|
marker.shapetext.name = Shape Text
|
||||||
marker.minimap.name = Minimap
|
marker.point.name = Point
|
||||||
marker.shape.name = Shape
|
marker.shape.name = Shape
|
||||||
marker.text.name = Text
|
marker.text.name = Text
|
||||||
marker.line.name = Line
|
marker.line.name = Line
|
||||||
|
marker.quad.name = Quad
|
||||||
marker.background = Background
|
marker.background = Background
|
||||||
marker.outline = Outline
|
marker.outline = Outline
|
||||||
objective.research = [accent]Research:\n[]{0}[lightgray]{1}
|
objective.research = [accent]Research:\n[]{0}[lightgray]{1}
|
||||||
@@ -758,6 +760,7 @@ sector.missingresources = [scarlet]Недостатъчни ресурси в я
|
|||||||
sector.attacked = Зона [accent]{0}[white] е под атака!
|
sector.attacked = Зона [accent]{0}[white] е под атака!
|
||||||
sector.lost = Зона [accent]{0}[white] беше загубена!
|
sector.lost = Зона [accent]{0}[white] беше загубена!
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = Sector [accent]{0}[white]Captured!
|
||||||
|
sector.capture.current = Sector Captured!
|
||||||
sector.changeicon = Change Icon
|
sector.changeicon = Change Icon
|
||||||
sector.noswitch.title = Unable to Switch Sectors
|
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}[]
|
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.message.name = Съобщение
|
||||||
block.reinforced-message.name = Reinforced Message
|
block.reinforced-message.name = Reinforced Message
|
||||||
block.world-message.name = World Message
|
block.world-message.name = World Message
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = Осветител
|
block.illuminator.name = Осветител
|
||||||
block.overflow-gate.name = Преливаща Порта
|
block.overflow-gate.name = Преливаща Порта
|
||||||
block.underflow-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.setblock = Set tile data at any location.
|
||||||
lst.spawnunit = Spawn unit at a location.
|
lst.spawnunit = Spawn unit at a location.
|
||||||
lst.applystatus = Apply or clear a status effect from a uniut.
|
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.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.explosion = Create an explosion at a location.
|
||||||
lst.setrate = Set processor execution speed in instructions/tick.
|
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.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.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.
|
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]Действия за строене на единици не са позволени тук.
|
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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
@@ -495,6 +495,7 @@ editor.default = [lightgray]<Per defecte>
|
|||||||
details = Detalls
|
details = Detalls
|
||||||
edit = Edita
|
edit = Edita
|
||||||
variables = Variables
|
variables = Variables
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = Nom:
|
editor.name = Nom:
|
||||||
editor.spawn = Genera una unitat
|
editor.spawn = Genera una unitat
|
||||||
editor.removeunit = Treu una unitat
|
editor.removeunit = Treu una unitat
|
||||||
@@ -673,10 +674,11 @@ objective.destroycore.name = Destrueix el nucli
|
|||||||
objective.commandmode.name = Mode de comandament
|
objective.commandmode.name = Mode de comandament
|
||||||
objective.flag.name = Bandera
|
objective.flag.name = Bandera
|
||||||
marker.shapetext.name = Forma del text
|
marker.shapetext.name = Forma del text
|
||||||
marker.minimap.name = Minimapa
|
marker.point.name = Punt
|
||||||
marker.shape.name = Forma
|
marker.shape.name = Forma
|
||||||
marker.text.name = Text
|
marker.text.name = Text
|
||||||
marker.line.name = Línia
|
marker.line.name = Línia
|
||||||
|
marker.quad.name = Rectangle
|
||||||
marker.background = Fons
|
marker.background = Fons
|
||||||
marker.outline = Contorn
|
marker.outline = Contorn
|
||||||
|
|
||||||
@@ -761,7 +763,8 @@ sector.curlost = Sector perdut
|
|||||||
sector.missingresources = [scarlet]Recursos insuficients al nucli
|
sector.missingresources = [scarlet]Recursos insuficients al nucli
|
||||||
sector.attacked = Ataquen el sector [accent]{0}[white]!
|
sector.attacked = Ataquen el sector [accent]{0}[white]!
|
||||||
sector.lost = Heu perdut el sector [accent]{0}[white]!
|
sector.lost = Heu perdut el sector [accent]{0}[white]!
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = S’ha capturat el sector [accent]{0}[white]!
|
||||||
|
sector.capture.current = Sector capturat!
|
||||||
sector.changeicon = Canvia la icona
|
sector.changeicon = Canvia la icona
|
||||||
sector.noswitch.title = Els sectors no es poden canviar.
|
sector.noswitch.title = Els sectors no es poden canviar.
|
||||||
sector.noswitch = Potser no podeu canviar de sector perquè n’ataquen un altre.\n\nSector: [accent]{0}[] de [accent]{1}[]
|
sector.noswitch = Potser no podeu canviar de sector perquè n’ataquen un altre.\n\nSector: [accent]{0}[] de [accent]{1}[]
|
||||||
@@ -1142,7 +1145,7 @@ setting.sfxvol.name = Volums dels efectes de so
|
|||||||
setting.mutesound.name = Silencia el so
|
setting.mutesound.name = Silencia el so
|
||||||
setting.crashreport.name = Envia informes d’error anònims
|
setting.crashreport.name = Envia informes d’error anònims
|
||||||
setting.savecreate.name = Desa automàticament la partida
|
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.playerlimit.name = Límit de jugadors
|
||||||
setting.chatopacity.name = Opacitat del xat
|
setting.chatopacity.name = Opacitat del xat
|
||||||
setting.lasersopacity.name = Opacitat dels làsers d’energia
|
setting.lasersopacity.name = Opacitat dels làsers d’energia
|
||||||
@@ -1547,6 +1550,7 @@ block.inverted-sorter.name = Classificador invers
|
|||||||
block.message.name = Missatge
|
block.message.name = Missatge
|
||||||
block.reinforced-message.name = Missatge destacat
|
block.reinforced-message.name = Missatge destacat
|
||||||
block.world-message.name = Missatge mundial
|
block.world-message.name = Missatge mundial
|
||||||
|
block.world-switch.name = Interruptor mundial
|
||||||
block.illuminator.name = Il·luminador
|
block.illuminator.name = Il·luminador
|
||||||
block.overflow-gate.name = Porta de desbordament
|
block.overflow-gate.name = Porta de desbordament
|
||||||
block.underflow-gate.name = Porta de subdesbordament
|
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.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.walls = Els [accent]murs[] poden evitar que el dany arribi a les estructures importants.\nConstruïu alguns \uf6ee [accent]murs de beril·li[] al voltant de la torreta.
|
||||||
onset.enemies = S’apropa un enemic. Prepareu la defensa.
|
onset.enemies = S’apropa un enemic. Prepareu la defensa.
|
||||||
onset.defenses = [accent]Set up defenses:[lightgray] {0}
|
onset.defenses = [accent]Establiu defenses:[lightgray] {0}
|
||||||
onset.attack = L’enemic és vulnerable. Contraataqueu.
|
onset.attack = L’enemic és vulnerable. Contraataqueu.
|
||||||
onset.cores = Els nuclis nous es poden construir en [accent]caselles de nucli[].\nEls nuclis nous funcionen com a bases i comparteixen un inventari de recursos amb altres nuclis.\nConstruïu un \uf725 nucli.
|
onset.cores = Els nuclis nous es poden construir en [accent]caselles de nucli[].\nEls nuclis nous funcionen com a bases i comparteixen un inventari de recursos amb altres nuclis.\nConstruïu un \uf725 nucli.
|
||||||
onset.detect = L’enemic us detectarà d’aquí 2 minuts.\nEstabliu les defenses i les explotacions mineres i de producció.
|
onset.detect = L’enemic us detectarà d’aquí 2 minuts.\nEstabliu les defenses i les explotacions mineres i de producció.
|
||||||
@@ -2284,6 +2288,8 @@ lst.getblock = Obtén les dades d’un bloc en qualsevol posició.
|
|||||||
lst.setblock = Estableix les dades d’un bloc en qualsevol posició.
|
lst.setblock = Estableix les dades d’un bloc en qualsevol posició.
|
||||||
lst.spawnunit = Fes aparèixer una unitat en una posició.
|
lst.spawnunit = Fes aparèixer una unitat en una posició.
|
||||||
lst.applystatus = Aplica o esborra un efecte d’estat d’una unitat.
|
lst.applystatus = Aplica o esborra un efecte d’estat d’una unitat.
|
||||||
|
lst.weathersensor = Check if a type of weather is active.
|
||||||
|
lst.weatherset = Set the current state of a type of weather.
|
||||||
lst.spawnwave = Simula l’aparició d’una onada enemiga en una posició arbitrària.\nEl comptador d’onades no s’incrementarà.
|
lst.spawnwave = Simula l’aparició d’una onada enemiga en una posició arbitrària.\nEl comptador d’onades no s’incrementarà.
|
||||||
lst.explosion = Crea una explosió en una posició.
|
lst.explosion = Crea una explosió en una posició.
|
||||||
lst.setrate = Estableix la velocitat d’execució del processador en instruccions/tic.
|
lst.setrate = Estableix la velocitat d’execució del processador en instruccions/tic.
|
||||||
@@ -2300,6 +2306,42 @@ lst.sync = Sincronitza una variable a través de la xarxa.\nS’invoca com a mol
|
|||||||
lst.makemarker = Crea una marca lògica al món.\nS’ha de donar un ID per a identificar-la.\nEs poden establir fins a 20.000 marcadors per món.
|
lst.makemarker = Crea una marca lògica al món.\nS’ha de donar un ID per a identificar-la.\nEs poden establir fins a 20.000 marcadors per món.
|
||||||
lst.setmarker = Estableix una propietat per a la marca.\nL’ID que es faci servir ha de ser el mateix que el de la instrucció de crear la marca.
|
lst.setmarker = Estableix una propietat per a la marca.\nL’ID que es faci servir ha de ser el mateix que el de la instrucció de crear la marca.
|
||||||
lst.localeprint = Add map locale property value to the text buffer.\nTo set map locale bundles in map editor, check [accent]Map Info > Locale Bundles[].\nIf client is a mobile device, tries to print a property ending in ".mobile" first.
|
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.
|
logic.nounitbuild = [red]Aquí no es permet construir blocs de tipus lògic.
|
||||||
|
|
||||||
@@ -2451,7 +2493,10 @@ lenum.build = Construeix una estructura.
|
|||||||
lenum.getblock = Obté un bloc i el seu tipus a les coordenades indicades.\nLa posició escollida ha d’estar a l’abast de la unitat.\nEls blocs que no són construccions tindran el tipus [accent]@solid[].
|
lenum.getblock = Obté un bloc i el seu tipus a les coordenades indicades.\nLa posició escollida ha d’estar a l’abast de la unitat.\nEls blocs que no són construccions tindran el tipus [accent]@solid[].
|
||||||
lenum.within = Comprova si la unitat està a prop d’una posició.
|
lenum.within = Comprova si la unitat està a prop d’una posició.
|
||||||
lenum.boost = Inicia/Detén el vol.
|
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.flushtext = Passa el contingut de la cua d’impressió al marcador, si es pot.\nSi s’estableix «fetch» a vertader, s’intentarà carregar les propietats de la traducció del mapa o del joc.
|
||||||
lenum.texture = 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.texture = Nom de la textura directa de l’atles de textures del joc (amb l’estil de noms kebab-case).\nSi «printFlush» s’estableix a vertader, consumeix el contingut de la cua d’impressió com a argument de text.
|
||||||
lenum.texturesize = Size of texture in tiles. Zero value scales marker width to original texture's size.
|
lenum.texturesize = Mida de la textura a les caselles. Un valor de zero indica que s’ha d'escalar l’amplada del marcador a la mida original de la textura.
|
||||||
lenum.autoscale = Whether to scale marker corresponding to player's zoom level.
|
lenum.autoscale = Indica si cal escalar el marcador segons el nivell de zoom del jugador.
|
||||||
|
lenum.posi = Posició indexada que es fa servir per a marcadors de línia i de rectangles on l’índex zero és la primera posició.
|
||||||
|
lenum.uvi = Posició de la textura que va de zero a u i que es fa servir per a marcadors de tipus rectangle.
|
||||||
|
lenum.colori = Posició indexada que es fa servir per a marcadors de línies i rectangles on l’índex zero és el primer color.
|
||||||
|
|||||||
@@ -153,12 +153,12 @@ mod.unmetdependencies = [red]Nesplněné Dependencies
|
|||||||
mod.erroredcontent = [scarlet]V obsahu jsou chyby[]
|
mod.erroredcontent = [scarlet]V obsahu jsou chyby[]
|
||||||
mod.circulardependencies = [red]Kruhové Dependencies
|
mod.circulardependencies = [red]Kruhové Dependencies
|
||||||
mod.incompletedependencies = [red]Nedokončené 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.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 = 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.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 = This mod has been manually blacklisted for causing crashes or other issues with this version of the game. Do not use it.
|
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 = This mod is missing dependencies: {0}
|
mod.missingdependencies.details = Tomuto módu chybí závislosti: {0}
|
||||||
mod.erroredcontent.details = This game caused errors when loading. Ask the mod author to fix them.
|
mod.erroredcontent.details = Tato hra způsobovala chyby při načítání. Požádejte autora módu o jejich opravu.
|
||||||
mod.circulardependencies.details = This mod has dependencies that depends on each other.
|
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.incompletedependencies.details = This mod is unable to be loaded due to invalid or missing dependencies: {0}.
|
||||||
mod.requiresversion = Requires game version: [red]{0}
|
mod.requiresversion = Requires game version: [red]{0}
|
||||||
mod.errors = Při načítání obsahu hry se vyskytly problémy.
|
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.joined = Krát Připojen: [accent]{0}
|
||||||
trace.times.kicked = Krát Vyhozen: [accent]{0}
|
trace.times.kicked = Krát Vyhozen: [accent]{0}
|
||||||
trace.ips = IPs:
|
trace.ips = IPs:
|
||||||
trace.names = Names:
|
trace.names = Jména:
|
||||||
invalidid = Neplatná adresa IP klienta! Zašli prosím zprávu o chybě.
|
invalidid = Neplatná adresa IP klienta! Zašli prosím zprávu o chybě.
|
||||||
player.ban = Ban
|
player.ban = Ban
|
||||||
player.kick = Kick
|
player.kick = Vyhodit
|
||||||
player.trace = Trace
|
player.trace = Trace
|
||||||
player.admin = Toggle Admin
|
player.admin = Přepínání správce
|
||||||
player.team = Change Team
|
player.team = Změnit tým
|
||||||
server.bans = Zákazy
|
server.bans = Zákazy
|
||||||
server.bans.none = Žádní hráči se zákazem nebyli nalezeni.
|
server.bans.none = Žádní hráči se zákazem nebyli nalezeni.
|
||||||
server.admins = Správci
|
server.admins = Správci
|
||||||
@@ -340,13 +340,14 @@ ok = OK
|
|||||||
open = Otevřít
|
open = Otevřít
|
||||||
customize = Přizpůsobit pravidla
|
customize = Přizpůsobit pravidla
|
||||||
cancel = Zrušit
|
cancel = Zrušit
|
||||||
command = Command
|
command = Velet
|
||||||
command.queue = [lightgray][Queuing]
|
command.queue = Queue
|
||||||
command.mine = Mine
|
command.mine = Těžit
|
||||||
command.repair = Repair
|
command.repair = Opravovat
|
||||||
command.rebuild = Rebuild
|
command.rebuild = Přestavět
|
||||||
command.assist = Assist Player
|
command.assist = Asistovat hráči
|
||||||
command.move = Move
|
command.move = Pohyb
|
||||||
|
|
||||||
command.boost = Boost
|
command.boost = Boost
|
||||||
command.enterPayload = Enter Payload Block
|
command.enterPayload = Enter Payload Block
|
||||||
command.loadUnits = Load Units
|
command.loadUnits = Load Units
|
||||||
@@ -362,7 +363,7 @@ openlink = Otevřít odkaz
|
|||||||
copylink = Zkopírovat odkaz
|
copylink = Zkopírovat odkaz
|
||||||
back = Zpět
|
back = Zpět
|
||||||
max = Max
|
max = Max
|
||||||
objective = Map Objective
|
objective = Úkol mapy
|
||||||
crash.export = Exportovat záznamy o zhroucení hry
|
crash.export = Exportovat záznamy o zhroucení hry
|
||||||
crash.none = Záznamy o zhroucení hry nebyly nalezeny.
|
crash.none = Záznamy o zhroucení hry nebyly nalezeny.
|
||||||
crash.exported = Záznamy o zhroucení hry byly exportovány.
|
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í
|
resumebuilding = [scarlet][[{0}][] bude pokračovat ve stavění
|
||||||
enablebuilding = [scarlet][[{0}][] povolí stavení
|
enablebuilding = [scarlet][[{0}][] povolí stavení
|
||||||
showui = UI je skryto.\nZmáčkni [accent][[{0}][] pro jeho zobrazení.
|
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]
|
commandmode.nounits = [no units]
|
||||||
wave = [accent]Vlna číslo {0}[]
|
wave = [accent]Vlna číslo {0}[]
|
||||||
wave.cap = [accent]Vlna {0} z {1}[]
|
wave.cap = [accent]Vlna {0} z {1}[]
|
||||||
@@ -495,6 +496,7 @@ editor.default = [lightgray]<Výchozí>[]
|
|||||||
details = Podrobnosti...
|
details = Podrobnosti...
|
||||||
edit = Upravit...
|
edit = Upravit...
|
||||||
variables = Hodnoty
|
variables = Hodnoty
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = Jméno:
|
editor.name = Jméno:
|
||||||
editor.spawn = Zrodit jednotku
|
editor.spawn = Zrodit jednotku
|
||||||
editor.removeunit = Odstranit jednotku
|
editor.removeunit = Odstranit jednotku
|
||||||
@@ -671,10 +673,11 @@ objective.destroycore.name = Zničit Jádro
|
|||||||
objective.commandmode.name = Příkazovy Režim
|
objective.commandmode.name = Příkazovy Režim
|
||||||
objective.flag.name = Vlajka
|
objective.flag.name = Vlajka
|
||||||
marker.shapetext.name = Shape Text
|
marker.shapetext.name = Shape Text
|
||||||
marker.minimap.name = Minimapa
|
marker.point.name = Point
|
||||||
marker.shape.name = Tvar
|
marker.shape.name = Tvar
|
||||||
marker.text.name = Text
|
marker.text.name = Text
|
||||||
marker.line.name = Line
|
marker.line.name = Line
|
||||||
|
marker.quad.name = Quad
|
||||||
marker.background = Pozadí
|
marker.background = Pozadí
|
||||||
marker.outline = Outline
|
marker.outline = Outline
|
||||||
objective.research = [accent]Research:\n[]{0}[lightgray]{1}
|
objective.research = [accent]Research:\n[]{0}[lightgray]{1}
|
||||||
@@ -704,7 +707,7 @@ bannedunits.whitelist = Banned Units As Whitelist
|
|||||||
bannedblocks.whitelist = Banned Blocks As Whitelist
|
bannedblocks.whitelist = Banned Blocks As Whitelist
|
||||||
addall = Přidat vše
|
addall = Přidat vše
|
||||||
launch.from = Vysláno z: [accent]{0}
|
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}
|
launch.destination = Cíl: {0}
|
||||||
configure.invalid = Hodnota musí být číslo mezi 0 a {0}.
|
configure.invalid = Hodnota musí být číslo mezi 0 a {0}.
|
||||||
add = Přidat...
|
add = Přidat...
|
||||||
@@ -734,8 +737,8 @@ sectorlist.attacked = {0} pod útokem
|
|||||||
sectors.unexplored = [lightgray]Neprozkoumáno
|
sectors.unexplored = [lightgray]Neprozkoumáno
|
||||||
sectors.resources = Zdroje:
|
sectors.resources = Zdroje:
|
||||||
sectors.production = Výroba:
|
sectors.production = Výroba:
|
||||||
sectors.export = Export:
|
sectors.export = Exportovat:
|
||||||
sectors.import = Import:
|
sectors.import = Importovat:
|
||||||
sectors.time = Čas:
|
sectors.time = Čas:
|
||||||
sectors.threat = Ohrožení:
|
sectors.threat = Ohrožení:
|
||||||
sectors.wave = Vlna:
|
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.attacked = Sektor [accent]{0}[white] pod útokem!
|
||||||
sector.lost = Sektor [accent]{0}[white] ztracen! :(
|
sector.lost = Sektor [accent]{0}[white] ztracen! :(
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = Sector [accent]{0}[white]Captured!
|
||||||
|
sector.capture.current = Sector Captured!
|
||||||
sector.changeicon = Změnit Ikonu
|
sector.changeicon = Změnit Ikonu
|
||||||
sector.noswitch.title = Nelze Vyměnit Sektor
|
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}[]
|
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.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.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.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.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 = 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.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 = The Onset
|
sector.onset.name = Nástup
|
||||||
sector.aegis.name = Aegis
|
sector.aegis.name = Aegis
|
||||||
sector.lake.name = Lake
|
sector.lake.name = Jezero
|
||||||
sector.intersect.name = Intersect
|
sector.intersect.name = Průsečík
|
||||||
sector.atlas.name = Atlas
|
sector.atlas.name = Atlas
|
||||||
sector.split.name = Split
|
sector.split.name = Rozdělení
|
||||||
sector.basin.name = Basin
|
sector.basin.name = Povodí
|
||||||
sector.marsh.name = Marsh
|
sector.marsh.name = Marš
|
||||||
sector.peaks.name = Peaks
|
sector.peaks.name = Vrcholy
|
||||||
sector.ravine.name = Ravine
|
sector.ravine.name = Rokle
|
||||||
sector.caldera-erekir.name = Caldera
|
sector.caldera-erekir.name = Kaldera
|
||||||
sector.stronghold.name = Stronghold
|
sector.stronghold.name = Pevnost
|
||||||
sector.crevice.name = Crevice
|
sector.crevice.name = Štěrbina
|
||||||
sector.siege.name = Siege
|
sector.siege.name = Obléhání
|
||||||
sector.crossroads.name = Crossroads
|
sector.crossroads.name = Křižovatka
|
||||||
sector.karst.name = Karst
|
sector.karst.name = Kras
|
||||||
sector.origin.name = Origin
|
sector.origin.name = Původ
|
||||||
sector.onset.description = Commence the conquest of Erekir. Gather resources, produce units, and begin researching technology.
|
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.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 = 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.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 = 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.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 = 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.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 = The minimal enemy presence in this sector makes it perfect for testing new transport tech.
|
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 = Large enemy presence detected in this sector.\nBuild units quickly and capture enemy cores to gain a foothold.
|
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 = This sector has an abundance of arkycite, but has limited vents.\nBuild [accent]Chemical Combustion Chambers[] to generate power.
|
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 = 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.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 = 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.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 = The resources detected in this sector are scattered across several islands.\nResearch and deploy drone-based transportation.
|
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 = The large enemy encampment in this sector guards significant deposits of [accent]thorium[].\nUse it to develop higher tier units and turrets.
|
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 = 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.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 = 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.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 = 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.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 = 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.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 = The final sector with a significant enemy presence.\nNo probable research opportunities remain - focus solely on destroying all enemy cores.
|
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.burning.name = Hořící
|
||||||
status.freezing.name = Mrazí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.message.name = Zpráva
|
||||||
block.reinforced-message.name = Posílená Zpráva
|
block.reinforced-message.name = Posílená Zpráva
|
||||||
block.world-message.name = Světová Zpráva
|
block.world-message.name = Světová Zpráva
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = Osvětlovač
|
block.illuminator.name = Osvětlovač
|
||||||
block.overflow-gate.name = Brána s přepadem
|
block.overflow-gate.name = Brána s přepadem
|
||||||
block.underflow-gate.name = Brána s podtokem
|
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.setblock = Set tile data at any location.
|
||||||
lst.spawnunit = Spawn unit at a location.
|
lst.spawnunit = Spawn unit at a location.
|
||||||
lst.applystatus = Apply or clear a status effect from a uniut.
|
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.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.explosion = Create an explosion at a location.
|
||||||
lst.setrate = Set processor execution speed in instructions/tick.
|
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.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.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.
|
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é.
|
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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
@@ -490,6 +490,7 @@ editor.default = [lightgray]<standard>
|
|||||||
details = Detaljer...
|
details = Detaljer...
|
||||||
edit = Rediger...
|
edit = Rediger...
|
||||||
variables = Vars
|
variables = Vars
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = Navn:
|
editor.name = Navn:
|
||||||
editor.spawn = Påkald enhed
|
editor.spawn = Påkald enhed
|
||||||
editor.removeunit = Fjern enhed
|
editor.removeunit = Fjern enhed
|
||||||
@@ -665,10 +666,11 @@ objective.destroycore.name = Destroy Core
|
|||||||
objective.commandmode.name = Command Mode
|
objective.commandmode.name = Command Mode
|
||||||
objective.flag.name = Flag
|
objective.flag.name = Flag
|
||||||
marker.shapetext.name = Shape Text
|
marker.shapetext.name = Shape Text
|
||||||
marker.minimap.name = Minimap
|
marker.point.name = Point
|
||||||
marker.shape.name = Shape
|
marker.shape.name = Shape
|
||||||
marker.text.name = Text
|
marker.text.name = Text
|
||||||
marker.line.name = Line
|
marker.line.name = Line
|
||||||
|
marker.quad.name = Quad
|
||||||
marker.background = Background
|
marker.background = Background
|
||||||
marker.outline = Outline
|
marker.outline = Outline
|
||||||
objective.research = [accent]Research:\n[]{0}[lightgray]{1}
|
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.attacked = Sector [accent]{0}[white] under attack!
|
||||||
sector.lost = Sector [accent]{0}[white] lost!
|
sector.lost = Sector [accent]{0}[white] lost!
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = Sector [accent]{0}[white]Captured!
|
||||||
|
sector.capture.current = Sector Captured!
|
||||||
sector.changeicon = Change Icon
|
sector.changeicon = Change Icon
|
||||||
sector.noswitch.title = Unable to Switch Sectors
|
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}[]
|
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.message.name = Besked
|
||||||
block.reinforced-message.name = Reinforced Message
|
block.reinforced-message.name = Reinforced Message
|
||||||
block.world-message.name = World Message
|
block.world-message.name = World Message
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = Lyskilde
|
block.illuminator.name = Lyskilde
|
||||||
block.overflow-gate.name = Overflods-låge
|
block.overflow-gate.name = Overflods-låge
|
||||||
block.underflow-gate.name = Underflods-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.setblock = Set tile data at any location.
|
||||||
lst.spawnunit = Spawn unit at a location.
|
lst.spawnunit = Spawn unit at a location.
|
||||||
lst.applystatus = Apply or clear a status effect from a uniut.
|
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.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.explosion = Create an explosion at a location.
|
||||||
lst.setrate = Set processor execution speed in instructions/tick.
|
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.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.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.
|
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.
|
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.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string.
|
||||||
lenum.shoot = Shoot at a position.
|
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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
@@ -498,6 +498,7 @@ editor.default = [lightgray]<Standard>
|
|||||||
details = Details
|
details = Details
|
||||||
edit = Bearbeiten
|
edit = Bearbeiten
|
||||||
variables = Variablen
|
variables = Variablen
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = Name:
|
editor.name = Name:
|
||||||
editor.spawn = Spawnbereich
|
editor.spawn = Spawnbereich
|
||||||
editor.removeunit = Bereich entfernen
|
editor.removeunit = Bereich entfernen
|
||||||
@@ -678,10 +679,11 @@ objective.commandmode.name = Steuerungsmodus
|
|||||||
objective.flag.name = Flag
|
objective.flag.name = Flag
|
||||||
|
|
||||||
marker.shapetext.name = Geformter Text
|
marker.shapetext.name = Geformter Text
|
||||||
marker.minimap.name = Minimap
|
marker.point.name = Point
|
||||||
marker.shape.name = Form
|
marker.shape.name = Form
|
||||||
marker.text.name = Text
|
marker.text.name = Text
|
||||||
marker.line.name = Line
|
marker.line.name = Line
|
||||||
|
marker.quad.name = Quad
|
||||||
|
|
||||||
marker.background = Hintergrund
|
marker.background = Hintergrund
|
||||||
marker.outline = Umriss
|
marker.outline = Umriss
|
||||||
@@ -770,6 +772,7 @@ sector.missingresources = [scarlet]Fehlende Kernressourcen
|
|||||||
sector.attacked = Sektor [accent]{0}[white] wird angegriffen!
|
sector.attacked = Sektor [accent]{0}[white] wird angegriffen!
|
||||||
sector.lost = Sektor [accent]{0}[white] verloren!
|
sector.lost = Sektor [accent]{0}[white] verloren!
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = Sector [accent]{0}[white]Captured!
|
||||||
|
sector.capture.current = Sector Captured!
|
||||||
sector.changeicon = Bild ändern
|
sector.changeicon = Bild ändern
|
||||||
sector.noswitch.title = Kann Sektoren nicht wechseln
|
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}[]
|
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.message.name = Nachricht
|
||||||
block.reinforced-message.name = Verstärkte Nachricht
|
block.reinforced-message.name = Verstärkte Nachricht
|
||||||
block.world-message.name = Weltnachricht
|
block.world-message.name = Weltnachricht
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = Illuminierer
|
block.illuminator.name = Illuminierer
|
||||||
block.overflow-gate.name = Überlauftor
|
block.overflow-gate.name = Überlauftor
|
||||||
block.underflow-gate.name = Unterlauftor
|
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.setblock = Setze Tile-Daten an jedem Standort.
|
||||||
lst.spawnunit = Einheit an einem Standort erstellen.
|
lst.spawnunit = Einheit an einem Standort erstellen.
|
||||||
lst.applystatus = Füge einer Einheit einen Effekt hinzu oder entferne ihn.
|
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.spawnwave = Schickt die nächste Welle.
|
||||||
lst.explosion = Erstellt an einer beliebigen Stelle eine Explosion.
|
lst.explosion = Erstellt an einer beliebigen Stelle eine Explosion.
|
||||||
lst.setrate = Setzt die Ausführungsgeschwindigkeit von Prozessoren in Anweisungen/tick.
|
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.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.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.
|
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.
|
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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
@@ -495,6 +495,7 @@ editor.default = [lightgray]<Por defecto>
|
|||||||
details = Detalles...
|
details = Detalles...
|
||||||
edit = Editar...
|
edit = Editar...
|
||||||
variables = Variables
|
variables = Variables
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = Nombre:
|
editor.name = Nombre:
|
||||||
editor.spawn = Generar unidad
|
editor.spawn = Generar unidad
|
||||||
editor.removeunit = Eliminar unidad
|
editor.removeunit = Eliminar unidad
|
||||||
@@ -675,10 +676,11 @@ objective.commandmode.name = Modo comando
|
|||||||
objective.flag.name = Bandera
|
objective.flag.name = Bandera
|
||||||
|
|
||||||
marker.shapetext.name = Forma del texto
|
marker.shapetext.name = Forma del texto
|
||||||
marker.minimap.name = Minimapa
|
marker.point.name = Point
|
||||||
marker.shape.name = Forma
|
marker.shape.name = Forma
|
||||||
marker.text.name = Texto
|
marker.text.name = Texto
|
||||||
marker.line.name = Line
|
marker.line.name = Line
|
||||||
|
marker.quad.name = Quad
|
||||||
|
|
||||||
marker.background = Fondo
|
marker.background = Fondo
|
||||||
marker.outline = Bordes
|
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.attacked = ¡Sector [accent]{0}[white] bajo ataque!
|
||||||
sector.lost = ¡Sector [accent]{0}[white] perdido!
|
sector.lost = ¡Sector [accent]{0}[white] perdido!
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = Sector [accent]{0}[white]Captured!
|
||||||
|
sector.capture.current = Sector Captured!
|
||||||
sector.changeicon = Cambiar icono
|
sector.changeicon = Cambiar icono
|
||||||
sector.noswitch.title = No se pueden cambiar los sectores
|
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}[]
|
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.message.name = Mensaje
|
||||||
block.reinforced-message.name = Mensaje reforzado
|
block.reinforced-message.name = Mensaje reforzado
|
||||||
block.world-message.name = Mensaje estático
|
block.world-message.name = Mensaje estático
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = Iluminador
|
block.illuminator.name = Iluminador
|
||||||
block.overflow-gate.name = Compuerta de desborde
|
block.overflow-gate.name = Compuerta de desborde
|
||||||
block.underflow-gate.name = Compuerta de subdesbordamiento
|
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.setblock = Cambia los datos de un bloque en cualquier lugar.
|
||||||
lst.spawnunit = Crea una unidad en una localización.
|
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.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.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.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.
|
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.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.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.
|
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.
|
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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
@@ -490,6 +490,7 @@ editor.default = [lightgray]<Vaikimisi>
|
|||||||
details = Üksikasjad...
|
details = Üksikasjad...
|
||||||
edit = Muuda...
|
edit = Muuda...
|
||||||
variables = Vars
|
variables = Vars
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = Nimi:
|
editor.name = Nimi:
|
||||||
editor.spawn = Tekita väeüksus
|
editor.spawn = Tekita väeüksus
|
||||||
editor.removeunit = Eemalda väeüksus
|
editor.removeunit = Eemalda väeüksus
|
||||||
@@ -665,10 +666,11 @@ objective.destroycore.name = Destroy Core
|
|||||||
objective.commandmode.name = Command Mode
|
objective.commandmode.name = Command Mode
|
||||||
objective.flag.name = Flag
|
objective.flag.name = Flag
|
||||||
marker.shapetext.name = Shape Text
|
marker.shapetext.name = Shape Text
|
||||||
marker.minimap.name = Minimap
|
marker.point.name = Point
|
||||||
marker.shape.name = Shape
|
marker.shape.name = Shape
|
||||||
marker.text.name = Text
|
marker.text.name = Text
|
||||||
marker.line.name = Line
|
marker.line.name = Line
|
||||||
|
marker.quad.name = Quad
|
||||||
marker.background = Background
|
marker.background = Background
|
||||||
marker.outline = Outline
|
marker.outline = Outline
|
||||||
objective.research = [accent]Research:\n[]{0}[lightgray]{1}
|
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.attacked = Sector [accent]{0}[white] under attack!
|
||||||
sector.lost = Sector [accent]{0}[white] lost!
|
sector.lost = Sector [accent]{0}[white] lost!
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = Sector [accent]{0}[white]Captured!
|
||||||
|
sector.capture.current = Sector Captured!
|
||||||
sector.changeicon = Change Icon
|
sector.changeicon = Change Icon
|
||||||
sector.noswitch.title = Unable to Switch Sectors
|
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}[]
|
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.message.name = Sõnum
|
||||||
block.reinforced-message.name = Reinforced Message
|
block.reinforced-message.name = Reinforced Message
|
||||||
block.world-message.name = World Message
|
block.world-message.name = World Message
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = Illuminator
|
block.illuminator.name = Illuminator
|
||||||
block.overflow-gate.name = Ülevooluvärav
|
block.overflow-gate.name = Ülevooluvärav
|
||||||
block.underflow-gate.name = Underflow 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.setblock = Set tile data at any location.
|
||||||
lst.spawnunit = Spawn unit at a location.
|
lst.spawnunit = Spawn unit at a location.
|
||||||
lst.applystatus = Apply or clear a status effect from a uniut.
|
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.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.explosion = Create an explosion at a location.
|
||||||
lst.setrate = Set processor execution speed in instructions/tick.
|
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.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.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.
|
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.
|
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.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string.
|
||||||
lenum.shoot = Shoot at a position.
|
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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
@@ -492,6 +492,7 @@ editor.default = [lightgray]<Lehenetsia>
|
|||||||
details = Xehetasunak...
|
details = Xehetasunak...
|
||||||
edit = Editatu...
|
edit = Editatu...
|
||||||
variables = Vars
|
variables = Vars
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = Izena:
|
editor.name = Izena:
|
||||||
editor.spawn = Sortu unitatea
|
editor.spawn = Sortu unitatea
|
||||||
editor.removeunit = Kendu unitatea
|
editor.removeunit = Kendu unitatea
|
||||||
@@ -667,10 +668,11 @@ objective.destroycore.name = Destroy Core
|
|||||||
objective.commandmode.name = Command Mode
|
objective.commandmode.name = Command Mode
|
||||||
objective.flag.name = Flag
|
objective.flag.name = Flag
|
||||||
marker.shapetext.name = Shape Text
|
marker.shapetext.name = Shape Text
|
||||||
marker.minimap.name = Minimap
|
marker.point.name = Point
|
||||||
marker.shape.name = Shape
|
marker.shape.name = Shape
|
||||||
marker.text.name = Text
|
marker.text.name = Text
|
||||||
marker.line.name = Line
|
marker.line.name = Line
|
||||||
|
marker.quad.name = Quad
|
||||||
marker.background = Background
|
marker.background = Background
|
||||||
marker.outline = Outline
|
marker.outline = Outline
|
||||||
objective.research = [accent]Research:\n[]{0}[lightgray]{1}
|
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.attacked = Sector [accent]{0}[white] under attack!
|
||||||
sector.lost = Sector [accent]{0}[white] lost!
|
sector.lost = Sector [accent]{0}[white] lost!
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = Sector [accent]{0}[white]Captured!
|
||||||
|
sector.capture.current = Sector Captured!
|
||||||
sector.changeicon = Change Icon
|
sector.changeicon = Change Icon
|
||||||
sector.noswitch.title = Unable to Switch Sectors
|
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}[]
|
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.message.name = Mezua
|
||||||
block.reinforced-message.name = Reinforced Message
|
block.reinforced-message.name = Reinforced Message
|
||||||
block.world-message.name = World Message
|
block.world-message.name = World Message
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = Illuminator
|
block.illuminator.name = Illuminator
|
||||||
block.overflow-gate.name = Gainezkatze atea
|
block.overflow-gate.name = Gainezkatze atea
|
||||||
block.underflow-gate.name = Underflow Gate
|
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.setblock = Set tile data at any location.
|
||||||
lst.spawnunit = Spawn unit at a location.
|
lst.spawnunit = Spawn unit at a location.
|
||||||
lst.applystatus = Apply or clear a status effect from a uniut.
|
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.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.explosion = Create an explosion at a location.
|
||||||
lst.setrate = Set processor execution speed in instructions/tick.
|
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.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.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.
|
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.
|
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.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string.
|
||||||
lenum.shoot = Shoot at a position.
|
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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
@@ -490,6 +490,7 @@ editor.default = [lightgray]<Oletus>
|
|||||||
details = Yksityiskohdat...
|
details = Yksityiskohdat...
|
||||||
edit = Muokkaa...
|
edit = Muokkaa...
|
||||||
variables = Muuttujat
|
variables = Muuttujat
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = Nimi:
|
editor.name = Nimi:
|
||||||
editor.spawn = Luo yksikkö
|
editor.spawn = Luo yksikkö
|
||||||
editor.removeunit = Poista yksikkö
|
editor.removeunit = Poista yksikkö
|
||||||
@@ -665,10 +666,11 @@ objective.destroycore.name = Destroy Core
|
|||||||
objective.commandmode.name = Command Mode
|
objective.commandmode.name = Command Mode
|
||||||
objective.flag.name = Flag
|
objective.flag.name = Flag
|
||||||
marker.shapetext.name = Shape Text
|
marker.shapetext.name = Shape Text
|
||||||
marker.minimap.name = Pikkukartta
|
marker.point.name = Point
|
||||||
marker.shape.name = Shape
|
marker.shape.name = Shape
|
||||||
marker.text.name = Teksti
|
marker.text.name = Teksti
|
||||||
marker.line.name = Line
|
marker.line.name = Line
|
||||||
|
marker.quad.name = Quad
|
||||||
marker.background = Background
|
marker.background = Background
|
||||||
marker.outline = Outline
|
marker.outline = Outline
|
||||||
objective.research = [accent]Tutki:\n[]{0}[lightgray]{1}
|
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.attacked = Sektori [accent]{0}[white] on hyökkäyksen kohteena!
|
||||||
sector.lost = Sektori [accent]{0}[white] menetetty!
|
sector.lost = Sektori [accent]{0}[white] menetetty!
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = Sector [accent]{0}[white]Captured!
|
||||||
|
sector.capture.current = Sector Captured!
|
||||||
sector.changeicon = Vaihda kuvaketta
|
sector.changeicon = Vaihda kuvaketta
|
||||||
sector.noswitch.title = Sektoria ei voida vaihtaa
|
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}[]
|
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.message.name = Viesti
|
||||||
block.reinforced-message.name = Reinforced Message
|
block.reinforced-message.name = Reinforced Message
|
||||||
block.world-message.name = World Message
|
block.world-message.name = World Message
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = Lamppu
|
block.illuminator.name = Lamppu
|
||||||
block.overflow-gate.name = Ylivuotoportti
|
block.overflow-gate.name = Ylivuotoportti
|
||||||
block.underflow-gate.name = Alivuotoportti
|
block.underflow-gate.name = Alivuotoportti
|
||||||
@@ -2265,6 +2269,8 @@ lst.getblock = Selvitä laattadata missä tahansa sijainnissa.
|
|||||||
lst.setblock = Aseta laattadata missä tahansa sijainnissa.
|
lst.setblock = Aseta laattadata missä tahansa sijainnissa.
|
||||||
lst.spawnunit = Luo joukko tietyssä sijainnissa.
|
lst.spawnunit = Luo joukko tietyssä sijainnissa.
|
||||||
lst.applystatus = Lisää tai poista statusefekti yksiköltä.
|
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.spawnwave = Simuloi tason syntymistä mielivaltaisessa sijainnissa.\nEi vaikuta tasolaskuriin.
|
||||||
lst.explosion = Luo räjähdys tietyssä sijainnissa.
|
lst.explosion = Luo räjähdys tietyssä sijainnissa.
|
||||||
lst.setrate = Aseta prosessorin suoritusnopeus ohjeessa/sekunti.
|
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.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.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.
|
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.
|
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.type = Rakennuksen/Yksikön tyyppi.\nEsim. jokaisesta reitittimestä tämä palauttaa [accent]@router[].\nEi ole merkkijono.
|
||||||
lenum.shoot = Ammu tiettyä sijaintia.
|
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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
@@ -490,6 +490,7 @@ editor.default = [lightgray]<Default>
|
|||||||
details = Details...
|
details = Details...
|
||||||
edit = Edit...
|
edit = Edit...
|
||||||
variables = Vars
|
variables = Vars
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = Name:
|
editor.name = Name:
|
||||||
editor.spawn = Spawn Unit
|
editor.spawn = Spawn Unit
|
||||||
editor.removeunit = Remove Unit
|
editor.removeunit = Remove Unit
|
||||||
@@ -665,10 +666,11 @@ objective.destroycore.name = Destroy Core
|
|||||||
objective.commandmode.name = Command Mode
|
objective.commandmode.name = Command Mode
|
||||||
objective.flag.name = Flag
|
objective.flag.name = Flag
|
||||||
marker.shapetext.name = Shape Text
|
marker.shapetext.name = Shape Text
|
||||||
marker.minimap.name = Minimap
|
marker.point.name = Point
|
||||||
marker.shape.name = Shape
|
marker.shape.name = Shape
|
||||||
marker.text.name = Text
|
marker.text.name = Text
|
||||||
marker.line.name = Line
|
marker.line.name = Line
|
||||||
|
marker.quad.name = Quad
|
||||||
marker.background = Background
|
marker.background = Background
|
||||||
marker.outline = Outline
|
marker.outline = Outline
|
||||||
objective.research = [accent]Research:\n[]{0}[lightgray]{1}
|
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.attacked = Ang sector [accent]{0}[white] ay inaatake!
|
||||||
sector.lost = Ang sector [accent]{0}[white] ay nawala!
|
sector.lost = Ang sector [accent]{0}[white] ay nawala!
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = Sector [accent]{0}[white]Captured!
|
||||||
|
sector.capture.current = Sector Captured!
|
||||||
sector.changeicon = Change Icon
|
sector.changeicon = Change Icon
|
||||||
sector.noswitch.title = Unable to Switch Sectors
|
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}[]
|
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.message.name = Message
|
||||||
block.reinforced-message.name = Reinforced Message
|
block.reinforced-message.name = Reinforced Message
|
||||||
block.world-message.name = World Message
|
block.world-message.name = World Message
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = Illuminator
|
block.illuminator.name = Illuminator
|
||||||
block.overflow-gate.name = Overflow Gate
|
block.overflow-gate.name = Overflow Gate
|
||||||
block.underflow-gate.name = Underflow 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.setblock = Set tile data at any location.
|
||||||
lst.spawnunit = Spawn unit at a location.
|
lst.spawnunit = Spawn unit at a location.
|
||||||
lst.applystatus = Apply or clear a status effect from a uniut.
|
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.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.explosion = Create an explosion at a location.
|
||||||
lst.setrate = Set processor execution speed in instructions/tick.
|
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.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.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.
|
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.
|
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.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string.
|
||||||
lenum.shoot = Shoot at a position.
|
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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
@@ -501,6 +501,7 @@ editor.default = [lightgray]<par défaut>
|
|||||||
details = Détails...
|
details = Détails...
|
||||||
edit = Modifier...
|
edit = Modifier...
|
||||||
variables = Variables
|
variables = Variables
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = Nom :
|
editor.name = Nom :
|
||||||
editor.spawn = Ajouter une unité
|
editor.spawn = Ajouter une unité
|
||||||
editor.removeunit = Retirer l'unité
|
editor.removeunit = Retirer l'unité
|
||||||
@@ -681,10 +682,11 @@ objective.commandmode.name = Mode « Commande »
|
|||||||
objective.flag.name = Drapeau
|
objective.flag.name = Drapeau
|
||||||
|
|
||||||
marker.shapetext.name = Forme de Texte
|
marker.shapetext.name = Forme de Texte
|
||||||
marker.minimap.name = Minicarte
|
marker.point.name = Point
|
||||||
marker.shape.name = Forme
|
marker.shape.name = Forme
|
||||||
marker.text.name = Texte
|
marker.text.name = Texte
|
||||||
marker.line.name = Ligne
|
marker.line.name = Ligne
|
||||||
|
marker.quad.name = Quad
|
||||||
|
|
||||||
marker.background = Fond
|
marker.background = Fond
|
||||||
marker.outline = Contour
|
marker.outline = Contour
|
||||||
@@ -773,6 +775,7 @@ sector.missingresources = [scarlet]Ressources du Noyau insuffisantes !
|
|||||||
sector.attacked = Secteur [accent]{0}[white] attaqué !
|
sector.attacked = Secteur [accent]{0}[white] attaqué !
|
||||||
sector.lost = Secteur [accent]{0}[white] perdu !
|
sector.lost = Secteur [accent]{0}[white] perdu !
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = Sector [accent]{0}[white]Captured!
|
||||||
|
sector.capture.current = Sector Captured!
|
||||||
sector.changeicon = Changer l'Icône
|
sector.changeicon = Changer l'Icône
|
||||||
sector.noswitch.title = Impossible de changer de Secteur
|
sector.noswitch.title = Impossible de changer de Secteur
|
||||||
sector.noswitch = Vous ne pouvez pas changer de secteur pendant qu’un autre est attaqué.\n\nSecteur: [accent]{0}[] sur [accent]{1}[]
|
sector.noswitch = Vous ne pouvez pas changer de secteur pendant qu’un autre est attaqué.\n\nSecteur: [accent]{0}[] sur [accent]{1}[]
|
||||||
@@ -1562,6 +1565,7 @@ block.inverted-sorter.name = Trieur Inversé
|
|||||||
block.message.name = Bloc de Message
|
block.message.name = Bloc de Message
|
||||||
block.reinforced-message.name = Bloc de Message Renforcé
|
block.reinforced-message.name = Bloc de Message Renforcé
|
||||||
block.world-message.name = Bloc de Message Global
|
block.world-message.name = Bloc de Message Global
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = Illuminateur
|
block.illuminator.name = Illuminateur
|
||||||
block.overflow-gate.name = Barrière de Débordement
|
block.overflow-gate.name = Barrière de Débordement
|
||||||
block.underflow-gate.name = Barrière de Refoulement
|
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.setblock = Définit les données d'une tuile à n'importe quel emplacement.
|
||||||
lst.spawnunit = Fait apparaître une unité à un emplacement.
|
lst.spawnunit = Fait apparaître une unité à un emplacement.
|
||||||
lst.applystatus = Ajoute ou enlève un effet de statut d'une unité.
|
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.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.explosion = Crée une explosion à un emplacement.
|
||||||
lst.setrate = Définit la vitesse d'exécution d'un processeur en instructions/tick.
|
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.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.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.
|
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.
|
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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -495,6 +495,7 @@ editor.default = [lightgray]<Standar>
|
|||||||
details = Detail...
|
details = Detail...
|
||||||
edit = Sunting...
|
edit = Sunting...
|
||||||
variables = Vars
|
variables = Vars
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = Nama:
|
editor.name = Nama:
|
||||||
editor.spawn = Munculkan Unit
|
editor.spawn = Munculkan Unit
|
||||||
editor.removeunit = Hapus Unit
|
editor.removeunit = Hapus Unit
|
||||||
@@ -675,10 +676,11 @@ objective.commandmode.name = Mode Perintah
|
|||||||
objective.flag.name = Bendera
|
objective.flag.name = Bendera
|
||||||
|
|
||||||
marker.shapetext.name = Teks Berbentuk
|
marker.shapetext.name = Teks Berbentuk
|
||||||
marker.minimap.name = Peta Kecil
|
marker.point.name = Point
|
||||||
marker.shape.name = Bentuk
|
marker.shape.name = Bentuk
|
||||||
marker.text.name = Teks
|
marker.text.name = Teks
|
||||||
marker.line.name = Line
|
marker.line.name = Line
|
||||||
|
marker.quad.name = Quad
|
||||||
|
|
||||||
marker.background = Latar Belakang
|
marker.background = Latar Belakang
|
||||||
marker.outline = Garis Luar
|
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.attacked = Sektor [accent]{0}[white] sedang diserang!
|
||||||
sector.lost = Sektor [accent]{0}[white] telah dihancurkan!
|
sector.lost = Sektor [accent]{0}[white] telah dihancurkan!
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = Sector [accent]{0}[white]Captured!
|
||||||
|
sector.capture.current = Sector Captured!
|
||||||
sector.changeicon = Ubah Ikon
|
sector.changeicon = Ubah Ikon
|
||||||
sector.noswitch.title = Tidak Dapat beralih Sektor
|
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}[]
|
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.message.name = Pesan
|
||||||
block.reinforced-message.name = Reinforced Message
|
block.reinforced-message.name = Reinforced Message
|
||||||
block.world-message.name = World Message
|
block.world-message.name = World Message
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = Lampu
|
block.illuminator.name = Lampu
|
||||||
block.overflow-gate.name = Gerbang Luap
|
block.overflow-gate.name = Gerbang Luap
|
||||||
block.underflow-gate.name = Gerbang Luap Terbalik
|
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.setblock = Menentukan data petak di lokasi manapun.
|
||||||
lst.spawnunit = Munculkan unit pada tempat yang ditentukan.
|
lst.spawnunit = Munculkan unit pada tempat yang ditentukan.
|
||||||
lst.applystatus = Menerapkan atau menghapus status efek dari sebuah unit.
|
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.spawnwave = Simulasikan adanya gelombang pada lokasi acak.\nTidak akan ditambahkan pada jumlah gelombang keseluruhan.
|
||||||
lst.explosion = Membuat sebuah ledakan pada lokasi yang ditentukan.
|
lst.explosion = Membuat sebuah ledakan pada lokasi yang ditentukan.
|
||||||
lst.setrate = Menentukan kecepatan eksekusi prosesor dalam instruksi per tick.
|
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.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.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.
|
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.
|
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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
@@ -493,6 +493,7 @@ editor.default = [lightgray]<Predefinito>
|
|||||||
details = Dettagli...
|
details = Dettagli...
|
||||||
edit = Modifica...
|
edit = Modifica...
|
||||||
variables = Vars
|
variables = Vars
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = Nome:
|
editor.name = Nome:
|
||||||
editor.spawn = Piazza un'Unità
|
editor.spawn = Piazza un'Unità
|
||||||
editor.removeunit = Rimuovi un'Unità
|
editor.removeunit = Rimuovi un'Unità
|
||||||
@@ -668,10 +669,11 @@ objective.destroycore.name = Distruggi nuclei
|
|||||||
objective.commandmode.name = Modalità comando
|
objective.commandmode.name = Modalità comando
|
||||||
objective.flag.name = Flag
|
objective.flag.name = Flag
|
||||||
marker.shapetext.name = Shape Text
|
marker.shapetext.name = Shape Text
|
||||||
marker.minimap.name = Minimappa
|
marker.point.name = Point
|
||||||
marker.shape.name = Forma
|
marker.shape.name = Forma
|
||||||
marker.text.name = Testo
|
marker.text.name = Testo
|
||||||
marker.line.name = Line
|
marker.line.name = Line
|
||||||
|
marker.quad.name = Quad
|
||||||
marker.background = Sfondo
|
marker.background = Sfondo
|
||||||
marker.outline = Outline
|
marker.outline = Outline
|
||||||
objective.research = [accent]Ricerca:\n[]{0}[lightgray]{1}
|
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.attacked = Settore [accent]{0}[white] sotto attacco!
|
||||||
sector.lost = Settore [accent]{0}[white] perso!
|
sector.lost = Settore [accent]{0}[white] perso!
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = Sector [accent]{0}[white]Captured!
|
||||||
|
sector.capture.current = Sector Captured!
|
||||||
sector.changeicon = Cambia icona
|
sector.changeicon = Cambia icona
|
||||||
sector.noswitch.title = Impossibile cambiare settore
|
sector.noswitch.title = Impossibile cambiare settore
|
||||||
sector.noswitch = Non puoi cambiare settore mentre sei sotto attacco.\n\nSectore: [accent]{0}[] on [accent]{1}[]
|
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.message.name = Messaggio
|
||||||
block.reinforced-message.name = Reinforced Message
|
block.reinforced-message.name = Reinforced Message
|
||||||
block.world-message.name = World Message
|
block.world-message.name = World Message
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = Lanterna
|
block.illuminator.name = Lanterna
|
||||||
block.overflow-gate.name = Separatore per Eccesso
|
block.overflow-gate.name = Separatore per Eccesso
|
||||||
block.underflow-gate.name = Separatore per Eccesso Inverso
|
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.setblock = Set tile data at any location.
|
||||||
lst.spawnunit = Spawn unit at a location.
|
lst.spawnunit = Spawn unit at a location.
|
||||||
lst.applystatus = Apply or clear a status effect from a uniut.
|
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.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.explosion = Create an explosion at a location.
|
||||||
lst.setrate = Set processor execution speed in instructions/tick.
|
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.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.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.
|
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.
|
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.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string.
|
||||||
lenum.shoot = Shoot at a position.
|
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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
@@ -495,6 +495,7 @@ editor.default = [lightgray]<デフォルト>
|
|||||||
details = 詳細...
|
details = 詳細...
|
||||||
edit = 編集...
|
edit = 編集...
|
||||||
variables = 変数
|
variables = 変数
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = 名前:
|
editor.name = 名前:
|
||||||
editor.spawn = ユニットを出す
|
editor.spawn = ユニットを出す
|
||||||
editor.removeunit = ユニットを消す
|
editor.removeunit = ユニットを消す
|
||||||
@@ -672,10 +673,11 @@ objective.destroycore.name = コアを破壊する
|
|||||||
objective.commandmode.name = コマンドモード
|
objective.commandmode.name = コマンドモード
|
||||||
objective.flag.name = フラグ
|
objective.flag.name = フラグ
|
||||||
marker.shapetext.name = テキストの形
|
marker.shapetext.name = テキストの形
|
||||||
marker.minimap.name = ミニマップ
|
marker.point.name = Point
|
||||||
marker.shape.name = 図形
|
marker.shape.name = 図形
|
||||||
marker.text.name = 文章
|
marker.text.name = 文章
|
||||||
marker.line.name = Line
|
marker.line.name = Line
|
||||||
|
marker.quad.name = Quad
|
||||||
marker.background = 背景
|
marker.background = 背景
|
||||||
marker.outline = 輪郭
|
marker.outline = 輪郭
|
||||||
objective.research = [accent]Research:\n[]{0}[lightgray]{1}
|
objective.research = [accent]Research:\n[]{0}[lightgray]{1}
|
||||||
@@ -760,6 +762,7 @@ sector.missingresources = [scarlet]資源が足りません
|
|||||||
sector.attacked = セクター [accent]{0}[white] が攻撃を受けています!
|
sector.attacked = セクター [accent]{0}[white] が攻撃を受けています!
|
||||||
sector.lost = セクター [accent]{0}[white] 喪失!
|
sector.lost = セクター [accent]{0}[white] 喪失!
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = Sector [accent]{0}[white]Captured!
|
||||||
|
sector.capture.current = Sector Captured!
|
||||||
sector.changeicon = アイコンを変更
|
sector.changeicon = アイコンを変更
|
||||||
sector.noswitch.title = セクターを切り替えることができません
|
sector.noswitch.title = セクターを切り替えることができません
|
||||||
sector.noswitch = 既存のセクターが攻撃を受けている間は、セクターを切り替えることはできません。\n\nセクター: [accent]{0}[] on [accent]{1}[]
|
sector.noswitch = 既存のセクターが攻撃を受けている間は、セクターを切り替えることはできません。\n\nセクター: [accent]{0}[] on [accent]{1}[]
|
||||||
@@ -1544,6 +1547,7 @@ block.inverted-sorter.name = 反転ソーター
|
|||||||
block.message.name = メッセージブロック
|
block.message.name = メッセージブロック
|
||||||
block.reinforced-message.name = 強化されたメッセージブロック
|
block.reinforced-message.name = 強化されたメッセージブロック
|
||||||
block.world-message.name = ワールドメッセージブロック
|
block.world-message.name = ワールドメッセージブロック
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = イルミネーター
|
block.illuminator.name = イルミネーター
|
||||||
block.overflow-gate.name = オーバーフローゲート
|
block.overflow-gate.name = オーバーフローゲート
|
||||||
block.underflow-gate.name = アンダーフローゲート
|
block.underflow-gate.name = アンダーフローゲート
|
||||||
@@ -2278,6 +2282,8 @@ lst.getblock = 任意の座標のタイルの情報を取得します。
|
|||||||
lst.setblock = 任意の座標のタイルの情報を変更します。
|
lst.setblock = 任意の座標のタイルの情報を変更します。
|
||||||
lst.spawnunit = 任意の座標にユニットをスポーンさせます。
|
lst.spawnunit = 任意の座標にユニットをスポーンさせます。
|
||||||
lst.applystatus = ユニットからステータス効果を適用または削除する。
|
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.spawnwave = 任意の座標で発生するウェーブをシミュレーションします。\nウェーブを進めません。
|
||||||
lst.explosion = ある場所で爆発を起こします。
|
lst.explosion = ある場所で爆発を起こします。
|
||||||
lst.setrate = プロセッサーの実行速度を1命令/tickで設定します。
|
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.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.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.
|
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]ここではユニット構築ロジックは使用できません。
|
logic.nounitbuild = [red]ここではユニット構築ロジックは使用できません。
|
||||||
lenum.type = ユニットや建物の種類を取得します。\n例:任意のルーターに対して、 [accent]@router[] を返します。\n文字列ではありません。
|
lenum.type = ユニットや建物の種類を取得します。\n例:任意のルーターに対して、 [accent]@router[] を返します。\n文字列ではありません。
|
||||||
lenum.shoot = 指定した座標に向かって撃ちます。
|
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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
@@ -494,6 +494,7 @@ editor.default = [lightgray]<기본값>
|
|||||||
details = 설명...
|
details = 설명...
|
||||||
edit = 편집...
|
edit = 편집...
|
||||||
variables = 변수
|
variables = 변수
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = 이름:
|
editor.name = 이름:
|
||||||
editor.spawn = 기체 생성
|
editor.spawn = 기체 생성
|
||||||
editor.removeunit = 기체 삭제
|
editor.removeunit = 기체 삭제
|
||||||
@@ -672,10 +673,11 @@ objective.destroycore.name = 코어 파괴
|
|||||||
objective.commandmode.name = 명령 모드
|
objective.commandmode.name = 명령 모드
|
||||||
objective.flag.name = 플래그
|
objective.flag.name = 플래그
|
||||||
marker.shapetext.name = 도형과 문자
|
marker.shapetext.name = 도형과 문자
|
||||||
marker.minimap.name = 미니맵
|
marker.point.name = Point
|
||||||
marker.shape.name = 도형
|
marker.shape.name = 도형
|
||||||
marker.text.name = 문자
|
marker.text.name = 문자
|
||||||
marker.line.name = Line
|
marker.line.name = Line
|
||||||
|
marker.quad.name = Quad
|
||||||
marker.background = 배경
|
marker.background = 배경
|
||||||
marker.outline = 외곽선
|
marker.outline = 외곽선
|
||||||
|
|
||||||
@@ -761,6 +763,7 @@ sector.missingresources = [scarlet]코어 자원 부족[]
|
|||||||
sector.attacked = [accent]{0}[white] 지역이 공격받고 있습니다![]
|
sector.attacked = [accent]{0}[white] 지역이 공격받고 있습니다![]
|
||||||
sector.lost = [accent]{0}[white] 지역을 잃었습니다![]
|
sector.lost = [accent]{0}[white] 지역을 잃었습니다![]
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = Sector [accent]{0}[white]Captured!
|
||||||
|
sector.capture.current = Sector Captured!
|
||||||
sector.changeicon = 아이콘 바꾸기
|
sector.changeicon = 아이콘 바꾸기
|
||||||
sector.noswitch.title = 지역 전환 불가능
|
sector.noswitch.title = 지역 전환 불가능
|
||||||
sector.noswitch = 기존 지역이 공격받는 동안은 지역을 전환할 수 없습니다.\n\n지역: [accent]{0}[] 중 [accent]{1}[]
|
sector.noswitch = 기존 지역이 공격받는 동안은 지역을 전환할 수 없습니다.\n\n지역: [accent]{0}[] 중 [accent]{1}[]
|
||||||
@@ -1543,6 +1546,7 @@ block.inverted-sorter.name = 반전 필터
|
|||||||
block.message.name = 메모 블록
|
block.message.name = 메모 블록
|
||||||
block.reinforced-message.name = 보강된 메모 블록
|
block.reinforced-message.name = 보강된 메모 블록
|
||||||
block.world-message.name = 월드 메모 블록
|
block.world-message.name = 월드 메모 블록
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = 조명
|
block.illuminator.name = 조명
|
||||||
block.overflow-gate.name = 포화 필터
|
block.overflow-gate.name = 포화 필터
|
||||||
block.underflow-gate.name = 불포화 필터
|
block.underflow-gate.name = 불포화 필터
|
||||||
@@ -2277,6 +2281,8 @@ lst.getblock = 특정 위치의 타일 정보를 불러옴
|
|||||||
lst.setblock = 특정 위치의 타일 정보 설정
|
lst.setblock = 특정 위치의 타일 정보 설정
|
||||||
lst.spawnunit = 특정 위치에 기체 소환
|
lst.spawnunit = 특정 위치에 기체 소환
|
||||||
lst.applystatus = 기체에게 상태이상을 적용하거나 삭제
|
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.spawnwave = 특정 위치에 이전 단계를 실행\n실제 단계가 넘어가지 않습니다
|
||||||
lst.explosion = 특정 위치에 폭발 생성
|
lst.explosion = 특정 위치에 폭발 생성
|
||||||
lst.setrate = 프로세서 실행 속도를 틱당 연산량으로 설정
|
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.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.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.
|
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]기체의 건설 로직은 여기서 허용되지 않습니다.
|
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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
@@ -490,6 +490,7 @@ editor.default = [lightgray]<Numatytasis>
|
|||||||
details = Detaliau...
|
details = Detaliau...
|
||||||
edit = Redaguoti...
|
edit = Redaguoti...
|
||||||
variables = Vars
|
variables = Vars
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = Pavadinimas:
|
editor.name = Pavadinimas:
|
||||||
editor.spawn = Atradinti vienetą
|
editor.spawn = Atradinti vienetą
|
||||||
editor.removeunit = Panaikinti vienetą
|
editor.removeunit = Panaikinti vienetą
|
||||||
@@ -665,10 +666,11 @@ objective.destroycore.name = Destroy Core
|
|||||||
objective.commandmode.name = Command Mode
|
objective.commandmode.name = Command Mode
|
||||||
objective.flag.name = Flag
|
objective.flag.name = Flag
|
||||||
marker.shapetext.name = Shape Text
|
marker.shapetext.name = Shape Text
|
||||||
marker.minimap.name = Minimap
|
marker.point.name = Point
|
||||||
marker.shape.name = Shape
|
marker.shape.name = Shape
|
||||||
marker.text.name = Text
|
marker.text.name = Text
|
||||||
marker.line.name = Line
|
marker.line.name = Line
|
||||||
|
marker.quad.name = Quad
|
||||||
marker.background = Background
|
marker.background = Background
|
||||||
marker.outline = Outline
|
marker.outline = Outline
|
||||||
objective.research = [accent]Research:\n[]{0}[lightgray]{1}
|
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.attacked = Sector [accent]{0}[white] under attack!
|
||||||
sector.lost = Sector [accent]{0}[white] lost!
|
sector.lost = Sector [accent]{0}[white] lost!
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = Sector [accent]{0}[white]Captured!
|
||||||
|
sector.capture.current = Sector Captured!
|
||||||
sector.changeicon = Change Icon
|
sector.changeicon = Change Icon
|
||||||
sector.noswitch.title = Unable to Switch Sectors
|
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}[]
|
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.message.name = Žinutė
|
||||||
block.reinforced-message.name = Reinforced Message
|
block.reinforced-message.name = Reinforced Message
|
||||||
block.world-message.name = World Message
|
block.world-message.name = World Message
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = Šviestuvas
|
block.illuminator.name = Šviestuvas
|
||||||
block.overflow-gate.name = Perpildymo Užtvara
|
block.overflow-gate.name = Perpildymo Užtvara
|
||||||
block.underflow-gate.name = Neperpildymo 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.setblock = Set tile data at any location.
|
||||||
lst.spawnunit = Spawn unit at a location.
|
lst.spawnunit = Spawn unit at a location.
|
||||||
lst.applystatus = Apply or clear a status effect from a uniut.
|
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.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.explosion = Create an explosion at a location.
|
||||||
lst.setrate = Set processor execution speed in instructions/tick.
|
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.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.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.
|
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.
|
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.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string.
|
||||||
lenum.shoot = Shoot at a position.
|
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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
@@ -498,6 +498,7 @@ editor.default = [lightgray]<Standaard>
|
|||||||
details = Details...
|
details = Details...
|
||||||
edit = Bewerk...
|
edit = Bewerk...
|
||||||
variables = Vars
|
variables = Vars
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = Naam:
|
editor.name = Naam:
|
||||||
editor.spawn = Voeg Eenheid toe
|
editor.spawn = Voeg Eenheid toe
|
||||||
editor.removeunit = Verwijder Eenheid
|
editor.removeunit = Verwijder Eenheid
|
||||||
@@ -676,10 +677,11 @@ objective.destroycore.name = Vernietig Core
|
|||||||
objective.commandmode.name = Commando Modus
|
objective.commandmode.name = Commando Modus
|
||||||
objective.flag.name = Vlag
|
objective.flag.name = Vlag
|
||||||
marker.shapetext.name = Vorm Tekst
|
marker.shapetext.name = Vorm Tekst
|
||||||
marker.minimap.name = Minimap
|
marker.point.name = Point
|
||||||
marker.shape.name = Vorm
|
marker.shape.name = Vorm
|
||||||
marker.text.name = Tekst
|
marker.text.name = Tekst
|
||||||
marker.line.name = Line
|
marker.line.name = Line
|
||||||
|
marker.quad.name = Quad
|
||||||
marker.background = Achtergrond
|
marker.background = Achtergrond
|
||||||
marker.outline = Omtrek
|
marker.outline = Omtrek
|
||||||
objective.research = [accent]Onderzoek:\n[]{0}[lightgray]{1}
|
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.attacked = Sector [accent]{0}[white] onder vuur!
|
||||||
sector.lost = Sector [accent]{0}[white] verloren!
|
sector.lost = Sector [accent]{0}[white] verloren!
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = Sector [accent]{0}[white]Captured!
|
||||||
|
sector.capture.current = Sector Captured!
|
||||||
sector.changeicon = Verander icoon
|
sector.changeicon = Verander icoon
|
||||||
sector.noswitch.title = Kan niet van sector wisselen
|
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}[]
|
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.message.name = Bericht
|
||||||
block.reinforced-message.name = Gepansterd Bericht
|
block.reinforced-message.name = Gepansterd Bericht
|
||||||
block.world-message.name = Wereldbericht
|
block.world-message.name = Wereldbericht
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = Lamp
|
block.illuminator.name = Lamp
|
||||||
block.overflow-gate.name = Overstroom Poort
|
block.overflow-gate.name = Overstroom Poort
|
||||||
block.underflow-gate.name = Onderstroom 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.setblock = Set tile data at any location.
|
||||||
lst.spawnunit = Spawn unit at a location.
|
lst.spawnunit = Spawn unit at a location.
|
||||||
lst.applystatus = Apply or clear a status effect from a uniut.
|
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.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.explosion = Create an explosion at a location.
|
||||||
lst.setrate = Set processor execution speed in instructions/tick.
|
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.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.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.
|
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.
|
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.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string.
|
||||||
lenum.shoot = Shoot at a position.
|
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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
@@ -490,6 +490,7 @@ editor.default = [lightgray]<Default>
|
|||||||
details = Details...
|
details = Details...
|
||||||
edit = Edit...
|
edit = Edit...
|
||||||
variables = Vars
|
variables = Vars
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = Name:
|
editor.name = Name:
|
||||||
editor.spawn = Spawn Unit
|
editor.spawn = Spawn Unit
|
||||||
editor.removeunit = Remove Unit
|
editor.removeunit = Remove Unit
|
||||||
@@ -665,10 +666,11 @@ objective.destroycore.name = Destroy Core
|
|||||||
objective.commandmode.name = Command Mode
|
objective.commandmode.name = Command Mode
|
||||||
objective.flag.name = Flag
|
objective.flag.name = Flag
|
||||||
marker.shapetext.name = Shape Text
|
marker.shapetext.name = Shape Text
|
||||||
marker.minimap.name = Minimap
|
marker.point.name = Point
|
||||||
marker.shape.name = Shape
|
marker.shape.name = Shape
|
||||||
marker.text.name = Text
|
marker.text.name = Text
|
||||||
marker.line.name = Line
|
marker.line.name = Line
|
||||||
|
marker.quad.name = Quad
|
||||||
marker.background = Background
|
marker.background = Background
|
||||||
marker.outline = Outline
|
marker.outline = Outline
|
||||||
objective.research = [accent]Research:\n[]{0}[lightgray]{1}
|
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.attacked = Sector [accent]{0}[white] under attack!
|
||||||
sector.lost = Sector [accent]{0}[white] lost!
|
sector.lost = Sector [accent]{0}[white] lost!
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = Sector [accent]{0}[white]Captured!
|
||||||
|
sector.capture.current = Sector Captured!
|
||||||
sector.changeicon = Change Icon
|
sector.changeicon = Change Icon
|
||||||
sector.noswitch.title = Unable to Switch Sectors
|
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}[]
|
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.message.name = Message
|
||||||
block.reinforced-message.name = Reinforced Message
|
block.reinforced-message.name = Reinforced Message
|
||||||
block.world-message.name = World Message
|
block.world-message.name = World Message
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = Illuminator
|
block.illuminator.name = Illuminator
|
||||||
block.overflow-gate.name = Overflow Gate
|
block.overflow-gate.name = Overflow Gate
|
||||||
block.underflow-gate.name = Underflow 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.setblock = Set tile data at any location.
|
||||||
lst.spawnunit = Spawn unit at a location.
|
lst.spawnunit = Spawn unit at a location.
|
||||||
lst.applystatus = Apply or clear a status effect from a uniut.
|
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.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.explosion = Create an explosion at a location.
|
||||||
lst.setrate = Set processor execution speed in instructions/tick.
|
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.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.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.
|
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.
|
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.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string.
|
||||||
lenum.shoot = Shoot at a position.
|
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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
@@ -495,6 +495,7 @@ editor.default = [lightgray]<Domyślne>
|
|||||||
details = Detale...
|
details = Detale...
|
||||||
edit = Edytuj...
|
edit = Edytuj...
|
||||||
variables = Zmienne
|
variables = Zmienne
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = Nazwa:
|
editor.name = Nazwa:
|
||||||
editor.spawn = Stwórz Jednostkę
|
editor.spawn = Stwórz Jednostkę
|
||||||
editor.removeunit = Usuń Jednostkę
|
editor.removeunit = Usuń Jednostkę
|
||||||
@@ -670,10 +671,11 @@ objective.destroycore.name = Zniszcz Rdzeń
|
|||||||
objective.commandmode.name = Tryb Poleceń
|
objective.commandmode.name = Tryb Poleceń
|
||||||
objective.flag.name = Oznaczenie
|
objective.flag.name = Oznaczenie
|
||||||
marker.shapetext.name = Dostosuj Tekst
|
marker.shapetext.name = Dostosuj Tekst
|
||||||
marker.minimap.name = Minimapa
|
marker.point.name = Point
|
||||||
marker.shape.name = Figura
|
marker.shape.name = Figura
|
||||||
marker.text.name = Tekst
|
marker.text.name = Tekst
|
||||||
marker.line.name = Line
|
marker.line.name = Line
|
||||||
|
marker.quad.name = Quad
|
||||||
marker.background = Tło
|
marker.background = Tło
|
||||||
marker.outline = Kontur
|
marker.outline = Kontur
|
||||||
objective.research = [accent]Zbadaj:\n[]{0}[lightgray]{1}
|
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.attacked = Sektor [accent]{0}[white] jest atakowany!
|
||||||
sector.lost = Sektor [accent]{0}[white] został stracony!
|
sector.lost = Sektor [accent]{0}[white] został stracony!
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = Sector [accent]{0}[white]Captured!
|
||||||
|
sector.capture.current = Sector Captured!
|
||||||
sector.changeicon = Zmień Ikonę
|
sector.changeicon = Zmień Ikonę
|
||||||
sector.noswitch.title = Nie można zmienić sektorów
|
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}[]
|
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.message.name = Wiadomość
|
||||||
block.reinforced-message.name = Wzmocniona Wiadomość
|
block.reinforced-message.name = Wzmocniona Wiadomość
|
||||||
block.world-message.name = World Message
|
block.world-message.name = World Message
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = Rozświetlacz
|
block.illuminator.name = Rozświetlacz
|
||||||
block.overflow-gate.name = Brama Przepełnieniowa
|
block.overflow-gate.name = Brama Przepełnieniowa
|
||||||
block.underflow-gate.name = Brama Niedomiaru
|
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.setblock = Ustaw dane dla dowolnej lokalizacji.
|
||||||
lst.spawnunit = Odródź jednostkę w lokalizacji.
|
lst.spawnunit = Odródź jednostkę w lokalizacji.
|
||||||
lst.applystatus = Zastosuj lub wyczyść efekty statusu jednostki.
|
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.spawnwave = Symuluj falę odradzającą się w dowolnym miejscu.\nNie zwiększy licznika fali.
|
||||||
lst.explosion = Stwórz eksplozję w lokalizacji.
|
lst.explosion = Stwórz eksplozję w lokalizacji.
|
||||||
lst.setrate = Ustaw szybkość wykonywania procesora w instrukcjach/tick.
|
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.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.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.
|
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.
|
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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
@@ -495,6 +495,7 @@ editor.default = [lightgray]<padrão>
|
|||||||
details = Detalhes...
|
details = Detalhes...
|
||||||
edit = Editar...
|
edit = Editar...
|
||||||
variables = Variáveis
|
variables = Variáveis
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = Nome:
|
editor.name = Nome:
|
||||||
editor.spawn = Spawnar unidade
|
editor.spawn = Spawnar unidade
|
||||||
editor.removeunit = Remover unidade
|
editor.removeunit = Remover unidade
|
||||||
@@ -675,10 +676,11 @@ objective.commandmode.name = Modo de Comando
|
|||||||
objective.flag.name = Flag
|
objective.flag.name = Flag
|
||||||
|
|
||||||
marker.shapetext.name = Shape Text
|
marker.shapetext.name = Shape Text
|
||||||
marker.minimap.name = Minimapa
|
marker.point.name = Point
|
||||||
marker.shape.name = Shape
|
marker.shape.name = Shape
|
||||||
marker.text.name = Texto
|
marker.text.name = Texto
|
||||||
marker.line.name = Line
|
marker.line.name = Line
|
||||||
|
marker.quad.name = Quad
|
||||||
|
|
||||||
marker.background = Fundo
|
marker.background = Fundo
|
||||||
marker.outline = Contorno
|
marker.outline = Contorno
|
||||||
@@ -766,6 +768,7 @@ sector.missingresources = [scarlet]Recursos Insuficientes no Núcleo
|
|||||||
sector.attacked = Setor [accent]{0}[white] sob ataque!
|
sector.attacked = Setor [accent]{0}[white] sob ataque!
|
||||||
sector.lost = Setor [accent]{0}[white] perdido!
|
sector.lost = Setor [accent]{0}[white] perdido!
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = Sector [accent]{0}[white]Captured!
|
||||||
|
sector.capture.current = Sector Captured!
|
||||||
sector.changeicon = Trocar Ícone
|
sector.changeicon = Trocar Ícone
|
||||||
sector.noswitch.title = Incapaz de Mudar de Setores
|
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}[]
|
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.message.name = Mensagem
|
||||||
block.reinforced-message.name = Reinforced Message
|
block.reinforced-message.name = Reinforced Message
|
||||||
block.world-message.name = World Message
|
block.world-message.name = World Message
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = Iluminador
|
block.illuminator.name = Iluminador
|
||||||
block.overflow-gate.name = Portão de Sobrecarga
|
block.overflow-gate.name = Portão de Sobrecarga
|
||||||
block.underflow-gate.name = Portão de Sobrecarga Invertido
|
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.setblock = Defina os dados do bloco em qualquer local.
|
||||||
lst.spawnunit = Gere uma unidade em um local.
|
lst.spawnunit = Gere uma unidade em um local.
|
||||||
lst.applystatus = Aplique ou elimine um efeito de status de uma unidade.
|
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.spawnwave = Gerar uma onda.
|
||||||
lst.explosion = Crie uma explosão em um local.
|
lst.explosion = Crie uma explosão em um local.
|
||||||
lst.setrate = Defina a velocidade de execução do processador em instruções/tick.
|
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.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.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.
|
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.
|
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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
@@ -490,6 +490,7 @@ editor.default = [lightgray]<padrão>
|
|||||||
details = Detalhes...
|
details = Detalhes...
|
||||||
edit = Editar...
|
edit = Editar...
|
||||||
variables = Vars
|
variables = Vars
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = Nome:
|
editor.name = Nome:
|
||||||
editor.spawn = Criar unidade
|
editor.spawn = Criar unidade
|
||||||
editor.removeunit = Remover unidade
|
editor.removeunit = Remover unidade
|
||||||
@@ -665,10 +666,11 @@ objective.destroycore.name = Destroy Core
|
|||||||
objective.commandmode.name = Command Mode
|
objective.commandmode.name = Command Mode
|
||||||
objective.flag.name = Flag
|
objective.flag.name = Flag
|
||||||
marker.shapetext.name = Shape Text
|
marker.shapetext.name = Shape Text
|
||||||
marker.minimap.name = Minimap
|
marker.point.name = Point
|
||||||
marker.shape.name = Shape
|
marker.shape.name = Shape
|
||||||
marker.text.name = Text
|
marker.text.name = Text
|
||||||
marker.line.name = Line
|
marker.line.name = Line
|
||||||
|
marker.quad.name = Quad
|
||||||
marker.background = Background
|
marker.background = Background
|
||||||
marker.outline = Outline
|
marker.outline = Outline
|
||||||
objective.research = [accent]Research:\n[]{0}[lightgray]{1}
|
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.attacked = Sector [accent]{0}[white] under attack!
|
||||||
sector.lost = Sector [accent]{0}[white] lost!
|
sector.lost = Sector [accent]{0}[white] lost!
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = Sector [accent]{0}[white]Captured!
|
||||||
|
sector.capture.current = Sector Captured!
|
||||||
sector.changeicon = Change Icon
|
sector.changeicon = Change Icon
|
||||||
sector.noswitch.title = Unable to Switch Sectors
|
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}[]
|
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.message.name = Mensagem
|
||||||
block.reinforced-message.name = Reinforced Message
|
block.reinforced-message.name = Reinforced Message
|
||||||
block.world-message.name = World Message
|
block.world-message.name = World Message
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = Illuminator
|
block.illuminator.name = Illuminator
|
||||||
block.overflow-gate.name = Portão Sobrecarregado
|
block.overflow-gate.name = Portão Sobrecarregado
|
||||||
block.underflow-gate.name = Portão Desobrecarregado
|
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.setblock = Set tile data at any location.
|
||||||
lst.spawnunit = Spawn unit at a location.
|
lst.spawnunit = Spawn unit at a location.
|
||||||
lst.applystatus = Apply or clear a status effect from a uniut.
|
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.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.explosion = Create an explosion at a location.
|
||||||
lst.setrate = Set processor execution speed in instructions/tick.
|
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.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.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.
|
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.
|
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.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string.
|
||||||
lenum.shoot = Shoot at a position.
|
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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
@@ -495,6 +495,7 @@ editor.default = [lightgray]<Prestabilit>
|
|||||||
details = Detalii...
|
details = Detalii...
|
||||||
edit = Editează...
|
edit = Editează...
|
||||||
variables = Vars
|
variables = Vars
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = Nume:
|
editor.name = Nume:
|
||||||
editor.spawn = Adaugă Unitate
|
editor.spawn = Adaugă Unitate
|
||||||
editor.removeunit = Înlătură Unitate
|
editor.removeunit = Înlătură Unitate
|
||||||
@@ -672,10 +673,11 @@ objective.destroycore.name = Destroy Core
|
|||||||
objective.commandmode.name = Command Mode
|
objective.commandmode.name = Command Mode
|
||||||
objective.flag.name = Flag
|
objective.flag.name = Flag
|
||||||
marker.shapetext.name = Shape Text
|
marker.shapetext.name = Shape Text
|
||||||
marker.minimap.name = Minimap
|
marker.point.name = Point
|
||||||
marker.shape.name = Shape
|
marker.shape.name = Shape
|
||||||
marker.text.name = Text
|
marker.text.name = Text
|
||||||
marker.line.name = Line
|
marker.line.name = Line
|
||||||
|
marker.quad.name = Quad
|
||||||
marker.background = Background
|
marker.background = Background
|
||||||
marker.outline = Outline
|
marker.outline = Outline
|
||||||
objective.research = [accent]Research:\n[]{0}[lightgray]{1}
|
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.attacked = Sectorul [accent]{0}[white] este atacat!
|
||||||
sector.lost = Ai pierdut sectorul [accent]{0}[white]!
|
sector.lost = Ai pierdut sectorul [accent]{0}[white]!
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = Sector [accent]{0}[white]Captured!
|
||||||
|
sector.capture.current = Sector Captured!
|
||||||
sector.changeicon = Schimbă Iconița
|
sector.changeicon = Schimbă Iconița
|
||||||
sector.noswitch.title = Unable to Switch Sectors
|
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}[]
|
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.message.name = Mesaj
|
||||||
block.reinforced-message.name = Reinforced Message
|
block.reinforced-message.name = Reinforced Message
|
||||||
block.world-message.name = World Message
|
block.world-message.name = World Message
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = Iluminator
|
block.illuminator.name = Iluminator
|
||||||
block.overflow-gate.name = Poartă de Revărsare
|
block.overflow-gate.name = Poartă de Revărsare
|
||||||
block.underflow-gate.name = Poartă de Subversare
|
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.setblock = Set tile data at any location.
|
||||||
lst.spawnunit = Spawn unit at a location.
|
lst.spawnunit = Spawn unit at a location.
|
||||||
lst.applystatus = Apply or clear a status effect from a uniut.
|
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.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.explosion = Create an explosion at a location.
|
||||||
lst.setrate = Set processor execution speed in instructions/tick.
|
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.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.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.
|
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.
|
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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
@@ -495,6 +495,7 @@ editor.default = [lightgray]<По умолчанию>
|
|||||||
details = Подробности…
|
details = Подробности…
|
||||||
edit = Редактировать…
|
edit = Редактировать…
|
||||||
variables = Переменные
|
variables = Переменные
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = Название:
|
editor.name = Название:
|
||||||
editor.spawn = Создать боевую единицу
|
editor.spawn = Создать боевую единицу
|
||||||
editor.removeunit = Удалить боевую единицу
|
editor.removeunit = Удалить боевую единицу
|
||||||
@@ -672,10 +673,11 @@ objective.destroycore.name = Уничтожить ядро
|
|||||||
objective.commandmode.name = Командовать единицей
|
objective.commandmode.name = Командовать единицей
|
||||||
objective.flag.name = Флаг
|
objective.flag.name = Флаг
|
||||||
marker.shapetext.name = Фигура с текстом
|
marker.shapetext.name = Фигура с текстом
|
||||||
marker.minimap.name = Миникарта
|
marker.point.name = Point
|
||||||
marker.shape.name = Фигура
|
marker.shape.name = Фигура
|
||||||
marker.text.name = Текст
|
marker.text.name = Текст
|
||||||
marker.line.name = Line
|
marker.line.name = Line
|
||||||
|
marker.quad.name = Quad
|
||||||
marker.background = Фон
|
marker.background = Фон
|
||||||
marker.outline = Контур
|
marker.outline = Контур
|
||||||
objective.research = [accent]Исследуйте:\n[]{0}[lightgray]{1}
|
objective.research = [accent]Исследуйте:\n[]{0}[lightgray]{1}
|
||||||
@@ -761,6 +763,7 @@ sector.missingresources = [scarlet]Недостаточно ресурсов д
|
|||||||
sector.attacked = Сектор [accent]{0}[white] атакован!
|
sector.attacked = Сектор [accent]{0}[white] атакован!
|
||||||
sector.lost = Сектор [accent]{0}[white] потерян!
|
sector.lost = Сектор [accent]{0}[white] потерян!
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = Sector [accent]{0}[white]Captured!
|
||||||
|
sector.capture.current = Sector Captured!
|
||||||
sector.changeicon = Изменить иконку
|
sector.changeicon = Изменить иконку
|
||||||
sector.noswitch.title = Перемещение между секторами
|
sector.noswitch.title = Перемещение между секторами
|
||||||
sector.noswitch = Вы не можете переключаться между секторами, пока существующий сектор находится под атакой.\n\nСектор: [accent]{0}[] на [accent]{1}[]
|
sector.noswitch = Вы не можете переключаться между секторами, пока существующий сектор находится под атакой.\n\nСектор: [accent]{0}[] на [accent]{1}[]
|
||||||
@@ -1544,6 +1547,7 @@ block.inverted-sorter.name = Инвертированный сортировщи
|
|||||||
block.message.name = Сообщение
|
block.message.name = Сообщение
|
||||||
block.reinforced-message.name = Усиленное сообщение
|
block.reinforced-message.name = Усиленное сообщение
|
||||||
block.world-message.name = Мировое сообщение
|
block.world-message.name = Мировое сообщение
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = Осветитель
|
block.illuminator.name = Осветитель
|
||||||
block.overflow-gate.name = Избыточный затвор
|
block.overflow-gate.name = Избыточный затвор
|
||||||
block.underflow-gate.name = Избыточный шлюз
|
block.underflow-gate.name = Избыточный шлюз
|
||||||
@@ -1903,13 +1907,13 @@ onset.turrets = Боевые единицы эффективны, но [accent]
|
|||||||
onset.turretammo = Снабдите турель [accent]бериллиевыми боеприпасами.[]
|
onset.turretammo = Снабдите турель [accent]бериллиевыми боеприпасами.[]
|
||||||
onset.walls = [accent]Стены[] могут предотвратить повреждение близлежащих построек.\nПоставьте \uf6ee [accent]бериллиевые стены[] вокруг турели.
|
onset.walls = [accent]Стены[] могут предотвратить повреждение близлежащих построек.\nПоставьте \uf6ee [accent]бериллиевые стены[] вокруг турели.
|
||||||
onset.enemies = Враг на подходе, приготовьтесь защищаться.
|
onset.enemies = Враг на подходе, приготовьтесь защищаться.
|
||||||
onset.defenses = [accent]Set up defenses:[lightgray] {0}
|
onset.defenses = [accent]Приготовьте оборону:[lightgray] {0}
|
||||||
onset.attack = Враг уязвим. Начните контратаку.
|
onset.attack = Враг уязвим. Начните контратаку.
|
||||||
onset.cores = Новые ядра могут быть поставлены на [accent]зоны ядра[].\nНовые ядра функционируют как передовые базы и имеют общий инвентарь между другими ядрами.\nПоставьте \uf725 ядро.
|
onset.cores = Новые ядра могут быть поставлены на [accent]зоны ядра[].\nНовые ядра функционируют как передовые базы и имеют общий инвентарь между другими ядрами.\nПоставьте \uf725 ядро.
|
||||||
onset.detect = Враг обнаружит вас через 2 минуты.\nПриготовьте оборону, добычу и производство.
|
onset.detect = Враг обнаружит вас через 2 минуты.\nПриготовьте оборону, добычу и производство.
|
||||||
onset.commandmode = Удерживайте [accent]shift[], чтобы войти в [accent]режим командования[].\n[accent]Щелкните левой кнопкой мыши и выделите область[] для выбора боевых единиц.\n[accent]Щелкните правой кнопкой мыши[], чтобы приказать выбранным единицам двигаться или атаковать.
|
onset.commandmode = Удерживайте [accent]shift[], чтобы войти в [accent]режим командования[].\n[accent]Щелкните левой кнопкой мыши и выделите область[] для выбора боевых единиц.\n[accent]Щелкните правой кнопкой мыши[], чтобы приказать выбранным единицам двигаться или атаковать.
|
||||||
onset.commandmode.mobile = Нажмите [accent]Командовать[], чтобы войти в [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 = Некоторые блоки можно подобрать боевой единицей ядра.\nВозьмите этот [accent]контейнер[] и поставьте его на [accent]грузовой загрузчик[].\n(Клавиши по умолчанию - [ и ] для поднятия и разгрузки)
|
||||||
split.pickup.mobile = Некоторые блоки можно подобрать боевой единицей ядра.\nВозьмите этот [accent]контейнер[] и поставьте его на [accent]грузовой загрузчик[].\n(Чтобы поднять или разгрузить что-либо, удерживайте палец.)
|
split.pickup.mobile = Некоторые блоки можно подобрать боевой единицей ядра.\nВозьмите этот [accent]контейнер[] и поставьте его на [accent]грузовой загрузчик[].\n(Чтобы поднять или разгрузить что-либо, удерживайте палец.)
|
||||||
@@ -2281,6 +2285,8 @@ lst.getblock = Получает данные о плитке в любом ме
|
|||||||
lst.setblock = Устанавливает плитку в любом месте.
|
lst.setblock = Устанавливает плитку в любом месте.
|
||||||
lst.spawnunit = Создает боевую единицу на локации.
|
lst.spawnunit = Создает боевую единицу на локации.
|
||||||
lst.applystatus = Применяет или снимает эффект статуса с боевой единицы.
|
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.spawnwave = Имитация волны, создаваемой в произвольном месте.\nСчетчик волн не увеличивается.
|
||||||
lst.explosion = Создает взрыв на локации.
|
lst.explosion = Создает взрыв на локации.
|
||||||
lst.setrate = Устанавливает скорость выполнения процессора в инструкциях/тиках.
|
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.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.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.
|
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]Строительство с помощью процессоров здесь запрещено.
|
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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
@@ -495,6 +495,7 @@ editor.default = [lightgray]<Default>
|
|||||||
details = Detalji...
|
details = Detalji...
|
||||||
edit = Izmeni...
|
edit = Izmeni...
|
||||||
variables = Varijabla
|
variables = Varijabla
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = Ime:
|
editor.name = Ime:
|
||||||
editor.spawn = Prizovi Jedinicu
|
editor.spawn = Prizovi Jedinicu
|
||||||
editor.removeunit = Ukloni Jedinicu
|
editor.removeunit = Ukloni Jedinicu
|
||||||
@@ -672,10 +673,11 @@ objective.destroycore.name = Uništi Jezgro
|
|||||||
objective.commandmode.name = Upravljački Mod
|
objective.commandmode.name = Upravljački Mod
|
||||||
objective.flag.name = Zastava
|
objective.flag.name = Zastava
|
||||||
marker.shapetext.name = Tekst i Oblik
|
marker.shapetext.name = Tekst i Oblik
|
||||||
marker.minimap.name = Minimapa
|
marker.point.name = Point
|
||||||
marker.shape.name = Oblik
|
marker.shape.name = Oblik
|
||||||
marker.text.name = Tekst
|
marker.text.name = Tekst
|
||||||
marker.line.name = Line
|
marker.line.name = Line
|
||||||
|
marker.quad.name = Quad
|
||||||
marker.background = Pozadina
|
marker.background = Pozadina
|
||||||
marker.outline = Outline
|
marker.outline = Outline
|
||||||
objective.research = [accent]Izuči:\n[]{0}[lightgray]{1}
|
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.attacked = Sektor [accent]{0}[white] je napadnut!
|
||||||
sector.lost = Sektor [accent]{0}[white] je izgubljen!
|
sector.lost = Sektor [accent]{0}[white] je izgubljen!
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = Sector [accent]{0}[white]Captured!
|
||||||
|
sector.capture.current = Sector Captured!
|
||||||
sector.changeicon = Promeni Ikonicu
|
sector.changeicon = Promeni Ikonicu
|
||||||
sector.noswitch.title = Nije Moguće Promeniti Sektor
|
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}[]
|
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.message.name = Poruka
|
||||||
block.reinforced-message.name = Armirana Poruka
|
block.reinforced-message.name = Armirana Poruka
|
||||||
block.world-message.name = Svetovna Poruka
|
block.world-message.name = Svetovna Poruka
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = Svetlo
|
block.illuminator.name = Svetlo
|
||||||
block.overflow-gate.name = Prelivna Kapija
|
block.overflow-gate.name = Prelivna Kapija
|
||||||
block.underflow-gate.name = Podlivna 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.setblock = Set tile data at any location.
|
||||||
lst.spawnunit = Prizovi jedinicu na mestu.
|
lst.spawnunit = Prizovi jedinicu na mestu.
|
||||||
lst.applystatus = Dodaj ili ukloni statusni efekat na jedinicu/e.
|
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.spawnwave = Simulate a wave being spawned at a arbitrary location.\nWill not increment the wave counter.
|
||||||
lst.explosion = Izazovi eksploziju na mestu.
|
lst.explosion = Izazovi eksploziju na mestu.
|
||||||
lst.setrate = Set processor execution speed in instructions/tick.
|
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.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.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.
|
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.
|
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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
@@ -490,6 +490,7 @@ editor.default = [lightgray]<Default>
|
|||||||
details = Details...
|
details = Details...
|
||||||
edit = Redigera...
|
edit = Redigera...
|
||||||
variables = Vars
|
variables = Vars
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = Namn:
|
editor.name = Namn:
|
||||||
editor.spawn = Spawn Unit
|
editor.spawn = Spawn Unit
|
||||||
editor.removeunit = Remove Unit
|
editor.removeunit = Remove Unit
|
||||||
@@ -665,10 +666,11 @@ objective.destroycore.name = Destroy Core
|
|||||||
objective.commandmode.name = Command Mode
|
objective.commandmode.name = Command Mode
|
||||||
objective.flag.name = Flag
|
objective.flag.name = Flag
|
||||||
marker.shapetext.name = Shape Text
|
marker.shapetext.name = Shape Text
|
||||||
marker.minimap.name = Minimap
|
marker.point.name = Point
|
||||||
marker.shape.name = Shape
|
marker.shape.name = Shape
|
||||||
marker.text.name = Text
|
marker.text.name = Text
|
||||||
marker.line.name = Line
|
marker.line.name = Line
|
||||||
|
marker.quad.name = Quad
|
||||||
marker.background = Background
|
marker.background = Background
|
||||||
marker.outline = Outline
|
marker.outline = Outline
|
||||||
objective.research = [accent]Research:\n[]{0}[lightgray]{1}
|
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.attacked = Sector [accent]{0}[white] under attack!
|
||||||
sector.lost = Sector [accent]{0}[white] lost!
|
sector.lost = Sector [accent]{0}[white] lost!
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = Sector [accent]{0}[white]Captured!
|
||||||
|
sector.capture.current = Sector Captured!
|
||||||
sector.changeicon = Change Icon
|
sector.changeicon = Change Icon
|
||||||
sector.noswitch.title = Unable to Switch Sectors
|
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}[]
|
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.message.name = Meddelande
|
||||||
block.reinforced-message.name = Reinforced Message
|
block.reinforced-message.name = Reinforced Message
|
||||||
block.world-message.name = World Message
|
block.world-message.name = World Message
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = Illuminator
|
block.illuminator.name = Illuminator
|
||||||
block.overflow-gate.name = Överflödesgrind
|
block.overflow-gate.name = Överflödesgrind
|
||||||
block.underflow-gate.name = Underflow 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.setblock = Set tile data at any location.
|
||||||
lst.spawnunit = Spawn unit at a location.
|
lst.spawnunit = Spawn unit at a location.
|
||||||
lst.applystatus = Apply or clear a status effect from a uniut.
|
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.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.explosion = Create an explosion at a location.
|
||||||
lst.setrate = Set processor execution speed in instructions/tick.
|
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.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.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.
|
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.
|
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.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string.
|
||||||
lenum.shoot = Shoot at a position.
|
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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
@@ -495,6 +495,7 @@ editor.default = [lightgray]<ค่าเริ่มต้น>
|
|||||||
details = รายละเอียด...
|
details = รายละเอียด...
|
||||||
edit = แก้ไข...
|
edit = แก้ไข...
|
||||||
variables = ตัวแปร
|
variables = ตัวแปร
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = ชื่อ:
|
editor.name = ชื่อ:
|
||||||
editor.spawn = สร้างยูนิต
|
editor.spawn = สร้างยูนิต
|
||||||
editor.removeunit = ลบยูนิต
|
editor.removeunit = ลบยูนิต
|
||||||
@@ -672,10 +673,11 @@ objective.destroycore.name = ทำลายแกนกลาง
|
|||||||
objective.commandmode.name = โหมดสั่งการ
|
objective.commandmode.name = โหมดสั่งการ
|
||||||
objective.flag.name = ธง
|
objective.flag.name = ธง
|
||||||
marker.shapetext.name = ข้อความในรูปทรง
|
marker.shapetext.name = ข้อความในรูปทรง
|
||||||
marker.minimap.name = มินิแมพ
|
marker.point.name = Point
|
||||||
marker.shape.name = รูปทรง
|
marker.shape.name = รูปทรง
|
||||||
marker.text.name = ข้อความ
|
marker.text.name = ข้อความ
|
||||||
marker.line.name = Line
|
marker.line.name = Line
|
||||||
|
marker.quad.name = Quad
|
||||||
marker.background = พื้นหลัง
|
marker.background = พื้นหลัง
|
||||||
marker.outline = โครงร่าง
|
marker.outline = โครงร่าง
|
||||||
objective.research = [accent]วิจัย:\n[]{0}[lightgray]{1}
|
objective.research = [accent]วิจัย:\n[]{0}[lightgray]{1}
|
||||||
@@ -761,6 +763,7 @@ sector.missingresources = [scarlet]ขาดทรัพยากรในกา
|
|||||||
sector.attacked = เซ็กเตอร์ [accent]{0}[white] ถูกโจมตี!
|
sector.attacked = เซ็กเตอร์ [accent]{0}[white] ถูกโจมตี!
|
||||||
sector.lost = เราเสียเซ็กเตอร์ [accent]{0}[white]!
|
sector.lost = เราเสียเซ็กเตอร์ [accent]{0}[white]!
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = Sector [accent]{0}[white]Captured!
|
||||||
|
sector.capture.current = Sector Captured!
|
||||||
sector.changeicon = เปลี่ยนไอคอน
|
sector.changeicon = เปลี่ยนไอคอน
|
||||||
sector.noswitch.title = ไม่สามารถเปลี่ยนเซ็กเตอร์ได้
|
sector.noswitch.title = ไม่สามารถเปลี่ยนเซ็กเตอร์ได้
|
||||||
sector.noswitch = คุณไม่สามารถเปลี่ยนเซ็กเตอร์ได้ระหว่างที่อีกเซ็กเตอร์กำลังถูกโจมตีอยู่\n\nเซ็กเตอร์: [accent]{0}[] บนดาว [accent]{1}[]
|
sector.noswitch = คุณไม่สามารถเปลี่ยนเซ็กเตอร์ได้ระหว่างที่อีกเซ็กเตอร์กำลังถูกโจมตีอยู่\n\nเซ็กเตอร์: [accent]{0}[] บนดาว [accent]{1}[]
|
||||||
@@ -1551,6 +1554,7 @@ block.inverted-sorter.name = เครื่องคัดแยกกลับ
|
|||||||
block.message.name = กล่องข้อความ
|
block.message.name = กล่องข้อความ
|
||||||
block.reinforced-message.name = กล่องข้อความเสริมกำลัง
|
block.reinforced-message.name = กล่องข้อความเสริมกำลัง
|
||||||
block.world-message.name = กล่องข้อความโลก
|
block.world-message.name = กล่องข้อความโลก
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = ตัวเปล่งแสง
|
block.illuminator.name = ตัวเปล่งแสง
|
||||||
block.overflow-gate.name = ประตูระบาย
|
block.overflow-gate.name = ประตูระบาย
|
||||||
block.underflow-gate.name = ประตูระบายข้าง
|
block.underflow-gate.name = ประตูระบายข้าง
|
||||||
@@ -2299,6 +2303,8 @@ lst.getblock = รับข้อมูลของช่องที่ตำ
|
|||||||
lst.setblock = ปรับแต่งข้อมูลของช่องที่ตำแหน่งใดๆ
|
lst.setblock = ปรับแต่งข้อมูลของช่องที่ตำแหน่งใดๆ
|
||||||
lst.spawnunit = เสกยูนิตมาที่ตำแหน่งที่กำหนดไว้
|
lst.spawnunit = เสกยูนิตมาที่ตำแหน่งที่กำหนดไว้
|
||||||
lst.applystatus = ใส่หรือล้างเอฟเฟกต์สถานะจากยูนิต
|
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.spawnwave = จำลองคลื่นที่ตำแหน่งใดๆ
|
||||||
lst.explosion = เสกระเบิดที่ตำแหน่ง
|
lst.explosion = เสกระเบิดที่ตำแหน่ง
|
||||||
lst.setrate = ตั้งค่าความเร็วการสั่งเป็นคำสั่งใน คำสั่ง/ติก
|
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.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.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.
|
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]ไม่อนุญาตให้ใช้ลอจิกควบคุมให้ยูนิตสร้างที่นี่
|
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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
@@ -490,6 +490,7 @@ editor.default = [lightgray]<Default>
|
|||||||
details = Details...
|
details = Details...
|
||||||
edit = Edit...
|
edit = Edit...
|
||||||
variables = Vars
|
variables = Vars
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = isim:
|
editor.name = isim:
|
||||||
editor.spawn = Spawn Unit
|
editor.spawn = Spawn Unit
|
||||||
editor.removeunit = Remove Unit
|
editor.removeunit = Remove Unit
|
||||||
@@ -665,10 +666,11 @@ objective.destroycore.name = Destroy Core
|
|||||||
objective.commandmode.name = Command Mode
|
objective.commandmode.name = Command Mode
|
||||||
objective.flag.name = Flag
|
objective.flag.name = Flag
|
||||||
marker.shapetext.name = Shape Text
|
marker.shapetext.name = Shape Text
|
||||||
marker.minimap.name = Minimap
|
marker.point.name = Point
|
||||||
marker.shape.name = Shape
|
marker.shape.name = Shape
|
||||||
marker.text.name = Text
|
marker.text.name = Text
|
||||||
marker.line.name = Line
|
marker.line.name = Line
|
||||||
|
marker.quad.name = Quad
|
||||||
marker.background = Background
|
marker.background = Background
|
||||||
marker.outline = Outline
|
marker.outline = Outline
|
||||||
objective.research = [accent]Research:\n[]{0}[lightgray]{1}
|
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.attacked = Sector [accent]{0}[white] under attack!
|
||||||
sector.lost = Sector [accent]{0}[white] lost!
|
sector.lost = Sector [accent]{0}[white] lost!
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = Sector [accent]{0}[white]Captured!
|
||||||
|
sector.capture.current = Sector Captured!
|
||||||
sector.changeicon = Change Icon
|
sector.changeicon = Change Icon
|
||||||
sector.noswitch.title = Unable to Switch Sectors
|
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}[]
|
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.message.name = Message
|
||||||
block.reinforced-message.name = Reinforced Message
|
block.reinforced-message.name = Reinforced Message
|
||||||
block.world-message.name = World Message
|
block.world-message.name = World Message
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = Illuminator
|
block.illuminator.name = Illuminator
|
||||||
block.overflow-gate.name = Kapali dagatici
|
block.overflow-gate.name = Kapali dagatici
|
||||||
block.underflow-gate.name = Underflow 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.setblock = Set tile data at any location.
|
||||||
lst.spawnunit = Spawn unit at a location.
|
lst.spawnunit = Spawn unit at a location.
|
||||||
lst.applystatus = Apply or clear a status effect from a uniut.
|
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.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.explosion = Create an explosion at a location.
|
||||||
lst.setrate = Set processor execution speed in instructions/tick.
|
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.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.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.
|
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.
|
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.type = Type of building/unit.\ne.g. for any router, this will return [accent]@router[].\nNot a string.
|
||||||
lenum.shoot = Shoot at a position.
|
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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
@@ -495,6 +495,7 @@ editor.default = [lightgray]<Varsayılan>
|
|||||||
details = Detaylar...
|
details = Detaylar...
|
||||||
edit = Düzenle...
|
edit = Düzenle...
|
||||||
variables = Değişkenler
|
variables = Değişkenler
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = İsim:
|
editor.name = İsim:
|
||||||
editor.spawn = Birim Oluştur
|
editor.spawn = Birim Oluştur
|
||||||
editor.removeunit = Birim Kaldır
|
editor.removeunit = Birim Kaldır
|
||||||
@@ -672,10 +673,11 @@ objective.destroycore.name = Merkezi Yok Et
|
|||||||
objective.commandmode.name = Komuta Et
|
objective.commandmode.name = Komuta Et
|
||||||
objective.flag.name = Bayrak
|
objective.flag.name = Bayrak
|
||||||
marker.shapetext.name = Şekilli Yazı
|
marker.shapetext.name = Şekilli Yazı
|
||||||
marker.minimap.name = Harita
|
marker.point.name = Point
|
||||||
marker.shape.name = Şekil
|
marker.shape.name = Şekil
|
||||||
marker.text.name = Yazı
|
marker.text.name = Yazı
|
||||||
marker.line.name = Line
|
marker.line.name = Line
|
||||||
|
marker.quad.name = Quad
|
||||||
marker.background = Arkaplan
|
marker.background = Arkaplan
|
||||||
marker.outline = Anahat
|
marker.outline = Anahat
|
||||||
objective.research = [accent]Araştır:\n[]{0}[lightgray]{1}
|
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.attacked = Sektör [accent]{0}[white] saldırı altında!
|
||||||
sector.lost = Sektör [accent]{0}[white] kaybedildi!
|
sector.lost = Sektör [accent]{0}[white] kaybedildi!
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = Sector [accent]{0}[white]Captured!
|
||||||
|
sector.capture.current = Sector Captured!
|
||||||
sector.changeicon = İkon Değiştir
|
sector.changeicon = İkon Değiştir
|
||||||
sector.noswitch.title = Sektör Değiştirilemiyor
|
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}[]
|
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.message.name = Mesaj Bloğu
|
||||||
block.reinforced-message.name = Güçlendirilmiş Mesaj Bloğu
|
block.reinforced-message.name = Güçlendirilmiş Mesaj Bloğu
|
||||||
block.world-message.name = Evrensel Mesaj Bloğu
|
block.world-message.name = Evrensel Mesaj Bloğu
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = Aydınlatıcı
|
block.illuminator.name = Aydınlatıcı
|
||||||
block.overflow-gate.name = Taşma Geçidi
|
block.overflow-gate.name = Taşma Geçidi
|
||||||
block.underflow-gate.name = Yana Taşma Geçidi
|
block.underflow-gate.name = Yana Taşma Geçidi
|
||||||
@@ -2279,6 +2283,8 @@ lst.getblock = Herhangi bir yerdeki blok bilgisini al.
|
|||||||
lst.setblock = Herhangi bir yerdeki blok bilgisini değiştir.
|
lst.setblock = Herhangi bir yerdeki blok bilgisini değiştir.
|
||||||
lst.spawnunit = Herhangi bir yerde birim var et.
|
lst.spawnunit = Herhangi bir yerde birim var et.
|
||||||
lst.applystatus = Bir Birime Durum Etkisi ekle.
|
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.spawnwave = Bellir bir noktada dalga başlat.\nDalga Zamanlayıcı Oluşturmaz!
|
||||||
lst.explosion = Bir Noktada Patlama oluştur.
|
lst.explosion = Bir Noktada Patlama oluştur.
|
||||||
lst.setrate = İşlemci Hızını Ayarla (işlem/tick)
|
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.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.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.
|
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!
|
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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
@@ -497,6 +497,7 @@ editor.default = [lightgray]<За замовчуванням>
|
|||||||
details = Подробиці…
|
details = Подробиці…
|
||||||
edit = Змінити…
|
edit = Змінити…
|
||||||
variables = Змінні
|
variables = Змінні
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = Ім’я:
|
editor.name = Ім’я:
|
||||||
editor.spawn = Створити бойову одиницю
|
editor.spawn = Створити бойову одиницю
|
||||||
editor.removeunit = Видалити бойову одиницю
|
editor.removeunit = Видалити бойову одиницю
|
||||||
@@ -677,10 +678,11 @@ objective.commandmode.name = Режим командування
|
|||||||
objective.flag.name = Прапорець
|
objective.flag.name = Прапорець
|
||||||
|
|
||||||
marker.shapetext.name = Форма тексту
|
marker.shapetext.name = Форма тексту
|
||||||
marker.minimap.name = Мінімапа
|
marker.point.name = Point
|
||||||
marker.shape.name = Форма
|
marker.shape.name = Форма
|
||||||
marker.text.name = Текст
|
marker.text.name = Текст
|
||||||
marker.line.name = Line
|
marker.line.name = Line
|
||||||
|
marker.quad.name = Quad
|
||||||
|
|
||||||
marker.background = Фон
|
marker.background = Фон
|
||||||
marker.outline = Контур
|
marker.outline = Контур
|
||||||
@@ -769,6 +771,7 @@ sector.missingresources = [scarlet]Недостатньо ресурсів у я
|
|||||||
sector.attacked = Сектор [accent]{0}[white] під атакою!
|
sector.attacked = Сектор [accent]{0}[white] під атакою!
|
||||||
sector.lost = Сектор [accent]{0}[white] втрачено!
|
sector.lost = Сектор [accent]{0}[white] втрачено!
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = Sector [accent]{0}[white]Captured!
|
||||||
|
sector.capture.current = Sector Captured!
|
||||||
sector.changeicon = Змінити значок
|
sector.changeicon = Змінити значок
|
||||||
sector.noswitch.title = Неможливо переключити сектори
|
sector.noswitch.title = Неможливо переключити сектори
|
||||||
sector.noswitch = Ви не можете змінювати сектори, поки поточний сектор піддається атаці.\n\nСектор: [accent]{0}[] на [accent]{1}[]
|
sector.noswitch = Ви не можете змінювати сектори, поки поточний сектор піддається атаці.\n\nСектор: [accent]{0}[] на [accent]{1}[]
|
||||||
@@ -1555,6 +1558,7 @@ block.inverted-sorter.name = Зворотний сортувальник
|
|||||||
block.message.name = Повідомлення
|
block.message.name = Повідомлення
|
||||||
block.reinforced-message.name = Посилене повідомлення
|
block.reinforced-message.name = Посилене повідомлення
|
||||||
block.world-message.name = Світове повідомлення
|
block.world-message.name = Світове повідомлення
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = Освітлювач
|
block.illuminator.name = Освітлювач
|
||||||
block.overflow-gate.name = Надмірний затвор
|
block.overflow-gate.name = Надмірний затвор
|
||||||
block.underflow-gate.name = Недостатній затвор
|
block.underflow-gate.name = Недостатній затвор
|
||||||
@@ -2306,6 +2310,8 @@ lst.getblock = Отримує дані плитки в будь-якому мі
|
|||||||
lst.setblock = Установлює дані плитки в будь-якому місці.
|
lst.setblock = Установлює дані плитки в будь-якому місці.
|
||||||
lst.spawnunit = Породжує одиницю на певному місці.
|
lst.spawnunit = Породжує одиницю на певному місці.
|
||||||
lst.applystatus = Застосовує або видаляє ефект стану з одиниці.
|
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.spawnwave = Змодельовує хвилю, що виникає у довільному місці.\nНе збільшує лічильник хвиль.
|
||||||
lst.explosion = Створює вибух у певному місці.
|
lst.explosion = Створює вибух у певному місці.
|
||||||
lst.setrate = Установлює швидкість виконання процесора в інструкціях за такт.
|
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.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.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.
|
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]Будування за допомогою процесорів заборено.
|
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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
@@ -496,6 +496,7 @@ editor.default = [lightgray]<Mặc định>
|
|||||||
details = Chi tiết...
|
details = Chi tiết...
|
||||||
edit = Chỉnh sửa...
|
edit = Chỉnh sửa...
|
||||||
variables = Thông số
|
variables = Thông số
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = Tên:
|
editor.name = Tên:
|
||||||
editor.spawn = Thêm kẻ địch
|
editor.spawn = Thêm kẻ địch
|
||||||
editor.removeunit = Xóa 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.commandmode.name = Chế độ ra lệnh
|
||||||
objective.flag.name = Cờ
|
objective.flag.name = Cờ
|
||||||
marker.shapetext.name = Hình dạng văn bản
|
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.shape.name = Hình dạng
|
||||||
marker.text.name = Văn bản
|
marker.text.name = Văn bản
|
||||||
marker.line.name = Line
|
marker.line.name = Line
|
||||||
|
marker.quad.name = Quad
|
||||||
marker.background = Nền
|
marker.background = Nền
|
||||||
marker.outline = Đường viền
|
marker.outline = Đường viền
|
||||||
objective.research = [accent]Nghiên cứu:\n[]{0}[lightgray]{1}
|
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.attacked = Khu vực [accent]{0}[white] đang bị tấn công!
|
||||||
sector.lost = Khu vực [accent]{0}[white] đã mất!
|
sector.lost = Khu vực [accent]{0}[white] đã mất!
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = Sector [accent]{0}[white]Captured!
|
||||||
|
sector.capture.current = Sector Captured!
|
||||||
sector.changeicon = Thay đổi biểu tượng
|
sector.changeicon = Thay đổi biểu tượng
|
||||||
sector.noswitch.title = Không thể thay đổi sang khu vực khác
|
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}[]
|
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.message.name = Thông điệp
|
||||||
block.reinforced-message.name = Thông điệp [Gia cố]
|
block.reinforced-message.name = Thông điệp [Gia cố]
|
||||||
block.world-message.name = Thông điệp thế giới
|
block.world-message.name = Thông điệp thế giới
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = Đèn
|
block.illuminator.name = Đèn
|
||||||
block.overflow-gate.name = Cổng tràn
|
block.overflow-gate.name = Cổng tràn
|
||||||
block.underflow-gate.name = Cổng tràn ngược
|
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.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.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.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.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.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.
|
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.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.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.
|
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.
|
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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
@@ -498,6 +498,7 @@ editor.default = [lightgray]<默认>
|
|||||||
details = 详情…
|
details = 详情…
|
||||||
edit = 编辑…
|
edit = 编辑…
|
||||||
variables = 变量
|
variables = 变量
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = 名称:
|
editor.name = 名称:
|
||||||
editor.spawn = 生成单位
|
editor.spawn = 生成单位
|
||||||
editor.removeunit = 移除单位
|
editor.removeunit = 移除单位
|
||||||
@@ -678,10 +679,11 @@ objective.commandmode.name = 指挥模式
|
|||||||
objective.flag.name = 标签
|
objective.flag.name = 标签
|
||||||
|
|
||||||
marker.shapetext.name = 带形状文本
|
marker.shapetext.name = 带形状文本
|
||||||
marker.minimap.name = 小地图
|
marker.point.name = Point
|
||||||
marker.shape.name = 形状
|
marker.shape.name = 形状
|
||||||
marker.text.name = 文本
|
marker.text.name = 文本
|
||||||
marker.line.name = Line
|
marker.line.name = Line
|
||||||
|
marker.quad.name = Quad
|
||||||
|
|
||||||
marker.background = 背景
|
marker.background = 背景
|
||||||
marker.outline = 轮廓
|
marker.outline = 轮廓
|
||||||
@@ -770,6 +772,7 @@ sector.missingresources = [scarlet]建造核心所需资源不足
|
|||||||
sector.attacked = 区块[accent]{0}[white]受到攻击!
|
sector.attacked = 区块[accent]{0}[white]受到攻击!
|
||||||
sector.lost = 区块[accent]{0}[white]已丢失!
|
sector.lost = 区块[accent]{0}[white]已丢失!
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = Sector [accent]{0}[white]Captured!
|
||||||
|
sector.capture.current = Sector Captured!
|
||||||
sector.changeicon = 更改图标
|
sector.changeicon = 更改图标
|
||||||
sector.noswitch.title = 无法切换区块
|
sector.noswitch.title = 无法切换区块
|
||||||
sector.noswitch = 你无法在当前区块遭受攻击时切换区块。\n\n区块:[accent]{0}[]位于[accent]{1}[]
|
sector.noswitch = 你无法在当前区块遭受攻击时切换区块。\n\n区块:[accent]{0}[]位于[accent]{1}[]
|
||||||
@@ -1556,6 +1559,7 @@ block.inverted-sorter.name = 反向分类器
|
|||||||
block.message.name = 信息板
|
block.message.name = 信息板
|
||||||
block.reinforced-message.name = 强化信息板
|
block.reinforced-message.name = 强化信息板
|
||||||
block.world-message.name = 世界信息板
|
block.world-message.name = 世界信息板
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = 照明器
|
block.illuminator.name = 照明器
|
||||||
block.overflow-gate.name = 溢流门
|
block.overflow-gate.name = 溢流门
|
||||||
block.underflow-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]点击[]指挥所选单位移动或攻击。
|
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 = 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.pickup.mobile = 核心单位可以拾取一些方块。\n拾取这个[accent]强化容器[]并将其放到[accent]载荷装载器[]中。\n(长按以拾取或放下载荷)
|
||||||
split.acquire = 你需要获取钨来生产单位。
|
split.acquire = 你需要获取钨来生产单位。
|
||||||
split.build = 单位必须被运输到墙的另一侧。\n在墙壁两侧各放置一个[accent]载荷质量驱动器[]。\n点击其中一个,然后点击另一个以连接它们。
|
split.build = 单位必须被运输到墙的另一侧。\n在墙壁两侧各放置一个[accent]载荷质量驱动器[]。\n点击其中一个,然后点击另一个以连接它们。
|
||||||
@@ -2305,6 +2309,8 @@ lst.getblock = 获取任意位置的地块数据
|
|||||||
lst.setblock = 设置任意位置的地块数据
|
lst.setblock = 设置任意位置的地块数据
|
||||||
lst.spawnunit = 在指定位置生成单位
|
lst.spawnunit = 在指定位置生成单位
|
||||||
lst.applystatus = 添加或清除单位的一个状态效果
|
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.spawnwave = 在任意位置生成一波敌人\n并不记录在波数计数器中
|
||||||
lst.explosion = 在某个位置生成爆炸
|
lst.explosion = 在某个位置生成爆炸
|
||||||
lst.setrate = 在指令/时间刻的时间下设置处理器处理速度
|
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.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.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.
|
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]此处不允许处理器操控单位去建设
|
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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
@@ -495,6 +495,7 @@ editor.default = [lightgray](預設)
|
|||||||
details = 詳細資訊……
|
details = 詳細資訊……
|
||||||
edit = 編輯……
|
edit = 編輯……
|
||||||
variables = 變數
|
variables = 變數
|
||||||
|
logic.globals = Built-in Variables
|
||||||
editor.name = 名稱:
|
editor.name = 名稱:
|
||||||
editor.spawn = 重生單位
|
editor.spawn = 重生單位
|
||||||
editor.removeunit = 移除單位
|
editor.removeunit = 移除單位
|
||||||
@@ -675,10 +676,11 @@ objective.commandmode.name = 指揮模式
|
|||||||
objective.flag.name = 全局Flag
|
objective.flag.name = 全局Flag
|
||||||
|
|
||||||
marker.shapetext.name = 稜框+文字標示
|
marker.shapetext.name = 稜框+文字標示
|
||||||
marker.minimap.name = 小地圖標示
|
marker.point.name = Point
|
||||||
marker.shape.name = 稜框標示
|
marker.shape.name = 稜框標示
|
||||||
marker.text.name = 文字標示
|
marker.text.name = 文字標示
|
||||||
marker.line.name = Line
|
marker.line.name = Line
|
||||||
|
marker.quad.name = Quad
|
||||||
|
|
||||||
marker.background = 反黑背景
|
marker.background = 反黑背景
|
||||||
marker.outline = 描邊
|
marker.outline = 描邊
|
||||||
@@ -766,6 +768,7 @@ sector.missingresources = [scarlet]核心資源不足
|
|||||||
sector.attacked = 地區 [accent]{0}[white] 遭受攻擊!
|
sector.attacked = 地區 [accent]{0}[white] 遭受攻擊!
|
||||||
sector.lost = 地區 [accent]{0}[white] 戰敗!
|
sector.lost = 地區 [accent]{0}[white] 戰敗!
|
||||||
sector.capture = Sector [accent]{0}[white]Captured!
|
sector.capture = Sector [accent]{0}[white]Captured!
|
||||||
|
sector.capture.current = Sector Captured!
|
||||||
sector.changeicon = 更改圖標
|
sector.changeicon = 更改圖標
|
||||||
sector.noswitch.title = 無法切換地區
|
sector.noswitch.title = 無法切換地區
|
||||||
sector.noswitch = 當前地區遭受攻擊時,無法切換地區\n\n地區: [accent]{0}[] 於 [accent]{1}[]
|
sector.noswitch = 當前地區遭受攻擊時,無法切換地區\n\n地區: [accent]{0}[] 於 [accent]{1}[]
|
||||||
@@ -1552,6 +1555,7 @@ block.inverted-sorter.name = 反向分類器
|
|||||||
block.message.name = 訊息板
|
block.message.name = 訊息板
|
||||||
block.reinforced-message.name = Reinforced Message
|
block.reinforced-message.name = Reinforced Message
|
||||||
block.world-message.name = World Message
|
block.world-message.name = World Message
|
||||||
|
block.world-switch.name = World Switch
|
||||||
block.illuminator.name = 照明燈
|
block.illuminator.name = 照明燈
|
||||||
block.overflow-gate.name = 溢流器
|
block.overflow-gate.name = 溢流器
|
||||||
block.underflow-gate.name = 反向溢流器
|
block.underflow-gate.name = 反向溢流器
|
||||||
@@ -2291,6 +2295,8 @@ lst.getblock = 由位置取方塊數據
|
|||||||
lst.setblock = 由位置設置方塊數據
|
lst.setblock = 由位置設置方塊數據
|
||||||
lst.spawnunit = 在某一位置生成單位
|
lst.spawnunit = 在某一位置生成單位
|
||||||
lst.applystatus = 爲單位添加或移除狀態效果
|
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.spawnwave = 在某一位置生成一波敵人\n不計入波數
|
||||||
lst.explosion = 在某一位置製造爆炸
|
lst.explosion = 在某一位置製造爆炸
|
||||||
lst.setrate = 以指令/每時刻設置處理器速度
|
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.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.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.
|
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]單位建造邏輯已被禁止。
|
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.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.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.autoscale = Whether to scale marker corresponding to player's zoom level.
|
||||||
|
lenum.posi = Indexed position, used for line and quad markers with index zero being the first position.
|
||||||
|
lenum.uvi = Texture's position ranging from zero to one, used for quad markers.
|
||||||
|
lenum.colori = Indexed position, used for line and quad markers with index zero being the first color.
|
||||||
|
|||||||
@@ -164,3 +164,4 @@ summoner
|
|||||||
OpalSoPL
|
OpalSoPL
|
||||||
BalaM314
|
BalaM314
|
||||||
Redstonneur1256
|
Redstonneur1256
|
||||||
|
ApsZoldat
|
||||||
|
|||||||
Binary file not shown.
@@ -2,7 +2,6 @@ uniform sampler2D u_texture;
|
|||||||
|
|
||||||
uniform float u_time;
|
uniform float u_time;
|
||||||
uniform float u_progress;
|
uniform float u_progress;
|
||||||
uniform vec4 u_color;
|
|
||||||
uniform vec2 u_uv;
|
uniform vec2 u_uv;
|
||||||
uniform vec2 u_uv2;
|
uniform vec2 u_uv2;
|
||||||
uniform vec2 u_texsize;
|
uniform vec2 u_texsize;
|
||||||
@@ -14,8 +13,7 @@ void main(){
|
|||||||
vec2 coords = (v_texCoords - u_uv) / (u_uv2 - u_uv);
|
vec2 coords = (v_texCoords - u_uv) / (u_uv2 - u_uv);
|
||||||
vec2 v = vec2(1.0/u_texsize.x, 1.0/u_texsize.y);
|
vec2 v = vec2(1.0/u_texsize.x, 1.0/u_texsize.y);
|
||||||
|
|
||||||
vec4 c = texture2D(u_texture, v_texCoords);
|
vec4 c = texture2D(u_texture, v_texCoords);
|
||||||
|
|
||||||
c.a *= u_progress;
|
c.a *= u_progress;
|
||||||
c.a *= step(abs(sin(coords.y*3.0 + u_time)), 0.9);
|
c.a *= step(abs(sin(coords.y*3.0 + u_time)), 0.9);
|
||||||
|
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform
|
|||||||
return (Float.isNaN(result) || Float.isInfinite(result)) ? 1f : Mathf.clamp(result, 0.0001f, 60f / 10f);
|
return (Float.isNaN(result) || Float.isInfinite(result)) ? 1f : Mathf.clamp(result, 0.0001f, 60f / 10f);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
UI.loadColors();
|
||||||
batch = new SortedSpriteBatch();
|
batch = new SortedSpriteBatch();
|
||||||
assets = new AssetManager();
|
assets = new AssetManager();
|
||||||
assets.setLoader(Texture.class, "." + mapExtension, new MapPreviewLoader());
|
assets.setLoader(Texture.class, "." + mapExtension, new MapPreviewLoader());
|
||||||
|
|||||||
@@ -19,7 +19,23 @@ public class UnitGroup{
|
|||||||
public int collisionLayer;
|
public int collisionLayer;
|
||||||
public volatile float[] positions, originalPositions;
|
public volatile float[] positions, originalPositions;
|
||||||
public volatile boolean valid;
|
public volatile boolean valid;
|
||||||
|
public long lastSpeedUpdate = -1;
|
||||||
public float minSpeed = 999999f;
|
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){
|
public void calculateFormation(Vec2 dest, int collisionLayer){
|
||||||
this.collisionLayer = collisionLayer;
|
this.collisionLayer = collisionLayer;
|
||||||
@@ -33,19 +49,16 @@ public class UnitGroup{
|
|||||||
cy /= units.size;
|
cy /= units.size;
|
||||||
positions = new float[units.size * 2];
|
positions = new float[units.size * 2];
|
||||||
|
|
||||||
|
|
||||||
//all positions are relative to the center
|
//all positions are relative to the center
|
||||||
for(int i = 0; i < units.size; i ++){
|
for(int i = 0; i < units.size; i ++){
|
||||||
Unit unit = units.get(i);
|
Unit unit = units.get(i);
|
||||||
positions[i * 2] = unit.x - cx;
|
positions[i * 2] = unit.x - cx;
|
||||||
positions[i * 2 + 1] = unit.y - cy;
|
positions[i * 2 + 1] = unit.y - cy;
|
||||||
unit.command().groupIndex = i;
|
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
|
//run on new thread to prevent stutter
|
||||||
Vars.mainExecutor.submit(() -> {
|
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()))){
|
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();
|
var build = unit.buildOn();
|
||||||
tmpPayload.unit = unit;
|
tmpPayload.unit = unit;
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ package mindustry.ai.types;
|
|||||||
|
|
||||||
import arc.math.*;
|
import arc.math.*;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
|
import mindustry.*;
|
||||||
|
import mindustry.entities.*;
|
||||||
import mindustry.entities.units.*;
|
import mindustry.entities.units.*;
|
||||||
import mindustry.gen.*;
|
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
|
@Override
|
||||||
public boolean retarget(){
|
public boolean retarget(){
|
||||||
//more frequent retarget due to high speed. TODO won't this lag?
|
//more frequent retarget due to high speed. TODO won't this lag?
|
||||||
|
|||||||
@@ -4571,6 +4571,7 @@ public class Blocks{
|
|||||||
loopSoundVolume = 0.6f;
|
loopSoundVolume = 0.6f;
|
||||||
deathSound = Sounds.largeExplosion;
|
deathSound = Sounds.largeExplosion;
|
||||||
targetAir = false;
|
targetAir = false;
|
||||||
|
targetUnderBlocks = false;
|
||||||
|
|
||||||
fogRadius = 6f;
|
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"){{
|
shipRefabricator = new Reconstructor("ship-refabricator"){{
|
||||||
requirements(Category.units, with(Items.beryllium, 200, Items.tungsten, 100, Items.silicon, 150, Items.oxide, 40));
|
requirements(Category.units, with(Items.beryllium, 200, Items.tungsten, 100, Items.silicon, 150, Items.oxide, 40));
|
||||||
regionSuffix = "-dark";
|
regionSuffix = "-dark";
|
||||||
@@ -5540,6 +5524,23 @@ public class Blocks{
|
|||||||
researchCost = with(Items.beryllium, 500, Items.tungsten, 200, Items.silicon, 300, Items.oxide, 80);
|
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
|
//yes very silly name
|
||||||
primeRefabricator = new Reconstructor("prime-refabricator"){{
|
primeRefabricator = new Reconstructor("prime-refabricator"){{
|
||||||
requirements(Category.units, with(Items.thorium, 250, Items.oxide, 200, Items.tungsten, 200, Items.silicon, 400));
|
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;
|
isEnemy = false;
|
||||||
envDisabled = 0;
|
envDisabled = 0;
|
||||||
|
|
||||||
|
range = 60f;
|
||||||
|
faceTarget = true;
|
||||||
targetPriority = -2;
|
targetPriority = -2;
|
||||||
lowAltitude = false;
|
lowAltitude = false;
|
||||||
mineWalls = true;
|
mineWalls = true;
|
||||||
@@ -4127,8 +4129,10 @@ public class UnitTypes{
|
|||||||
isEnemy = false;
|
isEnemy = false;
|
||||||
envDisabled = 0;
|
envDisabled = 0;
|
||||||
|
|
||||||
|
range = 60f;
|
||||||
targetPriority = -2;
|
targetPriority = -2;
|
||||||
lowAltitude = false;
|
lowAltitude = false;
|
||||||
|
faceTarget = true;
|
||||||
mineWalls = true;
|
mineWalls = true;
|
||||||
mineFloor = false;
|
mineFloor = false;
|
||||||
mineHardnessScaling = false;
|
mineHardnessScaling = false;
|
||||||
@@ -4204,6 +4208,8 @@ public class UnitTypes{
|
|||||||
isEnemy = false;
|
isEnemy = false;
|
||||||
envDisabled = 0;
|
envDisabled = 0;
|
||||||
|
|
||||||
|
range = 65f;
|
||||||
|
faceTarget = true;
|
||||||
targetPriority = -2;
|
targetPriority = -2;
|
||||||
lowAltitude = false;
|
lowAltitude = false;
|
||||||
mineWalls = true;
|
mineWalls = true;
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ public class Weathers{
|
|||||||
suspendParticles;
|
suspendParticles;
|
||||||
|
|
||||||
public static void load(){
|
public static void load(){
|
||||||
snow = new ParticleWeather("snow"){{
|
snow = new ParticleWeather("snowing"){{
|
||||||
particleRegion = "particle";
|
particleRegion = "particle";
|
||||||
sizeMax = 13f;
|
sizeMax = 13f;
|
||||||
sizeMin = 2.6f;
|
sizeMin = 2.6f;
|
||||||
|
|||||||
@@ -314,6 +314,14 @@ public class ContentLoader{
|
|||||||
return getByName(ContentType.planet, name);
|
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(){
|
public Seq<UnitStance> unitStances(){
|
||||||
return getBy(ContentType.unitStance);
|
return getBy(ContentType.unitStance);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -86,11 +86,12 @@ public class GameState{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean isPaused(){
|
public boolean isPaused(){
|
||||||
return is(State.paused);
|
return state == State.paused;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return whether there is an unpaused game in progress. */
|
||||||
public boolean isPlaying(){
|
public boolean isPlaying(){
|
||||||
return (state == State.playing) || (state == State.paused && !isPaused());
|
return state == State.playing;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @return whether the current state is *not* the menu. */
|
/** @return whether the current state is *not* the menu. */
|
||||||
|
|||||||
@@ -357,7 +357,8 @@ public class Logic implements ApplicationListener{
|
|||||||
|
|
||||||
//map is over, no more world processor objective stuff
|
//map is over, no more world processor objective stuff
|
||||||
state.rules.disableWorldProcessors = true;
|
state.rules.disableWorldProcessors = true;
|
||||||
state.rules.objectives.clear();
|
|
||||||
|
Call.clearObjectives();
|
||||||
|
|
||||||
//save, just in case
|
//save, just in case
|
||||||
if(!headless && !net.client()){
|
if(!headless && !net.client()){
|
||||||
@@ -460,9 +461,6 @@ public class Logic implements ApplicationListener{
|
|||||||
|
|
||||||
if(!state.isEditor()){
|
if(!state.isEditor()){
|
||||||
state.rules.objectives.update();
|
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){
|
if(state.rules.waves && state.rules.waveTimer && !state.gameOver){
|
||||||
|
|||||||
@@ -340,15 +340,23 @@ public class NetClient implements ApplicationListener{
|
|||||||
state.rules = rules;
|
state.rules = rules;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//NOTE: avoid using this, runs into packet/buffer size limitations
|
||||||
@Remote(variants = Variant.both)
|
@Remote(variants = Variant.both)
|
||||||
public static void setObjectives(MapObjectives executor){
|
public static void setObjectives(MapObjectives executor){
|
||||||
state.rules.objectives = executor;
|
state.rules.objectives = executor;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Remote(called = Loc.server)
|
@Remote(variants = Variant.both, called = Loc.server)
|
||||||
public static void objectiveCompleted(String[] flagsRemoved, String[] flagsAdded){
|
public static void clearObjectives(){
|
||||||
state.rules.objectiveFlags.removeAll(flagsRemoved);
|
state.rules.objectives.clear();
|
||||||
state.rules.objectiveFlags.addAll(flagsAdded);
|
}
|
||||||
|
|
||||||
|
@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)
|
@Remote(variants = Variant.both)
|
||||||
|
|||||||
@@ -372,18 +372,20 @@ public class Renderer implements ApplicationListener{
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float scaleFactor = 4f / renderer.getDisplayScale();
|
||||||
|
|
||||||
//draw objective markers
|
//draw objective markers
|
||||||
state.rules.objectives.eachRunning(obj -> {
|
state.rules.objectives.eachRunning(obj -> {
|
||||||
for(var marker : obj.markers){
|
for(var marker : obj.markers){
|
||||||
if(!marker.minimap){
|
if(marker.world){
|
||||||
marker.drawWorld();
|
marker.draw(marker.autoscale ? scaleFactor : 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
for(var marker : state.markers){
|
for(var marker : state.markers){
|
||||||
if(!marker.isHidden() && !marker.minimap){
|
if(marker.world){
|
||||||
marker.drawWorld();
|
marker.draw(marker.autoscale ? scaleFactor : 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -101,8 +101,6 @@ public class UI implements ApplicationListener, Loadable{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadSync(){
|
public void loadSync(){
|
||||||
loadColors();
|
|
||||||
|
|
||||||
Fonts.outline.getData().markupEnabled = true;
|
Fonts.outline.getData().markupEnabled = true;
|
||||||
Fonts.def.getData().markupEnabled = true;
|
Fonts.def.getData().markupEnabled = true;
|
||||||
Fonts.def.setOwnsTexture(false);
|
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){
|
public void showTextInput(String titleText, String text, int textLength, String def, boolean numbers, boolean allowEmpty, Cons<String> confirmed, Runnable closed){
|
||||||
if(mobile){
|
if(mobile){
|
||||||
var description = text;
|
var description = (text.startsWith("@") ? Core.bundle.get(text.substring(1)) : text);
|
||||||
var empty = allowEmpty;
|
var empty = allowEmpty;
|
||||||
Core.input.getTextInput(new TextInput(){{
|
Core.input.getTextInput(new TextInput(){{
|
||||||
this.title = (titleText.startsWith("@") ? Core.bundle.get(titleText.substring(1)) : titleText);
|
this.title = (titleText.startsWith("@") ? Core.bundle.get(titleText.substring(1)) : titleText);
|
||||||
|
|||||||
@@ -43,6 +43,8 @@ public abstract class UnlockableContent extends MappableContent{
|
|||||||
public TextureRegion uiIcon;
|
public TextureRegion uiIcon;
|
||||||
/** Icon of the full content. Unscaled.*/
|
/** Icon of the full content. Unscaled.*/
|
||||||
public TextureRegion fullIcon;
|
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. */
|
/** The tech tree node for this content, if applicable. Null if not part of a tech tree. */
|
||||||
public @Nullable TechNode techNode;
|
public @Nullable TechNode techNode;
|
||||||
/** Tech nodes for all trees that this content is part of. */
|
/** Tech nodes for all trees that this content is part of. */
|
||||||
@@ -62,11 +64,12 @@ public abstract class UnlockableContent extends MappableContent{
|
|||||||
@Override
|
@Override
|
||||||
public void loadIcon(){
|
public void loadIcon(){
|
||||||
fullIcon =
|
fullIcon =
|
||||||
|
Core.atlas.find(fullOverride,
|
||||||
Core.atlas.find(getContentType().name() + "-" + name + "-full",
|
Core.atlas.find(getContentType().name() + "-" + name + "-full",
|
||||||
Core.atlas.find(name + "-full",
|
Core.atlas.find(name + "-full",
|
||||||
Core.atlas.find(name,
|
Core.atlas.find(name,
|
||||||
Core.atlas.find(getContentType().name() + "-" + 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);
|
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);
|
var result = Pixmaps.outline(base, outlineColor, outlineRadius);
|
||||||
Drawf.checkBleed(result);
|
Drawf.checkBleed(result);
|
||||||
packer.add(page, regName, 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);
|
var result = Pixmaps.outline(base, outlineColor, outlineRadius);
|
||||||
Drawf.checkBleed(result);
|
Drawf.checkBleed(result);
|
||||||
packer.add(PageType.main, name, result);
|
packer.add(PageType.main, name, result);
|
||||||
|
result.dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -301,6 +301,14 @@ public class MapEditor{
|
|||||||
if(previous.in(px, py)){
|
if(previous.in(px, py)){
|
||||||
tiles.set(x, y, previous.getn(px, py));
|
tiles.set(x, y, previous.getn(px, py));
|
||||||
Tile tile = tiles.getn(x, y);
|
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.x = (short)x;
|
||||||
tile.y = (short)y;
|
tile.y = (short)y;
|
||||||
|
|
||||||
@@ -309,9 +317,12 @@ public class MapEditor{
|
|||||||
tile.build.y = y * tilesize + tile.block().offset;
|
tile.build.y = y * tilesize + tile.block().offset;
|
||||||
|
|
||||||
//shift links to account for map resize
|
//shift links to account for map resize
|
||||||
Object config = tile.build.config();
|
|
||||||
if(config != null){
|
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){
|
if(out != config){
|
||||||
tile.build.configureAny(out);
|
tile.build.configureAny(out);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,6 +91,8 @@ public class MapLocalesDialog extends BaseDialog{
|
|||||||
t.button("@edit", Icon.edit, this::editDialog).size(210f, 64f);
|
t.button("@edit", Icon.edit, this::editDialog).size(210f, 64f);
|
||||||
}).growX();
|
}).growX();
|
||||||
|
|
||||||
|
resized(this::buildMain);
|
||||||
|
|
||||||
buttons.button("?", () -> ui.showInfo("@locales.info")).size(60f, 64f).uniform();
|
buttons.button("?", () -> ui.showInfo("@locales.info")).size(60f, 64f).uniform();
|
||||||
|
|
||||||
shown(this::setup);
|
shown(this::setup);
|
||||||
@@ -158,7 +160,7 @@ public class MapLocalesDialog extends BaseDialog{
|
|||||||
|
|
||||||
saved = false;
|
saved = false;
|
||||||
buildMain();
|
buildMain();
|
||||||
}).padTop(10f).size(400f, 50f).fillX().row();
|
}).padTop(10f).size(cardWidth, 50f).fillX().row();
|
||||||
}).right();
|
}).right();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -184,7 +186,7 @@ public class MapLocalesDialog extends BaseDialog{
|
|||||||
|
|
||||||
selectedLocale = name;
|
selectedLocale = name;
|
||||||
buildTables();
|
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.edit, Styles.flati, () -> localeEditDialog(name)).size(50f);
|
||||||
p.button(Icon.trash, Styles.flati, () -> ui.showConfirm("@confirm", "@locales.deletelocale", () -> {
|
p.button(Icon.trash, Styles.flati, () -> ui.showConfirm("@confirm", "@locales.deletelocale", () -> {
|
||||||
locales.remove(name);
|
locales.remove(name);
|
||||||
@@ -196,7 +198,7 @@ public class MapLocalesDialog extends BaseDialog{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}).row();
|
}).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(){
|
private void buildMain(){
|
||||||
@@ -206,7 +208,7 @@ public class MapLocalesDialog extends BaseDialog{
|
|||||||
|
|
||||||
main.image().color(Pal.gray).height(3f).growX().expandY().top().row();
|
main.image().color(Pal.gray).height(3f).growX().expandY().top().row();
|
||||||
main.pane(p -> {
|
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){
|
if(props.size == 0){
|
||||||
main.add("@empty").center().row();
|
main.add("@empty").center().row();
|
||||||
return;
|
return;
|
||||||
@@ -512,7 +514,7 @@ public class MapLocalesDialog extends BaseDialog{
|
|||||||
|
|
||||||
propView.image().color(Pal.gray).height(3f).fillX().top().row();
|
propView.image().color(Pal.gray).height(3f).fillX().top().row();
|
||||||
propView.pane(p -> {
|
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){
|
if(cols == 0){
|
||||||
propView.add("@empty").center().row();
|
propView.add("@empty").center().row();
|
||||||
return;
|
return;
|
||||||
@@ -720,7 +722,9 @@ public class MapLocalesDialog extends BaseDialog{
|
|||||||
if(!locales.containsKey(key)) return "";
|
if(!locales.containsKey(key)) return "";
|
||||||
|
|
||||||
for(var prop : locales.get(key).entries()){
|
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();
|
return data.toString();
|
||||||
@@ -738,7 +742,9 @@ public class MapLocalesDialog extends BaseDialog{
|
|||||||
}else{
|
}else{
|
||||||
int sepIndex = line.indexOf(" = ");
|
int sepIndex = line.indexOf(" = ");
|
||||||
if(sepIndex != -1 && !currentLocale.isEmpty()){
|
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")){
|
for(var line : data.split("\\r?\\n|\\r")){
|
||||||
int sepIndex = line.indexOf(" = ");
|
int sepIndex = line.indexOf(" = ");
|
||||||
if(sepIndex != -1){
|
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();
|
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.
|
// 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 obj : MapObjectives.allObjectiveTypes) setInterpreter(obj.get().getClass(), defaultInterpreter());
|
||||||
for(var mark : MapObjectives.allMarkerTypes) setInterpreter(mark.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.downOpen, Styles.emptyi, () -> indexer.get(false)).fill().padRight(4f);
|
||||||
}
|
}
|
||||||
|
|
||||||
t.button(Icon.add, Styles.emptyi, () -> getProvider(type.element.raw).get(type.element, res -> {
|
if(!field.isAnnotationPresent(Immutable.class)) {
|
||||||
arr.add(res);
|
t.button(Icon.add, Styles.emptyi, () -> getProvider(type.element.raw).get(type.element, res -> {
|
||||||
rebuild[0].run();
|
arr.add(res);
|
||||||
})).fill();
|
rebuild[0].run();
|
||||||
|
})).fill();
|
||||||
|
}
|
||||||
}).growX().height(46f).pad(0f, -10f, 0f, -10f).get();
|
}).growX().height(46f).pad(0f, -10f, 0f, -10f).get();
|
||||||
|
|
||||||
main.row().table(Tex.button, t -> rebuild[0] = () -> {
|
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(
|
getInterpreter((Class<Object>)arr.get(index).getClass()).build(
|
||||||
t, "", new TypeInfo(arr.get(index).getClass()),
|
t, "", new TypeInfo(arr.get(index).getClass()),
|
||||||
field, () -> {
|
field, field == null || !field.isAnnotationPresent(Immutable.class) ? () -> {
|
||||||
arr.remove(index);
|
arr.remove(index);
|
||||||
rebuild[0].run();
|
rebuild[0].run();
|
||||||
}, field == null || !field.isAnnotationPresent(Unordered.class) ? in -> {
|
} : null, field == null || !field.isAnnotationPresent(Unordered.class) ? in -> {
|
||||||
if(in && index > 0){
|
if(in && index > 0){
|
||||||
arr.swap(index, index - 1);
|
arr.swap(index, index - 1);
|
||||||
rebuild[0].run();
|
rebuild[0].run();
|
||||||
|
|||||||
@@ -192,8 +192,18 @@ public class Units{
|
|||||||
|
|
||||||
/** Returns the nearest enemy tile in a range. */
|
/** Returns the nearest enemy tile in a range. */
|
||||||
public static Building findEnemyTile(Team team, float x, float y, float range, Boolf<Building> pred){
|
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(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);
|
return indexer.findEnemyTile(team, x, y, range, pred);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -243,7 +253,7 @@ public class Units{
|
|||||||
if(unit != null){
|
if(unit != null){
|
||||||
return unit;
|
return unit;
|
||||||
}else{
|
}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){
|
if(unit != null){
|
||||||
return unit;
|
return unit;
|
||||||
}else{
|
}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 class ArmorPlateAbility extends Ability{
|
||||||
public TextureRegion plateRegion;
|
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 healthMultiplier = 0.2f;
|
||||||
public float z = Layer.effect;
|
|
||||||
|
|
||||||
protected float warmup;
|
protected float warmup;
|
||||||
|
|
||||||
@@ -34,24 +44,39 @@ public class ArmorPlateAbility extends Ability{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void draw(Unit unit){
|
public void draw(Unit unit){
|
||||||
|
if(!drawPlate && !drawShine) return;
|
||||||
|
|
||||||
if(warmup > 0.001f){
|
if(warmup > 0.001f){
|
||||||
if(plateRegion == null){
|
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, () -> {
|
float pz = Draw.z();
|
||||||
Shaders.armor.region = plateRegion;
|
if(z > 0) Draw.z(z);
|
||||||
Shaders.armor.progress = warmup;
|
|
||||||
Shaders.armor.time = -Time.time / 20f;
|
|
||||||
|
|
||||||
Draw.rect(Shaders.armor.region, unit.x, unit.y, unit.rotation - 90f);
|
if(drawPlate){
|
||||||
Draw.color(color);
|
Draw.alpha(warmup);
|
||||||
Draw.shader(Shaders.armor);
|
Draw.rect(plateRegion, unit.x, unit.y, unit.rotation - 90f);
|
||||||
Draw.rect(Shaders.armor.region, unit.x, unit.y, unit.rotation - 90f);
|
Draw.alpha(1f);
|
||||||
Draw.shader();
|
}
|
||||||
|
|
||||||
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;
|
public float fragVelocityMin = 0.2f, fragVelocityMax = 1f;
|
||||||
/** Random range of frag lifetime as a multiplier. */
|
/** Random range of frag lifetime as a multiplier. */
|
||||||
public float fragLifeMin = 1f, fragLifeMax = 1f;
|
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. */
|
/** Bullet that is created at a fixed interval. */
|
||||||
public @Nullable BulletType intervalBullet;
|
public @Nullable BulletType intervalBullet;
|
||||||
@@ -509,7 +511,7 @@ public class BulletType extends Content implements Cloneable{
|
|||||||
public void createFrags(Bullet b, float x, float y){
|
public void createFrags(Bullet b, float x, float y){
|
||||||
if(fragBullet != null && (fragOnAbsorb || !b.absorbed)){
|
if(fragBullet != null && (fragOnAbsorb || !b.absorbed)){
|
||||||
for(int i = 0; i < fragBullets; i++){
|
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);
|
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));
|
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;
|
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){
|
public void statusSpeed(float speed){
|
||||||
//type.speed should never be 0
|
//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. */
|
/** Uses a dynamic status effect to change damage. */
|
||||||
|
|||||||
@@ -21,18 +21,32 @@ public class SoundEffect extends Effect{
|
|||||||
public Effect effect;
|
public Effect effect;
|
||||||
|
|
||||||
public SoundEffect(){
|
public SoundEffect(){
|
||||||
|
startDelay = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SoundEffect(Sound sound, Effect effect){
|
public SoundEffect(Sound sound, Effect effect){
|
||||||
|
this();
|
||||||
this.sound = sound;
|
this.sound = sound;
|
||||||
this.effect = effect;
|
this.effect = effect;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init(){
|
||||||
|
if(startDelay < 0){
|
||||||
|
startDelay = effect.startDelay;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void create(float x, float y, float rotation, Color color, Object data){
|
public void create(float x, float y, float rotation, Color color, Object data){
|
||||||
if(!shouldCreate()) return;
|
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);
|
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){
|
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(){
|
public boolean retarget(){
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ public class EventType{
|
|||||||
socketConfigChanged,
|
socketConfigChanged,
|
||||||
update,
|
update,
|
||||||
unitCommandChange,
|
unitCommandChange,
|
||||||
|
unitCommandPosition,
|
||||||
unitCommandAttack,
|
unitCommandAttack,
|
||||||
importMod,
|
importMod,
|
||||||
draw,
|
draw,
|
||||||
|
|||||||
@@ -39,8 +39,6 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
|||||||
* @see #eachRunning(Cons)
|
* @see #eachRunning(Cons)
|
||||||
*/
|
*/
|
||||||
public Seq<MapObjective> all = new Seq<>(4);
|
public Seq<MapObjective> all = new Seq<>(4);
|
||||||
/** @see #checkChanged() */
|
|
||||||
protected transient boolean changed;
|
|
||||||
|
|
||||||
static{
|
static{
|
||||||
registerObjective(
|
registerObjective(
|
||||||
@@ -61,12 +59,15 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
|||||||
|
|
||||||
registerMarker(
|
registerMarker(
|
||||||
ShapeTextMarker::new,
|
ShapeTextMarker::new,
|
||||||
MinimapMarker::new,
|
PointMarker::new,
|
||||||
ShapeMarker::new,
|
ShapeMarker::new,
|
||||||
TextMarker::new,
|
TextMarker::new,
|
||||||
LineMarker::new,
|
LineMarker::new,
|
||||||
TextureMarker::new
|
TextureMarker::new,
|
||||||
|
QuadMarker::new
|
||||||
);
|
);
|
||||||
|
|
||||||
|
registerLegacyMarker("Minimap", PointMarker::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SafeVarargs
|
@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. */
|
/** Adds all given objectives to the executor as root objectives. */
|
||||||
public void add(MapObjective... objectives){
|
public void add(MapObjective... objectives){
|
||||||
for(var objective : objectives) flatten(objective);
|
for(var objective : objectives) flatten(objective);
|
||||||
@@ -114,21 +124,13 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
|||||||
eachRunning(obj -> {
|
eachRunning(obj -> {
|
||||||
//objectives cannot get completed on the client, but they do try to update for timers and such
|
//objectives cannot get completed on the client, but they do try to update for timers and such
|
||||||
if(obj.update() && !net.client()){
|
if(obj.update() && !net.client()){
|
||||||
obj.completed = true;
|
Call.completeObjective(all.indexOf(obj));
|
||||||
obj.done();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
changed |= obj.changed;
|
|
||||||
obj.changed = false;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @return True if map rules should be synced. Reserved for {@link Vars#logic}; do not invoke directly! */
|
public @Nullable MapObjective get(int index){
|
||||||
public boolean checkChanged(){
|
return index < 0 || index >= all.size ? null : all.get(index);
|
||||||
boolean has = changed;
|
|
||||||
changed = false;
|
|
||||||
|
|
||||||
return has;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @return Whether there are any qualified objectives at all. */
|
/** @return Whether there are any qualified objectives at all. */
|
||||||
@@ -137,7 +139,6 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void clear(){
|
public void clear(){
|
||||||
if(all.size > 0) changed = true;
|
|
||||||
all.clear();
|
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. */
|
/** Whether this objective has been done yet. This is internally set. */
|
||||||
private boolean completed;
|
private boolean completed;
|
||||||
/** Internal value. Do not modify! */
|
/** 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. */
|
/** @return True if this objective is done and should be removed from the executor. */
|
||||||
public abstract boolean update();
|
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. */
|
/** Called once after {@link #update()} returns true, before this objective is removed. */
|
||||||
public void done(){
|
public void done(){
|
||||||
changed();
|
state.rules.objectiveFlags.removeAll(flagsRemoved);
|
||||||
Call.objectiveCompleted(flagsRemoved, flagsAdded);
|
state.rules.objectiveFlags.addAll(flagsAdded);
|
||||||
}
|
completed = true;
|
||||||
|
|
||||||
/** Notifies the executor that map rules should be synced. */
|
|
||||||
protected void changed(){
|
|
||||||
changed = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @return True if all {@link #parents} are completed, rendering this objective able to execute. */
|
/** @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. */
|
/** Internal use only! Do not access. */
|
||||||
public transient int arrayIndex;
|
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;
|
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;
|
public boolean autoscale = false;
|
||||||
/** Hides the marker, used by world processors. */
|
|
||||||
protected boolean hidden = false;
|
|
||||||
/** On which z-sorting layer is marker drawn. */
|
/** On which z-sorting layer is marker drawn. */
|
||||||
protected float drawLayer = Layer.overlayUI;
|
protected float drawLayer = Layer.overlayUI;
|
||||||
|
|
||||||
/** Draws the marker. Actual marker position and scale are calculated in {@link #drawWorld()} and {@link #drawMinimap(MinimapRenderer)}. */
|
public void draw(float scaleFactor){}
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Control marker with world processor code. Ignores NaN (null) values. */
|
/** Control marker with world processor code. Ignores NaN (null) values. */
|
||||||
public void control(LMarkerControl type, double p1, double p2, double p3){
|
public void control(LMarkerControl type, double p1, double p2, double p3){
|
||||||
if(Double.isNaN(p1)) return;
|
if(Double.isNaN(p1)) return;
|
||||||
|
|
||||||
switch(type){
|
switch(type){
|
||||||
case visibility -> hidden = Mathf.equal((float)p1, 0f);
|
case world -> world = !Mathf.equal((float)p1, 0f);
|
||||||
case drawLayer -> drawLayer = (float)p1;
|
|
||||||
case minimap -> minimap = !Mathf.equal((float)p1, 0f);
|
case minimap -> minimap = !Mathf.equal((float)p1, 0f);
|
||||||
case autoscale -> autoscale = !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 */
|
/** Position of marker, in world coordinates */
|
||||||
public @TilePos Vec2 pos = new Vec2();
|
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
|
@Override
|
||||||
public void control(LMarkerControl type, double p1, double p2, double p3){
|
public void control(LMarkerControl type, double p1, double p2, double p3){
|
||||||
|
super.control(type, p1, p2, p3);
|
||||||
|
|
||||||
if(!Double.isNaN(p1)){
|
if(!Double.isNaN(p1)){
|
||||||
if(type == LMarkerControl.pos){
|
if(type == LMarkerControl.pos){
|
||||||
pos.x = (float)p1 * tilesize;
|
pos.x = (float)p1 * tilesize;
|
||||||
}else{
|
|
||||||
super.control(type, p1, p2, p3);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!Double.isNaN(p2)){
|
if(!Double.isNaN(p2)){
|
||||||
if(type == LMarkerControl.pos){
|
if(type == LMarkerControl.pos){
|
||||||
pos.y = (float)p2 * tilesize;
|
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(){}
|
public ShapeTextMarker(){}
|
||||||
|
|
||||||
@Override
|
@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
|
//in case some idiot decides to make 9999999 sides and freeze the game
|
||||||
int sides = Math.min(this.sides, 300);
|
int sides = Math.min(this.sides, 300);
|
||||||
|
|
||||||
Draw.z(drawLayer);
|
Draw.z(drawLayer);
|
||||||
Lines.stroke(3f * scaleFactor, Pal.gray);
|
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.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();
|
Draw.reset();
|
||||||
|
|
||||||
if(fetchedText == null){
|
if(fetchedText == null){
|
||||||
@@ -781,11 +751,13 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
|||||||
// font size cannot be 0
|
// font size cannot be 0
|
||||||
if(Mathf.equal(fontSize, 0f)) return;
|
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
|
@Override
|
||||||
public void control(LMarkerControl type, double p1, double p2, double p3){
|
public void control(LMarkerControl type, double p1, double p2, double p3){
|
||||||
|
super.control(type, p1, p2, p3);
|
||||||
|
|
||||||
if(!Double.isNaN(p1)){
|
if(!Double.isNaN(p1)){
|
||||||
switch(type){
|
switch(type){
|
||||||
case fontSize -> fontSize = (float)p1;
|
case fontSize -> fontSize = (float)p1;
|
||||||
@@ -799,9 +771,8 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
|||||||
}
|
}
|
||||||
case radius -> radius = (float)p1;
|
case radius -> radius = (float)p1;
|
||||||
case rotation -> rotation = (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;
|
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;
|
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. */
|
/** Displays a circle in the world. */
|
||||||
public static class MinimapMarker extends ObjectiveMarker{
|
public static class PointMarker extends PosMarker{
|
||||||
public Point2 pos = new Point2();
|
|
||||||
public float radius = 5f, stroke = 11f;
|
public float radius = 5f, stroke = 11f;
|
||||||
public Color color = Color.valueOf("f25555");
|
public Color color = Color.valueOf("f25555");
|
||||||
|
|
||||||
public MinimapMarker(int x, int y){
|
public PointMarker(int x, int y){
|
||||||
this.pos.set(x, 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.pos.set(x, y);
|
||||||
this.color = color;
|
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.pos.set(x, y);
|
||||||
this.stroke = stroke;
|
this.stroke = stroke;
|
||||||
this.radius = radius;
|
this.radius = radius;
|
||||||
this.color = color;
|
this.color = color;
|
||||||
minimap = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public MinimapMarker(){}
|
public PointMarker(){}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void baseDraw(float x, float y, float scaleFactor){
|
public void draw(float scaleFactor){
|
||||||
float rad = radius * tilesize * scaleFactor;
|
float rad = radius * tilesize * scaleFactor;
|
||||||
float fin = Interp.pow2Out.apply((Time.globalTime / 100f) % 1f);
|
float fin = Interp.pow2Out.apply((Time.globalTime / 100f) % 1f);
|
||||||
|
|
||||||
Draw.z(drawLayer);
|
Draw.z(drawLayer);
|
||||||
Lines.stroke(Scl.scl((1f - fin) * stroke + 0.1f), color);
|
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();
|
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
|
@Override
|
||||||
public void control(LMarkerControl type, double p1, double p2, double p3){
|
public void control(LMarkerControl type, double p1, double p2, double p3){
|
||||||
|
super.control(type, p1, p2, p3);
|
||||||
|
|
||||||
if(!Double.isNaN(p1)){
|
if(!Double.isNaN(p1)){
|
||||||
switch(type){
|
switch(type){
|
||||||
case pos -> pos.x = (int)p1;
|
|
||||||
case radius -> radius = (float)p1;
|
case radius -> radius = (float)p1;
|
||||||
case stroke -> stroke = (float)p1;
|
case stroke -> stroke = (float)p1;
|
||||||
case color -> color.set(Tmp.c1.fromDouble(p1));
|
case color -> color.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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -922,7 +869,7 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
|||||||
public ShapeMarker(){}
|
public ShapeMarker(){}
|
||||||
|
|
||||||
@Override
|
@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
|
//in case some idiot decides to make 9999999 sides and freeze the game
|
||||||
int sides = Math.min(this.sides, 200);
|
int sides = Math.min(this.sides, 200);
|
||||||
|
|
||||||
@@ -930,14 +877,14 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
|||||||
if(!fill){
|
if(!fill){
|
||||||
if(outline){
|
if(outline){
|
||||||
Lines.stroke((stroke + 2f) * scaleFactor, Pal.gray);
|
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.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{
|
}else{
|
||||||
Draw.color(color);
|
Draw.color(color);
|
||||||
Fill.poly(x, y, sides, radius * scaleFactor, rotation);
|
Fill.poly(pos.x, pos.y, sides, radius * scaleFactor, rotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
Draw.reset();
|
Draw.reset();
|
||||||
@@ -945,29 +892,27 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void control(LMarkerControl type, double p1, double p2, double p3){
|
public void control(LMarkerControl type, double p1, double p2, double p3){
|
||||||
|
super.control(type, p1, p2, p3);
|
||||||
|
|
||||||
if(!Double.isNaN(p1)){
|
if(!Double.isNaN(p1)){
|
||||||
switch(type){
|
switch(type){
|
||||||
case radius -> radius = (float)p1;
|
case radius -> radius = (float)p1;
|
||||||
case stroke -> stroke = (float)p1;
|
case stroke -> stroke = (float)p1;
|
||||||
case rotation -> rotation = (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;
|
case shape -> sides = (int)p1;
|
||||||
default -> super.control(type, p1, p2, p3);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!Double.isNaN(p2)){
|
if(!Double.isNaN(p2)){
|
||||||
switch(type){
|
switch(type){
|
||||||
case shape -> fill = !Mathf.equal((float)p2, 0f);
|
case shape -> fill = !Mathf.equal((float)p2, 0f);
|
||||||
default -> super.control(type, p1, p2, p3);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!Double.isNaN(p3)){
|
if(!Double.isNaN(p3)){
|
||||||
if(type == LMarkerControl.shape){
|
if(type == LMarkerControl.shape){
|
||||||
outline = !Mathf.equal((float)p3, 0f);
|
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(){}
|
public TextMarker(){}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void baseDraw(float x, float y, float scaleFactor){
|
public void draw(float scaleFactor){
|
||||||
// font size cannot be 0
|
// font size cannot be 0
|
||||||
if(Mathf.equal(fontSize, 0f)) return;
|
if(Mathf.equal(fontSize, 0f)) return;
|
||||||
|
|
||||||
@@ -1004,11 +949,13 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
|||||||
fetchedText = fetchText(text);
|
fetchedText = fetchText(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldLabel.drawAt(fetchedText, x, y, drawLayer, flags, fontSize * scaleFactor);
|
WorldLabel.drawAt(fetchedText, pos.x, pos.y, drawLayer, flags, fontSize * scaleFactor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void control(LMarkerControl type, double p1, double p2, double p3){
|
public void control(LMarkerControl type, double p1, double p2, double p3){
|
||||||
|
super.control(type, p1, p2, p3);
|
||||||
|
|
||||||
if(!Double.isNaN(p1)){
|
if(!Double.isNaN(p1)){
|
||||||
switch(type){
|
switch(type){
|
||||||
case fontSize -> fontSize = (float)p1;
|
case fontSize -> fontSize = (float)p1;
|
||||||
@@ -1019,7 +966,6 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
|||||||
flags &= ~WorldLabel.flagBackground;
|
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;
|
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 @TilePos Vec2 endPos = new Vec2();
|
||||||
public float stroke = 1f;
|
public float stroke = 1f;
|
||||||
public boolean outline = true;
|
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){
|
public LineMarker(float x1, float y1, float x2, float y2, float stroke){
|
||||||
this.stroke = stroke;
|
this.stroke = stroke;
|
||||||
@@ -1068,44 +1014,46 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
|||||||
|
|
||||||
public LineMarker(){}
|
public LineMarker(){}
|
||||||
|
|
||||||
public void baseLineDraw(float x1, float y1, float x2, float y2, float scaleFactor){
|
@Override
|
||||||
|
public void draw(float scaleFactor){
|
||||||
Draw.z(drawLayer);
|
Draw.z(drawLayer);
|
||||||
if(outline){
|
if(outline){
|
||||||
Lines.stroke((stroke + 2f) * scaleFactor, Pal.gray);
|
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.stroke(stroke * scaleFactor, Color.white);
|
||||||
Lines.line(x1, y1, x2, y2);
|
Lines.line(pos.x, pos.y, color1, endPos.x, endPos.y, color2);
|
||||||
}
|
|
||||||
|
|
||||||
@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));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void control(LMarkerControl type, double p1, double p2, double p3){
|
public void control(LMarkerControl type, double p1, double p2, double p3){
|
||||||
|
super.control(type, p1, p2, p3);
|
||||||
|
|
||||||
if(!Double.isNaN(p1)){
|
if(!Double.isNaN(p1)){
|
||||||
switch(type){
|
switch(type){
|
||||||
case endPos -> endPos.x = (float)p1 * tilesize;
|
case endPos -> endPos.x = (float)p1 * tilesize;
|
||||||
case stroke -> stroke = (float)p1;
|
case stroke -> stroke = (float)p1;
|
||||||
case color -> color.set(Tmp.c1.fromDouble(p1));
|
case color -> color1.set(color2.fromDouble(p1));
|
||||||
default -> super.control(type, p1, p2, p3);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!Double.isNaN(p2)){
|
if(!Double.isNaN(p2)){
|
||||||
switch(type){
|
switch(type){
|
||||||
case endPos -> endPos.y = (float)p2 * tilesize;
|
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
|
@Override
|
||||||
public void control(LMarkerControl type, double p1, double p2, double p3){
|
public void control(LMarkerControl type, double p1, double p2, double p3){
|
||||||
|
super.control(type, p1, p2, p3);
|
||||||
|
|
||||||
if(!Double.isNaN(p1)){
|
if(!Double.isNaN(p1)){
|
||||||
switch(type){
|
switch(type){
|
||||||
case rotation -> rotation = (float)p1;
|
case rotation -> rotation = (float)p1;
|
||||||
case textureSize -> width = (float)p1 * tilesize;
|
case textureSize -> width = (float)p1 * tilesize;
|
||||||
case color -> color.set(Tmp.c1.fromDouble(p1));
|
case color -> color.fromDouble(p1);
|
||||||
default -> super.control(type, p1, p2, p3);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!Double.isNaN(p2)){
|
if(!Double.isNaN(p2)){
|
||||||
switch(type){
|
switch(type){
|
||||||
case textureSize -> height = (float)p2 * tilesize;
|
case textureSize -> height = (float)p2 * tilesize;
|
||||||
default -> super.control(type, p1, p2, p3);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void baseDraw(float x, float y, float scaleFactor){
|
public void draw(float scaleFactor){
|
||||||
if(textureName.isEmpty()) return;
|
if(textureName.isEmpty()) return;
|
||||||
|
|
||||||
if(fetchedRegion == null) setTexture(textureName);
|
if(fetchedRegion == null) setTexture(textureName);
|
||||||
@@ -1164,7 +1112,7 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
|||||||
|
|
||||||
Draw.z(drawLayer);
|
Draw.z(drawLayer);
|
||||||
Draw.color(color);
|
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
|
@Override
|
||||||
@@ -1172,19 +1120,126 @@ public class MapObjectives implements Iterable<MapObjective>, Eachable<MapObject
|
|||||||
this.textureName = textureName;
|
this.textureName = textureName;
|
||||||
|
|
||||||
if(fetchedRegion == null) fetchedRegion = new TextureRegion();
|
if(fetchedRegion == null) fetchedRegion = new TextureRegion();
|
||||||
|
lookupRegion(textureName, fetchedRegion);
|
||||||
|
}
|
||||||
|
|
||||||
TextureRegion region = Core.atlas.find(textureName);
|
}
|
||||||
if(region.found()){
|
|
||||||
fetchedRegion.set(region);
|
public static class QuadMarker extends ObjectiveMarker{
|
||||||
}else{
|
public String textureName = "white";
|
||||||
if(Core.assets.isLoaded(textureName, Texture.class)){
|
public @Vertices float[] vertices = new float[24];
|
||||||
fetchedRegion.set(Core.assets.get(textureName, Texture.class));
|
private boolean mapRegion = true;
|
||||||
}else{
|
|
||||||
fetchedRegion.set(Core.atlas.find("error"));
|
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. */
|
/** 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)
|
@Retention(RUNTIME)
|
||||||
public @interface Unordered{}
|
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. */
|
/** For {@code byte}; treats it as a world label flag. */
|
||||||
@Target(FIELD)
|
@Target(FIELD)
|
||||||
@Retention(RUNTIME)
|
@Retention(RUNTIME)
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ public class Schematic implements Publishable, Comparable<Schematic>{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public float powerProduction(){
|
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(){
|
public float powerConsumption(){
|
||||||
|
|||||||
@@ -146,26 +146,37 @@ public class MinimapRenderer{
|
|||||||
|
|
||||||
rect.set((dx - sz) * tilesize, (dy - sz) * tilesize, sz * 2 * tilesize, sz * 2 * tilesize);
|
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){
|
for(Unit unit : units){
|
||||||
if(unit.inFogTo(player.team()) || !unit.type.drawMinimap) continue;
|
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 scale = Scl.scl(1f) * tilesize * 3;
|
||||||
float ry = !fullView ? (unit.y - rect.y) / rect.width * h : unit.y / (world.height() * tilesize) * h;
|
var region = unit.icon();
|
||||||
|
|
||||||
Draw.mixcol(unit.team.color, 1f);
|
Draw.mixcol(unit.team.color, 1f);
|
||||||
float scale = Scl.scl(1f) / 2f * scaling * 32f;
|
Draw.rect(region, unit.x, unit.y, scale, scale * (float)region.height / region.width, unit.rotation() - 90);
|
||||||
var region = unit.icon();
|
|
||||||
Draw.rect(region, x + rx, y + ry, scale, scale * (float)region.height / region.width, unit.rotation() - 90);
|
|
||||||
Draw.reset();
|
Draw.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(fullView && net.active()){
|
if(fullView && net.active()){
|
||||||
for(Player player : Groups.player){
|
for(Player player : Groups.player){
|
||||||
if(!player.dead()){
|
if(!player.dead()){
|
||||||
float rx = player.x / (world.width() * tilesize) * w;
|
drawLabel(player.x, player.y, player.name, player.color);
|
||||||
float ry = player.y / (world.height() * tilesize) * h;
|
|
||||||
|
|
||||||
drawLabel(x + rx, y + ry, player.name, player.color);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -186,15 +197,14 @@ public class MinimapRenderer{
|
|||||||
//crisp pixels
|
//crisp pixels
|
||||||
dynamicTex.setFilter(TextureFilter.nearest);
|
dynamicTex.setFilter(TextureFilter.nearest);
|
||||||
|
|
||||||
if(worldSpace){
|
|
||||||
region.set(0f, 0f, 1f, 1f);
|
|
||||||
}
|
|
||||||
|
|
||||||
Tmp.tr1.set(dynamicTex);
|
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.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){
|
if(state.rules.staticFog){
|
||||||
staticTex.setFilter(TextureFilter.nearest);
|
staticTex.setFilter(TextureFilter.nearest);
|
||||||
@@ -202,7 +212,7 @@ public class MinimapRenderer{
|
|||||||
Tmp.tr1.texture = staticTex;
|
Tmp.tr1.texture = staticTex;
|
||||||
//must be black to fit with borders
|
//must be black to fit with borders
|
||||||
Draw.color(0f, 0f, 0f, 1f);
|
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();
|
Draw.color();
|
||||||
@@ -211,23 +221,21 @@ public class MinimapRenderer{
|
|||||||
|
|
||||||
//TODO might be useful in the standard minimap too
|
//TODO might be useful in the standard minimap too
|
||||||
if(fullView){
|
if(fullView){
|
||||||
drawSpawns(x, y, w, h, scaling);
|
drawSpawns();
|
||||||
|
|
||||||
if(!mobile){
|
if(!mobile){
|
||||||
//draw bounds for camera - not drawn on mobile because you can't shift it by tapping anyway
|
//draw bounds for camera - not drawn on mobile because you can't shift it by tapping anyway
|
||||||
Rect r = Core.camera.bounds(Tmp.r1);
|
Rect r = Core.camera.bounds(Tmp.r1);
|
||||||
Vec2 bot = transform(Tmp.v1.set(r.x, r.y));
|
Lines.stroke(Scl.scl(3f) * scaleFactor);
|
||||||
Vec2 top = transform(Tmp.v2.set(r.x + r.width, r.y + r.height));
|
|
||||||
Lines.stroke(Scl.scl(3f));
|
|
||||||
Draw.color(Pal.accent);
|
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();
|
Draw.reset();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LongSeq indicators = control.indicators.list();
|
LongSeq indicators = control.indicators.list();
|
||||||
float fin = ((Time.globalTime / 30f) % 1f);
|
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));
|
Lines.stroke(Scl.scl((1f - fin) * 4f + 0.5f));
|
||||||
|
|
||||||
for(int i = 0; i < indicators.size; i++){
|
for(int i = 0; i < indicators.size; i++){
|
||||||
@@ -244,31 +252,32 @@ public class MinimapRenderer{
|
|||||||
offset = build.block.offset / tilesize;
|
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));
|
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();
|
Draw.reset();
|
||||||
|
|
||||||
|
//TODO autoscale markers
|
||||||
state.rules.objectives.eachRunning(obj -> {
|
state.rules.objectives.eachRunning(obj -> {
|
||||||
for(var marker : obj.markers){
|
for(var marker : obj.markers){
|
||||||
if(marker.minimap){
|
if(marker.minimap){
|
||||||
marker.drawMinimap(this);
|
marker.draw(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
for(var marker : state.markers){
|
for(var marker : state.markers){
|
||||||
if(!marker.isHidden() && marker.minimap){
|
if(marker.minimap){
|
||||||
marker.drawMinimap(this);
|
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;
|
if(!state.rules.showSpawns || !state.hasSpawns() || !state.rules.waves) return;
|
||||||
|
|
||||||
TextureRegion icon = Icon.units.getRegion();
|
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));
|
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);
|
float curve = Mathf.curve(Time.time % 240f, 120f, 240f);
|
||||||
|
|
||||||
for(Tile tile : spawner.getSpawns()){
|
for(Tile tile : spawner.getSpawns()){
|
||||||
float tx = ((tile.x + 0.5f) / world.width()) * w;
|
float tx = tile.worldx();
|
||||||
float ty = ((tile.y + 0.5f) / world.height()) * h;
|
float ty = tile.worldy();
|
||||||
|
|
||||||
Draw.rect(icon, x + tx, y + ty, icon.width, icon.height);
|
Draw.rect(icon, tx, ty, icon.width, icon.height);
|
||||||
Lines.circle(x + tx, y + ty, rad);
|
Lines.circle(tx, ty, rad);
|
||||||
if(curve > 0f) Lines.circle(x + tx, y + ty, rad * Interp.pow3Out.apply(curve));
|
if(curve > 0f) Lines.circle(tx, ty, rad * Interp.pow3Out.apply(curve));
|
||||||
}
|
}
|
||||||
|
|
||||||
Draw.reset();
|
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(){
|
public @Nullable TextureRegion getRegion(){
|
||||||
if(texture == null) return null;
|
if(texture == null) return null;
|
||||||
|
|
||||||
|
|||||||
@@ -97,8 +97,12 @@ public class MultiPacker implements Disposable{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dispose(){
|
public void dispose(){
|
||||||
for(PixmapPacker packer : packers){
|
for(int i = 0; i < PageType.all.length; i ++){
|
||||||
packer.dispose();
|
var packer = packers[i];
|
||||||
|
//the UI packer's image is later used when merging with the font, don't dispose it
|
||||||
|
if(i != PageType.ui.ordinal()){
|
||||||
|
packer.forceDispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -474,6 +474,6 @@ public class Shaders{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static Fi getShaderFi(String file){
|
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){
|
public void setPlane(Sector sector){
|
||||||
float rotation = -sector.planet.getRotation();
|
sector.planet.setPlane(sector, projector);
|
||||||
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()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void fill(Sector sector, Color color, float offset){
|
public void fill(Sector sector, Color color, float offset){
|
||||||
|
|||||||
@@ -451,7 +451,7 @@ public class DesktopInput extends InputHandler{
|
|||||||
cursorType = cursor.build.getCursor();
|
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;
|
cursorType = ui.repairCursor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1012,6 +1012,8 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
|
|||||||
|
|
||||||
if(attack != null){
|
if(attack != null){
|
||||||
Events.fire(Trigger.unitCommandAttack);
|
Events.fire(Trigger.unitCommandAttack);
|
||||||
|
}else{
|
||||||
|
Events.fire(Trigger.unitCommandPosition);
|
||||||
}
|
}
|
||||||
|
|
||||||
int maxChunkSize = 200;
|
int maxChunkSize = 200;
|
||||||
@@ -1179,7 +1181,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
|
|||||||
|
|
||||||
var last = lastSchematic;
|
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));
|
Schematic replacement = schematics.all().find(s -> s.name().equals(text));
|
||||||
if(replacement != null){
|
if(replacement != null){
|
||||||
ui.showConfirm("@confirm", "@schematic.replace", () -> {
|
ui.showConfirm("@confirm", "@schematic.replace", () -> {
|
||||||
@@ -1661,7 +1663,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
|
|||||||
}
|
}
|
||||||
|
|
||||||
boolean tryRepairDerelict(Tile selected){
|
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()));
|
player.unit().addBuild(new BuildPlan(selected.build.tileX(), selected.build.tileY(), selected.build.rotation, selected.block(), selected.build.config()));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -743,6 +743,11 @@ public class MobileInput extends InputHandler implements GestureListener{
|
|||||||
queueCommandMode = false;
|
queueCommandMode = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//cannot rebuild and place at the same time
|
||||||
|
if(block != null){
|
||||||
|
rebuildMode = false;
|
||||||
|
}
|
||||||
|
|
||||||
if(player.dead()){
|
if(player.dead()){
|
||||||
mode = none;
|
mode = none;
|
||||||
manualShooting = false;
|
manualShooting = false;
|
||||||
@@ -766,7 +771,7 @@ public class MobileInput extends InputHandler implements GestureListener{
|
|||||||
renderer.scaleCamera(Core.input.axisTap(Binding.zoom));
|
renderer.scaleCamera(Core.input.axisTap(Binding.zoom));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!Core.settings.getBool("keyboard") && !locked){
|
if(!Core.settings.getBool("keyboard") && !locked && !scene.hasKeyboard()){
|
||||||
//move camera around
|
//move camera around
|
||||||
float camSpeed = 6f;
|
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));
|
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 allowHealing = type.canHeal;
|
||||||
boolean validHealTarget = allowHealing && target instanceof Building b && b.isValid() && target.team() == unit.team && b.damaged() && target.within(unit, type.range);
|
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());
|
boolean boosted = (unit instanceof Mechc && unit.isFlying());
|
||||||
|
|
||||||
//reset target if:
|
//reset target if:
|
||||||
// - in the editor, or...
|
// - in the editor, or...
|
||||||
// - it's both an invalid standard target and an invalid heal target
|
// - it's both an invalid standard target and an invalid heal target
|
||||||
|
|||||||
@@ -27,45 +27,63 @@ public class GlobalVars{
|
|||||||
public static final Rand rand = new Rand();
|
public static final Rand rand = new Rand();
|
||||||
|
|
||||||
//non-constants that depend on state
|
//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 ObjectIntMap<String> namesToIds = new ObjectIntMap<>();
|
||||||
private Seq<Var> vars = new Seq<>(Var.class);
|
private Seq<Var> vars = new Seq<>(Var.class);
|
||||||
|
private Seq<VarEntry> varEntries = new Seq<>();
|
||||||
private IntSet privilegedIds = new IntSet();
|
private IntSet privilegedIds = new IntSet();
|
||||||
private UnlockableContent[][] logicIdToContent;
|
private UnlockableContent[][] logicIdToContent;
|
||||||
private int[][] contentIdToLogicId;
|
private int[][] contentIdToLogicId;
|
||||||
|
|
||||||
public void init(){
|
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
|
//add default constants
|
||||||
put("false", 0);
|
putEntry("false", 0);
|
||||||
put("true", 1);
|
putEntry("true", 1);
|
||||||
put("null", null);
|
put("null", null, false, true);
|
||||||
|
|
||||||
//math
|
//math
|
||||||
put("@pi", Mathf.PI);
|
putEntry("@pi", Mathf.PI);
|
||||||
put("π", Mathf.PI); //for the "cool" kids
|
put("π", Mathf.PI, false, true); //for the "cool" kids
|
||||||
put("@e", Mathf.E);
|
putEntry("@e", Mathf.E);
|
||||||
put("@degToRad", Mathf.degRad);
|
putEntry("@degToRad", Mathf.degRad);
|
||||||
put("@radToDeg", Mathf.radDeg);
|
putEntry("@radToDeg", Mathf.radDeg);
|
||||||
|
|
||||||
|
putEntryOnly("sectionMap");
|
||||||
|
|
||||||
//time
|
//time
|
||||||
varTime = put("@time", 0);
|
varTime = putEntry("@time", 0);
|
||||||
varTick = put("@tick", 0);
|
varTick = putEntry("@tick", 0);
|
||||||
varSecond = put("@second", 0);
|
varSecond = putEntry("@second", 0);
|
||||||
varMinute = put("@minute", 0);
|
varMinute = putEntry("@minute", 0);
|
||||||
varWave = put("@waveNumber", 0);
|
varWave = putEntry("@waveNumber", 0);
|
||||||
varWaveTime = put("@waveTime", 0);
|
varWaveTime = putEntry("@waveTime", 0);
|
||||||
|
|
||||||
varServer = put("@server", 0, true);
|
varMapW = putEntry("@mapw", 0);
|
||||||
varClient = put("@client", 0, true);
|
varMapH = putEntry("@maph", 0);
|
||||||
|
|
||||||
|
putEntryOnly("sectionNetwork");
|
||||||
|
|
||||||
|
varServer = putEntry("@server", 0, true);
|
||||||
|
varClient = putEntry("@client", 0, true);
|
||||||
|
|
||||||
//privileged desynced client variables
|
//privileged desynced client variables
|
||||||
varClientLocale = put("@clientLocale", null, true);
|
varClientLocale = putEntry("@clientLocale", null, true);
|
||||||
varClientUnit = put("@clientUnit", null, true);
|
varClientUnit = putEntry("@clientUnit", null, true);
|
||||||
varClientName = put("@clientName", null, true);
|
varClientName = putEntry("@clientName", null, true);
|
||||||
varClientTeam = put("@clientTeam", 0, true);
|
varClientTeam = putEntry("@clientTeam", 0, true);
|
||||||
varClientMobile = put("@clientMobile", 0, true);
|
varClientMobile = putEntry("@clientMobile", 0, true);
|
||||||
|
|
||||||
//special enums
|
//special enums
|
||||||
put("@ctrlProcessor", ctrlProcessor);
|
put("@ctrlProcessor", ctrlProcessor);
|
||||||
@@ -107,6 +125,10 @@ public class GlobalVars{
|
|||||||
put("@" + type.name, type);
|
put("@" + type.name, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for(Weather weather : Vars.content.weathers()){
|
||||||
|
put("@" + weather.name, weather);
|
||||||
|
}
|
||||||
|
|
||||||
//store sensor constants
|
//store sensor constants
|
||||||
for(LAccess sensor : LAccess.all){
|
for(LAccess sensor : LAccess.all){
|
||||||
put("@" + sensor.name(), sensor);
|
put("@" + sensor.name(), sensor);
|
||||||
@@ -115,6 +137,8 @@ public class GlobalVars{
|
|||||||
logicIdToContent = new UnlockableContent[ContentType.all.length][];
|
logicIdToContent = new UnlockableContent[ContentType.all.length][];
|
||||||
contentIdToLogicId = new int[ContentType.all.length][];
|
contentIdToLogicId = new int[ContentType.all.length][];
|
||||||
|
|
||||||
|
putEntryOnly("sectionLookup");
|
||||||
|
|
||||||
Fi ids = Core.files.internal("logicids.dat");
|
Fi ids = Core.files.internal("logicids.dat");
|
||||||
if(ids.exists()){
|
if(ids.exists()){
|
||||||
//read logic ID mapping data (generated in ImagePacker)
|
//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];
|
contentIdToLogicId[ctype.ordinal()] = new int[Vars.content.getBy(ctype).size];
|
||||||
|
|
||||||
//store count constants
|
//store count constants
|
||||||
put("@" + ctype.name() + "Count", amount);
|
putEntry("@" + ctype.name() + "Count", amount);
|
||||||
|
|
||||||
for(int i = 0; i < amount; i++){
|
for(int i = 0; i < amount; i++){
|
||||||
String name = in.readUTF();
|
String name = in.readUTF();
|
||||||
@@ -159,6 +183,9 @@ public class GlobalVars{
|
|||||||
vars.items[varWave].numval = state.wave;
|
vars.items[varWave].numval = state.wave;
|
||||||
vars.items[varWaveTime].numval = state.wavetime / 60f;
|
vars.items[varWaveTime].numval = state.wavetime / 60f;
|
||||||
|
|
||||||
|
vars.items[varMapW].numval = world.width();
|
||||||
|
vars.items[varMapH].numval = world.height();
|
||||||
|
|
||||||
//network
|
//network
|
||||||
vars.items[varServer].numval = (net.server() || !net.active()) ? 1 : 0;
|
vars.items[varServer].numval = (net.server() || !net.active()) ? 1 : 0;
|
||||||
vars.items[varClient].numval = net.client() ? 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. */
|
/** @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){
|
public @Nullable Content lookupContent(ContentType type, int id){
|
||||||
var arr = logicIdToContent[type.ordinal()];
|
var arr = logicIdToContent[type.ordinal()];
|
||||||
@@ -209,6 +240,11 @@ public class GlobalVars{
|
|||||||
|
|
||||||
/** Adds a constant value by name. */
|
/** Adds a constant value by name. */
|
||||||
public int put(String name, Object value, boolean privileged){
|
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);
|
int existingIdx = namesToIds.get(name, -1);
|
||||||
if(existingIdx != -1){ //don't overwrite existing vars (see #6910)
|
if(existingIdx != -1){ //don't overwrite existing vars (see #6910)
|
||||||
Log.debug("Failed to add global logic variable '@', as it already exists.", name);
|
Log.debug("Failed to add global logic variable '@', as it already exists.", name);
|
||||||
@@ -228,10 +264,44 @@ public class GlobalVars{
|
|||||||
namesToIds.put(name, index);
|
namesToIds.put(name, index);
|
||||||
if(privileged) privilegedIds.add(index);
|
if(privileged) privilegedIds.add(index);
|
||||||
vars.add(var);
|
vars.add(var);
|
||||||
|
|
||||||
|
if(!hidden){
|
||||||
|
varEntries.add(new VarEntry(index, name, "", "", privileged));
|
||||||
|
}
|
||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int put(String name, Object value){
|
public int put(String name, Object value){
|
||||||
return put(name, value, false);
|
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(){
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
61
core/src/mindustry/logic/GlobalVarsDialog.java
Normal file
61
core/src/mindustry/logic/GlobalVarsDialog.java
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
package mindustry.logic;
|
||||||
|
|
||||||
|
import arc.*;
|
||||||
|
import arc.graphics.*;
|
||||||
|
import arc.scene.ui.*;
|
||||||
|
import arc.scene.ui.layout.*;
|
||||||
|
import arc.util.*;
|
||||||
|
import mindustry.*;
|
||||||
|
import mindustry.gen.*;
|
||||||
|
import mindustry.graphics.*;
|
||||||
|
import mindustry.ui.*;
|
||||||
|
import mindustry.ui.dialogs.*;
|
||||||
|
|
||||||
|
public class GlobalVarsDialog extends BaseDialog{
|
||||||
|
|
||||||
|
public GlobalVarsDialog(){
|
||||||
|
super("@logic.globals");
|
||||||
|
|
||||||
|
addCloseButton();
|
||||||
|
shown(this::setup);
|
||||||
|
onResize(this::setup);
|
||||||
|
}
|
||||||
|
|
||||||
|
void setup(){
|
||||||
|
float prefWidth = Math.min(Core.graphics.getWidth() * 0.9f / Scl.scl(1f) - 240f, 600f);
|
||||||
|
cont.clearChildren();
|
||||||
|
|
||||||
|
cont.pane(t -> {
|
||||||
|
t.margin(10f).marginRight(16f);
|
||||||
|
t.defaults().fillX().fillY();
|
||||||
|
for(var entry : Vars.logicVars.getEntries()){
|
||||||
|
|
||||||
|
if(entry.name.startsWith("section")){
|
||||||
|
Color color = Pal.accent;
|
||||||
|
t.add("@lglobal." + entry.name).fillX().center().labelAlign(Align.center).colspan(4).color(color).padTop(4f).padBottom(2f).row();
|
||||||
|
t.image(Tex.whiteui).height(4f).color(color).colspan(4).padBottom(8f).row();
|
||||||
|
}else{
|
||||||
|
Color varColor = Pal.gray;
|
||||||
|
float stub = 8f, mul = 0.5f, pad = 4;
|
||||||
|
|
||||||
|
String desc = entry.description;
|
||||||
|
if(desc == null || desc.isEmpty()){
|
||||||
|
desc = Core.bundle.get("lglobal." + entry.name, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
String fdesc = desc;
|
||||||
|
|
||||||
|
t.add(new Image(Tex.whiteui, varColor.cpy().mul(mul))).width(stub);
|
||||||
|
t.stack(new Image(Tex.whiteui, varColor), new Label(" " + entry.name + " ", Styles.outlineLabel)).padRight(pad);
|
||||||
|
|
||||||
|
t.add(new Image(Tex.whiteui, Pal.gray.cpy().mul(mul))).width(stub);
|
||||||
|
t.table(Tex.pane, out -> out.add(fdesc).style(Styles.outlineLabel).width(prefWidth).padLeft(2).padRight(2).wrap()).padRight(pad);
|
||||||
|
|
||||||
|
t.row();
|
||||||
|
|
||||||
|
t.add().fillX().colspan(4).height(4).row();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).grow();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -67,7 +67,7 @@ public enum LAccess{
|
|||||||
all = values(),
|
all = values(),
|
||||||
senseable = Seq.select(all, t -> t.params.length <= 1).toArray(LAccess.class),
|
senseable = Seq.select(all, t -> t.params.length <= 1).toArray(LAccess.class),
|
||||||
controls = Seq.select(all, t -> t.params.length > 0).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){
|
LAccess(String... params){
|
||||||
this.params = params;
|
this.params = params;
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ import mindustry.content.*;
|
|||||||
import mindustry.core.*;
|
import mindustry.core.*;
|
||||||
import mindustry.ctype.*;
|
import mindustry.ctype.*;
|
||||||
import mindustry.entities.*;
|
import mindustry.entities.*;
|
||||||
import mindustry.game.*;
|
|
||||||
import mindustry.game.EventType.*;
|
import mindustry.game.EventType.*;
|
||||||
|
import mindustry.game.*;
|
||||||
import mindustry.game.MapObjectives.*;
|
import mindustry.game.MapObjectives.*;
|
||||||
import mindustry.game.Teams.*;
|
import mindustry.game.Teams.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
@@ -706,7 +706,7 @@ public class LExecutor{
|
|||||||
int address = exec.numi(position);
|
int address = exec.numi(position);
|
||||||
Building from = exec.building(target);
|
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);
|
mem.memory[address] = exec.num(value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1025,14 +1025,17 @@ public class LExecutor{
|
|||||||
exec.textBuffer.setLength(0);
|
exec.textBuffer.setLength(0);
|
||||||
}
|
}
|
||||||
}else{
|
}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){
|
if(type == LogicDisplay.commandImage){
|
||||||
num1 = exec.obj(p1) instanceof UnlockableContent u ? u.iconId : 0;
|
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
|
//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 static class ApplyEffectI implements LInstruction{
|
||||||
public boolean clear;
|
public boolean clear;
|
||||||
public String effect;
|
public String effect;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package mindustry.logic;
|
|||||||
|
|
||||||
public enum LMarkerControl{
|
public enum LMarkerControl{
|
||||||
remove,
|
remove,
|
||||||
visibility("true/false"),
|
world("true/false"),
|
||||||
minimap("true/false"),
|
minimap("true/false"),
|
||||||
autoscale("true/false"),
|
autoscale("true/false"),
|
||||||
pos("x", "y"),
|
pos("x", "y"),
|
||||||
@@ -18,7 +18,10 @@ public enum LMarkerControl{
|
|||||||
textHeight("height"),
|
textHeight("height"),
|
||||||
labelFlags("background", "outline"),
|
labelFlags("background", "outline"),
|
||||||
texture("printFlush", "name"),
|
texture("printFlush", "name"),
|
||||||
textureSize("width", "height");
|
textureSize("width", "height"),
|
||||||
|
posi("index", "x", "y"),
|
||||||
|
uvi("index", "x", "y"),
|
||||||
|
colori("index", "color");
|
||||||
|
|
||||||
public final String[] params;
|
public final String[] params;
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import mindustry.logic.LCanvas.*;
|
|||||||
import mindustry.logic.LExecutor.*;
|
import mindustry.logic.LExecutor.*;
|
||||||
import mindustry.ui.*;
|
import mindustry.ui.*;
|
||||||
|
|
||||||
import static mindustry.Vars.ui;
|
import static mindustry.Vars.*;
|
||||||
import static mindustry.logic.LCanvas.*;
|
import static mindustry.logic.LCanvas.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -260,6 +260,13 @@ public class LStatements{
|
|||||||
}, 2, cell -> cell.size(165, 50)));
|
}, 2, cell -> cell.size(165, 50)));
|
||||||
}, Styles.logict, () -> {}).size(165, 40).color(s.color).left().padLeft(2);
|
}, 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();
|
}).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")
|
@RegisterStatement("spawnwave")
|
||||||
public static class SpawnWaveStatement extends LStatement{
|
public static class SpawnWaveStatement extends LStatement{
|
||||||
public String x = "10", y = "10", natural = "false";
|
public String x = "10", y = "10", natural = "false";
|
||||||
@@ -1999,11 +2115,14 @@ public class LStatements{
|
|||||||
table.table(t -> {
|
table.table(t -> {
|
||||||
t.setColor(table.color);
|
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){
|
fields(t, type.params[i], value, setter).width(100f);
|
||||||
col(t, p1, res -> {
|
|
||||||
p1 = "%" + res.toString().substring(0, res.a >= 1f ? 6 : 8);
|
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);
|
build(table);
|
||||||
});
|
});
|
||||||
}else if(type == LMarkerControl.drawLayer){
|
}else if(type == LMarkerControl.drawLayer){
|
||||||
@@ -2013,10 +2132,10 @@ public class LStatements{
|
|||||||
o.row();
|
o.row();
|
||||||
o.table(s -> {
|
o.table(s -> {
|
||||||
s.left();
|
s.left();
|
||||||
for(var layer : Layer.class.getFields()){
|
for(var field : Layer.class.getFields()){
|
||||||
float value = Reflect.get(Layer.class, layer.getName());
|
float layer = Reflect.get(field);
|
||||||
s.button(layer.getName() + " = " + value, Styles.logicTogglet, () -> {
|
s.button(field.getName() + " = " + layer, Styles.logicTogglet, () -> {
|
||||||
p1 = Float.toString(value);
|
p1 = Float.toString(layer);
|
||||||
rebuild(table);
|
rebuild(table);
|
||||||
hide.run();
|
hide.run();
|
||||||
}).size(240f, 40f).row();
|
}).size(240f, 40f).row();
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ public class LogicDialog extends BaseDialog{
|
|||||||
Cons<String> consumer = s -> {};
|
Cons<String> consumer = s -> {};
|
||||||
boolean privileged;
|
boolean privileged;
|
||||||
@Nullable LExecutor executor;
|
@Nullable LExecutor executor;
|
||||||
|
GlobalVarsDialog globalsDialog = new GlobalVarsDialog();
|
||||||
|
|
||||||
public LogicDialog(){
|
public LogicDialog(){
|
||||||
super("logic");
|
super("logic");
|
||||||
@@ -51,7 +52,7 @@ public class LogicDialog extends BaseDialog{
|
|||||||
add(buttons).growX().name("canvas");
|
add(buttons).growX().name("canvas");
|
||||||
}
|
}
|
||||||
|
|
||||||
private Color typeColor(Var s, Color color){
|
public static Color typeColor(Var s, Color color){
|
||||||
return color.set(
|
return color.set(
|
||||||
!s.isobj ? Pal.place :
|
!s.isobj ? Pal.place :
|
||||||
s.objval == null ? Color.darkGray :
|
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
|
return
|
||||||
!s.isobj ? "number" :
|
!s.isobj ? "number" :
|
||||||
s.objval == null ? "null" :
|
s.objval == null ? "null" :
|
||||||
@@ -178,6 +179,8 @@ public class LogicDialog extends BaseDialog{
|
|||||||
});
|
});
|
||||||
|
|
||||||
dialog.addCloseButton();
|
dialog.addCloseButton();
|
||||||
|
dialog.buttons.button("@logic.globals", Icon.list, () -> globalsDialog.show()).size(210f, 64f);
|
||||||
|
|
||||||
dialog.show();
|
dialog.show();
|
||||||
}).name("variables").disabled(b -> executor == null || executor.vars.length == 0);
|
}).name("variables").disabled(b -> executor == null || executor.vars.length == 0);
|
||||||
|
|
||||||
|
|||||||
@@ -57,6 +57,12 @@ public class LogicFx{
|
|||||||
return map.get(name);
|
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(){
|
public static String[] all(){
|
||||||
return map.orderedKeys().toArray(String.class);
|
return map.orderedKeys().toArray(String.class);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -271,8 +271,9 @@ public class ContentParser{
|
|||||||
return new Vec3(data.getFloat("x", 0f), data.getFloat("y", 0f), data.getFloat("z", 0f));
|
return new Vec3(data.getFloat("x", 0f), data.getFloat("y", 0f), data.getFloat("z", 0f));
|
||||||
});
|
});
|
||||||
put(Sound.class, (type, data) -> {
|
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());
|
return field != null ? field : Vars.tree.loadSound(data.asString());
|
||||||
});
|
});
|
||||||
put(Music.class, (type, data) -> {
|
put(Music.class, (type, data) -> {
|
||||||
@@ -445,6 +446,17 @@ public class ContentParser{
|
|||||||
if(value.has("consumes") && value.get("consumes").isObject()){
|
if(value.has("consumes") && value.get("consumes").isObject()){
|
||||||
for(JsonValue child : value.get("consumes")){
|
for(JsonValue child : value.get("consumes")){
|
||||||
switch(child.name){
|
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 "item" -> block.consumeItem(find(ContentType.item, child.asString()));
|
||||||
case "itemCharged" -> block.consume((Consume)parser.readValue(ConsumeItemCharged.class, child));
|
case "itemCharged" -> block.consume((Consume)parser.readValue(ConsumeItemCharged.class, child));
|
||||||
case "itemFlammable" -> block.consume((Consume)parser.readValue(ConsumeItemFlammable.class, child));
|
case "itemFlammable" -> block.consume((Consume)parser.readValue(ConsumeItemFlammable.class, child));
|
||||||
|
|||||||
@@ -218,7 +218,10 @@ public class Mods implements Loadable{
|
|||||||
}
|
}
|
||||||
//this returns a *runnable* which actually packs the resulting pixmap; this has to be done synchronously outside the method
|
//this returns a *runnable* which actually packs the resulting pixmap; this has to be done synchronously outside the method
|
||||||
return () -> {
|
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));
|
packer.add(getPage(file), fullName, new PixmapRegion(pix));
|
||||||
if(textureScale != 1.0f){
|
if(textureScale != 1.0f){
|
||||||
textureResize.put(fullName, textureScale);
|
textureResize.put(fullName, textureScale);
|
||||||
@@ -358,7 +361,24 @@ public class Mods implements Loadable{
|
|||||||
Log.debug("Time to generate icons: @", Time.elapsed());
|
Log.debug("Time to generate icons: @", Time.elapsed());
|
||||||
|
|
||||||
//dispose old atlas data
|
//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);
|
textureResize.each(e -> Core.atlas.find(e.key).scale = e.value);
|
||||||
|
|
||||||
@@ -856,7 +876,7 @@ public class Mods implements Loadable{
|
|||||||
return false;
|
return false;
|
||||||
// If dependency present, resolve it, or if it's not required, ignore it
|
// If dependency present, resolve it, or if it's not required, ignore it
|
||||||
}else if(context.dependencies.containsKey(dependency.name)){
|
}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);
|
context.invalid.put(element, ModState.incompleteDependencies);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -577,6 +577,10 @@ public class Administration{
|
|||||||
changed.run();
|
changed.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isDefault(){
|
||||||
|
return Structs.eq(get(), defaultValue);
|
||||||
|
}
|
||||||
|
|
||||||
private static boolean debug(){
|
private static boolean debug(){
|
||||||
return Config.debug.bool();
|
return Config.debug.bool();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ public enum Achievement{
|
|||||||
issueAttackCommand,
|
issueAttackCommand,
|
||||||
active100Units(SStat.maxUnitActive, 100),
|
active100Units(SStat.maxUnitActive, 100),
|
||||||
build1000Units(SStat.unitsBuilt, 1000),
|
build1000Units(SStat.unitsBuilt, 1000),
|
||||||
buildAllUnits(SStat.unitTypesBuilt, 30),
|
buildAllUnits(SStat.unitTypesBuilt, 50),
|
||||||
buildT5,
|
buildT5,
|
||||||
pickupT5,
|
pickupT5,
|
||||||
active10Polys,
|
active10Polys,
|
||||||
|
|||||||
@@ -84,8 +84,6 @@ public class Liquid extends UnlockableContent implements Senseable{
|
|||||||
super.init();
|
super.init();
|
||||||
|
|
||||||
if(gas){
|
if(gas){
|
||||||
//gases can't be coolants
|
|
||||||
coolant = false;
|
|
||||||
//always "boils", it's a gas
|
//always "boils", it's a gas
|
||||||
boilPoint = -1;
|
boilPoint = -1;
|
||||||
//ensure no accidental global mutation
|
//ensure no accidental global mutation
|
||||||
|
|||||||
@@ -536,4 +536,26 @@ public class Planet extends UnlockableContent{
|
|||||||
}
|
}
|
||||||
batch.flush(Gl.lineStrip);
|
batch.flush(Gl.lineStrip);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Vec3 lookAt(Sector sector, Vec3 out){
|
||||||
|
return out.set(sector.tile.v).rotate(Vec3.Y, -getRotation());
|
||||||
|
}
|
||||||
|
|
||||||
|
public Vec3 project(Sector sector, Camera3D cam, Vec3 out){
|
||||||
|
return cam.project(out.set(sector.tile.v).setLength(outlineRad * radius).rotate(Vec3.Y, -getRotation()).add(position));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPlane(Sector sector, PlaneBatch3D projector){
|
||||||
|
float rotation = -getRotation();
|
||||||
|
float length = 0.01f;
|
||||||
|
|
||||||
|
projector.setPlane(
|
||||||
|
//origin on sector position
|
||||||
|
Tmp.v33.set(sector.tile.v).setLength((outlineRad + length) * radius).rotate(Vec3.Y, rotation).add(position),
|
||||||
|
//face up
|
||||||
|
sector.plane.project(Tmp.v32.set(sector.tile.v).add(Vec3.Y)).sub(sector.tile.v, radius).rotate(Vec3.Y, rotation).nor(),
|
||||||
|
//right vector
|
||||||
|
Tmp.v31.set(Tmp.v32).rotate(Vec3.Y, -rotation).add(sector.tile.v).rotate(sector.tile.v, 90).sub(sector.tile.v).rotate(Vec3.Y, rotation).nor()
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -236,7 +236,7 @@ public class Sector{
|
|||||||
|
|
||||||
/** Projects this sector onto a 4-corner square for use in map gen.
|
/** Projects this sector onto a 4-corner square for use in map gen.
|
||||||
* Allocates a new object. Do not call in the main loop. */
|
* Allocates a new object. Do not call in the main loop. */
|
||||||
private SectorRect makeRect(){
|
protected SectorRect makeRect(){
|
||||||
Vec3[] corners = new Vec3[tile.corners.length];
|
Vec3[] corners = new Vec3[tile.corners.length];
|
||||||
for(int i = 0; i < corners.length; i++){
|
for(int i = 0; i < corners.length; i++){
|
||||||
corners[i] = tile.corners[i].v.cpy().setLength(planet.radius);
|
corners[i] = tile.corners[i].v.cpy().setLength(planet.radius);
|
||||||
|
|||||||
@@ -39,8 +39,10 @@ public class SectorPreset extends UnlockableContent{
|
|||||||
/** Internal use only! */
|
/** Internal use only! */
|
||||||
public SectorPreset(String name, LoadedMod mod){
|
public SectorPreset(String name, LoadedMod mod){
|
||||||
super(name);
|
super(name);
|
||||||
this.minfo.mod = mod;
|
if(mod != null){
|
||||||
this.generator = new FileMapGenerator(name, this);
|
this.minfo.mod = mod;
|
||||||
|
}
|
||||||
|
this.generator = new FileMapGenerator(this.name, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Internal use only! */
|
/** Internal use only! */
|
||||||
|
|||||||
@@ -215,6 +215,8 @@ public class UnitType extends UnlockableContent implements Senseable{
|
|||||||
naval = false,
|
naval = false,
|
||||||
/** if false, RTS AI controlled units do not automatically attack things while moving. This is automatically assigned. */
|
/** if false, RTS AI controlled units do not automatically attack things while moving. This is automatically assigned. */
|
||||||
autoFindTarget = true,
|
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 */
|
/** if true, this unit will always shoot while moving regardless of slowdown */
|
||||||
alwaysShootWhenMoving = false,
|
alwaysShootWhenMoving = false,
|
||||||
|
|
||||||
@@ -967,6 +969,7 @@ public class UnitType extends UnlockableContent implements Senseable{
|
|||||||
Drawf.checkBleed(outlined);
|
Drawf.checkBleed(outlined);
|
||||||
|
|
||||||
packer.add(PageType.main, regionName + "-outline", 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);
|
packer.add(PageType.main, name + "-treads" + r + "-" + i, frame);
|
||||||
|
frame.dispose();
|
||||||
}
|
}
|
||||||
|
slice.dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -297,31 +297,9 @@ public class Weapon implements Cloneable{
|
|||||||
mount.warmup = Mathf.lerpDelta(mount.warmup, warmupTarget, shootWarmupSpeed);
|
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
|
float
|
||||||
weaponRotation = unit.rotation - 90 + (rotate ? mount.rotation : baseRotation),
|
|
||||||
mountX = unit.x + Angles.trnsx(unit.rotation - 90, x, y),
|
mountX = unit.x + Angles.trnsx(unit.rotation - 90, x, y),
|
||||||
mountY = unit.y + Angles.trnsy(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);
|
|
||||||
|
|
||||||
//find a new target
|
//find a new target
|
||||||
if(!controllable && autoTarget){
|
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
|
//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;
|
if(alwaysShooting) mount.shoot = true;
|
||||||
|
|
||||||
//update continuous state
|
//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){
|
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){
|
protected boolean checkTarget(Unit unit, Teamc target, float x, float y, float range){
|
||||||
|
|||||||
@@ -314,7 +314,7 @@ public class Weather extends UnlockableContent{
|
|||||||
@EntityDef(value = {WeatherStatec.class}, pooled = true, isFinal = false)
|
@EntityDef(value = {WeatherStatec.class}, pooled = true, isFinal = false)
|
||||||
@Component(base = true)
|
@Component(base = true)
|
||||||
abstract static class WeatherStateComp implements Drawc, Syncc{
|
abstract static class WeatherStateComp implements Drawc, Syncc{
|
||||||
private static final float fadeTime = 60 * 4;
|
public static final float fadeTime = 60 * 4;
|
||||||
|
|
||||||
Weather weather;
|
Weather weather;
|
||||||
float intensity = 1f, opacity = 0f, life, effectTimer;
|
float intensity = 1f, opacity = 0f, life, effectTimer;
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package mindustry.ui.dialogs;
|
package mindustry.ui.dialogs;
|
||||||
|
|
||||||
import arc.*;
|
import arc.*;
|
||||||
|
import arc.freetype.FreeTypeFontGenerator.*;
|
||||||
import arc.graphics.*;
|
import arc.graphics.*;
|
||||||
import arc.input.*;
|
import arc.input.*;
|
||||||
import arc.math.*;
|
import arc.math.*;
|
||||||
@@ -35,6 +36,7 @@ public class JoinDialog extends BaseDialog{
|
|||||||
int refreshes;
|
int refreshes;
|
||||||
boolean showHidden;
|
boolean showHidden;
|
||||||
TextButtonStyle style;
|
TextButtonStyle style;
|
||||||
|
Task fontIgnoreDirtyTask;
|
||||||
|
|
||||||
String lastIp;
|
String lastIp;
|
||||||
int lastPort, lastColumns = -1;
|
int lastPort, lastColumns = -1;
|
||||||
@@ -413,6 +415,15 @@ public class JoinDialog extends BaseDialog{
|
|||||||
net.pingHost(resaddress, resport, res -> {
|
net.pingHost(resaddress, resport, res -> {
|
||||||
if(refreshes != cur) return;
|
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)
|
if(!serverSearch.isEmpty() && !(group.name.toLowerCase().contains(serverSearch)
|
||||||
|| res.name.toLowerCase().contains(serverSearch)
|
|| res.name.toLowerCase().contains(serverSearch)
|
||||||
|| res.description.toLowerCase().contains(serverSearch)
|
|| res.description.toLowerCase().contains(serverSearch)
|
||||||
|
|||||||
@@ -167,7 +167,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
|
|||||||
|
|
||||||
//show selection of Erekir/Serpulo campaign if the user has no bases, and hasn't selected yet (essentially a "have they played campaign before" check)
|
//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(() -> {
|
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");
|
var diag = new BaseDialog("@campaign.select");
|
||||||
|
|
||||||
Planet[] selected = {null};
|
Planet[] selected = {null};
|
||||||
@@ -214,7 +214,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
|
|||||||
}
|
}
|
||||||
|
|
||||||
//unlock defaults for older campaign saves (TODO move? where to?)
|
//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);
|
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();
|
super.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
void lookAt(Sector sector){
|
public void lookAt(Sector sector){
|
||||||
if(sector.tile == Ptile.empty) return;
|
if(sector.tile == Ptile.empty) return;
|
||||||
|
|
||||||
|
//TODO should this even set `state.planet`? the other lookAt() doesn't, so...
|
||||||
state.planet = sector.planet;
|
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){
|
boolean canSelect(Sector sector){
|
||||||
@@ -648,10 +654,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
|
|||||||
}
|
}
|
||||||
}).visible(() -> mode != select),
|
}).visible(() -> mode != select),
|
||||||
|
|
||||||
new Table(c -> {
|
new Table(c -> expandTable = c)).grow();
|
||||||
expandTable = c;
|
|
||||||
})).grow();
|
|
||||||
|
|
||||||
rebuildExpand();
|
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
|
@Override
|
||||||
public void act(float delta){
|
public void act(float delta){
|
||||||
super.act(delta);
|
super.act(delta);
|
||||||
@@ -801,7 +799,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
|
|||||||
hoverLabel.touchable = Touchable.disabled;
|
hoverLabel.touchable = Touchable.disabled;
|
||||||
hoverLabel.color.a = state.uiAlpha;
|
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.setPosition(pos.x - Core.scene.marginLeft, pos.y - Core.scene.marginBottom, Align.center);
|
||||||
|
|
||||||
hoverLabel.getText().setLength(0);
|
hoverLabel.getText().setLength(0);
|
||||||
|
|||||||
@@ -36,8 +36,6 @@ public class TraceDialog extends BaseDialog{
|
|||||||
c.add(Core.bundle.format("trace.ip", info.ip)).row();
|
c.add(Core.bundle.format("trace.ip", info.ip)).row();
|
||||||
c.button(Icon.copySmall, style, () -> copy(info.uuid)).size(s).padRight(4f);
|
c.button(Icon.copySmall, style, () -> copy(info.uuid)).size(s).padRight(4f);
|
||||||
c.add(Core.bundle.format("trace.id", info.uuid)).row();
|
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();
|
}).row();
|
||||||
|
|
||||||
table.add(Core.bundle.format("trace.modclient", info.modded)).row();
|
table.add(Core.bundle.format("trace.modclient", info.modded)).row();
|
||||||
|
|||||||
@@ -72,9 +72,9 @@ public class HudFragment{
|
|||||||
|
|
||||||
Events.on(SectorCaptureEvent.class, e -> {
|
Events.on(SectorCaptureEvent.class, e -> {
|
||||||
if(e.sector.isBeingPlayed()){
|
if(e.sector.isBeingPlayed()){
|
||||||
ui.announce(Core.bundle.format("sector.capture", ""), 5f);
|
ui.announce("@sector.capture.current", 5f);
|
||||||
}else{
|
}else{
|
||||||
showToast(Core.bundle.format("sector.capture", e.sector.name() + " "));
|
showToast(Core.bundle.format("sector.capture", e.sector.name()));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user