Compare commits

..

136 Commits
v135 ... v135.2

Author SHA1 Message Date
Jerzozwierz
41b22ba6a6 Update Contributors (#6689)
Translation, I would also like to translate later versions of game :)
2022-04-01 15:29:21 -04:00
Jerzozwierz
b1fed0346c Update bundle_pl.properties (#6688)
Open Games & Local Servers - Otwieraj Gry & Lokalne Serwery 
Search maps-Przeszukaj mapy...
Filter Maps-Przefiltruj Mapy
Gamemodes-Tryby Gry
Map Type-Typ Mapy
Search In-Szukaj W
Author-Autor
Description-Opis
Sort By-Sortuj Według
Reverse Sort-Odwrotne Sortowanie
Begin-Rozpocznij
Health-Zdrowie
Type-Typ
Hide All-Schowaj Wszystkie
Show All-Pokaż Wszystkie
Rotate-Obróć
Replacement-Zastąpienie
Banned Units-Zabronione jednostki
Sectors-Sektory
Repair Speed-Prędkość Napraw
Skip Core Launch/Land Animation-Pomiń Animację Wystrzału/Lądowania
Enemy Team-Drużyna Wroga
Player Team-Drużyna Gracza
Teams-Drużyny
Rdzeń Spala Nadmarowe Przedmioty-Rdzeń Spala Nadmiarowe Przedmioty ("i" was missing and word had mistake)
2022-04-01 14:21:57 -04:00
Thomas Widyantoko
4462bcca43 in_ID bundle update (#6682)
* Removed unnecessary words and re-added missing translations

* Main bundle parity
2022-03-31 09:14:01 -04:00
Vajda Simon
99a3967918 Update servers_v6.json (#6680)
Fixed the original Hungarian mindustry ddns
2022-03-30 14:24:47 -04:00
Weathercold
7faa0f119e Make closestEnemyCore find the actual closest core (#6676)
* Make closestEnemyCore find the actual closest core

this function should return the closest core of all of `team`’s enemies, but it instead returns the closest core of the first enemy team that has a core

* Glenn method
2022-03-30 00:28:26 -04:00
Brandons404
47b8e8d9fa Add new server address (#6655)
I'd like to add my dedicated server to the official list.
2022-03-29 10:18:43 -04:00
WayZer
b2fc824277 Add tinylake server to v7 list (#6674) 2022-03-29 10:17:31 -04:00
RebornTrack970
c3ab407040 Re-Added Rapid to Omega (#6675) 2022-03-29 10:17:19 -04:00
buthed010203
2bfc23c216 Cease node dumbness (#6670)
* Cease.

* Mobile players are second rate citizens

* Undo config on ratelimit, revert PowerNode for loop

* Fix being unable to drop items into core vaults when there are over 1k of the item already
2022-03-28 14:32:36 -04:00
Anuken
12e1f328e8 testing compile times with gradle action 2022-03-28 11:56:45 -04:00
Anuken
fdc942cc6c Update push.yml 2022-03-28 11:33:27 -04:00
Anuken
3d507ae473 Update pr.yml 2022-03-28 11:33:15 -04:00
TranquillyUnpleasant
580fcd1fbc Apply color stripping to player names in console wherever applicable. (#6672)
* utility method

* plainName for all console outputs

* plainLastName for all console outputs

* some formats

* slightly reformat trace output

* Slightly nicer admin indicator

* A space
2022-03-28 10:09:01 -04:00
BalaM314
8ec2e40610 Add "Exiting to reload mods." logger message (#6662)
To allow for the game to be automatically restarted
2022-03-24 10:42:44 -04:00
Darklord2996
5271edf9eb Update to servers_v7.json - New Domain (#6641)
* Update to servers_v7 - New Domain

Updating server list to include New surrealment ip address as read other pull rq for surrealment v6 domain update

* Update servers_v7.json
2022-03-15 21:26:11 -04:00
Darklord2996
7ca1663d89 Update to servers_v6.json - Update Domain (#6640)
* Update to servers_v6.json - Update Domain

Im stupid and did not format it correctly i've removed the screwed branches on my fork here's the fixed one im so stupid *pain* 
This is to change the port of surrealment as the previous ip was redirected to v7 ill be adding it to that list shortly (it is using the same plugins everything just a version split)

* Update servers_v6.json
2022-03-15 21:25:56 -04:00
RebornTrack970
9e53f3d86b that one omega server is back. (#6639) 2022-03-15 10:48:12 -04:00
Valeriy
2fd3c25beb Update servers_v7.json(new domen) (#6635)
SMoA now have a .ru domen
2022-03-11 09:51:06 -05:00
buthed010203
2759aa2793 Removed redundant (and probably also broken) vars (#6631)
These shouldn't have existed in the first place
2022-03-09 11:01:26 -05:00
Vajda Simon
6ac865be9f Update servers_v6.json (#6630)
The Hungarian server domain has changed
2022-03-09 10:01:37 -05:00
RebornTrack970
f4281d260b Removed some servers from v7 Omega (#6618) 2022-03-04 17:20:59 -05:00
Otto Richter (fnetX)
6ea4570ae8 Update German translations (#6619) 2022-03-04 17:20:46 -05:00
ErrorInCode
ca016df40d Fixed Phase Wall naming in Spanish (#6616)
I removed the word "grande" from the name because that means big, and this is the smaller phase wall.
2022-03-03 21:28:04 -05:00
router
96d99f68b2 Update bundle_cs.properties (#6615) 2022-03-03 09:24:29 -05:00
WayZer
4ff697e19b API: add DropDownEvent (#6611)
* API: add DropDownEvent

(cherry picked from commit d44a45c916da391200f1ffad3f98b15a99abb1aa)

* request changes
2022-03-02 11:26:37 -05:00
Nautilus
6c59018d9f Update servers_v7.json (#6613)
added our hex-PvP server
2022-03-02 10:25:26 -05:00
Sahrea
bdd6a0e08c Update servers_v7.json (#6602)
Add the M-DE Servers to the V7 Serverlist.
2022-03-01 10:18:06 -05:00
ZetaMap
9f3a1cac1b Update 'servers_v6.json' - new Spanish server! (#6609)
* Update 'servers_v6.json' - new Spanish server!

* Update servers_v6.json
2022-03-01 10:17:33 -05:00
Pointifix
813408d6ee Update servers_v6.json - Server with new gamemode named Sectorized (#6591)
* Update servers_v6.json

Developed a new Gamemode named Sectorized, the principle is similar to hexed but instead of hexes its an open map and you can only build within the area highlighted by shock mines. This area can be expanded by placing vaults, which have custom cost for each new core shard which is being placed.

The Gamemode is not 100% finished yet but already playable, i will consecutively add more features.

* added ddns
2022-02-22 21:40:27 -05:00
RebornTrack970
3509b56a51 2R2T's Container Broke so port change (#6595)
25574 -> 25575
2022-02-22 11:21:56 -05:00
alex
09e0e441c5 Update servers_v7.json (#6588) 2022-02-18 11:12:00 -05:00
GaviTSRA
155b7638f9 Updated TSR Network server ips (#6587) 2022-02-18 10:46:30 -05:00
Matthew, Maya, or MEEP
785bd44dbe Change base grab to be like other turret types (#6584)
because why was it like this to begin with
2022-02-17 17:13:20 -05:00
Ribbons0121R121
0ee8c07904 Change base grab to be like other turret types (#6577)
because why was it like this to begin with
2022-02-14 23:06:44 -05:00
Matthew, Maya, or MEEP
cdbad21daa Apparently navanax shots shrink (#6576) 2022-02-14 21:36:20 -05:00
RebornTrack970
a0fc8accff YH Server Port Change (#6574) 2022-02-14 14:36:12 -05:00
Valeriy
a2e2b867b0 Update servers_v7.json (#6571)
Update domen from duckdns to no-ip
2022-02-13 09:16:37 -05:00
Github Actions
35ec122e2f Automatic bundle update 2022-02-12 14:27:18 +00:00
Dryehm
69737594cc Filipino Bundle Translation (#6525)
* Update bundle_fil.properties

* Update bundle_fil.properties

* Update bundle_fil.properties

* Update bundle_fil.properties

* Update bundle_fil.properties

* Update bundle_fil.properties

* Update bundle_fil.properties

* Update bundle_fil.properties

* Update bundle_fil.properties

* Update bundle_fil.properties

* Update bundle_fil.properties

* Update bundle_fil.properties

* Update bundle_fil.properties
2022-02-12 09:26:11 -05:00
RebornTrack970
738e75253d TR Bundle Fix (#6564)
* TR Bundle Fix

* Update bundle_tr.properties
2022-02-12 09:25:58 -05:00
Phinner
e20505508e funni js (#6566) 2022-02-10 19:44:30 -05:00
Fernando
96b26cafd4 New MindustryBR servers and remove old ones (#6563)
* New MindustryBR server and remove closed servers

* Remove closed servers and add new one
2022-02-08 20:37:11 -05:00
hortiSquash
761b357e46 Allows for different Pixels/Area (#6562)
* Allows for different Pixels/Area

Spent the entire day asking people if they knew of any mod that change would break, the answer is negative

modders, if you want the screen to take the entire space, remove both the -4

* ScaleFactor so it doesnt break existing mods

scale = (size * 32 - bordersize / 2) / displaySize

* facepalm

* Update LogicDisplay.java

why am i dumb every time i do changes on the fly

* Update LogicDisplay.java
2022-02-08 18:02:59 -05:00
Matthew (or Maya) Peng
6a053f2f45 Allow for same-size core upgrades (#6558) 2022-02-05 17:58:36 -05:00
Matthew (or Maya) Peng
c877c3416e Reset after drawing bullet. (#6557) 2022-02-05 16:03:32 -05:00
Sunny Kim
126baa93d7 Save fires from color (#6556) 2022-02-05 11:14:43 -05:00
buthed010203
7dce2ee9ec Do not the overlap. (#6555)
I got sick of waiting for this to get patched in vanilla so I did it myself.
2022-02-04 18:53:14 -05:00
Matthew (or Maya) Peng
16b9d68773 Option to not hardcode a bullet's status and despawnHit (#6553)
* Make not being hardcoded an option

* No one is gonna set a negative light radius, but just in case...
2022-02-03 09:48:44 -05:00
OSP
4ee2ce3ba5 [XCore] Domain (#6554) 2022-02-03 09:48:34 -05:00
Anuken
d7e55e83da arc 2022-02-02 23:38:07 -05:00
Anuken
335cd0c8a1 Merge branch 'master' of https://github.com/Anuken/Mindustry 2022-02-02 23:38:04 -05:00
Anuken
c01ad67614 arc 2022-02-02 23:38:00 -05:00
Sam Bloom
34d8ce59cb new yeet hosting servers (#6552) 2022-02-02 18:38:40 -05:00
Take
5c4f3171f7 Japanese translation (#5858)
* translate sector name

* fix sector description translation

* fix translate: status

* fix translate: remove WIP from setting.coreitems.name

* correct a notation error between "ターレット" and "タレット"

* translate: link.bug, 研究タブ, network error, sectors.stored

* transalte: block name, use "放電" instead of "電撃アーク", scepter description

* fix translate: unmoving

Co-authored-by: Anuken <arnukren@gmail.com>
2022-02-02 16:57:02 -05:00
Anuken
ae924e6e2b Merge remote-tracking branch 'origin/master' 2022-02-02 11:54:44 -05:00
Anuken
ca6723e696 Light RGB clamp + Arc update 2022-02-02 11:54:39 -05:00
Sam Bloom
dc02678a6d Omega IP Change (#6548)
* almost done

* Update servers_v6.json

* last ip change (for a long time)
2022-02-01 17:35:58 -05:00
Recessive
e5d16a73c5 Changed AA servers to new IP (#6546) 2022-02-01 09:35:59 -05:00
Anuken
85d3680094 I have not checked my email in a month
and at this point I'm not sure if I should.
2022-01-31 14:46:18 -05:00
Rex
b3a91f50c1 Update servers_v6.json (#6543) 2022-01-31 14:42:25 -05:00
smol
29311806a9 PlayerConnectionConfirmed (#6539)
* PlayerConnectionConfirmed

* AdminRequestEvent
2022-01-29 11:34:34 -05:00
Leonid Skorospelov
0b9483cffc Preserve conveyors end rotation on placement (#6496)
* Preserve conveyors end rotation on placement

* Formatting
2022-01-27 14:57:43 -05:00
buthed010203
fa06d2c20b Fix broken powernode Point2[] config (#6531)
This was broken. I fixed it.
2022-01-25 10:38:38 -05:00
Sh1p*nfire
d81efe4f71 fix Cyerce's frag keeping owner velocity (#6527) 2022-01-25 10:05:52 -05:00
Phinner
ed598e203c Add Xpdustry BE server (#6526)
A secret place for testing unstable plugins :^)
2022-01-24 11:05:53 -05:00
SachaTending
5596354454 Add tendhost to servers (#6517)
* Add tendhost to servers

New server

* Update servers_v6.json
2022-01-24 11:03:38 -05:00
Matthew (or Maya) Peng
716702623d onConfigureClosed (#6523)
* onConfigureClosed

* Run the closing of the previous block's config on the opening of another
2022-01-23 19:34:28 -05:00
Nile
e2658ba497 Restoring the natural order of things (#6514)
Renamed Infection to Yeet Hosting, as Infection has dissolved due to recessive's return, and Yeet Hosting was our hosts when it was up.
2022-01-21 20:07:37 -05:00
CPXMC
30070ce759 Change my main name in Contributors (#6513)
CPXMC to PCX-LK
2022-01-21 20:05:48 -05:00
OSP
c26671fd4b [XCore] Attack ip update (#6512) 2022-01-21 16:28:11 -05:00
Даркнесс#3729
df994a2ebd Remove my second server and a V6 server (#6510)
* Remove my second server and 2 cursed servers

Remove

* Add Community server back
2022-01-21 14:50:32 -05:00
Iloveidea
287dc35640 Update LiquidConverter.java (#6507) 2022-01-21 09:46:03 -05:00
RebornTrack970
a3ccdce0eb Infection dns change (#6506) 2022-01-19 10:42:31 -05:00
Weathercold
4a05c9547a TextSetting (#6503)
* tile

tile

* > Called right after load()

* TextSetting

* nvm I change the doc instead

* Fixes
2022-01-18 22:26:24 -05:00
VizardAlpha
3311e40906 Update bundle_fr.properties (#6373)
* Update bundle_fr.properties

* Removes -> Destroys..
2022-01-17 23:18:41 -05:00
彭瑞暄
b8842a34ae Update bundle_zh_TW.properties (#6470) 2022-01-17 21:58:26 -05:00
Anuken
cc221d669a Sector bugfix backport 2022-01-17 15:41:45 -05:00
Paweł Stolarski
6a75d84f48 Evolveye (polish translator of 3.x version) (#6502) 2022-01-17 14:53:35 -05:00
Vajda Simon
9622d6b401 Hungarian server update (#6501)
with lobby and plugins 😁
2022-01-16 16:28:23 -05:00
OSP
44c28e2af0 [XCore] new server (#6500) 2022-01-16 14:28:31 -05:00
RebornTrack970
f754f386c9 Added Castle Wars server as a test (#6498) 2022-01-15 10:42:14 -05:00
Matthew (or Maya) Peng
795edb2494 Tractor Beam Suction multiplies by timescale twice (#6489) 2022-01-13 15:28:29 -05:00
devlaq
f5701ba3c4 Update servers_v6.json (#6487)
Change shard server address to 59.12.120.171 for fast connection and stability
2022-01-12 10:00:46 -05:00
Neba-MD
772f3ceb5f Update servers_v6.json (#6485) 2022-01-11 12:57:30 -05:00
OSP
4b6a48a30f [XCore] domain change (#6484) 2022-01-11 10:16:33 -05:00
Matthew (or Maya) Peng
43e857e810 Fix ammo of one item transforming into another. (#6483)
* Fix ammo transmutation

* Small fixes

* small fix 2

* a

* commit spam aeugh
2022-01-11 09:29:25 -05:00
Phinner
cd88400154 Better Mod/Plugin dependencies handling (#6328)
* Dependencies goes brrrr

* mmh, maybe voiding exception in findMeta ?

* Let Anuke code handle everything

I trust the Cat :^)

* My god, I sleep too much...

* Forgot that one...
2022-01-10 23:43:11 -05:00
Matthew (or Maya) Peng
1d14fa78bf Make ItemEntry's item public (#6474) 2022-01-10 23:38:28 -05:00
Volas171
02db63aa91 update omega ips (#6482) 2022-01-10 18:13:07 -05:00
OSP
4eab4ab569 [XCore] update ip (#6481) 2022-01-09 17:00:46 -05:00
Yuri Polyakov
12a8797019 Add server to global (#6479)
* Add server to global

* Ня
2022-01-09 11:37:48 -05:00
KotMilkMeoW
030d66fb73 MeowLand cumeback (#6478)
👀
2022-01-09 10:06:35 -05:00
Matthew (or Maya) Peng
9825d2f746 Incorrect reset (#6477) 2022-01-08 21:34:12 -05:00
Valeriy
f8af593177 SMoA will come back (#6475)
Domen isnt active yet
2022-01-08 11:47:29 -05:00
Nile
16d7a368c6 added crawler hell (#6469) 2022-01-06 18:59:41 -05:00
TranquillyUnpleasant
3701ac131e More info (#6465)
* change wave timer to display serverside when waves exist

* show total and enemy units, not just enemy units

* format
2022-01-02 00:22:19 -05:00
RebornTrack970
ec00f59b82 Infection port change (#6457) 2021-12-30 09:36:55 -05:00
Nile
2da4408dd1 Added Infection (#6455)
fun gamemode
2021-12-29 09:30:27 -05:00
buthed010203
692718d4ea Fix strange behavior of MinerAI (#6454)
* Fix strange behavior of MinerAI 

See: https://discord.com/channels/391020510269669376/396416151032299521/925110542216073216

> Anuke, is the current behavior of miner ai where it wont mine anything if the item that the core has the fewest of has all of its ores covered?
The only place the hasOre code is used is miner ai so i assume thats a bug?

* Update BlockIndexer.java
2021-12-28 23:22:01 -05:00
Phinner
84d87e7e9f Allow Custom input handling in servers (#6452)
* enable input redirection

* oops
2021-12-23 23:30:46 -05:00
buthed010203
0036efba0c Properly update map name and gamemode on steam (#6449)
* Properly update map name and gamemode on steam

This has been bugging me for the longest time but I've been too lazy to fix it, I finally got around to doing so.

* fix
2021-12-22 14:23:24 -05:00
buthed010203
34c4aa07de Fix assertion message (#6448)
It previously said `exotic-mod must be loaded. ==> expected: <betamindy> but was: <exotic-mod>` when it failed which makes absolutely no sense.
2021-12-21 12:09:51 -05:00
Anuken
2dfa238ff3 More debug stats 2021-12-21 10:33:09 -05:00
Anuken
a093ba5511 Merge remote-tracking branch 'origin/master' 2021-12-21 10:25:54 -05:00
Anuken
24420c4371 Added temporary client debug status methods 2021-12-21 10:25:47 -05:00
Valeriy
24d3054bac End of this nightmare (#6444)
SMoA/Skaarj was end of existing
2021-12-18 08:35:58 -05:00
L0615T1C5-216AC-9437
7880135824 Allow setting to be reset through the use of config key default (#6442) 2021-12-17 17:13:49 -05:00
KuhnChris
4b6541ae4e Update missing "core launch animation skip" in german translation file (bundle_de) (#6430)
* Update settings file (bundle_de)

* Update bundle_de.properties
2021-12-14 12:52:26 -05:00
Matthew (or Maya) Peng
339d87ad78 Check the status, not the bullet (#6434) 2021-12-13 21:44:54 -05:00
Matthew (or Maya) Peng
052b47fbe4 remove space from perSecond and perMinute (#6435) 2021-12-13 21:44:10 -05:00
Fancy2209
b5c1972040 Update bundle_pt_PT.properties so that the portuguese word for settings is right (#6433)
* Update bundle_pt_PT.properties

* Fix the other 2 words with -/ I didn't notice
2021-12-13 13:20:30 -05:00
RebornTrack970
6c26edbd84 Fixed Omega Servers on V7 (#6432)
* Fixed Omega Servers

* Update servers_v7.json
2021-12-13 11:18:53 -05:00
Prosta4okua
192588d373 Update LanguageDialog.java (#6431) 2021-12-12 18:15:26 -05:00
RebornTrack970
a3100980dc Fixed 2R2T (#6426) 2021-12-11 09:26:38 -05:00
Volas171
f4c7637071 Update Omega v7 and v6 ips (serverlist) (#6420)
* update omega ip

* omega v7 ip change

* i forgo 💀
2021-12-09 09:49:11 -05:00
Darkness#3729
3a91460e24 Fix (#6414) 2021-12-08 10:01:02 -05:00
Matthew (or Maya) Peng
b70c08c2ec Removes -> Destroys (#6409)
* Removes -> Destroys

* inputed

* bad language design TM

english sucks
2021-12-08 00:03:11 -05:00
Matthew (or Maya) Peng
8e89b24e5b unprivate countOre (#6410) 2021-12-08 00:02:52 -05:00
Rex
76af0228c1 Update servers_v6.json (#6407)
* Update servers_v6.json

* Update servers_v6.json
2021-12-05 16:00:37 -05:00
Alexander397172YT
a3385df88b new createdustry IP (#6406) 2021-12-05 12:39:02 -05:00
buthed010203
5c3ecaabb5 Fix incorrect return value (#6401)
* Fix incorrect return value

the javadoc is a lie

* Update Administration.java
2021-12-04 20:41:29 -05:00
alex
adb03c465b add v7 servers for alex servers (#6393)
* Update v6 servers for alex servers

* Update servers_v7.json

alex v7 server
2021-12-02 19:24:44 -05:00
Matthew (or Maya) Peng
5ea4688e88 get by name (#6396) 2021-12-02 15:43:31 -05:00
Matthew (or Maya) Peng
8cb830ba41 Make MoveLightningAbility alternating a boolean (#6390)
* Revert "BlueWolf does not want MoveLightningAbility to mirror (#6376)"

This reverts commit e1685ef46c.

* boolean `alternate`

* Better Javadoc description
2021-11-29 23:05:35 -05:00
Matthew (or Maya) Peng
3819e327e9 Grammar (#6383)
* Grammar

* English is a terrible language
2021-11-29 21:15:15 -05:00
Anuken
51fe07daef Backported EnumSet changes 2021-11-29 20:15:13 -05:00
Anuken
dc0904a6c7 Merge remote-tracking branch 'origin/master' 2021-11-29 20:14:05 -05:00
Anuken
feba9d677e Fixed #6389 2021-11-29 20:13:59 -05:00
smol
582f05fa33 Fix a single pixel in Fuse's sprite (#6387)
* Create m

* Delete m

* Add files via upload
2021-11-29 12:23:16 -05:00
Darkness#3729
061357e1df Reserved 5000 port for a new gamemode (#6385)
👀
2021-11-29 09:46:45 -05:00
buthed010203
c055407249 Fix editor camera panning (#6380)
VSync being disabled will make the camera move unbearably fast currently as it isnt tied to frame time.
2021-11-26 13:45:27 -05:00
Matthew (or Maya) Peng
e1685ef46c BlueWolf does not want MoveLightningAbility to mirror (#6376) 2021-11-26 11:05:50 -05:00
Anuken
22564de3c8 Merge branch 'master' of https://github.com/Anuken/Mindustry 2021-11-25 18:54:49 -05:00
Anuken
ce065f0324 arc 2021-11-25 18:54:46 -05:00
router
4eca2b4b0b Make updateInUnits description actually readable (#6371) 2021-11-25 15:33:21 -05:00
Anuken
04b1ba31a9 Fixed #6370 2021-11-25 13:29:35 -05:00
70 changed files with 994 additions and 643 deletions

View File

@@ -8,10 +8,12 @@ jobs:
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: Set up JDK 16 - name: Set up JDK 17
uses: actions/setup-java@v1 uses: actions/setup-java@v1
with: with:
java-version: 16 java-version: 17
- name: Setup Gradle
uses: gradle/gradle-build-action@v2
- name: Run unit tests and build JAR - name: Run unit tests and build JAR
run: ./gradlew test desktop:dist run: ./gradlew test desktop:dist
- name: Upload desktop JAR for testing - name: Upload desktop JAR for testing

View File

@@ -21,6 +21,8 @@ jobs:
uses: actions/setup-java@v1 uses: actions/setup-java@v1
with: with:
java-version: 17 java-version: 17
- name: Setup Gradle
uses: gradle/gradle-build-action@v2
- name: Update bundles - name: Update bundles
if: ${{ github.repository == 'Anuken/Mindustry' }} if: ${{ github.repository == 'Anuken/Mindustry' }}
run: | run: |

View File

@@ -12,7 +12,7 @@ Do not submit something without at least running the game to see if it compiles.
If you are submitting a new block, make sure it has a name and description, and that it works correctly in-game. If you are changing existing block mechanics, test them out first. If you are submitting a new block, make sure it has a name and description, and that it works correctly in-game. If you are changing existing block mechanics, test them out first.
### Do not make large changes before discussing them first. ### Do not make large changes before discussing them first.
If you are interested in adding a large mechanic/feature or changing large amounts of code, first contact me (Anuken) via [Discord](https://discord.gg/mindustry) (preferred method) or via e-mail (*anukendev@gmail.com*). If you are interested in adding a large mechanic/feature or changing large amounts of code, first contact me (Anuken) via [Discord](https://discord.gg/mindustry) - either via PM or by posting in the `#pulls` channel.
For most changes, this should not be necessary. I just want to know if you're doing something big so I can offer advice and/or make sure you're not wasting your time on it. For most changes, this should not be necessary. I just want to know if you're doing something big so I can offer advice and/or make sure you're not wasting your time on it.
### Do not make formatting PRs. ### Do not make formatting PRs.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -1468,9 +1468,9 @@ block.incinerator.description = Vaporizes any item or liquid it receives.
block.power-void.description = Voids all power inputted. Sandbox only. block.power-void.description = Voids all power inputted. Sandbox only.
block.power-source.description = Infinitely outputs power. Sandbox only. block.power-source.description = Infinitely outputs power. Sandbox only.
block.item-source.description = Infinitely outputs items. Sandbox only. block.item-source.description = Infinitely outputs items. Sandbox only.
block.item-void.description = Destroys any items. Sandbox only. block.item-void.description = Destroys inputted items. Sandbox only.
block.liquid-source.description = Infinitely outputs liquids. Sandbox only. block.liquid-source.description = Infinitely outputs liquids. Sandbox only.
block.liquid-void.description = Removes any liquids. Sandbox only. block.liquid-void.description = Destroys inputted liquids. Sandbox only.
block.payload-source.description = Infinitely outputs payloads. Sandbox only. block.payload-source.description = Infinitely outputs payloads. Sandbox only.
block.payload-void.description = Destroys any payloads. Sandbox only. block.payload-void.description = Destroys any payloads. Sandbox only.
block.copper-wall.description = Protects structures from enemy projectiles. block.copper-wall.description = Protects structures from enemy projectiles.

View File

@@ -1497,7 +1497,7 @@ block.router.details = Nezbytné zlo. Použití hned u produkčních vstupů se
block.distributor.description = Rozděluje vstupní položky rovnoměrně do sedmi výstupů. block.distributor.description = Rozděluje vstupní položky rovnoměrně do sedmi výstupů.
block.overflow-gate.description = Pokud je směr vpřed ucpán, posílá vstupní položky do stran. Nelze použít vedle jiné brány. block.overflow-gate.description = Pokud je směr vpřed ucpán, posílá vstupní položky do stran. Nelze použít vedle jiné brány.
block.underflow-gate.description = Pokud je směr do stran ucpán, posílá vstupní položky vpřed. Nelze použít vedle jiné brány. block.underflow-gate.description = Pokud je směr do stran ucpán, posílá vstupní položky vpřed. Nelze použít vedle jiné brány.
block.mass-driver.description = Konstrukce pro přepravu položek na velkou vzdálenost. Sesere dávku položek a vystřelí ji k dalšímu hromadnému přenašeči. block.mass-driver.description = Konstrukce pro přepravu položek na velkou vzdálenost. Shromáždí dávku položek a vystřelí ji k dalšímu hromadnému přenašeči.
block.mechanical-pump.description = Pumpuje kapalinu a předává ji dál. Nevyžaduje energii. block.mechanical-pump.description = Pumpuje kapalinu a předává ji dál. Nevyžaduje energii.
block.rotary-pump.description = Pumpuje kapalinu a předává ji dál. Vyžaduje energii. block.rotary-pump.description = Pumpuje kapalinu a předává ji dál. Vyžaduje energii.
block.thermal-pump.description = Pumpuje kapalinu a předává ji dál. block.thermal-pump.description = Pumpuje kapalinu a předává ji dál.

View File

@@ -596,7 +596,7 @@ sectors.stored = Gelagert:
sectors.resume = Weiterspielen sectors.resume = Weiterspielen
sectors.launch = Start sectors.launch = Start
sectors.select = Auswählen sectors.select = Auswählen
sectors.nonelaunch = [lightgray]none (sun) sectors.nonelaunch = [lightgray]keiner (Sonne)
sectors.rename = Sektor umbenennen sectors.rename = Sektor umbenennen
sectors.enemybase = [scarlet]Gegnerische Basis sectors.enemybase = [scarlet]Gegnerische Basis
sectors.vulnerable = [scarlet]Angriffsgefährdet sectors.vulnerable = [scarlet]Angriffsgefährdet
@@ -746,7 +746,7 @@ stat.drillspeed = Bohrgeschwindigkeit
stat.boosteffect = Verstärkungseffekt stat.boosteffect = Verstärkungseffekt
stat.maxunits = Max. aktive Einheiten stat.maxunits = Max. aktive Einheiten
stat.health = Lebenspunkte stat.health = Lebenspunkte
stat.armor = Armor stat.armor = Rüstung
stat.buildtime = Baudauer stat.buildtime = Baudauer
stat.maxconsecutive = Max. Konsekutive stat.maxconsecutive = Max. Konsekutive
stat.buildcost = Baukosten stat.buildcost = Baukosten
@@ -821,7 +821,7 @@ bullet.damage = [stat]{0}[lightgray] Schaden
bullet.splashdamage = [stat]{0}[lightgray] Flächenschaden ~[stat] {1}[lightgray] Kacheln bullet.splashdamage = [stat]{0}[lightgray] Flächenschaden ~[stat] {1}[lightgray] Kacheln
bullet.incendiary = [stat]entzündend bullet.incendiary = [stat]entzündend
bullet.homing = [stat]zielsuchend bullet.homing = [stat]zielsuchend
bullet.frags = [stat]{0}[lightgray]x frag bullets: bullet.frags = [stat]{0}[lightgray]x Splittergeschosse:
bullet.lightning = [stat]{0}[lightgray]x Blitz ~ [stat]{1}[lightgray] Schaden bullet.lightning = [stat]{0}[lightgray]x Blitz ~ [stat]{1}[lightgray] Schaden
bullet.buildingdamage = [stat]{0}%[lightgray]Blockschaden bullet.buildingdamage = [stat]{0}%[lightgray]Blockschaden
bullet.knockback = [stat]{0}[lightgray] zurückstoßend bullet.knockback = [stat]{0}[lightgray] zurückstoßend
@@ -860,7 +860,7 @@ category.items = Materialien
category.crafting = Erzeugung category.crafting = Erzeugung
category.function = Funktion category.function = Funktion
category.optional = Optionale Zusätze category.optional = Optionale Zusätze
setting.skipcoreanimation.name = Skip Core Launch/Land Animation setting.skipcoreanimation.name = Kern Start- und Lande-Animation überspringen
setting.landscape.name = Landschaft sperren setting.landscape.name = Landschaft sperren
setting.shadows.name = Schatten setting.shadows.name = Schatten
setting.blockreplace.name = Automatische Blockvorschläge setting.blockreplace.name = Automatische Blockvorschläge
@@ -1231,8 +1231,8 @@ block.door-large.name = Großes Tor
block.duo.name = Doppelgeschütz block.duo.name = Doppelgeschütz
block.scorch.name = Scatter block.scorch.name = Scatter
block.scatter.name = Luftgeschütz block.scatter.name = Luftgeschütz
block.hail.name = Hail block.hail.name = Hagel
block.lancer.name = Lancer block.lancer.name = Lancier
block.conveyor.name = Förderband block.conveyor.name = Förderband
block.titanium-conveyor.name = Titan-Förderband block.titanium-conveyor.name = Titan-Förderband
block.plastanium-conveyor.name = Plastanium-Förderband block.plastanium-conveyor.name = Plastanium-Förderband

View File

@@ -1223,7 +1223,7 @@ block.titanium-wall.name = Muro de Titanio
block.titanium-wall-large.name = Muro de Titanio grande block.titanium-wall-large.name = Muro de Titanio grande
block.plastanium-wall.name = Muro de Plastanio block.plastanium-wall.name = Muro de Plastanio
block.plastanium-wall-large.name = Muro de Plastanio grande block.plastanium-wall-large.name = Muro de Plastanio grande
block.phase-wall.name = Muro de Fase grande block.phase-wall.name = Muro de Fase
block.phase-wall-large.name = Muro de Fase grande block.phase-wall-large.name = Muro de Fase grande
block.thorium-wall.name = Muro de Torio block.thorium-wall.name = Muro de Torio
block.thorium-wall-large.name = Muro de Torio grande block.thorium-wall-large.name = Muro de Torio grande

View File

@@ -20,11 +20,11 @@ screenshot.invalid = Masiyadong malaki ang mapa; maaaring kulang ang memory para
gameover = Tapos Na Ang Laro gameover = Tapos Na Ang Laro
gameover.disconnect = Disconnect gameover.disconnect = Disconnect
gameover.pvp = Ang[accent] {0}[] team ay nanalo! gameover.pvp = Ang[accent] {0}[] team ay nanalo!
gameover.waiting = [accent]Waiting for next map... gameover.waiting = [accent]Hintayin ang bagong map...
highscore = [accent]Panibagong mataas na Iskor! highscore = [accent]Panibagong mataas na Iskor!
copied = Kinopya. copied = Kinopya.
indev.notready = This part of the game isn't ready yet indev.notready = Ang bahaging ito ng laro ay hindi pa handa
indev.campaign = [accent]Congratulations! You've reached the end of the campaign![]\n\nThis is as far as the content goes right now. Interplanetary travel will be added in future updates. indev.campaign = [accent]Congratulations! Natapos Mo Na Ang Campaign![]\n\nHanggang dito na lang ang nilalaman ngayon. Interplanetary travel ay idadagdag sa hinaharap na mga updates.
load.sound = Mga Tunog load.sound = Mga Tunog
load.map = Mga Mapa load.map = Mga Mapa
@@ -65,19 +65,19 @@ schematic.saved = Na-i-adya na ang schematic.
schematic.delete.confirm = Ang schematic na'to ay tuluyang mawawala. schematic.delete.confirm = Ang schematic na'to ay tuluyang mawawala.
schematic.rename = Palitan Ang Pangalan ng Schematic schematic.rename = Palitan Ang Pangalan ng Schematic
schematic.info = {0}x{1}, {2} blocks schematic.info = {0}x{1}, {2} blocks
schematic.disabled = [scarlet]Schematics disabled[]\nYou are not allowed to use schematics on this [accent]map[] or [accent]server. schematic.disabled = [scarlet]Schematics disabled[]\nBawal Ka Gumamit Nang Schematics Sa Itong [accent]map[] or [accent]server.
schematic.tags = Tags: schematic.tags = Tags:
schematic.edittags = Edit Tags schematic.edittags = Edit Tags
schematic.addtag = Add Tag schematic.addtag = Mag Add Nang Tag
schematic.texttag = Text Tag schematic.texttag = Text Tag
schematic.icontag = Icon Tag schematic.icontag = Icon Tag
schematic.renametag = Rename Tag schematic.renametag = Rename Tag
schematic.tagdelconfirm = Delete this tag completely? schematic.tagdelconfirm = I-delete itong tag?
schematic.tagexists = That tag already exists. schematic.tagexists = Meron na itong tag na ganito.
stats = Stats stats = Stats
stat.wave = Wave na Nalagpasan:[accent] {0} stat.wave = Wave na Nalagpasan:[accent] {0}
stat.unitsCreated = Units Created:[accent] {0} stat.unitsCreated = Nagawang Units:[accent] {0}
stat.enemiesDestroyed = Tinalong Kalaban:[accent] {0} stat.enemiesDestroyed = Tinalong Kalaban:[accent] {0}
stat.built = Gusaling Itinayo:[accent] {0} stat.built = Gusaling Itinayo:[accent] {0}
stat.destroyed = Gusaling Nawasak:[accent] {0} stat.destroyed = Gusaling Nawasak:[accent] {0}
@@ -90,17 +90,17 @@ level.highscore = Pinakamataas na Iskor: [accent]{0}
level.select = Mamili ng Lebel level.select = Mamili ng Lebel
level.mode = Paraan ng Paglalaro: level.mode = Paraan ng Paglalaro:
coreattack = < Ang core ay inaatake! > coreattack = < Ang core ay inaatake! >
nearpoint = [[ [scarlet]UMALIS KAAGAD SA DROP POINT[] ]\nmalapit ka nang mamatay nearpoint = [[ [scarlet]UMALIS KAAGAD SA DROP POINT[] ]\nikaw ay mamamatay
database = Database ng Core database = Database ng Core
database.button = Database database.button = Database
savegame = I-adya ang Laro savegame = I-save ang Laro
loadgame = Load Game loadgame = I-Load Game
joingame = Sumali sa Laro joingame = Sumali nang Laro
customgame = Kustom na Laro customgame = Kustom na Laro
newgame = Bagong Laro newgame = Bagong Laro
none = <wala> none = <wala>
none.found = [lightgray]<none found> none.found = [lightgray]<walang nahanap>
none.inmap = [lightgray]<none in map> none.inmap = [lightgray]<wala sa map>
minimap = Minimap minimap = Minimap
position = Posisyon position = Posisyon
close = Isara close = Isara
@@ -120,7 +120,7 @@ uploadingpreviewfile = Ini-a-upload ang Preview File
committingchanges = Gumagawa ng mga Pagbabago committingchanges = Gumagawa ng mga Pagbabago
done = Tapos Na done = Tapos Na
feature.unsupported = Hindi suportado ng 'yong device ang feature na'to. feature.unsupported = Hindi suportado ng 'yong device ang feature na'to.
mods.initfailed = [red]⚠[] The previous Mindustry instance failed to initialize. This was likely caused by misbehaving mods.\n\nTo prevent a crash loop, [red]all mods have been disabled.[] mods.initfailed = [red]⚠[] Nabigong masimulan ang nakaraang instance ng Mindustry. Malamang na sanhi ito ng maling pagkilos ng mga mod.\n\nTo prevent a crash loop, [red]all mods have been disabled.[]
mods = Mga Mod mods = Mga Mod
mods.none = [lightgray]Walang mga mod na nahanap! mods.none = [lightgray]Walang mga mod na nahanap!
mods.guide = Gabay para sa Paggawa ng Mod mods.guide = Gabay para sa Paggawa ng Mod
@@ -160,14 +160,14 @@ mod.folder.missing = Tanging mga mod lang nasa loob ng folder ay maaaring ma-ila
mod.scripts.disable = Your device does not support mods with scripts. You must disable these mods to play the game. mod.scripts.disable = Your device does not support mods with scripts. You must disable these mods to play the game.
about.button = About about.button = About
name = Name: name = Pangalan:
noname = Pick a[accent] player name[] first. noname = Pumili ng[accent] Pangalan[] muna.
planetmap = Planet Map planetmap = Planet Map
launchcore = Launch Core launchcore = I-Launch Ang Core
filename = File Name: filename = File Name:
unlocked = New content unlocked! unlocked = Bagong content naka-unlock!
available = New research available! available = Bagong research available!
unlock.incampaign = < Unlock in campaign for details > unlock.incampaign = < I-unlock sa campaign para sa detalye >
completed = [accent]Completed completed = [accent]Completed
techtree = Tech Tree techtree = Tech Tree
research.legacy = [accent]5.0[] research data found.\nDo you want to [accent]load this data[], or [accent]discard it[] and restart research in the new campaign (recommended)? research.legacy = [accent]5.0[] research data found.\nDo you want to [accent]load this data[], or [accent]discard it[] and restart research in the new campaign (recommended)?
@@ -180,29 +180,29 @@ research.progress = {0}% complete
players = {0} players players = {0} players
players.single = {0} player players.single = {0} player
players.search = search players.search = search
players.notfound = [gray]no players found players.notfound = [gray]walang nahanap na players
server.closing = [accent]Closing server... server.closing = [accent]Sinasarado ang server...
server.kicked.kick = You have been kicked from the server! server.kicked.kick = Sinipa ka sa server!
server.kicked.whitelist = You are not whitelisted here. server.kicked.whitelist = Hindi ka naka whitelist.
server.kicked.serverClose = Server closed. server.kicked.serverClose = Server closed .
server.kicked.vote = You have been vote-kicked. Goodbye. server.kicked.vote = Na-vote-kick ka. Paalam.
server.kicked.clientOutdated = Outdated client! Update your game! server.kicked.clientOutdated = Outdated client! I-Update yung laro mo!
server.kicked.serverOutdated = Outdated server! Ask the host to update! server.kicked.serverOutdated = Outdated server! Hilingin sa host na mag-update!
server.kicked.banned = You are banned on this server. server.kicked.banned = Ikaw ay pinagbawalan sa server na ito.
server.kicked.typeMismatch = This server is not compatible with your build type. server.kicked.typeMismatch = Ang server na ito ay hindi tugma sa iyong uri ng build.
server.kicked.playerLimit = This server is full. Wait for an empty slot. server.kicked.playerLimit = Puno na ang server na ito. maghintay ng libreng slot.
server.kicked.recentKick = You have been kicked recently.\nWait before connecting again. server.kicked.recentKick = na-kick ka recently.\nMaghintay bago kumonekta muli.
server.kicked.nameInUse = There is someone with that name\nalready on this server. server.kicked.nameInUse = May ganyang pangalan\nsa server na ito.
server.kicked.nameEmpty = Your chosen name is invalid. server.kicked.nameEmpty = Invalid ang pangalan mo.
server.kicked.idInUse = You are already on this server! Connecting with two accounts is not permitted. server.kicked.idInUse = Nandito kana sa server, bawal mag-join gamit nang dalawan accounts.
server.kicked.customClient = This server does not support custom builds. Download an official version. server.kicked.customClient = Hindi sinusuportahan ng server na ito ang mga custom na build. Mag-download ng opisyal na bersyon.
server.kicked.gameover = Game over! server.kicked.gameover = Game over!
server.kicked.serverRestarting = The server is restarting. server.kicked.serverRestarting = Nag rerestart ang server.
server.versions = Your version:[accent] {0}[]\nServer version:[accent] {1}[] server.versions = Your version:[accent] {0}[]\nServer version:[accent] {1}[]
host.info = The [accent]host[] button hosts a server on port [scarlet]6567[]. \nAnybody on the same [lightgray]wifi or local network[] should be able to see your server in their server list.\n\nIf you want people to be able to connect from anywhere by IP, [accent]port forwarding[] is required.\n\n[lightgray]Note: If someone is experiencing trouble connecting to your LAN game, make sure you have allowed Mindustry access to your local network in your firewall settings. Note that public networks sometimes do not allow server discovery. host.info = The [accent]host[] button hosts a server on port [scarlet]6567[]. \nAnybody on the same [lightgray]wifi or local network[] should be able to see your server in their server list.\n\nIf you want people to be able to connect from anywhere by IP, [accent]port forwarding[] is required.\n\n[lightgray]Note: If someone is experiencing trouble connecting to your LAN game, make sure you have allowed Mindustry access to your local network in your firewall settings. Note that public networks sometimes do not allow server discovery.
join.info = Here, you can enter a [accent]server IP[] to connect to, or discover [accent]local network[] or [accent]global[] servers to connect to.\nBoth LAN and WAN multiplayer is supported.\n\n[lightgray]If you want to connect to someone by IP, you would need to ask the host for their IP, which can be found by googling "my ip" from their device. join.info = Dito, maaari mong ipasok ang isang [accent]server IP[] para ikonekta, o pag diskubre ng [accent]local network[] or [accent]global[] servers pwedeng konektahin.\nBoth LAN and WAN multiplayer is supported.\n\n[lightgray]If you want to connect to someone by IP, you would need to ask the host for their IP, which can be found by googling "my ip" from their device.
hostserver = Host Multiplayer Game hostserver = Host Multiplayer Game
invitefriends = Invite Friends invitefriends = Mag-imbita ng mga kaibigan
hostserver.mobile = Host\nGame hostserver.mobile = Host\nGame
host = Host host = Host
hosting = [accent]Opening server... hosting = [accent]Opening server...
@@ -210,44 +210,44 @@ hosts.refresh = Refresh
hosts.discovering = Discovering LAN games hosts.discovering = Discovering LAN games
hosts.discovering.any = Discovering games hosts.discovering.any = Discovering games
server.refreshing = Refreshing server server.refreshing = Refreshing server
hosts.none = [lightgray]No local games found! hosts.none = [lightgray]walang nahanap na local games!
host.invalid = [scarlet]Can't connect to host. host.invalid = [scarlet]Can't connect to host.
servers.local = Local Servers servers.local = Local Servers
servers.local.steam = Open Games & Local Servers servers.local.steam = Open Games & Local Servers
servers.remote = Remote Servers servers.remote = Remote Servers
servers.global = Community Servers servers.global = Community Servers
servers.disclaimer = Community servers are [accent]not[] owned or controlled by the developer.\n\nServers may contain user-generated content that is not appropriate for all ages. servers.disclaimer = Ang mga server ng komunidad ay [accent]hindi pagmamay-ari o kinokontrol[] ng developer.\n\nServers may contain user-generated content that is not appropriate for all ages.
servers.showhidden = Show Hidden Servers servers.showhidden = Show Hidden Servers
server.shown = Shown server.shown = Shown
server.hidden = Hidden server.hidden = Hidden
trace = Trace Player trace = Trace Player
trace.playername = Player name: [accent]{0} trace.playername = Pangalan ng Player: [accent]{0}
trace.ip = IP: [accent]{0} trace.ip = IP: [accent]{0}
trace.id = Unique ID: [accent]{0} trace.id = Unique ID: [accent]{0}
trace.mobile = Mobile Client: [accent]{0} trace.mobile = Mobile Client: [accent]{0}
trace.modclient = Custom Client: [accent]{0} trace.modclient = Custom Client: [accent]{0}
trace.times.joined = Times Joined: [accent]{0} trace.times.joined = Times Joined: [accent]{0}
trace.times.kicked = Times Kicked: [accent]{0} trace.times.kicked = Times Kicked: [accent]{0}
invalidid = Invalid client ID! Submit a bug report. invalidid = Di-wastong client ID! Magsumite ng ulat ng bug.
server.bans = Bans server.bans = Bans
server.bans.none = No banned players found! server.bans.none = walang nahanap na banned players!
server.admins = Admins server.admins = Admins
server.admins.none = No admins found! server.admins.none = walang nahnap na admin!
server.add = Add Server server.add = Add Server
server.delete = Are you sure you want to delete this server? server.delete = Sigurado ka bang gusto mong tanggalin ang server na ito?
server.edit = Edit Server server.edit = Edit Server
server.outdated = [scarlet]Outdated Server![] server.outdated = [scarlet]Outdated Server![]
server.outdated.client = [scarlet]Outdated Client![] server.outdated.client = [scarlet]Outdated Client![]
server.version = [gray]v{0} {1} server.version = [gray]v{0} {1}
server.custombuild = [accent]Custom Build server.custombuild = [accent]Custom Build
confirmban = Are you sure you want to ban "{0}[white]"? confirmban = Sigurado ka bang gusto mong i-ban si "{0}[white]"?
confirmkick = Are you sure you want to kick "{0}[white]"? confirmkick = Sigurado ka bang gusto mong i-kick si "{0}[white]"?
confirmvotekick = Are you sure you want to vote-kick "{0}[white]"? confirmvotekick = Sigurado ka bang gusto mong i-vote-kick si "{0}[white]"?
confirmunban = Are you sure you want to unban this player? confirmunban = Sigurado kabang i-unban ang player?
confirmadmin = Are you sure you want to make "{0}[white]" an admin? confirmadmin = Sigurado ka bang gusto mong gawin si "{0}[white]" isang admin?
confirmunadmin = Are you sure you want to remove admin status from "{0}[white]"? confirmunadmin = Sigurado kabang i-remove ang admin mula "{0}[white]"?
joingame.title = Join Game joingame.title = Join Game
joingame.ip = Address: joingame.ip = Address:
disconnect = Disconnected. disconnect = Disconnected.
@@ -263,29 +263,29 @@ server.port = Port:
server.addressinuse = Address already in use! server.addressinuse = Address already in use!
server.invalidport = Invalid port number! server.invalidport = Invalid port number!
server.error = [scarlet]Error hosting server. server.error = [scarlet]Error hosting server.
save.new = New Save save.new = Bagong Save
save.overwrite = Are you sure you want to overwrite\nthis save slot? save.overwrite = Sigurado ka bang gusto mong i-overwrite ang save slot na ito?
overwrite = Overwrite overwrite = Overwrite
save.none = No saves found! save.none = Walang nahanap na save!
savefail = Failed to save game! savefail = Hindi na save ang game!
save.delete.confirm = Are you sure you want to delete this save? save.delete.confirm = Sigurado ka bang gusto mo i delete intong save?
save.delete = Delete save.delete = Delete
save.export = Export Save save.export = Export Save
save.import.invalid = [accent]This save is invalid! save.import.invalid = [accent]Hindi valid ang intong save!
save.import.fail = [scarlet]Failed to import save: [accent]{0} save.import.fail = [scarlet]Failed to import save: [accent]{0}
save.export.fail = [scarlet]Failed to export save: [accent]{0} save.export.fail = [scarlet]Failed to export save: [accent]{0}
save.import = Import Save save.import = Import Save
save.newslot = Save name: save.newslot = Save name:
save.rename = Rename save.rename = Rename
save.rename.text = New name: save.rename.text = New name:
selectslot = Select a save. selectslot = Pumili ng save.
slot = [accent]Slot {0} slot = [accent]Slot {0}
editmessage = Edit Message editmessage = I-edit Message
save.corrupted = Save file corrupted or invalid! save.corrupted = Sira o corrupt ang itong save.
empty = <empty> empty = <empty>
on = On on = On
off = Off off = Off
save.search = Search saved games... save.search = I-Search ang mga saved games...
save.autosave = Autosave: {0} save.autosave = Autosave: {0}
save.map = Map: {0} save.map = Map: {0}
save.wave = Wave {0} save.wave = Wave {0}
@@ -295,86 +295,86 @@ save.playtime = Playtime: {0}
warning = Warning. warning = Warning.
confirm = Confirm confirm = Confirm
delete = Delete delete = Delete
view.workshop = View In Workshop view.workshop = Tingnan Sa Workshop
workshop.listing = Edit Workshop Listing workshop.listing = I-edit ang Listahan sa Workshop
ok = OK ok = OK
open = Open open = Open
customize = Customize Rules customize = I-customize ang Mga Panuntunan
cancel = Cancel cancel = Cancel
openlink = Open Link openlink = Open Link
copylink = Copy Link copylink = Copy Link
back = Back back = Back
max = Max max = Max
crash.export = Export Crash Logs crash.export = I-Export Crash Logs
crash.none = No crash logs found. crash.none = Walang nahanap na crash logs.
crash.exported = Crash logs exported. crash.exported = Na-export ang mga crash log.
data.export = Export Data data.export = Export Data
data.import = Import Data data.import = Import Data
data.openfolder = Open Data Folder data.openfolder = Buksan ang Data Folder
data.exported = Data exported. data.exported = Data exported.
data.invalid = This isn't valid game data. data.invalid = Hindi ito wastong data.
data.import.confirm = Importing external data will overwrite[scarlet] all[] your current game data.\n[accent]This cannot be undone![]\n\nOnce the data is imported, your game will exit immediately. data.import.confirm = Importing external data will overwrite[scarlet] all[] your current game data.\n[accent]This cannot be undone![]\n\nOnce the data is imported, your game will exit immediately.
quit.confirm = Are you sure you want to quit? quit.confirm = Sigurado ka bang gusto mong mag quit?
loading = [accent]Loading... loading = [accent]Loading...
downloading = [accent]Downloading... downloading = [accent]Downloading...
saving = [accent]Saving... saving = [accent]Saving...
respawn = [accent][[{0}][] to respawn in core respawn = [accent][[{0}][] upang mag respawn sa core
cancelbuilding = [accent][[{0}][] to clear plan cancelbuilding = [accent][[{0}][] para malinawan ang plano
selectschematic = [accent][[{0}][] to select+copy selectschematic = [accent][[{0}][] to select+copy
pausebuilding = [accent][[{0}][] to pause building pausebuilding = [accent][[{0}][] upang i-pause ang pag-build
resumebuilding = [scarlet][[{0}][] to resume building resumebuilding = [scarlet][[{0}][] upang ipagpatuloy ang pag-build
enablebuilding = [scarlet][[{0}][] to enable building enablebuilding = [scarlet][[{0}][] upang paganahin ang pag-build
showui = UI hidden.\nPress [accent][[{0}][] to show UI. showui = UI hidden.\nPress [accent][[{0}][] to show UI.
wave = [accent]Wave {0} wave = [accent]Wave {0}
wave.cap = [accent]Wave {0}/{1} wave.cap = [accent]Wave {0}/{1}
wave.waiting = [lightgray]Wave in {0} wave.waiting = [lightgray]Wave in {0}
wave.waveInProgress = [lightgray]Wave in progress wave.waveInProgress = [lightgray]Wave in progress
waiting = [lightgray]Waiting... waiting = [lightgray]Naghihintay...
waiting.players = Waiting for players... waiting.players = Naghihintay sa mga manlalaro...
wave.enemies = [lightgray]{0} Enemies Remaining wave.enemies = [lightgray]{0} Mga Natitirang Kaaway
wave.enemycores = [accent]{0}[lightgray] Enemy Cores wave.enemycores = [accent]{0}[lightgray] Enemy Cores
wave.enemycore = [accent]{0}[lightgray] Enemy Core wave.enemycore = [accent]{0}[lightgray] Enemy Core
wave.enemy = [lightgray]{0} Enemy Remaining wave.enemy = [lightgray]{0} Natitirang Kaaway
wave.guardianwarn = Guardian approaching in [accent]{0}[] waves. wave.guardianwarn = Guardian approaching in [accent]{0}[] waves.
wave.guardianwarn.one = Guardian approaching in [accent]{0}[] wave. wave.guardianwarn.one = Guardian approaching in [accent]{0}[] wave.
loadimage = Load Image loadimage = I-Load Image
saveimage = Save Image saveimage = I-Save Image
unknown = Unknown unknown = Unknown
custom = Custom custom = Custom
builtin = Built-In builtin = Built-In
map.delete.confirm = Are you sure you want to delete this map? This action cannot be undone! map.delete.confirm = Sigurado ka bang gusto mong tanggalin ang mapang ito? Ang gawaing ito ay hindi pwedeng baguhin!
map.random = [accent]Random Map map.random = [accent]Random Map
map.nospawn = This map does not have any cores for the player to spawn in! Add a[accent] orange[] core to this map in the editor. map.nospawn = Ang mapa na ito ay walang anumang mga core para sa player upang i-spawn in! Add a[accent] orange[] core to this map in the editor.
map.nospawn.pvp = This map does not have any enemy cores for player to spawn into! Add[scarlet] non-orange[] cores to this map in the editor. map.nospawn.pvp = Ang mapa na ito ay walang anumang mga core ng kaaway para sa player upang i-spawn! Add[scarlet] non-orange[] cores to this map in the editor.
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[scarlet] red[] cores to this map in the editor. map.nospawn.attack = Ang mapa na ito ay walang anumang mga core ng kaaway para sa pag-atake ng manlalaro! Add[scarlet] red[] cores to this map in the editor.
map.invalid = Error loading map: corrupted or invalid map file. map.invalid = Error loading map: corrupted o sira na map file.
workshop.update = Update Item workshop.update = Update Item
workshop.error = Error fetching workshop details: {0} workshop.error = Error sa pagkuha ng mga detalye ng workshop: {0}
map.publish.confirm = Are you sure you want to publish this map?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your maps will not show up! map.publish.confirm = Sigurado ka bang gusto mong i-publish ang mapang ito?\n\n[lightgray]Tiyaking sumasang-ayon ka muna sa Workshop EULA, o hindi lalabas ang iyong mga mapa!
workshop.menu = Select what you would like to do with this item. workshop.menu = Select what you would like to do with this item.
workshop.info = Item Info workshop.info = Item Info
changelog = Changelog (optional): changelog = Changelog (optional):
eula = Steam EULA eula = Steam EULA
missing = This item has been deleted or moved.\n[lightgray]The workshop listing has now been automatically un-linked. missing = Na-delete or na-remove and item na to.\n[lightgray]Awtomatikong na-unlink na ang listahan sa workshop.
publishing = [accent]Publishing... publishing = [accent]Publishing...
publish.confirm = Are you sure you want to publish this?\n\n[lightgray]Make sure you agree to the Workshop EULA first, or your items will not show up! publish.confirm = Sigurado ka bang gusto mong i-publish ang mapang ito?\n\n[lightgray]Tiyaking sumasang-ayon ka muna sa Workshop EULA, o hindi lalabas ang iyong mga items!
publish.error = Error publishing item: {0} publish.error = Error publishing item: {0}
steam.error = Failed to initialize Steam services.\nError: {0} steam.error = Failed to initialize Steam services.\nError: {0}
editor.cliffs = Walls To Cliffs editor.cliffs = Walls To Cliffs
editor.brush = Brush editor.brush = Brush
editor.openin = Open In Editor editor.openin = I-Open sa Editor
editor.oregen = Ore Generation editor.oregen = Ore Generation
editor.oregen.info = Ore Generation: editor.oregen.info = Ore Generation:
editor.mapinfo = Map Info editor.mapinfo = Map Info
editor.author = Author: editor.author = Author:
editor.description = Description: editor.description = Description:
editor.nodescription = A map must have a description of at least 4 characters before being published. editor.nodescription = Dapat meron paglalarawan ng hindi bababa sa 4 na character bago i-publish.
editor.waves = Waves: editor.waves = Waves:
editor.rules = Rules: editor.rules = Rules:
editor.generation = Generation: editor.generation = Generation:
editor.ingame = Edit In-Game editor.ingame = Edit In-Game
editor.publish.workshop = Publish On Workshop editor.publish.workshop = I-Publish Sa Workshop
editor.newmap = New Map editor.newmap = New Map
editor.center = Center editor.center = Center
editor.search = Search maps... editor.search = Search maps...
@@ -383,7 +383,7 @@ editor.filters.mode = Gamemodes:
editor.filters.type = Map Type: editor.filters.type = Map Type:
editor.filters.search = Search In: editor.filters.search = Search In:
editor.filters.author = Author editor.filters.author = Author
editor.filters.description = Description editor.filters.description = Deskripsyon
workshop = Workshop workshop = Workshop
waves.title = Waves waves.title = Waves
waves.remove = Remove waves.remove = Remove
@@ -396,18 +396,18 @@ waves.max = max units
waves.guardian = Guardian waves.guardian = Guardian
waves.preview = Preview waves.preview = Preview
waves.edit = Edit... waves.edit = Edit...
waves.copy = Copy to Clipboard waves.copy = I-Copy to Clipboard
waves.load = Load from Clipboard waves.load = I-Load mula sa Clipboard
waves.invalid = Invalid waves in clipboard. waves.invalid = Invalid waves in clipboard.
waves.copied = Waves copied. waves.copied = Waves copied.
waves.none = No enemies defined.\nNote that empty wave layouts will automatically be replaced with the default layout. waves.none = Walang tinukoy na mga kaaway.\nTandaan na ang mga walang laman na wave layout ay awtomatikong papalitan ng default na layout.
waves.sort = Sort By waves.sort = Sort By
waves.sort.reverse = Reverse Sort waves.sort.reverse = Reverse Sort
waves.sort.begin = Begin waves.sort.begin = Begin
waves.sort.health = Health waves.sort.health = Health
waves.sort.type = Type waves.sort.type = Type
waves.units.hide = Hide All waves.units.hide = Itago lahat
waves.units.show = Show All waves.units.show = Ipakita lahat
wavemode.counts = counts wavemode.counts = counts
wavemode.totals = totals wavemode.totals = totals
@@ -421,13 +421,13 @@ editor.name = Name:
editor.spawn = Spawn Unit editor.spawn = Spawn Unit
editor.removeunit = Remove Unit editor.removeunit = Remove Unit
editor.teams = Teams editor.teams = Teams
editor.errorload = Error loading file. editor.errorload = Error sa paglo-load ng file.
editor.errorsave = Error saving file. editor.errorsave = Error sa pag-save ng file.
editor.errorimage = That's an image, not a map.\n\nIf you want to import a 3.5/build 40 map, use the 'Import Legacy Map' button in the editor. editor.errorimage = Iyon ay isang imahe, hindi isang mapa.\n\nKung gusto mong mag-import ng 3.5/build 40 na mapa, gamitin ang button na 'Import Legacy Map' sa editor.
editor.errorlegacy = This map is too old, and uses a legacy map format that is no longer supported. editor.errorlegacy = Masyadong luma ang mapang ito, at gumagamit ng legacy na format ng mapa na hindi na sinusuportahan.
editor.errornot = This is not a map file. editor.errornot = Ito ay hindi isang file ng mapa.
editor.errorheader = This map file is either not valid or corrupt. editor.errorheader = Ang file ng mapa na ito ay maaaring hindi wasto o sira.
editor.errorname = Map has no name defined. Are you trying to load a save file? editor.errorname = Walang tinukoy na pangalan ang mapa. Sinusubukan mo bang mag-load ng save file?
editor.update = Update editor.update = Update
editor.randomize = Randomize editor.randomize = Randomize
editor.apply = Apply editor.apply = Apply
@@ -436,37 +436,37 @@ editor.resize = Resize
editor.loadmap = Load Map editor.loadmap = Load Map
editor.savemap = Save Map editor.savemap = Save Map
editor.saved = Saved! editor.saved = Saved!
editor.save.noname = Your map does not have a name! Set one in the 'map info' menu. editor.save.noname = Walang pangalan ang iyong mapa! Itakda ang isa sa menu na 'impormasyon ng mapa'.
editor.save.overwrite = Your map overwrites a built-in map! Pick a different name in the 'map info' menu. editor.save.overwrite = Ino-overwrite ng iyong mapa ang isang built-in na mapa! Pumili ng ibang pangalan sa menu na 'impormasyon ng mapa'.
editor.import.exists = [scarlet]Unable to import:[] a built-in map named '{0}' already exists! editor.import.exists = [scarlet]Unable to import:[] a built-in map named '{0}' already exists!
editor.import = Import... editor.import = Import...
editor.importmap = Import Map editor.importmap = Import Map
editor.importmap.description = Import an already existing map editor.importmap.description = Mag-import ng umiiral nang mapa
editor.importfile = Import File editor.importfile = Import File
editor.importfile.description = Import an external map file editor.importfile.description = Mag-import ng panlabas na file ng mapa
editor.importimage = Import Image File editor.importimage = Mag-import ng File ng Larawan
editor.importimage.description = Import an external map image file editor.importimage.description = Mag-import ng panlabas na file ng imahe ng mapa
editor.export = Export... editor.export = Export...
editor.exportfile = Export File editor.exportfile = Export File
editor.exportfile.description = Export a map file editor.exportfile.description = Mag-Export nang map file
editor.exportimage = Export Terrain Image editor.exportimage = Export Terrain Image
editor.exportimage.description = Export an image file containing only basic terrain editor.exportimage.description = Mag-export ng image file na naglalaman lamang ng basic terrain
editor.loadimage = Import Terrain editor.loadimage = Import Terrain
editor.saveimage = Export Terrain editor.saveimage = Export Terrain
editor.unsaved = [scarlet]You have unsaved changes![]\nAre you sure you want to exit? editor.unsaved = [scarlet]You have unsaved changes![]\nSigurado ka bang gusto mong mag-exit?
editor.resizemap = Resize Map editor.resizemap = Resize Map
editor.mapname = Map Name: editor.mapname = Map Name:
editor.overwrite = [accent]Warning!\nThis overwrites an existing map. editor.overwrite = [accent]Warning!\nIno-overwrite nito ang isang existing na mapa.
editor.overwrite.confirm = [scarlet]Warning![] A map with this name already exists. Are you sure you want to overwrite it?\n"[accent]{0}[]" editor.overwrite.confirm = [scarlet]Warning![] Umiiral na ang isang mapa na may ganitong pangalan. Sigurado ka bang gusto mong i-overwrite ito?\n"[accent]{0}[]"
editor.exists = A map with this name already exists. editor.exists = Umiiral na ang isang mapa na may ganitong pangalan.
editor.selectmap = Select a map to load: editor.selectmap = Pumili ng mapa na ilo-load:
toolmode.replace = Replace toolmode.replace = Replace
toolmode.replace.description = Draws only on solid blocks. toolmode.replace.description = Gumuhit lamang sa mga solidong blocks.
toolmode.replaceall = Replace All toolmode.replaceall = Replace All
toolmode.replaceall.description = Replace all blocks in map. toolmode.replaceall.description = Palitan ang lahat ng mga blocks sa mapa.
toolmode.orthogonal = Orthogonal toolmode.orthogonal = Orthogonal
toolmode.orthogonal.description = Draws only orthogonal lines. toolmode.orthogonal.description = Gumuhit lamang ng mga orthogonal na linya.
toolmode.square = Square toolmode.square = Square
toolmode.square.description = Square brush. toolmode.square.description = Square brush.
toolmode.eraseores = Erase Ores toolmode.eraseores = Erase Ores
@@ -476,7 +476,7 @@ toolmode.fillteams.description = Fill teams instead of blocks.
toolmode.drawteams = Draw Teams toolmode.drawteams = Draw Teams
toolmode.drawteams.description = Draw teams instead of blocks. toolmode.drawteams.description = Draw teams instead of blocks.
filters.empty = [lightgray]No filters! Add one with the button below. filters.empty = [lightgray]Walang mga filter! Magdagdag ng isa gamit ang button sa ibaba.
filter.distort = Distort filter.distort = Distort
filter.noise = Noise filter.noise = Noise
filter.enemyspawn = Enemy Spawn Select filter.enemyspawn = Enemy Spawn Select
@@ -527,48 +527,48 @@ ping = Ping: {0}ms
tps = TPS: {0} tps = TPS: {0}
memory = Mem: {0}mb memory = Mem: {0}mb
memory2 = Mem:\n {0}mb +\n {1}mb memory2 = Mem:\n {0}mb +\n {1}mb
language.restart = Please restart your game for the language settings to take effect. language.restart = Mangyaring i-restart ang iyong laro para magkabisa ang mga setting ng wika.
settings = Settings settings = Settings
tutorial = Tutorial tutorial = Tutorial
tutorial.retake = Re-Take Tutorial tutorial.retake = Muling Kumuha ng Tutorial
editor = Editor editor = Editor
mapeditor = Map Editor mapeditor = Map Editor
abandon = Abandon abandon = Abandon
abandon.text = This zone and all its resources will be lost to the enemy. abandon.text = Ang zone na ito at ang lahat ng mga mapagkukunan nito ay mawawala sa kaaway.
locked = Locked locked = Locked
complete = [lightgray]Complete: complete = [lightgray]Complete:
requirement.wave = Reach Wave {0} in {1} requirement.wave = Reach Wave {0} in {1}
requirement.core = Destroy Enemy Core in {0} requirement.core = Wasakin ang Enemy Core sa {0}
requirement.research = Research {0} requirement.research = Research {0}
requirement.produce = Produce {0} requirement.produce = Produce {0}
requirement.capture = Capture {0} requirement.capture = Capture {0}
launch.text = Launch launch.text = Launch
research.multiplayer = Only the host can research items. research.multiplayer = Ang host lang ang makakapagsaliksik ng mga item.
map.multiplayer = Only the host can view sectors. map.multiplayer = Ang host lang ang makakatingin sa mga sektor.
uncover = Uncover uncover = Uncover
configure = Configure Loadout configure = I-Configure ang Loadout
loadout = Loadout loadout = Loadout
resources = Resources resources = Resources
bannedblocks = Banned Blocks bannedblocks = Mga Banned Blocks
bannedunits = Banned Units bannedunits = Mga Banned Units
addall = Add All addall = Add All
launch.from = Launching From: [accent]{0} launch.from = Launching From: [accent]{0}
launch.destination = Destination: {0} launch.destination = Destination: {0}
configure.invalid = Amount must be a number between 0 and {0}. configure.invalid = Ang halaga ay dapat na isang numero sa pagitan ng 0 at {0}.
add = Add... add = Add...
guardian = Guardian guardian = Guardian
connectfail = [scarlet]Connection error:\n\n[accent]{0} connectfail = [scarlet]Connection error:\n\n[accent]{0}
error.unreachable = Server unreachable.\nIs the address spelled correctly? error.unreachable = Server unreachable.\nTama ba ang spelling ng address?
error.invalidaddress = Invalid address. error.invalidaddress = Invalid address.
error.timedout = Timed out!\nMake sure the host has port forwarding set up, and that the address is correct! error.timedout = Timed out!\nTiyaking may naka-set up na port forwarding ang host, at tama ang address!
error.mismatch = Packet error:\npossible client/server version mismatch.\nMake sure you and the host have the latest version of Mindustry! error.mismatch = Packet error:\npossible client/server version mismatch.\nTiyaking mayroon ka at ang host ng pinakabagong bersyon ng Mindustry!
error.alreadyconnected = Already connected. error.alreadyconnected = Nakakonekta na.
error.mapnotfound = Map file not found! error.mapnotfound = Hindi nakita ang file ng mapa!
error.io = Network I/O error. error.io = Network I/O error.
error.any = Unknown network error. error.any = Unknown network error.
error.bloom = Failed to initialize bloom.\nYour device may not support it. error.bloom = Nabigong simulan ang bloom.\nMaaaring hindi ito sinusuportahan ng iyong device.
weather.rain.name = Rain weather.rain.name = Rain
weather.snow.name = Snow weather.snow.name = Snow
@@ -633,22 +633,22 @@ sector.planetaryTerminal.name = Planetary Launch Terminal
sector.coastline.name = Coastline sector.coastline.name = Coastline
sector.navalFortress.name = Naval Fortress sector.navalFortress.name = Naval Fortress
sector.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on. sector.groundZero.description = Ang pinakamainam na lokasyon upang magsimulang muli. Mababang banta ng kaaway. Kaunting mapagkukunan.\nMagtipon ng mas maraming tingga at tanso hangga't maaari.\nItuloy.
sector.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders. sector.frozenForest.description = Kahit dito, mas malapit sa mga bundok, ang mga spore ay kumalat. Ang napakalamig na temperatura ay hindi maaaring maglaman ng mga ito magpakailanman.\n\nSimulan ang pakikipagsapalaran sa kapangyarihan. Bumuo ng mga generator ng pagkasunog. Matutong gumamit ng mga mender.
sector.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing. sector.saltFlats.description = Sa labas ng disyerto ay matatagpuan ang Salt Flats. Ilang resource ang makikita sa lokasyong ito.\n\nNagtayo ang kaaway ng resource storage complex dito. Tanggalin ang kanilang core. Walang iwanan na nakatayo.
sector.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills. sector.craters.description = Ang tubig ay naipon sa bunganga na ito, relic ng mga lumang digmaan. Bawiin ang lugar. Mangolekta ng buhangin. Gumawa ng metaglass. Magbomba ng tubig upang palamig ang mga turret at drill.
sector.ruinousShores.description = Past the wastes, is the shoreline. Once, this location housed a coastal defense array. Not much of it remains. Only the most basic defense structures have remained unscathed, everything else reduced to scrap.\nContinue the expansion outwards. Rediscover the technology. sector.ruinousShores.description = Nakalipas ang mga basura, ay ang baybayin. Minsan, ang lokasyong ito ay mayroong hanay ng pagtatanggol sa baybayin. Hindi gaanong natitira. Tanging ang pinakapangunahing mga istruktura ng depensa ang nananatiling hindi nasaktan, lahat ng iba pa ay nabawasan sa scrap.\nIpagpatuloy ang pagpapalawak. Tuklasin muli ang teknolohiya.
sector.stainedMountains.description = Further inland lie the mountains, yet untainted by spores.\nExtract the abundant titanium in this area. Learn how to use it.\n\nThe enemy presence is greater here. Do not give them time to send their strongest units. sector.stainedMountains.description = Sa kabilang bahagi ng lupain ay matatagpuan ang mga bundok, ngunit hindi nababahiran ng mga spores.\nI-extract ang masaganang titanium sa lugar na ito. Alamin kung paano ito gamitin.\n\nMas malaki ang presensya ng kaaway dito. Huwag silang bigyan ng oras na ipadala ang kanilang pinakamalakas na unit.
sector.overgrowth.description = This area is overgrown, closer to the source of the spores.\nThe enemy has established an outpost here. Build Titan units. Destroy it. Reclaim that which was lost. sector.overgrowth.description = Ang lugar na ito ay tinutubuan, mas malapit sa pinagmumulan ng mga spores.\nNagtatag ang kalaban ng isang outpost dito. Bumuo ng mga yunit ng Titan. Sirain mo. Bawiin ang nawala.
sector.tarFields.description = The outskirts of an oil production zone, between the mountains and desert. One of the few areas with usable tar reserves.\nAlthough abandoned, this area has some dangerous enemy forces nearby. Do not underestimate them.\n\n[lightgray]Research oil processing technology if possible. sector.tarFields.description = Ang labas ng isang oil production zone, sa pagitan ng mga bundok at disyerto. Isa sa ilang lugar na may magagamit na reserbang tar.\nBagaman inabandona, ang lugar na ito ay may ilang mapanganib na pwersa ng kaaway sa malapit. Huwag maliitin ang mga ito.\n\n[lightgray]Magsaliksik ng teknolohiya sa pagproseso ng langis kung maaari.
sector.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. sector.desolateRift.description = Isang mapanganib na sona. Maraming mapagkukunan, ngunit maliit na espasyo. Mataas na panganib ng pagkasira. Umalis sa lalong madaling panahon. Huwag magpalinlang sa mahabang espasyo sa pagitan ng mga pag-atake ng kaaway.
sector.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. sector.nuclearComplex.description = Isang dating pasilidad para sa paggawa at pagpoproseso ng thorium, naging mga guho.\n[lightgray]Saliksikin ang thorium at ang maraming gamit nito.\n\nAng kaaway ay naroroon sa napakaraming bilang, patuloy na naghahanap ng mga umaatake.
sector.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. sector.fungalPass.description = Isang transition area sa pagitan ng matataas na bundok at mas mababang, spore-ridden na lupain. Matatagpuan dito ang isang maliit na base ng reconnaissance ng kaaway.\nSirain ito.\nGumamit ng mga unit ng Dagger at Crawler. Ilabas ang dalawang core.
sector.biomassFacility.description = The origin of spores. This is the facility in which they were researched and initially produced.\nResearch the technology contained within. Cultivate spores for the production of fuel and plastics.\n\n[lightgray]Upon this facility's demise, the spores were released. Nothing in the local ecosystem could compete with such an invasive organism. sector.biomassFacility.description = Ang pinagmulan ng mga spores. Ito ang pasilidad kung saan sila sinaliksik at unang ginawa.\nSaliksikin ang teknolohiyang nakapaloob sa loob. Linangin ang mga spores para sa paggawa ng gasolina at mga plastik.\n\n[lightgray]Sa pagkamatay ng pasilidad na ito, inilabas ang mga spores. Wala sa lokal na ecosystem ang maaaring makipagkumpitensya sa gayong invasive na organismo.
sector.windsweptIslands.description = Further past the shoreline is this remote chain of islands. Records show they once had [accent]Plastanium[]-producing structures.\n\nFend off the enemy's naval units. Establish a base on the islands. Research these factories. sector.windsweptIslands.description = Sa kabila ng baybayin ay ang malayong hanay ng mga isla. Ipinapakita ng mga rekord na minsan silang nagkaroon ng [accent]Plastanium[]-producing structures.\n\nTakasan ang mga yunit ng hukbong-dagat ng kalaban. Magtatag ng isang base sa mga isla. Magsaliksik sa mga pabrika na ito.
sector.extractionOutpost.description = A remote outpost, constructed by the enemy for the purpose of launching resources to other sectors.\n\nCross-sector transport technology is essential for further conquest. Destroy the base. Research their Launch Pads. sector.extractionOutpost.description = Isang malayong outpost, na itinayo ng kaaway para sa layunin ng paglulunsad ng mga mapagkukunan sa iba pang mga sektor.\n\nAng cross-sector transport technology ay mahalaga para sa karagdagang pananakop. Wasakin ang base. Magsaliksik sa kanilang mga Launch Pad.
sector.impact0078.description = Here lie remnants of the interstellar transport vessel that first entered this system.\n\nSalvage as much as possible from the wreckage. Research any intact technology. sector.impact0078.description = Dito nakalatag ang mga labi ng interstellar transport vessel na unang pumasok sa sistemang ito.\n\nSalvage hangga't maaari mula sa pagkawasak. Magsaliksik ng anumang buo na teknolohiya.
sector.planetaryTerminal.description = The final target.\n\nThis coastal base contains a structure capable of launching Cores to local planets. It is extremely well guarded.\n\nProduce naval units. Eliminate the enemy as quickly as possible. Research the launch structure. sector.planetaryTerminal.description = Ang huling target.\n\nAng coastal base na ito ay naglalaman ng isang istraktura na may kakayahang maglunsad ng mga Core sa mga lokal na planeta. Ito ay napakahusay na binabantayan.\n\nGumawa ng mga yunit ng hukbong-dagat. Tanggalin ang kalaban sa lalong madaling panahon. Magsaliksik sa istraktura ng paglulunsad.
status.burning.name = Burning status.burning.name = Burning
status.freezing.name = Freezing status.freezing.name = Freezing
status.wet.name = Wet status.wet.name = Wet
@@ -674,13 +674,13 @@ settings.controls = Controls
settings.game = Game settings.game = Game
settings.sound = Sound settings.sound = Sound
settings.graphics = Graphics settings.graphics = Graphics
settings.cleardata = Clear Game Data... settings.cleardata = I-Clear Game Data...
settings.clear.confirm = Are you sure you want to clear this data?\nWhat is done cannot be undone! settings.clear.confirm = Sigurado ka bang gusto mong i-clear ang data na ito?\nHindi na mababawi ang nagawa!
settings.clearall.confirm = [scarlet]WARNING![]\nThis will clear all data, including saves, maps, unlocks and keybinds.\nOnce you press 'ok' the game will wipe all data and automatically exit. settings.clearall.confirm = [scarlet]WARNING![]\nIki-clear nito ang lahat ng data, kabilang ang mga pag-save, mapa, pag-unlock at keybinds.\nKapag pinindot mo ang 'ok', ibubura ng laro ang lahat ng data at awtomatikong lalabas.
settings.clearsaves.confirm = Are you sure you want to clear all your saves? settings.clearsaves.confirm = Sigurado ka bang gusto mong i-clear ang lahat ng iyong saves?
settings.clearsaves = Clear Saves settings.clearsaves = Clear Saves
settings.clearresearch = Clear Research settings.clearresearch = Clear Research
settings.clearresearch.confirm = Are you sure you want to clear all of your campaign research? settings.clearresearch.confirm = Sigurado ka bang gusto mong i-clear ang lahat ng iyong campaign research?
settings.clearcampaignsaves = Clear Campaign Saves settings.clearcampaignsaves = Clear Campaign Saves
settings.clearcampaignsaves.confirm = Are you sure you want to clear all of your campaign saves? settings.clearcampaignsaves.confirm = Are you sure you want to clear all of your campaign saves?
paused = [accent]< Paused > paused = [accent]< Paused >
@@ -823,10 +823,10 @@ bullet.reload = [stat]{0}[lightgray]x fire rate
unit.blocks = blocks unit.blocks = blocks
unit.blockssquared = blocks² unit.blockssquared = blocks²
unit.powersecond = power units/second unit.powersecond = mga yunit ng kuryente/segundo
unit.tilessecond = tiles/second unit.tilessecond = tile/segundo
unit.liquidsecond = liquid units/second unit.liquidsecond = mga yunit ng likido/segundo
unit.itemssecond = items/second unit.itemssecond = aytem/segundo
unit.liquidunits = liquid units unit.liquidunits = liquid units
unit.powerunits = power units unit.powerunits = power units
unit.degrees = degrees unit.degrees = degrees
@@ -850,7 +850,7 @@ category.items = Items
category.crafting = Input/Output category.crafting = Input/Output
category.function = Function category.function = Function
category.optional = Optional Enhancements category.optional = Optional Enhancements
setting.skipcoreanimation.name = Skip Core Launch/Land Animation setting.skipcoreanimation.name = Laktawan ang Core Launch/Land Animation
setting.landscape.name = Lock Landscape setting.landscape.name = Lock Landscape
setting.shadows.name = Shadows setting.shadows.name = Shadows
setting.blockreplace.name = Automatic Block Suggestions setting.blockreplace.name = Automatic Block Suggestions
@@ -860,7 +860,7 @@ setting.logichints.name = Logic Hints
setting.backgroundpause.name = Pause In Background setting.backgroundpause.name = Pause In Background
setting.buildautopause.name = Auto-Pause Building setting.buildautopause.name = Auto-Pause Building
setting.doubletapmine.name = Double-Tap to Mine setting.doubletapmine.name = Double-Tap to Mine
setting.modcrashdisable.name = Disable Mods On Startup Crash setting.modcrashdisable.name = Huwag paganahin ang Mods Sa Startup Crash
setting.animatedwater.name = Animated Fluids setting.animatedwater.name = Animated Fluids
setting.animatedshields.name = Animated Shields setting.animatedshields.name = Animated Shields
setting.playerindicators.name = Player Indicators setting.playerindicators.name = Player Indicators
@@ -872,8 +872,8 @@ setting.fpscap.name = Max FPS
setting.fpscap.none = None setting.fpscap.none = None
setting.fpscap.text = {0} FPS setting.fpscap.text = {0} FPS
setting.uiscale.name = UI Scaling[lightgray] (restart required)[] setting.uiscale.name = UI Scaling[lightgray] (restart required)[]
setting.uiscale.description = Restart required to apply changes. setting.uiscale.description = Kinakailangan ang pag-restart upang mailapat ang mga pagbabago.
setting.swapdiagonal.name = Always Diagonal Placement setting.swapdiagonal.name = Palaging Diagonal na Placement
setting.difficulty.training = Training setting.difficulty.training = Training
setting.difficulty.easy = Easy setting.difficulty.easy = Easy
setting.difficulty.normal = Normal setting.difficulty.normal = Normal
@@ -881,10 +881,10 @@ setting.difficulty.hard = Hard
setting.difficulty.insane = Insane setting.difficulty.insane = Insane
setting.difficulty.name = Difficulty: setting.difficulty.name = Difficulty:
setting.screenshake.name = Screen Shake setting.screenshake.name = Screen Shake
setting.effects.name = Display Effects setting.effects.name = I-Display Effects
setting.destroyedblocks.name = Display Destroyed Blocks setting.destroyedblocks.name = Ipakita ang mga Nawasak na Block
setting.blockstatus.name = Display Block Status setting.blockstatus.name = I-Display Block Status
setting.conveyorpathfinding.name = Conveyor Placement Pathfinding setting.conveyorpathfinding.name = Pathfinding ng Conveyor Placement
setting.sensitivity.name = Controller Sensitivity setting.sensitivity.name = Controller Sensitivity
setting.saveinterval.name = Save Interval setting.saveinterval.name = Save Interval
setting.seconds = {0} seconds setting.seconds = {0} seconds
@@ -892,7 +892,7 @@ setting.milliseconds = {0} milliseconds
setting.fullscreen.name = Fullscreen setting.fullscreen.name = Fullscreen
setting.borderlesswindow.name = Borderless Window[lightgray] (restart may be required) setting.borderlesswindow.name = Borderless Window[lightgray] (restart may be required)
setting.borderlesswindow.name.windows = Borderless Fullscreen setting.borderlesswindow.name.windows = Borderless Fullscreen
setting.borderlesswindow.description = Restart may be required to apply changes. setting.borderlesswindow.description = Maaaring kailanganin ang pag-restart upang mailapat ang mga pagbabago.
setting.fps.name = Show FPS & Ping setting.fps.name = Show FPS & Ping
setting.smoothcamera.name = Smooth Camera setting.smoothcamera.name = Smooth Camera
setting.vsync.name = VSync setting.vsync.name = VSync
@@ -901,28 +901,28 @@ setting.minimap.name = Show Minimap
setting.coreitems.name = Display Core Items (WIP) setting.coreitems.name = Display Core Items (WIP)
setting.position.name = Show Player Position setting.position.name = Show Player Position
setting.musicvol.name = Music Volume setting.musicvol.name = Music Volume
setting.atmosphere.name = Show Planet Atmosphere setting.atmosphere.name = Ipakita Planet Atmosphere
setting.ambientvol.name = Ambient Volume setting.ambientvol.name = Ambient Volume
setting.mutemusic.name = Mute Music setting.mutemusic.name = Mute Music
setting.sfxvol.name = SFX Volume setting.sfxvol.name = SFX Volume
setting.mutesound.name = Mute Sound setting.mutesound.name = Mute Sound
setting.crashreport.name = Send Anonymous Crash Reports setting.crashreport.name = Mag-send ng Anonymous Crash Reports
setting.savecreate.name = Auto-Create Saves setting.savecreate.name = Auto-Create Saves
setting.publichost.name = Public Game Visibility setting.publichost.name = Public Game Visibility
setting.playerlimit.name = Player Limit setting.playerlimit.name = Player Limit
setting.chatopacity.name = Chat Opacity setting.chatopacity.name = Chat Opacity
setting.lasersopacity.name = Power Laser Opacity setting.lasersopacity.name = Power Laser Opacity
setting.bridgeopacity.name = Bridge Opacity setting.bridgeopacity.name = Bridge Opacity
setting.playerchat.name = Display Player Bubble Chat setting.playerchat.name = Ipakita Player Bubble Chat
setting.showweather.name = Show Weather Graphics setting.showweather.name = Show Weather Graphics
public.confirm = Do you want to make your game public?\n[accent]Anyone will be able to join your games.\n[lightgray]This can be changed later in Settings->Game->Public Game Visibility. public.confirm = Do you want to make your game public?\n[accent]Anyone will be able to join your games.\n[lightgray]This can be changed later in Settings->Game->Public Game Visibility.
public.confirm.really = If you want to play with friends, use [green]Invite Friend[] instead of a [scarlet]Public server[]!\nAre you sure you want to make your game [scarlet]public[]? public.confirm.really = If you want to play with friends, use [green]Invite Friend[] instead of a [scarlet]Public server[]!\nAre you sure you want to make your game [scarlet]public[]?
public.beta = Note that beta versions of the game cannot make public lobbies. public.beta = Tandaan na ang mga beta na bersyon ng laro ay hindi maaaring gumawa ng mga pampublikong lobby.
uiscale.reset = UI scale has been changed.\nPress "OK" to confirm this scale.\n[scarlet]Reverting and exiting in[accent] {0}[] seconds... uiscale.reset = Nabago ang sukat ng UI.\nPindutin ang "OK" upang kumpirmahin ang sukat na ito.\n[scarlet]Binabalik at lalabas sa loob ng[accent] {0}[] segundo...
uiscale.cancel = Cancel & Exit uiscale.cancel = I-Cancel & Exit
setting.bloom.name = Bloom setting.bloom.name = Bloom
keybind.title = Rebind Keys keybind.title = Rebind Keys
keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only basic movement is supported. keybinds.mobile = [scarlet]Karamihan sa mga keybinds dito ay hindi gumagana sa mobile. Ang pangunahing paggalaw lamang ang sinusuportahan.
category.general.name = General category.general.name = General
category.view.name = View category.view.name = View
category.multiplayer.name = Multiplayer category.multiplayer.name = Multiplayer
@@ -997,14 +997,14 @@ keybind.drop_unit.name = Drop Unit
keybind.zoom_minimap.name = Zoom Minimap keybind.zoom_minimap.name = Zoom Minimap
mode.help.title = Description of modes mode.help.title = Description of modes
mode.survival.name = Survival mode.survival.name = Survival
mode.survival.description = The normal mode. Limited resources and automatic incoming waves.\n[gray]Requires enemy spawns in the map to play. mode.survival.description = Ang normal na mode. Mga limitadong mapagkukunan at awtomatikong papasok na alon.\n[gray]Nangangailangan ng mga spawn ng kaaway sa mapa para maglaro.
mode.sandbox.name = Sandbox mode.sandbox.name = Sandbox
mode.sandbox.description = Infinite resources and no timer for waves. mode.sandbox.description = Maraming resources at walang timer nang waves.
mode.editor.name = Editor mode.editor.name = Editor
mode.pvp.name = PvP mode.pvp.name = PvP
mode.pvp.description = Fight against other players locally.\n[gray]Requires at least 2 differently-colored cores in the map to play. mode.pvp.description = Lumaban sa iba pang mga manlalaro nang lokal.\n[gray]Nangangailangan ng hindi bababa sa 2 magkakaibang kulay na mga core sa mapa upang maglaro.
mode.attack.name = Attack mode.attack.name = Attack
mode.attack.description = Destroy the enemy's base. \n[gray]Requires a red core in the map to play. mode.attack.description = Wasakin ang base ng kalaban. \n[gray]Nangangailangan ng pulang core sa mapa upang maglaro.
mode.custom = Custom Rules mode.custom = Custom Rules
rules.infiniteresources = Infinite Resources rules.infiniteresources = Infinite Resources
@@ -1145,9 +1145,9 @@ block.shrubs.name = Shrubs
block.spore-moss.name = Spore Moss block.spore-moss.name = Spore Moss
block.shale-wall.name = Shale Wall block.shale-wall.name = Shale Wall
block.scrap-wall.name = Scrap Wall block.scrap-wall.name = Scrap Wall
block.scrap-wall-large.name = Large Scrap Wall block.scrap-wall-large.name = Malaking Scrap Wall
block.scrap-wall-huge.name = Huge Scrap Wall block.scrap-wall-huge.name = Masmalaking Scrap Wall
block.scrap-wall-gigantic.name = Gigantic Scrap Wall block.scrap-wall-gigantic.name = Pinakamalaking Scrap Wall
block.thruster.name = Thruster block.thruster.name = Thruster
block.kiln.name = Kiln block.kiln.name = Kiln
block.graphite-press.name = Graphite Press block.graphite-press.name = Graphite Press
@@ -1205,17 +1205,17 @@ block.basalt.name = Basalt
block.hotrock.name = Hot Rock block.hotrock.name = Hot Rock
block.magmarock.name = Magma Rock block.magmarock.name = Magma Rock
block.copper-wall.name = Copper Wall block.copper-wall.name = Copper Wall
block.copper-wall-large.name = Large Copper Wall block.copper-wall-large.name = Malaking Copper Wall
block.titanium-wall.name = Titanium Wall block.titanium-wall.name = Titanium Wall
block.titanium-wall-large.name = Large Titanium Wall block.titanium-wall-large.name = Malaking Titanium Wall
block.plastanium-wall.name = Plastanium Wall block.plastanium-wall.name = Plastanium Wall
block.plastanium-wall-large.name = Large Plastanium Wall block.plastanium-wall-large.name = Malaking Plastanium Wall
block.phase-wall.name = Phase Wall block.phase-wall.name = Phase Wall
block.phase-wall-large.name = Large Phase Wall block.phase-wall-large.name = Malaking Phase Wall
block.thorium-wall.name = Thorium Wall block.thorium-wall.name = Thorium Wall
block.thorium-wall-large.name = Large Thorium Wall block.thorium-wall-large.name = Malaking Thorium Wall
block.door.name = Door block.door.name = Door
block.door-large.name = Large Door block.door-large.name = Malaking Door
block.duo.name = Duo block.duo.name = Duo
block.scorch.name = Scorch block.scorch.name = Scorch
block.scatter.name = Scatter block.scatter.name = Scatter
@@ -1244,11 +1244,11 @@ block.spore-press.name = Spore Press
block.separator.name = Separator block.separator.name = Separator
block.coal-centrifuge.name = Coal Centrifuge block.coal-centrifuge.name = Coal Centrifuge
block.power-node.name = Power Node block.power-node.name = Power Node
block.power-node-large.name = Large Power Node block.power-node-large.name = Malaking Power Node
block.surge-tower.name = Surge Tower block.surge-tower.name = Surge Tower
block.diode.name = Battery Diode block.diode.name = Battery Diode
block.battery.name = Battery block.battery.name = Battery
block.battery-large.name = Large Battery block.battery-large.name = Malaking Battery
block.combustion-generator.name = Combustion Generator block.combustion-generator.name = Combustion Generator
block.steam-generator.name = Steam Generator block.steam-generator.name = Steam Generator
block.differential-generator.name = Differential Generator block.differential-generator.name = Differential Generator
@@ -1301,7 +1301,7 @@ block.alloy-smelter.name = Alloy Smelter
block.mender.name = Mender block.mender.name = Mender
block.mend-projector.name = Mend Projector block.mend-projector.name = Mend Projector
block.surge-wall.name = Surge Wall block.surge-wall.name = Surge Wall
block.surge-wall-large.name = Large Surge Wall block.surge-wall-large.name = Malaking Surge Wall
block.cyclone.name = Cyclone block.cyclone.name = Cyclone
block.fuse.name = Fuse block.fuse.name = Fuse
block.shock-mine.name = Shock Mine block.shock-mine.name = Shock Mine
@@ -1337,21 +1337,21 @@ block.overdrive-dome.name = Overdrive Dome
block.interplanetary-accelerator.name = Interplanetary Accelerator block.interplanetary-accelerator.name = Interplanetary Accelerator
block.constructor.name = Constructor block.constructor.name = Constructor
block.constructor.description = Fabricates structures up to 2x2 tiles in size. block.constructor.description = Fabricates structures up to 2x2 tiles in size.
block.large-constructor.name = Large Constructor block.large-constructor.name = Malaking Constructor
block.large-constructor.description = Fabricates structures up to 4x4 tiles in size. block.large-constructor.description = Gumagawa ng mga istruktura hanggang sa 4x4 na tile ang laki.
block.deconstructor.name = Deconstructor block.deconstructor.name = Deconstructor
block.deconstructor.description = Deconstructs structures and units. Returns 100% of build cost. block.deconstructor.description = Nagde-deconstruct ng mga istruktura at yunit. Ibinabalik ang 100% ng halaga ng block.
block.payload-loader.name = Payload Loader block.payload-loader.name = Payload Loader
block.payload-loader.description = Load liquids and items into blocks. block.payload-loader.description = Mag-load ng mga likido at mga item sa mga blocks.
block.payload-unloader.name = Payload Unloader block.payload-unloader.name = Payload Unloader
block.payload-unloader.description = Unloads liquids and items from blocks. block.payload-unloader.description = Naglalabas ng mga likido at mga item mula sa mga blocks.
block.switch.name = Switch block.switch.name = Switch
block.micro-processor.name = Micro Processor block.micro-processor.name = Micro Processor
block.logic-processor.name = Logic Processor block.logic-processor.name = Logic Processor
block.hyper-processor.name = Hyper Processor block.hyper-processor.name = Hyper Processor
block.logic-display.name = Logic Display block.logic-display.name = Logic Display
block.large-logic-display.name = Large Logic Display block.large-logic-display.name = Malaking Logic Display
block.memory-cell.name = Memory Cell block.memory-cell.name = Memory Cell
block.memory-bank.name = Memory Bank block.memory-bank.name = Memory Bank
@@ -1362,38 +1362,38 @@ team.derelict.name = derelict
team.green.name = green team.green.name = green
team.purple.name = purple team.purple.name = purple
hint.skip = Skip hint.skip = Skip
hint.desktopMove = Use [accent][[WASD][] to move. hint.desktopMove = Gamitin ang [accent][[WASD][] para gumalaw.
hint.zoom = [accent]Scroll[] to zoom in or out. hint.zoom = [accent]Scroll[] para mag-zoom in o out.
hint.mine = Move near the \uf8c4 copper ore and [accent]tap[] it to mine manually. hint.mine = Lumipat malapit sa \uf8c4 copper ore at [accent]tap[] ito upang manu-manong minahan.
hint.desktopShoot = [accent][[Left-click][] to shoot. hint.desktopShoot = [accent][[Left-click][] para mag-shoot.
hint.depositItems = To transfer items, drag from your ship to the core. hint.depositItems = Upang maglipat ng mga item, i-drag mula sa iyong ship patungo sa core.
hint.respawn = To respawn as a ship, press [accent][[V][]. hint.respawn = To respawn as a ship, press [accent][[V][].
hint.respawn.mobile = You have switched control to a unit/structure. To respawn as a ship, [accent]tap the avatar in the top left.[] hint.respawn.mobile = You have switched control to a unit/structure. To respawn as a ship, [accent]tap the avatar in the top left.[]
hint.desktopPause = Press [accent][[Space][] to pause and unpause the game. hint.desktopPause = Press [accent][[Space][] to pause and unpause the game.
hint.placeDrill = Select the \ue85e [accent]Drill[] tab in the menu at the bottom right, then select a \uf870 [accent]Drill[] and click on a copper patch to place it. hint.placeDrill = Select the \ue85e [accent]Drill[] tab in the menu at the bottom right, then select a \uf870 [accent]Drill[] and click on a copper patch to place it.
hint.placeDrill.mobile = Select the \ue85e [accent]Drill[] tab in the menu at the bottom right, then select a \uf870 [accent]Drill[] and tap on a copper patch to place it.\n\nPress the \ue800 [accent]checkmark[] at the bottom right to confirm. hint.placeDrill.mobile = Select the \ue85e [accent]Drill[] tab in the menu at the bottom right, then select a \uf870 [accent]Drill[] and tap on a copper patch to place it.\n\nPress the \ue800 [accent]checkmark[] at the bottom right to confirm.
hint.placeConveyor = Conveyors move items from drills into other blocks. Select a \uf896 [accent]Conveyor[] from the \ue814 [accent]Distribution[] tab.\n\nClick and drag to place multiple conveyors.\n[accent]Scroll[] to rotate. hint.placeConveyor = Ang mga conveyor ay naglilipat ng mga item mula sa mga drill patungo sa iba pang mga bloke. Pumili ng \uf896 [accent]Conveyor[] mula sa tab na \ue814 [accent]Distribution[].\n\nI-click at i-drag upang maglagay ng maraming conveyor.\n[accent]Mag-scroll[] para i-rotate.
hint.placeConveyor.mobile = Conveyors move items from drills into other blocks. Select a \uf896 [accent]Conveyor[] from the \ue814 [accent]Distribution[] tab.\n\nHold down your finger for a second and drag to place multiple conveyors. hint.placeConveyor.mobile = Ang mga conveyor ay naglilipat ng mga item mula sa mga drill patungo sa iba pang mga bloke. Pumili ng \uf896 [accent]Conveyor[] mula sa tab na \ue814 [accent]Distribution[].\n\nI-hold down ang iyong daliri sa isang segundo at i-drag upang maglagay ng maraming conveyor.
hint.placeTurret = Place \uf861 [accent]Turrets[] to defend your base from enemies.\n\nTurrets require ammo - in this case, \uf838copper.\nUse conveyors and drills to supply them. hint.placeTurret = Ilagay ang \uf861 [accent]Turrets[] upang ipagtanggol ang iyong base mula sa mga kaaway.\n\nAng mga turret ay nangangailangan ng ammo - sa kasong ito, \uf838copper.\nGumamit ng mga conveyor at drills para matustusan ang mga ito.
hint.breaking = [accent]Right-click[] and drag to break blocks. hint.breaking = [accent]Right-click[] and drag to break blocks.
hint.breaking.mobile = Activate the \ue817 [accent]hammer[] in the bottom right and tap to break blocks.\n\nHold down your finger for a second and drag to break in a selection. hint.breaking.mobile = I-activate ang \ue817 [accent]hammer[] sa kanang bahagi sa ibaba at i-tap para masira ang mga bloke.\n\nI-hold ang iyong daliri sa isang segundo at i-drag para masira ang isang seleksyon.
hint.blockInfo = View information of a block by selecting it in the [accent]build menu[], then selecting the [accent][[?][] button at the right. hint.blockInfo = Tingnan ang impormasyon ng isang block sa pamamagitan ng pagpili nito sa [accent]build menu[], pagkatapos ay pagpili sa [accent][[?][] na button sa kanan.
hint.derelict = [accent]Derelict[] structures are broken remnants of old bases that no longer function.\n\nThese structures can be [accent]deconstructed[] for resources. hint.derelict = Ang [accent]Derelict[] na mga istraktura ay mga sirang labi ng mga lumang base na hindi na gumagana.\n\nAng mga istrukturang ito ay maaaring [accent]deconstructed[] para sa mga mapagkukunan.
hint.research = Use the \ue875 [accent]Research[] button to research new technology. hint.research = Gamitin ang button na \ue875 [accent]Research[] para magsaliksik ng bagong teknolohiya.
hint.research.mobile = Use the \ue875 [accent]Research[] button in the \ue88c [accent]Menu[] to research new technology. hint.research.mobile = Gamitin ang button na \ue875 [accent]Research[] sa \ue88c [accent]Menu[] para magsaliksik ng bagong teknolohiya.
hint.unitControl = Hold [accent][[L-ctrl][] and [accent]click[] to control friendly units or turrets. hint.unitControl = Pindutin ang [accent][[L-ctrl][] at [accent]click[] upang kontrolin ang mga friendly na unit o turrets.
hint.unitControl.mobile = [accent][[Double-tap][] to control friendly units or turrets. hint.unitControl.mobile = [accent][[Double-tap][] para kontrolin ang mga friendly na unit o turrets.
hint.launch = Once enough resources are collected, you can [accent]Launch[] by selecting nearby sectors from the \ue827 [accent]Map[] in the bottom right. hint.launch = Kapag sapat na ang mga mapagkukunan, maaari mong [accent]Ilunsad[] sa pamamagitan ng pagpili sa mga kalapit na sektor mula sa \ue827 [accent]Map[] sa kanang ibaba.
hint.launch.mobile = Once enough resources are collected, you can [accent]Launch[] by selecting nearby sectors from the \ue827 [accent]Map[] in the \ue88c [accent]Menu[]. hint.launch.mobile = Kapag sapat na ang mga mapagkukunan, maaari mong [accent]Ilunsad[] sa pamamagitan ng pagpili sa mga kalapit na sektor mula sa \ue827 [accent]Map[] sa \ue88c [accent]Menu[].
hint.schematicSelect = Hold [accent][[F][] and drag to select blocks to copy and paste.\n\n[accent][[Middle Click][] to copy a single block type. hint.schematicSelect = Pindutin ang [accent][[F][] at i-drag upang pumili ng mga bloke na kokopyahin at ipe-paste.\n\n[accent][[Middle Click][] upang kopyahin ang isang uri ng block.
hint.conveyorPathfind = Hold [accent][[L-Ctrl][] while dragging conveyors to automatically generate a path. hint.conveyorPathfind = Hold [accent][[L-Ctrl][] while dragging conveyors to automatically generate a path.
hint.conveyorPathfind.mobile = Enable \ue844 [accent]diagonal mode[] and drag conveyors to automatically generate a path. hint.conveyorPathfind.mobile = Pindutin ang [accent][[L-Ctrl][] habang dina-drag ang mga conveyor para awtomatikong bumuo ng landas.
hint.boost = Hold [accent][[L-Shift][] to fly over obstacles with your current unit.\n\nOnly a few ground units have boosters. hint.boost = Pindutin ang [accent][[L-Shift][] para lumipad sa mga obstacle kasama ang iyong kasalukuyang unit.\n\nIlang ground unit lang ang may mga booster
hint.command = Press [accent][[G][] to command nearby units of [accent]similar type[] into formation.\n\nTo command ground units, you must first control another ground unit. hint.command = Pindutin ang [accent][[G][] para mag-utos ng mga kalapit na unit ng [accent]katulad na uri[] sa pagbuo.\n\nUpang mag-utos ng mga ground unit, kailangan mo munang kontrolin ang isa pang ground unit.
hint.command.mobile = [accent][[Double-tap][] your unit to command nearby units into formation. hint.command.mobile = [accent][[Double-tap][] ang iyong unit para mag-utos ng mga kalapit na unit sa pagbuo.
hint.payloadPickup = Press [accent][[[] to pick up small blocks or units. hint.payloadPickup = Pindutin ang [accent][[[] para kunin ang maliliit na block o unit.
hint.payloadPickup.mobile = [accent]Tap and hold[] a small block or unit to pick it up. hint.payloadPickup.mobile = [accent]I-tap nang matagal ang[] isang maliit na block o unit para kunin ito.
hint.payloadDrop = Press [accent]][] to drop a payload. hint.payloadDrop = Pindutin ang [accent]][] para mag-drop ng payload.
hint.payloadDrop.mobile = [accent]Tap and hold[] an empty location to drop a payload there. hint.payloadDrop.mobile = [accent]Tap and hold[] an empty location to drop a payload there.
hint.waveFire = [accent]Wave[] turrets with water as ammunition will automatically put out nearby fires. hint.waveFire = [accent]Wave[] turrets with water as ammunition will automatically put out nearby fires.
hint.generator = \uf879 [accent]Combustion Generators[] burn coal and transmit power to adjacent blocks.\n\nPower transmission range can be extended with \uf87f [accent]Power Nodes[]. hint.generator = \uf879 [accent]Combustion Generators[] burn coal and transmit power to adjacent blocks.\n\nPower transmission range can be extended with \uf87f [accent]Power Nodes[].
@@ -1421,79 +1421,79 @@ item.silicon.description = Ang nakakatulong na semiconductor. Aplikasyon sa sola
item.plastanium.description = Ito ay magaan, malagkit na materyal ginamit sa advanced aircraft at fragmentation ammunisyon. item.plastanium.description = Ito ay magaan, malagkit na materyal ginamit sa advanced aircraft at fragmentation ammunisyon.
item.phase-fabric.description = Ito ay malapit na mawalan ng timbang na substansya ginamit sa advanced na electronika at self-repairing na technolohiya. item.phase-fabric.description = Ito ay malapit na mawalan ng timbang na substansya ginamit sa advanced na electronika at self-repairing na technolohiya.
item.surge-alloy.description = Ang advanced na pinag halung metal na may kakaibang electrical properties. item.surge-alloy.description = Ang advanced na pinag halung metal na may kakaibang electrical properties.
item.spore-pod.description = A pod of synthetic spores, synthesized from atmospheric concentrations for industrial purposes. Used for conversion into oil, explosives and fuel. item.spore-pod.description = Isang pod ng mga sintetikong spore, na synthesize mula sa mga konsentrasyon sa atmospera para sa mga layuning pang-industriya. Ginagamit para sa conversion sa langis, pampasabog at gasolina.
item.spore-pod.details = Spores. Likely a synthetic life form. Emit gases toxic to other biological life. Extremely invasive. Highly flammable in certain conditions. item.spore-pod.details = Mga spores. Malamang na isang sintetikong anyo ng buhay. Naglalabas ng mga gas na nakakalason sa ibang biyolohikal na buhay. Lubhang invasive. Lubos na nasusunog sa ilang mga kundisyon.
item.blast-compound.description = An unstable compound used in bombs and explosives. Synthesized from spore pods and other volatile substances. Use as fuel is not advised. item.blast-compound.description = Isang hindi matatag na compound na ginagamit sa mga bomba at pampasabog. Na-synthesize mula sa mga spore pod at iba pang pabagu-bagong substance. Gamitin bilang gasolina ay hindi pinapayuhan.
item.pyratite.description = An extremely flammable substance used in incendiary weapons. item.pyratite.description = Isang sobrang nasusunog na substance na ginagamit sa mga armas na nagniningas.
liquid.water.description = The most useful liquid. Commonly used for cooling machines and waste processing. liquid.water.description = Ang pinaka-kapaki-pakinabang na likido. Karaniwang ginagamit para sa mga cooling machine at pagpoproseso ng basura.
liquid.slag.description = Various different types of molten metal mixed together. Can be separated into its constituent minerals, or sprayed at enemy units as a weapon. liquid.slag.description = Iba't ibang uri ng tinunaw na metal na pinaghalo. Maaaring ihiwalay sa mga mineral na bumubuo nito, o i-spray sa mga yunit ng kaaway bilang sandata.
liquid.oil.description = A liquid used in advanced material production. Can be converted into coal as fuel, or sprayed and set on fire as a weapon. liquid.oil.description = Isang likidong ginagamit sa advanced na produksyon ng materyal. Maaaring gawing karbon bilang panggatong, o i-spray at sunugin bilang sandata.
liquid.cryofluid.description = An inert, non-corrosive liquid created from water and titanium. Has extremely high heat capacity. Extensively used as coolant. liquid.cryofluid.description = Isang inert, non-corrosive na likido na nilikha mula sa tubig at titanium. May napakataas na kapasidad ng init. Malawakang ginagamit bilang coolant.
block.derelict = \uf77e [lightgray]Derelict block.derelict = \uf77e [lightgray]Derelict
block.armored-conveyor.description = Moves items at the same speed as titanium conveyors, but possesses more armor. Does not accept inputs from the sides from anything but other conveyor belts. block.armored-conveyor.description = Gumagalaw ng mga item sa parehong bilis ng mga titanium conveyor, ngunit nagtataglay ng mas maraming sandata. Hindi tumatanggap ng mga input mula sa mga gilid mula sa anumang bagay maliban sa iba pang mga conveyor belt.
block.illuminator.description = A small, compact, configurable light source. Requires power to function. block.illuminator.description = Isang maliit, compact, configurable light source. Nangangailangan ng kapangyarihan upang gumana.
block.message.description = Stores a message. Used for communication between allies. block.message.description = Nag-iimbak ng mensahe. Ginagamit para sa komunikasyon sa pagitan ng mga kaalyado.
block.graphite-press.description = Compresses chunks of coal into pure sheets of graphite. block.graphite-press.description = Pinipilit ang mga tipak ng karbon sa purong mga piraso ng grapayt.
block.multi-press.description = An upgraded version of the graphite press. Employs water and power to process coal quickly and efficiently. block.multi-press.description = Isang na-upgrade na bersyon ng graphite press. Gumagamit ng tubig at kapangyarihan upang iproseso ang karbon nang mabilis at mahusay.
block.silicon-smelter.description = Reduces sand with pure coal. Produces silicon. block.silicon-smelter.description = Binabawasan ang buhangin na may purong karbon. Gumagawa ng silikon.
block.kiln.description = Smelts sand and lead into the compound known as metaglass. Requires small amounts of power to run. block.kiln.description = Tinutunaw ang buhangin at humahantong sa compound na kilala bilang metaglass. Nangangailangan ng maliit na halaga ng kapangyarihan upang tumakbo.
block.plastanium-compressor.description = Produces plastanium from oil and titanium. block.plastanium-compressor.description = Gumagawa ng plastanium mula sa langis at titanium.
block.phase-weaver.description = Synthesizes phase fabric from radioactive thorium and sand. Requires massive amounts of power to function. block.phase-weaver.description = Synthesizes phase fabric mula sa radioactive thorium at buhangin. Nangangailangan ng napakalaking dami ng kapangyarihan upang gumana.
block.alloy-smelter.description = Combines titanium, lead, silicon and copper to produce surge alloy. block.alloy-smelter.description = Pinagsasama ang titanium, lead, silicon at tanso upang makagawa ng surge alloy.
block.cryofluid-mixer.description = Mixes water and fine titanium powder into cryofluid. Essential for thorium reactor usage. block.cryofluid-mixer.description = Hinahalo ang tubig at pinong titanium powder sa cryofluid. Mahalaga para sa paggamit ng thorium reactor.
block.blast-mixer.description = Crushes and mixes clusters of spores with pyratite to produce blast compound. block.blast-mixer.description = Dinudurog at hinahalo ang mga kumpol ng spores na may pyratite upang makagawa ng blast compound.
block.pyratite-mixer.description = Mixes coal, lead and sand into highly flammable pyratite. block.pyratite-mixer.description = Naghahalo ng coal, lead at sand sa sobrang nasusunog na pyratite.
block.melter.description = Melts down scrap into slag for further processing or usage in wave turrets. block.melter.description = Tinutunaw ang scrap sa slag para sa karagdagang pagproseso o paggamit sa mga wave turret.
block.separator.description = Separates slag into its mineral components. Outputs the cooled result. block.separator.description = Pinaghihiwalay ang slag sa mga bahagi ng mineral nito. Inilalabas ang pinalamig na resulta.
block.spore-press.description = Compresses spore pods under extreme pressure to synthesize oil. block.spore-press.description = Kino-compress ang mga spore pod sa ilalim ng matinding pressure para mag-synthesize ng oil.
block.pulverizer.description = Crushes scrap into fine sand. block.pulverizer.description = Dinudurog ang scrap sa pinong sand.
block.coal-centrifuge.description = Solidifes oil into chunks of coal. block.coal-centrifuge.description = Pinapatigas ang oil sa mga coal.
block.incinerator.description = Vaporizes any excess item or liquid it receives. block.incinerator.description = Pinapasingaw ang anumang labis na bagay o likidong natatanggap nito.
block.power-void.description = Voids all power inputted into it. Sandbox only. block.power-void.description = Walang laman ang lahat ng kuryente ipinasok dito. Sandbox lang.
block.power-source.description = Infinitely outputs power. Sandbox only. block.power-source.description = Walang katapusang naglalabas ng kuryente. Sandbox lang.
block.item-source.description = Infinitely outputs items. Sandbox only. block.item-source.description = Walang katapusan na naglalabas ng mga item. Sandbox lang.
block.item-void.description = Destroys any items. Sandbox only. block.item-void.description = Sinisira ang anumang mga item. Sandbox lang.
block.liquid-source.description = Infinitely outputs liquids. Sandbox only. block.liquid-source.description = Walang katapusan na naglalabas ng mga likido. Sandbox lang.
block.liquid-void.description = Removes any liquids. Sandbox only. block.liquid-void.description = Tinatanggal ang anumang likido. Sandbox lang.
block.payload-source.description = Infinitely outputs payloads. Sandbox only. block.payload-source.description = Walang katapusang naglalabas ng mga payload. Sandbox lang.
block.payload-void.description = Destroys any payloads. Sandbox only. block.payload-void.description = Sinisira ang anumang mga payload. Sandbox lang.
block.copper-wall.description = A cheap defensive block.\nUseful for protecting the core and turrets in the first few waves. block.copper-wall.description = Isang murang defensive block.\nKapaki-pakinabang para sa pagprotekta sa core at mga turret sa unang ilang alon.
block.copper-wall-large.description = A cheap defensive block.\nUseful for protecting the core and turrets in the first few waves.\nSpans multiple tiles. block.copper-wall-large.description = Isang murang defensive block.\nKapaki-pakinabang para sa pagprotekta sa core at mga turret sa unang ilang alon.\nKumuha ng maraming tile.
block.titanium-wall.description = A moderately strong defensive block.\nProvides moderate protection from enemies. block.titanium-wall.description = Isang katamtamang malakas na defensive block.\nNagbibigay ng katamtamang proteksyon mula sa mga kaaway.
block.titanium-wall-large.description = A moderately strong defensive block.\nProvides moderate protection from enemies.\nSpans multiple tiles. block.titanium-wall-large.description = Isang medyo malakas na defensive block.\nNagbibigay ng katamtamang proteksyon mula sa mga kaaway.\nKumuha ng maraming tile.
block.plastanium-wall.description = A special type of wall that absorbs electric arcs and blocks automatic power node connections. block.plastanium-wall.description = Isang espesyal na uri ng pader na sumisipsip ng mga electric arc at hinaharangan ang mga awtomatikong koneksyon ng power node.
block.plastanium-wall-large.description = A special type of wall that absorbs electric arcs and blocks automatic power node connections.\nSpans multiple tiles. block.plastanium-wall-large.description = Isang espesyal na uri ng pader na sumisipsip ng mga electric arc at hinaharangan ang mga awtomatikong koneksyon ng power node.\n Gumagamit ng maraming tile.
block.thorium-wall.description = A strong defensive block.\nDecent protection from enemies. block.thorium-wall.description = Isang malakas na defensive block.\nDisenteng proteksyon mula sa mga kaaway.
block.thorium-wall-large.description = A strong defensive block.\nDecent protection from enemies.\nSpans multiple tiles. block.thorium-wall-large.description = Isang malakas na defensive block.\nDisenteng proteksyon mula sa mga kaaway.\nGumagamit ng maraming tile.
block.phase-wall.description = A wall coated with special phase-based reflective compound. Deflects most bullets upon impact. block.phase-wall.description = Isang pader na pinahiran ng espesyal na phase-based na reflective compound. Pinapalihis ang karamihan sa mga bala sa pagtama.
block.phase-wall-large.description = A wall coated with special phase-based reflective compound. Deflects most bullets upon impact.\nSpans multiple tiles. block.phase-wall-large.description = Isang pader na pinahiran ng espesyal na phase-based na reflective compound. Pinapalihis ang karamihan sa mga bala kapag natamaan.\nGumagamit ng maraming tile.
block.surge-wall.description = An extremely durable defensive block.\nBuilds up charge on bullet contact, releasing it randomly. block.surge-wall.description = Isang napakatibay na defensive block.\nNagpapalaki ng singil sa bullet contact, na ilalabas ito nang random.
block.surge-wall-large.description = An extremely durable defensive block.\nBuilds up charge on bullet contact, releasing it randomly.\nSpans multiple tiles. block.surge-wall-large.description = Isang napakatibay na defensive block.\nBumubuo ng singil sa bullet contact, ilalabas ito nang random.\nGumagamit ng maraming tile.
block.door.description = A small door. Can be opened or closed by tapping. block.door.description = Isang maliit na pinto. Maaaring buksan o isara sa pamamagitan ng pag-tap.
block.door-large.description = A large door. Can be opened and closed by tapping.\nSpans multiple tiles. block.door-large.description = Isang malaking pinto. Maaaring buksan at isara sa pamamagitan ng pag-tap.\nSpans maramihang mga tile.
block.mender.description = Periodically repairs blocks in its vicinity. Keeps defenses repaired in-between waves.\nOptionally uses silicon to boost range and efficiency. block.mender.description = Pana-panahong nag-aayos ng mga blocks sa paligid nito. Pinapanatiling maayos ang mga depensa sa pagitan ng mga alon.\nOpsyonal na gumagamit ng silicon upang palakasin ang saklaw at kahusayan.
block.mend-projector.description = An upgraded version of the Mender. Repairs blocks in its vicinity.\nOptionally uses phase fabric to boost range and efficiency. block.mend-projector.description = Isang na-upgrade na bersyon ng Mender. Nag-aayos ng mga bloke sa paligid nito.\nOpsyonal na gumagamit ng phase fabric upang palakasin ang saklaw at kahusayan.
block.overdrive-projector.description = Increases the speed of nearby buildings.\nOptionally uses phase fabric to boost range and efficiency. block.overdrive-projector.description = Pinapataas ang bilis ng mga kalapit na buildings.\nOpsyonal na gumagamit ng phase fabric upang palakasin ang saklaw at kahusayan.
block.force-projector.description = Creates a hexagonal force field around itself, protecting buildings and units inside from damage.\nOverheats if too much damage is sustained. Optionally uses coolant to prevent overheating. Phase fabric can be used to increase shield size. block.force-projector.description = Gumagawa ng hexagonal force field sa paligid nito, na nagpoprotekta sa mga gusali at unit sa loob mula sa pagkasira.\nNag-o-overheat kung masyadong maraming pinsala ang natamo. Opsyonal na gumagamit ng coolant upang maiwasan ang sobrang init. Maaaring gamitin ang phase fabric upang madagdagan ang laki ng kalasag.
block.shock-mine.description = Damages enemies stepping on the mine. Nearly invisible to the enemy. block.shock-mine.description = Pinipinsala ang mga kaaway na tumuntong sa minahan. Halos hindi nakikita ng kalaban.
block.conveyor.description = Basic item transport block. Moves items forward and automatically deposits them into blocks. Rotatable. block.conveyor.description = Pangunahing block ng transportasyon ng item. Inililipat ang mga item pasulong at awtomatikong idedeposito ang mga ito sa mga bloke. Naiikot.
block.titanium-conveyor.description = Advanced item transport block. Moves items faster than standard conveyors. block.titanium-conveyor.description = Advanced na block ng transportasyon ng item. Inilipat ang mga item nang mas mabilis kaysa sa mga karaniwang conveyor.
block.plastanium-conveyor.description = Moves items in batches.\nAccepts items at the back, and unloads them in three directions at the front. block.plastanium-conveyor.description = Naglilipat ng mga item sa mga batch.\nTinatanggap ang mga item sa likod, at ibinababa ang mga ito sa tatlong direksyon sa harap.
block.junction.description = Acts as a bridge for two crossing conveyor belts. Useful in situations with two different conveyors carrying different materials to different locations. block.junction.description = Nagsisilbing tulay para sa dalawang tumatawid na conveyor belt. Kapaki-pakinabang sa mga sitwasyon na may dalawang magkaibang conveyor na nagdadala ng magkaibang mga materyales sa magkaibang lokasyon.
block.bridge-conveyor.description = Advanced item transport block. Allows transporting items over up to 3 tiles of any terrain or building. block.bridge-conveyor.description = Advanced na block ng transportasyon ng item. Nagbibigay-daan sa pagdadala ng mga item sa hanggang 3 tile ng anumang lupain o gusali.
block.phase-conveyor.description = Advanced item transport block. Uses power to teleport items to a connected phase conveyor over several tiles. block.phase-conveyor.description = Advanced na block ng transportasyon ng item. Gumagamit ng kuryente para mag-teleport ng mga item sa isang konektadong phase conveyor sa ilang tile.
block.sorter.description = Sorts items. If an item matches the selection, it is allowed to pass. Otherwise, the item is outputted to the left and right. block.sorter.description = Pag-uuri ng mga item. Kung ang isang item ay tumugma sa pagpili, ito ay pinapayagang makapasa. Kung hindi, ang item ay nai-output sa kaliwa at kanan.
block.inverted-sorter.description = Processes items like a standard sorter, but outputs selected items to the sides instead. block.inverted-sorter.description = Pinoproseso ang mga item tulad ng isang karaniwang sorter, ngunit sa halip ay naglalabas ng mga napiling item sa mga gilid.
block.router.description = Accepts items, then outputs them to up to 3 other directions equally. Useful for splitting the materials from one source to multiple targets.\n\n[scarlet]Never use next to production inputs, as they will get clogged by output.[] block.router.description = Tumatanggap ng mga item, pagkatapos ay i-output ang mga ito sa hanggang 3 iba pang direksyon nang pantay. Kapaki-pakinabang para sa paghahati ng mga materyales mula sa isang pinagmulan patungo sa maraming target.\n\n[scarlet]Huwag gumamit sa tabi ng mga production input, dahil mababara ang mga ito ng output.[]
block.router.details = A necessary evil. Using next to production inputs is not advised, as they will get clogged by output. block.router.details = A necessary evil. Using next to production inputs is not advised, as they will get clogged by output.
block.distributor.description = An advanced router. Splits items to up to 7 other directions equally. block.distributor.description = Isang advanced na router. Hinahati ang mga item sa hanggang 7 iba pang direksyon nang pantay.
block.overflow-gate.description = Only outputs to the left and right if the front path is blocked. block.overflow-gate.description = Mga output lamang sa kaliwa at kanan kung ang harap na landas ay naka-block.
block.underflow-gate.description = The opposite of an overflow gate. Outputs to the front if the left and right paths are blocked. block.underflow-gate.description = Ang kabaligtaran ng isang overflow gate. Mga output sa harap kung ang kaliwa at kanang mga landas ay naharang.
block.mass-driver.description = The ultimate item transport block. Collects several items and then shoots them to another mass driver over a long range. Requires power to operate. block.mass-driver.description = Ang pinakahuling block ng transportasyon ng item. Nangongolekta ng ilang mga item at pagkatapos ay kukunan ang mga ito sa isa pang mass driver sa mahabang hanay. Nangangailangan ng kuryente upang gumana.
block.mechanical-pump.description = A cheap pump with slow output, but no power consumption. block.mechanical-pump.description = Isang murang bomba na may mabagal na output, ngunit walang pagkonsumo ng kuryente.
block.rotary-pump.description = An advanced pump. Pumps more liquid, but requires power. block.rotary-pump.description = Isang advanced na bomba. Nagbomba ng mas maraming likido, ngunit nangangailangan ng kapangyarihan.
block.thermal-pump.description = The ultimate pump. block.thermal-pump.description = Ang tunay na bomba.
block.conduit.description = Basic liquid transport block. Moves liquids forward. Used in conjunction with pumps and other conduits. block.conduit.description = Basic liquid transport block. Moves liquids forward. Used in conjunction with pumps and other conduits.
block.pulse-conduit.description = An advanced liquid transport block. Transports liquids faster and stores more than standard conduits. block.pulse-conduit.description = An advanced liquid transport block. Transports liquids faster and stores more than standard conduits.
block.plated-conduit.description = Moves liquids at the same rate as pulse conduits, but possesses more armor. Does not accept fluids from the sides by anything other than conduits.\nLeaks less. block.plated-conduit.description = Moves liquids at the same rate as pulse conduits, but possesses more armor. Does not accept fluids from the sides by anything other than conduits.\nLeaks less.

View File

@@ -589,7 +589,7 @@ sectors.unexplored = [lightgray]Inexploré
sectors.resources = Ressources : sectors.resources = Ressources :
sectors.production = Production : sectors.production = Production :
sectors.export = Exporter : sectors.export = Exporter :
sectors.import = Import: sectors.import = Importer :
sectors.time = Temps de jeu : sectors.time = Temps de jeu :
sectors.threat = Menace : sectors.threat = Menace :
sectors.wave = Vague : sectors.wave = Vague :
@@ -823,7 +823,7 @@ bullet.damage = [stat]{0}[lightgray] dégâts
bullet.splashdamage = [stat]{0}[lightgray] dégâts de zone ~[stat] {1}[lightgray] blocs bullet.splashdamage = [stat]{0}[lightgray] dégâts de zone ~[stat] {1}[lightgray] blocs
bullet.incendiary = [stat]incendiaire bullet.incendiary = [stat]incendiaire
bullet.homing = [stat]autoguidé bullet.homing = [stat]autoguidé
bullet.frags = [stat]{0}[lightgray]x frag bullets: bullet.frags = [stat]{0}[lightgray]x Balle à fragmentation :
bullet.lightning = [stat]{0}[lightgray]x foudre ~ [stat]{1}[lightgray] dégâts bullet.lightning = [stat]{0}[lightgray]x foudre ~ [stat]{1}[lightgray] dégâts
bullet.buildingdamage = [stat]{0}%[lightgray] des dégâts aux bâtiments bullet.buildingdamage = [stat]{0}%[lightgray] des dégâts aux bâtiments
bullet.knockback = [stat]{0}[lightgray] recul bullet.knockback = [stat]{0}[lightgray] recul
@@ -1036,7 +1036,7 @@ rules.wavetimer = Compte à rebours des vagues
rules.waves = Vagues rules.waves = Vagues
rules.attack = Mode « Attaque » rules.attack = Mode « Attaque »
rules.buildai = Constructions de l'IA rules.buildai = Constructions de l'IA
rules.aitier = AI Tier rules.aitier = IA Tier
rules.cleanupdeadteams = Détruire les structures des équipes vaincues (JcJ) rules.cleanupdeadteams = Détruire les structures des équipes vaincues (JcJ)
rules.corecapture = Capture du Noyau lors de sa Destruction rules.corecapture = Capture du Noyau lors de sa Destruction
rules.polygoncoreprotection = Protection du noyau polygonal rules.polygoncoreprotection = Protection du noyau polygonal
@@ -1056,15 +1056,15 @@ rules.deconstructrefundmultiplier = Multiplicateur du remboursement lors de la d
rules.waitForWaveToEnd = Les Vagues attendent la mort des ennemis rules.waitForWaveToEnd = Les Vagues attendent la mort des ennemis
rules.dropzoneradius = Rayon d'Apparition des ennemis :[lightgray] (tuiles) rules.dropzoneradius = Rayon d'Apparition des ennemis :[lightgray] (tuiles)
rules.unitammo = Les Unités nécessitent des munitions rules.unitammo = Les Unités nécessitent des munitions
rules.enemyteam = Enemy Team rules.enemyteam = Équipe ennemie
rules.playerteam = Player Team rules.playerteam = Équipe du joueur
rules.title.waves = Vagues rules.title.waves = Vagues
rules.title.resourcesbuilding = Resources & Construction rules.title.resourcesbuilding = Resources & Construction
rules.title.enemy = Ennemis rules.title.enemy = Ennemis
rules.title.unit = Unités rules.title.unit = Unités
rules.title.experimental = Expérimental rules.title.experimental = Expérimental
rules.title.environment = Environnement rules.title.environment = Environnement
rules.title.teams = Teams rules.title.teams = Équipes
rules.lighting = Éclairage rules.lighting = Éclairage
rules.enemyLights = Éclairage ennemi rules.enemyLights = Éclairage ennemi
rules.fire = Feu rules.fire = Feu
@@ -1479,9 +1479,9 @@ block.incinerator.description = Incinère ou vaporise n'importe quel objet ou li
block.power-void.description = Absorbe toute l'énergie qui va à l'intérieur. Bac à sable uniquement. block.power-void.description = Absorbe toute l'énergie qui va à l'intérieur. Bac à sable uniquement.
block.power-source.description = Produit de l'énergie à l'infini. Bac à sable uniquement. block.power-source.description = Produit de l'énergie à l'infini. Bac à sable uniquement.
block.item-source.description = Produit des objets à l'infini. Bac à sable uniquement. block.item-source.description = Produit des objets à l'infini. Bac à sable uniquement.
block.item-void.description = sintègre n'importe quel objet qui va à l'intérieur. Bac à sable uniquement. block.item-void.description = truit les objets introduits. Bac à sable uniquement.
block.liquid-source.description = Source de liquide infinie. Bac à sable uniquement. block.liquid-source.description = Source de liquide infinie. Bac à sable uniquement.
block.liquid-void.description = Détruit n'importe quel liquide. Bac à sable uniquement. block.liquid-void.description = Détruit les liquides introduits. Bac à sable uniquement.
block.payload-source.description = Produit des charges utiles à l'infini. Bac à sable uniquement. block.payload-source.description = Produit des charges utiles à l'infini. Bac à sable uniquement.
block.payload-void.description = Détruit toutes les charges utiles. Bac à sable uniquement. block.payload-void.description = Détruit toutes les charges utiles. Bac à sable uniquement.
block.copper-wall.description = Un bloc défensif à faible coût.\nUtile pour protéger la base et les tourelles lors des premières vagues. block.copper-wall.description = Un bloc défensif à faible coût.\nUtile pour protéger la base et les tourelles lors des premières vagues.

View File

@@ -122,7 +122,7 @@ committingchanges = Membuat Perubahan
done = Selesai done = Selesai
feature.unsupported = Perangkat Anda tidak mendukung fitur ini. feature.unsupported = Perangkat Anda tidak mendukung fitur ini.
mods.initfailed = [red]⚠[] Proses Mindustry sebelumnya gagal untuk dimulai. Kemungkinan besar disebabkan oleh mod yang bermasalah.\n\nUntuk menghindari kesalahan berulang, [red]semua mod telah dinonaktifkan.[]\n\nUntuk menonaktifkan fitur ini, matikan di [accent]Pengaturan->Permainan->Matikan Mod Ketika Ada Masalah Saat Memulai Permainan[]. mods.initfailed = [red]⚠[] Proses Mindustry sebelumnya gagal untuk dimulai. Kemungkinan besar disebabkan oleh mod yang bermasalah.\n\nUntuk menghindari kesalahan berulang, [red]semua mod telah dinonaktifkan.[]
mods = Mod mods = Mod
mods.none = [lightgray]Tidak ada mod yang ditemukan! mods.none = [lightgray]Tidak ada mod yang ditemukan!
mods.guide = Panduan Memodifikasi mods.guide = Panduan Memodifikasi
@@ -144,16 +144,16 @@ mod.outdated = [scarlet]Tidak cocok dengan V6 (minGameVersion: 105)
mod.missingdependencies = [scarlet]Ketergantungan hilang: {0} mod.missingdependencies = [scarlet]Ketergantungan hilang: {0}
mod.erroredcontent = [scarlet]Konten Mengalami Kesalahan mod.erroredcontent = [scarlet]Konten Mengalami Kesalahan
mod.errors = Kesalahan terjadi disaat memuat konten. mod.errors = Kesalahan terjadi disaat memuat konten.
mod.noerrorplay = [scarlet]Anda memiliki mod dengan suatu kesalahan.[] Antara nonaktifkan modnya atau perbaiki kesalahan tersebut sebelum bermain. mod.noerrorplay = [scarlet]Anda memiliki mod dengan suatu kesalahan.[] Nonaktifkan mod yang bersangkutan atau perbaiki kesalahan tersebut sebelum bermain.
mod.nowdisabled = [scarlet]Mod '{0}' tidak memiliki ketergantungan:[accent] {1}\n[lightgray]Mod ini butuh untuk diunduh terlebih dahulu.\nMod ini akan dinonaktifkan secara otomatis. mod.nowdisabled = [scarlet]Mod '{0}' tidak memiliki ketergantungan:[accent] {1}\n[lightgray]Mod ini harus diunduh terlebih dahulu.\nMod ini akan dinonaktifkan secara otomatis.
mod.enable = Aktifkan mod.enable = Aktifkan
mod.requiresrestart = Game akan keluar untuk mengaktifkan mod. mod.requiresrestart = Game akan keluar untuk mengaktifkan mod.
mod.reloadrequired = [scarlet]Dibutuhkan untuk memuat ulang mod.reloadrequired = [scarlet]Dibutuhkan untuk memuat ulang
mod.import = Impor Mod mod.import = Impor Mod
mod.import.file = Impor File mod.import.file = Impor File
mod.import.github = Impor Mod GitHub mod.import.github = Impor Mod GitHub
mod.jarwarn = [scarlet]Mod dari JAR sebenarnya tidak aman.[]\nPastikan anda mengimpor mod dari sumber terpercaya! mod.jarwarn = [scarlet]Mod dari JAR sebenarnya tidak aman.[]\nPastikan Anda mengimpor mod dari sumber terpercaya!
mod.item.remove = Item ini merupakan bagian dari mod[accent] '{0}'[] mod. Untuk dihilangkan, hapus mod ini. mod.item.remove = Item ini merupakan bagian dari mod[accent] '{0}'[]. Untuk dihilangkan, hapus mod ini.
mod.remove.confirm = Mod ini akan dihapus. mod.remove.confirm = Mod ini akan dihapus.
mod.author = [lightgray]Pencipta:[] {0} mod.author = [lightgray]Pencipta:[] {0}
mod.missing = Simpanan ini mengandung mod yang telah diperbarui atau sudah lama tidak dipasang. Kemungkinan akan terjadi perubahan. Apakah Anda yakin untuk memuatnya?\n[lightgray]Mods:\n{0} mod.missing = Simpanan ini mengandung mod yang telah diperbarui atau sudah lama tidak dipasang. Kemungkinan akan terjadi perubahan. Apakah Anda yakin untuk memuatnya?\n[lightgray]Mods:\n{0}
@@ -319,7 +319,7 @@ data.invalid = Data permainan ini tidak sah.
data.import.confirm = Mengimpor data eksternal akan menghapus [scarlet] semua[] data yang tersimpan.\n[accent]Tidak dapat diundur lagi![]\n\nSetelah data diimpor, game akan segera ditutup. data.import.confirm = Mengimpor data eksternal akan menghapus [scarlet] semua[] data yang tersimpan.\n[accent]Tidak dapat diundur lagi![]\n\nSetelah data diimpor, game akan segera ditutup.
quit.confirm = Apakah Anda yakin ingin keluar? quit.confirm = Apakah Anda yakin ingin keluar?
loading = [accent]Memuat... loading = [accent]Memuat...
downloading = [accent]Downloading... downloading = [accent]Mengunduh...
saving = [accent]Menyimpan... saving = [accent]Menyimpan...
respawn = [accent][[{0}][] untuk muncul kembali ke inti respawn = [accent][[{0}][] untuk muncul kembali ke inti
cancelbuilding = [accent][[{0}][] untuk menghapus rencana cancelbuilding = [accent][[{0}][] untuk menghapus rencana
@@ -347,9 +347,9 @@ custom = Modifikasi
builtin = Terpasang builtin = Terpasang
map.delete.confirm = Anda yakin ingin menghapus peta ini? Aksi ini tidak bisa diubah! map.delete.confirm = Anda yakin ingin menghapus peta ini? Aksi ini tidak bisa diubah!
map.random = [accent]Peta Acak map.random = [accent]Peta Acak
map.nospawn = Peta ini tidak memiliki inti agar pemain bisa muncul! Tambahkan inti [royal] biru[] kedalam peta di penyunting. map.nospawn = Peta ini tidak memiliki inti agar pemain bisa muncul! Tambahkan inti [#{0}]{1}[] ke dalam peta di penyunting.
map.nospawn.pvp = Peta ini tidak memiliki inti agar pemain lawan bisa muncul! Tambahkan inti[scarlet] selain biru[] kedalam peta di penyunting. map.nospawn.pvp = Peta ini tidak memiliki inti agar pemain lawan bisa muncul! Tambahkan inti[scarlet] selain jingga[] ke dalam peta di penyunting.
map.nospawn.attack = Peta ini tidak memiliki inti musuh agar pemain bisa menyerang! Tambahkan inti[scarlet] merah[] kedalam peta di penyunting. map.nospawn.attack = Peta ini tidak memiliki inti musuh agar pemain bisa menyerang! Tambahkan inti [#{0}]{1}[] ke dalam peta di penyunting.
map.invalid = Terjadi kesalahan saat memuat peta: rusak atau file peta tidak valid. map.invalid = Terjadi kesalahan saat memuat peta: rusak atau file peta tidak valid.
workshop.update = Perbarui Item workshop.update = Perbarui Item
workshop.error = Terjadi kesalahan saat mengambil detail workshop: {0} workshop.error = Terjadi kesalahan saat mengambil detail workshop: {0}
@@ -360,7 +360,7 @@ changelog = Catatan Pembaruan (opsional):
eula = EULA Steam eula = EULA Steam
missing = Item ini telah dihapus atau dipindah.\n[lightgray]Daftar Workshop sekarang telah tidak terhubung secara otomatis. missing = Item ini telah dihapus atau dipindah.\n[lightgray]Daftar Workshop sekarang telah tidak terhubung secara otomatis.
publishing = [accent]Menerbitkan... publishing = [accent]Menerbitkan...
publish.confirm = Apakah Anda yakin untuk menerbitkan item ini?\n\n[lightgray]Pastikan Anda setuju dengan EULA Workshop terlebih dahulu, atau item Anda tidak akan muncul! publish.confirm = Apakah Anda yakin untuk menerbitkan ini?\n\n[lightgray]Pastikan Anda setuju dengan EULA Workshop terlebih dahulu, atau item Anda tidak akan muncul!
publish.error = Terjadi kesalahan saat menerbitkan item: {0} publish.error = Terjadi kesalahan saat menerbitkan item: {0}
steam.error = Gagal untuk menjalankan layanan Steam.\nKesalahan: {0} steam.error = Gagal untuk menjalankan layanan Steam.\nKesalahan: {0}
@@ -385,7 +385,7 @@ editor.filters = Filter Peta
editor.filters.mode = Mode Permainan: editor.filters.mode = Mode Permainan:
editor.filters.type = Tipe Peta: editor.filters.type = Tipe Peta:
editor.filters.search = Cari Dalam: editor.filters.search = Cari Dalam:
editor.filters.author = Pembuat editor.filters.author = Pencipta
editor.filters.description = Deskripsi editor.filters.description = Deskripsi
workshop = Workshop workshop = Workshop
waves.title = Gelombang waves.title = Gelombang
@@ -650,7 +650,7 @@ sector.craters.description = Air banyak terkumpul di kawah ini, sebuah peninggal
sector.ruinousShores.description = Keluar dari lembah gunung, terdapat garis pantai. Sebelumnya, area ini adalah garis pertahanan pantai. Sekarang tidak banyak yang tersisa. Hanya pertahanan dasar yang tersisa, yang lain hancur berkeping keping.\nBangun kembali pertahanan di sini. Pelajari lebih banyak teknologi. sector.ruinousShores.description = Keluar dari lembah gunung, terdapat garis pantai. Sebelumnya, area ini adalah garis pertahanan pantai. Sekarang tidak banyak yang tersisa. Hanya pertahanan dasar yang tersisa, yang lain hancur berkeping keping.\nBangun kembali pertahanan di sini. Pelajari lebih banyak teknologi.
sector.stainedMountains.description = Area ini terletak di dekat pegunungan, namun belum tersentuh oleh spora.\nTambang titanium yang ada di area ini. Pelajari fungsinya.\n\nMusuh jauh lebih kuat disini. Jangan biarkan mereka meluncurkan unit yang lebih kuat. sector.stainedMountains.description = Area ini terletak di dekat pegunungan, namun belum tersentuh oleh spora.\nTambang titanium yang ada di area ini. Pelajari fungsinya.\n\nMusuh jauh lebih kuat disini. Jangan biarkan mereka meluncurkan unit yang lebih kuat.
sector.overgrowth.description = Area ini banyak ditumbuhi spora, karena dekat dengan sumber spora.\nMusuh telah membangun basis disini. Bangun unit Mace. Hancurkan mereka. Klaim apapun yang tersisa. sector.overgrowth.description = Area ini banyak ditumbuhi spora, karena dekat dengan sumber spora.\nMusuh telah membangun basis disini. Bangun unit Mace. Hancurkan mereka. Klaim apapun yang tersisa.
sector.tarFields.description = Terletak di pinggiran zona produksi minyak, diantara gunung dan padang pasir. Salah satu dari beberapa area yang memiliki cadangan minyak yang dapat digunakan.\nMeskipun ditinggalkan, area ini terdapat pertahanan musuh yang sangat kuat disekitarnya. Jangan meremehkan mereka.\n\n[lightgray]Pelajari proses penyulingan minyak jika bisa. sector.tarFields.description = Terletak di pinggiran zona produksi minyak, diantara gunung dan padang pasir. Salah satu dari beberapa area yang memiliki cadangan minyak yang dapat digunakan.\nMeskipun ditinggalkan, area ini terdapat pertahanan musuh yang sangat kuat disekitarnya. Jangan meremehkan mereka.\n\n[lightgray]Pelajari proses penyulingan minyak bila memungkinkan.
sector.desolateRift.description = Zona yang sangat berbahaya. Banyak sumber daya, tetapi terdapat sedikit ruang. Sangat beresiko tinggi untuk dihancurkan. Keluar secepat yang kamu bisa. Jangan terlena karena waktu antara gelombang yang lama. sector.desolateRift.description = Zona yang sangat berbahaya. Banyak sumber daya, tetapi terdapat sedikit ruang. Sangat beresiko tinggi untuk dihancurkan. Keluar secepat yang kamu bisa. Jangan terlena karena waktu antara gelombang yang lama.
sector.nuclearComplex.description = Sebuah fasilitas untuk memproduksi dan memproses thorium, telah hancur.\n[lightgray]Pelajari thorium dan cara penggunaanya.\n\nMusuh disini menyerang dalam jumlah besar, yang siap untuk menghadapi siapapun. sector.nuclearComplex.description = Sebuah fasilitas untuk memproduksi dan memproses thorium, telah hancur.\n[lightgray]Pelajari thorium dan cara penggunaanya.\n\nMusuh disini menyerang dalam jumlah besar, yang siap untuk menghadapi siapapun.
sector.fungalPass.description = Area ini terdapat diantara pegunungan yang lebih tinggi dengan yang lebih rendah, juga daerah yang dipenuhi spora. Musuh membangun basis kecil disini.\nHancurkan itu.\nGunakan unit Dagger dan Crawler. Hancurkan dua inti mereka. sector.fungalPass.description = Area ini terdapat diantara pegunungan yang lebih tinggi dengan yang lebih rendah, juga daerah yang dipenuhi spora. Musuh membangun basis kecil disini.\nHancurkan itu.\nGunakan unit Dagger dan Crawler. Hancurkan dua inti mereka.
@@ -674,7 +674,7 @@ status.overclock.name = Melebihi Batas
status.shocked.name = Mengkejut status.shocked.name = Mengkejut
status.blasted.name = Meledak status.blasted.name = Meledak
status.unmoving.name = Terdiam status.unmoving.name = Terdiam
status.boss.name = Guardian status.boss.name = Penjaga
settings.language = Bahasa settings.language = Bahasa
settings.data = Data Game settings.data = Data Game
@@ -822,7 +822,7 @@ bullet.damage = [stat]{0}[lightgray] kekuatan (dmg)
bullet.splashdamage = [stat]{0}[lightgray] kekuatan percikan~[stat] {1}[lightgray] kotak bullet.splashdamage = [stat]{0}[lightgray] kekuatan percikan~[stat] {1}[lightgray] kotak
bullet.incendiary = [stat]membakar bullet.incendiary = [stat]membakar
bullet.homing = [stat]mengejar bullet.homing = [stat]mengejar
bullet.frags = [stat]{0}[lightgray]x frag bullets: bullet.frags = [stat]{0}[lightgray]x pecahan:
bullet.lightning = [stat]{0}[lightgray]x petir ~ [stat]{1}[lightgray] kerusakan bullet.lightning = [stat]{0}[lightgray]x petir ~ [stat]{1}[lightgray] kerusakan
bullet.buildingdamage = [stat]{0}%[lightgray] kerusakan bangunan bullet.buildingdamage = [stat]{0}%[lightgray] kerusakan bangunan
bullet.knockback = [stat]{0}[lightgray] terdorong bullet.knockback = [stat]{0}[lightgray] terdorong
@@ -1077,7 +1077,7 @@ item.lead.name = Timah
item.coal.name = Batu Bara item.coal.name = Batu Bara
item.graphite.name = Grafit item.graphite.name = Grafit
item.titanium.name = Titanium item.titanium.name = Titanium
item.thorium.name = Thorium item.thorium.name = Torium
item.silicon.name = Silikon item.silicon.name = Silikon
item.plastanium.name = Plastanium item.plastanium.name = Plastanium
item.phase-fabric.name = Kain Phase item.phase-fabric.name = Kain Phase
@@ -1250,7 +1250,7 @@ block.underflow-gate.name = Gerbang Luap Terbalik
block.silicon-smelter.name = Pelebur Silikon block.silicon-smelter.name = Pelebur Silikon
block.phase-weaver.name = Pengrajut Phase block.phase-weaver.name = Pengrajut Phase
block.pulverizer.name = Penghancur block.pulverizer.name = Penghancur
block.cryofluid-mixer.name = Cryofluid Mixer block.cryofluid-mixer.name = Penyampur Cairan Dingin
block.melter.name = Pencair block.melter.name = Pencair
block.incinerator.name = Penghangus block.incinerator.name = Penghangus
block.spore-press.name = Penekan Spora block.spore-press.name = Penekan Spora
@@ -1468,11 +1468,11 @@ block.incinerator.description = Menghancurkan bahan atau zat cair yang masuk.
block.power-void.description = Menghilangkan semua tenaga yang masuk kedalamnya. Sandbox eksklusif. block.power-void.description = Menghilangkan semua tenaga yang masuk kedalamnya. Sandbox eksklusif.
block.power-source.description = Menghasilkan tenaga tak terhingga. Sandbox eksklusif. block.power-source.description = Menghasilkan tenaga tak terhingga. Sandbox eksklusif.
block.item-source.description = Mengeluarkan bahan tak terhingga. Sandbox eksklusif. block.item-source.description = Mengeluarkan bahan tak terhingga. Sandbox eksklusif.
block.item-void.description = Menghancurkan bahan apa saja. Sandbox eksklusif. block.item-void.description = Menghancurkan bahan yang masuk. Sandbox eksklusif.
block.liquid-source.description = Mengeluarkan zat cair tak terhingga. Sandbox eksklusif. block.liquid-source.description = Mengeluarkan zat cair tak terhingga. Sandbox eksklusif.
block.liquid-void.description = Menghancurkan zat cair apa saja. Sandbox eksklusif. block.liquid-void.description = Menghancurkan zat cair yang masuk. Sandbox eksklusif.
block.payload-source.description = Infinitely outputs payloads. Sandbox only. block.payload-source.description = Mengeluarkan muatan tak terhingga. Sandbox eksklusif.
block.payload-void.description = Destroys any payloads. Sandbox only. block.payload-void.description = Menghancurkan muatan apapun. Sandbox eksklusif.
block.copper-wall.description = Melindungi bangunan dari tembakan musuh. block.copper-wall.description = Melindungi bangunan dari tembakan musuh.
block.copper-wall-large.description = Melindungi bangunan dari tembakan musuh. block.copper-wall-large.description = Melindungi bangunan dari tembakan musuh.
block.titanium-wall.description = Melindungi bangunan dari tembakan musuh. block.titanium-wall.description = Melindungi bangunan dari tembakan musuh.
@@ -1660,7 +1660,7 @@ logic.nounitbuild = [red]Logika unit membangun tidak diperbolehkan di sini.
lenum.type = Bentuk dari bangunan/unit.\nMisalnya, untuk blok pengarah masa, akan tampil sebagai [accent]@router[].\nBukan string. lenum.type = Bentuk dari bangunan/unit.\nMisalnya, untuk blok pengarah masa, akan tampil sebagai [accent]@router[].\nBukan string.
lenum.shoot = Menembak pada suatu posisi yang ditentukan. lenum.shoot = Menembak pada suatu posisi yang ditentukan.
lenum.shootp = Menembak pada unit/bangunan dengan prediksi kecepatan. lenum.shootp = Menembak pada unit/bangunan dengan prediksi kecepatan.
lenum.config = Building configuration, e.g. sorter item. lenum.config = Pengaturan bangunan, misalnya menyortir barang.
lenum.enabled = Menentukan aktif tidaknya suatu blok. lenum.enabled = Menentukan aktif tidaknya suatu blok.
laccess.color = Warna lampu. laccess.color = Warna lampu.
@@ -1709,7 +1709,7 @@ lenum.asin = Arc sinus, dalam derajat.
lenum.acos = Arc kosinus, dalam derajat. lenum.acos = Arc kosinus, dalam derajat.
lenum.atan = Arc tangen, dalam derajat. lenum.atan = Arc tangen, dalam derajat.
#bukan typo, cari 'daerah hasil fungsi' #bukan typo, lihat 'daerah hasil fungsi'
lenum.rand = Angka Acak dalam jarak [0, value). lenum.rand = Angka Acak dalam jarak [0, value).
lenum.log = Logaritma natural (ln). lenum.log = Logaritma natural (ln).
lenum.log10 = Logaritma basis 10. lenum.log10 = Logaritma basis 10.

View File

@@ -13,7 +13,7 @@ link.google-play.description = Google Play ストアを開く
link.f-droid.description = F-Droid を開く link.f-droid.description = F-Droid を開く
link.wiki.description = 公式 Mindustry Wiki link.wiki.description = 公式 Mindustry Wiki
link.suggestions.description = 新機能を提案する link.suggestions.description = 新機能を提案する
link.bug.description = Found one? Report it here link.bug.description = バグを見つけましたか?ぜひここから報告して下さい。
linkfail = リンクを開けませんでした!\nURLをクリップボードにコピーしました。 linkfail = リンクを開けませんでした!\nURLをクリップボードにコピーしました。
screenshot = スクリーンショットを {0} に保存しました。 screenshot = スクリーンショットを {0} に保存しました。
screenshot.invalid = マップが広すぎます。スクリーンショットに必要なメモリが足りない可能性があります。 screenshot.invalid = マップが広すぎます。スクリーンショットに必要なメモリが足りない可能性があります。
@@ -457,7 +457,7 @@ editor.exportimage = 地形画像をエクスポート
editor.exportimage.description = 地形のみのマップ画像をエクスポートする editor.exportimage.description = 地形のみのマップ画像をエクスポートする
editor.loadimage = 地形をインポート editor.loadimage = 地形をインポート
editor.saveimage = 地形をエクスポート editor.saveimage = 地形をエクスポート
editor.unsaved = [scarlet]保存されていない変更があります![]\n終了してもよろしいですか? editor.unsaved = [scarlet]保存されていない変更は失われます![]\n終了してもよろしいですか?
editor.resizemap = マップをリサイズ editor.resizemap = マップをリサイズ
editor.mapname = マップ名: editor.mapname = マップ名:
editor.overwrite = [accent]警告!\nすでに存在するマップを上書きします。 editor.overwrite = [accent]警告!\nすでに存在するマップを上書きします。
@@ -533,7 +533,7 @@ ping = Ping: {0}ms
tps = TPS: {0} tps = TPS: {0}
memory = Mem: {0}mb memory = Mem: {0}mb
memory2 = Mem:\n {0}mb +\n {1}mb memory2 = Mem:\n {0}mb +\n {1}mb
language.restart = ゲームを再起動、言語設定が有効になります。 language.restart = ゲームを再起動すると、言語設定が有効になります。
settings = 設定 settings = 設定
tutorial = チュートリアル tutorial = チュートリアル
tutorial.retake = チュートリアル tutorial.retake = チュートリアル
@@ -546,9 +546,9 @@ locked = ロック
complete = [lightgray]達成済み: complete = [lightgray]達成済み:
requirement.wave = {1} でウェーブ {0} に到達 requirement.wave = {1} でウェーブ {0} に到達
requirement.core = {0} の敵のコアを破壊 requirement.core = {0} の敵のコアを破壊
requirement.research = 研究 {0} requirement.research = 研究: {0}
requirement.produce = 獲得 {0} requirement.produce = 獲得: {0}
requirement.capture = 制圧 {0} requirement.capture = 制圧: {0}
launch.text = 発射 launch.text = 発射
research.multiplayer = 研究できるのはホストのみです。 research.multiplayer = 研究できるのはホストのみです。
map.multiplayer = ホストのみがセクターを表示できます。 map.multiplayer = ホストのみがセクターを表示できます。
@@ -569,11 +569,11 @@ guardian = ガーディアン
connectfail = [crimson]サーバーへ接続できませんでした:\n\n[accent]{0} connectfail = [crimson]サーバーへ接続できませんでした:\n\n[accent]{0}
error.unreachable = サーバーに到達できません。\nアドレスは正しいですか? error.unreachable = サーバーに到達できません。\nアドレスは正しいですか?
error.invalidaddress = 無効なアドレスです。 error.invalidaddress = 無効なアドレスです。
error.timedout = タイムアウトしました!\nホストがポート開放されているかを確認してください。 error.timedout = タイムアウトしました!\nホストがポート開放ているかを確認してください。
error.mismatch = パケットエラー:\n恐らくクライアント/サーバーのバージョンが一致していません。\nゲームとサーバーが最新版のMindustryかどうかを確認してください! error.mismatch = パケットエラー:\n恐らくクライアント/サーバーのバージョンが一致していません。\nゲームとサーバーが最新版のMindustryかどうかを確認してください!
error.alreadyconnected = すでに接続されています。 error.alreadyconnected = すでに接続されています。
error.mapnotfound = マップファイルが見つかりません! error.mapnotfound = マップファイルが見つかりません!
error.io = ネットワークエラーです。 error.io = I/O ネットワークエラーです。
error.any = 不明なネットワークエラーです。 error.any = 不明なネットワークエラーです。
error.bloom = ブルームの初期化に失敗しました。\n恐らくあなたのデバイスではブルームがサポートされていません。 error.bloom = ブルームの初期化に失敗しました。\n恐らくあなたのデバイスではブルームがサポートされていません。
@@ -593,7 +593,7 @@ sectors.import = Import:
sectors.time = 時間: sectors.time = 時間:
sectors.threat = 脅威: sectors.threat = 脅威:
sectors.wave = ウェーブ: sectors.wave = ウェーブ:
sectors.stored = 保存済み: sectors.stored = コアの資源:
sectors.resume = 再開 sectors.resume = 再開
sectors.launch = 打ち上げ sectors.launch = 打ち上げ
sectors.select = 選択 sectors.select = 選択
@@ -624,46 +624,46 @@ planets = 惑星
planet.serpulo.name = セルプロ planet.serpulo.name = セルプロ
planet.sun.name = 太陽 planet.sun.name = 太陽
sector.impact0078.name = インパクト 0078 sector.impact0078.name = 墜落地点 0078
sector.groundZero.name = グラウンド · ゼロ sector.groundZero.name = 爆心地
sector.craters.name = ザ · クレーター sector.craters.name = クレーター
sector.frozenForest.name = フローズン · フォレスト sector.frozenForest.name = 凍える森
sector.ruinousShores.name = ルーイナス · ショアーズ sector.ruinousShores.name = 荒廃した海岸
sector.stainedMountains.name = ステインド · マウンテン sector.stainedMountains.name = 汚染された山脈
sector.desolateRift.name = ディサレット · リフト sector.desolateRift.name = 荒涼たる峡谷
sector.nuclearComplex.name = ニュークリア · プロダクション · コンプレックス sector.nuclearComplex.name = 原子力生産施設
sector.overgrowth.name = オーバーグロウス sector.overgrowth.name = 繁茂した胞子地帯
sector.tarFields.name = ター · フィールズ sector.tarFields.name = 石油埋蔵地
sector.saltFlats.name = ソルト · フラッツ sector.saltFlats.name = 塩田平野
sector.fungalPass.name = ファングル · パス sector.fungalPass.name = 真菌の道
sector.biomassFacility.name = バイオマス · シンテシス · ファシリティ sector.biomassFacility.name = バイオマス研究施設
sector.windsweptIslands.name = ウインドスイープト · アイランズ sector.windsweptIslands.name = 吹きさらしの列島
sector.extractionOutpost.name = エクストラクション · アウトポスト sector.extractionOutpost.name = 資源搬出前哨基地
sector.planetaryTerminal.name = プラネタリー · ローンチ · ターミナル sector.planetaryTerminal.name = 惑星間発射ターミナル
sector.coastline.name = 海岸線 sector.coastline.name = 海岸線
sector.navalFortress.name = 海軍要塞 sector.navalFortress.name = 海軍要塞
sector.groundZero.description = 奪回を始めるには最適な場所です。敵脅威はいですが、資源が乏しいです。\nできるだけ多くの銅と鉛を集めま。\n始めましょう。 sector.groundZero.description = 奪回を始めるには最適な場所です。敵脅威は小さいですが、資源が乏しいです。\nできるだけ多くの銅と鉛を集めましょう。\n始めましょう。
sector.frozenForest.description = ここでさえ、山に近づくほど胞子が広がっています。\n極寒の気温もそれらを永遠に封じ込めることはできませんでした。\n\n電気に挑みましょう。\n火力発電機を建設し、修復機の使い方を学びましょう。 sector.frozenForest.description = ここでさえ、山に近づくほど胞子が広がっています。\n極寒の気候もでさえ胞子を永遠に封じ込めることはできませんでした。\n\n電気に挑みましょう。\n火力発電機を建設し、修復機の使い方を学びましょう。
sector.saltFlats.description = 砂漠のはずれにあるソルト · フラッツです。\nここには資源がほとんどありません。\n\n敵はここに資源貯蔵施設を建設しました。\n彼らのコアを絶ち、掃滅してください。 sector.saltFlats.description = 砂漠のはずれにある平野です。\nここには資源がほとんどありません。\n\n敵はここに資源貯蔵施設を建設しました。\n彼らのコアを破壊し、掃滅してください。
sector.craters.description = 過去の戦争の名残であるクレーターに水が溜まっています。\nエリアを取り戻し、砂を集め、メタガラスを精錬しましょう。\nタレットとドリルを冷却するためには水をポンプで送る必要があります。 sector.craters.description = 過去の戦争の名残であるクレーターに水が溜まっています。\nエリアを取り戻し、砂を集め、メタガラスを精錬しましょう。\nタレットとドリルを冷却するためには水をポンプで送る必要があります。
sector.ruinousShores.description = 荒れ地を過ぎると海岸線です。\nここにはかつて沿岸防衛隊が配備されていましたが、ほぼ残存していません。\n最も基本的な防衛施設のみが無傷のまま残っており、それ以外は全て破壊されています。\n外部拡張を続け、テクノロジーを再取得してください sector.ruinousShores.description = 荒れ地を過ぎると海岸線です。\nここにはかつて沿岸防衛隊が配備されていましたが、ほぼ残存していません。\n最も基本的な防衛施設のみが無傷のまま残っており、それ以外は全て破壊されています。\n外部拡張を続け、研究を再発見していきましょう
sector.stainedMountains.description = 更に内陸には、胞子に汚染されていない山があります。\nこの地域にはチタンが豊富にあります。抽出して使い方を学びましょう。\n\nここにはより多くの敵が襲来します。強力なユニットを送る時間を与えないでください。 sector.stainedMountains.description = 更に内陸には、胞子に汚染されていない山があります。\nこの地域にはチタンが豊富にあります。抽出して使い方を学びましょう。\n\nここにはより多くの敵が襲来します。強力なユニットを送る時間を与えないでください。
sector.overgrowth.description = このエリアは、胞子の発生源に近く生い茂っています。\n敵はここに前哨基地を配備しました。タイタンユニットを生産し、破壊してください。\n失ったものを取り戻すのです。 sector.overgrowth.description = このエリアは、胞子の発生源に近く生い茂っています。\n敵はここに前哨基地を配備しました。ユニットの"メイス"を生産し、破壊してください。\n失ったものを取り戻すのです。
sector.tarFields.description = 山と砂漠に挟まれた、石油産出地帯のはずれです。\n使用可能なタール埋蔵量がある数少ないエリアの1つです。\n放棄されたエリアですが、近くに脅威となる敵がいます。\n\n[lightgray]可能であれば石油抽出機を研究しましょう。 sector.tarFields.description = 山と砂漠に挟まれた、石油産出地帯のはずれです。\n用可能な石油が埋蔵する数少ないエリアの1つです。\n放棄されたエリアですが、近くに脅威となる敵がいます。\n\n[lightgray]可能であれば石油に関連する施設を研究しましょう。
sector.desolateRift.description = 非常に危険な地帯です。資源は豊富ですが、領域が十分にありません。破壊されるリスクが高いため、一刻も早く立ち去りましょう。\n敵の攻撃間隔が長いですが、気を抜かないでください。 sector.desolateRift.description = 非常に危険な地帯です。資源は豊富ですが、領域が十分にありません。破壊されるリスクが高いため、一刻も早く立ち去りましょう。\n敵の攻撃間隔が長いですが、気を抜かないでください。
sector.nuclearComplex.description = 崩壊したトリウム製造・加工施設です。\n[lightgray]トリウムとその多くの用途を研究してください。\n\n多くの敵がここに存在し、常に攻撃を偵察しています。 sector.nuclearComplex.description = 崩壊したトリウム製造・加工施設です。\n[lightgray]トリウムとその多くの用途を研究してください。\n\n多くの敵がここに存在し、常に攻撃を偵察しています。
sector.fungalPass.description = 高山と、胞子の多い低地との間の遷移地域です。\nここには敵の小さな偵察基地があります。\n破壊してください。\nダガーとクローラーユニットを使い、2つの敵コアの排除しましょう、 sector.fungalPass.description = 高山と、胞子の多い低地との間の遷移地域です。\nここには敵の小さな偵察基地があります。\n破壊してください。\nダガーとクローラーユニットを使い、2つの敵コアの排除しましょう、
sector.biomassFacility.description = 胞子の発生源です。\nこれらは胞子の研究のために、最初に建設された施設です。\n内部に残された技術を研究しましょう。燃料とプラスタニウムの生産のために胞子を培養します。\n\n[lightgray]この施設が活動停止したために、胞子が放出されました。地域の生態系には、そのような侵略的生物と競合するものはありません。 sector.biomassFacility.description = 胞子の発生源です。\nこれらは胞子の研究のために、最初に建設された施設です。\n内部に残された技術を研究しましょう。燃料とプラスタニウムの生産のために胞子を培養します。\n\n[lightgray]この施設が活動停止したために、胞子が放出されました。地域の生態系には、そのような侵略的生物と競合するものはありません。
sector.windsweptIslands.description = 海岸をさらに進むと、辺鄙な列島があります。記録によると、ここにはかつて[accent]プラスタニウム[]生産するシステムがありました。\n\n敵の海軍ユニットを撃沈してください。島々に基地を建造し、これらの工場を調査しましょう。 sector.windsweptIslands.description = 海岸をさらに進むと、辺鄙な列島があります。記録によれば、ここにはかつて[accent]プラスタニウム[]生産施設がありました。\n\n敵の海軍ユニットを撃沈してください。島々に基地を建造し、これらの工場を調査しましょう。
sector.extractionOutpost.description = 他のセクターへ資源を輸送するために建設された敵の遠隔地の前哨基地です。\n\nさらなる征伐のためには、セクター間を通ずる輸送技術が不可欠です。基地を破壊してください。彼らの発射台を研究しましょう。 sector.extractionOutpost.description = 他のセクターへ資源を輸送するために建設された敵の遠隔地の前哨基地です。\n\nさらなる征伐のためには、セクター間を通ずる輸送技術が不可欠です。基地を破壊してください。彼らの発射台を研究しましょう。
sector.impact0078.description = ここには、最初にこの星系に入った星間輸送船の残骸があります。\n\n残骸を可能な限り回収し、解析可能な技術を研究しましょう。 sector.impact0078.description = ここには、最初にこの星系に入った星間輸送船の残骸があります。\n\n残骸を可能な限り回収し、解析可能な技術を研究しましょう。
sector.planetaryTerminal.description = 最終目標です。\n\nこの沿岸基地には、コアを他の惑星に打ち上げることが出来る建造物があります。しかし、極めて堅固に守られています。\n\n海軍ユニットを生産し、可及的速やかに敵を排除してください。\nそして、発射建造物を研究しましょう。 sector.planetaryTerminal.description = 最終目標です。\n\nこの沿岸基地には、コアを他の惑星に打ち上げることが出来る建造物があります。しかし、極めて堅固に守られています。\n\n海軍ユニットを生産し、可及的速やかに敵を排除してください。\nそして、発射を研究しましょう。
status.burning.name = 燃焼 status.burning.name = 燃焼
status.freezing.name = 凍結 status.freezing.name = 凍結
status.wet.name = 湿潤 status.wet.name = 水濡れ
status.muddy.name = Muddy status.muddy.name = 泥だらけ
status.melting.name = 溶解 status.melting.name = 溶解
status.sapped.name = 吸収 status.sapped.name = 吸収
status.electrified.name = 帯電 status.electrified.name = 帯電
@@ -673,7 +673,7 @@ status.overdrive.name = オーバードライブ
status.overclock.name = オーバークロック status.overclock.name = オーバークロック
status.shocked.name = 電撃 status.shocked.name = 電撃
status.blasted.name = 爆破 status.blasted.name = 爆破
status.unmoving.name = 移動 status.unmoving.name = 移動
status.boss.name = ガーディアン status.boss.name = ガーディアン
settings.language = 言語 settings.language = 言語
@@ -909,7 +909,7 @@ setting.smoothcamera.name = スムーズなカメラ
setting.vsync.name = 垂直同期 setting.vsync.name = 垂直同期
setting.pixelate.name = ピクセル化[lightgray] (アニメーションが無効化されます) setting.pixelate.name = ピクセル化[lightgray] (アニメーションが無効化されます)
setting.minimap.name = ミニマップを表示 setting.minimap.name = ミニマップを表示
setting.coreitems.name = コアの資源を表示 (WIP) setting.coreitems.name = コアの資源を表示
setting.position.name = プレイヤーの位置表示 setting.position.name = プレイヤーの位置表示
setting.musicvol.name = 音楽 音量 setting.musicvol.name = 音楽 音量
setting.atmosphere.name = 惑星の大気を表示 setting.atmosphere.name = 惑星の大気を表示
@@ -1295,7 +1295,7 @@ block.solar-panel.name = ソーラーパネル
block.solar-panel-large.name = 大型ソーラーパネル block.solar-panel-large.name = 大型ソーラーパネル
block.oil-extractor.name = 石油抽出機 block.oil-extractor.name = 石油抽出機
block.repair-point.name = 修復ポイント block.repair-point.name = 修復ポイント
block.repair-turret.name = 修復タレット block.repair-turret.name = 修復タレット
block.pulse-conduit.name = パルスパイプ block.pulse-conduit.name = パルスパイプ
block.plated-conduit.name = メッキパイプ block.plated-conduit.name = メッキパイプ
block.phase-conduit.name = フェーズパイプ block.phase-conduit.name = フェーズパイプ
@@ -1336,7 +1336,7 @@ block.additive-reconstructor.name = 加法式再構成工場
block.multiplicative-reconstructor.name = 乗法式再構成工場 block.multiplicative-reconstructor.name = 乗法式再構成工場
block.exponential-reconstructor.name = 指数式再構成工場 block.exponential-reconstructor.name = 指数式再構成工場
block.tetrative-reconstructor.name = 超冪式再構成工場 block.tetrative-reconstructor.name = 超冪式再構成工場
block.payload-conveyor.name = マスコンベアー block.payload-conveyor.name = ペイロードコンベアー
block.payload-router.name = ペイロードルーター block.payload-router.name = ペイロードルーター
block.duct.name = ダクト block.duct.name = ダクト
block.duct-router.name = ダクトルーター block.duct-router.name = ダクトルーター
@@ -1388,15 +1388,15 @@ hint.placeDrill = 右下のメニューの\ue85e [accent]ドリル[]タブを選
hint.placeDrill.mobile = 右下のメニューの\ue85e [accent]ドリル[]タブを選択し、\uf870 [accent]ドリル[]を選択し、銅地域をタップして配置します。\n\n右下の\ue800 [accent]チェックマーク[]をタップして確認します。 hint.placeDrill.mobile = 右下のメニューの\ue85e [accent]ドリル[]タブを選択し、\uf870 [accent]ドリル[]を選択し、銅地域をタップして配置します。\n\n右下の\ue800 [accent]チェックマーク[]をタップして確認します。
hint.placeConveyor = コンベアーを使い、アイテムをドリルから他のブロックへ移動します。\ue814 [accent]運搬[]タブから、\uf896 [accent]コンベアー[]を選択します。\n\n複数のコンベアーを配置するには、クリックしてドラッグします。\n[accent]マウスホイール[]により回転します。 hint.placeConveyor = コンベアーを使い、アイテムをドリルから他のブロックへ移動します。\ue814 [accent]運搬[]タブから、\uf896 [accent]コンベアー[]を選択します。\n\n複数のコンベアーを配置するには、クリックしてドラッグします。\n[accent]マウスホイール[]により回転します。
hint.placeConveyor.mobile = コンベアーを使い、アイテムをドリルから他のブロックへ移動します。\ue814 [accent]運搬[]タブから、\uf896 [accent]コンベアー[]を選択します。\n\n指を秒間押したままドラッグすると、複数のコンベアーを配置します。 hint.placeConveyor.mobile = コンベアーを使い、アイテムをドリルから他のブロックへ移動します。\ue814 [accent]運搬[]タブから、\uf896 [accent]コンベアー[]を選択します。\n\n指を秒間押したままドラッグすると、複数のコンベアーを配置します。
hint.placeTurret = \uf861 [accent]タレット[]を配置して、敵から基地を守ります。\n\nタレットには弾薬が必要です。この場合は\uf838銅です。\nコンベアーとドリルを使用して補給します。 hint.placeTurret = \uf861 [accent]タレット[]を配置して、敵から基地を守ります。\n\nタレットには弾薬が必要です。この場合は\uf838銅です。\nコンベアーとドリルを使用して補給します。
hint.breaking = [accent]右クリック[]と右クリックドラッグによりブロックを壊します。 hint.breaking = [accent]右クリック[]と右クリックドラッグによりブロックを壊します。
hint.breaking.mobile = 右下にある\ue817 [accent]ハンマー[]をアクティブにして、タップしてブロックを壊します。\n\n指を秒間押したままドラッグすると、範囲選択が出来ます。 hint.breaking.mobile = 右下にある\ue817 [accent]ハンマー[]をアクティブにして、タップしてブロックを壊します。\n\n指を秒間押したままドラッグすると、範囲選択が出来ます。
hint.blockInfo = [accent]建築メニュー[]でブロックを選択し、右側の[accent][[?][]ボタンを押すと、ブロックの情報が表示されます。 hint.blockInfo = [accent]建築メニュー[]でブロックを選択し、右側の[accent][[?][]ボタンを押すと、ブロックの情報が表示されます。
hint.derelict = [accent]放棄[]され、すでに機能を失った古い基地建造物の残骸です。\n\nこれらは[accent]解体[]することにより、資源になります。 hint.derelict = [accent]放棄[]され、すでに機能を失った古い基地建造物の残骸です。\n\nこれらは[accent]解体[]することにより、資源になります。
hint.research = \ue875 [accent]研究[]ボタンを押して、新しいテクノロジーを研究します。 hint.research = \ue875 [accent]研究[]ボタンを押して、新しいテクノロジーを研究します。
hint.research.mobile = \ue88c [accent]メニュー[]の\ue875 [accent]研究[]ボタンを押して、新しいテクノロジーを研究します。 hint.research.mobile = \ue88c [accent]メニュー[]の\ue875 [accent]研究[]ボタンを押して、新しいテクノロジーを研究します。
hint.unitControl = [accent][[左ctrl][]を押しながら[accent]クリック[]するとタレットや味方ユニットを操作できます。 hint.unitControl = [accent][[左ctrl][]を押しながら[accent]クリック[]するとタレットや味方ユニットを操作できます。
hint.unitControl.mobile = [accent][ダブルタップ[]すると味方ユニットやタレットを操作できます。 hint.unitControl.mobile = [accent][ダブルタップ[]すると味方ユニットやタレットを操作できます。
hint.launch = 十分な資源を確保できたら、右下の\ue827 [accent]マップ[]から、近くのセクターを選択して[accent]発射[]できます。 hint.launch = 十分な資源を確保できたら、右下の\ue827 [accent]マップ[]から、近くのセクターを選択して[accent]発射[]できます。
hint.launch.mobile = 十分な資源を確保できたら、\ue88c [accent]メニュー[]の\ue827 [accent]マップ[]から、近くのセクターを選択して[accent]発射[]できます。 hint.launch.mobile = 十分な資源を確保できたら、\ue88c [accent]メニュー[]の\ue827 [accent]マップ[]から、近くのセクターを選択して[accent]発射[]できます。
hint.schematicSelect = [accent][[F][]を押しながらドラッグして、コピー&ペーストするブロックを選択します。\n\n[accent][[ミドルクリック][]により、1つのブロックタイプをコピーします。 hint.schematicSelect = [accent][[F][]を押しながらドラッグして、コピー&ペーストするブロックを選択します。\n\n[accent][[ミドルクリック][]により、1つのブロックタイプをコピーします。
@@ -1409,7 +1409,7 @@ hint.payloadPickup = [accent][[[]を押して、小さなブロックまたは
hint.payloadPickup.mobile = [accent]タップ&ホールド[]により、小さなブロックまたはユニットを格納します。 hint.payloadPickup.mobile = [accent]タップ&ホールド[]により、小さなブロックまたはユニットを格納します。
hint.payloadDrop = [accent]][]を押すと、積載物を降ろします。 hint.payloadDrop = [accent]][]を押すと、積載物を降ろします。
hint.payloadDrop.mobile = 空いている場所を[accent]タップ&ホールド[]して、積載物を降ろします。 hint.payloadDrop.mobile = 空いている場所を[accent]タップ&ホールド[]して、積載物を降ろします。
hint.waveFire = [accent]ウェーブ[]タレットは水を搬入すると、近くの火を自動的に消火します。 hint.waveFire = [accent]ウェーブ[]タレットは水を搬入すると、近くの火を自動的に消火します。
hint.generator = \uf879 [accent]火力発電機[]石炭を燃やし、隣接するブロックに電力を供給します。\n\n電力供給範囲は\uf87f [accent]電源ノード[]で拡張できます。 hint.generator = \uf879 [accent]火力発電機[]石炭を燃やし、隣接するブロックに電力を供給します。\n\n電力供給範囲は\uf87f [accent]電源ノード[]で拡張できます。
hint.guardian = [accent]ガーディアン[]ユニットは装甲を搭載しています。[accent]銅[]や[accent]鉛[]などの弱い弾薬は[scarlet]効果がありません[]。\n\n強力なターレット、または\uf861デュオ/\uf859サルボーの弾薬に\uf835 [accent]黒鉛[]を使用してガーディアンを撃破してください。 hint.guardian = [accent]ガーディアン[]ユニットは装甲を搭載しています。[accent]銅[]や[accent]鉛[]などの弱い弾薬は[scarlet]効果がありません[]。\n\n強力なターレット、または\uf861デュオ/\uf859サルボーの弾薬に\uf835 [accent]黒鉛[]を使用してガーディアンを撃破してください。
hint.coreUpgrade = コアは [accent]上位のコアを配置することでアップグレードできます[]。\n\n \uf869 [accent]シャード[]コアの上に、 \uf868 [accent]ファンデーション[]コアを置きます。近くに障害物がないことを確認してください。 hint.coreUpgrade = コアは [accent]上位のコアを配置することでアップグレードできます[]。\n\n \uf869 [accent]シャード[]コアの上に、 \uf868 [accent]ファンデーション[]コアを置きます。近くに障害物がないことを確認してください。
@@ -1473,26 +1473,26 @@ block.liquid-source.description = 液体を無限に搬出します。サンド
block.liquid-void.description = 液体を破棄できます。サンドボックスモードのみ使用できます。 block.liquid-void.description = 液体を破棄できます。サンドボックスモードのみ使用できます。
block.payload-source.description = ペイロードを無限に搬出します。サンドボックスモードのみ使用できます。 block.payload-source.description = ペイロードを無限に搬出します。サンドボックスモードのみ使用できます。
block.payload-void.description = ペイロードを破棄できます。サンドボックスモードのみ使用できます。 block.payload-void.description = ペイロードを破棄できます。サンドボックスモードのみ使用できます。
block.copper-wall.description = 安価な防壁ブロックです。\n最初のウェーブでコアやタレットを保護するのに有用です。 block.copper-wall.description = 安価な防壁ブロックです。\n最初のウェーブでコアやタレットを保護するのに有用です。
block.copper-wall-large.description = 安価な大型防壁ブロックです。\n最初のウェーブでコアやタレットを保護するのに有用です。 block.copper-wall-large.description = 安価な大型防壁ブロックです。\n最初のウェーブでコアやタレットを保護するのに有用です。
block.titanium-wall.description = 適度に強力な防壁ブロックです。\n中程度の攻撃から保護します。 block.titanium-wall.description = 適度に強力な防壁ブロックです。\n中程度の攻撃から保護します。
block.titanium-wall-large.description = 適度に強力な大型防壁ブロックです。\n中程度の攻撃から保護します。 block.titanium-wall-large.description = 適度に強力な大型防壁ブロックです。\n中程度の攻撃から保護します。
block.plastanium-wall.description = 気アークを吸収し、電源ノードの自動接続をブロックする特別な壁です。 block.plastanium-wall.description = レーザー弾や放電を吸収し、電源ノードの自動接続をブロックする特別な壁です。
block.plastanium-wall-large.description = 気アークを吸収し、電源ノードの自動接続をブロックする特別で大型な壁です。 block.plastanium-wall-large.description = レーザー弾や放電を吸収し、電源ノードの自動接続をブロックする特別で大型な壁です。
block.thorium-wall.description = より強固に強化された防壁ブロックです。 block.thorium-wall.description = より強固に強化された防壁ブロックです。
block.thorium-wall-large.description = より強固に強化された大型防壁ブロックです。 block.thorium-wall-large.description = より強固に強化された大型防壁ブロックです。
block.phase-wall.description = トリウムの壁ほど強固ではないが、強力な弾でなければ弾き返すことができます。 block.phase-wall.description = トリウムの壁ほど強固ではないが、強力な弾でなければ弾き返すことができます。
block.phase-wall-large.description = トリウムの壁ほど強固ではないが、強力な弾でなければ弾き返すことができます。 block.phase-wall-large.description = トリウムの壁ほど強固ではないが、強力な弾でなければ弾き返すことができます。
block.surge-wall.description = 最も硬い防壁ブロックです。\nたまに攻撃されると敵に電撃を与えます。 block.surge-wall.description = 最も硬い防壁ブロックです。\n攻撃されるとたまに放電して敵を攻撃します。
block.surge-wall-large.description = 最も硬い大型防壁ブロックです。\nたまに攻撃されると敵に電撃を与えます。 block.surge-wall-large.description = 最も硬い大型防壁ブロックです。\n攻撃されるとたまに放電して敵を攻撃します。
block.door.description = 小さなドアブロックです。タップすることで開閉することができます。\nただし、ドアが開いている場合、弾や敵も通過できます。 block.door.description = 小さなドアブロックです。タップすることで開閉することができます。\nただし、ドアが開いている場合、弾や敵も通過できます。
block.door-large.description = 大型のドアブロックです。タップすることで開閉することができます。\nただし、ドアが開いている場合、弾や敵も通過できます。 block.door-large.description = 大型のドアブロックです。タップすることで開閉することができます。\nただし、ドアが開いている場合、弾や敵も通過できます。
block.mender.description = 定期的に周囲のブロックを修復します。ウェーブの間も修復し続けます。\nオプションでシリコンを利用して、さらに効率的に修復が出来ます。 block.mender.description = 定期的に周囲のブロックを修復します。ウェーブの間も修復し続けます。\nオプションでシリコンを利用して、さらに効率的に修復が出来ます。
block.mend-projector.description = 修復機のアップグレード版です。定期的に周辺のブロックを修復します。\nオプションでフェーズファイバーを利用して、さらに効率的に修復が出来ます。 block.mend-projector.description = 修復機のアップグレード版です。定期的に周辺のブロックを修復します。\nオプションでフェーズファイバーを利用して、さらに効率的に修復が出来ます。
block.overdrive-projector.description = ドリルやコンベアーなど、近くの施設の効率を向上させます。 block.overdrive-projector.description = ドリルやコンベアーなど、近くの施設の効率を向上させます。
block.force-projector.description = 周囲に六角形の力場を作り出し、内部の建造物やユニットなどを守ります。 block.force-projector.description = 周囲に六角形の力場を作り出し、内部の建造物やユニットなどを守ります。
block.shock-mine.description = 踏んだ敵にダメージを与えます。敵に見えることはありません。 block.shock-mine.description = 敵が踏んだ時に放電し、踏んだ敵にダメージを与えます。敵に見えることはありません。
block.conveyor.description = 一般的なアイテム輸送ブロックです。アイテムを前方に移動し、自動的にタレットや機械などに搬入します。回転させることができます。 block.conveyor.description = 一般的なアイテム輸送ブロックです。アイテムを前方に移動し、自動的にタレットや機械などに搬入します。回転させることができます。
block.titanium-conveyor.description = 改良されたアイテム輸送ブロックです。通常のコンベアーよりも速くアイテムを輸送します。 block.titanium-conveyor.description = 改良されたアイテム輸送ブロックです。通常のコンベアーよりも速くアイテムを輸送します。
block.plastanium-conveyor.description = アイテムをまとめて輸送するブロックです。\n末端からアイテムを搬入し、先端3方向にアイテムを搬出します。 block.plastanium-conveyor.description = アイテムをまとめて輸送するブロックです。\n末端からアイテムを搬入し、先端3方向にアイテムを搬出します。
block.junction.description = 十字に交差したコンベアーをそれぞれ前方に搬出します。コンベアーで複雑な構造を組み立てるときに便利です。 block.junction.description = 十字に交差したコンベアーをそれぞれ前方に搬出します。コンベアーで複雑な構造を組み立てるときに便利です。
@@ -1551,20 +1551,20 @@ block.vault.description = 各種類のアイテムを大量に保管します。
block.container.description = 各種類のアイテムを少量ずつ保管します。隣接するコンテナーやボール卜、コアは一つのストレージユニットとして扱われます。 [lightgray]搬出機[]を使って、コンテナーからアイテムを搬出できます。 block.container.description = 各種類のアイテムを少量ずつ保管します。隣接するコンテナーやボール卜、コアは一つのストレージユニットとして扱われます。 [lightgray]搬出機[]を使って、コンテナーからアイテムを搬出できます。
block.unloader.description = コンテナやボールト、コアからアイテムをコンベアーか隣接するブロックに搬出します。搬出機をタップして搬出するアイテムを変更することができます。 block.unloader.description = コンテナやボールト、コアからアイテムをコンベアーか隣接するブロックに搬出します。搬出機をタップして搬出するアイテムを変更することができます。
block.launch-pad.description = 離脱することなく、アイテムを回収することができます。 block.launch-pad.description = 離脱することなく、アイテムを回収することができます。
block.duo.description = 小さく安価なタレットです。 block.duo.description = 小さく安価なタレットです。
block.scatter.description = 中規模の対空型タレットです。敵に鉛やスクラップの塊、メタガラスを分散するように発射します。 block.scatter.description = 中規模の対空型タレットです。敵に鉛やスクラップの塊、メタガラスを分散するように発射します。
block.scorch.description = 近くの地上の敵を燃やします。近距離だと非常に効果的です。 block.scorch.description = 近くの地上の敵を燃やします。近距離だと非常に効果的です。
block.hail.description = 小型の砲撃型タレットです。 block.hail.description = 小型の砲撃型タレットです。
block.wave.description = バブルの連射攻撃をする中型のタレットです。 block.wave.description = バブルの連射攻撃をする中型のタレットです。
block.lancer.description = チャージビームを放つ中型のタレットです。 block.lancer.description = チャージビームを放つ中型のタレットです。
block.arc.description = 小型の電撃型タレットです。敵に向かってランダムな半円状に電撃を放ちます。 block.arc.description = 小型の電撃型タレットです。敵に向かってランダムな半円状に電撃を放ちます。
block.swarmer.description = バーストミサイルで攻撃する中型タレットです。 block.swarmer.description = バーストミサイルで攻撃する中型タレットです。
block.salvo.description = 一斉に攻撃を行う中型のタレットです。 block.salvo.description = 一斉に攻撃を行う中型のタレットです。
block.fuse.description = 短距離攻撃が得意な大型のタレットです。 block.fuse.description = 短距離攻撃が得意な大型のタレットです。
block.ripple.description = 同時に複数ショットを発射する大型タレットです。 block.ripple.description = 同時に複数ショットを発射する大型タレットです。
block.cyclone.description = 大型の連射型タレットです。 block.cyclone.description = 大型の連射型タレットです。
block.spectre.description = 一度に2発の強力な弾を放つ大型のタレットです。 block.spectre.description = 一度に2発の強力な弾を放つ大型のタレットです。
block.meltdown.description = 強力な長距離攻撃が可能な大型のタレットです。 block.meltdown.description = 強力な長距離攻撃が可能な大型のタレットです。
block.foreshadow.description = 一つのターゲットを狙う高火力、長射程のタレットです。最大体力が高い敵を優先します。 block.foreshadow.description = 一つのターゲットを狙う高火力、長射程のタレットです。最大体力が高い敵を優先します。
block.repair-point.description = 近くの負傷したユニットを修復します。 block.repair-point.description = 近くの負傷したユニットを修復します。
block.segment.description = 射程内に入ってきた弾丸を破壊します。レーザー弾は破壊できません。 block.segment.description = 射程内に入ってきた弾丸を破壊します。レーザー弾は破壊できません。
@@ -1598,7 +1598,7 @@ block.payload-propulsion-tower.description = 長距離ペイロード輸送構
unit.dagger.description = 近くの敵に標準的な弾丸を発射します。 unit.dagger.description = 近くの敵に標準的な弾丸を発射します。
unit.mace.description = 近くの敵に火炎放射を発射します。 unit.mace.description = 近くの敵に火炎放射を発射します。
unit.fortress.description = 地上目標に長距離砲を発射します。 unit.fortress.description = 地上目標に長距離砲を発射します。
unit.scepter.description = 近くの敵に電撃弾を発射します。 unit.scepter.description = 近くの敵にチャージ弾を発射します。
unit.reign.description = 近くの敵に大口径の貫通弾を発射します。 unit.reign.description = 近くの敵に大口径の貫通弾を発射します。
unit.nova.description = 敵にダメージを与え、味方の建造物を修復する光線を発射します。\n飛行可能。 unit.nova.description = 敵にダメージを与え、味方の建造物を修復する光線を発射します。\n飛行可能。
unit.pulsar.description = 敵にダメージを与え、味方の建造物を修復する電撃攻撃を行います。\n飛行可能。 unit.pulsar.description = 敵にダメージを与え、味方の建造物を修復する電撃攻撃を行います。\n飛行可能。

View File

@@ -216,7 +216,7 @@ hosts.none = [lightgray]Brak serwerów w sieci LAN!
host.invalid = [scarlet]Nie można połączyć się z hostem. host.invalid = [scarlet]Nie można połączyć się z hostem.
servers.local = Serwery Lokalne servers.local = Serwery Lokalne
servers.local.steam = Open Games & Local Servers servers.local.steam = Otwieraj Gry & Lokalne Serwery
servers.remote = Serwery Zdalne servers.remote = Serwery Zdalne
servers.global = Serwery Publiczne servers.global = Serwery Publiczne
@@ -380,13 +380,13 @@ editor.ingame = Edytuj w Grze
editor.publish.workshop = Opublikuj w Warsztacie editor.publish.workshop = Opublikuj w Warsztacie
editor.newmap = Nowa Mapa editor.newmap = Nowa Mapa
editor.center = Wyśrodkuj editor.center = Wyśrodkuj
editor.search = Search maps... editor.search = Przeszukaj mapy...
editor.filters = Filter Maps editor.filters = Przefiltruj Mapy
editor.filters.mode = Gamemodes: editor.filters.mode = Tryby Gry:
editor.filters.type = Map Type: editor.filters.type = Typ Mapy:
editor.filters.search = Search In: editor.filters.search = Szukaj W:
editor.filters.author = Author editor.filters.author = Autor
editor.filters.description = Description editor.filters.description = Opis
workshop = Warsztat workshop = Warsztat
waves.title = Fale waves.title = Fale
waves.remove = Usuń waves.remove = Usuń
@@ -404,13 +404,13 @@ waves.load = Załaduj Ze Schowka
waves.invalid = Nieprawidłowe fale w schowku. waves.invalid = Nieprawidłowe fale w schowku.
waves.copied = Fale zostały skopiowane. waves.copied = Fale zostały skopiowane.
waves.none = Brak zdefiniowanych wrogów.\nPamiętaj, że puste układy fal zostaną automatycznie zastąpione układem domyślnym. waves.none = Brak zdefiniowanych wrogów.\nPamiętaj, że puste układy fal zostaną automatycznie zastąpione układem domyślnym.
waves.sort = Sort By waves.sort = Sortuj Według
waves.sort.reverse = Reverse Sort waves.sort.reverse = Odwrotne Sortowanie
waves.sort.begin = Begin waves.sort.begin = Rozpocznij
waves.sort.health = Health waves.sort.health = Zdrowie
waves.sort.type = Type waves.sort.type = Typ
waves.units.hide = Hide All waves.units.hide = Schowaj Wszystkie
waves.units.show = Show All waves.units.show = Pokaż Wszystkie
#these are intentionally in lower case #these are intentionally in lower case
wavemode.counts = liczba wavemode.counts = liczba
@@ -505,13 +505,13 @@ filter.option.circle-scale = Skala Koła
filter.option.octaves = Oktawy filter.option.octaves = Oktawy
filter.option.falloff = Spadek filter.option.falloff = Spadek
filter.option.angle = Kąt filter.option.angle = Kąt
filter.option.rotate = Rotate filter.option.rotate = Obróć
filter.option.amount = Ilość filter.option.amount = Ilość
filter.option.block = Blok filter.option.block = Blok
filter.option.floor = Podłoga filter.option.floor = Podłoga
filter.option.flooronto = Podłoga Docelowa filter.option.flooronto = Podłoga Docelowa
filter.option.target = Cel filter.option.target = Cel
filter.option.replacement = Replacement filter.option.replacement = Zastąpienie
filter.option.wall = Ściana filter.option.wall = Ściana
filter.option.ore = Ruda filter.option.ore = Ruda
filter.option.floor2 = Druga Podłoga filter.option.floor2 = Druga Podłoga
@@ -556,7 +556,7 @@ configure = Skonfiguruj Ładunek
loadout = Ładunek loadout = Ładunek
resources = Zasoby resources = Zasoby
bannedblocks = Zabronione bloki bannedblocks = Zabronione bloki
bannedunits = Banned Units bannedunits = Zabronione jednostki
addall = Dodaj wszystkie addall = Dodaj wszystkie
launch.from = Wystrzelony z: [accent]{0} launch.from = Wystrzelony z: [accent]{0}
launch.destination = Cel: {0} launch.destination = Cel: {0}
@@ -580,7 +580,7 @@ weather.snow.name = Śnieg
weather.sandstorm.name = Burza piaskowa weather.sandstorm.name = Burza piaskowa
weather.sporestorm.name = Burza zarodników weather.sporestorm.name = Burza zarodników
weather.fog.name = Mgła weather.fog.name = Mgła
sectorlist = Sectors sectorlist = Sektory
sectorlist.attacked = {0} under attack sectorlist.attacked = {0} under attack
sectors.unexplored = [lightgray]Niezbadane sectors.unexplored = [lightgray]Niezbadane
@@ -735,7 +735,7 @@ stat.memorycapacity = Pojemość Pamięci
stat.basepowergeneration = Podstawowa generacja mocy stat.basepowergeneration = Podstawowa generacja mocy
stat.productiontime = Czas produkcji stat.productiontime = Czas produkcji
stat.repairtime = Czas pełnej naprawy bloku stat.repairtime = Czas pełnej naprawy bloku
stat.repairspeed = Repair Speed stat.repairspeed = Prędkość Napraw
stat.weapons = Bronie stat.weapons = Bronie
stat.bullet = Pocisk stat.bullet = Pocisk
stat.speedincrease = Zwiększenie prędkości stat.speedincrease = Zwiększenie prędkości
@@ -859,7 +859,7 @@ category.items = Przedmioty
category.crafting = Przetwórstwo category.crafting = Przetwórstwo
category.function = Funkcja category.function = Funkcja
category.optional = Dodatkowe ulepszenia category.optional = Dodatkowe ulepszenia
setting.skipcoreanimation.name = Skip Core Launch/Land Animation setting.skipcoreanimation.name = Pomiń Animację Wystrzału/Lądowania
setting.landscape.name = Zablokuj tryb panoramiczny setting.landscape.name = Zablokuj tryb panoramiczny
setting.shadows.name = Cienie setting.shadows.name = Cienie
setting.blockreplace.name = Automatyczne sugestie bloków setting.blockreplace.name = Automatyczne sugestie bloków
@@ -1018,7 +1018,7 @@ mode.custom = Własny Tryb
rules.infiniteresources = Nieskończone Zasoby rules.infiniteresources = Nieskończone Zasoby
rules.reactorexplosions = Eksplozje Reaktorów rules.reactorexplosions = Eksplozje Reaktorów
rules.coreincinerates = Rdzeń Spala Nadmarowe Przedmioty rules.coreincinerates = Rdzeń Spala Nadmiarowe Przedmioty
rules.schematic = Zezwalaj na schematy rules.schematic = Zezwalaj na schematy
rules.wavetimer = Zegar Fal rules.wavetimer = Zegar Fal
rules.waves = Fale rules.waves = Fale
@@ -1044,15 +1044,15 @@ rules.deconstructrefundmultiplier = Mnożnik Zwrotu Dekonstrukcji
rules.waitForWaveToEnd = Fale Czekają Na Przeciwników rules.waitForWaveToEnd = Fale Czekają Na Przeciwników
rules.dropzoneradius = Zasięg Strefy Zrzutu:[lightgray] (kratki) rules.dropzoneradius = Zasięg Strefy Zrzutu:[lightgray] (kratki)
rules.unitammo = Jednostki Potrzebują Amunicji rules.unitammo = Jednostki Potrzebują Amunicji
rules.enemyteam = Enemy Team rules.enemyteam = Drużyna Wroga
rules.playerteam = Player Team rules.playerteam = Drużyna Gracza
rules.title.waves = Fale rules.title.waves = Fale
rules.title.resourcesbuilding = Zasoby i Budowanie rules.title.resourcesbuilding = Zasoby i Budowanie
rules.title.enemy = Przeciwnicy rules.title.enemy = Przeciwnicy
rules.title.unit = Jednostki rules.title.unit = Jednostki
rules.title.experimental = Eksperymentalne rules.title.experimental = Eksperymentalne
rules.title.environment = Otoczenie rules.title.environment = Otoczenie
rules.title.teams = Teams rules.title.teams = Drużyny
rules.lighting = Oświetlenie rules.lighting = Oświetlenie
rules.enemyLights = Wrogowie Emitują Światło rules.enemyLights = Wrogowie Emitują Światło
rules.fire = Ogień rules.fire = Ogień

View File

@@ -96,7 +96,7 @@ database.button = Database
savegame = Gravar Jogo savegame = Gravar Jogo
loadgame = Carregar Jogo loadgame = Carregar Jogo
joingame = Entrar no Jogo joingame = Entrar no Jogo
customgame = Jogo Customi-/nzado customgame = Jogo Customizado
newgame = Novo Jogo newgame = Novo Jogo
none = <nenhum> none = <nenhum>
none.found = [lightgray]<none found> none.found = [lightgray]<none found>
@@ -519,7 +519,7 @@ width = Largura:
height = Altura: height = Altura:
menu = Menu menu = Menu
play = Jogar play = Jogar
campaign = Campa-/nnha campaign = Campannha
load = Carregar load = Carregar
save = Gravar save = Gravar
fps = FPS: {0} fps = FPS: {0}
@@ -528,7 +528,7 @@ tps = TPS: {0}
memory = Mem: {0}mb memory = Mem: {0}mb
memory2 = Mem:\n {0}mb +\n {1}mb memory2 = Mem:\n {0}mb +\n {1}mb
language.restart = Por favor, reinicie seu jogo para a tradução tomar efeito. language.restart = Por favor, reinicie seu jogo para a tradução tomar efeito.
settings = Configu-/nrações settings = Configurações
tutorial = Tutorial tutorial = Tutorial
tutorial.retake = Refazer Tutorial tutorial.retake = Refazer Tutorial
editor = Editor editor = Editor

View File

@@ -24,7 +24,7 @@ gameover.waiting = [accent]Sonraki Harita Bekleniyor...
highscore = [accent]Yeni rekor! highscore = [accent]Yeni rekor!
copied = Panoya Kopyalandı. copied = Panoya Kopyalandı.
indev.notready = Oyunun bu kısmı henüz hazır değil. indev.notready = Oyunun bu kısmı henüz hazır değil.
indev.campaign = [accent]Congratulations! You've reached the end of the campaign![]\n\nThis is as far as the content goes right now. Interplanetary travel will be added in future updates. indev.campaign = [accent]Tebrikler! Mücadelenin sonuna ulaştın![]\n\nİçerikler bir sonraki sürüme kadar bu kadar.. Gezegenler arası ulaşım gelecek güncellemelerde eklenicek.
load.sound = Sesler load.sound = Sesler
load.map = Haritalar load.map = Haritalar
@@ -78,7 +78,7 @@ schematic.tagexists = Böyle bir Etiket zaten var.
stats = İstatistikler stats = İstatistikler
stat.wave = Bozguna Uğratılan Dalgalar:[accent] {0} stat.wave = Bozguna Uğratılan Dalgalar:[accent] {0}
stat.unitsCreated = Units Created:[accent] {0} stat.unitsCreated = Üretilen Birimler:[accent] {0}
stat.enemiesDestroyed = Yok Edilen Düşmanlar:[accent] {0} stat.enemiesDestroyed = Yok Edilen Düşmanlar:[accent] {0}
stat.built = İnşa Edilen Yapılar:[accent] {0} stat.built = İnşa Edilen Yapılar:[accent] {0}
stat.destroyed = Yok Edilen Yapılar:[accent] {0} stat.destroyed = Yok Edilen Yapılar:[accent] {0}
@@ -93,7 +93,7 @@ level.mode = Oyun Modu:
coreattack = < Merkez saldırı altında! > coreattack = < Merkez saldırı altında! >
nearpoint = [[ [scarlet]İNİŞ PİSTİNDEN AYRIL[] ]\nimha tehlikesi nearpoint = [[ [scarlet]İNİŞ PİSTİNDEN AYRIL[] ]\nimha tehlikesi
database = Çekirdek Veritabanı database = Çekirdek Veritabanı
database.button = Database database.button = Veritabanı
savegame = Oyunu Kaydet savegame = Oyunu Kaydet
loadgame = Oyunu Yükle loadgame = Oyunu Yükle
joingame = Oyuna Katıl joingame = Oyuna Katıl
@@ -319,7 +319,7 @@ data.invalid = Bu oyun verisi geçerli değil.
data.import.confirm = Dışarıdan içeri veri aktarmak şu anki verilerinizin [scarlet]tamamını[] silecektir.[accent]Bu işlem geri alınamaz![]\n\nVeri içeri aktarıldığında oyundan çıkacaksınız. data.import.confirm = Dışarıdan içeri veri aktarmak şu anki verilerinizin [scarlet]tamamını[] silecektir.[accent]Bu işlem geri alınamaz![]\n\nVeri içeri aktarıldığında oyundan çıkacaksınız.
quit.confirm = Çıkmak istediğinize emin misiniz? quit.confirm = Çıkmak istediğinize emin misiniz?
loading = [accent]Yükleniyor... loading = [accent]Yükleniyor...
downloading = [accent]Downloading... downloading = [accent]İndiriliyor...
saving = [accent]Kayıt ediliyor... saving = [accent]Kayıt ediliyor...
respawn = [accent][[{0}][] Çekirdekte yeniden doğ respawn = [accent][[{0}][] Çekirdekte yeniden doğ
cancelbuilding = [accent][[{0}][] Planı temizle cancelbuilding = [accent][[{0}][] Planı temizle
@@ -551,7 +551,7 @@ requirement.produce = {0} üret
requirement.capture = {0} sektörünü ele geçir requirement.capture = {0} sektörünü ele geçir
launch.text = Kalkış launch.text = Kalkış
research.multiplayer = Sadece kurucu araştırma yapabilir. research.multiplayer = Sadece kurucu araştırma yapabilir.
map.multiplayer = Only the host can view sectors. map.multiplayer = Sadece sunucu sahibi sektörleri görebilir.
uncover = uncover =
configure = Ekipmanı Yapılandır configure = Ekipmanı Yapılandır
@@ -697,7 +697,7 @@ settings.clearcampaignsaves.confirm = Mücadele modundaki oynadığınız tüm s
paused = [accent]<Durduruldu> paused = [accent]<Durduruldu>
clear = Temizle clear = Temizle
banned = [scarlet]Yasaklı banned = [scarlet]Yasaklı
unsupported.environment = [scarlet]Unsupported Environment unsupported.environment = [scarlet]Desteklenmeyen Ortam
yes = Evet yes = Evet
no = Hayır no = Hayır
info.title = Bilgi info.title = Bilgi
@@ -783,7 +783,7 @@ stat.speedmultiplier = Hız Çarpanı
stat.reloadmultiplier = Yeniden Yükleme Çarpanı stat.reloadmultiplier = Yeniden Yükleme Çarpanı
stat.buildspeedmultiplier = İnşa Hızı Çarpanı stat.buildspeedmultiplier = İnşa Hızı Çarpanı
stat.reactive = Tepki Verir stat.reactive = Tepki Verir
stat.healing = İyileştirir stat.healing = Tamir Eder
ability.forcefield = Güç Kalkanı ability.forcefield = Güç Kalkanı
ability.repairfield = Onarma Alanı ability.repairfield = Onarma Alanı
@@ -793,13 +793,13 @@ ability.shieldregenfield = Kalkan Yenileme Alanı
ability.movelightning = Hareket Enerjisi ability.movelightning = Hareket Enerjisi
ability.energyfield = Güç Kalkanı: [accent]{0}[] hasar ~ [accent]{1}[] blok / [accent]{2}[] hedef ability.energyfield = Güç Kalkanı: [accent]{0}[] hasar ~ [accent]{1}[] blok / [accent]{2}[] hedef
bar.drilltierreq = Daha İyi Matkap Gerekli bar.drilltierreq = Daha Güçlü Matkap Gerekli
bar.noresources = Eksik Kaynaklar bar.noresources = Kaynak Yetersiz
bar.corereq = Çekirdek Tabanı Gerekli bar.corereq = Çekirdek Tabanı Gerekli
bar.drillspeed = Matkap Hızı: {0}/s bar.drillspeed = Matkap Hızı: {0}/s
bar.pumpspeed = Pompa Hızı: {0}/s bar.pumpspeed = Pompa Hızı: {0}/s
bar.efficiency = Verim: {0}% bar.efficiency = Verim: {0}%
bar.boost = Boost: +{0}% bar.boost = Hızlanış: +{0}%
bar.powerbalance = Enerji: {0}/sn bar.powerbalance = Enerji: {0}/sn
bar.powerstored = Depolanan: {0}/{1} bar.powerstored = Depolanan: {0}/{1}
bar.poweramount = Enerji: {0} bar.poweramount = Enerji: {0}
@@ -822,13 +822,13 @@ bullet.damage = [stat]{0} [lightgray]hasar
bullet.splashdamage = [stat]{0} [lightgray]alan hasarı ~[stat] {1} [lightgray]kare bullet.splashdamage = [stat]{0} [lightgray]alan hasarı ~[stat] {1} [lightgray]kare
bullet.incendiary = [stat]yakıcı bullet.incendiary = [stat]yakıcı
bullet.homing = [stat]güdümlü bullet.homing = [stat]güdümlü
bullet.frags = [stat]{0}[lightgray]x frag bullets: bullet.frags = [stat]{0}[lightgray]x parçalı mermiler:
bullet.lightning = [stat]{0}[lightgray]x lightning ~ [stat]{1}[lightgray] damage bullet.lightning = [stat]{0}[lightgray]x elektrik ~ [stat]{1}[lightgray] hasarı
bullet.buildingdamage = [stat]{0}%[lightgray] building damage bullet.buildingdamage = [stat]{0}%[lightgray] inşaa hasarı
bullet.knockback = [stat]{0} [lightgray]savurma bullet.knockback = [stat]{0} [lightgray]savurma
bullet.pierce = [stat]{0}[lightgray]x delme bullet.pierce = [stat]{0}[lightgray]x delme
bullet.infinitepierce = [stat]delme bullet.infinitepierce = [stat]delme
bullet.healpercent = [stat]{0}[lightgray]% healing bullet.healpercent = [stat]{0}[lightgray]% ototamir
bullet.multiplier = [stat]{0}[lightgray]x mermi çarpanı bullet.multiplier = [stat]{0}[lightgray]x mermi çarpanı
bullet.reload = [stat]{0}[lightgray]x atış hızı bullet.reload = [stat]{0}[lightgray]x atış hızı
@@ -861,7 +861,7 @@ category.items = Eşyalar
category.crafting = Üretim category.crafting = Üretim
category.function = Fonksiyon category.function = Fonksiyon
category.optional = İsteğe Bağlı Geliştirmeler category.optional = İsteğe Bağlı Geliştirmeler
setting.skipcoreanimation.name = Skip Core Launch/Land Animation setting.skipcoreanimation.name = Çekirdek Fırlatma/İnme Animasyonunu Atla
setting.landscape.name = Yatayda sabitle setting.landscape.name = Yatayda sabitle
setting.shadows.name = Gölgeler setting.shadows.name = Gölgeler
setting.blockreplace.name = Otomatik Blok önerileri setting.blockreplace.name = Otomatik Blok önerileri
@@ -883,7 +883,7 @@ setting.fpscap.name = Maksimum FPS
setting.fpscap.none = Limitsiz setting.fpscap.none = Limitsiz
setting.fpscap.text = {0} FPS setting.fpscap.text = {0} FPS
setting.uiscale.name = Arayüz Ölçeği [lightgray](yeniden başlatma gerekebilir)[] setting.uiscale.name = Arayüz Ölçeği [lightgray](yeniden başlatma gerekebilir)[]
setting.uiscale.description = Restart required to apply changes. setting.uiscale.description = Değişikleri uygulamak için yeniden başlatma gerekli.
setting.swapdiagonal.name = Her Zaman Çapraz Yerleştirme setting.swapdiagonal.name = Her Zaman Çapraz Yerleştirme
setting.difficulty.training = Eğitim setting.difficulty.training = Eğitim
setting.difficulty.easy = Kolay setting.difficulty.easy = Kolay
@@ -891,7 +891,7 @@ setting.difficulty.normal = Normal
setting.difficulty.hard = Zor setting.difficulty.hard = Zor
setting.difficulty.insane = İmkansız setting.difficulty.insane = İmkansız
setting.difficulty.name = Zorluk: setting.difficulty.name = Zorluk:
setting.screenshake.name = Ekranı Salla setting.screenshake.name = Ekranı Sars
setting.effects.name = Efektleri Görüntüle setting.effects.name = Efektleri Görüntüle
setting.destroyedblocks.name = Kırılmış Blokları Göster setting.destroyedblocks.name = Kırılmış Blokları Göster
setting.blockstatus.name = Blok Durumunu Göster setting.blockstatus.name = Blok Durumunu Göster
@@ -1010,7 +1010,7 @@ mode.help.title = Modların açıklamaları
mode.survival.name = Hayatta Kalma mode.survival.name = Hayatta Kalma
mode.survival.description = Normal oyun oyun modu. Kaynak sınırlı ve dalgalar otomatik olarak gönderilir.\n[gray]Oynamak için haritada düşman doğma noktaları olması gerekir. mode.survival.description = Normal oyun oyun modu. Kaynak sınırlı ve dalgalar otomatik olarak gönderilir.\n[gray]Oynamak için haritada düşman doğma noktaları olması gerekir.
mode.sandbox.name = Yaratıcı mode.sandbox.name = Yaratıcı
mode.sandbox.description = Sonsuz kaynaklar ve dalgalar için zamanlayıcı yok. mode.sandbox.description = Sonsuz kaynak bulunur ve dalgalar için zamanlayıcı yok.
mode.editor.name = Düzenleyici mode.editor.name = Düzenleyici
mode.pvp.name = PvP mode.pvp.name = PvP
mode.pvp.description = Yerel olarak başkaları ile savaş.\n[gray]Oynamak için haritada en az iki farklı renkli çekirdek olması gerekir. mode.pvp.description = Yerel olarak başkaları ile savaş.\n[gray]Oynamak için haritada en az iki farklı renkli çekirdek olması gerekir.
@@ -1021,7 +1021,7 @@ mode.custom = Özel Kurallar
rules.infiniteresources = Sınırsız Kaynaklar rules.infiniteresources = Sınırsız Kaynaklar
rules.reactorexplosions = Reaktör Patlamaları rules.reactorexplosions = Reaktör Patlamaları
rules.coreincinerates = Çekirdek Taşanları Eritir rules.coreincinerates = Çekirdek Taşanları Eritir
rules.schematic = Schematics Allowed rules.schematic = Şema Kullanılabilir
rules.wavetimer = Dalga Zamanlayıcısı rules.wavetimer = Dalga Zamanlayıcısı
rules.waves = Dalgalar rules.waves = Dalgalar
rules.attack = Saldırı Modu rules.attack = Saldırı Modu
@@ -1173,7 +1173,7 @@ block.core-nucleus.name = Merkez: Çekirdek
block.deep-water.name = Derin Su block.deep-water.name = Derin Su
block.shallow-water.name = Su block.shallow-water.name = Su
block.tainted-water.name = Kirli Su block.tainted-water.name = Kirli Su
block.deep-tainted-water.name = Deep Tainted Water block.deep-tainted-water.name = Derin Kirli Su
block.darksand-tainted-water.name = Kara Kumlu Kirli Su block.darksand-tainted-water.name = Kara Kumlu Kirli Su
block.tar.name = Katran block.tar.name = Katran
block.stone.name = Taş block.stone.name = Taş
@@ -1715,7 +1715,7 @@ lenum.rand = [0 ile Sayı) arasında rastgele bir sayı.
lenum.log = Logaritma lenum.log = Logaritma
lenum.log10 = Logaritma 10 lenum.log10 = Logaritma 10
lenum.noise = 2D Noise lenum.noise = 2D Noise
lenum.abs = Absulute lenum.abs = Mutlak
lenum.sqrt = KareKök lenum.sqrt = KareKök
lenum.any = Herhangi bir Birim. lenum.any = Herhangi bir Birim.

View File

@@ -288,7 +288,7 @@ save.corrupted = 此存檔無效或已損毀!
empty = 〈空白〉 empty = 〈空白〉
on = 開啟 on = 開啟
off = 關閉 off = 關閉
save.search = Search saved games... save.search = 搜尋儲存的遊戲……
save.autosave = 自動存檔:{0} save.autosave = 自動存檔:{0}
save.map = 地圖:{0} save.map = 地圖:{0}
save.wave = 波次:{0} save.wave = 波次:{0}
@@ -380,13 +380,13 @@ editor.ingame = 在遊戲中編輯
editor.publish.workshop = 在工作坊上發佈 editor.publish.workshop = 在工作坊上發佈
editor.newmap = 新地圖 editor.newmap = 新地圖
editor.center = 中心 editor.center = 中心
editor.search = 尋找地圖... editor.search = 尋找地圖
editor.filters = 篩選地圖 editor.filters = 篩選地圖
editor.filters.mode = Gamemodes: editor.filters.mode = 遊戲模式:
editor.filters.type = Map Type: editor.filters.type = 地圖種類:
editor.filters.search = Search In: editor.filters.search = 搜尋的資料夾:
editor.filters.author = Author editor.filters.author = 作者
editor.filters.description = Description editor.filters.description = 描述
workshop = 工作坊 workshop = 工作坊
waves.title = 波次 waves.title = 波次
waves.remove = 移除 waves.remove = 移除
@@ -420,7 +420,7 @@ wavemode.health = 生命值
editor.default = [lightgray](預設) editor.default = [lightgray](預設)
details = 詳細資訊…… details = 詳細資訊……
edit = 編輯…… edit = 編輯……
variables = Vars variables = 變數
editor.name = 名稱: editor.name = 名稱:
editor.spawn = 重生單位 editor.spawn = 重生單位
editor.removeunit = 移除單位 editor.removeunit = 移除單位
@@ -1301,7 +1301,7 @@ block.plated-conduit.name = 裝甲管線
block.phase-conduit.name = 相織管線 block.phase-conduit.name = 相織管線
block.liquid-router.name = 液體分配器 block.liquid-router.name = 液體分配器
block.liquid-tank.name = 液體儲存槽 block.liquid-tank.name = 液體儲存槽
block.liquid-container.name = Liquid Container block.liquid-container.name = 液體容器
block.liquid-junction.name = 液體樞紐 block.liquid-junction.name = 液體樞紐
block.bridge-conduit.name = 管線橋 block.bridge-conduit.name = 管線橋
block.rotary-pump.name = 迴旋泵 block.rotary-pump.name = 迴旋泵
@@ -1348,16 +1348,16 @@ block.disassembler.name = 還原機
block.silicon-crucible.name = 矽爐 block.silicon-crucible.name = 矽爐
block.overdrive-dome.name = 高速拱頂 block.overdrive-dome.name = 高速拱頂
block.interplanetary-accelerator.name = 星際加速站 block.interplanetary-accelerator.name = 星際加速站
block.constructor.name = Constructor block.constructor.name = 建造器
block.constructor.description = Fabricates structures up to 2x2 tiles in size. block.constructor.description = 建造達 2x2 的方塊。
block.large-constructor.name = Large Constructor block.large-constructor.name = 大型建造器
block.large-constructor.description = Fabricates structures up to 4x4 tiles in size. block.large-constructor.description = 建造達 4x4 的方塊。
block.deconstructor.name = Deconstructor block.deconstructor.name = 拆解器
block.deconstructor.description = Deconstructs structures and units. Returns 100% of build cost. block.deconstructor.description = 拆解方塊和單位,返還所有建造花費。
block.payload-loader.name = Payload Loader block.payload-loader.name = 載物裝入器
block.payload-loader.description = Load liquids and items into blocks. block.payload-loader.description = 將物品或是液體裝入方塊。
block.payload-unloader.name = Payload Unloader block.payload-unloader.name = 載物取出器
block.payload-unloader.description = Unloads liquids and items from blocks. block.payload-unloader.description = 將物品或是液體從方塊取出。
block.switch.name = 按鈕 block.switch.name = 按鈕
block.micro-processor.name = 微處理器 block.micro-processor.name = 微處理器
@@ -1468,7 +1468,7 @@ block.incinerator.description = 銷毀所有接收的物品或液體。
block.power-void.description = 銷毀所有輸入的能量。僅限沙盒。 block.power-void.description = 銷毀所有輸入的能量。僅限沙盒。
block.power-source.description = 無限輸出能量。僅限沙盒。 block.power-source.description = 無限輸出能量。僅限沙盒。
block.item-source.description = 無限輸出物品。僅限沙盒。 block.item-source.description = 無限輸出物品。僅限沙盒。
block.item-void.description = 不使用能量銷毀任何進入的物品。僅限沙盒。 block.item-void.description = 銷毀所有進入的物品。僅限沙盒。
block.liquid-source.description = 無限輸出液體。僅限沙盒。 block.liquid-source.description = 無限輸出液體。僅限沙盒。
block.liquid-void.description = 銷毀所有輸入的液體。僅限沙盒。 block.liquid-void.description = 銷毀所有輸入的液體。僅限沙盒。
block.payload-source.description = 無限輸出原料。僅限沙盒。 block.payload-source.description = 無限輸出原料。僅限沙盒。
@@ -1513,7 +1513,7 @@ block.conduit.description = 基本液體運輸方塊。將液體往前輸送。
block.pulse-conduit.description = 高級的液體運輸方塊。比標準管線更快地輸送並儲存更多液體。 block.pulse-conduit.description = 高級的液體運輸方塊。比標準管線更快地輸送並儲存更多液體。
block.plated-conduit.description = 用和脈衝管線相同的速率運送液體,但有更強的裝甲。除了其他管線以外,不會接受來自側面的其他液體\n比較不會漏液。 block.plated-conduit.description = 用和脈衝管線相同的速率運送液體,但有更強的裝甲。除了其他管線以外,不會接受來自側面的其他液體\n比較不會漏液。
block.liquid-router.description = 接受來自一個方向的液體並將它們平均輸出到最多3個其他方向。可以儲存一定量的液體。用於將液體從一個來源分成多個目標。 block.liquid-router.description = 接受來自一個方向的液體並將它們平均輸出到最多3個其他方向。可以儲存一定量的液體。用於將液體從一個來源分成多個目標。
block.liquid-container.description = Stores a sizeable amount of liquid. Outputs to all sides, similarly to a liquid router. block.liquid-container.description = 儲存可觀的液體。由四邊輸出,與液體分配器雷同。
block.liquid-tank.description = 儲存大量液體。當液體需求非恆定時,使用它來創建緩衝或作為冷卻重要方塊的保障。 block.liquid-tank.description = 儲存大量液體。當液體需求非恆定時,使用它來創建緩衝或作為冷卻重要方塊的保障。
block.liquid-junction.description = 作為兩個交叉管線的橋樑。適用於兩條不同管線將不同液體運送到不同位置的情況。 block.liquid-junction.description = 作為兩個交叉管線的橋樑。適用於兩條不同管線將不同液體運送到不同位置的情況。
block.bridge-conduit.description = 高級的液體運輸方塊。允許跨過最多3個任何地形或建築物的方塊運輸液體。 block.bridge-conduit.description = 高級的液體運輸方塊。允許跨過最多3個任何地形或建築物的方塊運輸液體。
@@ -1778,7 +1778,7 @@ lenum.itemdrop = 放下物品
lenum.itemtake = 從建築拿取物品 lenum.itemtake = 從建築拿取物品
lenum.paydrop = 放下拾取的負載 lenum.paydrop = 放下拾取的負載
lenum.paytake = 拾取船身下方的單位/建築 lenum.paytake = 拾取船身下方的單位/建築
lenum.payenter = Enter/land on the payload block the unit is on. lenum.payenter = 進入/降落到載重方塊
lenum.flag = 單位編號(可異) lenum.flag = 單位編號(可異)
lenum.mine = 挖指定位置的礦物 lenum.mine = 挖指定位置的礦物
lenum.build = 建造一個建築 lenum.build = 建造一個建築

View File

@@ -115,7 +115,7 @@ younggam
simba-fs simba-fs
RedRadiation RedRadiation
Marko Zajc Marko Zajc
CPX MC PCX-LK (CPX MC)
Phinner Phinner
BTA_Susideur BTA_Susideur
nilq nilq
@@ -131,3 +131,5 @@ Darkness6030
hortiSquash hortiSquash
King-BR King-BR
citrusMarmelade citrusMarmelade
Evolveye
Jerzy Paciorkiewicz

View File

@@ -199,3 +199,5 @@ const ResizeEvent = Packages.mindustry.game.EventType.ResizeEvent
const LoseEvent = Packages.mindustry.game.EventType.LoseEvent const LoseEvent = Packages.mindustry.game.EventType.LoseEvent
const WinEvent = Packages.mindustry.game.EventType.WinEvent const WinEvent = Packages.mindustry.game.EventType.WinEvent
const Trigger = Packages.mindustry.game.EventType.Trigger const Trigger = Packages.mindustry.game.EventType.Trigger
const PlayerConnectionConfirmed = Packages.mindustry.game.EventType.PlayerConnectionConfirmed
const AdminRequestEvent = Packages.mindustry.game.EventType.AdminRequestEvent

View File

@@ -33,7 +33,7 @@ public class BlockIndexer{
/** Stores all damaged tile entities by team. */ /** Stores all damaged tile entities by team. */
private Seq<Building>[] damagedTiles = new Seq[Team.all.length]; private Seq<Building>[] damagedTiles = new Seq[Team.all.length];
/** All ores available on this map. */ /** All ores available on this map. */
private ObjectSet<Item> allOres = new ObjectSet<>(); private ObjectIntMap<Item> allOres = new ObjectIntMap<>();
/** Stores teams that are present here as tiles. */ /** Stores teams that are present here as tiles. */
private Seq<Team> activeTeams = new Seq<>(Team.class); private Seq<Team> activeTeams = new Seq<>(Team.class);
/** Maps teams to a map of flagged tiles by flag. */ /** Maps teams to a map of flagged tiles by flag. */
@@ -78,8 +78,6 @@ public class BlockIndexer{
var drop = tile.drop(); var drop = tile.drop();
if(drop != null){ if(drop != null){
allOres.add(drop);
int qx = (tile.x / quadrantSize); int qx = (tile.x / quadrantSize);
int qy = (tile.y / quadrantSize); int qy = (tile.y / quadrantSize);
@@ -92,6 +90,7 @@ public class BlockIndexer{
ores[drop.id][qx][qy] = new IntSeq(false, 16); ores[drop.id][qx][qy] = new IntSeq(false, 16);
} }
ores[drop.id][qx][qy].add(tile.pos()); ores[drop.id][qx][qy].add(tile.pos());
allOres.increment(drop);
} }
} }
} }
@@ -105,8 +104,8 @@ public class BlockIndexer{
var flags = tile.block().flags; var flags = tile.block().flags;
var data = team.data(); var data = team.data();
if(flags.size() > 0){ if(flags.size > 0){
for(BlockFlag flag : flags){ for(BlockFlag flag : flags.array){
getFlagged(team)[flag.ordinal()].remove(tile); getFlagged(team)[flag.ordinal()].remove(tile);
} }
} }
@@ -150,9 +149,11 @@ public class BlockIndexer{
//when the drop can be mined, record the ore position //when the drop can be mined, record the ore position
if(tile.block() == Blocks.air && !seq.contains(pos)){ if(tile.block() == Blocks.air && !seq.contains(pos)){
seq.add(pos); seq.add(pos);
allOres.increment(drop);
}else{ }else{
//otherwise, it likely became blocked, remove it (even if it wasn't there) //otherwise, it likely became blocked, remove it (even if it wasn't there)
seq.removeValue(pos); seq.removeValue(pos);
allOres.increment(drop, -1);
} }
} }
@@ -177,7 +178,7 @@ public class BlockIndexer{
/** @return whether this item is present on this map. */ /** @return whether this item is present on this map. */
public boolean hasOre(Item item){ public boolean hasOre(Item item){
return allOres.contains(item); return allOres.get(item) > 0;
} }
/** Returns all damaged tiles by team. */ /** Returns all damaged tiles by team. */
@@ -400,10 +401,10 @@ public class BlockIndexer{
//only process entity changes with centered tiles //only process entity changes with centered tiles
if(tile.isCenter() && tile.build != null){ if(tile.isCenter() && tile.build != null){
var data = team.data(); var data = team.data();
if(tile.block().flags.size() > 0 && tile.isCenter()){ if(tile.block().flags.size > 0 && tile.isCenter()){
TileArray[] map = getFlagged(team); TileArray[] map = getFlagged(team);
for(BlockFlag flag : tile.block().flags){ for(BlockFlag flag : tile.block().flags.array){
TileArray arr = map[flag.ordinal()]; TileArray arr = map[flag.ordinal()];

View File

@@ -2040,6 +2040,7 @@ public class UnitTypes implements ContentList{
weaveMag = 4; weaveMag = 4;
weaveScale = 4; weaveScale = 4;
lifetime = 60f; lifetime = 60f;
keepVelocity = false;
shootEffect = Fx.shootHeal; shootEffect = Fx.shootHeal;
smokeEffect = Fx.hitLaser; smokeEffect = Fx.hitLaser;
splashDamage = 13f; splashDamage = 13f;
@@ -2231,6 +2232,7 @@ public class UnitTypes implements ContentList{
backColor = Pal.heal; backColor = Pal.heal;
frontColor = Color.white; frontColor = Color.white;
width = height = 12f; width = height = 12f;
shrinkY = 0f;
speed = 5f; speed = 5f;
trailLength = 20; trailLength = 20;
trailWidth = 6f; trailWidth = 6f;

View File

@@ -48,7 +48,7 @@ public class ContentLoader{
clear(); clear();
} }
/** Clears all initialized content.*/ /** Clears all initialized content. */
public void clear(){ public void clear(){
contentNameMap = new ObjectMap[ContentType.all.length]; contentNameMap = new ObjectMap[ContentType.all.length];
contentMap = new Seq[ContentType.all.length]; contentMap = new Seq[ContentType.all.length];
@@ -75,7 +75,7 @@ public class ContentLoader{
} }
} }
/** Logs content statistics.*/ /** Logs content statistics. */
public void logContent(){ public void logContent(){
//check up ID mapping, make sure it's linear (debug only) //check up ID mapping, make sure it's linear (debug only)
for(Seq<Content> arr : contentMap){ for(Seq<Content> arr : contentMap){
@@ -95,14 +95,14 @@ public class ContentLoader{
Log.debug("-------------------"); Log.debug("-------------------");
} }
/** Calls Content#init() on everything. Use only after all modules have been created.*/ /** Calls Content#init() on everything. Use only after all modules have been created. */
public void init(){ public void init(){
initialize(Content::init); initialize(Content::init);
if(constants != null) constants.init(); if(constants != null) constants.init();
Events.fire(new ContentInitEvent()); Events.fire(new ContentInitEvent());
} }
/** Calls Content#load() on everything. Use only after all modules have been created on the client.*/ /** Calls Content#loadIcon() and Content#load() on everything. Use only after all modules have been created on the client. */
public void load(){ public void load(){
initialize(Content::loadIcon); initialize(Content::loadIcon);
initialize(Content::load); initialize(Content::load);
@@ -264,6 +264,10 @@ public class ContentLoader{
return getByID(ContentType.item, id); return getByID(ContentType.item, id);
} }
public Item item(String name){
return getByName(ContentType.item, name);
}
public Seq<Liquid> liquids(){ public Seq<Liquid> liquids(){
return getBy(ContentType.liquid); return getBy(ContentType.liquid);
} }
@@ -272,6 +276,10 @@ public class ContentLoader{
return getByID(ContentType.liquid, id); return getByID(ContentType.liquid, id);
} }
public Liquid liquid(String name){
return getByName(ContentType.liquid, name);
}
public Seq<BulletType> bullets(){ public Seq<BulletType> bullets(){
return getBy(ContentType.bullet); return getBy(ContentType.bullet);
} }
@@ -284,10 +292,18 @@ public class ContentLoader{
return getBy(ContentType.status); return getBy(ContentType.status);
} }
public StatusEffect statusEffect(String name){
return getByName(ContentType.status, name);
}
public Seq<SectorPreset> sectors(){ public Seq<SectorPreset> sectors(){
return getBy(ContentType.sector); return getBy(ContentType.sector);
} }
public SectorPreset sector(String name){
return getByName(ContentType.sector, name);
}
public Seq<UnitType> units(){ public Seq<UnitType> units(){
return getBy(ContentType.unit); return getBy(ContentType.unit);
} }
@@ -296,7 +312,15 @@ public class ContentLoader{
return getByID(ContentType.unit, id); return getByID(ContentType.unit, id);
} }
public UnitType unit(String name){
return getByName(ContentType.unit, name);
}
public Seq<Planet> planets(){ public Seq<Planet> planets(){
return getBy(ContentType.planet); return getBy(ContentType.planet);
} }
public Planet planet(String name){
return getByName(ContentType.planet, name);
}
} }

View File

@@ -233,7 +233,7 @@ public class NetClient implements ApplicationListener{
//log commands before they are handled //log commands before they are handled
if(message.startsWith(netServer.clientCommands.getPrefix())){ if(message.startsWith(netServer.clientCommands.getPrefix())){
//log with brackets //log with brackets
Log.info("<&fi@: @&fr>", "&lk" + player.name, "&lw" + message); Log.info("<&fi@: @&fr>", "&lk" + player.plainName(), "&lw" + message);
} }
//check if it's a command //check if it's a command
@@ -251,7 +251,7 @@ public class NetClient implements ApplicationListener{
} }
//server console logging //server console logging
Log.info("&fi@: @", "&lc" + player.name, "&lw" + message); Log.info("&fi@: @", "&lc" + player.plainName(), "&lw" + message);
//invoke event for all clients but also locally //invoke event for all clients but also locally
//this is required so other clients get the correct name even if they don't know who's sending it yet //this is required so other clients get the correct name even if they don't know who's sending it yet

View File

@@ -560,7 +560,7 @@ public class NetServer implements ApplicationListener{
Call.playerDisconnect(player.id()); Call.playerDisconnect(player.id());
} }
String message = Strings.format("&lb@&fi&lk has disconnected. &fi&lk[&lb@&fi&lk] (@)", player.name, player.uuid(), reason); String message = Strings.format("&lb@&fi&lk has disconnected. [&lb@&fi&lk] (@)", player.plainName(), player.uuid(), reason);
if(Config.showConnectMessages.bool()) info(message); if(Config.showConnectMessages.bool()) info(message);
} }
@@ -568,6 +568,38 @@ public class NetServer implements ApplicationListener{
player.con.hasDisconnected = true; player.con.hasDisconnected = true;
} }
//these functions are for debugging only, and will be removed!
@Remote(targets = Loc.client, variants = Variant.one)
public static void requestDebugStatus(Player player){
int flags =
(player.con.hasDisconnected ? 1 : 0) |
(player.con.hasConnected ? 2 : 0) |
(player.isAdded() ? 4 : 0) |
(player.con.hasBegunConnecting ? 8 : 0);
Call.debugStatusClient(player.con, flags, player.con.lastReceivedClientSnapshot, player.con.snapshotsSent);
Call.debugStatusClientUnreliable(player.con, flags, player.con.lastReceivedClientSnapshot, player.con.snapshotsSent);
}
@Remote(variants = Variant.both, priority = PacketPriority.high)
public static void debugStatusClient(int value, int lastClientSnapshot, int snapshotsSent){
logClientStatus(true, value, lastClientSnapshot, snapshotsSent);
}
@Remote(variants = Variant.both, priority = PacketPriority.high, unreliable = true)
public static void debugStatusClientUnreliable(int value, int lastClientSnapshot, int snapshotsSent){
logClientStatus(false, value, lastClientSnapshot, snapshotsSent);
}
static void logClientStatus(boolean reliable, int value, int lastClientSnapshot, int snapshotsSent){
Log.info("@ Debug status received. disconnected = @, connected = @, added = @, begunConnecting = @ lastClientSnapshot = @, snapshotsSent = @",
reliable ? "[RELIABLE]" : "[UNRELIABLE]",
(value & 1) != 0, (value & 2) != 0, (value & 4) != 0, (value & 8) != 0,
lastClientSnapshot, snapshotsSent
);
}
@Remote(targets = Loc.client) @Remote(targets = Loc.client)
public static void serverPacketReliable(Player player, String type, String contents){ public static void serverPacketReliable(Player player, String type, String contents){
if(netServer.customPacketHandlers.containsKey(type)){ if(netServer.customPacketHandlers.containsKey(type)){
@@ -741,12 +773,12 @@ public class NetServer implements ApplicationListener{
public static void adminRequest(Player player, Player other, AdminAction action){ public static void adminRequest(Player player, Player other, AdminAction action){
if(!player.admin && !player.isLocal()){ if(!player.admin && !player.isLocal()){
warn("ACCESS DENIED: Player @ / @ attempted to perform admin action '@' on '@' without proper security access.", warn("ACCESS DENIED: Player @ / @ attempted to perform admin action '@' on '@' without proper security access.",
player.name, player.con == null ? "null" : player.con.address, action.name(), other == null ? null : other.name); player.plainName(), player.con == null ? "null" : player.con.address, action.name(), other == null ? null : other.plainName());
return; return;
} }
if(other == null || ((other.admin && !player.isLocal()) && other != player)){ if(other == null || ((other.admin && !player.isLocal()) && other != player)){
warn("@ attempted to perform admin action on nonexistant or admin player.", player.name); warn("@ &fi&lk[&lb@&fi&lk]&fb attempted to perform admin action on nonexistant or admin player.", player.plainName(), player.uuid());
return; return;
} }
@@ -756,15 +788,15 @@ public class NetServer implements ApplicationListener{
//no verification is done, so admins can hypothetically spam waves //no verification is done, so admins can hypothetically spam waves
//not a real issue, because server owners may want to do just that //not a real issue, because server owners may want to do just that
logic.skipWave(); logic.skipWave();
info("&lc@ has skipped the wave.", player.name); info("&lc@ &fi&lk[&lb@&fi&lk]&fb has skipped the wave.", player.plainName(), player.uuid());
}else if(action == AdminAction.ban){ }else if(action == AdminAction.ban){
netServer.admins.banPlayerID(other.con.uuid); netServer.admins.banPlayerID(other.con.uuid);
netServer.admins.banPlayerIP(other.con.address); netServer.admins.banPlayerIP(other.con.address);
other.kick(KickReason.banned); other.kick(KickReason.banned);
info("&lc@ has banned @.", player.name, other.name); info("&lc@ &fi&lk[&lb@&fi&lk]&fb has banned @ &fi&lk[&lb@&fi&lk]&fb.", player.plainName(), player.uuid(), other.plainName(), other.uuid());
}else if(action == AdminAction.kick){ }else if(action == AdminAction.kick){
other.kick(KickReason.kick); other.kick(KickReason.kick);
info("&lc@ has kicked @.", player.name, other.name); info("&lc@ &fi&lk[&lb@&fi&lk]&fb has kicked @ &fi&lk[&lb@&fi&lk]&fb.", player.plainName(), player.uuid(), other.plainName(), other.uuid());
}else if(action == AdminAction.trace){ }else if(action == AdminAction.trace){
PlayerInfo stats = netServer.admins.getInfo(other.uuid()); PlayerInfo stats = netServer.admins.getInfo(other.uuid());
TraceInfo info = new TraceInfo(other.con.address, other.uuid(), other.con.modclient, other.con.mobile, stats.timesJoined, stats.timesKicked); TraceInfo info = new TraceInfo(other.con.address, other.uuid(), other.con.modclient, other.con.mobile, stats.timesJoined, stats.timesKicked);
@@ -773,7 +805,7 @@ public class NetServer implements ApplicationListener{
}else{ }else{
NetClient.traceInfo(other, info); NetClient.traceInfo(other, info);
} }
info("&lc@ has requested trace info of @.", player.name, other.name); info("&lc@ &fi&lk[&lb@&fi&lk]&fb has requested trace info of @ &fi&lk[&lb@&fi&lk]&fb.", player.plainName(), player.uuid(), other.plainName(), other.uuid());
} }
} }
@@ -791,7 +823,7 @@ public class NetServer implements ApplicationListener{
if(Config.showConnectMessages.bool()){ if(Config.showConnectMessages.bool()){
Call.sendMessage("[accent]" + player.name + "[accent] has connected."); Call.sendMessage("[accent]" + player.name + "[accent] has connected.");
String message = Strings.format("&lb@&fi&lk has connected. &fi&lk[&lb@&fi&lk]", player.name, player.uuid()); String message = Strings.format("&lb@&fi&lk has connected. &fi&lk[&lb@&fi&lk]", player.plainName(), player.uuid());
info(message); info(message);
} }
@@ -863,7 +895,7 @@ public class NetServer implements ApplicationListener{
short sent = 0; short sent = 0;
for(Building entity : Groups.build){ for(Building entity : Groups.build){
if(!entity.block.sync) continue; if(!entity.block.sync) continue;
sent ++; sent++;
dataStream.writeInt(entity.pos()); dataStream.writeInt(entity.pos());
dataStream.writeShort(entity.block.id); dataStream.writeShort(entity.block.id);
@@ -931,6 +963,7 @@ public class NetServer implements ApplicationListener{
Call.entitySnapshot(player.con, (short)sent, syncStream.toByteArray()); Call.entitySnapshot(player.con, (short)sent, syncStream.toByteArray());
} }
player.con.snapshotsSent++;
} }
String fixName(String name){ String fixName(String name){

View File

@@ -79,9 +79,10 @@ public interface Platform{
} }
default Context getScriptContext(){ default Context getScriptContext(){
Context c = Context.enter(); Context context = Context.getCurrentContext();
c.setOptimizationLevel(9); if(context == null) context = Context.enter();
return c; context.setOptimizationLevel(9);
return context;
} }
/** Update discord RPC. */ /** Update discord RPC. */

View File

@@ -303,6 +303,7 @@ public class UI implements ApplicationListener, Loadable{
Table table = new Table(); Table table = new Table();
table.touchable = Touchable.disabled; table.touchable = Touchable.disabled;
table.setFillParent(true); table.setFillParent(true);
table.marginTop(Core.scene.find("coreinfo").getPrefHeight() / Scl.scl() / 2);
table.actions(Actions.fadeOut(7f, Interp.fade), Actions.remove()); table.actions(Actions.fadeOut(7f, Interp.fade), Actions.remove());
table.top().add(info).style(Styles.outlineLabel).padTop(10); table.top().add(info).style(Styles.outlineLabel).padTop(10);
Core.scene.add(table); Core.scene.add(table);
@@ -311,8 +312,9 @@ public class UI implements ApplicationListener, Loadable{
/** Shows a fading label at the top of the screen. */ /** Shows a fading label at the top of the screen. */
public void showInfoToast(String info, float duration){ public void showInfoToast(String info, float duration){
Table table = new Table(); Table table = new Table();
table.setFillParent(true);
table.touchable = Touchable.disabled; table.touchable = Touchable.disabled;
table.setFillParent(true);
table.marginTop(Core.scene.find("coreinfo").getPrefHeight() / Scl.scl() / 2);
table.update(() -> { table.update(() -> {
if(state.isMenu()) table.remove(); if(state.isMenu()) table.remove();
}); });

View File

@@ -31,7 +31,7 @@ public abstract class Content implements Comparable<Content>{
*/ */
public void load(){} public void load(){}
/** Called right after load(). */ /** Called right before load(). */
public void loadIcon(){} public void loadIcon(){}
/** @return whether an error occurred during mod loading. */ /** @return whether an error occurred during mod loading. */

View File

@@ -181,8 +181,8 @@ public class MapView extends Element implements GestureListener{
if(Core.scene.getKeyboardFocus() == null || !(Core.scene.getKeyboardFocus() instanceof TextField) && !Core.input.keyDown(KeyCode.controlLeft)){ if(Core.scene.getKeyboardFocus() == null || !(Core.scene.getKeyboardFocus() instanceof TextField) && !Core.input.keyDown(KeyCode.controlLeft)){
float ax = Core.input.axis(Binding.move_x); float ax = Core.input.axis(Binding.move_x);
float ay = Core.input.axis(Binding.move_y); float ay = Core.input.axis(Binding.move_y);
offsetx -= ax * 15f / zoom; offsetx -= ax * 15 * Time.delta / zoom;
offsety -= ay * 15f / zoom; offsety -= ay * 15 * Time.delta / zoom;
} }
if(Core.input.keyTap(KeyCode.shiftLeft)){ if(Core.input.keyTap(KeyCode.shiftLeft)){

View File

@@ -70,7 +70,7 @@ public class EnergyFieldAbility extends Ability{
for(int i = 0; i < sectors; i++){ for(int i = 0; i < sectors; i++){
float rot = unit.rotation + i * 360f/sectors - Time.time * rotateSpeed; float rot = unit.rotation + i * 360f/sectors - Time.time * rotateSpeed;
Lines.swirl(rx, ry, orbRadius + 3f, sectorRad, rot); Lines.arc(rx, ry, orbRadius + 3f, sectorRad, rot);
} }
Lines.stroke(Lines.getStroke() * curStroke); Lines.stroke(Lines.getStroke() * curStroke);
@@ -78,7 +78,7 @@ public class EnergyFieldAbility extends Ability{
if(curStroke > 0){ if(curStroke > 0){
for(int i = 0; i < sectors; i++){ for(int i = 0; i < sectors; i++){
float rot = unit.rotation + i * 360f/sectors + Time.time * rotateSpeed; float rot = unit.rotation + i * 360f/sectors + Time.time * rotateSpeed;
Lines.swirl(rx, ry, range, sectorRad, rot); Lines.arc(rx, ry, range, sectorRad, rot);
} }
} }

View File

@@ -14,7 +14,7 @@ import mindustry.gen.*;
public class MoveLightningAbility extends Ability{ public class MoveLightningAbility extends Ability{
/** Lightning damage */ /** Lightning damage */
public float damage = 35f; public float damage = 35f;
/** Chance of firing every tick. Set >= 1 to always fire lightning every tick at max speed. */ /** Chance of firing every tick. Set >= 1 to always fire lightning every tick at max speed */
public float chance = 0.15f; public float chance = 0.15f;
/** Length of the lightning. <= 0 to disable */ /** Length of the lightning. <= 0 to disable */
public int length = 12; public int length = 12;
@@ -24,8 +24,10 @@ public class MoveLightningAbility extends Ability{
public Color color = Color.valueOf("a9d8ff"); public Color color = Color.valueOf("a9d8ff");
/** Shifts where the lightning spawns along the Y axis */ /** Shifts where the lightning spawns along the Y axis */
public float offset = 0f; public float offset = 0f;
/** Offset along the X axis. */ /** Offset along the X axis */
public float width = 0f; public float width = 0f;
/** Whether the spawn side alternates */
public boolean alternate = true;
/** Jittering heat sprite like the shield on v5 Javelin */ /** Jittering heat sprite like the shield on v5 Javelin */
public String heatRegion = "error"; public String heatRegion = "error";
/** Bullet type that is fired. Can be null */ /** Bullet type that is fired. Can be null */
@@ -69,7 +71,7 @@ public class MoveLightningAbility extends Ability{
float x = unit.x + Angles.trnsx(unit.rotation, offset, width * side), y = unit.y + Angles.trnsy(unit.rotation, offset, width * side); float x = unit.x + Angles.trnsx(unit.rotation, offset, width * side), y = unit.y + Angles.trnsy(unit.rotation, offset, width * side);
shootEffect.at(x, y, unit.rotation, color, parentizeEffects ? unit : null); shootEffect.at(x, y, unit.rotation, color, parentizeEffects ? unit : null);
shootSound.at(unit); shootSound.at(x, y);
if(length > 0){ if(length > 0){
Lightning.create(unit.team, color, damage, x + unit.vel.x, y + unit.vel.y, unit.rotation, length); Lightning.create(unit.team, color, damage, x + unit.vel.x, y + unit.vel.y, unit.rotation, length);
@@ -79,7 +81,7 @@ public class MoveLightningAbility extends Ability{
bullet.create(unit, unit.team, x, y, unit.rotation + bulletAngle + Mathf.range(bulletSpread)); bullet.create(unit, unit.team, x, y, unit.rotation + bulletAngle + Mathf.range(bulletSpread));
} }
side *= -1f; if(alternate) side *= -1f;
} }
} }

View File

@@ -121,6 +121,9 @@ public class BulletType extends Content implements Cloneable{
//additional effects //additional effects
/** Whether status and despawnHit should automatically be set. */
public boolean setDefaults = true;
public float fragCone = 360f; public float fragCone = 360f;
public float fragAngle = 0f; public float fragAngle = 0f;
public int fragBullets = 9; public int fragBullets = 9;
@@ -405,23 +408,26 @@ public class BulletType extends Content implements Cloneable{
//pierceBuilding is not enabled by default, because a bullet may want to *not* pierce buildings //pierceBuilding is not enabled by default, because a bullet may want to *not* pierce buildings
} }
if(setDefaults){
if(lightning > 0){ if(lightning > 0){
if(status == StatusEffects.none){ if(status == StatusEffects.none){
status = StatusEffects.shocked; status = StatusEffects.shocked;
} }
} }
if(fragBullet != null || splashDamageRadius > 0 || lightning > 0){
despawnHit = true;
}
}
if(lightningType == null){ if(lightningType == null){
lightningType = !collidesAir ? Bullets.damageLightningGround : Bullets.damageLightning; lightningType = !collidesAir ? Bullets.damageLightningGround : Bullets.damageLightning;
} }
if(fragBullet != null || splashDamageRadius > 0 || lightning > 0){ if(lightRadius <= -1){
despawnHit = true;
}
if(lightRadius == -1){
lightRadius = Math.max(18, hitSize * 5f); lightRadius = Math.max(18, hitSize * 5f);
} }
drawSize = Math.max(drawSize, trailLength * speed * 2f); drawSize = Math.max(drawSize, trailLength * speed * 2f);
} }

View File

@@ -1249,6 +1249,11 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
return self() != other; return self() != other;
} }
/**
* Called when this block's config menu is closed
*/
public void onConfigureClosed(){}
/** Returns whether this config menu should show when the specified player taps it. */ /** Returns whether this config menu should show when the specified player taps it. */
public boolean shouldShowConfigure(Player player){ public boolean shouldShowConfigure(Player player){
return true; return true;

View File

@@ -200,6 +200,8 @@ abstract class BulletComp implements Timedc, Damagec, Hitboxc, Teamc, Posc, Draw
type.draw(self()); type.draw(self());
type.drawLight(self()); type.drawLight(self());
Draw.reset();
} }
public void initVel(float angle, float amount){ public void initVel(float angle, float amount){

View File

@@ -1,6 +1,7 @@
package mindustry.entities.comp; package mindustry.entities.comp;
import arc.*; import arc.*;
import arc.graphics.*;
import arc.graphics.g2d.*; import arc.graphics.g2d.*;
import arc.math.*; import arc.math.*;
import arc.math.geom.*; import arc.math.geom.*;
@@ -115,7 +116,7 @@ abstract class FireComp implements Timedc, Posc, Syncc, Drawc{
} }
} }
Draw.alpha(Mathf.clamp(warmup / warmupDuration)); Draw.color(Color.white, Mathf.clamp(warmup / warmupDuration));
Draw.z(Layer.effect); Draw.z(Layer.effect);
Draw.rect(regions[Math.min((int)animation, regions.length - 1)], x + Mathf.randomSeedRange((int)y, 2), y + Mathf.randomSeedRange((int)x, 2)); Draw.rect(regions[Math.min((int)animation, regions.length - 1)], x + Mathf.randomSeedRange((int)y, 2), y + Mathf.randomSeedRange((int)x, 2));
Draw.reset(); Draw.reset();

View File

@@ -156,6 +156,7 @@ abstract class PayloadComp implements Posc, Rotc, Hitboxc, Unitc{
if(!u.isAdded()) u.team.data().updateCount(u.type, -1); if(!u.isAdded()) u.team.data().updateCount(u.type, -1);
u.add(); u.add();
u.unloaded(); u.unloaded();
Events.fire(new PayloadDropEvent(self(), u));
return true; return true;
} }
@@ -168,6 +169,7 @@ abstract class PayloadComp implements Posc, Rotc, Hitboxc, Unitc{
if(on != null && Build.validPlace(tile.block, tile.team, tx, ty, tile.rotation, false)){ if(on != null && Build.validPlace(tile.block, tile.team, tx, ty, tile.rotation, false)){
int rot = (int)((rotation + 45f) / 90f) % 4; int rot = (int)((rotation + 45f) / 90f) % 4;
payload.place(on, rot); payload.place(on, rot);
Events.fire(new PayloadDropEvent(self(), tile));
if(getControllerName() != null){ if(getControllerName() != null){
payload.build.lastAccessed = getControllerName(); payload.build.lastAccessed = getControllerName();

View File

@@ -314,6 +314,10 @@ abstract class PlayerComp implements UnitController, Entityc, Syncc, Timerc, Dra
return "[#" + color.toString().toUpperCase() + "]" + name; return "[#" + color.toString().toUpperCase() + "]" + name;
} }
String plainName(){
return Strings.stripColors(name);
}
void sendMessage(String text){ void sendMessage(String text){
if(isLocal()){ if(isLocal()){
if(ui != null){ if(ui != null){

View File

@@ -242,6 +242,24 @@ public class EventType{
} }
} }
public static class PayloadDropEvent{
public final Unit carrier;
public final @Nullable Unit unit;
public final @Nullable Building build;
public PayloadDropEvent(Unit carrier, Unit unit){
this.carrier = carrier;
this.unit = unit;
this.build = null;
}
public PayloadDropEvent(Unit carrier, Building build){
this.carrier = carrier;
this.build = build;
this.unit = null;
}
}
public static class UnitControlEvent{ public static class UnitControlEvent{
public final Player player; public final Player player;
public final @Nullable Unit unit; public final @Nullable Unit unit;

View File

@@ -36,11 +36,19 @@ public class Teams{
@Nullable @Nullable
public CoreBuild closestEnemyCore(float x, float y, Team team){ public CoreBuild closestEnemyCore(float x, float y, Team team){
CoreBuild closest = null;
float closestDst = Float.MAX_VALUE;
for(Team enemy : team.data().coreEnemies){ for(Team enemy : team.data().coreEnemies){
CoreBuild tile = Geometry.findClosest(x, y, enemy.cores()); for(CoreBuild core : enemy.cores()){
if(tile != null) return tile; float dst = Mathf.dst2(x, y, core.getX(), core.getY());
if(closestDst > dst){
closest = core;
closestDst = dst;
} }
return null; }
}
return closest;
} }
@Nullable @Nullable

View File

@@ -344,7 +344,14 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
public static void tileConfig(@Nullable Player player, Building build, @Nullable Object value){ public static void tileConfig(@Nullable Player player, Building build, @Nullable Object value){
if(build == null) return; if(build == null) return;
if(net.server() && (!Units.canInteract(player, build) || if(net.server() && (!Units.canInteract(player, build) ||
!netServer.admins.allowAction(player, ActionType.configure, build.tile, action -> action.config = value))) throw new ValidateException(player, "Player cannot configure a tile."); !netServer.admins.allowAction(player, ActionType.configure, build.tile, action -> action.config = value))){
var packet = new TileConfigCallPacket(); //undo the config on the client
packet.player = player;
packet.build = build;
packet.value = build.config();
player.con.send(packet, true);
throw new ValidateException(player, "Player cannot configure a tile.");
}
build.configured(player == null || player.dead() ? null : player.unit(), value); build.configured(player == null || player.dead() ? null : player.unit(), value);
Core.app.post(() -> Events.fire(new ConfigEvent(build, player, value))); Core.app.post(() -> Events.fire(new ConfigEvent(build, player, value)));
} }
@@ -1269,19 +1276,24 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
} }
int endRotation = -1; int endRotation = -1;
if(diagonal){
var start = world.build(startX, startY); var start = world.build(startX, startY);
var end = world.build(endX, endY); var end = world.build(endX, endY);
if(diagonal){
if(block != null && start instanceof ChainedBuilding && end instanceof ChainedBuilding if(block != null && start instanceof ChainedBuilding && end instanceof ChainedBuilding
&& block.canReplace(end.block) && block.canReplace(start.block)){ && block.canReplace(end.block) && block.canReplace(start.block)){
points = Placement.upgradeLine(startX, startY, endX, endY); points = Placement.upgradeLine(startX, startY, endX, endY);
endRotation = end.rotation;
}else{ }else{
points = Placement.pathfindLine(block != null && block.conveyorPlacement, startX, startY, endX, endY); points = Placement.pathfindLine(block != null && block.conveyorPlacement, startX, startY, endX, endY);
} }
}else{ }else{
points = Placement.normalizeLine(startX, startY, endX, endY); points = Placement.normalizeLine(startX, startY, endX, endY);
} }
if(points.size > 1 && end instanceof ChainedBuilding){
Point2 secondToLast = points.get(points.size - 2);
if (!(world.build(secondToLast.x, secondToLast.y) instanceof ChainedBuilding)){
endRotation = end.rotation;
}
}
if(block != null){ if(block != null){
block.changePlacementPath(points, rotation); block.changePlacementPath(points, rotation);

View File

@@ -231,8 +231,8 @@ public class JsonIO{
UnitType unit = Vars.content.getByName(ContentType.unit, str); UnitType unit = Vars.content.getByName(ContentType.unit, str);
return return
item != null ? item : item != null ? item :
block != null ? block :
liquid != null ? liquid : liquid != null ? liquid :
block != null ? block :
unit; unit;
} }
}); });

View File

@@ -381,7 +381,11 @@ public class ContentParser{
if(!value.has("sector") || !value.get("sector").isNumber()) throw new RuntimeException("SectorPresets must have a sector number."); if(!value.has("sector") || !value.get("sector").isNumber()) throw new RuntimeException("SectorPresets must have a sector number.");
return new SectorPreset(name, locate(ContentType.planet, value.getString("planet", "serpulo")), value.getInt("sector")); SectorPreset out = new SectorPreset(name, locate(ContentType.planet, value.getString("planet", "serpulo")), value.getInt("sector"));
value.remove("sector");
value.remove("planet");
read(() -> readFields(out, value));
return out;
} }
); );

View File

@@ -355,10 +355,13 @@ public class Mods implements Loadable{
/** Loads all mods from the folder, but does not call any methods on them.*/ /** Loads all mods from the folder, but does not call any methods on them.*/
public void load(){ public void load(){
for(Fi file : modDirectory.list()){ var files = resolveDependencies(Seq.with(modDirectory.list()).filter(f ->
if(!file.extension().equals("jar") && !file.extension().equals("zip") && !(file.isDirectory() && (file.child("mod.json").exists() || file.child("mod.hjson").exists()))) continue; f.extension().equals("jar") || f.extension().equals("zip") || (f.isDirectory() && (f.child("mod.json").exists() || f.child("mod.hjson").exists()))
));
for(Fi file : files){
Log.debug("[Mods] Loading mod @", file); Log.debug("[Mods] Loading mod @", file);
try{ try{
LoadedMod mod = loadMod(file); LoadedMod mod = loadMod(file);
mods.add(mod); mods.add(mod);
@@ -373,7 +376,7 @@ public class Mods implements Loadable{
} }
//load workshop mods now //load workshop mods now
for(Fi file : platform.getWorkshopContent(LoadedMod.class)){ for(Fi file : resolveDependencies(platform.getWorkshopContent(LoadedMod.class))){
try{ try{
LoadedMod mod = loadMod(file); LoadedMod mod = loadMod(file);
mods.add(mod); mods.add(mod);
@@ -708,6 +711,86 @@ public class Mods implements Loadable{
} }
} }
/** Tries to find the config file of a mod/plugin. */
@Nullable
public ModMeta findMeta(Fi file){
Fi metaFile =
file.child("mod.json").exists() ? file.child("mod.json") :
file.child("mod.hjson").exists() ? file.child("mod.hjson") :
file.child("plugin.json").exists() ? file.child("plugin.json") :
file.child("plugin.hjson");
if(!metaFile.exists()){
return null;
}
ModMeta meta = json.fromJson(ModMeta.class, Jval.read(metaFile.readString()).toString(Jformat.plain));
meta.cleanup();
return meta;
}
/** Resolves the loading order of a list mods/plugins using their internal names.
* It also skips non-mods files or folders. */
public Seq<Fi> resolveDependencies(Seq<Fi> files){
ObjectMap<String, Fi> fileMapping = new ObjectMap<>();
ObjectMap<String, Seq<String>> dependencies = new ObjectMap<>();
for(Fi file : files){
Fi zip = file.isDirectory() ? file : new ZipFi(file);
if(zip.list().length == 1 && zip.list()[0].isDirectory()){
zip = zip.list()[0];
}
ModMeta meta = null;
try{
meta = findMeta(zip);
}catch(Exception ignored){
}
if(meta == null) continue;
dependencies.put(meta.name, meta.dependencies);
fileMapping.put(meta.name, file);
}
ObjectSet<String> visited = new ObjectSet<>();
OrderedSet<String> ordered = new OrderedSet<>();
for(String modName : dependencies.keys()){
if(!ordered.contains(modName)){
// Adds the loaded mods at the beginning of the list
ordered.add(modName, 0);
resolveDependencies(modName, dependencies, ordered, visited);
visited.clear();
}
}
// Adds the invalid mods
for(String missingMod : dependencies.keys()){
if(!ordered.contains(missingMod)) ordered.add(missingMod, 0);
}
Seq<Fi> resolved = ordered.orderedItems().map(fileMapping::get);
// Since the resolver explores the dependencies from leaves to the root, reverse the seq
resolved.reverse();
return resolved;
}
/** Recursive search of dependencies */
public void resolveDependencies(String modName, ObjectMap<String, Seq<String>> dependencies, OrderedSet<String> ordered, ObjectSet<String> visited){
visited.add(modName);
for(String dependency : dependencies.get(modName)){
// Checks if the dependency tree isn't circular and that the dependency is not missing
if(!visited.contains(dependency) && dependencies.containsKey(dependency)){
// Skips if the dependency was already explored in a separate tree
if(ordered.contains(dependency)) continue;
ordered.add(dependency);
resolveDependencies(dependency, dependencies, ordered, visited);
}
}
}
/** Loads a mod file+meta, but does not add it to the list. /** Loads a mod file+meta, but does not add it to the list.
* Note that directories can be loaded as mods. */ * Note that directories can be loaded as mods. */
private LoadedMod loadMod(Fi sourceFile) throws Exception{ private LoadedMod loadMod(Fi sourceFile) throws Exception{
@@ -727,19 +810,13 @@ public class Mods implements Loadable{
zip = zip.list()[0]; zip = zip.list()[0];
} }
Fi metaf = ModMeta meta = findMeta(zip);
zip.child("mod.json").exists() ? zip.child("mod.json") :
zip.child("mod.hjson").exists() ? zip.child("mod.hjson") :
zip.child("plugin.json").exists() ? zip.child("plugin.json") :
zip.child("plugin.hjson");
if(!metaf.exists()){ if(meta == null){
Log.warn("Mod @ doesn't have a '[mod/plugin].[h]json' file, skipping.", sourceFile); Log.warn("Mod @ doesn't have a '[mod/plugin].[h]json' file, skipping.", zip);
throw new ModLoadException("Invalid file: No mod.json found."); throw new ModLoadException("Invalid file: No mod.json found.");
} }
ModMeta meta = json.fromJson(ModMeta.class, Jval.read(metaf.readString()).toString(Jformat.plain));
meta.cleanup();
String camelized = meta.name.replace(" ", ""); String camelized = meta.name.replace(" ", "");
String mainClass = meta.main == null ? camelized.toLowerCase(Locale.ROOT) + "." + camelized + "Mod" : meta.main; String mainClass = meta.main == null ? camelized.toLowerCase(Locale.ROOT) + "." + camelized + "Mod" : meta.main;
String baseName = meta.name.toLowerCase(Locale.ROOT).replace(" ", "-"); String baseName = meta.name.toLowerCase(Locale.ROOT).replace(" ", "-");

View File

@@ -302,11 +302,13 @@ public class Administration{
public boolean adminPlayer(String id, String usid){ public boolean adminPlayer(String id, String usid){
PlayerInfo info = getCreateInfo(id); PlayerInfo info = getCreateInfo(id);
var wasAdmin = info.admin;
info.adminUsid = usid; info.adminUsid = usid;
info.admin = true; info.admin = true;
save(); save();
return true; return wasAdmin;
} }
/** /**
@@ -566,6 +568,10 @@ public class Administration{
public PlayerInfo(){ public PlayerInfo(){
} }
public String plainLastName(){
return Strings.stripColors(lastName);
}
} }
/** Handles chat messages from players and changes their contents. */ /** Handles chat messages from players and changes their contents. */

View File

@@ -22,6 +22,8 @@ public abstract class NetConnection{
public long connectTime = Time.millis(); public long connectTime = Time.millis();
/** ID of last received client snapshot. */ /** ID of last received client snapshot. */
public int lastReceivedClientSnapshot = -1; public int lastReceivedClientSnapshot = -1;
/** Count of snapshots sent from server. */
public int snapshotsSent;
/** Timestamp of last received snapshot. */ /** Timestamp of last received snapshot. */
public long lastReceivedClientTime; public long lastReceivedClientTime;
/** Build requests that have been recently rejected. This is cleared every snapshot. */ /** Build requests that have been recently rejected. This is cleared every snapshot. */

View File

@@ -13,7 +13,7 @@ public class Liquid extends UnlockableContent{
public @Nullable Color barColor; public @Nullable Color barColor;
/** Color used to draw lights. Note that the alpha channel is used to dictate brightness. */ /** Color used to draw lights. Note that the alpha channel is used to dictate brightness. */
public Color lightColor = Color.clear.cpy(); public Color lightColor = Color.clear.cpy();
/** 0-1, 0 is completely inflammable, anything above that may catch fire when exposed to heat, 0.5+ is very flammable. */ /** 0-1, 0 is completely not flammable, anything above that may catch fire when exposed to heat, 0.5+ is very flammable. */
public float flammability; public float flammability;
/** temperature: 0.5 is 'room' temperature, 0 is very cold, 1 is molten hot */ /** temperature: 0.5 is 'room' temperature, 0 is very cold, 1 is molten hot */
public float temperature = 0.5f; public float temperature = 0.5f;

View File

@@ -41,7 +41,8 @@ public class LanguageDialog extends BaseDialog{
"be", "Беларуская", "be", "Беларуская",
"bg", "Български", "bg", "Български",
"ru", "Русский", "ru", "Русский",
"uk_UA", "Українська (Україна)", "sr", "Српски",
"uk_UA", "Українська",
"th", "ไทย", "th", "ไทย",
"zh_CN", "简体中文", "zh_CN", "简体中文",
"zh_TW", "正體中文", "zh_TW", "正體中文",

View File

@@ -323,7 +323,10 @@ public class ModsDialog extends BaseDialog{
} }
private void reload(){ private void reload(){
ui.showInfoOnHidden("@mods.reloadexit", () -> Core.app.exit()); ui.showInfoOnHidden("@mods.reloadexit", () -> {
Log.info("Exiting to reload mods.");
Core.app.exit();
});
} }
private void showMod(LoadedMod mod){ private void showMod(LoadedMod mod){

View File

@@ -589,6 +589,30 @@ public class SettingsMenuDialog extends BaseDialog{
rebuild(); rebuild();
} }
public void textPref(String name, String def){
list.add(new TextSetting(name, def, null));
settings.defaults(name, def);
rebuild();
}
public void textPref(String name, String def, Cons<String> changed){
list.add(new TextSetting(name, def, changed));
settings.defaults(name, def);
rebuild();
}
public void areaTextPref(String name, String def){
list.add(new AreaTextSetting(name, def, null));
settings.defaults(name, def);
rebuild();
}
public void areaTextPref(String name, String def, Cons<String> changed){
list.add(new AreaTextSetting(name, def, changed));
settings.defaults(name, def);
rebuild();
}
public void rebuild(){ public void rebuild(){
clearChildren(); clearChildren();
@@ -705,5 +729,63 @@ public class SettingsMenuDialog extends BaseDialog{
} }
} }
public static class TextSetting extends Setting{
String def;
Cons<String> changed;
public TextSetting(String name, String def, Cons<String> changed){
super(name);
this.def = def;
this.changed = changed;
}
@Override
public void add(SettingsTable table){
TextField field = new TextField();
field.update(() -> field.setText(settings.getString(name)));
field.changed(() -> {
settings.put(name, field.getText());
if(changed != null){
changed.get(field.getText());
}
});
Table prefTable = table.table().left().padTop(3f).get();
prefTable.add(field);
prefTable.label(() -> title);
addDesc(prefTable);
table.row();
}
}
public static class AreaTextSetting extends TextSetting{
public AreaTextSetting(String name, String def, Cons<String> changed){
super(name, def, changed);
}
@Override
public void add(SettingsTable table){
TextArea area = new TextArea("");
area.setPrefRows(5);
area.update(() -> {
area.setText(settings.getString(name));
area.setWidth(table.getWidth());
});
area.changed(() -> {
settings.put(name, area.getText());
if(changed != null){
changed.get(area.getText());
}
});
addDesc(table.label(() -> title).left().padTop(3f).get());
table.row().add(area).left();
table.row();
}
}
} }
} }

View File

@@ -49,6 +49,7 @@ public class BlockConfigFragment extends Fragment{
} }
public void showConfig(Building tile){ public void showConfig(Building tile){
if(configTile != null) configTile.onConfigureClosed();
if(tile.configTapped()){ if(tile.configTapped()){
configTile = tile; configTile = tile;
@@ -82,6 +83,7 @@ public class BlockConfigFragment extends Fragment{
} }
public void hideConfig(){ public void hideConfig(){
if(configTile != null) configTile.onConfigureClosed();
configTile = null; configTile = null;
table.actions(Actions.scaleTo(0f, 1f, 0.06f, Interp.pow3Out), Actions.visible(false)); table.actions(Actions.scaleTo(0f, 1f, 0.06f, Interp.pow3Out), Actions.visible(false));
} }

View File

@@ -121,7 +121,7 @@ public class Block extends UnlockableContent{
public boolean autoResetEnabled = true; public boolean autoResetEnabled = true;
/** if true, the block stops updating when disabled */ /** if true, the block stops updating when disabled */
public boolean noUpdateDisabled = false; public boolean noUpdateDisabled = false;
/** if true, this block updates when a payload of a unit. Currently unused! */ /** if true, this block updates when it's a payload in a unit. Currently unused! */
public boolean updateInUnits = true; public boolean updateInUnits = true;
/** Whether to use this block's color in the minimap. Only used for overlays. */ /** Whether to use this block's color in the minimap. Only used for overlays. */
public boolean useColor = true; public boolean useColor = true;
@@ -395,7 +395,7 @@ public class Block extends UnlockableContent{
return hasItems; return hasItems;
} }
/** Returns whether or not this block can be place on the specified */ /** @return whether or not this block can be placed on the specified tile. */
public boolean canPlaceOn(Tile tile, Team team, int rotation){ public boolean canPlaceOn(Tile tile, Team team, int rotation){
return canPlaceOn(tile, team); return canPlaceOn(tile, team);
} }

View File

@@ -25,6 +25,7 @@ public class Attributes implements JsonSerializable{
public void add(Attributes other){ public void add(Attributes other){
check(); check();
other.check();
for(int i = 0; i < arr.length; i++){ for(int i = 0; i < arr.length; i++){
arr[i] += other.arr[i]; arr[i] += other.arr[i];
} }
@@ -32,6 +33,7 @@ public class Attributes implements JsonSerializable{
public void add(Attributes other, float scl){ public void add(Attributes other, float scl){
check(); check();
other.check();
for(int i = 0; i < arr.length; i++){ for(int i = 0; i < arr.length; i++){
arr[i] += other.arr[i] * scl; arr[i] += other.arr[i] * scl;
} }

View File

@@ -196,7 +196,7 @@ public class ItemTurret extends Turret{
} }
public class ItemEntry extends AmmoEntry{ public class ItemEntry extends AmmoEntry{
protected Item item; public Item item;
ItemEntry(Item item, int amount){ ItemEntry(Item item, int amount){
this.item = item; this.item = item;

View File

@@ -18,7 +18,7 @@ public class PointDefenseTurret extends ReloadTurret{
public final int timerTarget = timers++; public final int timerTarget = timers++;
public float retargetTime = 5f; public float retargetTime = 5f;
public @Load("block-@size") TextureRegion baseRegion; public @Load(value = "@-base", fallback = "block-@size") TextureRegion baseRegion;
public Color color = Color.white; public Color color = Color.white;
public Effect beamEffect = Fx.pointBeam; public Effect beamEffect = Fx.pointBeam;

View File

@@ -35,7 +35,7 @@ public class TractorBeamTurret extends BaseTurret{
public Sound shootSound = Sounds.tractorbeam; public Sound shootSound = Sounds.tractorbeam;
public float shootSoundVolume = 0.9f; public float shootSoundVolume = 0.9f;
public @Load("block-@size") TextureRegion baseRegion; public @Load(value = "@-base", fallback = "block-@size") TextureRegion baseRegion;
public @Load("@-laser") TextureRegion laser; public @Load("@-laser") TextureRegion laser;
public @Load(value = "@-laser-start", fallback = "@-laser-end") TextureRegion laserStart; public @Load(value = "@-laser-start", fallback = "@-laser-end") TextureRegion laserStart;
public @Load("@-laser-end") TextureRegion laserEnd; public @Load("@-laser-end") TextureRegion laserEnd;
@@ -127,7 +127,7 @@ public class TractorBeamTurret extends BaseTurret{
} }
any = true; any = true;
target.impulseNet(Tmp.v1.set(this).sub(target).limit((force + (1f - target.dst(this) / range) * scaledForce) * edelta() * timeScale)); target.impulseNet(Tmp.v1.set(this).sub(target).limit((force + (1f - target.dst(this) / range) * scaledForce) * edelta()));
} }
}else{ }else{
strength = Mathf.lerpDelta(strength, 0, 0.1f); strength = Mathf.lerpDelta(strength, 0, 0.1f);

View File

@@ -269,7 +269,7 @@ public class Turret extends ReloadTurret{
} }
if(hasAmmo()){ if(hasAmmo()){
if(Float.isNaN(reload)) rotation = 0; if(Float.isNaN(reload)) reload = 0;
if(timer(timerTarget, targetInterval)){ if(timer(timerTarget, targetInterval)){
findTarget(); findTarget();
@@ -420,7 +420,7 @@ public class Turret extends ReloadTurret{
Time.run(burstSpacing * i, () -> { Time.run(burstSpacing * i, () -> {
if(dead || !hasAmmo()) return; if(dead || !hasAmmo()) return;
tr.trns(rotation, shootLength, Mathf.range(xRand)); tr.trns(rotation, shootLength, Mathf.range(xRand));
bullet(type, rotation + Mathf.range(inaccuracy + type.inaccuracy) + (ii - (int)(shots / 2f)) * spread); bullet(peekAmmo(), rotation + Mathf.range(inaccuracy + peekAmmo().inaccuracy) + (ii - (int)(shots / 2f)) * spread);
effects(); effects();
useAmmo(); useAmmo();
recoil = recoilAmount; recoil = recoilAmount;

View File

@@ -29,6 +29,7 @@ public class LogicDisplay extends Block{
public int maxSides = 25; public int maxSides = 25;
public int displaySize = 64; public int displaySize = 64;
public float scaleFactor = 1f;
public LogicDisplay(String name){ public LogicDisplay(String name){
super(name); super(name);
@@ -102,7 +103,7 @@ public class LogicDisplay extends Block{
Draw.blend(Blending.disabled); Draw.blend(Blending.disabled);
Draw.draw(Draw.z(), () -> { Draw.draw(Draw.z(), () -> {
if(buffer != null){ if(buffer != null){
Draw.rect(Draw.wrap(buffer.getTexture()), x, y, buffer.getWidth() * Draw.scl, -buffer.getHeight() * Draw.scl); Draw.rect(Draw.wrap(buffer.getTexture()), x, y, buffer.getWidth() * scaleFactor * Draw.scl, -buffer.getHeight() * scaleFactor * Draw.scl);
} }
}); });
Draw.blend(); Draw.blend();

View File

@@ -63,7 +63,7 @@ public class LightBlock extends Block{
@Override @Override
public void control(LAccess type, double p1, double p2, double p3, double p4){ public void control(LAccess type, double p1, double p2, double p3, double p4){
if(type == LAccess.color){ if(type == LAccess.color){
color = Color.rgba8888((float)p1, (float)p2, (float)p3, 1f); color = Color.rgba8888(Mathf.clamp((float)p1), Mathf.clamp((float)p2), Mathf.clamp((float)p3), 1f);
} }
super.control(type, p1, p2, p3, p4); super.control(type, p1, p2, p3, p4);

View File

@@ -84,8 +84,6 @@ public class PowerNode extends PowerBlock{
}); });
config(Point2[].class, (tile, value) -> { config(Point2[].class, (tile, value) -> {
tile.power.links.clear();
IntSeq old = new IntSeq(tile.power.links); IntSeq old = new IntSeq(tile.power.links);
//clear old //clear old
@@ -357,7 +355,7 @@ public class PowerNode extends PowerBlock{
@Override @Override
public void placed(){ public void placed(){
if(net.client()) return; if(net.client() || power.links.size > 0) return;
getPotentialLinks(tile, team, other -> { getPotentialLinks(tile, team, other -> {
if(!power.links.contains(other.pos())){ if(!power.links.contains(other.pos())){
@@ -386,15 +384,15 @@ public class PowerNode extends PowerBlock{
return false; return false;
} }
if(this == other){ if(this == other){ //double tapped
if(other.power.links.size == 0){ if(other.power.links.size == 0 || Core.input.shift()){ //find links
int[] total = {0}; int[] total = {0};
getPotentialLinks(tile, team, link -> { getPotentialLinks(tile, team, link -> {
if(!insulated(this, link) && total[0]++ < maxNodes){ if(!insulated(this, link) && total[0]++ < maxNodes){
configure(link.pos()); configure(link.pos());
} }
}); });
}else{ }else{ //clear links
while(power.links.size > 0){ while(power.links.size > 0){
configure(power.links.get(0)); configure(power.links.get(0));
} }

View File

@@ -169,7 +169,7 @@ public class Drill extends Block{
return new TextureRegion[]{region, rotatorRegion, topRegion}; return new TextureRegion[]{region, rotatorRegion, topRegion};
} }
void countOre(Tile tile){ protected void countOre(Tile tile){
returnItem = null; returnItem = null;
returnCount = 0; returnCount = 0;

View File

@@ -24,7 +24,6 @@ public class LiquidConverter extends GenericCrafter{
ConsumeLiquid cl = consumes.get(ConsumeType.liquid); ConsumeLiquid cl = consumes.get(ConsumeType.liquid);
cl.update(false); cl.update(false);
outputLiquid.amount = cl.amount;
super.init(); super.init();
} }

View File

@@ -116,7 +116,7 @@ public class CoreBlock extends StorageBlock{
@Override @Override
public boolean canReplace(Block other){ public boolean canReplace(Block other){
//coreblocks can upgrade smaller cores //coreblocks can upgrade smaller cores
return super.canReplace(other) || (other instanceof CoreBlock && size > other.size); return super.canReplace(other) || (other instanceof CoreBlock && size >= other.size && other != this);
} }
@Override @Override

View File

@@ -84,7 +84,7 @@ public class StorageBlock extends Block{
@Override @Override
public int getMaximumAccepted(Item item){ public int getMaximumAccepted(Item item){
return itemCapacity; return linkedCore != null ? linkedCore.getMaximumAccepted(item) : itemCapacity;
} }
@Override @Override

View File

@@ -19,8 +19,8 @@ public enum StatUnit{
degrees, degrees,
seconds, seconds,
minutes, minutes,
perSecond, perSecond(false),
perMinute, perMinute(false),
perShot(false), perShot(false),
timesSpeed(false), timesSpeed(false),
percent(false), percent(false),

View File

@@ -330,7 +330,7 @@ public class StatValues{
} }
if(type.status != StatusEffects.none){ if(type.status != StatusEffects.none){
sep(bt, (type.minfo.mod == null ? type.status.emoji() : "") + "[stat]" + type.status.localizedName); sep(bt, (type.status.minfo.mod == null ? type.status.emoji() : "") + "[stat]" + type.status.localizedName);
} }
if(type.fragBullet != null){ if(type.fragBullet != null){

View File

@@ -105,11 +105,8 @@ public class SNet implements SteamNetworkingCallback, SteamMatchmakingCallback,
} }
})); }));
Events.on(WaveEvent.class, e -> { Events.on(WaveEvent.class, e -> updateWave());
if(currentLobby != null && net.server()){ Events.run(Trigger.newGame, this::updateWave);
smat.setLobbyData(currentLobby, "wave", state.wave + "");
}
});
} }
public boolean isSteamClient(){ public boolean isSteamClient(){
@@ -202,6 +199,14 @@ public class SNet implements SteamNetworkingCallback, SteamMatchmakingCallback,
} }
} }
void updateWave(){
if(currentLobby != null && net.server()){
smat.setLobbyData(currentLobby, "mapname", state.map.name());
smat.setLobbyData(currentLobby, "wave", state.wave + "");
smat.setLobbyData(currentLobby, "gamemode", state.rules.mode().name() + "");
}
}
@Override @Override
public void closeServer(){ public void closeServer(){
provider.closeServer(); provider.closeServer();

View File

@@ -21,7 +21,8 @@ kapt.include.compile.classpath=false
kotlin.stdlib.default.dependency=false kotlin.stdlib.default.dependency=false
#needed for android compilation #needed for android compilation
android.useAndroidX=true android.useAndroidX=true
org.gradle.caching=true
#used for slow jitpack builds; TODO see if this actually works #used for slow jitpack builds; TODO see if this actually works
org.gradle.internal.http.socketTimeout=100000 org.gradle.internal.http.socketTimeout=100000
org.gradle.internal.http.connectionTimeout=100000 org.gradle.internal.http.connectionTimeout=100000
archash=916c5a77 archash=476ab38cea

View File

@@ -45,6 +45,14 @@ public class ServerControl implements ApplicationListener{
public final CommandHandler handler = new CommandHandler(""); public final CommandHandler handler = new CommandHandler("");
public final Fi logFolder = Core.settings.getDataDirectory().child("logs/"); public final Fi logFolder = Core.settings.getDataDirectory().child("logs/");
public Runnable serverInput = () -> {
Scanner scan = new Scanner(System.in);
while(scan.hasNext()){
String line = scan.nextLine();
Core.app.post(() -> handleCommandString(line));
}
};
private Fi currentLogFile; private Fi currentLogFile;
private boolean inExtraRound; private boolean inExtraRound;
private Task lastTask; private Task lastTask;
@@ -147,10 +155,6 @@ public class ServerControl implements ApplicationListener{
customMapDirectory.mkdirs(); customMapDirectory.mkdirs();
Thread thread = new Thread(this::readCommands, "Server Controls");
thread.setDaemon(true);
thread.start();
if(Version.build == -1){ if(Version.build == -1){
warn("&lyYour server is running a custom build, which means that client checking is disabled."); warn("&lyYour server is running a custom build, which means that client checking is disabled.");
warn("&lyIt is highly advised to specify which version you're using by building with gradle args &lb&fb-Pbuildversion=&lr<build>"); warn("&lyIt is highly advised to specify which version you're using by building with gradle args &lb&fb-Pbuildversion=&lr<build>");
@@ -258,7 +262,13 @@ public class ServerControl implements ApplicationListener{
toggleSocket(Config.socketInput.bool()); toggleSocket(Config.socketInput.bool());
Events.on(ServerLoadEvent.class, e -> {
Thread thread = new Thread(serverInput, "Server Controls");
thread.setDaemon(true);
thread.start();
info("Server loaded. Type @ for help.", "'help'"); info("Server loaded. Type @ for help.", "'help'");
});
} }
protected void registerCommands(){ protected void registerCommands(){
@@ -397,17 +407,16 @@ public class ServerControl implements ApplicationListener{
info(" Playing on map &fi@ / Wave @", Strings.capitalize(Strings.stripColors(state.map.name())), state.wave); info(" Playing on map &fi@ / Wave @", Strings.capitalize(Strings.stripColors(state.map.name())), state.wave);
if(state.rules.waves){ if(state.rules.waves){
info(" @ enemies.", state.enemies);
}else{
info(" @ seconds until next wave.", (int)(state.wavetime / 60)); info(" @ seconds until next wave.", (int)(state.wavetime / 60));
} }
info(" @ units / @ enemies", Groups.unit.size(), state.enemies);
info(" @ FPS, @ MB used.", Core.graphics.getFramesPerSecond(), Core.app.getJavaHeap() / 1024 / 1024); info(" @ FPS, @ MB used.", Core.graphics.getFramesPerSecond(), Core.app.getJavaHeap() / 1024 / 1024);
if(Groups.player.size() > 0){ if(Groups.player.size() > 0){
info(" Players: @", Groups.player.size()); info(" Players: @", Groups.player.size());
for(Player p : Groups.player){ for(Player p : Groups.player){
info(" @ / @", p.name, p.uuid()); info(" @ @ / @", p.admin() ? "&r[A]&c" : "&b[P]&c", p.plainName(), p.uuid());
} }
}else{ }else{
info(" No players connected."); info(" No players connected.");
@@ -456,7 +465,6 @@ public class ServerControl implements ApplicationListener{
info("&fi&lcServer: &fr@", "&lw" + arg[0]); info("&fi&lcServer: &fr@", "&lw" + arg[0]);
}); });
handler.register("pause", "<on/off>", "Pause or unpause the game.", arg -> { handler.register("pause", "<on/off>", "Pause or unpause the game.", arg -> {
boolean pause = arg[0].equals("on"); boolean pause = arg[0].equals("on");
state.serverPaused = pause; state.serverPaused = pause;
@@ -576,7 +584,9 @@ public class ServerControl implements ApplicationListener{
if(arg.length == 1){ if(arg.length == 1){
info("'@' is currently @.", c.name(), c.get()); info("'@' is currently @.", c.name(), c.get());
}else{ }else{
if(c.isBool()){ if(arg[1].equals("default")){
c.set(c.defaultValue);
}else if(c.isBool()){
c.set(arg[1].equals("on") || arg[1].equals("true")); c.set(arg[1].equals("on") || arg[1].equals("true"));
}else if(c.isNum()){ }else if(c.isNum()){
try{ try{
@@ -636,7 +646,7 @@ public class ServerControl implements ApplicationListener{
info("No whitelisted players found."); info("No whitelisted players found.");
}else{ }else{
info("Whitelist:"); info("Whitelist:");
whitelist.each(p -> info("- Name: @ / UUID: @", p.lastName, p.id)); whitelist.each(p -> info("- Name: @ / UUID: @", p.plainLastName(), p.id));
} }
}else{ }else{
if(arg.length == 2){ if(arg.length == 2){
@@ -647,10 +657,10 @@ public class ServerControl implements ApplicationListener{
}else{ }else{
if(arg[0].equals("add")){ if(arg[0].equals("add")){
netServer.admins.whitelist(arg[1]); netServer.admins.whitelist(arg[1]);
info("Player '@' has been whitelisted.", info.lastName); info("Player '@' has been whitelisted.", info.plainLastName());
}else if(arg[0].equals("remove")){ }else if(arg[0].equals("remove")){
netServer.admins.unwhitelist(arg[1]); netServer.admins.unwhitelist(arg[1]);
info("Player '@' has been un-whitelisted.", info.lastName); info("Player '@' has been un-whitelisted.", info.plainLastName());
}else{ }else{
err("Incorrect usage. Provide add/remove as the second argument."); err("Incorrect usage. Provide add/remove as the second argument.");
} }
@@ -739,7 +749,7 @@ public class ServerControl implements ApplicationListener{
}else{ }else{
info("Banned players [ID]:"); info("Banned players [ID]:");
for(PlayerInfo info : bans){ for(PlayerInfo info : bans){
info(" @ / Last known name: '@'", info.id, info.lastName); info(" @ / Last known name: '@'", info.id, info.plainLastName());
} }
} }
@@ -752,7 +762,7 @@ public class ServerControl implements ApplicationListener{
for(String string : ipbans){ for(String string : ipbans){
PlayerInfo info = netServer.admins.findByIP(string); PlayerInfo info = netServer.admins.findByIP(string);
if(info != null){ if(info != null){
info(" '@' / Last known name: '@' / ID: '@'", string, info.lastName, info.id); info(" '@' / Last known name: '@' / ID: '@'", string, info.plainLastName(), info.id);
}else{ }else{
info(" '@' (No known name or info)", string); info(" '@' (No known name or info)", string);
} }
@@ -773,7 +783,7 @@ public class ServerControl implements ApplicationListener{
if(info != null){ if(info != null){
info.lastKicked = 0; info.lastKicked = 0;
info("Pardoned player: @", info.lastName); info("Pardoned player: @", info.plainLastName());
}else{ }else{
err("That ID can't be found."); err("That ID can't be found.");
} }
@@ -793,7 +803,7 @@ public class ServerControl implements ApplicationListener{
boolean add = arg[0].equals("add"); boolean add = arg[0].equals("add");
PlayerInfo target; PlayerInfo target;
Player playert = Groups.player.find(p -> p.name.equalsIgnoreCase(arg[1])); Player playert = Groups.player.find(p -> p.plainName().equalsIgnoreCase(Strings.stripColors(arg[1])));
if(playert != null){ if(playert != null){
target = playert.getInfo(); target = playert.getInfo();
}else{ }else{
@@ -808,7 +818,7 @@ public class ServerControl implements ApplicationListener{
netServer.admins.unAdminPlayer(target.id); netServer.admins.unAdminPlayer(target.id);
} }
if(playert != null) playert.admin = add; if(playert != null) playert.admin = add;
info("Changed admin status of player: @", target.lastName); info("Changed admin status of player: @", target.plainLastName());
}else{ }else{
err("Nobody with that name or ID could be found. If adding an admin by name, make sure they're online; otherwise, use their UUID."); err("Nobody with that name or ID could be found. If adding an admin by name, make sure they're online; otherwise, use their UUID.");
} }
@@ -822,7 +832,7 @@ public class ServerControl implements ApplicationListener{
}else{ }else{
info("Admins:"); info("Admins:");
for(PlayerInfo info : admins){ for(PlayerInfo info : admins){
info(" &lm @ / ID: '@' / IP: '@'", info.lastName, info.id, info.lastIP); info(" &lm @ / ID: '@' / IP: '@'", info.plainLastName(), info.id, info.lastIP);
} }
} }
}); });
@@ -834,7 +844,7 @@ public class ServerControl implements ApplicationListener{
info("Players: @", Groups.player.size()); info("Players: @", Groups.player.size());
for(Player user : Groups.player){ for(Player user : Groups.player){
PlayerInfo userInfo = user.getInfo(); PlayerInfo userInfo = user.getInfo();
info(" &lm @ / ID: @ / IP: @ / Admin: @", userInfo.lastName, userInfo.id, userInfo.lastIP, userInfo.admin); info(" @&lm @ / ID: @ / IP: @", userInfo.admin ? "&r[A]&c" : "&b[P]&c", userInfo.plainLastName(), userInfo.id, userInfo.lastIP, userInfo.admin);
} }
} }
}); });
@@ -916,7 +926,7 @@ public class ServerControl implements ApplicationListener{
int i = 0; int i = 0;
for(PlayerInfo info : infos){ for(PlayerInfo info : infos){
info("[@] Trace info for player '@' / UUID @", i++, info.lastName, info.id); info("[@] Trace info for player '@' / UUID @ / RAW @", i++, info.plainLastName(), info.id, info.lastName);
info(" all names used: @", info.names); info(" all names used: @", info.names);
info(" IP: @", info.lastIP); info(" IP: @", info.lastIP);
info(" all IPs used: @", info.ips); info(" all IPs used: @", info.ips);
@@ -936,7 +946,7 @@ public class ServerControl implements ApplicationListener{
int i = 0; int i = 0;
for(PlayerInfo info : infos){ for(PlayerInfo info : infos){
info("- [@] '@' / @", i++, info.lastName, info.id); info("- [@] '@' / @", i++, info.plainLastName(), info.id);
} }
}else{ }else{
info("Nobody with that name could be found."); info("Nobody with that name could be found.");
@@ -961,15 +971,7 @@ public class ServerControl implements ApplicationListener{
mods.eachClass(p -> p.registerServerCommands(handler)); mods.eachClass(p -> p.registerServerCommands(handler));
} }
private void readCommands(){ public void handleCommandString(String line){
Scanner scan = new Scanner(System.in);
while(scan.hasNext()){
String line = scan.nextLine();
Core.app.post(() -> handleCommandString(line));
}
}
private void handleCommandString(String line){
CommandResponse response = handler.handleMessage(line); CommandResponse response = handler.handleMessage(line);
if(response.type == ResponseType.unknownCommand){ if(response.type == ResponseType.unknownCommand){

View File

@@ -10,5 +10,8 @@
}, },
{ {
"address": "c-n.ddns.net:6567" "address": "c-n.ddns.net:6567"
},
{
"address": "xpdustry.fr:8000"
} }
] ]

View File

@@ -1,11 +1,23 @@
[ [
{
"name": "Sectorized",
"address": ["sectorized.ddns.net"]
},
{
"name": "{AA}",
"address": ["recessive.net"]
},
{
"name": "Yeet Hosting",
"address": ["omegam.mindustry.me:5004", "omegav.mindustry.me:25575", "omegav.mindustry.me:25568"]
},
{ {
"name": "RCM", "name": "RCM",
"address": ["185.104.248.61", "easyplay.su"] "address": ["185.104.248.61", "easyplay.su"]
}, },
{ {
"name": "{AA}", "name": "Tendhost",
"address": ["aamindustry.play.ai", "aamindustry.play.ai:6571", "aamindustry.play.ai:6572", "aamindustry.play.ai:6573", "aamindustry.play.ai:6574"] "address": ["tendhost.ddns.net"]
}, },
{ {
"name": "Atanner", "name": "Atanner",
@@ -29,15 +41,15 @@
}, },
{ {
"name": "TWS", "name": "TWS",
"address": ["twsmindustry.24x7.hk:6701", "twsmindustry.24x7.hk:6702"] "address": ["twsmindustry.24x7.hk:6701", "twsmindustry.24x7.hk:6702", "twsmindustry.24x7.hk:6969"]
}, },
{ {
"name": "mindustry.ddns.net", "name": "mindustry.ddns.net",
"address": ["mindustry.ddns.net", "mindustry.ddns.net:1000", "mindustry.ddns.net:2000", "mindustry.ddns.net:3000", "mindustry.ddns.net:4000"] "address": ["mindustry.ddns.net", "mindustry.ddns.net:1000", "mindustry.ddns.net:2000", "mindustry.ddns.net:3000", "mindustry.ddns.net:4000"]
}, },
{ {
"name": "Surrealment", "name": "Surrealment v6",
"address": ["md.surrealment.com"] "address": ["md.surrealment.com:6566"]
}, },
{ {
"name": "ALEX", "name": "ALEX",
@@ -53,7 +65,7 @@
}, },
{ {
"name": "Omega", "name": "Omega",
"address": ["yeeth.mindustry.me:2004","185.86.230.61:25570"] "address": ["omegav.mindustry.me:6572"]
}, },
{ {
"name": "Obvilion Network", "name": "Obvilion Network",
@@ -69,7 +81,7 @@
}, },
{ {
"name": "TSR", "name": "TSR",
"address": ["ult4.falix.gg:26904"] "address": ["us01.optik.host:26194", "uk01.optik.host:26164"]
}, },
{ {
"name": "Sakura", "name": "Sakura",
@@ -85,7 +97,7 @@
}, },
{ {
"name": "Hungarian", "name": "Hungarian",
"address": ["survival.humindustry.tk", "148.251.175.124:25601"] "address": ["play.hudustry.tk"]
}, },
{ {
"name": "Xpdustry", "name": "Xpdustry",
@@ -97,11 +109,11 @@
}, },
{ {
"name": "Mindustry Español", "name": "Mindustry Español",
"address": ["panel.mindustry.me:2011", "yeeth.mindustry.me:6573", "panel.mindustry.me:2000", "panel.mindustry.me:2026"] "address": ["xpdustry.fr:9000"]
}, },
{ {
"name": "CreateDustry", "name": "CreateDustry",
"address": ["144.76.120.74:18645"] "address": ["129.151.66.139:26032"]
}, },
{ {
"name": "NukeDustry", "name": "NukeDustry",
@@ -109,7 +121,7 @@
}, },
{ {
"name": "MindustryBR", "name": "MindustryBR",
"address": ["mindustryptbr.ddns.net", "mindustryptbr.myddns.me", "n2.mindustry.me:4002", "n2.mindustry.me:4007"] "address": ["mindustryptbr.ddns.net:25579"]
}, },
{ {
"name": "Conservatory", "name": "Conservatory",
@@ -117,10 +129,14 @@
}, },
{ {
"name": "Shard", "name": "Shard",
"address": ["shard.mcv.kr"] "address": ["59.12.120.171"]
}, },
{ {
"name": "OMNIDUSTRY", "name": "OMNIDUSTRY",
"address": ["109.94.209.233"] "address": ["109.94.209.233"]
},
{
"name": "Fish",
"address": ["170.187.144.235"]
} }
] ]

View File

@@ -3,29 +3,29 @@
"name": "mindustry.pl", "name": "mindustry.pl",
"address": ["0.baseduser.eu.org:6000", "0.baseduser.eu.org:6666", "0.baseduser.eu.org:6966"] "address": ["0.baseduser.eu.org:6000", "0.baseduser.eu.org:6666", "0.baseduser.eu.org:6966"]
}, },
{
"name": "SkaarjDustry",
"address": ["skaarjproject.duckdns.org"]
},
{ {
"name": "C.A.M.S.", "name": "C.A.M.S.",
"address": ["baseduser.eu.org:6569", "v7.thedimas.pp.ua", "yeeth.mindustry.me:7000", "yeeth.mindustry.me:4000", "yeeth.mindustry.me:2000", "yeeth.mindustry.me:3000"] "address": ["baseduser.eu.org:6569", "v7.thedimas.pp.ua", "yeeth.mindustry.me:7000", "yeeth.mindustry.me:4000", "yeeth.mindustry.me:2000", "yeeth.mindustry.me:3000"]
}, },
{
"name": "SMokeOfAnarchy",
"address": "SMokeOfAnarchy.ru"
},
{ {
"name": "hexpvp.ml", "name": "hexpvp.ml",
"address": "hexpvp.ml" "address": "hexpvp.ml"
}, },
{ {
"name": "Omega", "name": "Omega",
"address": ["yeeth.mindustry.me", "yeeth.mindustry.me:2006", "yeeth.mindustry.me:2003","yeeth.mindustry.me:2002", "yeeth.mindustry.me:2001", "yeeth.mindustry.me:2007", "yeeth.mindustry.me:2005"] "address": ["omegam.mindustry.me:25577", "omegam.mindustry.me", "omegam.mindustry.me:25586", "omegam.mindustry.me:25565"]
}, },
{ {
"name": "MeowLand", "name": "MeowLand",
"address": ["34.134.111.15", "fifr4.quackhost.uk:21013", "34.134.111.15:4000", "34.134.111.15:7000"] "address": ["kgstudios.ddns.net:6565"]
}, },
{ {
"name": "DarkDustry", "name": "DarkDustry",
"address": ["darkdustry.ml", "darkdustry.ml:6000", "darkdustry.ml:7000", "darkdustry.ml:8000", "darkdustry.ml:9000"] "address": ["darkdustry.ml", "darkdustry.ml:5000", "darkdustry.ml:6000", "darkdustry.ml:7000", "darkdustry.ml:8000", "darkdustry.ml:9000"]
}, },
{ {
"name": "Chaotic Neutral", "name": "Chaotic Neutral",
@@ -33,7 +33,7 @@
}, },
{ {
"name": "XCore", "name": "XCore",
"address": ["skaarjproject.duckdns.org:2000"] "address": ["sandbox.xcore.tk:2707", "attack.xcore.tk:8141"]
}, },
{ {
"name": "Obvilion Network", "name": "Obvilion Network",
@@ -51,13 +51,9 @@
"name": "SubZero", "name": "SubZero",
"address": ["minty-server.ddns.net"] "address": ["minty-server.ddns.net"]
}, },
{
"name": "Shiza Minigames",
"address": ["shizashizashiza.ml"]
},
{ {
"name": "Phoenix Network", "name": "Phoenix Network",
"address": ["172.104.253.198"] "address": ["172.104.253.198", "172.104.253.198:6464"]
}, },
{ {
"name": "Xpdustry", "name": "Xpdustry",
@@ -69,10 +65,30 @@
}, },
{ {
"name": "MindustryBR", "name": "MindustryBR",
"address": ["n2.mindustry.me:4003", "n2.mindustry.me:4005", "n2.mindustry.me:4008", "panel.mindustry.me:2005", "n2.mindustry.me:4010"] "address": ["mindustryptbr.myddns.me"]
}, },
{ {
"name": "LostDustry", "name": "LostDustry",
"address": ["lostdustry.northeurope.cloudapp.azure.com:6568", "lostdustry.northeurope.cloudapp.azure.com:6569", "lostdustry.northeurope.cloudapp.azure.com:6570"] "address": ["lostdustry.northeurope.cloudapp.azure.com:6568", "lostdustry.northeurope.cloudapp.azure.com:6569", "lostdustry.northeurope.cloudapp.azure.com:6570"]
},
{
"name": "Doge Multiverse",
"address": ["v7.servegame.com:25578"]
},
{
"name": "Beyond Anarchy",
"address": ["45.156.25.49"]
},
{
"name": "M-DE",
"address": ["mindustry.inc.li:6569", "mindustry.inc.li:6560"]
},
{
"name": "Surrealment v7",
"address": ["md.surrealment.com:6567"]
},
{
"name": "TinyLake",
"address": ["mdt.wayzer.cf"]
} }
] ]

View File

@@ -27,6 +27,6 @@ public class GenericModTest{
static void checkExistence(String modName){ static void checkExistence(String modName){
assertNotEquals(Vars.mods, null); assertNotEquals(Vars.mods, null);
assertNotEquals(Vars.mods.list().size, 0, "At least one mod must be loaded."); assertNotEquals(Vars.mods.list().size, 0, "At least one mod must be loaded.");
assertEquals(Vars.mods.list().first().name, modName, modName + " must be loaded."); assertEquals(modName, Vars.mods.list().first().name, modName + " must be loaded.");
} }
} }