This commit is contained in:
NgLamVN
2020-11-25 16:09:41 +07:00
committed by GitHub
88 changed files with 10407 additions and 9768 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 682 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 683 B

View File

@@ -22,7 +22,6 @@ gameover.pvp = The[accent] {0}[] team is victorious!
gameover.waiting = [accent]Waiting for next map...
highscore = [accent]New highscore!
copied = Copied.
indev.popup = [accent]v6[] is currently in [accent]beta[].\n[lightgray]This means:[]\n[scarlet]- The campaign is unfinished[]\n- Everything you see is subject to change or removal.\n\nReport bugs or crashes on [accent]Github[].
indev.notready = This part of the game isn't ready yet
indev.campaign = [accent]You've reached the end of the campaign![]\n\nThis is as far as the content goes. Interplanetary travel will be added in future updates.
@@ -147,6 +146,7 @@ planetmap = Planet Map
launchcore = Launch Core
filename = File Name:
unlocked = New content unlocked!
available = New research available!
completed = [accent]Completed
techtree = Tech Tree
research.list = [lightgray]Research:
@@ -501,7 +501,6 @@ map.multiplayer = Only the host can view sectors.
uncover = Uncover
configure = Configure Loadout
#TODO
loadout = Loadout
resources = Resources
bannedblocks = Banned Blocks
@@ -509,12 +508,6 @@ addall = Add All
launch.from = Launching From: [accent]{0}
launch.destination = Destination: {0}
configure.invalid = Amount must be a number between 0 and {0}.
zone.unlocked = [lightgray]{0} unlocked.
zone.requirement.complete = Requirement for {0} completed:[lightgray]\n{1}
zone.resources = [lightgray]Resources Detected:
zone.objective = [lightgray]Objective: [accent]{0}
zone.objective.survival = Survive
zone.objective.attack = Destroy Enemy Core
add = Add...
boss.health = Guardian Health
@@ -552,7 +545,7 @@ sectors.enemybase = [scarlet]Enemy Base
sectors.vulnerable = [scarlet]Vulnerable
sectors.underattack = [scarlet]Under attack! [accent]{0}% damaged
sectors.survives = [accent]Survives {0} waves
sectors.go = Go
sector.curcapture = Sector Captured
sector.curlost = Sector Lost
sector.missingresources = [scarlet]Insufficient Core Resources
@@ -600,6 +593,11 @@ sector.tarFields.description = The outskirts of an oil production zone, between
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.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.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.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.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.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.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.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.
settings.language = Language
settings.data = Game Data
@@ -805,7 +803,6 @@ setting.conveyorpathfinding.name = Conveyor Placement Pathfinding
setting.sensitivity.name = Controller Sensitivity
setting.saveinterval.name = Save Interval
setting.seconds = {0} seconds
setting.blockselecttimeout.name = Block Select Timeout
setting.milliseconds = {0} milliseconds
setting.fullscreen.name = Fullscreen
setting.borderlesswindow.name = Borderless Window[lightgray] (restart may be required)
@@ -814,7 +811,7 @@ setting.smoothcamera.name = Smooth Camera
setting.vsync.name = VSync
setting.pixelate.name = Pixelate
setting.minimap.name = Show Minimap
setting.coreitems.name = Display Core Items (WIP)
setting.coreitems.name = Display Core Items
setting.position.name = Show Player Position
setting.musicvol.name = Music Volume
setting.atmosphere.name = Show Planet Atmosphere
@@ -895,6 +892,7 @@ keybind.pause.name = Pause
keybind.pause_building.name = Pause/Resume Building
keybind.minimap.name = Minimap
keybind.planet_map.name = Planet Map
keybind.research.name = Research
keybind.chat.name = Chat
keybind.player_list.name = Player List
keybind.console.name = Console
@@ -1019,6 +1017,7 @@ block.resupply-point.name = Resupply Point
block.parallax.name = Parallax
block.cliff.name = Cliff
block.sand-boulder.name = Sand Boulder
block.basalt-boulder.name = Basalt Boulder
block.grass.name = Grass
block.slag.name = Slag
block.space.name = Space
@@ -1241,7 +1240,6 @@ team.derelict.name = derelict
team.green.name = green
team.purple.name = purple
# DO NOT TRANSLATE ANY OF THESE YET! THEY ARE UNFINISHED!
hint.skip = Skip
hint.desktopMove = Use [accent][[WASD][] to move.
hint.zoom = [accent]Scroll[] to zoom in or out.
@@ -1268,13 +1266,15 @@ hint.schematicSelect = Hold [accent][[F][] and drag to select blocks to copy and
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.boost = Hold [accent][[L-Shift][] to fly over obstacles with your current unit.\n\nOnly a few ground units have boosters.
hint.command = Press [accent][[G][] to command nearby units into formation.
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.mobile = [accent][[Double-tap][] your unit to command nearby units into formation.
hint.payloadPickup = Press [accent][[[] to pick up small blocks or units.
hint.payloadPickup.mobile = [accent]Tap and hold[] a small block or unit to pick it up.
hint.payloadDrop = Press [accent]][] to drop a payload.
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.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.guardian = [accent]Guardian[] units are armored. Weak ammo such as [accent]Copper[] and [accent]Lead[] is [scarlet]not effective[].\n\nUse higher tier turrets or \uf835 [accent]Graphite[] \uf861Duo/\uf859Salvo ammunition to take Guardians down.
item.copper.description = Used in all types of construction and ammunition.
item.copper.details = Copper. Abnormally abundant metal on Serpulo. Structurally weak unless reinforced.

View File

@@ -10,18 +10,22 @@ link.dev-builds.description = Nestabilní vývojová verze hry
link.trello.description = Oficiální Trello nástěnka s plánovanými novinkami
link.itch.io.description = Stránka na itch.io s odkazy na stažení hry
link.google-play.description = Obchod Google Play
link.f-droid.description = Katalog F-Droid
link.f-droid.description = F-Droid
link.wiki.description = Oficiální Wiki Mindustry
link.suggestions.description = Suggest new features
linkfail = Nepodařilo se otevřít odkaz!\nAdresa URL byla zkopírována do schránky.
screenshot = Snímek obrazovky uložen {0}
screenshot.invalid = Mapa je moc velká, nemusí být dost paměti pro získání snímku obrazovky.
gameover = Konec hry
gameover.disconnect = Odpojit se
gameover.pvp = Vyhrál tým [accent]{0}[]!
gameover.waiting = [accent]Hra čeká na další mapu...
highscore = [accent]Nový rekord!
copied = Zkopírováno.
indev.popup = Mindustry [accent]v6[] je aktuálně ve verzi [accent]beta[].\n[lightgray]To znamená:[]\n[scarlet]- Kampaň je nedokončená[]\n- SFX a hudba je nedokončená nebo chybí\n- Cokoli, co vidíte, se může změnit nebo být odstraněno.\n\nHlaste prosím chyby na [accent]Github[].
indev.popup = Mindustry [accent]v6[] je aktuálně ve verzi [accent]beta[].\n[lightgray]To znamená:[]\n[scarlet]- Kampaň je nedokončená[]\n- Cokoli, co vidíte, se může změnit nebo být odstraněno.\n\nHlaste prosím chyby na [accent]Github[].
indev.notready = Tato část hry ještě není připravena
indev.campaign = [accent]Dovršil jsi kampaň![]\n\nTohle je vše, co Ti hra může po obsahové stránce nabídnout. Meziplanetární lety budou přidány až v budoucích aktualizacích.
load.sound = Zvuky
load.map = Mapy
@@ -57,6 +61,7 @@ schematic.rename = Přejmenovat šablonu
schematic.info = {0}x{1}, {2} bloků
schematic.disabled = [scarlet]Šablony jsou zakázány[]\nNa této [accent]mapě[] nebo [accent]serveru[] nemůžeš používat šablony.
stats = Statistiky
stat.wave = Vln poraženo: [accent]{0}
stat.enemiesDestroyed = Nepřátel zničeno: [accent]{0}[]
stat.built = Budov postaveno: [accent]{0}[]
@@ -189,6 +194,10 @@ servers.local = Místní servery
servers.remote = Vzdálené servery
servers.global = Komunitní servery
servers.showhidden = Zobraz skryté servery
server.shown = Zobrazené
server.hidden = Skryté
trace = Vystopovat hráče
trace.playername = Jméno hráče: [accent]{0}[]
trace.ip = Adresa IP: [accent]{0}[]
@@ -267,6 +276,9 @@ cancel = Zrušit
openlink = Otevřít odkaz
copylink = Zkopírovat odkaz
back = Zpět
crash.export = Exportovat záznamy o zhroucení hry
crash.none = Záznamy o zhroucení hry nebyly nalezeny.
crash.exported = Záznamy o zhroucení hry byly exportovány.
data.export = Exportovat data
data.import = Importovat data
data.openfolder = Otevřít složku s daty
@@ -283,6 +295,7 @@ cancelbuilding = [accent][[{0}][] vyčistí plán šablony
selectschematic = [accent][[{0}][] provede výběr a zkopírování
pausebuilding = [accent][[{0}][] zastaví stavění
resumebuilding = [scarlet][[{0}][] bude pokračovat ve stavění
showui = UI je skryto.\nZmáčkni [accent][[{0}][] pro jeho zobrazení.
wave = [accent]Vlna číslo {0}[]
wave.cap = [accent]Vlna {0} z {1}[]
wave.waiting = [lightgray]Vlna za {0} vteřin[]
@@ -290,7 +303,9 @@ wave.waveInProgress = [lightgray]Vlna přichází![]
waiting = [lightgray]Čekám...[]
waiting.players = Čekání na hráče...
wave.enemies = [lightgray]{0} zbývajících nepřátel
wave.enemy = [lightgray]{0} zbývající nepřítel
wave.enemycores = [accent]{0}[lightgray] nepřátelská jádra
wave.enemycore = [accent]{0}[lightgray] nepřátelské jádro
wave.enemy = [lightgray]{0} zbývající nepřátel
wave.guardianwarn = Počet vln do příchodu strážce: [accent]{0}[].
wave.guardianwarn.one = [accent]Strážce přijde již příští vlnu![]
loadimage = Nahrát obrázek
@@ -420,7 +435,7 @@ toolmode.drawteams.description = Kreslí týmy místo bloků.
filters.empty = [lightgray]Nejsou zadány žádné filtry, přidej filtr tlačítkem níže.[]
filter.distort = Zkreslení
filter.noise = Zašumění
filter.enemyspawn = Výběr nepřítelské líhně
filter.enemyspawn = Výběr nepřátelské líhně
filter.spawnpath = Cesta k líhni
filter.corespawn = Váběr ládra
filter.median = Medián
@@ -463,7 +478,9 @@ load = Načíst
save = Uložit
fps = FPS: {0}
ping = Odezva: {0} ms
language.restart = Prosím restartuj hru, aby se provedla změna jazyka!
memory = Paměť: {0} MB
memory2 = Paměť:\n {0} MB +\n {1} MB
language.restart = Hru je třeba restartovat, aby se provedla změna jazyka.
settings = Volby
tutorial = Výuka
tutorial.retake = Spustit znovu výuku.
@@ -476,18 +493,20 @@ locked = Zamčeno
complete = [lightgray]Dokončeno:
requirement.wave = Dosáhni vlny {0} na mapě {1}
requirement.core = Znič nepřátelské jádro na mapě {0}
requirement.research = Vynalezeno {0}
requirement.capture = Polapeno {0}
bestwave = [lightgray]Nejvyšší vlna: {0}
requirement.research = Vynalezni {0}
requirement.produce = Vyrob {0}
requirement.capture = Polap {0}
launch.text = Vyslat
research.multiplayer = Jen hostitel hry může vynalézat nové technologie.
uncover = Odkrýt mapu
configure = Přizpůsobit vybavení
#TODO
loadout = Načtení
resources = Zdroje
bannedblocks = Zakázané bloky
addall = Přidat vše
launch.from = Vysláno z: [accent]{0}
launch.destination = Cíl: {0}
configure.invalid = Hodnota musí být číslo mezi 0 a {0}.
zone.unlocked = [lightgray]Mapa {0} byla odemknuta.[]
@@ -519,19 +538,36 @@ weather.fog.name = Mlha
sectors.unexplored = [lightgray]Neprozkoumáno
sectors.resources = Zdroje:
sectors.production = Výroba:
sectors.export = Export:
sectors.time = Čas:
sectors.threat = Ohrožení:
sectors.wave = Vlna:
sectors.stored = Uskladněno:
sectors.resume = Pokračovat
sectors.launch = Vyslat
sectors.select = Vybrat
sectors.nonelaunch = [lightgray]bez (slunce)[]
sectors.rename = Přejmenovat sektor
sector.missingresources = [scarlet]Nedostatečné zdroje v jádře[]
sector.curcapture = Sektor polapen
sector.missingresources = [scarlet]Nedostatečné zdroje v jádře
sector.attacked = Sektor [accent]{0}[white] pod útokem!
sector.lost = Sektor [accent]{0}[white] ztracen! :(
#note: the missing space in the line below is intentional
sector.captured = Sektor [accent]{0}[white]polapen! :)
threat.low = Nízké
threat.medium = Střední
threat.high = Velké
threat.extreme = Extrémní
threat.eradication = Vyhlazující
planets = Planets
planet.serpulo.name = Serpulo
#TODO better name
planet.sun.name = Sol
#NOTE TO TRANSLATORS: don't bother editing these, they'll be removed and/or rewritten anyway
sector.impact0078.name = Dopad 0078
sector.groundZero.name = Základní tábor
sector.craters.name = Krátery
sector.frozenForest.name = Zamrzlý les
@@ -543,16 +579,19 @@ sector.overgrowth.name = Džungle
sector.tarFields.name = Dehtová pole
sector.saltFlats.name = Solné nížiny
sector.fungalPass.name = Plísňový průsmyk
sector.biomassFacility.name = Zařízení pro syntézu biomasy
sector.windsweptIslands.name = Větrné ostrovy
sector.extractionOutpost.name = Extrakční základna
sector.planetaryTerminal.name = Planetární odpalovací terminál
#unused
#sector.impact0078.name = Impact 0078
#sector.crags.name = Crags
sector.groundZero.description = Optimální místo, kde znovu začít. Nízký výskyt nepřátel. Několik málo surovin.\nPosbírej co nejvíce olova a mědi.\nBěž dál.
sector.frozenForest.description = Dokonce až sem, blízko hor, se dokázaly spóry rozrůst. Mráz je však nemůže zadržet navěky.\n\nPusť se do práce za pomocí energie. Stav spalovací generátory. Nauč se, jak používat opravovací věže.
sector.saltFlats.description = Na okraji pouště leží Solné nížiny. V této lokaci se nachází jen několik málo surovin.\n\nNepřítel zde vybudoval zásobovací komplex. Znič jádro v jeho základně. Nenechej kámen na kameni.
sector.craters.description = V těchto relikviích starých válek se nahromadilo velké množství vody. Znovu získej tuto oblast. Sbírej písek. Vyrob z něj metasklo. Použij vodu k chlazení svých vrtů a střílen.
sector.ruinousShores.description = Za pustinou se nachází pobřeží. Kdysi zde stál obranný pobřežní systém. Moc z něj už dneska nezbylo. Jen základní stavby zůstaly ušetřeny, zbytek se rozpadl na šrot.\nPokračuj ve své expanzi hlouběji. Objev ztracenou technologii.
sector.ruinousShores.description = Za pustinou se nachází pobřeží. Kdysi zde stál obranný pobřežní systém. Moc z něj už dneska nezbylo. Jen základní konstrukce zůstaly ušetřeny, zbytek se rozpadl na šrot.\nPokračuj ve své expanzi hlouběji. Objev ztracenou technologii.
sector.stainedMountains.description = Dále ve vnitrozemí leží hory, dosud neposkvrněny spórami.\nVytěž titan, kterým tato oblast oplývá. Nauč se jej používat.\n\nPřítomnost nepřátelských jednotek je zde větší. Radši jim nedej moc času na vyslání jejich nejsilnějších jednotech.
sector.overgrowth.description = Tato přerostlá džungle se nachází blíže ke zdroji spór.\nNepřítel zde zbudoval předsunutou hlídku. Stav jednotky Dýka a znič s jejich pomocí jádro základny. Získej znovu to, co bylo již dávno ztraceno.
sector.tarFields.description = Rozhraní produkční naftové oblasti mezi horami a pouští. Jedna z mála oblastí, kde se stále nachází dehet.\nAčkoliv je oblast opuštěná, stále se v jejím okolí nachází nebezpečné nepřátelské síly. Není radno je podcenit.\n\n[lightgray]Vyzkoumej technologii na zpracování nafty.[]
@@ -590,6 +629,7 @@ unit.nobuild = [scarlet]Jednotka nemůže stavět
lastaccessed = [lightgray]Naposledy použil: {0}
block.unknown = [lightgray]???[]
stat.description = Účel
stat.input = Vstup
stat.output = Výstup
stat.booster = Posilovač
@@ -617,6 +657,8 @@ stat.memorycapacity = Kapacita paměti
stat.basepowergeneration = Základní generování energie
stat.productiontime = Čas produkce
stat.repairtime = Čas do úplné opravy
stat.weapons = Zbraně
stat.bullet = Střela
stat.speedincrease = Zvýšení rychlosti
stat.range = Dosah
stat.drilltier = Lze těžit
@@ -624,9 +666,9 @@ stat.drillspeed = Základní rychlost vrtu
stat.boosteffect = Účinek posílení
stat.maxunits = Nejvýše aktivních jednotek
stat.health = Životy
stat.buildtime = Čas stavby
stat.buildtime = Čas konstrukce
stat.maxconsecutive = Nejvýše po sobě
stat.buildcost = Cena stavby
stat.buildcost = Cena konstrukce
stat.inaccuracy = Nepřesnost
stat.shots = Střely
stat.reload = Střel za 1s
@@ -657,6 +699,7 @@ ability.repairfield = Opravit pole
ability.statusfield = Stav pole
ability.unitspawn = {0} továrna
ability.shieldregenfield = Silově opravné pole
ability.movelightning = Pohybující se blesk
bar.drilltierreq = Je vyžadován lepší vrt
bar.noresources = Chybějí zdroje
@@ -676,7 +719,7 @@ bar.limitreached = [scarlet] {0} / {1}[white] {2}\n[lightgray][[jednotka je v
bar.liquid = Chlazení
bar.heat = Teplo
bar.power = Energie
bar.progress = Stavba v průběhu
bar.progress = Konstrukce v průběhu
bar.input = Vstup
bar.output = Výstup
@@ -684,13 +727,15 @@ units.processorcontrol = [lightgray]Procesor je ovládán[]
bullet.damage = [stat]{0}[lightgray] poškození[]
bullet.splashdamage = [stat]{0}[lightgray] plošného poškození ~[stat] {1}[lightgray] dlaždic
bullet.incendiary = [stat]zápalné
bullet.incendiary = [stat]zápalný
bullet.sapping = [stat]oslabující
bullet.homing = [stat]samonaváděcí
bullet.shock = [stat]šokové
bullet.frag = [stat]trhavé
bullet.shock = [stat]šokový
bullet.frag = [stat]trhavý
bullet.knockback = [stat]{0}[lightgray] odhození[]
bullet.pierce = [stat]{0}[lightgray]x průrazné[]
bullet.infinitepierce = [stat]průrazné[]
bullet.healpercent = [stat]{0}[lightgray]% opravující
bullet.freezing = [stat]zmrazující[]
bullet.tarred = [stat]dehtující[]
bullet.multiplier = [stat]{0}[lightgray]x více střel[]
@@ -715,6 +760,7 @@ unit.items = předměty
unit.thousands = tis
unit.millions = mio
unit.billions = mld
category.purpose = Účel
category.general = Všeobecné
category.power = Energie
category.liquids = Kapaliny
@@ -728,7 +774,7 @@ setting.blockreplace.name = Automatický návrh bloků
setting.linear.name = Lineární filtrování
setting.hints.name = Rady a tipy
setting.flow.name = Zobrazit rychlost toku zdroje [scarlet](experimentální)[]
setting.backgroundpause.name = Pozastavit na pozadí
setting.backgroundpause.name = Pozastavit v pozadí
setting.buildautopause.name = Automaticky pozastavit stavění
setting.animatedwater.name = Animované povrchy
setting.animatedshields.name = Animované štíty
@@ -859,7 +905,7 @@ keybind.drop_unit.name = Zahodit jednotku
keybind.zoom_minimap.name = Přiblížit mapu
mode.help.title = Popis režimů
mode.survival.name = Hra o přežití
mode.survival.description = Klasický režim. Zdroje jsou limitované a vlny nepřátel přicházejí automaticky.\n[gray]Vyžaduje, aby v mapě bylo místo pro líhnutí nepřítel.[]
mode.survival.description = Klasický režim. Zdroje jsou limitované a vlny nepřátel přicházejí automaticky.\n[gray]Vyžaduje, aby v mapě bylo místo pro líhnutí nepřátel.[]
mode.sandbox.name = Pískoviště
mode.sandbox.description = Zdroje jsou nekonečné, vlny nepřátel nemají automatické načasování.
mode.editor.name = Editor
@@ -909,6 +955,7 @@ content.item.name = Předměty
content.liquid.name = Kapaliny
content.unit.name = Jednotky
content.block.name = Bloky
content.sector.name = Sektory
item.copper.name = Měď
item.lead.name = Olovo
@@ -927,7 +974,7 @@ item.pyratite.name = Pyratit
item.metaglass.name = Metasklo
item.scrap.name = Šrot
liquid.water.name = Voda
liquid.slag.name = Roztavený kov
liquid.slag.name = Struska
liquid.oil.name = Nafta
liquid.cryofluid.name = Chladící kapalina
@@ -970,7 +1017,7 @@ block.parallax.name = Paralaxa
block.cliff.name = Útes
block.sand-boulder.name = Pískovec
block.grass.name = Tráva
block.slag.name = Slag
block.slag.name = Struska
block.space.name = Vesmír
block.salt.name = Sůl
block.salt-wall.name = Solné skály
@@ -1066,7 +1113,6 @@ block.conveyor.name = Dopravník
block.titanium-conveyor.name = Titanoový dopravník
block.plastanium-conveyor.name = Plastanový přepravník
block.armored-conveyor.name = Obrněný dopravník
block.armored-conveyor.description = Přepravuje předměty stejně rychle jako titanový přepravník, ale má navíc brnění. Přijímá předměty ze srtan pouze z jiných přepravníků.
block.junction.name = Křižovatka
block.router.name = Směrovač
block.distributor.name = Rozdělovač
@@ -1148,7 +1194,7 @@ block.fuse.name = Fúze
block.shock-mine.name = Šoková mina
block.overdrive-projector.name = Urychlující projektor
block.force-projector.name = Silový projektor
block.arc.name = Oblouk
block.arc.name = Výboj
block.rtg-generator.name = RTG
block.spectre.name = Přízrak
block.meltdown.name = Rozpékač
@@ -1170,6 +1216,11 @@ block.payload-router.name = Směřovač nákladu
block.disassembler.name = Rozebírač
block.silicon-crucible.name = Tavicí tyglík pro křemík
block.overdrive-dome.name = Velká urychlující kupole
#experimental, may be removed
block.block-forge.name = Výheň bloků
block.block-loader.name = Nakladač bloků
block.block-unloader.name = Vykladač bloků
block.interplanetary-accelerator.name = Meziplanetární urychlovač
block.switch.name = Přepínač
block.micro-processor.name = Mikroprocesor
@@ -1196,10 +1247,10 @@ tutorial.drill.mobile = Sám vidíš, že ruční těžba není moc efektivní.\
tutorial.blockinfo = Každý blok má jiné vlastnosti. Každý vrt může těžit pouze některé suroviny.\nPro zobrazení informací a statistik o bloku [accent]zvol "?" při vybraném bloku ve stavební nabídce[].\n\nNyní se podívej na [accent]vlastnosti mechanického vrtu[].
tutorial.conveyor = Pro dopravu materiálu k jádru jsou zapotřebí [accent]dopravníky[].\nVytvoř řadu dopravníků od vrtu až k jádru.\nDrž zmáčknuté [accent]levé tlačítko myši[], abys umístil dopravníky v jedné řadě.\nKdyž zmáčkneš [accent]Ctrl[], řada dopravníků se bude umisťovat navíc úhlopříčně.\nPoužij [accent]kolečko myši[] pro otáčení bloku před umístěním.\n[accent]Umísti dopravníky tak, abys dopravil měď do jádra[].
tutorial.conveyor.mobile = Pro dopravu materiálu k jádru jsou zapotřebí [accent]dopravníky[].\nVytvoř řadu dopravníků od vrtu až k jádru.\n[accent]Pokládej dopravníky v řadě ťupnutím a delším prstu[] a táhnutím v požadovaném směru.\n[accent]Umísti dopravníky tak, abys dopravil měď do jádra[].
tutorial.turret = Jakmile se materiál dostane do jádra, může být použit pro stavbu.\nPamatuj si, že ne všechno lze použít pro stavbu.\nVěci, které melze použít jako stavební materiál, jako například [accent]uhlí[] nebo [accent]šrot[], nelze do jádra uložit, a zasekne tak celý dopravník na vstupu.\nPro odehnání útočných jednotek [lightgray]nepřítele[] od jádra je třeba postavit obranné stavby.\nPostav [accent]střílnu Duo[] poblíž svého jádra.
tutorial.turret = Jakmile se materiál dostane do jádra, může být použit pro konstrukci.\nPamatuj si, že ne všechno lze použít pro konstrukci.\nVěci, které melze použít jako stavební materiál, jako například [accent]uhlí[] nebo [accent]šrot[], nelze do jádra uložit, a zasekne tak celý dopravník na vstupu.\nPro odehnání útočných jednotek [lightgray]nepřítele[] od jádra je třeba postavit obranné konstrukce.\nPostav [accent]střílnu Duo[] poblíž svého jádra.
tutorial.drillturret = Střílny Duo potřebují jako střelivo [accent]měď[].\nPolož mechanický vrt blízko střílny.\nPro zásobování mědí veď dopravníky od vrtu ke střílně.\n\n[accent]Doručeno střeliva: {0}/{1}[]
tutorial.pause = Během hry, například v boji, můžeš [accent]pozastavit hru[].\nPři pozastavení můžeš naplánovat stavbu do fronty.\n\n[accent]Pozastav hru mezerníkem[].
tutorial.pause.mobile = Během hry, například v boji, můžeš [accent]pozastavit hru[].\nPři pozastavení můžeš naplánovat stavbu do fronty.\n\n[accent]Pozastavení hry probedeš ťupnutím na dvě čárky vlevo nahoře.
tutorial.pause = Během hry, například v boji, můžeš [accent]pozastavit hru[].\nPři pozastavení můžeš naplánovat konstrukci do fronty.\n\n[accent]Pozastav hru mezerníkem[].
tutorial.pause.mobile = Během hry, například v boji, můžeš [accent]pozastavit hru[].\nPři pozastavení můžeš naplánovat konstrukci do fronty.\n\n[accent]Pozastavení hry probedeš ťupnutím na dvě čárky vlevo nahoře.
tutorial.unpause = Teď zmáčkni mezerník znova a pokračuj ve hře.
tutorial.unpause.mobile = Teď ťupni na ikonu na stejném místě a pokračuj ve hře.
tutorial.breaking = Bloky je třeba nejen stavět, ale Často rozbít.\n[accent]Drž pravé tlačítko myšu[] a táhni s ní pro výběr bloků, které potřebuješ rozbít.\n\n[accent]Znič všechen šrot vlevo od Tvého jádra použitím blokového výběru[].
@@ -1210,136 +1261,207 @@ tutorial.waves = [lightgray]Nepřítel[] se přibližuje.\n\nUbraň své jádro
tutorial.waves.mobile = [lightgray]Nepřítel[] se přibližuje.\n\nUbraň své jádro po dobu 2 vln. Tvá loď bude automaticky střílet po nepřátelských jednotkách.\nPostav více střílen a vrtů. Natěž více mědi.
tutorial.launch = Jakmile dosáhneš určité vlny, budeš moci [accent]vyslat své jádro zpět[]. Opustíš tím svou základnu a [accent]získáš suroviny uložené v jádře[].\nZískané suroviny mohou být použity pro výzkum nových technologií.\n\n[accent]Stiskni tlačítko pro vyslání jádra zpět[].
item.copper.description = Nejběžnější stavební materiál. Používá se ve všech typech bloků.
item.lead.description = Základní materiál. Používá se v energetických blocích a při přepravě kapalin.
item.metaglass.description = Velmi tvrdá skleněná sloučenina. Hodně používaná pro ukládání a rozvod kapalin.
item.graphite.description = Mineralizovaný uhlík, používaný v energetických komponentách a též jako munice.
item.sand.description = Běžný materiál, který se hojně používá při slévání a tavení.
item.coal.description = Zkamenělé rostliny, zformované dávno před vznikem mapy. Používané běžně jako palivo a pro vyrobu dalších materálů.
item.titanium.description = Vzácný, velice lehký kov, využívaný hojně při přepravě kapalin, ve vrtech a při výrobě letových strojů.
item.thorium.description = Hutný, radioaktivní materiál, využívaný jako strukturální podpora a nuklearní palivo.
item.scrap.description = Zbytky starých struktur a jednotek. Obsahuje stopové množství mnoha různých kovů.
item.silicon.description = Extrémně užitečný polovodič. Využívá se v solárních panelech, pokročilých energetických blocích a jako munice do samonaváděcích střel ve střílnách.
item.plastanium.description = Lehký, kujný materiál, využívaný v pokročilém letectví a jako tříštivá munice.
item.phase-fabric.description = Takřka nehmotná substance používaná v pokročilých energetických blocích a v samoopravných technologiích.
item.surge-alloy.description = Vyspělá slitina s jedinečnými energetickými vlastnostmi.
item.spore-pod.description = Umělé spór, syntetizované pro průmyslové účely z atmosférických koncentrací. Jejich využití spočívá v přeměně na naftu, výbušniny a jako palivo.
item.blast-compound.description = Nestálá směs používaná v bombách a výbušninách. Syntetizuje se ze spórových tobolek a těkavých substancí. Nedoporučuje se využívat jako palivo.
item.pyratite.description = Extrémně vznětlivá substance, používaná ve zápalném střelivu.
liquid.water.description = Nejužitečnější kapalina. Hojně využívaná jak chlazení do strojů a též pro výrobu spór.
liquid.slag.description = Různé různé druhy roztaveného kovu smíchané dohromady. Lze je rozdělit na jednotlivé minerály, nebo se tato slitina dá použít jako munice při střílení na nepřátelské jednotky.
liquid.oil.description = Kapalina použitá při pokročilé výrobě materiálů. Může být přeměněna na uhlí, nebo při rozprášení a zapálení použita jako zbraň.
liquid.cryofluid.description = Netečná, nereznoucí kapalina, vytvořená z vody a titanu. Má extrémně vysokou tepelnou kapacitu. Hojně se používá jako chladicí kapalina.
item.copper.description = Používá se ve všech typech bloků a munice.
item.copper.details = Měď. Nezvykle nadpočetný kov na Serpulu. Konstrukčně slabý, pokud není rafinovaná.
item.lead.description = Používá se v přepravě kapalin a elektrických konstrukcích.
item.lead.details = Hutný, netečný materiál. Hojně používán v bateriích.\nPoznámka: Pravděpodobně toxický pro biologické formy života. Ne že by jich tady moc zbývalo.
item.metaglass.description = Používá se v přepravě kapalin a úložných konstrukcích.
item.graphite.description = Používá se v elektrických komponentách a nábojích do věží.
item.sand.description = Používá se ve výrobě ostatních rafinovaných materiálů.
item.coal.description = Používá se na palivo a výrobu rafinovaný materiálů.
item.coal.details = Jeví se být zkamenělou rostlinou hmotou, zformovaou dávno před událostí vytvoření tohoto světa náhodným číslem.
item.titanium.description = Používá se v konstrukcích pro přepravu kapalin, ve vrtácích a letectví.
item.thorium.description = Používá se v bytelných konstrukcích a též jako nukleární palivo.
item.scrap.description = Používá se v tavičích a drtičích pro rafinaci na jiné materiály.
item.scrap.details = Zbytky zbytků starých konstrukcí a jednotek.
item.silicon.description = Používá se v solárních panelech, komplexní elektronice a samonaváděcích střelách do obraných věží.
item.plastanium.description = Používá se v pokročilých jednotkách, izolaci a tříštivé munici.
item.phase-fabric.description = Používá se v pokročilé elektronice a samoopravných konstrukcích.
item.surge-alloy.description = Používá se v pokročilém zbrojnictví a reakčních obranných konstrukcích.
item.spore-pod.description = Používá se pro přeměnu na ropu, výbušniny a palivo.
item.spore-pod.details = Spóry. Pravděpodobně syntetická forma života. Vydává plyn toxický pro jiné formy života. Extrémně invazivní. Vysoce hořlavý za určitých podmínek.
item.blast-compound.description = Používá se v bombách a výbušné munici.
item.pyratite.description = Používá se v zápalných zbraních a spalovacích generátorech.
block.message.description = Ukládá zprávu. Používá se pro komunikaci mezi spojenci.
block.graphite-press.description = Přeměňuje neforemné kusy uhlí do ušlechtilých výlisků grafitu.
block.multi-press.description = Vylepšená verze lisu na grafit. Využívá vodu a energii k rychlejšímu a efektivnějšímu zpracování uhlí.
block.silicon-smelter.description = Redukuje písek vyčištěným uhlím, čímž vyrábí křemík.
block.kiln.description = Taví písek a olovo na směs známou jako metasklo. Vyžaduje k běhu malé množství energie.
block.plastanium-compressor.description = Produkuje plastanu z titanu a nafty.
block.phase-weaver.description = Produkuje fázovou tkaninu z radioaktivního thoria a písku. Spotřebuje k tomu výrazné množství energie.
block.alloy-smelter.description = Produkuje rázovou slitinu z titanu, olova, křemíku a mědi.
block.cryofluid-mixer.description = Míchá vodu a jemný titanová prášek do chladící kapaliny, nezbytné například pro thoriový reaktor.
block.blast-mixer.description = Drtí a míchá shluky spór s pyratitem, čímž vzniká výbušnina.
block.pyratite-mixer.description = Míchá uhlí, olovo a písek do vysoce hořlavého pyratitu.
block.melter.description = Taví šrot do roztaveného kovu pro další zpracování, nebo pro munici do střílny Vlna.
block.separator.description = Odděluje z roztaveného kovu jednotlivé minerální součásti, které na výstupu zchlazuje do pevné formy.
block.spore-press.description = Lisuje ze spór pod enormním tlakem naftu.
liquid.water.description = Používá se pro chladící stroje a na zpracování odpadu.
liquid.slag.description = Používá se v oddělovačích pro rozdělení na jednotlivé kovy, nebo je chrlena na protivníky z věží.
liquid.oil.description = Používá se v pokročilé materiálové výrobě a jako zápalná munice.
liquid.cryofluid.description = Používá se jako chladící kapalina v reaktorech, věžích a továrnách.
block.resupply-point.description = Zásobuje okolní jednotky měděnou municí. Není kompatibilní s jednotkami, které vyžadují energii z baterie.
block.armored-conveyor.description = Přepravuje předměty vpřed. Nepřijímá předměty ze stran.
block.illuminator.description = Vydává světlo.
block.message.description = Ukládá zprávu pro komunikaci mezi spojenci.
block.graphite-press.description = Lisuje uhlí na grafit.
block.multi-press.description = Lisuje uhlí na grafit. Vyžaduje vodu jako chladivo.
block.silicon-smelter.description = Rafinuje křemík z písku a uhlí.
block.kiln.description = Taví písek a olovo na metasklo.
block.plastanium-compressor.description = Produkuje plastan z titanu a nafty.
block.phase-weaver.description = Syntetizuje fázovou tkaninu z thoria a písku.
block.alloy-smelter.description = Taví titan, olovo, křemík a měď na rázovou slitinu.
block.cryofluid-mixer.description = Míchá vodu a jemný titanová prášek na chladící kapalinu.
block.blast-mixer.description = Vyrábí výbušninu z pyratitu a shluků spór.
block.pyratite-mixer.description = Míchá uhlí, olovo a písek na pyratit.
block.melter.description = Taví šrot na strusku.
block.separator.description = Odděluje ze strusky jednotlivé minerální součásti.
block.spore-press.description = Lisuje skluhy spór na naftu.
block.pulverizer.description = Drtí šrot na jemný písek.
block.coal-centrifuge.description = Tuhne naftu do kusů uhlí.
block.incinerator.description = Vypaří jakékoliv nadbytečné předměty nebo kapaliny, které mu pošleš.
block.power-void.description = Zničí jakoukoliv energii, kterou bloku pošleš. Jen pro režim Pískoviště.
block.power-source.description = Nekonečný zdroj energie. Jen pro Pískoviště.
block.item-source.description = Nekonečný zdroj předmětů. Jen pro Pískoviště.
block.item-void.description = Zničí jakýkoliv vstupní předmět, který bloku pošleš. Jen pro Pískoviště.
block.liquid-source.description = Nekonečný zdroj kapalin. Jen pro Pískoviště.
block.liquid-void.description = Zničí jakoukoliv kapalinu, kterou bloku pošleš. Jen pro Pískoviště.
block.copper-wall.description = Levný obranný blok.\nUžitečný k obraně Tvého jádra a střílen pro prvních několik vln nepřátel.
block.copper-wall-large.description = Levný obranný blok.\nUžitečný k obraně Tvého jádra a střílen pro prvních několik vln nepřátel.\nZabírá více dlaždic.
block.titanium-wall.description = Středně silný obranný blok.\nPoskytuje středně dobrou obranu proti nepřátelům.
block.titanium-wall-large.description = Středně silný obranný blok.\nPoskytuje středně dobrou obranu proti nepřátelům.\nZabírá více dlaždic.
block.plastanium-wall.description = Speciální typ zdi, která je schopná absorbovat energetické výboje a blokuje automaticky energetické vedení, například mezi uzly.
block.plastanium-wall-large.description = Speciální typ zdi, která je schopná absorbovat energetické výboje a blokuje automaticky energetické vedení, například mezi uzly.\nZabírá více dlaždic.
block.thorium-wall.description = Silný obranný blok.\nSlušná obrana před nepřáteli.
block.thorium-wall-large.description = Silný obranný blok.\nSlušná obrana před nepřáteli.\nZabírá více dlaždic.
block.phase-wall.description = Zeď potažená speciální odrazivou sloučeninou na fázové bázi. Odráží při nárazu většinu střel.
block.phase-wall-large.description = Zeď potažená speciální odrazivou sloučeninou na fázové bázi. Odráží při nárazu většinu střel.\nZabírá více dlaždic.
block.surge-wall.description = Extrémně odolný obranný blok.\nPři zásahu střelou akumuluje energii, kterou pak náhodně uvolňuje ve formě výboje.
block.surge-wall-large.description = Extrémně odolný obranný blok.\nPři zásahu střelou akumuluje energii, kterou pak náhodně uvolňuje ve formě výboje.\nZabírá více dlaždic.
block.door.description = Malé dveře, které se dají otevřít nebo zavřít kliknutím/tupnutím na ně.
block.door-large.description = Velké dveře, které se dají otevřít nebo zavřít kliknutím/ťupnutím na ně.\nZabírají více dlaždic.
block.mender.description = Pravidelně opravuje bloky ve svém poli působnosti. Dobré pro opravu obranného systému mezi vlnami.\nVolitelně lze využít křemíku pro posílení dosahu a efektivity.
block.mend-projector.description = Vylepšená verze Opraváře. Opravuje bloky ve svém poli působnosti.\nVolitelně lze využít fízové tkaniny pro posílení dosahu a efektivity.
block.overdrive-projector.description = Zrychluje funkce budov v okolí.\nVolitelně lze využít křemíku pro posílení dosahu a efektivity.
block.force-projector.description = Vytvoří okolo sebe šestihrané silové pole, které chrání jednotky a budovy uvnitř před poškozením.\nPokud dostane moc poškození, tak se přehřeje. Volitelně lze použít chlazení pro snížení přehřívání a fázové tkaniny pro zvětšené dosahu štítu.
block.shock-mine.description = Působí poškození nepřátelským jednotkám při sešlápnutí. Takřka neviditelné pro nepřátele (a i v nabídce bloků :) ).
block.conveyor.description = Základní blok pro přepravu předmětů. Unáší předměty kupředu a automaticky plní vhodná úložiště (budovy, kontejnery, jádro), které po cestě potká. Lze jej otáčet dle potřeby.
block.titanium-conveyor.description = Pokročilý blok pro přepravu předmětů. Přenáší předměty rychleji, než základní dopravník.
block.plastanium-conveyor.description = Přesouvá položky v dávkích.\nPřijímá položky zezadu, a vykládá je do tří směrů vepředu.\nPro špičkový průchod vyžaduje několik nakládacích a vykládacích míst.
block.junction.description = Chová se jako most pro dva křížící se pásy dopravníků. Užitečný při situaci, kdy dva rozdílné dopravníky dopravují dva rozdílné materiály přes jedno pole.
block.bridge-conveyor.description = Pokročilý blok pro přepravu předmětů. Dovoluje transport předmětů až přes tři pole, a to přes jakýkoliv terén nebo budovu.
block.phase-conveyor.description = Pokročilý blok pro přepravu předmětů. Využívá energii k teleportaci předmětů na vzdálenost několika dlaždic mezi jiným propojeným fázovým dopravníkem.
block.sorter.description = Třídí předměty. Pokud je předmět shodný s výběrem, je poslán rovně dál. Jinak je předmět je odbočen do strany.
block.inverted-sorter.description = Třídí předměty. Pokud je předmět shodný s výběrem, je odbočen do strany. Jinak je předmět je poslán rovně dál.
block.router.description = Přijímá předměty z jednoho směru a posílá je rovnoměrně do zbylých tří směrů. Užitečný pro rozdělení předmětů z jednoho zdroje do různých cílů, jako odbočení z dopravníků a podobně.\n\n[scarlet]Pozor, nepoužívejte pro vstup do produkční budovy, jinak se bude ucpávat výstupními předměty[].
block.distributor.description = Pokročilý směrovač. Rozděluje předměty rovnoměrně až do 7 dalších směrů.
block.overflow-gate.description = Předměty jsou poslány do strany, pokud je směr vpřed zablokován. Užitečné například pro zpracování přebytečného materiálu, pokud je primární příjemce saturován.
block.underflow-gate.description = Předměty jsou poslány vpřed, pokud je směr do strany zablokován. Užitečné například pro zpracování přebytečného materiálu, pokud je primární příjemce saturován.
block.mass-driver.description = Ultimátní blok pro přepravu předmětů. Sebere několik předmětů a vystřelí je k dalšímu hromadnému směřovači přes několik dlaždic. Vyžaduje ke své funkci energii.
block.mechanical-pump.description = Levné čerpadlo s pomalým průtokem, nevyžaduje však energii k provozu.
block.rotary-pump.description = Pokročilé čerpadlo, které za pomoci energie vyčerpá větší množství kapalin, než standardní.
block.thermal-pump.description = Ultimátní čerpadlo. Nejrychlejší čerpání kapalin.
block.conduit.description = Základní blok pro přepravu kapalin. Unáší kapaliny vpřed. Používá se s čerpadly, v některých vrtech a nebo ve spojení s jiným potrubím.
block.pulse-conduit.description = Pokročilý blok přepravy kapalin. Přepravuje kapaliny rychleji a má větší kapacitu, než základní potrubí.
block.plated-conduit.description = Přenáší kapaliny stejně rychle jako pulzní potrubí, ale díky oplátování má větší výdržnost. Ze stran přijímá kapaliny pouze z dalších potrubí.\nNedochází zde k úniku kapalin.
block.liquid-router.description = ijímá kapaliny z jednoho směru a vypouští je rovnoměrně do zbylých tří směrů. Dokáže pojmout i určitý objem kapalin do vnitřího úložiště. Používá se při rozdělení kapaliny z jednoho zdroje směřující do různých cílů.
block.liquid-tank.description = Ukládá velké množství kapalin. Používá se pro vyrovnávání zásob vody, když je přítok nestabilní nebo jako záložní chlazení pro životně důležité stavby.
block.liquid-junction.description = Chová se jako most pro dvě křížící se potrubí. Používá se v situacích, kdy dvě rozdílná potrubí vedou rozdílný obsah přes jedno místo.
block.bridge-conduit.description = Pokročilý blok přepravy kapalin. Dovoluje přenášet kapaliny přes tři dlaždice napříč jakýmkoliv terénem nebo přes budovy.
block.phase-conduit.description = Pokročilý blok pro přepravu kapalib. Využívá energii k teleportaci kapalin na vzdálenost několika dlaždic mezi jiným propojeným fázovým potrubím.
block.coal-centrifuge.description = Přetváří naftu na uhlí.
block.incinerator.description = Vypařuje jakékoliv předměty nebo kapaliny, které obdrží.
block.power-void.description = Zničí jakoukoliv energii na vstupu. Jen v režimu Pískoviště.
block.power-source.description = Nekonečný zdroj energie. Jen v režimu Pískoviště.
block.item-source.description = Nekonečný zdroj předmětů. Jen v režimu Pískoviště.
block.item-void.description = Zničí jakýkoliv vstupní předmět, který bloku pošleš. Jen v režimu Pískoviště.
block.liquid-source.description = Nekonečný zdroj kapalin. Jen v režimu Pískoviště.
block.liquid-void.description = Zničí jakoukoliv kapalinu, kterou bloku pošleš. Jen v režimu Pískoviště.
block.copper-wall.description = Chrání konstrukce před nepřátelskými střelami.
block.copper-wall-large.description = Chrání konstrukce před nepřátelskými střelami.
block.titanium-wall.description = Chrání konstrukce před nepřátelskými střelami.
block.titanium-wall-large.description = Chrání konstrukce před nepřátelskými střelami.
block.plastanium-wall.description = Chrání konstrukce před nepřátelskými střelami. Pohlcuje laserové a elektrické výboje. Automaticky blokuje energetické spoje.
block.plastanium-wall-large.description = Chrání konstrukce před nepřátelskými střelami. Absorbs lasers and electric arcs. Automaticky blokuje energetické spoje.
block.thorium-wall.description = Chrání konstrukce před nepřátelskými střelami.
block.thorium-wall-large.description = Chrání konstrukce před nepřátelskými střelami.
block.phase-wall.description = Chrání konstrukce před nepřátelskými střelami, reflecting most bullets upon impact.
block.phase-wall-large.description = Chrání konstrukce před nepřátelskými střelami, reflecting most bullets upon impact.
block.surge-wall.description = Chrání konstrukce před nepřátelskými střelami. Při doteku opakovaně vydává elektrické výboje.
block.surge-wall-large.description = Chrání konstrukce před nepřátelskými střelami. Při doteku opakovaně vydává elektrické výboje.
block.door.description = Zeď, která může být otevřena a zavřena.
block.door-large.description = Zeď, která může být otevřena a zavřena.
block.mender.description = Opakovaně opravuje bloky ve svém dosahu.\nVolitelně umí použít křemík pro posílení dosahu a efektivity.
block.mend-projector.description = Opakovaně opravuje bloky ve svém dosahu.\nVolitelně umí použít fázovou tkaninu pro posílení dosahu a efektivity.
block.overdrive-projector.description = Zrychluje funkce budov v okolí.\nVolitelně umí využít fázovou tkaninu pro posílení dosahu a efektivity.
block.force-projector.description = Vytváří okolo sebe šestiúhelníkové silové pole. Chrání konstrukce a jednotky uvnitř pole před poškozením.\nPřehřívá se, pokud obdrží moc poškození. Přehřátí lze eliminovat použitím chlazení. Fázová tkanina zvyšje velikost pole.
block.shock-mine.description = Vydává elektrické výboje při dotyku nepřátelskou jednotkou.
block.conveyor.description = Přepravuje předměty vpřed.
block.titanium-conveyor.description = Přepravuje předměty vpřed. Rychlejší, než standardní dopravník.
block.plastanium-conveyor.description = Přepravuje předměty vpřed in batches. Přijímá předměty zezadu, a vykládá je do tří směrů vpředu. Vyžaduje více nakládacích a vykládacích bodů pro špičkový průtok.
block.junction.description = Funguje jako most pro dva křížící se dopravníky.
block.bridge-conveyor.description = Přepravuje předměty přes terén nebo budovy.
block.phase-conveyor.description = Okamžitě přepravuje předměty přes terén nebo budovy. Má delší dosah než standardní přemostění přepravníku, ale vyžaduje energii.
block.sorter.description = Pokud vstupní položka odpovídá výběru, je předána vpřed. Jinak je vyložena napravo a nalevo.
block.inverted-sorter.description = Podobné stanrdardní třídičce, ale vykládá vybrané položky do stran.
block.router.description = Rozděluje vstupní položky rovnoměrně do tří výstupů.
block.router.details = Nezbytné zlo. Použití hned u produkčních vstupů se nedoporučuje, protože budou ucpány výstupnímk položkami.
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í 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.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.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.thermal-pump.description = Pumpuje kapalinu a předává ji dál.
block.conduit.description = Přepravuje kapaliny vpřed. Používá se spolu s pumpami a dalším potrubím.
block.pulse-conduit.description = Přepravuje kapaliny vpřed. Přepravuje kapaliny rychleji a ukládá jich více, než standadní potrubí.
block.plated-conduit.description = epravuje kapaliny vpřed. Nepřijímá kapaliny ze stran. Nemá úniky.
block.liquid-router.description = Přijímá kapalinu z jednoho směru a vydává ji rovnomerně do tří ostatních stran. Umí též uchovat malé množství kapaliny.
block.liquid-tank.description = Ukládá velké množství kapaliny. Předává ji do stran, podobně jako směřovač kapalin.
block.liquid-junction.description = Funguje jako most pro dvě křížící se potrubí.
block.bridge-conduit.description = Přepravuje kapalinu přes terén a budovy.
block.phase-conduit.description = Přepravuje kapalinu přes terén a budovy. Má delší dosah než standardní přemostění potrubí, ale vyžaduje energii.
block.power-node.description = Přenáší energii mezi propojenými uzly. Uzel získává energii z nebo dodává energii do bloků ve svém poli působnosti.
block.power-node-large.description = Pokročilý energerický uzel. Má větší dosah než základní uzel.
block.surge-tower.description = Energetický uzel s extrémním dosahem, ale méně dostupnými přípojkami pro ostatní bloky, než ostatní uzly.
block.diode.description = Energie z baterie přes tento blok protéká jen jedním směrem, a to jen za podmínky, že a druhé straně je méně energie (například vybitá baterie).
block.battery.description = Ukládá energii v případě nadbytku v síti a poskytuje energii kdykolik, když se energetické síti nedostává (záporný rozdíl).
block.battery-large.description = Ukládá více energie, než základní baterie.
block.surge-tower.description = Energetický uzel s dlouhým dosahem, ale méně dostupnými přípojkami pro ostatní bloky, než ostatní uzly.
block.diode.description = Energie z baterie přes tento blok protéká jen jedním směrem, a to jen za podmínky, že na druhé straně je méně energie (například vybitá baterie).
block.battery.description = Ukládá energii v případě nadbytku v síti a poskytuje energii kdykolik, když se energetické síti nedostává.
block.battery-large.description = Ukládá energii v případě nadbytku v síti a poskytuje energii kdykolik, když se energetické síti nedostává. Ukládá více energie než základní baterie.
block.combustion-generator.description = Generuje energii spalováním hořlaných materiálů, jako je například uhlí.
block.thermal-generator.description = Pokud je umístěn na teplotně aktivní místo (jako je magmatický kámen), dokáže z tepla generovat energii.
block.steam-generator.description = Pokročilý spalovací generátor. Efektivnější, ale vyžaduje dodatečný přísun vody pro produkci páry.
block.steam-generator.description = Vytváří energii spalováním hořlavých materiálů a měněním vody na páru.
block.differential-generator.description = Generuje velké množství energie. Využívá teplotního rozdílu mezi chladící kapalinou a hořícím pyratitem.
block.rtg-generator.description = Radioizotopní termoenergetický generátor (RTG) je jednoduchý, spolehlivý generátor. Využívá tepla z rozpadu radioaktivních složek ke generování menších dávek energie.
block.solar-panel.description = Základní solární panel pro generoní malého množství energie ze Slunce.
block.solar-panel-large.description = Výrazně efektivnější verze solárního panelu pro generování energie ze Slunce.
block.thorium-reactor.description = Generuje významné množství energie z thoria. Vyžaduje nepřetržité chlazení. Je-li chlazen nedostatečně, způsobí značnou explozi. Výstup energie závisí na míře naplnění generátoru, základní generování energie se aktivuje při plné kapacitě.
block.impact-reactor.description = Vyspělý generátor, schopný vytvářet při maximálním výkonu obrovská množství energie. Vyžaduje však značné množství energie pro nastartování celého procesu.
block.mechanical-drill.description = Levný vrt. Při položení na vhodné pole (ruda, písek) natrvalo a pomalu produkuje odpovídající materiál. Umí těžit jen základní rudy.
block.rtg-generator.description = Používá teplo z rozpadajících se radioaktivních materiálů k výrobě energie v malých dávkách.
block.solar-panel.description = Vytří malého množství energie ze Slunce.
block.solar-panel-large.description = Vytváří malého množství energie ze Slunce. Efektivnější, než základní solárí panel.
block.thorium-reactor.description = Generuje významné množství energie z thoria. Vyžaduje nepřetržité chlazení. Je-li chlazen nedostatečně, způsobí značnou explozi.
block.impact-reactor.description = Vytváří při špičkové účinnosti velké množství energi. Vyspělý generátor, schopný vytvářet při maximálním výkonu obrovská množství energie. Vyžaduje však značné množství energie pro nastartování celého procesu.
block.mechanical-drill.description = Když je umístěn na rudu, generuje donekonečna odpovídající položky, pomalou rychlostí. Použitelný jen pro těžení základních surovin.
block.pneumatic-drill.description = Vylepšený vrt, který je schopen těžit i titan. Těží vyšší rychlostí než mechanický vrt.
block.laser-drill.description = Vrtá rychleji než penumatický vrt díky laserové technologii, ale vyžaduje ke svému fungování energii. Dokáže navrtat i rudné žíly thoria.
block.blast-drill.description = Ultimátní vrt, vyžadující k provozu značné množství energie.
block.water-extractor.description = Extrahuje podzemní vodu. Vhodný pro místa, kde se nevyskytuje povrchová voda.
block.cultivator.description = Kultivuje drobounké koncentrace spór v atmosféře do formy vhodné pro průmyslové využití spór.
block.cultivator.description = Kultivuje drobounké koncentrace atmosférických spór do spórových polštářků.
block.cultivator.details = Zachráněná technologie. Používá se k výrobě obrovského množství biomasy tak efektivně, jak jen to jde. Pravděpodobně se původně jednalo o inkubátor spó, které nyní pokrývají Serpulo.
block.oil-extractor.description = Vyžaduje značné množství energie, písku a vody na těžení nafty.
block.core-shard.description = První verze jádra. Pokud je zničeno, veškerý kontakt s mapou je ztracen. Nedopusť, aby se to stalo.
block.core-foundation.description = Druhá cerze jádra. Je lépe obrněná a pojme více surovin.
block.core-nucleus.description = Třetí a konečná iterace vývoje jádra. Velmi dobře obrněná. Dokáže skladovat významné množství zdrojů.
block.core-shard.description = Jádro základny. Pokud je zničena, sektor je ztracen.
block.core-shard.details = První iterace. Kompaktní. Sebereplikující. Vybavená vysílacím pohonem na jedno použití. Není navržena pro meziplanetární cestování.
block.core-foundation.description = Jádro základny. Dobře opevněná. Pojme více surovin, než základna Odstěpek.
block.core-foundation.details = Druhá iterace.
block.core-nucleus.description = Jádro základny. Velmi dobře opevněná. Dokáže skladovat enormní množství zdrojů.
block.core-nucleus.details = Třetí a konečná iterace vývoje jádra.
block.vault.description = Ukládá velké množství předmětů od každého typu. K vyskladnění věcí z trezoru je možné použít odbavovač.
block.container.description = Ukládá menší množství předmětů od každého typu. K vyskladnění věcí z kontejneru je možné použít odbavovač.
block.unloader.description = Vyskladňuje předměty z kontejneru, trezoru nebo jádra na dopravník nebo přímo do produktivních bloků. Druh předmětu pro vyskladnění lze nastavit kliknutím nebo ťupnutím na odbavovač.
block.launch-pad.description = Vysílá dávky předmětů z mapy bez nutnosti vyslat zpět jádro.
block.launch-pad-large.description = Vylepšená verze vysílací plošiny. Má větší úložný prostor a vysílá předměty z mapy častěji.
block.duo.description = Malá, levná střílna. Užitečná proti pozemním jednotkám.
block.scatter.description = Základní protivzdušná střílna. Střílí kusy olova, pláty šrotu nebo střepy metaskla na nepřátelské jednotky.
block.unloader.description = Vyskladňuje vybrané položky z okolních bloků.
block.launch-pad.description = Vysílá dávky předmětů do přilehlých sektorů.
block.duo.description = Střílí střídavé dávky kulek na nepřátele.
block.scatter.description = Střílí kusy olova, pláty šrotu nebo střepy metaskla na nepřátelské letectvo.
block.scorch.description = Sežehne pozemní jednotky blízkosti. Velmi efektivní na malé vzdálenosti.
block.hail.description = Malá dělostřelecká střílna na delší vzdálenosti.
block.wave.description = Středně velká střílna. Pálí po nepřítelích proudy kapaliny (například roztaveného kovu). Umí automaticky uhasit oheň, pokud je zásobena vodou.
block.lancer.description = Středně velká střílna proti pozemním jednotkám. Po nabití se střílí mocné energetické paprsky.
block.arc.description = Malá energetická střílna. Pálí výboje po nepřátelských jednotkách.
block.swarmer.description = Středně velká střílna s raketami. Útočí na pozemní i vzdušné cíle. Pálí samonaváděcí střely.
block.salvo.description = Větší, pokročilejší verze střílny Duo. Pálí na nepřátele rychlé dávky střel.
block.fuse.description = Velká střílna s krátkým dosahem. Pálí trojici pronikavých výbuchů na blízké nepřátele.
block.ripple.description = Extrémně silná dělostřelecká střílna. Pálí na dálku shluky střel na nepřátelské jednotky.
block.cyclone.description = Velká protiletecká a protipozemní střílna. Pálí explodující dávky na nepřítele v okolí.
block.spectre.description = Velká střílna s kanónem s dvěma hlavněmi. Střílí velké náboje, které pronikají brněním jak pozemních, tak vzdušných nepřátelských cílů.
block.meltdown.description = Masivní laserový kanón. Nabije se a pak pálí nepřetržitý laserový paprsek na nepřátele v okolí. Vyžaduje ke své funkci chlazení.
block.repair-point.description = Nepřetržitě léčí nejbližší poškozenou jednotku v poli své působnosti.
block.segment.description = Poškozuje a ničí příchozí střely. Laserové střely ale zacílit neumí.
block.hail.description = Střílí na dálku malé patrony na pozemní nepřátele.
block.wave.description = Střílí po nepřátelích proudy kapaliny (například strusky). Umí automaticky uhasit oheň, pokud je zásobena vodou.
block.lancer.description = Po nabití střílí mocné energetické paprsky na pozemní cíle.
block.arc.description = Střílí výboje po pozemních jednotkách.
block.swarmer.description = Střílí po nepřátelích samonaváděcí střely.
block.salvo.description = Střílí na nepřátele rychlé dávky střel.
block.fuse.description = Střílí trojici pronikavých výbuchů na blízké nepřátele.
block.ripple.description = Střílí na dálku shluky střel na pozemní jednotky.
block.cyclone.description = Střílí vybuchující dávky na blízké nepřátele.
block.spectre.description = Střílí velké náboje, které pronikají brněním jak pozemních, tak vzdušných cílů.
block.meltdown.description = Po nabití střílí nepřetržitý laserový paprsek na nepřátele v okolí. Vyžaduje ke své funkci chlazení.
block.repair-point.description = Nepřetržitě opravuje nejbližší poškozenou jednotku v poli své působnosti.
block.segment.description = Poškozuje a ničí příchozí střely. Laserové střely ale zacílit neumí.
block.parallax.description = Střílí tažný paprsek, který přitahuje vzdušné cíle, a poškozuje je.
block.tsunami.description = Střílí mocné proudy kapalin na nepřátele. Samočinně hasí oheň, pokud je zásobován vodou.
block.silicon-crucible.description = Rafinuje křemík z písku a uhlí za použití pyratitu jako přídavného zdroje tepla. Účinnější na horkých místech.
block.disassembler.description = Odděluje ze strusky stopové množství exotických minerálových součástí při malé účinnosti. Umí vyrobit thorium.
block.overdrive-dome.description = Zvyšuje rychlost okolních konstrukcí. Vyžaduje ke svému fungování fázovou tkaninu a křemík.
block.payload-conveyor.description = Přesouvá velké náklady, jako jednotky z továren.
block.payload-router.description = Rozděluje vstuní náklad na 3 výstupní směry.
block.command-center.description = Ovládá chování jednotky několika příkazy.
block.ground-factory.description = Vyrábí pozemní jednotky. Výstupní jednotky mohou být použity přímo, nebo přesunuty do přestavovačů na vylepšení.
block.air-factory.description = Vyrábí letecké jednotky. Výstupní jednotky mohou být použity přímo, nebo přesunuty do přestavovačů na vylepšení.
block.naval-factory.description = Vyrání námořní jednotky. Výstupní jednotky mohou být použity přímo, nebo přesunuty do přestavovačů na vylepšení.
block.additive-reconstructor.description = Vylepšuje vstupní jednotky na druhou úroveň.
block.multiplicative-reconstructor.description = Vylepšuje vstupní jednotky na třetí úroveň.
block.exponential-reconstructor.description = Vylepšuje vstupní jednotky na čtvrtou úroveň.
block.tetrative-reconstructor.description =Vylepšuje vstupní jednotky na pátou, konečnou úroveň.
block.switch.description = Přepínač. Jeho stav je možné číst a ovládat logickými procesory.
block.micro-processor.description = Spouští posloupnost logických instrukcí ve smyčce. Dá se použít k ovládání jednotek a konstrukcí.
block.logic-processor.description = Spouští posloupnost logických instrukcí ve smyčce. Dá se použít k ovládání jednotek a konstrukcí. Rychlejší než mikroprocesor.
block.hyper-processor.description = Spouští posloupnost logických instrukcí ve smyčce. Dá se použít k ovládání jednotek a konstrukcí. Rychlejší než logický procesor.
block.memory-cell.description = Ukládá informace z logického procesoru.
block.memory-bank.description = Ukládá informace z logického procesoru. Větší kapacita.
block.logic-display.description = Zobrazuje libovolnou grafiku z logického procesoru.
block.large-logic-display.description = Zobrazuje libovolnou grafiku z logického procesoru.
block.interplanetary-accelerator.description = Masivní elektromagnetická věž. Urychlí jádro na únikovou rychlost pro meziplanetární vyslání.
unit.dagger.description = Střílí základní střely na všechny okolní nepřátele.
unit.mace.description = Střílí proudy ohně na všechny okolní nepřátele.
unit.fortress.description = Střílí dělostřelecké salvy na pozemní cíle.
unit.scepter.description = Střílí palbu nabitých střel na všechny okolní nepřátele.
unit.reign.description = Střílí palbu masivních střel pronikajících brněním na všechny okolní nepřátele.
unit.nova.description = Střílí laserové výboje, které poškozují nepřátele a opravují spojenecké konstrukce. Je schopný letu.
unit.pulsar.description = Střílí oblouky elektřiny, které poškozují nepřátele a opravují spojenecké struktury. Schopný letu.
unit.quasar.description = Střílí pronikavé laserové paprsky, které poškozují nepřátele a opravují spojenecké struktury. Schopný letu. Oštítovaný.
unit.vela.description = Střílí masivní nepřetržitý laserový paprsek, který poškozuje nepřátele, způsobuje požáry a opravuje spojenecké struktury. Schopný letu.
unit.corvus.description = Střílí masivní laserový paprsek, který poškozuje nepřátele a opravuje spojenecké struktury. Může překonat většinu z terénů.
unit.crawler.description = Běží směrem k nepřátelům, vybuchne a způsobí velkou explozi.
unit.atrax.description = Střílí oslabující koule strusky na pozemní cíle. Může překonat většinu z terénů.
unit.spiroct.description = Střílí mířené laserové paprsky na nepřátele, a zároveň se tím opravuje. Může překročit většinu terénu.
unit.arkyid.description = Střílí velké mířené laserové paprsky na nepřátele, a zároveň se tím opravuje. Může překročit většinu terénu.
unit.toxopid.description = Střílí na nepřátele velké elektrické kazetové střely a lasery pronikající brněním. Může překročit většinu z terénů.
unit.flare.description = Střílí základní střely na okolní nepřátele.
unit.horizon.description = Pouští shluky bomb na pozemní cíle.
unit.zenith.description = Střílí salvy raket na všechny blízké nepřátele.
unit.antumbra.description = Střílí palbu střel na všechny blízké nepřátele.
unit.eclipse.description = Vystřelí dva pronikavé lasery a záplavu protivzdušných střel na všechny blízké nepřátele.
unit.mono.description = Samočinně těží měď a olovo a ukládá je do jádra.
unit.poly.description = Samočinně obnovuje poškozené konstrukce a pomáhá ostatním jednotkám při stavbě.
unit.mega.description = Samočinně opravuje poškozené konstrukce. Je schopný přenést bloky a malé pozemní jednotky.
unit.quad.description = Pouští velké bomby na pozemní cíle, opravuje spojenecké konstrukce a poškozuje nepřátele. Je schopen přenést středně velké pozemní jednotky.
unit.oct.description = Chrání blízké spojence pomocí regeneračního štítu. Je schopen přenést většinu pozemních jednotek.
unit.risso.description = Střílí palbu raket a střel na všechny blízké nepřátele.
unit.minke.description = Střílí patrony a základní střely na blízké pozemní cíle.
unit.bryde.description = Střílí na nepřátele dělostřelecké granáty a rakety dlouhého doletu.
unit.sei.description = Střílí na nepřátele palbu raket a průbojných střel.
unit.omura.description = Střílí na nepřátele průrazné šrouby s dlouhým doletem. Vytváří jednotky Záře.
unit.alpha.description = Brání jádro Odštěpek před nepřáteli. Staví konstrukce.
unit.beta.description = Brání jádro Základ před nepřáteli. Staví konstrukce.
unit.gamma.description = Brání jádro Atom před nepřáteli. Staví konstrukce.

View File

@@ -20,8 +20,8 @@ gameover = Le base a été détruite.
gameover.pvp = L'équipe[accent] {0}[] a gagnée !
highscore = [accent]Nouveau meilleur score !
copied = Copié.
indev.popup = [accent]v6[] is currently in [accent]alpha[].\n[lightgray]This means:[]\n[scarlet]- The campaign is completely unfinished[]\n- Content is missing\n - Most [scarlet]Unit AI[] does not work properly\n- Many units are unfinished\n- Everything you see is subject to change or removal.\n\nReport bugs or crashes on [accent]Github[].
indev.notready = This part of the game isn't ready yet
indev.popup = [accent]La v6[] est actuellement en [accent]alpha[].\n[lightgray]Cela signifie :[]\n[scarlet]- La campagne est totalement incomplète[]\n- Il manque du contenu\n - La plupart des [scarlet]IA d'unités[] ne fonctionne pas correctement\n- De nombreuses unités ne sont pas terminées\n- Tout ce que vous voyez est susceptible d'être modifié ou supprimé.\n\nMerci de rapporter les bugs/crash sur [accent]Github[].
indev.notready = Cette partie du jeu n'est pas encore prête
load.sound = Son
load.map = Maps
@@ -33,7 +33,7 @@ load.scripts = Scripts
be.update = Une nouvelle version est disponible:
be.update.confirm = Voulez vous la télécharger et recommencer maintenant ?
be.updating = Entrain de mettre à jour...
be.updating = En train de mettre à jour...
be.ignore = Ignorer
be.noupdates = Aucune mise à jour n'as été trouvée.
be.check = Chercher des mises à jour
@@ -52,10 +52,10 @@ schematic.copy.import = Importer du presse-papier
schematic.shareworkshop = Partager sur l'Atelier
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Retourner Schéma
schematic.saved = Schéma enregistré.
schematic.delete.confirm = Ce Schéma sera totalement éradiqué.
schematic.delete.confirm = Ce Schéma sera définitivement supprimé.
schematic.rename = Renommer Schéma
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] Schémas désactivés ![]\nVous n'êtes pas autorisés à utiliser des schémas sur cette [accent]map[] ou ce [accent]serveur.
stat.wave = Vagues vaincues:[accent] {0}
stat.enemiesDestroyed = Ennemies détruits:[accent] {0}
@@ -508,13 +508,13 @@ error.io = Network I/O error.
error.any = Erreur réseau inconnue.
error.bloom = Échec d'initialisation du flou lumineux.\nVotre appareil peut ne pas le supporter.
weather.rain.name = Rain
weather.snow.name = Snow
weather.sandstorm.name = Sandstorm
weather.sporestorm.name = Sporestorm
weather.fog.name = Fog
weather.rain.name = Pluie
weather.snow.name = Neige
weather.sandstorm.name = Tempête de sable
weather.sporestorm.name = Tempête de spores
weather.fog.name = Brouillard
sectors.unexplored = [lightgray]Unexplored
sectors.unexplored = [lightgray] Inexploré
sectors.resources = Resources:
sectors.production = Production:
sectors.stored = Stored:
@@ -523,10 +523,10 @@ sectors.launch = Launch
sectors.select = Select
sectors.nonelaunch = [lightgray]none (sun)
sectors.rename = Rename Sector
sector.missingresources = [scarlet]Insufficient Core Resources
sector.missingresources = [scarlet]Ressources du noyau insuffisantes
planet.serpulo.name = Serpulo
planet.sun.name = Sun
planet.sun.name = Soleil
sector.groundZero.name = Ground Zero
sector.craters.name = The Craters
@@ -552,8 +552,8 @@ sector.desolateRift.description = An extremely dangerous zone. Plentiful resourc
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.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.
settings.language = Langage
settings.data = Game Data
settings.language = Langue
settings.data = Données du jeu
settings.reset = Valeur par défaut.
settings.rebind = Réatttribuer
settings.resetKey = Reset
@@ -927,7 +927,7 @@ unit.fortress.name = Forteresse
unit.nova.name = Nova
unit.pulsar.name = Pulsar
unit.quasar.name = Quasar
unit.crawler.name = Chenille
unit.crawler.name = Rampeur
unit.atrax.name = Atrax
unit.spiroct.name = Spiroct
unit.arkyid.name = Arkyid
@@ -955,18 +955,18 @@ unit.reign.name = Reign
unit.vela.name = Vela
unit.corvus.name = Corvus
block.resupply-point.name = Resupply Point
block.resupply-point.name = Point de rechargement
block.parallax.name = Parallax
block.cliff.name = Cliff
block.cliff.name = Falaise
block.sand-boulder.name = Sable rocheux
block.grass.name = Herbe
block.slag.name = Slag
block.slag.name = Scories
block.space.name = Space
block.salt.name = Sel
block.salt-wall.name = Salt Wall
block.salt-wall.name = Mur de sel
block.pebbles.name = Cailloux
block.tendrils.name = Vrilles
block.sand-wall.name = Sand Wall
block.sand-wall.name = Mur de sable
block.spore-pine.name = Pin sporifère
block.spore-wall.name = Spore Wall
block.boulder.name = Boulder
@@ -983,11 +983,11 @@ block.scrap-wall-large.name = Grand mur de ferraille
block.scrap-wall-huge.name = Enorme mur de ferraille
block.scrap-wall-gigantic.name = Gigantesque mur de ferraille
block.thruster.name = Propulseur
block.kiln.name = Four a métaverre
block.kiln.name = Four
block.graphite-press.name = Presse à graphite
block.multi-press.name = Multi-Presse
block.constructing = {0}\n[lightgray](En construction)
block.spawn.name = Générateur d'ennemi
block.spawn.name = Générateur d'ennemis
block.core-shard.name = Core: Shard
block.core-foundation.name = Core: Fondation
block.core-nucleus.name = Core: Nucleus
@@ -1048,20 +1048,20 @@ block.thorium-wall-large.name = Grand mur en thorium
block.door.name = Porte
block.door-large.name = Grande porte
block.duo.name = Duo
block.scorch.name = Scorch
block.scatter.name = Scatter
block.hail.name = Hail
block.lancer.name = Lancer
block.conveyor.name = Transporteur
block.titanium-conveyor.name = Transporteur en titane
block.plastanium-conveyor.name = Plastanium Conveyor
block.armored-conveyor.name = Armored Conveyor
block.scorch.name = Brûleur
block.scatter.name = Disperseur
block.hail.name = Grêle
block.lancer.name = Lancier
block.conveyor.name = Convoyeur
block.titanium-conveyor.name = Convoyeur en titane
block.plastanium-conveyor.name = Convoyeur en plastanium
block.armored-conveyor.name = Convoyeur cuirassé
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 conveyors.
block.junction.name = Junction
block.junction.name = Jonction
block.router.name = Routeur
block.distributor.name = [accent]Distributeur[]
block.sorter.name = Trieur
block.inverted-sorter.name = Inverted Sorter
block.inverted-sorter.name = Trieur inversé
block.message.name = Message
block.illuminator.name = Illuminator
block.illuminator.description = A small, compact, configurable light source. Requires power to function.
@@ -1073,30 +1073,30 @@ block.pulverizer.name = Pulvérisateur
block.cryofluid-mixer.name = Refroidisseur
block.melter.name = Four à Fusion
block.incinerator.name = Incinérateur
block.spore-press.name = Spore presse
block.spore-press.name = Presse à spores
block.separator.name = Séparateur
block.coal-centrifuge.name = Centrifugeuse à charbon
block.power-node.name = Transmetteur énergétique
block.power-node-large.name = Grand transmetteur énergétique
block.surge-tower.name = Tour de surtension
block.diode.name = Battery Diode
block.diode.name = Diode de batterie
block.battery.name = Batterie
block.battery-large.name = Batterie large
block.battery-large.name = Grande batterie
block.combustion-generator.name = Générateur à combustion
block.steam-generator.name = Générateur à turbine
block.differential-generator.name = Générateur différentiel
block.impact-reactor.name = Réacteur à impact
block.mechanical-drill.name = Foreuse mécanique
block.pneumatic-drill.name = Foreuse à vérin
block.pneumatic-drill.name = Foreuse à vérins
block.laser-drill.name = Foreuse Laser
block.water-extractor.name = Extracteur d'eau
block.cultivator.name = Cultivateur
block.conduit.name = Conduit
block.mechanical-pump.name = Pompe Méchanique
block.mechanical-pump.name = Pompe Mécanique
block.item-source.name = Source d'objets
block.item-void.name = Destructeur d'objets
block.liquid-source.name = Source de liquide
block.liquid-void.name = Liquid Void
block.liquid-void.name = Vaporisateur
block.power-void.name = Absorbeur énergétique
block.power-source.name = Puissance infinie
block.unloader.name = Déchargeur
@@ -1105,15 +1105,15 @@ block.wave.name = Vague
block.tsunami.name = Tsunami
block.swarmer.name = Essaim
block.salvo.name = Salve
block.ripple.name = Ripple
block.phase-conveyor.name = Transporteur phasé
block.bridge-conveyor.name = Pont transporteur
block.ripple.name = Percussion
block.phase-conveyor.name = Convoyeur phasé
block.bridge-conveyor.name = Pont
block.plastanium-compressor.name = Compresseur de plastanium
block.pyratite-mixer.name = Mixeur à pyratite
block.blast-mixer.name = Mixeur à explosion
block.solar-panel.name = Panneau solaire
block.solar-panel-large.name = Grand panneau solaire
block.oil-extractor.name = Extracteur de pétrol
block.oil-extractor.name = Extracteur de pétrole
block.repair-point.name = Point de Réparation
block.pulse-conduit.name = Conduit à Impulsion
block.plated-conduit.name = Plated Conduit

View File

@@ -10,7 +10,7 @@ link.dev-builds.description = Niestabilne wersje gry
link.trello.description = Oficjalna tablica Trello z planowanym funkcjami
link.itch.io.description = Strona itch.io z oficjanymi wersjami do pobrania
link.google-play.description = Strona w sklepie Google Play
link.f-droid.description = F-Droid catalogue listing
link.f-droid.description = Wykaz Katalogu F-Droid
link.wiki.description = Oficjana Wiki Mindustry
link.suggestions.description = Zaproponuj nowe funkcje
linkfail = Nie udało się otworzyć linku!\nURL został skopiowany.
@@ -112,12 +112,12 @@ mod.display = [gray]Mod:[orange] {0}
mod.enabled = [lightgray]Włączony
mod.disabled = [scarlet]Wyłączony
mod.disable = Wyłącz
mod.content = Content:
mod.content = Zawartość:
mod.delete.error = Nie udało się usunąć moda. Plik może być w użyciu.
mod.requiresversion = [scarlet]Wymaga gry w wersji co najmniej: [accent]{0}
mod.outdated = [scarlet]Niekompatybilne z wersją v6 (no minGameVersion: 105)
mod.missingdependencies = [scarlet]Brakujące zależności: {0}
mod.erroredcontent = [scarlet]Content Errors
mod.erroredcontent = [scarlet]Błędy Zawartości
mod.errors = Wystąpił błąd podczas ładowania treści.
mod.noerrorplay = [scarlet]Twoje mody zawierają błędy.[] Wyłącz je lub napraw błędy przed rozpoczęciem gry.
mod.nowdisabled = [scarlet]Brakuje zależności dla moda '{0}':[accent] {1}\n[lightgray]Najpierw trzeba ściągnąć te mody.\nMod zostanie automatycznie wyłączony.
@@ -139,8 +139,8 @@ mod.scripts.disable = Twoje urządzenie nie wspiera modów ze skryptami. Musisz
about.button = O Grze
name = Nazwa:
noname = Najpierw wybierz[accent] nazwę gracza[].
planetmap = Planet Map
launchcore = Launch Core
planetmap = Mapa Planety
launchcore = Wystrzel Rdzeń
filename = Nazwa Pliku:
unlocked = Odblokowano nową zawartość!
completed = [accent]Ukończony
@@ -284,15 +284,15 @@ selectschematic = [accent][[{0}][] by wybrać+skopiować
pausebuilding = [accent][[{0}][] by wstrzymać budowę
resumebuilding = [scarlet][[{0}][] by kontynuować budowę
wave = [accent]Fala {0}
wave.cap = [accent]Wave {0}/{1}
wave.cap = [accent]Fala {0}/{1}
wave.waiting = [lightgray]Fala za {0}
wave.waveInProgress = [lightgray]Fala w trakcie
waiting = [lightgray]Oczekiwanie...
waiting.players = Oczekiwanie na graczy...
wave.enemies = Pozostało [lightgray]{0} wrogów
wave.enemy = Pozostał [lightgray]{0} wróg
wave.guardianwarn = Guardian approaching in [accent]{0}[] waves.
wave.guardianwarn.one = Guardian approaching in [accent]{0}[] wave.
wave.guardianwarn = Strażnik nadejdzie za [accent]{0}[] fale.
wave.guardianwarn.one = Strażnik nadejdzie za [accent]{0}[] fale.
loadimage = Załaduj Obraz
saveimage = Zapisz Obraz
unknown = Nieznane
@@ -339,9 +339,9 @@ waves.never = <nigdy>
waves.every = co
waves.waves = fal(e)
waves.perspawn = co pojawienie
waves.shields = shields/wave
waves.shields = tarcze/fala
waves.to = do
waves.guardian = Guardian
waves.guardian = Strażnik
waves.preview = Podgląd
waves.edit = Edytuj...
waves.copy = Kopiuj Do Schowka
@@ -350,9 +350,9 @@ waves.invalid = Nieprawidłowe fale w schowku.
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.
wavemode.counts = counts
wavemode.totals = totals
wavemode.health = health
wavemode.counts = liczba
wavemode.totals = sumy
wavemode.health = życie
editor.default = [lightgray]<Domyślne>
details = Detale...
@@ -420,7 +420,7 @@ filters.empty = [lightgray]Brak filtrów! Dodaj jeden za pomocą przycisku poni
filter.distort = Zniekształcanie
filter.noise = Szum
filter.enemyspawn = Wybierz spawn przeciwnika
filter.spawnpath = Path To Spawn
filter.spawnpath = Droga Do Spawnu
filter.corespawn = Wybierz rdzeń
filter.median = Mediana
filter.oremedian = Mediana Rud
@@ -479,7 +479,7 @@ requirement.research = Zbadaj {0}
requirement.capture = Zdobądź {0}
bestwave = [lightgray]Najwyższa fala: {0}
launch.text = Wystrzel
research.multiplayer = Only the host can research items.
research.multiplayer = Tylko host może odkrywać przedmoty.
uncover = Odkryj
configure = Skonfiguruj Ładunek
loadout = Loadout
@@ -512,17 +512,17 @@ weather.rain.name = Deszcz
weather.snow.name = Śnieg
weather.sandstorm.name = Burza piaskowa
weather.sporestorm.name = Burza zarodników
weather.fog.name = Fog
weather.fog.name = Mgła
sectors.unexplored = [lightgray]Niezbadane
sectors.resources = Resources:
sectors.production = Production:
sectors.stored = Stored:
sectors.resume = Resume
sectors.launch = Launch
sectors.select = Select
sectors.nonelaunch = [lightgray]none (sun)
sectors.rename = Rename Sector
sectors.resources = Zasoby:
sectors.production = Produkcja:
sectors.stored = Zmagazynowane:
sectors.resume = Kontynuuj
sectors.launch = Wystrzel
sectors.select = Wybierz
sectors.nonelaunch = [lightgray]żaden (słońce)
sectors.rename = Zmień Nazwę Sektora
sector.missingresources = [scarlet]Insufficient Core Resources
planet.serpulo.name = Serpulo
@@ -564,12 +564,12 @@ settings.graphics = Grafika
settings.cleardata = Wyczyść Dane Gry...
settings.clear.confirm = Czy jesteś pewien że chcesz usunąć te dane?\nPo tym nie ma powrotu!
settings.clearall.confirm = [scarlet]UWAGA![]\nTo wykasuje wszystkie dane, włącznie z zapisanymi grami i mapami, ustawienami, i znanymi technologiami.\nKiedy naciśniesz 'ok', gra usunie wszystkie swoje dane i automatycznie wyłączy się.
settings.clearsaves.confirm = Are you sure you want to clear all your saves?
settings.clearsaves = Clear Saves
settings.clearresearch = Clear Research
settings.clearresearch.confirm = Are you sure you want to clear all of your campaign research?
settings.clearcampaignsaves = Clear Campaign Saves
settings.clearcampaignsaves.confirm = Are you sure you want to clear all of your campaign saves?
settings.clearsaves.confirm = Jesteś pewny że chcesz usunąć wszystkie zapisy?
settings.clearsaves = Usuń Zapisy
settings.clearresearch = Usuń Postęp Drzewa Tech.
settings.clearresearch.confirm = Jesteś pewny że chcesz usunąć cały postęp drzewa technologicznego?
settings.clearcampaignsaves = Usuń Zapisy Kampanii
settings.clearcampaignsaves.confirm = Jesteś pewny że chcesz usunąć wszystkie zapisy kampanii?
paused = [accent]< Wstrzymano >
clear = Wyczyść
banned = [scarlet]Zbanowano
@@ -597,16 +597,16 @@ stat.itemsmoved = Prędkość poruszania się
stat.launchtime = Czas pomiędzy wystrzeleniami
stat.shootrange = Zasięg
stat.size = Rozmiar
stat.displaysize = Display Size
stat.displaysize = Wielkość Wyświetlania
stat.liquidcapacity = Pojemność cieczy
stat.powerrange = Zakres mocy
stat.linkrange = Link Range
stat.instructions = Instructions
stat.instructions = Instrukcje
stat.powerconnections = Maksymalna ilość połączeń
stat.poweruse = Zużycie prądu
stat.powerdamage = Moc/Zniszczenia
stat.itemcapacity = Pojemność przedmiotów
stat.memorycapacity = Memory Capacity
stat.memorycapacity = Pojemość Pamięci
stat.basepowergeneration = Podstawowa generacja mocy
stat.productiontime = Czas produkcji
stat.repairtime = Czas pełnej naprawy bloku
@@ -618,36 +618,36 @@ stat.boosteffect = Efekt wzmocnienia
stat.maxunits = Maksymalna ilość jednostek
stat.health = Zdrowie
stat.buildtime = Czas budowy
stat.maxconsecutive = Max Consecutive
stat.maxconsecutive = Maksymalnie Kolejny
stat.buildcost = Koszt budowy
stat.inaccuracy = Niecelność
stat.shots = Strzały
stat.reload = Strzałów/sekundę
stat.reload = Strzałów/Sekundę
stat.ammo = Amunicja
stat.shieldhealth = Shield Health
stat.cooldowntime = Cooldown Time
stat.explosiveness = Explosiveness
stat.basedeflectchance = Base Deflect Chance
stat.lightningchance = Lightning Chance
stat.lightningdamage = Lightning Damage
stat.flammability = Flammability
stat.radioactivity = Radioactivity
stat.heatcapacity = HeatCapacity
stat.viscosity = Viscosity
stat.temperature = Temperature
stat.speed = Speed
stat.buildspeed = Build Speed
stat.minespeed = Mine Speed
stat.minetier = Mine Tier
stat.payloadcapacity = Payload Capacity
stat.commandlimit = Command Limit
stat.abilities = Abilities
stat.shieldhealth = Życie Tarczy
stat.cooldowntime = Czas Odnowienia
stat.explosiveness = Wybuchowość
stat.basedeflectchance = Bazowa Szansa Na Odbicie
stat.lightningchance = Szansa Na Błyskawicę
stat.lightningdamage = Obrażenia Błyskawic
stat.flammability = Palność
stat.radioactivity = Radioaktywność
stat.heatcapacity = Pojemność Cieplna
stat.viscosity = Lepkość
stat.temperature = Temperatura
stat.speed = Prędość
stat.buildspeed = Prędkość Budowy
stat.minespeed = Prędkość Wydobycia
stat.minetier = Stopień Wydobycia
stat.payloadcapacity = Ładowność
stat.commandlimit = Limit Jednostek Zarządanych
stat.abilities = Umiejętności
ability.forcefield = Force Field
ability.repairfield = Repair Field
ability.statusfield = Status Field
ability.unitspawn = {0} Factory
ability.shieldregenfield = Shield Regen Field
ability.forcefield = Pole Mocy
ability.repairfield = Pole Naprawy
ability.statusfield = Pole Statusu
ability.unitspawn = {0} Fabryka
ability.shieldregenfield = Strefa Tarczy Regenerującej
bar.drilltierreq = Wymagane Lepsze Wiertło
bar.noresources = Missing Resources
@@ -671,7 +671,7 @@ bar.progress = Postęp Budowy
bar.input = Wejście
bar.output = Wyjście
units.processorcontrol = [lightgray]Processor Controlled
units.processorcontrol = [lightgray]Procesor Kontrolowany
bullet.damage = [stat]{0}[lightgray] Obrażenia
bullet.splashdamage = [stat]{0}[lightgray] Obrażenia obszarowe ~[stat] {1}[lightgray] kratki
@@ -680,15 +680,15 @@ bullet.homing = [stat]naprowadzający
bullet.shock = [stat]piorunowy
bullet.frag = [stat]fragmentacyjny
bullet.knockback = [stat]{0}[lightgray] odrzut
bullet.pierce = [stat]{0}[lightgray]x pierce
bullet.infinitepierce = [stat]pierce
bullet.pierce = [stat]{0}[lightgray]x przebicia
bullet.infinitepierce = [stat]przebijający
bullet.freezing = [stat]zamrażający
bullet.tarred = [stat]smolny
bullet.multiplier = [stat]{0}[lightgray]x mnożnik amunicji
bullet.reload = [stat]{0}[lightgray]x szybkość ataku
unit.blocks = bloki
unit.blockssquared = blocks²
unit.blockssquared = bloki²
unit.powersecond = jednostek prądu na sekundę
unit.liquidsecond = jednostek płynu na sekundę
unit.itemssecond = przedmiotów na sekundę
@@ -701,7 +701,7 @@ unit.persecond = /sekundę
unit.perminute = /min
unit.timesspeed = x prędkość
unit.percent = %
unit.shieldhealth = shield health
unit.shieldhealth = życie tarczy
unit.items = przedmioty
unit.thousands = tys.
unit.millions = mln
@@ -711,7 +711,7 @@ category.power = Prąd
category.liquids = Płyny
category.items = Przedmioty
category.crafting = Przetwórstwo
category.function = Function
category.function = Funkcja
category.optional = Dodatkowe ulepszenia
setting.landscape.name = Zablokuj tryb panoramiczny
setting.shadows.name = Cienie
@@ -747,19 +747,19 @@ setting.conveyorpathfinding.name = Ustalanie ścieżki przenośników
setting.sensitivity.name = Czułość kontrolera
setting.saveinterval.name = Interwał automatycznego zapisywania
setting.seconds = {0} sekund
setting.blockselecttimeout.name = Block Select Timeout
setting.blockselecttimeout.name = Czas Wyboru Klocka
setting.milliseconds = {0} milisekund
setting.fullscreen.name = Pełny ekran
setting.borderlesswindow.name = Bezramkowe okno[lightgray] (może wymagać restartu)
setting.fps.name = Pokazuj FPS oraz ping
setting.smoothcamera.name = Smooth Camera
setting.smoothcamera.name = Gładka Kamera
setting.vsync.name = Synchronizacja pionowa
setting.pixelate.name = Pikselacja [lightgray](wyłącza animacje)
setting.minimap.name = Pokaż Minimapę
setting.coreitems.name = Display Core Items (WIP)
setting.coreitems.name = Poazuj Przedmoty W Rdzeniu (WIP)
setting.position.name = Pokazuj położenie gracza
setting.musicvol.name = Głośność muzyki
setting.atmosphere.name = Show Planet Atmosphere
setting.atmosphere.name = Pokazuj atmosferę planety
setting.ambientvol.name = Głośność otoczenia
setting.mutemusic.name = Wycisz muzykę
setting.sfxvol.name = Głośność dźwięków
@@ -782,11 +782,11 @@ keybinds.mobile = [scarlet]Większość skrótów klawiszowych nie funkcjonuje w
category.general.name = Ogólne
category.view.name = Wyświetl
category.multiplayer.name = Wielu graczy
category.blocks.name = Block Select
category.blocks.name = Wybierz Blok
command.attack = Atakuj
command.rally = Zbierz
command.retreat = Wycofaj
command.idle = Idle
command.idle = Nieaktywny
placement.blockselectkeys = \n[lightgray]Klawisz: [{0},
keybind.respawn.name = Respawn
keybind.control.name = Control Unit
@@ -795,12 +795,12 @@ keybind.press = Naciśnij wybrany klawisz...
keybind.press.axis = Naciśnij oś lub klawisz...
keybind.screenshot.name = Zrzut ekranu mapy
keybind.toggle_power_lines.name = Zmień widoczność linii energetycznych
keybind.toggle_block_status.name = Toggle Block Statuses
keybind.toggle_block_status.name = Przełączanie Między Statusami Bloków
keybind.move_x.name = Poruszanie w poziomie
keybind.move_y.name = Poruszanie w pionie
keybind.mouse_move.name = Podążaj Za Myszą
keybind.pan.name = Pan View
keybind.boost.name = Boost
keybind.pan.name = Widok Panoramiczny
keybind.boost.name = Przyspiesz
keybind.schematic_select.name = Wybierz region
keybind.schematic_menu.name = Menu schematów
keybind.schematic_flip_x.name = Obróć schemat horyzontalnie
@@ -827,8 +827,8 @@ keybind.diagonal_placement.name = Budowa po skosie
keybind.pick.name = Wybierz Blok
keybind.break_block.name = Zniszcz Blok
keybind.deselect.name = Odznacz
keybind.pickupCargo.name = Pickup Cargo
keybind.dropCargo.name = Drop Cargo
keybind.pickupCargo.name = Podnieś Ładunek
keybind.dropCargo.name = Opuść Ładunek
keybind.command.name = Command
keybind.shoot.name = Strzelanie
keybind.zoom.name = Przybliżanie
@@ -857,29 +857,29 @@ mode.pvp.name = PvP
mode.pvp.description = Walcz przeciwko innym graczom.\n[gray]Wymaga co najmniej dwóch rdzeni o róźnych kolorach na mapie, aby móc grać w tym trybie
mode.attack.name = Atak
mode.attack.description = Brak fal. Celem jest zniszczenie bazy przeciwnika.\n[gray]Wymaga czerwonego rdzenia na mapie, aby móc grać w tym trybie.
mode.custom = Własny tryb
mode.custom = Własny Tryb
rules.infiniteresources = Nieskończone zasoby
rules.reactorexplosions = Eksplozje reaktorów
rules.schematic = Schematics Allowed
rules.wavetimer = Zegar fal
rules.infiniteresources = Nieskończone Zasoby
rules.reactorexplosions = Eksplozje Reaktorów
rules.schematic = Schematy Są Dozwolone
rules.wavetimer = Zegar Fal
rules.waves = Fale
rules.attack = Tryb ataku
rules.buildai = AI Building
rules.enemyCheat = Nieskończone zasoby komputera-przeciwnika (czerwonego zespołu)
rules.blockhealthmultiplier = Mnożnik życia bloków
rules.blockdamagemultiplier = Block Damage Multiplier
rules.unitbuildspeedmultiplier = Mnożnik prędkości tworzenia jednostek
rules.unithealthmultiplier = Mnożnik życia jednostek
rules.unitdamagemultiplier = Mnożnik obrażeń jednostek
rules.enemycorebuildradius = Zasięg blokady budowy przy rdzeniu wroga:[lightgray] (kratki)
rules.wavespacing = Odstępy między falami:[lightgray] (sek)
rules.buildcostmultiplier = Mnożnik kosztów budowania
rules.buildspeedmultiplier = Mnożnik prędkości budowania
rules.attack = Tryb Ataku
rules.buildai = SI Może Budować
rules.enemyCheat = Nieskończone Zasoby SI (czerwonego zespołu)
rules.blockhealthmultiplier = Mnożnik Życia Bloków
rules.blockdamagemultiplier = Mnożnik Uszkodzeń Bloków
rules.unitbuildspeedmultiplier = Mnożnik Prędkości Tworzenia Jednostek
rules.unithealthmultiplier = Mnożnik Życia Jednostek
rules.unitdamagemultiplier = Mnożnik Obrażeń jednostek
rules.enemycorebuildradius = Zasięg Blokady Budowy Przy Rdzeniu Wroga:[lightgray] (kratki)
rules.wavespacing = Odstępy Między Falami:[lightgray] (sek)
rules.buildcostmultiplier = Mnożnik Kosztów Budowania
rules.buildspeedmultiplier = Mnożnik Prędkości Budowania
rules.deconstructrefundmultiplier = Mnożnik Zwrotu Dekonstrukcji
rules.waitForWaveToEnd = Fale czekają na przeciwników
rules.dropzoneradius = Zasięg strefy zrzutu:[lightgray] (kratki)
rules.unitammo = Units Require Ammo
rules.waitForWaveToEnd = Fale Czekają Na Przeciwników
rules.dropzoneradius = Zasięg Strefy Zrzutu:[lightgray] (kratki)
rules.unitammo = Jednostki Potrzebują Amunicji
rules.title.waves = Fale
rules.title.resourcesbuilding = Zasoby i Budowanie
rules.title.enemy = Przeciwnicy
@@ -887,13 +887,13 @@ rules.title.unit = Jednostki
rules.title.experimental = Eksperymentalne
rules.title.environment = Environment
rules.lighting = Oświetlenie
rules.enemyLights = Enemy Lights
rules.fire = Fire
rules.explosions = Block/Unit Explosion Damage
rules.enemyLights = Wrogowie Emitują Światło
rules.fire = Ogień
rules.explosions = Uszkodzenia Wybuchu Klocka/Jednostki
rules.ambientlight = Otaczające Światło
rules.weather = Weather
rules.weather.frequency = Frequency:
rules.weather.duration = Duration:
rules.weather = Pogoda
rules.weather.frequency = Częstotliwość:
rules.weather.duration = Czas trwania:
content.item.name = Przedmioty
content.liquid.name = Płyny
@@ -955,7 +955,7 @@ unit.reign.name = Reign
unit.vela.name = Vela
unit.corvus.name = Corvus
block.resupply-point.name = Resupply Point
block.resupply-point.name = Punkt Uzupełnienia
block.parallax.name = Parallax
block.cliff.name = Klif
block.sand-boulder.name = Piaskowy Głaz
@@ -1147,28 +1147,28 @@ block.container.name = Kontener
block.launch-pad.name = Wyrzutnia
block.launch-pad-large.name = Duża Wyrzutnia
block.segment.name = Segment
block.command-center.name = Command Center
block.command-center.name = Centrum Dowodzenia
block.ground-factory.name = Fabryka Naziemna
block.air-factory.name = Fabryka Powietrzna
block.naval-factory.name = Fabryka Morska
block.additive-reconstructor.name = Rekonstruktor Addytywny
block.multiplicative-reconstructor.name = Rekonstruktor Multiplikatywny
block.exponential-reconstructor.name = Rekonstruktor Wykładniczy
block.tetrative-reconstructor.name = Tetrative Reconstructor
block.tetrative-reconstructor.name = Rekonstruktor Tetratywny
block.payload-conveyor.name = Przenośnik Masowy
block.payload-router.name = Rozdzielacz Ładunku
block.disassembler.name = Dezasembler
block.silicon-crucible.name = Silicon Crucible
block.disassembler.name = Rozkładacz
block.silicon-crucible.name = Tygiel Krzemu
block.overdrive-dome.name = Kopuła Pola Overdrive
block.switch.name = Switch
block.micro-processor.name = Micro Processor
block.logic-processor.name = Logic Processor
block.hyper-processor.name = Hyper Processor
block.logic-display.name = Logic Display
block.large-logic-display.name = Large Logic Display
block.memory-cell.name = Memory Cell
block.memory-bank.name = Memory Bank
block.switch.name = Przełącznik
block.micro-processor.name = Micro Procesor
block.logic-processor.name = Logiczny Procesor
block.hyper-processor.name = Hyper Procesor
block.logic-display.name = Wyświetlacz Logiczny
block.large-logic-display.name = Duży Wyświetlacz Logiczny
block.memory-cell.name = Komórka Pamięci
block.memory-bank.name = Bank Pamięci
team.blue.name = niebieski
team.crux.name = czerwony
@@ -1219,7 +1219,7 @@ item.pyratite.description = Niesamowicie palny związek używany w zbrojeniu. Ni
liquid.water.description = Powszechnie używana do schładzania budowli i przetwarzania odpadów.
liquid.slag.description = Wiele różnych metali stopionych i zmieszanych razem. Może zostać rozdzielony na jego metale składowe, albo wystrzelony w wrogie jednostki i użyty jako broń.
liquid.oil.description = Używany w do produkcji złożonych materiałów. Może zostać przetworzony na węgiel, lub wystrzelony w wrogów przez wieżyczke.
liquid.cryofluid.description = Obojętna, niekorozyjna ciecz utworzona z wody i tytanu
liquid.cryofluid.description = Obojętna, niekorozyjna ciecz utworzona z wody i tytanu.
block.message.description = Przechowuje wiadomość. Wykorzystywane do komunikacji pomiędzy sojusznikami.
block.graphite-press.description = Kompresuje kawałki węgla w czyste blaszki grafitu.
@@ -1278,7 +1278,7 @@ block.underflow-gate.description = Odwrotność bramy przepełnieniowej, który
block.mass-driver.description = Najlepszy blok do transportu przedmiotów. Zbiera wiele przedmiotów naraz a potem wystrzeliwuje je do kolejnej katapulty masy na bardzo duże odległości.
block.mechanical-pump.description = Tania pompa o niskiej wydajności. Nie wymaga prądu.
block.rotary-pump.description = Zaawansowana pompa. Pompuje więcej cieczy, ale wymaga zasilania.
block.thermal-pump.description = Najlepsza pompa.
block.thermal-pump.description = Najlepsza pompa. Pompuje ogromne ilości cieczy, ale wymaga zasilaina.
block.conduit.description = Podstawowy blok do transportowania cieczy. Używany w połączeniu z pompami i innymi rurami.
block.pulse-conduit.description = Zaawansowany blok do transportowania cieczy. Transportuje je szybciej i magazynuje więcej niż standardowe rury.
block.plated-conduit.description = Przesyła ciecze z taką samą szybkością co rura tytanowa, ale jest bardziej odporna. Wejściami bocznymi mogą być tylko inne rury.\nWycieka z niej mniej cieczy.
@@ -1332,4 +1332,63 @@ block.cyclone.description = Duża szybkostrzelna wieża.
block.spectre.description = Duże działo dwulufowe, które strzela potężnymi pociskami przebijającymi pancerz w jednostki naziemne i powietrzne.
block.meltdown.description = Duże działo laserowe, które strzela potężnymi wiązkami dalekiego zasięgu. Wymaga chłodzenia.
block.repair-point.description = Bez przerw naprawia najbliższą uszkodzoną jednostkę w jego zasięgu.
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.
block.segment.description = Uszkadza i niszczy wrogie pociskiski poza laserami.
block.parallax.description = Wykorzystuje laser, który przyciąga do siebie wrogów, zadając im obrażenia.
block.tsunami.description = Strzela wielkim strumieniem cieczy we wrogów. Automatycznie gasi ogień, gdy jest podłączony do wody.
block.silicon-crucible.description = Oczyszcza krzem z węgla i piasku wykorzystując piratian. Bardziej efektywny w gorących miejscach.
block.disassembler.description = Oddziela egzotyczne materiały z mieszaniny jaką jest żużel z małą efektywnością. Może wyprodukować tor.
block.overdrive-dome.description = Zwiększa szybkość budynków w zasięgu. Wymaga włókna fazowego oraz krzemu by działać.
block.payload-conveyor.description = Przenosi duże ładunki, takie jak jednostki z fabryk.
block.payload-router.description = Dzieli wejście z przewoźnika masowego i dzieli je w 3 różne strony.
block.command-center.description = Kontroluje zachowanie jednostek paroma różnymi komendami.
block.ground-factory.description = Produkuje jednostki naziemne. Jednostki mogą być do razu wykorzystane lub przeniesone do rekonstrukota by je ulepszyć.
block.air-factory.description = Produkuje jednostki powietrzne. Jednostki mogą być do razu wykorzystane lub przeniesone do rekonstrukota by je ulepszyć.
block.naval-factory.description = Produkuje jednostki morskie. Jednostki mogą być do razu wykorzystane lub przeniesone do rekonstrukota by je ulepszyć.
block.additive-reconstructor.description = Ulepsza wsadzone jednostki do stopnia drugiego.
block.multiplicative-reconstructor.description = Ulepsza wsadzone jednostki do stopnia trzeciego.
block.exponential-reconstructor.description = Ulepsza wsadzone jednostki do stopnia czwartego.
block.tetrative-reconstructor.description = Ulepsza wsadzone jednostki do stopnia piątego i ostatniego.
block.switch.description = Jest Przełączalny. Stan jego może być odczytywany lub kontrolowany przez procesory.
block.micro-processor.description = Uruchamia sekwencję instrukcji logicznych w pętli. Może być wykorzystany do kontroli bloków lub jednostek.
block.logic-processor.description = Uruchamia sekwencję instrukcji logicznych w pętli. Może być wykorzystany do kontroli bloków lub jednostek. Szybszy niż mikro procesor.
block.hyper-processor.description = Uruchamia sekwencję instrukcji logicznych w pętli. Może być wykorzystany do kontroli bloków lub jednostek. Szybszy niż logiczny procesor.
block.memory-cell.description = Przechowuje informacje dla procesora.
block.memory-bank.description = Przechowuje informacje dla procesora. Duża pojemność.
block.logic-display.description = Wyświetla obraz z procesora.
block.large-logic-display.description = Wyświetla obraz z procesora.
block.interplanetary-accelerator.description = Masywna elektromagnetyczna wierza. Przyspiesza rdzeń do prędkości ucieczki by wylądować na innych planetach.
unit.dagger.description = Strzela standardowymi pociskami w najbliższych wrogów.
unit.mace.description = Strzela strumieniami ognia w najbliższych wrogów.
unit.fortress.description = Strzela artylerią dalekiego zasięgu we wrogie jednostki na ziemi.
unit.scepter.description = Strzela salwą naładowanych pocisków we wszystkich przeciwników.
unit.reign.description = Strzela salwą masywnych przebijających pocisków we wszystkich przeciwników.
unit.nova.description = Wystrzeliwuje pioruny, które uszkadzają przeciwników i leczą sojusznicze struktury. Może latać.
unit.pulsar.description = Wystrzeliwuje elektryczne pioruny, które uszkadzają przeciwników i leczą sojusznicze struktury. Może latać.
unit.quasar.description = Wystrzeliwuje wiązki laserowe, które uszkadzają przeciwników i leczą sojusznicze struktury. Może latać. Posiada tarcze.
unit.vela.description = Wystrzeliwuje masywny ciągły laser, który uszkadza przeciwników i leczy sojusznicze struktury. Może latać.
unit.corvus.description = Wystrzeliwuje masywny laserowy błysk, który uszkadza przeciwników i leczy sojusznicze struktury. Może przejść po większości terenu.
unit.crawler.description = Wbiega w przeciwników i dokonuje samozniszczenia powodując dużą eksplozje.
unit.atrax.description = Wystrzeliwuje wyniszczające kule żużlu w cele na ziemi. Może przejść po większości terenu.
unit.spiroct.description = Strzela wyczerpującymi życie laserami we wrogów, naprawiając siebie. Może przejść po większości terenu.
unit.arkyid.description = Strzela dużymi wyczerpującymi życie laserami we wrogów, naprawiając siebie. Może przejść po większości terenu.
unit.toxopid.description = Strzela wielkimi elektrycznymi skupionymi kulami i przebijającymi laserami we wrogów. Może przejść po większości terenu.
unit.flare.description = Strzela standardowymi pociskami we jednostki naziemne.
unit.horizon.description = Upuszcza stos bomb na jednostki naziemne.
unit.zenith.description = Strzela salwą rakiet w każdego pobliskiego wroga.
unit.antumbra.description = Strzela zaporą rakiet w każdego pobliskiego wroga.
unit.eclipse.description = Strzela dwoma przebijającymi laserami i pociskami przeciwlotniczymi we wrogów.
unit.mono.description = Automatycznie wykopuje miedź i ołów i odkłada je do rdzenia.
unit.poly.description = Automatycznie naprawia zniszczone struktury i asystuje w budowie.
unit.mega.description = Automatycznie naprawia zniszczone struktury. Może podnosić małe jednostki i bloki.
unit.quad.description = Upuszcza wielkie bomby na cele na ziemi, które uszkadzają przeciwników i leczą sojusznicze struktury. Może podnosić jednostki naziemne średniej wielkości.
unit.oct.description = Broni wszystkie jednostki tarczą regeneracyjną. Może podnosić większość jednostek naziemnych.
unit.risso.description = Strzela sporą ilością pocisków i rakiet w najbliższych przeciwników.
unit.minke.description = Strzela granatami i standardowymi pociskami w najbliższych przeciwników.
unit.bryde.description = Strzela granatami i rakietami na dużą odległość we wrogów.
unit.sei.description = Strzela dużą ilością rakiet oraz przebijających zbroje pocisków we wrogów
unit.omura.description = Strzela przebijającym superszybkim pociskiem we wrogów ze sporej odległości. Produkuje Błyski (jednostki)
unit.alpha.description = Chroni Rdzeń: Odłamek przed wrogami. Buduje struktury.
unit.beta.description = Chroni Rdzeń: Podstawa przed wrogami. Buduje struktury.
unit.gamma.description = Chroni Rdzeń: Jądro przed wrogami. Buduje struktury.

View File

@@ -17,11 +17,14 @@ linkfail = Linkul nu a putut fi deschis!\nAdresa URL a fost copiată.
screenshot = Captură de ecran salvată la {0}
screenshot.invalid = Harta e prea mare. Se poate să nu existe suficientă memorie pentru captura de ecran.
gameover = Jocul s-a încheiat
gameover.disconnect = Deconectare
gameover.pvp = Echipa [accent] {0}[] este câștigătoare!
gameover.waiting = [accent]Se așteaptă următoarea hartă...
highscore = [accent]Scor maxim nou!
copied = Copiat.
indev.popup = [accent]v6[] este momentan în [accent]beta[].\n[lightgray]Asta înseamnă că:[]\n[scarlet]- Campania este neterminată[]\n- Efectele sonore și muzica sunt neterminate/lipsesc\n- Tot ce vedeți se poate schimba sau poate fi eliminat.\n\nPentru a raporta buguri și crashuri intrați pe [accent]Github[].
indev.popup = [accent]v6[] este momentan în [accent]beta[].\n[lightgray]Asta înseamnă că:[]\n[scarlet]- Campania este neterminată[]\n- Tot ce vedeți se poate schimba sau poate fi eliminat.\n\nPentru a raporta buguri și crashuri intrați pe [accent]Github[].
indev.notready = Această secțiune a jocului nu este gata încă.
indev.campaign = [accent]Ai ajuns la finalul campaniei![]\n\nAi mers cât de departe se poate momentan. Călătoria interplanetară va fi adăugată într-un update viitor.
load.sound = Sunete
load.map = Hărți
@@ -57,6 +60,7 @@ schematic.rename = Redenumește Schema
schematic.info = {0}x{1}, {2} blocuri
schematic.disabled = [scarlet]Schemele sunt dezactivate[]\nNu ai voie să folosești scheme pe această [accent]hartă[] sau [accent]server.
stats = Informații
stat.wave = Valuri Învinse:[accent] {0}
stat.enemiesDestroyed = Inamici Distruși:[accent] {0}
stat.built = Structuri Construite:[accent] {0}
@@ -290,6 +294,7 @@ cancelbuilding = [accent][[{0}][] pt a curăța planul
selectschematic = [accent][[{0}][] pt selectare+copiere
pausebuilding = [accent][[{0}][] pt a face o pauză de la construit
resumebuilding = [scarlet][[{0}][] pt a continua construitul
showui = Interfață ascunsă.\nApasă [accent][[{0}][] pt a vedea interfața.
wave = [accent]Valul {0}
wave.cap = [accent]Valul {0}/{1}
wave.waiting = [lightgray]Val în {0}
@@ -297,6 +302,8 @@ wave.waveInProgress = [lightgray]Val în desfășurare
waiting = [lightgray]În așteptare...
waiting.players = Se așteaptă jucătorii...
wave.enemies = [lightgray]Mai sunt {0} inamici
wave.enemycores = [accent]{0}[lightgray] Nuclee Inamice
wave.enemycore = [accent]{0}[lightgray] Nucleu Inamic
wave.enemy = [lightgray]Mai e {0} inamic
wave.guardianwarn = Gardianul va veni în [accent]{0}[] valuri.
wave.guardianwarn.one = Gardianul va veni într-[accent]un[] val.
@@ -483,13 +490,14 @@ abandon = Abandonează
abandon.text = Zona aceasta și toate resursele ei vor fi cedate inamicului.
locked = Blocat
complete = [lightgray]Finalizat:
requirement.wave = Ajungi la valul {0} în {1}
requirement.core = Distruge Nucleu Inamic în{0}
requirement.wave = Treci de valul {0} în {1}
requirement.core = Distruge Nucleul Inamic din {0}
requirement.research = Cercetează {0}
requirement.produce = Produ {0}
requirement.capture = Capturează {0}
bestwave = [lightgray]Cel Mai Bun Val: {0}
launch.text = Lansează
research.multiplayer = Doar gazda poate cerceta noi tehnologii.
map.multiplayer = Doar gazda poate vedea harta sectoarelor.
uncover = Descoperă
configure = Configurează Încărcarea
@@ -498,6 +506,7 @@ loadout = Încărcare
resources = Resurse
bannedblocks = Blocuri Interzise
addall = Adaugă-le pe toate
launch.from = Lansează Din: [accent]{0}
launch.destination = Destinație: {0}
configure.invalid = Cantitatea trebuie să fie un număr între 0 și {0}.
zone.unlocked = [lightgray]{0} deblocat(ă).
@@ -529,45 +538,67 @@ weather.fog.name = Ceață
sectors.unexplored = [lightgray]Neexplorat
sectors.resources = Resurse:
sectors.production = Producție:
sectors.export = Export:
sectors.time = Timp:
sectors.threat = Amenințare:
sectors.wave = Valul:
sectors.stored = Stocat:
sectors.resume = Revino
sectors.launch = Lansare
sectors.select = Selectează
sectors.nonelaunch = [lightgray]nimic (soarele)
sectors.rename = Redenumește Sectorul
sectors.enemybase = [scarlet]Bază Inamică
sectors.vulnerable = [scarlet]Vulnerabil
sectors.underattack = [scarlet]Sectorul e atacat! [accent]{0}% deteriorat
sectors.survives = [accent]Supraviețuiește {0} valuri
sector.curcapture = Sector Capturat
sector.curlost = Sector Pierdut
sector.missingresources = [scarlet]Resurse din Nucleu Insuficiente
sector.attacked = Sectorul [accent]{0}[white] este atacat!
sector.lost = Ai pierdut sectorul [accent]{0}[white]!
#spațiul lipsă de mai jos e intenționat
sector.captured = Ai capturat sectorul [accent]{0}[white]!
threat.low = Scăzută
threat.medium = Medie
threat.high = Mare
threat.extreme = Extremă
threat.eradication = Eradicare
planets = Planete
planet.serpulo.name = Serpulo
#Spațiu Necesar
planet.sun.name = Soare
#Spațiu Necesar
sector.groundZero.name = Ground Zero
sector.craters.name = The Craters
sector.frozenForest.name = Frozen Forest
sector.ruinousShores.name = Ruinous Shores
sector.stainedMountains.name = Stained Mountains
sector.desolateRift.name = Desolate Rift
sector.nuclearComplex.name = Nuclear Production Complex
sector.overgrowth.name = Overgrowth
sector.tarFields.name = Tar Fields
sector.saltFlats.name = Salt Flats
sector.fungalPass.name = Fungal Pass
#Spațiu
#Absolut
#Necesar
sector.impact0078.name = Impact 0078
sector.groundZero.name = Punctul Zero
sector.craters.name = Craterele
sector.frozenForest.name = Pădurea Glacială
sector.ruinousShores.name = Țărmurile Părăsite
sector.stainedMountains.name = Munții Pătați
sector.desolateRift.name = Riftul Dezolat
sector.nuclearComplex.name = Complexul de Producție Nucleară
sector.overgrowth.name = Supracreșterea
sector.tarFields.name = Câmpurile cu Păcură
sector.saltFlats.name = Podișurile Saline
sector.fungalPass.name = Pasul Fungic
sector.biomassFacility.name = Facilitatea de Sinteză a Biomasei
sector.windsweptIslands.name = Insulele Măturate de Vânt
sector.extractionOutpost.name = Avanpostul de Extracție
sector.planetaryTerminal.name = Terminalul de Lansare Planetară
sector.groundZero.description = Locația optimă pt a începe încă odată. Risc de inamici scăzut. Puține resurse.\nAdună cât de mult plumb și cupru se poate.\nMergi mai departe.
sector.frozenForest.description = Chiar și aici, aproape de munți, sporii s-au împrăștiat. Temperaturile reci nu-i pot reține la infinit.\n\nÎncepe călătoria către electricitate. Construiește generatoare de combustie. Învață să folosești reparatoare.
sector.saltFlats.description = La periferia deșertului stau Salt Flats. Puține resurse pot fi găsite în această locație.\n\nInamicul a ridicat un complex-depozit aici. Distruge-le nucleul. Nu lăsa nimic în urmă.
sector.saltFlats.description = La periferia deșertului stau Podișurile Saline. Puține resurse pot fi găsite în această locație.\n\nInamicul a ridicat un complex-depozit aici. Distruge-le nucleul. Nu lăsa nimic în urmă.
sector.craters.description = Apa s-a acumulat în acest crater, rămășiță a vechilor războaie. Cucerește din nou zona. Adună nisip. Toarnă-l în metasticlă. Pompează apă pt a răci armele și burghiele.
sector.ruinousShores.description = După deșerturi vine țărmul. Odată, locația aceasta a avut un sistem de apărare de coastă. N-a rămas mult din el. Doar structurile de apărare cele mai de bază rămas în picioare, restul fiind redus la fier vechi.\nContinuă expansiunea în afară. Redescoperă tehnologia.
sector.stainedMountains.description = Mai înspre continent sunt munții, încă neatinși de spori.\nExtrage abundentele resurse de titan din zonă. Învață cum să-l folosești.\n\nPrezența inamicului e mai mare aici. Nu le da timp să-și trimită cele mai puternice unități.
sector.overgrowth.description = Zona asta e plină de buruieni, mai aproape de sursa sporilor.\nInamicul și-a stabilit un adăpost aici. Construiește unități Titan. Distruge-o. Cucerește din nou ce s-a pierdut.
sector.overgrowth.description = Această zonă este plină de buruieni, mai aproape de sursa sporilor.\nInamicul și-a stabilit un adăpost aici. Construiește unități Mace. Distruge-o. Cucerește din nou ce s-a pierdut.
sector.tarFields.description = O zonă aflată la periferia unei zone de producție petrolieră, între munți și deșert. Una din puținele zone cu resurse utilizabile de țiței.\nDeși abandonată, zona aceasta are niște forțe inamice periculoase înapropiere. Nu le subestima.\n\n[lightgray]Cercetează tehnologia de procesare a petrolului dacă se poate.
sector.desolateRift.description = O zonă extrem de periculoasă. Multe resurse, dar puțin spațiu. Mare risc de distrugere. Pleacă cât mai curând. Nu te lăsa păcălit de timpul mare dintre atacurile inamice.
sector.nuclearComplex.description = O fostă facilitate pt producerea și procesarea de torium, redusă la ruine.\n[lightgray]Cercetează toriul și multele sale utilizări.\n\nInamicul e prezent aici în mari numere, căutând constând atacatori.
sector.nuclearComplex.description = O fostă facilitate pt producerea și procesarea de toriu, redusă la ruine.\n[lightgray]Cercetează toriul și multele sale utilizări.\n\nInamicul e prezent aici în mari numere, căutând constând atacatori.
sector.fungalPass.description = O zonă de tranziție dintre munții înalți și zonele joase, pline cu spori. O mică bază de recunoaștere a inamicului este localizată aici.\nDistruge-o.\nFolosește unități Dagger și Crawler. Distruge cele 2 nuclee.
settings.language = Limbă
@@ -628,6 +659,8 @@ stat.memorycapacity = Capacitate Memorie
stat.basepowergeneration = Generare Electricitate (Bază)
stat.productiontime = Timp Producție
stat.repairtime = Durată Reparare Bloc
stat.weapons = Arme
stat.bullet = Glonț
stat.speedincrease = Creștere Viteză
stat.range = Rază
stat.drilltier = Minabile
@@ -697,12 +730,14 @@ units.processorcontrol = [lightgray]Controlat de Procesor
bullet.damage = [stat]{0}[lightgray] forță
bullet.splashdamage = [stat]{0}[lightgray] forță explozivă ~[stat] {1}[lightgray] pătrate
bullet.incendiary = [stat]incendiar
bullet.sapping = [stat]atragere inamici
bullet.homing = [stat]cu radar
bullet.shock = [stat]șoc
bullet.frag = [stat]fragil
bullet.knockback = [stat]{0} [lightgray]împingere
bullet.pierce = [stat]{0}[lightgray]x penetrare
bullet.infinitepierce = [stat]penetrare
bullet.healpercent = [stat]{0}[lightgray]% reparare
bullet.freezing = [stat]înghețat
bullet.tarred = [stat]lipicios
bullet.multiplier = [stat]{0}[lightgray]x multiplicator muniție
@@ -770,7 +805,6 @@ setting.conveyorpathfinding.name = Găsirea Drumului la Plasarea Benzii
setting.sensitivity.name = Sensibilitatea Controlului
setting.saveinterval.name = Interval de Salvare
setting.seconds = {0} secunde
setting.blockselecttimeout.name = Selectarea Blocului a Întârziat
setting.milliseconds = {0} millisecunde
setting.fullscreen.name = Ecran Complet
setting.borderlesswindow.name = Fereastră Fără Margine[lightgray] (repornirea poate fi necesară)
@@ -859,6 +893,7 @@ keybind.menu.name = Meniu
keybind.pause.name = Pauză
keybind.pause_building.name = Pauză/Reia Construit
keybind.minimap.name = Minihartă
keybind.planet_map.name = Harta Planetei
keybind.chat.name = Chat
keybind.player_list.name = Listă Jucători
keybind.console.name = Consolă
@@ -922,6 +957,7 @@ content.item.name = Materiale
content.liquid.name = Lichide
content.unit.name = Unități
content.block.name = Blocuri
content.sector.name = Sectoare
item.copper.name = Cupru
item.lead.name = Plumb
@@ -1086,7 +1122,6 @@ block.distributor.name = Distributor
block.block-forge.name = Forjă de Blocuri
block.block-loader.name = Încărcător de Blocuri
block.block-unloader.name = Descărcător de Blocuri
block.sorter.name = Sortator
block.inverted-sorter.name = Sortator Invers
block.message.name = Mesaj
@@ -1186,6 +1221,7 @@ block.payload-router.name = Router în Masă
block.disassembler.name = Dezasamblator
block.silicon-crucible.name = Creuzet de Silicon
block.overdrive-dome.name = Dom de Suprasolicitare
block.interplanetary-accelerator.name = Accelerator Interplanetar
block.switch.name = Întrerupător
block.micro-processor.name = Microprocesor
@@ -1204,27 +1240,40 @@ team.derelict.name = abandonată
team.green.name = verde
team.purple.name = mov
tutorial.next = [lightgray]<Click pt a continua>
tutorial.intro = Bun venit în[scarlet] Tutorialul Mindustry.[]\nFolosește[accent] [[WASD][] ca să te miști.\n[accent]Cu rotița[] poți face harta mai mare sau mai mică.\nÎncepe prin[accent] a mina cupru[]. Apropie-te de el, Apoi apasă pe un minereu de cupru de lângă nucleul tău.\n\n[accent]{0}/{1} cupru
tutorial.intro.mobile = Bun venit în[scarlet] Tutorialul Mindustry.[]\nGlisează pe ecran pt a te mișca.\n[accent]Trage cu 2 degete[] pt face harta mai mare sau mai mică.\nÎncepe prin[accent] a mina cupru[]. Apropie-te de el, Apoi apasă pe un minereu de cupru de lângă nucleul tău.\n\n[accent]{0}/{1} cupru
tutorial.drill = Mineritul manual este ineficient.\n[accent]Burghiele[] pot mina automat.\nDă click pe tabul burghie din colțul din dreapta-jos.\nSelectează[accent] burghiul mecanic[]. Plasează-l pe un minereu de cupru dând click.\nPoți selecta burghiul și apăsând [accent][[2][] apoi rapid [accent][[1][], indiferent de ce tab este deschis.\n[accent]Click-dreapta[] ca să te oprești din a construi.
tutorial.drill.mobile = Mineritul manual este ineficient.\n[accent]Burghiele[] pot mina automat.\nDă click pe tabul burghie din colțul din dreapta-jos.\nSelectează[accent] burghiul mecanic[]. Plasează-l pe un minereu de cupru dând click, apoi apasă pe[accent] bifa[] de mai jos pt a-ți confirma selecția.\nApasă pe[accent] butonul X[] pt a anula plasarea.
tutorial.blockinfo = Fiecare bloc are statistici diferite. Fiecare burghiu poate mina minereuri diferite.\nPt a verifica informațiile despre un bloc,[accent] dă click pe butonul "?" care apare când blocul este selectat din meniu.[]\n\n[accent]Accesează informații despre Burghiul Mecanic.[]
tutorial.conveyor = [accent]Benzile[] se folosesc pt a transporta materiale la nucleu.\nConstruiește o bandă rulantă de la burghiu către nucleu.\n[accent]Ține apăsat pe mouse pt a desena o linie.[]\nȚine[accent] CTRL[] în timp se plasezi o line pt a o plasa diagonal.\nFolosește rotița pt a roti blocurile înainte să le plasezi.\n[accent]Plasează 2 benzi, apoi livrează un material la nucleu.
tutorial.conveyor.mobile = [accent]Benzile[] se folosesc pt a transporta materiale la nucleu.\nConstruiește o bandă rulantă de la burghiu către nucleu.\n[accent] Construiește o linie ținând degetul pe ecran câteva secunde și apoi[] trage într-o direcție.\n\n[accent]Plasează 2 benzi, apoi livrează un material la nucleu.
tutorial.turret = Odată ce un material intră în nucleu, poate fi folosit pt a construi.\nDe reținut că nu toate materialele pot fi folosite pt construit.\nMaterialele care nu sunt folosite pt construit, cum ar fi[accent] cărbunele[] sau[accent] fierul vechi[], nu pot fi puse în nucleu.\nTrebuie să construiești structuri defensive ca să te aperi de[lightgray] inamici[].\nConstruiește [accent]o armă duo[] lângă baza ta.
tutorial.drillturret = Armele Duo au nevoie de[accent] muniție de cupru[] pt a trage.\nPlasează un burghiu lângă armă.\nConstruiește o bandă către armă pt a o alimenta cu muniție de cupru.\n\n[accent]Muniție livrată: 0/1
tutorial.pause = În timpul luptei, poți[accent] da pauză la joc.[]\nPoți planifica construcții în timpul pauzei.\n\n[accent]Apasă pe space pt a da pauză.
tutorial.pause.mobile = În timpul luptei, poți[accent] da pauză la joc.[]\nPoți planifica construcții în timpul pauzei.\n\n[accent]Apasă butonul din colțul din stânga sus pt a da pauză.
tutorial.unpause = Acum apasă space din nou pt a continua.
tutorial.unpause.mobile = Acum apasă-l din nou pt a continua.
tutorial.breaking = Uneori, blocurile trebuie distruse.\n[accent]Ține apăsat pe click dreapta[] pt a distruge toate blocurile dintr-o selecție.[]\n\n[accent]Distruge toate blocurile de fier vechi din stânga nucleului.
tutorial.breaking.mobile = Uneori, blocurile trebuie distruse.\n[accent]Selectează modul deconstrucție[], aopi dă click pe un bloc pt a-l distruge.\nDistruge o zonă ținând apăsat cu degetul pt câteva secunde[] și apoi trăgând într-o direcție.\nApasă bifa de mai jos pt a confirma distrugerea.\n\n[accent]Distruge toate blocurile de fier vechi din stânga nucleului.
tutorial.withdraw = Câteodată a lua materiale direct din blocuri este necesar.\nPt a face asta, [accent]dă click pe un bloc[] cu materiale în el, apoi [accent]dă click pe materialul[] din inventar.\nMai multe materiale pot fi luate [accent]făcând click și ținând apăsat[].\n\n[accent]Ia niște cupru din nucleu.[]
tutorial.deposit = Depozitează materiale înapoi în blocuri trăgând din nava ta către blocul de destinație.\n\n[accent]Depozitează cuprul înapoi în nucleu.[]
tutorial.waves = [lightgray]Inamicul[] se apropie.\n\nApără nucleul timp de 2 valuri.[accent] Click[] pt a trage cu arma.\nConstruiește mai multe arme și burghie. Minează mai mult cupru.
tutorial.waves.mobile = [lightgray]Inamicul[] se apropie.\n\nApără nucleul timp de 2 valuri. Nava ta va trage automat către inamici.\nConstruiește mai multe arme și burghie. Minează mai mult cupru.
tutorial.launch = Odată ce ajungi la un anumit val, poți [accent]lansa nucleul[], lăsându-ți apărările în urmă și[accent] obținând toate resursele din nucleu.[]\nResursele obținute pot fi apoi folosite pt a cerceta noi tehnologii.\n\n[accent]Apasă butonul de lansare.
# A NU SE TRADUCE! NU SUNT GATA!
hint.skip = Skip
hint.desktopMove = Use [accent][[WASD][] to move.
hint.zoom = [accent]Scroll[] to zoom in or out.
hint.mine = Move near the \uf8c4 copper ore and [accent]tap[] it to mine manually.
hint.desktopShoot = [accent][[Left-click][] to shoot.
hint.depositItems = To transfer items, drag from your ship to the core.
hint.respawn = To respawn as a ship, press [accent][[V][].
hint.respawn.mobile = You have switched control 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.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.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.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.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.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.research = Use the \ue875 [accent]Research[] button to research new technology.
hint.research.mobile = Use the \ue875 [accent]Research[] button in the \ue88c [accent]Menu[] to research new technology.
hint.unitControl = Hold [accent][[L-ctrl][] and [accent]click[] to control friendly units or turrets.
hint.unitControl.mobile = [accent][Double-tap[] to control friendly units or 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.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.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.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.boost = Hold [accent][[L-Shift][] to fly over obstacles with your current unit.\n\nOnly a few ground units have boosters.
hint.command = Press [accent][[G][] to command nearby units into formation.
hint.command.mobile = [accent][[Double-tap][] your unit to command nearby units into formation.
hint.payloadPickup = Press [accent][[[] to pick up small blocks or units.
hint.payloadPickup.mobile = [accent]Tap and hold[] a small block or unit to pick it up.
hint.payloadDrop = Press [accent]][] to drop a payload.
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.
item.copper.description = Folosit în tot felul de construcții și muniție.
item.copper.details = Cupru. Metal anormal de abundent pe Serpulo. Structural slab dacă nu este consolidat.
@@ -1237,7 +1286,7 @@ item.coal.description = Folosit extensiv ca combustibil și pt producerea de mat
item.coal.details = Pare să fie materie vegetală fosilizată, formată cu mult înainte de evenimentul însămânțării.
item.titanium.description = Folosit pt structuri transportatoare de lichid, burghie și aeronautică.
item.thorium.description = Folosit în structuri durabile și combustibil nuclear.
item.scrap.description = Topit și rafinat în alte materiale.
item.scrap.description = Folosit in topitoare și pulverizatoare pt a fi rafinat în alte materiale.
item.scrap.details = Rămășițe ale structurilor și unităților vechi..
item.silicon.description = Folosit în producerea energiei solare, electronice complexe și muniție cu radar pt armament.
item.plastanium.description = Folosit pt unitățile militare avansate, ca izolator electric și muniție fragilă.
@@ -1247,11 +1296,13 @@ item.spore-pod.description = Folosită pt a fi convertită în petrol, explozibi
item.spore-pod.details = Spori. Probabil o formă de viață sintetică. Emite gaze toxice altor forme de viață biologică. Nu că ar mai fi rămas prea multe aici.
item.blast-compound.description = Folosit în bombe și muniție explozibilă.
item.pyratite.description = Folosită în armele incendiare și generatoare pe bază de procese de combustie.
liquid.water.description = Folosită pt răcirea mașinăriilor și procesarea deșeurilor.
liquid.slag.description = Rafinată în separatoare înapoi în materialele constituente, sau pulverizată înspre unitățile inamice ca armă.
liquid.oil.description = Folosit în producerea avansată de materialet și ca muniție incendiară.
liquid.cryofluid.description = Folosit ca răcitor în reactoare, arme și fabrici.
block.resupply-point.description = Realimentează unitățile din apropiere cu muniție de cupru. Nu este compatibil cu unitățile care se încarcă din baterii.
block.armored-conveyor.description = Transportă materialele înainte. Nu acceptă materiale de pe lateral decât de la alte benzi.
block.illuminator.description = Emite lumină.
block.message.description = Păstrează un mesaj. Folosit pt comunicarea dintre aliați.
@@ -1393,6 +1444,7 @@ block.memory-cell.description = Stochează informație pt un procesor.
block.memory-bank.description = Stochează informație pt un procesor. Capacitate mare.
block.logic-display.description = Afișează grafica transmisă de un procesor logic.
block.large-logic-display.description = Afișează grafica transmisă de un procesor logic.
block.interplanetary-accelerator.description = Un turn masiv cu o armă railgun electromagnetică. Accelerează nucleele la viteză cosmică pt lansare interplanetară.
unit.dagger.description = Trage cu gloanțe standard către toți inamicii din apropiere.
unit.mace.description = Trage cu jeturi de flacără aprinsă către toți inamicii din apropiere.
@@ -1420,7 +1472,7 @@ unit.mega.description = Repară automat structurile deteriorate. Capabilă să c
unit.quad.description = Aruncă bombe mari peste artileria inamică, reparând structurile aliate și deteriorând inamicii. Capabilă să care unități de artilerie de dimensiuni medii.
unit.oct.description = Protejează aliații din apropiere cu scutul său care se regenerează. Capabilă să care majoritatea unităților de artilerie.
unit.risso.description = Trage un baraj de rachete și gloanțe către toți inamicii din apropiere.
unit.minke.description = Trage cu capsule incendiare și gloanțe standard către artileria inamică din apropiere.
unit.minke.description = Trage cu capsule și gloanțe standard către artileria inamică din apropiere.
unit.bryde.description = Trage cu capsule de artilerie și rachete către inamici pe distanțe lungi.
unit.sei.description = Trage cu un baraj de rachete și gloanțe care penetrează scuturile inamicilor.
unit.omura.description = Trage cu un railgun cu gloanțe care penetrează scuturile inamice pe distanțe lungi. Construiește unități Flare.

View File

@@ -497,6 +497,7 @@ requirement.produce = Произведите {0}
requirement.capture = Захватите {0}
launch.text = Высадка
research.multiplayer = Только хост может исследовать предметы.
map.multiplayer = Только хост может просматривать секторы.
uncover = Раскрыть
configure = Конфигурация выгрузки
@@ -547,8 +548,13 @@ sectors.launch = Высадка
sectors.select = Выбор
sectors.nonelaunch = [lightgray]нет (солнце)
sectors.rename = Переименовать сектор
sectors.enemybase = [scarlet]Вражеская база
sectors.vulnerable = [scarlet]Уязвим
sectors.underattack = [scarlet]Атакован! [accent]{0}% повреждений
sectors.survives = [accent]Продержиться {0} волн(ы)
sector.curcapture = Сектор захвачен
sector.curlost = Сектор потерян
sector.missingresources = [scarlet]Недостаточно ресурсов для высадки
sector.attacked = Сектор [accent]{0}[white] атакован!
sector.lost = Сектор [accent]{0}[white] потерян!
@@ -589,8 +595,8 @@ sector.saltFlats.description = На окраине пустыни лежат с
sector.craters.description = Вода скопилась в этом кратере, реликвии времён старых войн. Восстановите область. Соберите песок. Выплавьте метастекло. Качайте воду для охлаждения турелей и буров.
sector.ruinousShores.description = Мимо пустошей проходит береговая линия. Когда-то здесь располагался массив береговой обороны. Не так много от него осталось. Только самые базовые оборонительные сооружения остались невредимыми, всё остальное превратилось в металлолом.\nПродолжайте экспансию вовне. Переоткройте для себя технологии.
sector.stainedMountains.description = Дальше, вглубь местности, лежат горы, еще не запятнанные спорами.\nИзвлеките изобилие титана в этой области. Научитесь им пользоваться.\n\nВражеское присутствие здесь сильнее. Не дайте им времени для отправки своих сильнейших боевых единиц.
sector.overgrowth.description = Эта заросшая область находится ближе к источнику спор.\nВраг организовал здесь форпост. Постройте боевые единицы «Титан». Уничтожьте его. Верните то, что было потеряно.
sector.tarFields.description = Окраина зоны нефтедобычи, между горами и пустыней. Один из немногих районов с полезными запасами дёгтя.\nХотя эта область заброшенна, в ней поблизости присутствуют некоторые опасные вражеские силы. Не стоит их недооценивать.\n\n[lightgray]Исследуйте технологию переработки нефти, если возможно.
sector.overgrowth.description = Эта заросшая область находится ближе к источнику спор.\nВраг организовал здесь форпост. Постройте боевые единицы «Булава». Уничтожьте его. Верните то, что было потеряно.
sector.tarFields.description = Окраина зоны нефтедобычи, между горами и пустыней. Один из немногих районов с полезными запасами дёгтя.\nХотя эта область заброшена, в ней поблизости присутствуют некоторые опасные вражеские силы. Не стоит их недооценивать.\n\n[lightgray]Исследуйте технологию переработки нефти, если возможно.
sector.desolateRift.description = Чрезвычайно опасная зона. Обилие ресурсов, но мало места. Высокий риск разрушения. Эвакуироваться нужно как можно скорее. Не расслабляйтесь во время больших перерывов между вражескими атаками.
sector.nuclearComplex.description = Бывший завод по производству и переработке тория, превращенный в руины.\n[lightgray]Исследуйте торий и варианты его многочисленного применения.\n\nВраг присутствует здесь в большом числе, постоянно разведывая нападающих.
sector.fungalPass.description = Переходная область между высокими горами и более низкими, покрытыми спорами землями. Здесь расположена небольшая разведывательная база противника.\nУничтожьте ее.\nИспользуйте единицы «Кинжал» и «Ползун». Достаньте до обоих ядер.
@@ -888,6 +894,7 @@ keybind.menu.name = Меню
keybind.pause.name = Пауза
keybind.pause_building.name = Приостановить/возобновить строительство
keybind.minimap.name = Мини-карта
keybind.planet_map.name = Карта планеты
keybind.chat.name = Чат
keybind.player_list.name = Список игроков
keybind.console.name = Консоль
@@ -1234,27 +1241,40 @@ team.derelict.name = Покинутая
team.green.name = Зелёная
team.purple.name = Фиолетовая
tutorial.next = [lightgray]<Нажмите для продолжения>
tutorial.intro = Вы начали[scarlet] обучение по Mindustry.[]\nИспользуйте кнопки [accent][[WASD][] для передвижения.\n[accent]Покрутите колесо мыши[] для приближения или отдаления камеры.\nНачните с [accent]добычи меди[]. Приблизьтесь к ней, затем нажмите на медную жилу возле вашего ядра, чтобы сделать это.\n\n[accent]{0}/{1} меди
tutorial.intro.mobile = Вы начали[scarlet] обучение по Mindustry.[]\nПроведите по экрану, чтобы двигаться.\n[accent]Сведите или разведите 2 пальца[] для изменения масштаба.\nНачните с [accent]добычи меди[]. Приблизьтесь к ней, затем нажмите на медную жилу возле Ввашего ядра, чтобы сделать это.\n\n[accent]{0}/{1} меди
tutorial.drill = Ручная добыча не является эффективной.\n[accent]Буры[] могут добывать автоматически.\nНажмите на вкладку с изображением сверла снизу справа.\nВыберите[accent] механический бур[]. Разместите его на медной жиле нажатием.\n[accent]Нажатие по правой кнопке[] прервёт строительство.
tutorial.drill.mobile = Ручная добыча не является эффективной.\n[accent]Буры []могут добывать автоматически.\nНажмите на вкладку с изображением сверла снизу справа.\nВыберите[accent] механический бур[].\nРазместите его на медной жиле нажатием, затем нажмите [accent] белую галку[] ниже, чтобы подтвердить построение выделенного.\nНажмите [accent] кнопку X[], чтобы отменить размещение.
tutorial.blockinfo = Каждый блок имеет разные характеристики. Каждая дрель может добывать определенные руды.\nЧтобы узнать информацию о блоке и о его характеристиках,[accent] нажмите на «?», когда он выбран в меню строительства.[]\n\n[accent]Сейчас, узнайте характеристики механического бура.[]
tutorial.conveyor = [accent]Конвейеры[] используются для транспортировки ресуров в ядро.\nСделайте линию конвейеров от бура к ядру\n[accent]Удерживайте левую кнопку мыши, чтобы разместить в линию.[]\nУдерживайте[accent] CTRL[] при постройке линии блоков, чтобы сделать её диагональной\n\n[accent]Разместите 2 конвейера в линию и доставьте предметы в ядро.
tutorial.conveyor.mobile = [accent]Конвейеры[] используются для транспортировки ресурсов в ядро\nСделайте линию конвейеров от бура к ядру\n[accent]Сделайте линию, удерживая палец несколько секунд в том месте, в котором вы хотите начать линию,[] и перетяните его в нужном направлении. [accent]Разместите 2 конвейера в линию и доставьте предметы в ядро.
tutorial.turret = Как только предмет попадает в ядро, его можно использовать в строительстве.\nИмейте в виду, что не все предметы могут быть использованы в строительстве.\nПредметы, которые нельзя использовать для стоительства, такие как[accent] уголь[] или[accent] металлолом[], не могут быть транспортированы в ядро.\nЗащитные структуры нужно строить для отражения[lightgray] противников[].\nПостройте[accent] двойную турель[] возле вашей базы.
tutorial.drillturret = Двойным турелям нужна [accent]медные боеприпасы[] для стрельбы.\nРазместите бур рядом с турелью.\nПроведите конвейеры к турели, чтобы снабдить её медью.\n\n[accent]Боеприпасов доставлено: 0/1
tutorial.pause = Во время битвы, вы можете[accent] приостановить игру.[]\nВы можете планировать строительство, когда игра стоит на паузе.\n\n[accent]Нажмите ПРОБЕЛ для приостановки игры.
tutorial.pause.mobile = Во время битвы, вы можете[accent] приостановить игру.[]\nВы можете планировать строительство, когда игра стоит на паузе.\n\n[accent]Нажмите кнопку вверху слева, чтобы поставить игру на паузу.
tutorial.unpause = Снова нажмите пробел для снятия паузы.
tutorial.unpause.mobile = Снова нажмите туда для снятия паузы.
tutorial.breaking = Зачастую, блоки приходится разрушать\n[accent]Зажмите ПКМ[], чтобы разрушить блоки в выбранной зоне.[]\n\n[accent]Разрушьте все стены из металлолома слева от вашего ядра.
tutorial.breaking.mobile = Зачастую, блоки приходится разрушать.\n[accent]Выберите режим деконструкции[], после чего нажмите на нужный блок, чтобы разрушить его.\nРазрушьте блоки в выбранной зоне, зажав палец на несколько секунд[], и проведя его в нужном направлении.\nНажмите на галочку, чтобы подтвердить разрушение.\n\n[accent]Разрушьте все стены из металлолома слева от вашего ядра.
tutorial.withdraw = В некоторых ситуациях, необходимо забрать предметы из блоков вручную.\nЧтобы сделать это, [accent]нажмите на блок[], в котором находятся предметы, затем [accent]нажмите на предмет[] в инвентаре.\nМожно забрать несколько предметов [accent]нажатием с зажимом[].\n\n[accent]Заберите немного меди из ядра[]
tutorial.deposit = Положите предметы в блок, перетащив их от своего корабля в нужный блок.\n\n[accent]Перенесите медь обратно в ядро[]
tutorial.waves = [lightgray]Противники[] приближаются.\n\nЗащитите ядро от двух волн. Используйте[accent] левую кнопку мыши[] для стрельбы.\nПостройте больше турелей и буров. Добудьте больше меди.
tutorial.waves.mobile = [lightgray]Противники[] приближаются.\n\nЗащитите ядро от двух волн. Ваш корабль будет автоматически атаковать противника.\nПостройте больше турелей и буров. Добудьте больше меди.
tutorial.launch = Когда вы достигаете определенной волны, вы можете осуществить[accent] запуск ядра[], оставив базу и[accent] перенести ресурсы из ядра.[]\nЭти ресурсы могут быть использованы для изучения новых технологий.\n\n[accent]Нажмите кнопку запуска.
# DO NOT TRANSLATE ANY OF THESE YET! THEY ARE UNFINISHED!
# hint.skip = Skip
# hint.desktopMove = Use [accent][[WASD][] to move.
# hint.zoom = [accent]Scroll[] to zoom in or out.
# hint.mine = Move near the \uf8c4 copper ore and [accent]tap[] it to mine manually.
# hint.desktopShoot = [accent][[Left-click][] to shoot.
# hint.depositItems = To transfer items, drag from your ship to the core.
# hint.respawn = To respawn as a ship, press [accent][[V][].
# hint.respawn.mobile = You have switched control 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.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.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.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.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.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.research = Use the \ue875 [accent]Research[] button to research new technology.
# hint.research.mobile = Use the \ue875 [accent]Research[] button in the \ue88c [accent]Menu[] to research new technology.
# hint.unitControl = Hold [accent][[L-ctrl][] and [accent]click[] to control friendly units or turrets.
# hint.unitControl.mobile = [accent][Double-tap[] to control friendly units or 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.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.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.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.boost = Hold [accent][[L-Shift][] to fly over obstacles with your current unit.\n\nOnly a few ground units have boosters.
# hint.command = Press [accent][[G][] to command nearby units into formation.
# hint.command.mobile = [accent][[Double-tap][] your unit to command nearby units into formation.
# hint.payloadPickup = Press [accent][[[] to pick up small blocks or units.
# hint.payloadPickup.mobile = [accent]Tap and hold[] a small block or unit to pick it up.
# hint.payloadDrop = Press [accent]][] to drop a payload.
# 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.
item.copper.description = Используется во всех типах построек и боеприпасов.
item.copper.details = Медь. Аномально широко распространённый металл на Серпуло. Структурно слабый, если не укреплён.
@@ -1268,7 +1288,7 @@ item.coal.details = Похоже, что это окаменевшее раст
item.titanium.description = Широко используется в транспортировке жидкостей, бурах и авиации.
item.thorium.description = Используется в прочных постройках и как ядерного топлива.
item.scrap.description = Используется в плавильнях и измельчителях для получения других материалов.
item.scrap.details = Остататки старых построек и единиц.
item.scrap.details = Остатки старых построек и единиц.
item.silicon.description = Используется в солнечных панелях, сложной электронике и самонаводящихся боеприпасах для турелей.
item.plastanium.description = Используется в продвинутой авиации, изоляции и осколочных боеприпасах.
item.phase-fabric.description = Используется в продвинутой электронике и самовосстанавливающихся постройках.
@@ -1283,7 +1303,7 @@ liquid.slag.description = Может быть переработан в разд
liquid.oil.description = Используется в производстве продвинутых материалов и как зажигательный боеприпас.
liquid.cryofluid.description = Используется в качестве охлаждающей жидкости для реакторов, турелей и фабрик.
block.resupply-point.description = Снаряжает медными боеприпасами ближайщие боевые единицы. Не совместим с единицами, требующими питания от батареи.
block.resupply-point.description = Снаряжает медными боеприпасами ближайшие боевые единицы. Не совместим с единицами, требующими питания от батареи.
block.armored-conveyor.description = Перемещает предметы вперёд. Не принимает вход по бокам.
block.illuminator.description = Излучает свет.
block.message.description = Сохраняет сообщение для связи между союзниками.
@@ -1341,7 +1361,7 @@ block.router.details = Необходимое зло. Не рекомендуе
block.distributor.description = Равномерно распределяет входящие предметы по 7 выходящим направлениям.
block.overflow-gate.description = Выводит предметы по бокам, только если передний путь заблокирован. Нельзя использовать вплотную к другим затворам или шлюзам.
block.underflow-gate.description = Противоположность избыточного затвора. Выводит предметы вперёд только в том случае, если боковые пути заблокированы. Нельзя использовать вплотную к другим шлюзам или затворам.
block.mass-driver.description = Постройка для дальней транспортировки предметов. Собирает несколько предметов и затем стреляет ими в другуе катапульты.
block.mass-driver.description = Постройка для дальней транспортировки предметов. Собирает несколько предметов и затем стреляет ими в другие катапульты.
block.mechanical-pump.description = Перекачивает и выводит жидкости. Не требует энергию.
block.rotary-pump.description = Перекачивает и выводит жидкости. Требует энергию.
block.thermal-pump.description = Перекачивает и выводит жидкости.
@@ -1368,7 +1388,7 @@ block.solar-panel.description = Обеспечивает небольшое ко
block.solar-panel-large.description = Обеспечивает небольшое количество энергии от солнца. Более эффективный вариант стандартной солнечной панели.
block.thorium-reactor.description = Вырабатывает значительное количество энергии из тория. Требует постоянного охлаждения. Взорвётся с большой силой при недостаточном количестве охлаждающей жидкости.
block.impact-reactor.description = Создаёт огромное количество энергии на пике эффективности. Требуется значительное количество энергии для запуска процесса.
block.mechanical-drill.description = При размещении на соответствующей руде, остоянно выводит предметы в медленном темпе. Способен добывать только базовые ресурсы.
block.mechanical-drill.description = При размещении на соответствующей руде, постоянно выводит предметы в медленном темпе. Способен добывать только базовые ресурсы.
block.pneumatic-drill.description = Улучшенный бур, способный добывать титан. Добывает быстрее, чем механический бур.
block.laser-drill.description = Позволяет добывать еще быстрее с помощью лазерной технологии, но требует энергию. Способен добывать торий.
block.blast-drill.description = Самый продвинутый бур. Требует большое количество энергии.
@@ -1426,7 +1446,7 @@ block.memory-cell.description = Хранит информацию для лог
block.memory-bank.description = Хранит информацию для логического процессора. Большая ёмкость.
block.logic-display.description = Отображает произвольную графику из логического процессора.
block.large-logic-display.description = Отображает произвольную графику из логического процессора.
block.interplanetary-accelerator.description = Массивный рельсотронный ускоритель. Разгоняет ядро до второй космической скорости для межпланетных размещений.
block.interplanetary-accelerator.description = Массивный рельсотронный ускоритель. Ускоряет ядро позволяя преодолеть гравитацию для межпланетного развёртывания
unit.dagger.description = Стреляет стандартными пулями по всем врагам поблизости.
unit.mace.description = Стреляет потоками огня по всем врагам поблизости.

View File

@@ -100,4 +100,5 @@ MEEP of Faith
jalastram (freesound.org)
newlocknew (freesound.org)
dsmolenaers (freesound.org)
Headphaze (freesound.org)
Headphaze (freesound.org)
VolasYouKnow

View File

@@ -317,3 +317,4 @@
63419=legacy-unit-factory-air|block-legacy-unit-factory-air-medium
63418=legacy-unit-factory-ground|block-legacy-unit-factory-ground-medium
63417=interplanetary-accelerator|block-interplanetary-accelerator-medium
63416=basalt-boulder|block-basalt-boulder-medium

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 828 B

After

Width:  |  Height:  |  Size: 831 B

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 675 KiB

After

Width:  |  Height:  |  Size: 667 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 KiB

After

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 437 KiB

After

Width:  |  Height:  |  Size: 440 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

After

Width:  |  Height:  |  Size: 1.4 MiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 MiB

After

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 187 KiB

After

Width:  |  Height:  |  Size: 187 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 438 KiB

After

Width:  |  Height:  |  Size: 438 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

After

Width:  |  Height:  |  Size: 1.4 MiB

View File

@@ -88,7 +88,7 @@ public class Vars implements Loadable{
/** duration of time between turns in ticks */
public static final float turnDuration = 2 * Time.toMinutes;
/** chance of an invasion per turn, 1 = 100% */
public static final float baseInvasionChance = 1f / 45f;
public static final float baseInvasionChance = 1f / 75f;
/** how many turns have to pass before invasions start */
public static final int invasionGracePeriod = 20;
/** min armor fraction damage; e.g. 0.05 = at least 5% damage */

View File

@@ -1,5 +1,7 @@
package mindustry.ai;
import arc.*;
import arc.input.*;
import arc.math.*;
import arc.math.geom.*;
import arc.struct.*;
@@ -15,18 +17,21 @@ import mindustry.gen.*;
import mindustry.type.*;
import mindustry.world.*;
import mindustry.world.blocks.defense.*;
import mindustry.world.blocks.distribution.*;
import mindustry.world.blocks.production.*;
import mindustry.world.blocks.storage.*;
import mindustry.world.blocks.storage.CoreBlock.*;
import static mindustry.Vars.*;
public class BaseAI{
private static final Vec2 axis = new Vec2(), rotator = new Vec2();
private static final float correctPercent = 0.5f;
private static final float step = 5;
private static final int attempts = 4;
private static final float emptyChance = 0.01f;
private static final int timerStep = 0, timerSpawn = 1;
private static final int timerStep = 0, timerSpawn = 1, timerRefreshPath = 2;
private static final int pathStep = 50;
private static final Seq<Tile> tmpTiles = new Seq<>();
private static int correct = 0, incorrect = 0;
@@ -36,6 +41,13 @@ public class BaseAI{
TeamData data;
Interval timer = new Interval(4);
IntSet path = new IntSet();
IntSet calcPath = new IntSet();
@Nullable Tile calcTile;
boolean calculating, startedCalculating;
int calcCount = 0;
int totalCalcs = 0;
public BaseAI(TeamData data){
this.data = data;
}
@@ -53,8 +65,76 @@ public class BaseAI{
}
}
//refresh path
if(!calculating && (timer.get(timerRefreshPath, 3f * Time.toMinutes) || !startedCalculating) && data.hasCore()){
calculating = true;
startedCalculating = true;
calcPath.clear();
}
//didn't find tile in time
if(calculating && calcCount >= world.width() * world.height()){
calculating = false;
calcCount = 0;
calcPath.clear();
totalCalcs ++;
}
//calculate path for units so schematics are not placed on it
if(calculating){
if(calcTile == null){
Vars.spawner.eachGroundSpawn((x, y) -> calcTile = world.tile(x, y));
if(calcTile == null){
calculating = false;
}
}else{
var field = pathfinder.getField(state.rules.waveTeam, Pathfinder.costGround, Pathfinder.fieldCore);
int[][] weights = field.weights;
for(int i = 0; i < pathStep; i++){
int minCost = Integer.MAX_VALUE;
int cx = calcTile.x, cy = calcTile.y;
boolean foundAny = false;
for(Point2 p : Geometry.d4){
int nx = cx + p.x, ny = cy + p.y;
Tile other = world.tile(nx, ny);
if(other != null && weights[nx][ny] < minCost && weights[nx][ny] != -1){
minCost = weights[nx][ny];
calcTile = other;
foundAny = true;
}
}
//didn't find anything, break out of loop, this will trigger a clear later
if(!foundAny){
calcCount = Integer.MAX_VALUE;
break;
}
calcPath.add(calcTile.pos());
//found the end.
if(calcTile.build instanceof CoreBuild b && b.team == state.rules.defaultTeam){
//clean up calculations and flush results
calculating = false;
calcCount = 0;
path.clear();
path.addAll(calcPath);
calcPath.clear();
calcTile = null;
totalCalcs ++;
break;
}
calcCount ++;
}
}
}
//only schedule when there's something to build.
if(data.blocks.isEmpty() && timer.get(timerStep, Mathf.lerp(20f, 4f, data.team.rules().aiTier))){
if(totalCalcs > 0 && data.blocks.isEmpty() && timer.get(timerStep, Mathf.lerp(20f, 4f, data.team.rules().aiTier))){
if(!triedWalls){
tryWalls();
triedWalls = true;
@@ -123,6 +203,13 @@ public class BaseAI{
if(!Build.validPlace(tile.block, data.team, realX, realY, tile.rotation)){
return false;
}
Tile wtile = world.tile(realX, realY);
//may intersect AI path
tmpTiles.clear();
if(tile.block.solid && wtile != null && wtile.getLinkedTilesAs(tile.block, tmpTiles).contains(t -> path.contains(t.pos()))){
return false;
}
}
//make sure at least X% of resource requirements are met
@@ -185,13 +272,18 @@ public class BaseAI{
}
Tile o = world.tile(tile.x + p.x, tile.y + p.y);
if(o != null && (o.block() instanceof PayloadAcceptor || o.block() instanceof PayloadConveyor)){
break;
}
if(o != null && o.team() == data.team && !(o.block() instanceof Wall)){
any = true;
break;
}
}
if(any && Build.validPlace(wall, data.team, tile.x, tile.y, 0)){
tmpTiles.clear();
if(any && Build.validPlace(wall, data.team, tile.x, tile.y, 0) && !tile.getLinkedTilesAs(wall, tmpTiles).contains(t -> path.contains(t.pos()))){
data.blocks.add(new BlockPlan(tile.x, tile.y, (short)0, wall.id, null));
}
}

View File

@@ -1,5 +1,6 @@
package mindustry.ai.types;
import arc.math.*;
import arc.struct.*;
import arc.util.*;
import mindustry.entities.*;
@@ -45,7 +46,7 @@ public class BuilderAI extends AIController{
BuildPlan req = unit.buildPlan();
boolean valid =
(req.tile().build instanceof ConstructBuild && req.tile().<ConstructBuild>bc().cblock == req.block) ||
(req.tile() != null && req.tile().build instanceof ConstructBuild && req.tile().<ConstructBuild>bc().cblock == req.block) ||
(req.breaking ?
Build.validBreak(unit.team(), req.x, req.y) :
Build.validPlace(req.block, unit.team(), req.x, req.y, req.rotation));
@@ -83,8 +84,10 @@ public class BuilderAI extends AIController{
});
}
float rebuildTime = (unit.team.rules().ai ? Mathf.lerp(15f, 2f, unit.team.rules().aiTier) : 2f) * 60f;
//find new request
if(!unit.team.data().blocks.isEmpty() && following == null && timer.get(timerTarget3, 60 * 2f)){
if(!unit.team.data().blocks.isEmpty() && following == null && timer.get(timerTarget3, rebuildTime)){
Queue<BlockPlan> blocks = unit.team.data().blocks;
BlockPlan block = blocks.first();

View File

@@ -39,7 +39,7 @@ public class Blocks implements ContentList{
//environment
air, spawn, cliff, deepwater, water, taintedWater, tar, slag, stone, craters, charr, sand, darksand, dirt, mud, ice, snow, darksandTaintedWater, space,
dacite, stoneWall, dirtWall, sporeWall, iceWall, daciteWall, sporePine, snowPine, pine, shrubs, whiteTree, whiteTreeDead, sporeCluster,
iceSnow, sandWater, darksandWater, duneWall, sandWall, moss, sporeMoss, shale, shaleWall, shaleBoulder, sandBoulder, daciteBoulder, boulder, snowBoulder, grass, salt,
iceSnow, sandWater, darksandWater, duneWall, sandWall, moss, sporeMoss, shale, shaleWall, shaleBoulder, sandBoulder, daciteBoulder, boulder, snowBoulder, basaltBoulder, grass, salt,
metalFloor, metalFloorDamaged, metalFloor2, metalFloor3, metalFloor5, basalt, magmarock, hotrock, snowWall, saltWall,
darkPanel1, darkPanel2, darkPanel3, darkPanel4, darkPanel5, darkPanel6, darkMetal,
pebbles, tendrils,
@@ -363,7 +363,7 @@ public class Blocks implements ContentList{
sandWall = new StaticWall("sand-wall"){{
variants = 2;
sandWater.asFloor().wall = this;
sandWater.asFloor().wall = water.asFloor().wall = deepwater.asFloor().wall = this;
}};
saltWall = new StaticWall("salt-wall");
@@ -415,6 +415,10 @@ public class Blocks implements ContentList{
variants = 2;
}};
basaltBoulder = new Boulder("basalt-boulder"){{
variants = 2;
}};
moss = new Floor("moss"){{
variants = 3;
attributes.set(Attribute.spores, 0.15f);
@@ -1153,7 +1157,7 @@ public class Blocks implements ContentList{
}};
battery = new Battery("battery"){{
requirements(Category.power, with(Items.copper, 4, Items.lead, 20));
requirements(Category.power, with(Items.copper, 5, Items.lead, 20));
consumes.powerBuffered(4000f);
}};
@@ -1191,7 +1195,7 @@ public class Blocks implements ContentList{
size = 2;
ambientSound = Sounds.smelter;
ambientSoundVolume = 0.05f;
ambientSoundVolume = 0.06f;
}};
differentialGenerator = new SingleTypeGenerator("differential-generator"){{
@@ -1354,7 +1358,7 @@ public class Blocks implements ContentList{
//region storage
coreShard = new CoreBlock("core-shard"){{
requirements(Category.effect, BuildVisibility.editorOnly, with(Items.copper, 1000, Items.lead, 1000));
requirements(Category.effect, BuildVisibility.editorOnly, with(Items.copper, 1000, Items.lead, 800));
alwaysUnlocked = true;
unitType = UnitTypes.alpha;
@@ -1373,7 +1377,7 @@ public class Blocks implements ContentList{
itemCapacity = 9000;
size = 4;
unitCapModifier = 14;
unitCapModifier = 16;
researchCostMultiplier = 0.04f;
}};
@@ -1385,7 +1389,7 @@ public class Blocks implements ContentList{
itemCapacity = 13000;
size = 5;
unitCapModifier = 20;
unitCapModifier = 24;
researchCostMultiplier = 0.05f;
}};
@@ -1513,12 +1517,12 @@ public class Blocks implements ContentList{
lancer = new ChargeTurret("lancer"){{
requirements(Category.turret, with(Items.copper, 25, Items.lead, 50, Items.silicon, 45));
range = 155f;
chargeTime = 50f;
range = 165f;
chargeTime = 40f;
chargeMaxDelay = 30f;
chargeEffects = 7;
recoilAmount = 2f;
reloadTime = 90f;
reloadTime = 80f;
cooldown = 0.03f;
powerUse = 6f;
shootShake = 2f;
@@ -1540,6 +1544,7 @@ public class Blocks implements ContentList{
lifetime = 16f;
drawSize = 400f;
collidesAir = false;
length = 173f;
}};
}};
@@ -1553,7 +1558,7 @@ public class Blocks implements ContentList{
reloadTime = 35f;
shootCone = 40f;
rotateSpeed = 8f;
powerUse = 3f;
powerUse = 3.3f;
targetAir = false;
range = 90f;
shootEffect = Fx.lightningShoot;

View File

@@ -72,6 +72,7 @@ public class Items implements ContentList{
}};
surgeAlloy = new Item("surge-alloy", Color.valueOf("f3e979")){{
cost = 1.2f;
}};
sporePod = new Item("spore-pod", Color.valueOf("7457ce")){{

View File

@@ -24,10 +24,11 @@ public class SectorPresets implements ContentList{
saltFlats = new SectorPreset("saltFlats", serpulo, 101){{
difficulty = 5;
useAI = false;
}};
frozenForest = new SectorPreset("frozenForest", serpulo, 86){{
captureWave = 20;
captureWave = 15;
difficulty = 2;
}};

View File

@@ -121,7 +121,7 @@ public class TechTree implements ContentList{
});
node(waterExtractor, () -> {
node(waterExtractor, Seq.with(new SectorComplete(saltFlats)), () -> {
node(oilExtractor, () -> {
});
@@ -198,10 +198,10 @@ public class TechTree implements ContentList{
});
});
});
});
node(illuminator, () -> {
node(illuminator, () -> {
});
});
});
@@ -421,7 +421,7 @@ public class TechTree implements ContentList{
});
node(additiveReconstructor, Seq.with(new SectorComplete(biomassFacility)), () -> {
node(multiplicativeReconstructor, Seq.with(new SectorComplete(overgrowth)), () -> {
node(multiplicativeReconstructor, () -> {
node(exponentialReconstructor, () -> {
node(tetrativeReconstructor, () -> {
@@ -484,6 +484,7 @@ public class TechTree implements ContentList{
new Research(bryde),
new Research(spectre),
new Research(launchPad),
new Research(massDriver),
new Research(impactReactor),
new Research(additiveReconstructor),
new Research(exponentialReconstructor)
@@ -507,7 +508,9 @@ public class TechTree implements ContentList{
node(saltFlats, Seq.with(
new SectorComplete(windsweptIslands),
new Research(commandCenter),
new Research(groundFactory),
new Research(additiveReconstructor),
new Research(airFactory),
new Research(door),
new Research(waterExtractor)
@@ -551,7 +554,9 @@ public class TechTree implements ContentList{
node(nuclearComplex, Seq.with(
new SectorComplete(fungalPass),
new Research(thermalGenerator),
new Research(laserDrill)
new Research(laserDrill),
new Research(Items.plastanium),
new Research(swarmer)
), () -> {
});
@@ -613,7 +618,9 @@ public class TechTree implements ContentList{
});
nodeProduce(Liquids.oil, () -> {
nodeProduce(Items.plastanium, () -> {
});
});
});
});
@@ -641,7 +648,7 @@ public class TechTree implements ContentList{
static TechNode node(UnlockableContent content, ItemStack[] requirements, Seq<Objective> objectives, Runnable children){
TechNode node = new TechNode(context, content, requirements);
if(objectives != null){
node.objectives = objectives;
node.objectives.addAll(objectives);
}
TechNode prev = context;

View File

@@ -556,7 +556,7 @@ public class UnitTypes implements ContentList{
range = 40f;
weapons.add(new Weapon(){{
reload = 12f;
reload = 24f;
shootCone = 180f;
ejectEffect = Fx.none;
shootSound = Sounds.explosion;
@@ -1321,7 +1321,7 @@ public class UnitTypes implements ContentList{
sprite = "large-bomb";
width = height = 120/4f;
range = 30f;
maxRange = 30f;
ignoreRotation = true;
backColor = Pal.heal;
@@ -1413,12 +1413,12 @@ public class UnitTypes implements ContentList{
ejectEffect = Fx.casing1;
shootSound = Sounds.missile;
bullet = new MissileBulletType(2.7f, 12, "missile"){{
keepVelocity = true;
width = 8f;
height = 8f;
shrinkY = 0f;
drag = -0.003f;
homingRange = 60f;
keepVelocity = false;
splashDamageRadius = 25f;
splashDamage = 10f;
lifetime = 80f;

View File

@@ -6,6 +6,7 @@ import arc.audio.*;
import arc.graphics.g2d.*;
import arc.input.*;
import arc.math.*;
import arc.scene.style.*;
import arc.scene.ui.*;
import arc.struct.*;
import arc.util.*;
@@ -16,14 +17,17 @@ import mindustry.core.GameState.*;
import mindustry.entities.*;
import mindustry.game.EventType.*;
import mindustry.game.*;
import mindustry.game.Objectives.*;
import mindustry.game.Saves.*;
import mindustry.gen.*;
import mindustry.input.*;
import mindustry.io.*;
import mindustry.io.SaveIO.*;
import mindustry.maps.*;
import mindustry.maps.Map;
import mindustry.net.*;
import mindustry.type.*;
import mindustry.ui.*;
import mindustry.ui.dialogs.*;
import mindustry.world.*;
@@ -124,10 +128,18 @@ public class Control implements ApplicationListener, Loadable{
}
}));
Events.on(UnlockEvent.class, e -> ui.hudfrag.showUnlock(e.content));
Events.on(UnlockEvent.class, e -> {
ui.hudfrag.showUnlock(e.content);
checkAutoUnlocks();
if(e.content instanceof SectorPreset){
for(TechNode node : TechTree.all){
if(!node.content.unlocked() && node.objectives.contains(o -> o instanceof SectorComplete sec && sec.preset == e.content) && !node.objectives.contains(o -> !o.complete())){
ui.hudfrag.showToast(new TextureRegionDrawable(node.content.icon(Cicon.large)), bundle.get("available"));
}
}
}
});
Events.on(SectorCaptureEvent.class, e -> {
@@ -223,7 +235,7 @@ public class Control implements ApplicationListener, Loadable{
for(TechNode node : TechTree.all){
if(!node.content.unlocked() && node.requirements.length == 0 && !node.objectives.contains(o -> !o.complete())){
node.content.unlocked();
node.content.unlock();
}
}
}
@@ -311,8 +323,17 @@ public class Control implements ApplicationListener, Loadable{
return;
}
//set spawn for sector damage to use
Tile spawn = world.tile(sector.info.spawnPosition);
spawn.setBlock(Blocks.coreShard, state.rules.defaultTeam);
//add extra damage.
SectorDamage.apply(1f);
//reset wave so things are more fair
state.wave = 1;
//set up default wave time
state.wavetime = state.rules.waveSpacing * 2f;
//reset win wave??
state.rules.winWave = state.rules.attackMode ? -1 : sector.preset != null ? sector.preset.captureWave : 40;
@@ -320,8 +341,8 @@ public class Control implements ApplicationListener, Loadable{
//kill all units, since they should be dead anyway
Groups.unit.clear();
Groups.fire.clear();
Groups.puddle.clear();
Tile spawn = world.tile(sector.info.spawnPosition);
Schematics.placeLaunchLoadout(spawn.x, spawn.y);
//set up camera/player locations

View File

@@ -33,9 +33,8 @@ public class GameState{
/** Current game state. */
private State state = State.menu;
//TODO optimize
public Unit boss(){
return Groups.unit.find(u -> u.isBoss() && u.team == rules.waveTeam);
return teams.boss;
}
public void set(State astate){

View File

@@ -107,7 +107,7 @@ public class Logic implements ApplicationListener{
if(!(state.getSector().preset != null && !state.getSector().preset.useAI)){
state.rules.waveTeam.rules().ai = true;
}
state.rules.waveTeam.rules().aiTier = state.getSector().threat;
state.rules.waveTeam.rules().aiTier = state.getSector().threat * 0.8f;
state.rules.waveTeam.rules().infiniteResources = true;
}

View File

@@ -12,5 +12,6 @@ class GroupDefs<G>{
@GroupDef(value = Syncc.class, mapping = true) G sync;
@GroupDef(value = Drawc.class) G draw;
@GroupDef(value = Firec.class) G fire;
@GroupDef(value = Puddlec.class) G puddle;
@GroupDef(value = WeatherStatec.class) G weather;
}

View File

@@ -12,6 +12,8 @@ import mindustry.graphics.*;
import mindustry.type.*;
import mindustry.ui.*;
import static mindustry.Vars.*;
public class UnitSpawnAbility extends Ability{
public UnitType type;
public float spawnTime = 60f, spawnX, spawnY;
@@ -31,7 +33,7 @@ public class UnitSpawnAbility extends Ability{
@Override
public void update(Unit unit){
timer += Time.delta;
timer += Time.delta * state.rules.unitBuildSpeedMultiplier;
if(timer >= spawnTime && Units.canCreate(unit.team, type)){
float x = unit.x + Angles.trnsx(unit.rotation, spawnY, spawnX), y = unit.y + Angles.trnsy(unit.rotation, spawnY, spawnX);

View File

@@ -78,7 +78,7 @@ public abstract class BulletType extends Content{
* Do not change unless you know what you're doing. */
public boolean backMove = true;
/** Bullet range override. */
public float range = -1f;
public float maxRange = -1f;
/** % of block health healed **/
public float healPercent = 0f;
/** whether to make fire on impact */
@@ -154,7 +154,7 @@ public abstract class BulletType extends Content{
/** Returns maximum distance the bullet this bullet type has can travel. */
public float range(){
return Math.max(speed * lifetime * (1f - drag), range);
return Math.max(speed * lifetime * (1f - drag), maxRange);
}
public boolean collides(Bullet bullet, Building tile){
@@ -317,11 +317,11 @@ public abstract class BulletType extends Content{
}
public Bullet create(Bullet parent, float x, float y, float angle){
return create(parent.owner(), parent.team, x, y, angle);
return create(parent.owner, parent.team, x, y, angle);
}
public Bullet create(Bullet parent, float x, float y, float angle, float velocityScl, float lifeScale){
return create(parent.owner(), parent.team, x, y, angle, velocityScl, lifeScale);
return create(parent.owner, parent.team, x, y, angle, velocityScl, lifeScale);
}
public Bullet create(Bullet parent, float x, float y, float angle, float velocityScl){

View File

@@ -61,7 +61,7 @@ public class SapBulletType extends BulletType{
b.data = target;
if(target != null){
float result = Math.min(target.health(), damage);
float result = Math.max(Math.min(target.health(), damage), 0);
if(b.owner instanceof Healthc h){
h.heal(result * sapStrength);

View File

@@ -139,7 +139,7 @@ abstract class BuilderComp implements Posc, Teamc, Rotc{
boolean shouldSkip(BuildPlan request, @Nullable Building core){
//requests that you have at least *started* are considered
if(state.rules.infiniteResources || team().rules().infiniteResources || request.breaking || core == null) return false;
return (request.stuck && !core.items.has(request.block.requirements)) || (Structs.contains(request.block.requirements, i -> !core.items.has(i.item)) && !request.initialized);
return (request.stuck && !core.items.has(request.block.requirements)) || (Structs.contains(request.block.requirements, i -> !core.items.has(i.item) && Mathf.round(i.amount * state.rules.buildCostMultiplier) > 0) && !request.initialized);
}
void removeBuild(int x, int y, boolean breaking){

View File

@@ -397,8 +397,8 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I
/** Actually destroys the unit, removing it and creating explosions. **/
public void destroy(){
float explosiveness = 2f + item().explosiveness * stack().amount / 2f;
float flammability = item().flammability * stack().amount / 2f;
float explosiveness = 2f + item().explosiveness * stack().amount / 2.4f;
float flammability = item().flammability * stack().amount / 2.4f;
Damage.dynamicExplosion(x, y, flammability, explosiveness, 0f, bounds() / 2f, Pal.darkFlame, state.rules.damageExplosions);
float shake = hitSize / 3f;

View File

@@ -48,7 +48,8 @@ public class Objectives{
}
}
public static class SectorComplete extends SectorObjective{
public static class SectorComplete implements Objective{
public SectorPreset preset;
public SectorComplete(SectorPreset zone){
this.preset = zone;
@@ -67,11 +68,6 @@ public class Objectives{
}
}
//TODO merge
public abstract static class SectorObjective implements Objective{
public SectorPreset preset;
}
/** Defines a specific objective for a game. */
public interface Objective{
@@ -86,9 +82,5 @@ public class Objectives{
default void build(Table table){
}
default SectorPreset zone(){
return this instanceof SectorObjective ? ((SectorObjective)this).preset : null;
}
}
}

View File

@@ -127,6 +127,9 @@ public class Schematics implements Loadable{
newSchematic.tags.putAll(target.tags);
newSchematic.file = target.file;
loadouts.each((block, list) -> list.remove(target));
checkLoadout(target, true);
try{
write(newSchematic, target.file);
}catch(Exception e){
@@ -134,6 +137,8 @@ public class Schematics implements Loadable{
Log.err(e);
ui.showException(e);
}
}
private @Nullable Schematic loadFile(Fi file){

View File

@@ -26,6 +26,8 @@ public class Teams{
public Seq<TeamData> active = new Seq<>();
/** Teams with block or unit presence. */
public Seq<TeamData> present = new Seq<>(TeamData.class);
/** Current boss unit. */
public @Nullable Unit boss;
public Teams(){
active.add(get(Team.crux));
@@ -144,6 +146,7 @@ public class Teams{
public void updateTeamStats(){
present.clear();
boss = null;
for(Team team : Team.all){
TeamData data = team.data();
@@ -178,6 +181,10 @@ public class Teams{
data.units.add(unit);
data.presentFlag = true;
if(unit.team == state.rules.waveTeam && unit.isBoss()){
boss = unit;
}
if(data.unitsByType == null || data.unitsByType.length <= unit.type.id){
data.unitsByType = new Seq[content.units().size];
}

View File

@@ -208,6 +208,8 @@ public class Universe{
//add production, making sure that it's capped
sector.info.production.each((item, stat) -> sector.info.items.add(item, Math.min((int)(stat.mean * newSecondsPassed * scl), sector.info.storageCapacity - sector.info.items.get(item))));
//prevent negative values with unloaders
sector.info.items.checkNegative();
sector.saveInfo();
}
@@ -215,8 +217,8 @@ public class Universe{
//queue random invasions
if(!sector.isAttacked() && turn > invasionGracePeriod && sector.info.hasSpawns){
//invasion chance depends on # of nearby bases
if(Mathf.chance(baseInvasionChance * sector.near().count(Sector::hasEnemyBase))){
int waveMax = Math.max(sector.info.winWave, sector.isBeingPlayed() ? state.wave : sector.info.wave + sector.info.wavesPassed) + Mathf.random(2, 5) * 5;
if(Mathf.chance(baseInvasionChance * Math.min(sector.near().count(Sector::hasEnemyBase), 1))){
int waveMax = Math.max(sector.info.winWave, sector.isBeingPlayed() ? state.wave : sector.info.wave + sector.info.wavesPassed) + Mathf.random(2, 4) * 5;
//assign invasion-related things
if(sector.isBeingPlayed()){

View File

@@ -10,7 +10,7 @@ import mindustry.type.*;
import static mindustry.content.UnitTypes.*;
public class Waves{
public static final int waveVersion = 3;
public static final int waveVersion = 4;
private Seq<SpawnGroup> spawns;
@@ -277,7 +277,7 @@ public class Waves{
int cap = 150;
float shieldStart = 30, shieldsPerWave = 20 + difficulty*30f;
float[] scaling = {1, 1, 1.5f, 3f, 4f};
float[] scaling = {1, 1.5f, 3f, 4f, 5f};
Intc createProgression = start -> {
//main sequence
@@ -286,7 +286,7 @@ public class Waves{
for(int i = start; i < cap;){
int f = i;
int next = rand.random(8, 16) + (int)Mathf.lerp(4f, 0f, difficulty) + curTier * 4;
int next = rand.random(8, 16) + (int)Mathf.lerp(5f, 0f, difficulty) + curTier * 4;
float shieldAmount = Math.max((i - shieldStart) * shieldsPerWave, 0);
int space = start == 0 ? 1 : rand.random(1, 2);
@@ -298,7 +298,7 @@ public class Waves{
begin = f;
end = f + next >= cap ? never : f + next;
max = 13;
unitScaling = (difficulty < 0.4f ? rand.random(2.5f, 4f) : rand.random(1f, 4f)) * scaling[ctier];
unitScaling = (difficulty < 0.4f ? rand.random(2.5f, 5f) : rand.random(1f, 4f)) * scaling[ctier];
shields = shieldAmount;
shieldScaling = shieldsPerWave;
spacing = space;
@@ -310,7 +310,7 @@ public class Waves{
begin = f + next - 1;
end = f + next + rand.random(6, 10);
max = 6;
unitScaling = rand.random(1f, 2f);
unitScaling = rand.random(2f, 4f);
spacing = rand.random(2, 4);
shields = shieldAmount/2f;
shieldScaling = shieldsPerWave;
@@ -340,10 +340,10 @@ public class Waves{
step += (int)(rand.random(15, 30) * Mathf.lerp(1f, 0.5f, difficulty));
}
int bossWave = (int)(rand.random(50, 70) * Mathf.lerp(1f, 0.5f, difficulty));
int bossWave = (int)(rand.random(50, 70) * Mathf.lerp(1f, 0.7f, difficulty));
int bossSpacing = (int)(rand.random(25, 40) * Mathf.lerp(1f, 0.6f, difficulty));
int bossTier = difficulty < 0.5 ? 3 : 4;
int bossTier = difficulty < 0.6 ? 3 : 4;
//main boss progression
out.add(new SpawnGroup(Structs.random(species)[bossTier]){{
@@ -411,7 +411,7 @@ public class Waves{
}
//shift back waves on higher difficulty for a harder start
int shift = Math.max((int)(difficulty * 15 - 5), 0);
int shift = Math.max((int)(difficulty * 14 - 5), 0);
for(SpawnGroup group : out){
group.begin -= shift;

View File

@@ -171,7 +171,7 @@ public class OverlayRenderer{
Draw.reset();
Building tile = world.buildWorld(v.x, v.y);
if(tile != null && tile.interactable(player.team()) && tile.acceptStack(player.unit().item(), player.unit().stack.amount, player.unit()) > 0 && player.within(tile, itemTransferRange)){
if(input.canDropItem() && tile != null && tile.interactable(player.team()) && tile.acceptStack(player.unit().item(), player.unit().stack.amount, player.unit()) > 0 && player.within(tile, itemTransferRange)){
Lines.stroke(3f, Pal.gray);
Lines.square(tile.x, tile.y, tile.block.size * tilesize / 2f + 3 + Mathf.absin(Time.time(), 5f, 1f));
Lines.stroke(1f, Pal.place);

View File

@@ -58,6 +58,7 @@ public enum Binding implements KeyBind{
fullscreen(KeyCode.f11),
pause(KeyCode.space),
minimap(KeyCode.m),
research(KeyCode.b),
planet_map(KeyCode.n),
toggle_menus(KeyCode.c),
screenshot(KeyCode.p),

View File

@@ -240,6 +240,7 @@ public class DesktopInput extends InputHandler{
if(state.isGame() && !scene.hasDialog() && !(scene.getKeyboardFocus() instanceof TextField)){
if(Core.input.keyTap(Binding.minimap)) ui.minimapfrag.toggle();
if(Core.input.keyTap(Binding.planet_map) && state.isCampaign()) ui.planet.toggle();
if(Core.input.keyTap(Binding.research) && state.isCampaign()) ui.research.toggle();
}
if(state.isMenu() || Core.scene.hasDialog()) return;
@@ -484,7 +485,7 @@ public class DesktopInput extends InputHandler{
deleting = true;
}else if(selected != null){
//only begin shooting if there's no cursor event
if(!tileTapped(selected.build) && !tryTapPlayer(Core.input.mouseWorld().x, Core.input.mouseWorld().y) && !player.unit().activelyBuilding() && !droppingItem &&
if(!tryTapPlayer(Core.input.mouseWorld().x, Core.input.mouseWorld().y) && !tileTapped(selected.build) && !player.unit().activelyBuilding() && !droppingItem &&
!tryBeginMine(selected) && player.unit().mineTile == null && !Core.scene.hasKeyboard()){
player.shooting = shouldShoot;
}

View File

@@ -47,6 +47,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
/** Maximum line length. */
final static int maxLength = 100;
final static Rect r1 = new Rect(), r2 = new Rect();
final static Seq<Point2> tmpPoints = new Seq<>(), tmpPoints2 = new Seq<>();
public final OverlayFragment frag = new OverlayFragment();
@@ -1056,6 +1057,10 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
return droppingItem;
}
public boolean canDropItem(){
return droppingItem && !canTapPlayer(Core.input.mouseWorldX(), Core.input.mouseWorldY());
}
public void tryDropItems(@Nullable Building tile, float x, float y){
if(!droppingItem || player.unit().stack.amount <= 0 || canTapPlayer(x, y) || state.isPaused() ){
droppingItem = false;
@@ -1160,27 +1165,39 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
points = Placement.normalizeLine(startX, startY, endX, endY);
}
if(block instanceof PowerNode){
Seq<Point2> skip = new Seq<>();
if(block instanceof PowerNode node){
var base = tmpPoints2;
var result = tmpPoints.clear();
for(int i = 1; i < points.size; i++){
int overlaps = 0;
Point2 point = points.get(i);
base.selectFrom(points, p -> p == points.first() || p == points.peek() || Build.validPlace(block, player.team(), p.x, p.y, rotation, false));
boolean addedLast = false;
//check with how many powernodes the *next* tile will overlap
for(int j = 0; j < i; j++){
if(!skip.contains(points.get(j)) && ((PowerNode)block).overlaps(world.tile(point.x, point.y), world.tile(points.get(j).x, points.get(j).y))){
overlaps++;
outer:
for(int i = 0; i < base.size;){
var point = base.get(i);
result.add(point);
if(i == base.size - 1) addedLast = true;
//find the furthest node that overlaps this one
for(int j = base.size - 1; j > i; j--){
var other = base.get(j);
boolean over = node.overlaps(world.tile(point.x, point.y), world.tile(other.x, other.y));
if(over){
//add node to list and start searching for node that overlaps the next one
i = j;
continue outer;
}
}
//if it's more than one, it can bridge the gap
if(overlaps > 1){
skip.add(points.get(i-1));
}
//if it got here, that means nothing was found. try to proceed to the next node anyway
i ++;
}
//remove skipped points
points.removeAll(skip);
if(!addedLast) result.add(base.peek());
points.clear();
points.addAll(result);
}
float angle = Angles.angle(startX, startY, endX, endY);

View File

@@ -252,7 +252,7 @@ public class MobileInput extends InputHandler implements GestureListener{
selectRequests.clear();
mode = none;
block = null;
}).width(155f).margin(12f);
}).width(155f).height(50f).margin(12f);
});
group.fill(t -> {

View File

@@ -241,35 +241,10 @@ public class Placement{
}
public static class NormalizeDrawResult{
float x, y, x2, y2;
public float x, y, x2, y2;
}
public static class NormalizeResult{
public int x, y, x2, y2, rotation;
boolean isX(){
return Math.abs(x2 - x) > Math.abs(y2 - y);
}
/**
* Returns length of greater edge of the selection.
*/
int getLength(){
return Math.max(x2 - x, y2 - y);
}
/**
* Returns the X position of a specific index along this area as a line.
*/
int getScaledX(int i){
return x + (x2 - x > y2 - y ? i : 0);
}
/**
* Returns the Y position of a specific index along this area as a line.
*/
int getScaledY(int i){
return y + (x2 - x > y2 - y ? 0 : i);
}
}
}

View File

@@ -286,7 +286,7 @@ public abstract class SaveVersion extends SaveFileReader{
public void writeEntities(DataOutput stream) throws IOException{
//write team data with entities.
Seq<TeamData> data = state.teams.getActive();
Seq<TeamData> data = state.teams.getActive().and(Team.sharded.data());
stream.writeInt(data.size);
for(TeamData team : data){
stream.writeInt(team.team.id);

View File

@@ -302,6 +302,14 @@ public class Maps{
flooronto = Blocks.sand;
block = Blocks.sandBoulder;
}},
new ScatterFilter(){{
flooronto = Blocks.darksand;
block = Blocks.basaltBoulder;
}},
new ScatterFilter(){{
flooronto = Blocks.basalt;
block = Blocks.basaltBoulder;
}},
new ScatterFilter(){{
flooronto = Blocks.dacite;
block = Blocks.daciteBoulder;

View File

@@ -21,7 +21,7 @@ import mindustry.world.blocks.storage.*;
import static mindustry.Vars.*;
public class SectorDamage{
public static final int maxRetWave = 30, maxWavesSimulated = 50;
public static final int maxRetWave = 40, maxWavesSimulated = 50;
//direct damage is for testing only
private static final boolean direct = false, rubble = true;
@@ -111,23 +111,26 @@ public class SectorDamage{
float damage = getDamage(state.rules.sector.info);
//scaled damage has a power component to make it seem a little more realistic (as systems fail, enemy capturing gets easier and easier)
float scaled = Mathf.pow(damage, 1.6f);
float scaled = Mathf.pow(damage, 1.2f);
//apply damage to units
float unitDamage = damage * state.rules.sector.info.sumHealth;
Tile spawn = spawner.getFirstSpawn();
//damage only units near the spawn point
if(spawn != null){
Seq<Unit> allies = new Seq<>();
float sumUnitHealth = 0f;
for(Unit ally : Groups.unit){
if(ally.team == state.rules.defaultTeam && ally.within(spawn, state.rules.dropZoneRadius * 2.5f)){
allies.add(ally);
sumUnitHealth += ally.health;
}
}
allies.sort(u -> u.dst2(spawn));
//apply damage to units
float unitDamage = damage * sumUnitHealth;
//damage units one by one, not uniformly
for(var u : allies){
if(u.health < unitDamage){
@@ -335,9 +338,9 @@ public class SectorDamage{
info.waveDpsSlope = reg.slope;
//enemy units like to aim for a lot of non-essential things, so increase resulting health slightly
info.sumHealth = sumHealth * 1.3f;
info.sumHealth = sumHealth * 1.2f;
//players tend to have longer range units/turrets, so assume DPS is higher
info.sumDps = sumDps * 1.3f;
info.sumDps = sumDps * 1.2f;
info.sumRps = sumRps;
info.wavesSurvived = getWavesSurvived(info);
@@ -348,13 +351,12 @@ public class SectorDamage{
Queue<Tile> frontier = new Queue<>();
float[][] values = new float[tiles.width][tiles.height];
float damage = fraction*80; //arbitrary damage value
//phase one: find all spawnpoints
for(Tile tile : tiles){
if((tile.block() instanceof CoreBlock && tile.team() == state.rules.waveTeam) || tile.overlay() == Blocks.spawn){
frontier.add(tile);
values[tile.x][tile.y] = damage;
values[tile.x][tile.y] = fraction * 26;
}
}
@@ -368,14 +370,16 @@ public class SectorDamage{
int radius = 3;
//only penetrate a certain % by health, not by distance
float totalHealth = damage >= 1f ? 1f : path.sumf(t -> {
float totalHealth = fraction >= 1f ? 1f : path.sumf(t -> {
float s = 0;
for(int dx = -radius; dx <= radius; dx++){
for(int dy = -radius; dy <= radius; dy++){
int wx = dx + t.x, wy = dy + t.y;
if(wx >= 0 && wy >= 0 && wx < world.width() && wy < world.height() && Mathf.within(dx, dy, radius)){
Tile other = world.rawTile(wx, wy);
s += other.team() == state.rules.defaultTeam ? other.build.health / other.block().size : 0f;
if(!(other.block() instanceof CoreBlock)){
s += other.team() == state.rules.defaultTeam ? other.build.health / other.block().size : 0f;
}
}
}
}
@@ -385,7 +389,7 @@ public class SectorDamage{
float healthCount = 0;
out:
for(int i = 0; i < path.size && (healthCount < targetHealth || damage >= 1f); i++){
for(int i = 0; i < path.size && (healthCount < targetHealth || fraction >= 1f); i++){
Tile t = path.get(i);
for(int dx = -radius; dx <= radius; dx++){
@@ -405,7 +409,7 @@ public class SectorDamage{
removal.add(other.build);
if(healthCount >= targetHealth && damage < 0.999f){
if(healthCount >= targetHealth && fraction < 0.999f){
break out;
}
}
@@ -430,10 +434,10 @@ public class SectorDamage{
}
}
float falloff = (damage) / (Math.max(tiles.width, tiles.height) * Mathf.sqrt2);
float falloff = (fraction) / (Math.max(tiles.width, tiles.height) * Mathf.sqrt2);
int peak = 0;
if(damage > 0.1f){
if(fraction > 0.15f){
//phase two: propagate the damage
while(!frontier.isEmpty()){
peak = Math.max(peak, frontier.size);

View File

@@ -7,7 +7,7 @@ import mindustry.world.*;
import static mindustry.maps.filters.FilterOption.*;
public class ScatterFilter extends GenerateFilter{
protected float chance = 0.014f;
protected float chance = 0.013f;
protected Block flooronto = Blocks.air, floor = Blocks.air, block = Blocks.air;
@Override

View File

@@ -5,6 +5,7 @@ import arc.math.*;
import arc.math.geom.*;
import arc.struct.*;
import arc.util.*;
import mindustry.ai.*;
import mindustry.ai.BaseRegistry.*;
import mindustry.content.*;
import mindustry.game.*;
@@ -54,7 +55,7 @@ public class BaseGenerator{
BasePart coreschem = bases.cores.getFrac(difficulty);
int passes = difficulty < 0.4 ? 1 : difficulty < 0.8 ? 2 : 3;
Block wall = wallsSmall.getFrac(difficulty), wallLarge = wallsLarge.getFrac(difficulty);
Block wall = wallsSmall.getFrac(difficulty * 0.91f), wallLarge = wallsLarge.getFrac(difficulty * 0.91f);
for(Tile tile : cores){
tile.clearOverlay();
@@ -146,6 +147,15 @@ public class BaseGenerator{
}
});
}
//clear path for ground units
for(Tile tile : cores){
Astar.pathfind(tile, spawn, t -> t.team() == state.rules.waveTeam && !t.within(tile, 25f * 8) ? 100000 : t.floor().hasSurface() ? 1 : 10, t -> !t.block().isStatic()).each(t -> {
if(t.team() == state.rules.waveTeam && !t.within(tile, 25f * 8)){
t.setBlock(Blocks.air);
}
});
}
}
public void postGenerate(){

View File

@@ -10,7 +10,9 @@ import mindustry.ai.*;
import mindustry.ai.BaseRegistry.*;
import mindustry.content.*;
import mindustry.game.*;
import mindustry.graphics.g3d.PlanetGrid.*;
import mindustry.maps.generators.*;
import mindustry.type.*;
import mindustry.world.*;
import static mindustry.Vars.*;
@@ -59,6 +61,43 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{
return (Mathf.pow((float)noise.octaveNoise3D(7, 0.5f, 1f/3f, position.x, position.y, position.z), 2.3f) + waterOffset) / (1f + waterOffset);
}
@Override
public void generateSector(Sector sector){
//these always have bases
if(sector.id == 154 || sector.id == 0){
sector.generateEnemyBase = true;
return;
}
Ptile tile = sector.tile;
boolean any = false;
float poles = Math.abs(tile.v.y);
float noise = Noise.snoise3(tile.v.x, tile.v.y, tile.v.z, 0.001f, 0.58f);
if(noise + poles/7.1 > 0.12 && poles > 0.23){
any = true;
}
if(noise < 0.16){
for(Ptile other : tile.tiles){
var osec = sector.planet.getSector(other);
//no sectors near start sector!
if(
osec.id == sector.planet.startSector || //near starting sector
osec.generateEnemyBase && poles < 0.85 || //near other base
(sector.preset != null && noise < 0.11) //near preset
){
return;
}
}
}
sector.generateEnemyBase = any;
}
@Override
public float getHeight(Vec3 position){
float height = rawHeight(position);
@@ -158,7 +197,7 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{
//check positions on the map to place the player spawn. this needs to be in the corner of the map
Room spawn = null;
Seq<Room> enemies = new Seq<>();
int enemySpawns = rand.chance(0.3) ? 2 : 1;
int enemySpawns = rand.random(1, Math.max((int)(sector.threat * 4), 1));
int offset = rand.nextInt(360);
float length = width/2.55f - rand.random(13, 23);
int angleStep = 5;
@@ -237,7 +276,7 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{
FloatSeq frequencies = new FloatSeq();
for(int i = 0; i < ores.size; i++){
frequencies.add(rand.random(-0.09f, 0.01f) - i * 0.01f);
frequencies.add(rand.random(-0.1f, 0.01f) - i * 0.01f + poles * 0.04f);
}
pass((x, y) -> {

View File

@@ -830,7 +830,7 @@ public class Mods implements Loadable{
/** Mod metadata information.*/
public static class ModMeta{
public String name, displayName, author, description, version, main, minGameVersion = "0";
public String name, displayName, author, description, version, main, minGameVersion = "0", repo;
public Seq<String> dependencies = Seq.with();
/** Hidden mods are only server-side or client-side, and do not support adding new content. */
public boolean hidden;

View File

@@ -1,5 +1,6 @@
package mindustry.type;
import arc.math.*;
import arc.struct.*;
import mindustry.content.*;
@@ -35,10 +36,10 @@ public class ItemStack implements Comparable<ItemStack>{
return other != null && other.item == item && other.amount == amount;
}
public static ItemStack[] mult(ItemStack[] stacks, int amount){
public static ItemStack[] mult(ItemStack[] stacks, float amount){
ItemStack[] copy = new ItemStack[stacks.length];
for(int i = 0; i < copy.length; i++){
copy[i] = new ItemStack(stacks[i].item, stacks[i].amount * amount);
copy[i] = new ItemStack(stacks[i].item, Mathf.round(stacks[i].amount * amount));
}
return copy;
}

View File

@@ -182,15 +182,15 @@ public class Planet extends UnlockableContent{
float sum = 1f;
for(Sector other : sector.near()){
if(other.generateEnemyBase){
sum += 1f;
sum += 0.9f;
}
}
if(sector.hasEnemyBase()){
sum += 2.5f;
sum += 0.88f;
}
sector.threat = sector.preset == null ? Math.min(sum / 5f, 1.5f) : Mathf.clamp(sector.preset.difficulty / 10f);
sector.threat = sector.preset == null ? Math.min(sum / 5f, 1.2f) : Mathf.clamp(sector.preset.difficulty / 10f);
}
}

View File

@@ -108,7 +108,7 @@ public class Sector{
public boolean isBeingPlayed(){
//after the launch dialog, a sector is no longer considered being played
return Vars.state.isGame() && Vars.state.rules.sector == this && !Vars.state.gameOver;
return Vars.state.isGame() && Vars.state.rules.sector == this && !Vars.state.gameOver && !net.client();
}
public String name(){
@@ -169,6 +169,8 @@ public class Sector{
}
public void addItems(ItemSeq items){
if(net.client()) return;
if(isBeingPlayed()){
if(state.rules.defaultTeam.core() != null){
ItemModule storage = state.rules.defaultTeam.items();

View File

@@ -328,7 +328,7 @@ public class UnitType extends UnlockableContent{
//suicide enemy
if(weapons.contains(w -> w.bullet.killShooter)){
//scale down DPS to be insignificant
dpsEstimate /= 20f;
dpsEstimate /= 25f;
}
}
}

View File

@@ -22,6 +22,7 @@ import mindustry.game.*;
import mindustry.gen.*;
import mindustry.graphics.*;
import mindustry.graphics.g3d.*;
import mindustry.input.*;
import mindustry.maps.*;
import mindustry.type.*;
import mindustry.ui.*;
@@ -60,7 +61,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
shouldPause = true;
keyDown(key -> {
if(key == KeyCode.escape || key == KeyCode.back){
if(key == KeyCode.escape || key == KeyCode.back || key == Core.keybinds.get(Binding.planet_map).key){
if(showing() && newPresets.size > 1){
//clear all except first, which is the last sector.
newPresets.truncate(1);
@@ -166,6 +167,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
}
newPresets.reverse();
updateSelected();
if(planets.planet.getLastSector() != null){
lookAt(planets.planet.getLastSector());
@@ -684,7 +686,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
if(sector.info.wavesSurvived >= 0 && sector.info.wavesSurvived - sector.info.wavesPassed >= 0 && !sector.isBeingPlayed()){
int toCapture = sector.info.attack || sector.info.winWave <= 1 ? -1 : sector.info.winWave - (sector.info.wave + sector.info.wavesPassed);
boolean plus = (sector.info.wavesSurvived - sector.info.wavesPassed) >= SectorDamage.maxRetWave - 1;
stable.add(Core.bundle.format("sectors.survives", Math.min(sector.info.wavesSurvived - sector.info.wavesPassed, toCapture <= 0 ? 200 : 0) +
stable.add(Core.bundle.format("sectors.survives", Math.min(sector.info.wavesSurvived - sector.info.wavesPassed, toCapture <= 0 ? 200 : toCapture) +
(plus ? "+" : "") + (toCapture < 0 ? "" : "/" + toCapture)));
stable.row();
}
@@ -699,11 +701,8 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
if(sector.save != null && sector.info.resources.any()){
stable.table(t -> {
t.add("@sectors.resources").padRight(4);
int idx = 0;
int max = 5;
for(UnlockableContent c : sector.info.resources){
t.image(c.icon(Cicon.small)).padRight(3).size(Cicon.small.size);
//if(++idx % max == 0) t.row();
}
}).padLeft(10f).fillX().row();
}
@@ -715,7 +714,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
}
if((sector.hasBase() && mode == look) || canSelect(sector) || (sector.preset != null && sector.preset.alwaysUnlocked) || debugSelect){
stable.button(mode == select ? "@sectors.select" : sector.hasBase() ? "@sectors.resume" : "@sectors.launch", Icon.play, () -> {
stable.button(mode == select ? "@sectors.select" : sector.isBeingPlayed() ? "@sectors.resume" : sector.hasBase() ? "@sectors.go" : "@sectors.launch", Icon.play, () -> {
if(sector.isBeingPlayed()){
//already at this sector
hide();

View File

@@ -21,6 +21,7 @@ import mindustry.game.EventType.*;
import mindustry.game.Objectives.*;
import mindustry.gen.*;
import mindustry.graphics.*;
import mindustry.input.*;
import mindustry.type.*;
import mindustry.ui.*;
import mindustry.ui.layout.*;
@@ -63,8 +64,8 @@ public class ResearchDialog extends BaseDialog{
ItemSeq cached = sector.items();
cache.put(sector, cached);
cached.each((item, amount) -> {
values[item.id] += amount;
total += amount;
values[item.id] += Math.max(amount, 0);
total += Math.max(amount, 0);
});
}
}
@@ -114,6 +115,12 @@ public class ResearchDialog extends BaseDialog{
addCloseButton();
keyDown(key -> {
if(key == Core.keybinds.get(Binding.research).key){
Core.app.post(this::hide);
}
});
buttons.button("@database", Icon.book, () -> {
hide();
ui.database.show();

View File

@@ -314,8 +314,6 @@ public class SettingsMenuDialog extends SettingsDialog{
game.sliderPref("saveinterval", 60, 10, 5 * 120, 10, i -> Core.bundle.format("setting.seconds", i));
if(!mobile){
game.sliderPref("blockselecttimeout", 750, 0, 2000, 50, i -> Core.bundle.format("setting.milliseconds", i));
game.checkPref("crashreport", true);
}
@@ -398,7 +396,7 @@ public class SettingsMenuDialog extends SettingsDialog{
graphics.checkPref("blockstatus", false);
graphics.checkPref("playerchat", true);
if(!mobile){
graphics.checkPref("coreitems", false);
graphics.checkPref("coreitems", true);
}
graphics.checkPref("minimap", !mobile);
graphics.checkPref("smoothcamera", true);

View File

@@ -32,7 +32,6 @@ public class HintsFragment extends Fragment{
Group group = new WidgetGroup();
ObjectSet<String> events = new ObjectSet<>();
ObjectSet<Block> placedBlocks = new ObjectSet<>();
int checkIdx = 0;
Table last;
@Override
@@ -50,9 +49,10 @@ public class HintsFragment extends Fragment{
}
}else if(hints.size > 0){
//check one hint each frame to see if it should be shown.
checkIdx = (checkIdx + 1) % hints.size;
Hint hint = hints.get(checkIdx);
if(hint.show() && !hint.finished() & !hint.complete()){
Hint hint = hints.find(Hint::show);
if(hint != null && hint.complete()){
hints.remove(hint);
}else if(hint != null){
display(hint);
}
}
@@ -81,7 +81,7 @@ public class HintsFragment extends Fragment{
void checkNext(){
if(current != null) return;
hints.removeAll(h -> h == current || !h.valid() || h.finished() || (h.show() && h.complete()));
hints.removeAll(h -> !h.valid() || h.finished() || (h.show() && h.complete()));
hints.sort(Hint::order);
Hint first = hints.find(Hint::show);
@@ -99,7 +99,7 @@ public class HintsFragment extends Fragment{
t.left();
t.table(Styles.black5, cont -> {
cont.actions(Actions.alpha(0f), Actions.alpha(1f, 1f, Interp.smooth));
cont.margin(6f).add(hint.text()).width(Vars.mobile ? 300f : 400f).left().labelAlign(Align.left).wrap();
cont.margin(6f).add(hint.text()).width(Vars.mobile ? 270f : 400f).left().labelAlign(Align.left).wrap();
});
t.row();
t.button("@hint.skip", Styles.nonet, () -> {
@@ -150,16 +150,18 @@ public class HintsFragment extends Fragment{
depositItems(() -> player.unit().hasItem(), () -> !player.unit().hasItem()),
desktopPause(visibleDesktop, () -> isTutorial.get() && !Vars.net.active(), () -> Core.input.keyTap(Binding.pause)),
research(isTutorial, () -> ui.research.isShown()),
unitControl(() -> state.rules.defaultTeam.data().units.size > 1 && !net.active(), () -> !player.dead() && !player.unit().spawnedByCore),
unitControl(() -> state.rules.defaultTeam.data().units.size > 2 && !net.active() && !player.dead(), () -> !player.dead() && !player.unit().spawnedByCore),
respawn(visibleMobile, () -> !player.dead() && !player.unit().spawnedByCore, () -> !player.dead() && player.unit().spawnedByCore),
launch(() -> isTutorial.get() && state.rules.sector.isCaptured(), () -> ui.planet.isShown()),
schematicSelect(visibleDesktop, () -> ui.hints.placedBlocks.contains(Blocks.router), () -> Core.input.keyRelease(Binding.schematic_select) || Core.input.keyTap(Binding.pick)),
conveyorPathfind(() -> control.input.block == Blocks.titaniumConveyor, () -> Core.input.keyTap(Binding.diagonal_placement) || (mobile && Core.settings.getBool("swapdiagonal"))),
conveyorPathfind(() -> control.input.block == Blocks.titaniumConveyor, () -> Core.input.keyRelease(Binding.diagonal_placement) || (mobile && Core.settings.getBool("swapdiagonal"))),
boost(visibleDesktop, () -> !player.dead() && player.unit().type.canBoost, () -> Core.input.keyDown(Binding.boost)),
command(() -> state.rules.defaultTeam.data().units.size > 3 && !net.active(), () -> player.unit().isCommanding()),
payloadPickup(() -> !player.unit().dead && player.unit() instanceof Payloadc p && p.payloads().isEmpty(), () -> player.unit() instanceof Payloadc p && p.payloads().any()),
payloadDrop(() -> !player.unit().dead && player.unit() instanceof Payloadc p && p.payloads().any(), () -> player.unit() instanceof Payloadc p && p.payloads().isEmpty()),
waveFire(() -> Groups.fire.size() > 0 && Blocks.wave.unlockedNow(), () -> indexer.getAllied(state.rules.defaultTeam, BlockFlag.extinguisher).size() > 0),
generator(() -> control.input.block == Blocks.combustionGenerator, () -> ui.hints.placedBlocks.contains(Blocks.combustionGenerator)),
guardian(() -> state.boss() != null && state.boss().armor >= 4, () -> state.boss() == null),
;
@Nullable

View File

@@ -97,7 +97,7 @@ public class PlacementFragment extends Fragment{
boolean gridUpdate(InputHandler input){
scrollPositions.put(currentCategory, blockPane.getScrollY());
if(Core.input.keyDown(Binding.pick) && player.isBuilder()){ //mouse eyedropper select
if(Core.input.keyTap(Binding.pick) && player.isBuilder()){ //mouse eyedropper select
Building tile = world.buildWorld(Core.input.mouseWorld().x, Core.input.mouseWorld().y);
Block tryRecipe = tile == null ? null : tile.block instanceof ConstructBlock ? ((ConstructBuild)tile).cblock : tile.block;
Object tryConfig = tile == null ? null : tile.config();
@@ -145,7 +145,7 @@ public class PlacementFragment extends Fragment{
break;
}
}
}else if(blockSelectEnd || Time.timeSinceMillis(blockSelectSeqMillis) > Core.settings.getInt("blockselecttimeout")){ //1st number of combo, select category
}else if(blockSelectEnd || Time.timeSinceMillis(blockSelectSeqMillis) > 750){ //1st number of combo, select category
//select only visible categories
if(!getUnlockedByCategory(Category.all[i]).isEmpty()){
currentCategory = Category.all[i];

View File

@@ -32,8 +32,10 @@ public class Accelerator extends Block{
@Override
public void init(){
itemCapacity = 0;
for(ItemStack stack : launching.requirements){
capacities[stack.item.id] = stack.amount;
itemCapacity += stack.amount;
}
consumes.items(launching.requirements);
super.init();

View File

@@ -19,6 +19,7 @@ import mindustry.graphics.*;
import mindustry.type.*;
import mindustry.ui.*;
import mindustry.world.*;
import mindustry.world.consumers.*;
import mindustry.world.meta.*;
import static mindustry.Vars.*;
@@ -38,6 +39,7 @@ public class LaunchPad extends Block{
solid = true;
update = true;
configurable = true;
drawDisabled = false;
}
@Override
@@ -58,7 +60,13 @@ public class LaunchPad extends Block{
@Override
public Cursor getCursor(){
return !state.isCampaign() ? SystemCursor.arrow : super.getCursor();
return !state.isCampaign() || net.client() ? SystemCursor.arrow : super.getCursor();
}
//cannot be disabled
@Override
public float efficiency(){
return power != null && (block.consumes.has(ConsumeType.power) && !block.consumes.getPower().buffered) ? power.status : 1f;
}
@Override
@@ -136,7 +144,7 @@ public class LaunchPad extends Block{
@Override
public void buildConfiguration(Table table){
if(!state.isCampaign()){
if(!state.isCampaign() || net.client()){
deselect();
return;
}
@@ -234,7 +242,9 @@ public class LaunchPad extends Block{
Events.fire(new LaunchItemEvent(stack));
}
destsec.addItems(dest);
if(!net.client()){
destsec.addItems(dest);
}
}
}
}

View File

@@ -60,6 +60,7 @@ public class MendProjector extends Block{
float heat;
float charge = Mathf.random(reload);
float phaseHeat;
float smoothEfficiency;
@Override
public float range(){
@@ -68,6 +69,7 @@ public class MendProjector extends Block{
@Override
public void updateTile(){
smoothEfficiency = Mathf.lerpDelta(smoothEfficiency, efficiency(), 0.08f);
heat = Mathf.lerpDelta(heat, consValid() || cheating() ? 1f : 0f, 0.08f);
charge += heat * delta();
@@ -115,7 +117,7 @@ public class MendProjector extends Block{
@Override
public void drawLight(){
Drawf.light(team, x, y, 50f * efficiency(), baseColor, 0.7f * efficiency());
Drawf.light(team, x, y, 50f * smoothEfficiency, baseColor, 0.7f * smoothEfficiency);
}
@Override

View File

@@ -65,6 +65,7 @@ public class OverdriveProjector extends Block{
float heat;
float charge = Mathf.random(reload);
float phaseHeat;
float smoothEfficiency;
@Override
public float range(){
@@ -73,11 +74,12 @@ public class OverdriveProjector extends Block{
@Override
public void drawLight(){
Drawf.light(team, x, y, 50f * efficiency(), baseColor, 0.7f * efficiency());
Drawf.light(team, x, y, 50f * smoothEfficiency, baseColor, 0.7f * smoothEfficiency);
}
@Override
public void updateTile(){
smoothEfficiency = Mathf.lerpDelta(smoothEfficiency, efficiency(), 0.08f);
heat = Mathf.lerpDelta(heat, consValid() ? 1f : 0f, 0.08f);
charge += heat * Time.delta;

View File

@@ -46,7 +46,7 @@ public class ItemTurret extends Turret{
public void build(Building tile, Table table){
MultiReqImage image = new MultiReqImage();
content.items().each(i -> filter.get(i) && i.unlockedNow(), item -> image.add(new ReqImage(new ItemImage(item.icon(Cicon.medium)),
() -> tile != null && !((ItemTurretBuild)tile).ammo.isEmpty() && ((ItemEntry)((ItemTurretBuild)tile).ammo.peek()).item == item)));
() -> tile instanceof ItemTurretBuild it && !it.ammo.isEmpty() && ((ItemEntry)it.ammo.peek()).item == item)));
table.add(image).size(8 * 4);
}
@@ -54,7 +54,7 @@ public class ItemTurret extends Turret{
@Override
public boolean valid(Building entity){
//valid when there's any ammo in the turret
return !((ItemTurretBuild)entity).ammo.isEmpty();
return entity instanceof ItemTurretBuild it && !it.ammo.isEmpty();
}
@Override

View File

@@ -50,7 +50,7 @@ public class Junction extends Block{
Building dest = nearby(i);
//skip blocks that don't want the item, keep waiting until they do
if(dest == null || !dest.acceptItem(this, item) || dest.team != team){
if(item == null || dest == null || !dest.acceptItem(this, item) || dest.team != team){
continue;
}

View File

@@ -106,6 +106,8 @@ public class StackConveyor extends Block implements Autotiler{
public float cooldown;
public Item lastItem;
boolean proxUpdating = false;
@Override
public void draw(){
Draw.rect(regions[state], x, y, rotdeg());
@@ -168,15 +170,15 @@ public class StackConveyor extends Block implements Autotiler{
//update other conveyor state when this conveyor's state changes
if(state != lastState){
proxUpdating = true;
for(Building near : proximity){
if(near instanceof StackConveyorBuild){
if(!(near instanceof StackConveyorBuild b && b.proxUpdating && b.state != stateUnload)){
near.onProximityUpdate();
for(Building other : near.proximity){
if(!(other instanceof StackConveyorBuild)) other.onProximityUpdate();
}
}
}
proxUpdating = false;
}
}
@Override

View File

@@ -92,6 +92,11 @@ public class ItemLiquidGenerator extends PowerGenerator{
return generateTime > 0;
}
@Override
public float ambientVolume(){
return Mathf.clamp(productionEfficiency);
}
@Override
public void updateTile(){
//Note: Do not use this delta when calculating the amount of power or the power efficiency, but use it for resource consumption if necessary.

View File

@@ -144,7 +144,7 @@ public class CoreBlock extends StorageBlock{
//right before placing, create a "destination" item array which is all the previous items minus core requirements
ItemModule items = tile.build.items.copy();
if(!state.rules.infiniteResources){
items.remove(requirements);
items.remove(ItemStack.mult(requirements, state.rules.buildCostMultiplier));
}
nextItems = items;
@@ -157,7 +157,7 @@ public class CoreBlock extends StorageBlock{
if(!canPlaceOn(world.tile(x, y), player.team())){
drawPlaceText(Core.bundle.get((player.team().core() != null && player.team().core().items.has(requirements)) || state.rules.infiniteResources ?
drawPlaceText(Core.bundle.get((player.team().core() != null && player.team().core().items.has(requirements, state.rules.buildCostMultiplier)) || state.rules.infiniteResources ?
"bar.corereq" :
"bar.noresources"
), x, y, valid);
@@ -268,6 +268,26 @@ public class CoreBlock extends StorageBlock{
}
}
@Override
public void handleStack(Item item, int amount, Teamc source){
super.handleStack(item, amount, source);
if(team == state.rules.defaultTeam && state.isCampaign()){
state.rules.sector.info.handleCoreItem(item, amount);
}
}
@Override
public int removeStack(Item item, int amount){
int result = super.removeStack(item, amount);
if(team == state.rules.defaultTeam && state.isCampaign()){
state.rules.sector.info.handleCoreItem(item, -result);
}
return result;
}
@Override
public void drawSelect(){
Lines.stroke(1f, Pal.accent);