diff --git a/build.gradle b/build.gradle index d40d887191..7adb39d517 100644 --- a/build.gradle +++ b/build.gradle @@ -42,6 +42,29 @@ allprojects { getPackage = { return project.ext.mainClassName.substring(0, project.ext.mainClassName.indexOf("desktop") - 1) } + + writeVersion = { + def pfile = new File('core/assets/version.properties') + def props = new Properties() + + try{ + pfile.createNewFile() + }catch (Exception e){} + + if(pfile.exists()) { + + props.load(new FileInputStream(pfile)) + + String code = getBuildVersion() + + props["name"] = appName + props["version"] = versionType + props["code"] = versionNumber + props["build"] = code + + props.store(pfile.newWriter(), "Autogenerated file. Do not modify.") + } + } } repositories { diff --git a/core/assets-raw/sprites/items/item-rdx.png b/core/assets-raw/sprites/items/item-rdx.png new file mode 100644 index 0000000000..a7637aaec6 Binary files /dev/null and b/core/assets-raw/sprites/items/item-rdx.png differ diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 586e046921..4d846805b5 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -1,4 +1,4 @@ -text.about=Created by [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]\nOriginally an entry in the [orange]GDL[] Metal Monstrosity Jam.\n\nCredits:\n- SFX made with [YELLOW]bfxr[]\n- Music made by [GREEN]a drop a day[]\n\nSpecial thanks to:\n- [coral]MitchellFJN[]: extensive playtesting and feedback\n- [sky]Luxray5474[]: wiki work, code contributions\n- [lime]Epowerj[]: code build system, icon\n- All the beta testers on itch.io and Google Play\n +text.about=Created by [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]\nOriginally an entry in the [orange]GDL[] Metal Monstrosity Jam.\n\nCredits:\n- SFX made with [YELLOW]bfxr[]\n- Music made by [GREEN]Roccow[]\n\nSpecial thanks to:\n- [coral]MitchellFJN[]: extensive playtesting and feedback\n- [sky]Luxray5474[]: wiki work, code contributions\n- [lime]Epowerj[]: code build system, icon\n- All the beta testers on itch.io and Google Play\n text.credits=Credits text.discord=Join the mindustry discord! text.changes=[SCARLET]Attention!\n[]Some important game mechanics have been changed.\n\n- [accent]Teleporters[] now use power.\n- [accent]Smelteries[] and [accent]crucibles[] now have a maximum item capacity.\n- [accent]Crucibles[] now require coal as fuel. @@ -34,6 +34,7 @@ text.players.single={0} player online text.server.mismatch=Packet error: possible client/server version mismatch.\nMake sure you and the host have the\nlatest version of Mindustry! text.server.closing=[accent]Closing server... text.server.kicked.kick=You have been kicked from the server! +text.server.kicked.fastShoot=You are shooting too quickly. text.server.kicked.invalidPassword=Invalid password! text.server.kicked.clientOutdated=Outdated client! Update your game! text.server.kicked.serverOutdated=Outdated server! Ask the host to update! diff --git a/core/assets/bundles/bundle_fr.properties b/core/assets/bundles/bundle_fr.properties new file mode 100644 index 0000000000..6c8a007520 --- /dev/null +++ b/core/assets/bundles/bundle_fr.properties @@ -0,0 +1,528 @@ +text.about = Créé par [ROYAL]Anuken.[]\nA l'origine une entrée dans le [orange]GDL[] MM Jam.\n\nCrédits: \n- SFX réalisé avec [yellow]bfxr[] \n- Musique faite par [lime]RoccoW[] / trouvé sur [lime]FreeMusicArchive.org[] \n\nRemerciements particuliers à:\n- [coral]MitchellFJN[]: nombreux tests et retours d'expérience \n- [sky]Luxray5474[]: travail wiki, contributions de code \n- [lime]Epowerj[]: système de compilation de code, icône \n- Tous les beta testeurs sont sur itch.io et Google Play\n +text.discord = Rejoignez le discord de Mindustry +text.changes = [SCARLET]Attention![] \nCertains mécanismes importants du jeu ont ete modifies.\n-Les [accent]telporteurs[] utilisent maintenant de l'énergie.\n-Les [accent]fonderies[] et les[accent]crucibles[] ont maintenant une capacité maximale d'articles.\n-Les [accent]crucibles[] exigent maintenant du charbon comme combustible. +text.gameover = Le noyau a été détruit. +text.highscore = [YELLOW]Nouveau meilleur score! +text.lasted = Vous avez duré jusqu'à la vague +text.level.highscore = Meilleur score: [accent]{0} +text.level.delete.title = Confirmer +text.level.delete = Êtes-vous sûr de vouloir supprimer la carte \"[orange] \"? +text.level.select = Sélection de niveau +text.level.mode = Mode de jeu : +text.savegame = Sauvegarder la partie +text.loadgame = Charger la partie +text.joingame = Rejoindre la partie +text.quit = Quitter +text.about.button = À propos +text.name = Nom : +text.public = Publique +text.players = joueurs en ligne +text.server.player.host = Héberger +text.players.single = joueur en ligne +text.server.mismatch = Erreur de paquet: possible incompatibilité de version client/serveur. Assurez-vous que vous et l'hôte avez la dernière version de Mindustry! +text.server.closing = [accent]Fermeture du serveur ... +text.server.kicked.kick = Vous avez été expulsé du serveur! +text.server.kicked.invalidPassword = Mot de passe non valide ! +text.server.kicked.clientOutdated = Client dépassé! Mettez à jour votre jeu! +text.server.kicked.serverOutdated = Serveur dépassé! Demandez à l'hôte de le mettre à jour! +text.server.kicked.banned = Vous êtes banni sur ce serveur. +text.server.connected = a rejoint le serveur +text.server.disconnected = {0} s'est déconnecté. +text.nohost = Impossible d'héberger le serveur sur une carte personnalisée! +text.hostserver = Héberger un serveur +text.host = Héberger +text.hosting = [accent]Ouverture du serveur ... +text.hosts.refresh = Actualiser +text.hosts.discovering = Recherche de parties LAN +text.server.refreshing = Actualisation du serveur +text.hosts.none = [lightgray]Aucun jeu LAN trouvé! +text.host.invalid = [scarlet]Impossible de se connecter à l'hôte. +text.server.friendlyfire = Tir allié +text.trace = suivre le joueur +text.trace.playername = Nom du joueur: [accent] {0} +text.trace.ip = IP: [accent] {0} +text.trace.id = ID unique: [accent] {0} +text.trace.android = Client Android: [accent] {0} +text.trace.modclient = Client personnalisé: [accent] {0} +text.trace.totalblocksbroken = Total des blocs détruits: [accent] {0} +text.trace.structureblocksbroken = Blocs de structure détruits: [accent] {0} +text.trace.lastblockbroken = Dernier bloc détruit: [accent] {0} +text.trace.totalblocksplaced = Nombre total de blocs placés: [accent] {0} +text.trace.lastblockplaced = Dernier bloc placé: [accent] {0} +text.invalidid = ID client invalide! Soumettre un rapport de bug +text.server.bans = Interdictions +text.server.bans.none = Aucun joueur banni trouvé! +text.server.admins = Administrateurs +text.server.admins.none = Aucun administrateur trouvé! +text.server.add = Ajouter un serveur +text.server.delete = Êtes-vous sûr de vouloir supprimer ce serveur? +text.server.hostname = Héberger +text.server.edit = éditer le serveur +text.server.outdated = [crimson]Serveur obsolète![] +text.server.outdated.client = [Crimson]Client obsolète![] +text.server.version = [lightgray]Version: {0} +text.server.custombuild = [jaune]Construction personnalisée +text.confirmban = Êtes-vous sûr de vouloir bannir ce joueur? +text.confirmunban = Êtes-vous sûr de vouloir annuler le ban de ce joueur? +text.confirmadmin = Êtes-vous sûr de vouloir faire de ce joueur un administrateur? +text.confirmunadmin = Êtes-vous sûr de vouloir supprimer le statut d'administrateur de ce joueur? +text.joingame.byip = Rejoindre par IP ... +text.joingame.title = Rejoindre une partie +text.joingame.ip = IP : +text.disconnect = Déconnecté +text.connecting = [accent]Connexion ... +text.connecting.data = [accent] Chargement des données de la partie ... +text.connectfail = [crimson] Échec de la connexion au serveur : [orange] +text.server.port = Port : +text.server.addressinuse = Adresse déjà utilisée! +text.server.invalidport = Numéro de port incorrect. +text.server.error = [crimson]Erreur lors de l'hébergement du serveur: [orange] {0} +text.tutorial.back = < Précédent\n +text.tutorial.next = Suivant> +text.save.new = Nouvelle sauvegarde +text.save.overwrite = Êtes-vous sûr de vouloir remplacer cette sauvegarde? +text.overwrite = Écraser +text.save.none = Aucune sauvegarde trouvée! +text.saveload = [accent]Sauvegarde ... +text.savefail = Échec de la sauvegarde du jeu ! +text.save.delete.confirm = Êtes-vous sûr de vouloir supprimer cette sauvegarde? +text.save.delete = Supprimer +text.save.export = Exporter la sauvegarde +text.save.import.invalid = [orange]Cette sauvegarde est invalide! +text.save.import.fail = [crimson]Echec de l'importation de la sauvegarde: [orange] {0} +text.save.export.fail = [crimson]Échec de l'exportation de la sauvegarde: [orange] {0} +text.save.import = Importer la sauvegarde +text.save.newslot = Enregistrer le nom: +text.save.rename = Renommer +text.save.rename.text = Nouveau nom: +text.selectslot = Sélectionnez une sauvegarde. +text.slot = [accent]Emplacement {0} +text.save.corrupted = [orange]Le fichier enregistrer est corrompu ou invalide! +text.empty = +text.on = Allumer +text.off = Eteint +text.save.autosave = Sauvegarde automatique +text.save.map = Carte +text.save.wave = Vague : +text.save.difficulty = DIFFICULTÉ +text.save.date = Dernière sauvegarde: {0} +text.confirm = Confirmer +text.delete = Supprimer +text.ok = OK +text.open = Ouvrir +text.cancel = Annuler +text.openlink = Lien public +text.back = Retour +text.quit.confirm = Êtes-vous sûr de vouloir quitter? +text.changelog.title = Note de mise à jour +text.changelog.error = [Scarlet] Erreur lors de l'obtention du changement de serveur! Vérifiez votre connexion internet. +text.changelog.current = [jaune] [[Version actuelle] +text.changelog.latest = [orange][[Dernière version] +text.loading = [accent]Chargement ... +text.wave = [orange]Vague {0} +text.wave.waiting = Vague dans {0} +text.waiting = Attente... +text.enemies = ennemis +text.enemies.single = Ennemi +text.loadimage = Charger l'image +text.saveimage = Enregistrer l'image +text.oregen = Génération de minerais +text.editor.badsize = [orange]Dimensions de l'image non valides![] Dimensions de la carte valides: {0} +text.editor.errorimageload = Erreur lors du chargement du fichier image:[orange] {0} +text.editor.errorimagesave = Erreur lors de la sauvegarde du fichier image:[orange] {0} +text.editor.generate = Générer +text.editor.resize = Redimensionner +text.editor.loadmap = Charger la carte +text.editor.savemap = Enregistrer la carte +text.editor.loadimage = Charger l'image +text.editor.saveimage = Enregistrer l'image +text.editor.unsaved = [scarlet] Vous avez des changements non sauvegardés![] Êtes-vous sûr de vouloir quitter? +text.editor.brushsize = Taille de la brosse: +text.editor.noplayerspawn = Cette carte n'a pas de point d'apparition de joueur! +text.editor.manyplayerspawns = Les cartes ne peuvent pas avoir plus d'un point d'apparition de joueur! +text.editor.manyenemyspawns = Il ne peut pas avoir plus de {0} points d'apparition ennemis! +text.editor.resizemap = Redimensionner la carte +text.editor.resizebig = [scarlet]Attention![] Les cartes de plus de 256 unités peuvent laggés et être instables. +text.editor.mapname = Nom de la carte: +text.editor.overwrite = [accent]Attention! Cela écrasera la carte existante. +text.editor.failoverwrite = [Crimson]Impossible d'écraser la carte par défaut! +text.editor.selectmap = Sélectionnez une carte à charger: +text.width = Largeur: +text.height = Hauteur: +text.randomize = Rendre aléatoire +text.apply = Appliquer +text.update = Modifier +text.menu = Menu +text.play = Jouer +text.load = Charger +text.save = Sauvegarder +text.language.restart = Veuillez redémarrer votre jeu pour que les paramètres de langue soient appliqués. +text.settings.language = Langue +text.settings = Réglages +text.tutorial = Tutoriel +text.editor = Éditeur +text.mapeditor = Éditeur de carte +text.donate = Faire un don +text.settings.reset = Valeur par défaut. +text.settings.controls = Contrôles +text.settings.game = Jeu +text.settings.sound = Son +text.settings.graphics = Graphique +text.upgrades = Améliorations +text.purchased = [VERT]Créé! +text.weapons = Armes +text.paused = Pause +text.respawn = Réapparition dans +text.info.title = [accent]Info +text.error.title = [crimson]Une erreur est survenue +text.error.crashmessage = [SCARLET]Une erreur inattendue est survenue, et aurait provoqué un crash.[] Veuillez indiquer les circonstances exactes dans lesquelles cette erreur est survenue au développeur:[ORANGE] anukendev@gmail.com[] +text.error.crashtitle = Une erreur est survenue +text.mode.break = Mode de rupture: {0} +text.mode.place = Placez le mode: {0} +placemode.hold.name = Ligne +placemode.areadelete.name = surface +placemode.touchdelete.name = toucher +placemode.holddelete.name = tenir +placemode.none.name = aucun +placemode.touch.name = toucher +placemode.cursor.name = curseur +text.blocks.extrainfo = [accent] info supplémentaire du bloc: +text.blocks.blockinfo = Bloquer les infos +text.blocks.powercapacity = capacité d'énergie +text.blocks.powershot = Energie/Tir +text.blocks.powersecond = Energie/Seconde +text.blocks.powerdraindamage = Utilisation d'énergie/Dommage +text.blocks.shieldradius = rayon du bouclier +text.blocks.itemspeedsecond = Vitesse d'Article/Seconde +text.blocks.range = Portée +text.blocks.size = Taille +text.blocks.powerliquid = énergie/Liquide +text.blocks.maxliquidsecond = Max Liquide/Seconde +text.blocks.liquidcapacity = Capacité liquide +text.blocks.liquidsecond = Liquide/seconde +text.blocks.damageshot = Dégâts/tir +text.blocks.ammocapacity = Capacité de munitions +text.blocks.ammo = Munition +text.blocks.ammoitem = Munitions/Article +text.blocks.maxitemssecond = Max articles/seconde +text.blocks.powerrange = Gamme de puissance +text.blocks.lasertilerange = portée du laser +text.blocks.capacity = Capacité +text.blocks.itemcapacity = Capacité article +text.blocks.maxpowergenerationsecond = Génération max d'énergie/seconde +text.blocks.powergenerationsecond = Génération d'énergie/seconde +text.blocks.generationsecondsitem = Génération Secondes / item +text.blocks.input = entrée +text.blocks.inputliquid = Entrée de liquide +text.blocks.inputitem = entré d'article +text.blocks.output = Sortie +text.blocks.secondsitem = Secondes/article +text.blocks.maxpowertransfersecond = Transfert max d'énergie/seconde +text.blocks.explosive = Hautement explosif ! +text.blocks.repairssecond = Réparation/seconde +text.blocks.health = Santé +text.blocks.inaccuracy = Inexactitude +text.blocks.shots = tirs +text.blocks.shotssecond = Tirs/seconde +text.blocks.fuel = Carburant +text.blocks.fuelduration = Durée du carburant +text.blocks.maxoutputsecond = Sortie max/seconde +text.blocks.inputcapacity = Capacité d'entrée +text.blocks.outputcapacity = Capacité de sortie +text.blocks.poweritem = Energie/Article +text.placemode = Mode Placement +text.breakmode = Mode destruction +text.health = santé +setting.difficulty.easy = facile +setting.difficulty.normal = normal +setting.difficulty.hard = difficile +setting.difficulty.insane = Extreme +setting.difficulty.purge = Purge +setting.difficulty.name = Difficulté: +setting.screenshake.name = Tremblement d'écran +setting.smoothcam.name = Caméra lisse +setting.indicators.name = Indicateurs ennemis +setting.effects.name = Effets d'affichage +setting.sensitivity.name = Sensibilité de la manette +setting.saveinterval.name = Intervalle des sauvegardes auto +setting.seconds = {0} secondes +setting.fullscreen.name = Plein écran +setting.multithread.name = Multithreading [scarlet] (instable!) +setting.fps.name = Afficher FPS +setting.vsync.name = VSync +setting.lasers.name = Afficher les rayons des lasers +setting.healthbars.name = Afficher les barres de santé des entités +setting.pixelate.name = Pixéliser l'écran +setting.musicvol.name = volume musique +setting.mutemusic.name = Musique muette +setting.sfxvol.name = Volume SFX +setting.mutesound.name = Son muet +map.maze.name = Labyrinthe +map.fortress.name = forteresse +map.sinkhole.name = gouffre +map.caves.name = cavernes +map.volcano.name = volcan +map.caldera.name = chaudron +map.scorch.name = brûlure +map.desert.name = désert +map.island.name = Île +map.grassland.name = prairie +map.tundra.name = toundra +map.spiral.name = spirale +map.tutorial.name = tutoriel +tutorial.intro.text = [yellow]Bienvenue dans le tutoriel[]. Pour commencer, appuyez sur \"suivant\". +tutorial.moveDesktop.text = Pour vous déplacer, utilisez les touches [orange][[WASD][]. Maintenez [orange]shift[] pour accélérer. Maintenez la touche [orange]CTRL[] enfoncée tout en utilisant la [orange]molette[] pour effectuer un zoom avant ou arrière. +tutorial.shoot.text = Utilisez votre souris pour viser, maintenez le [orange]bouton gauche de la souris[] pour tirer. Essayez de pratiquer sur la [yellow]cible[]. +tutorial.moveAndroid.text = Pour déplacer votre vue, faites glisser un doigt sur l'écran. Pincez et faites glisser pour effectuer un zoom avant ou arrière. +tutorial.placeSelect.text = Essayez de sélectionner un [yellow]transporteur[] dans le menu des blocs en bas à droite. +tutorial.placeConveyorDesktop.text = Utilisez la [orange][[molette][] pour faire pivoter le transporteur [orange]vers l'avant[], puis placez-le dans l'emplacement [yellow]marqué[] en utilisant le [orange][[bouton gauche de la souris][]. +tutorial.placeConveyorAndroid.text = Utilisez [orange][[bouton de rotation][] pour faire pivoter le transporteur [orange]vers l'avant[], faites-le glisser avec votre doigt, puis placez-le dans l'emplacement [yellow]marqué[] avec [orange][[coche][]. +tutorial.placeConveyorAndroidInfo.text = Vous pouvez également appuyer sur l'icône du réticule en bas à gauche pour passer en [orange][[mode tactile][] et placer des blocs en appuyant sur l'écran. En mode tactile, les blocs peuvent être pivotés avec la flèche en bas à gauche. Appuyez sur [yellow]suivant[] pour essayer. +tutorial.placeDrill.text = Maintenant, sélectionnez et placez un [yellow]extracteur de pierre[] à l'endroit marqué. +tutorial.blockInfo.text = Si vous voulez en savoir plus sur un bloc, vous pouvez appuyer sur le [orange]point d'interrogation[] en haut à droite pour lire sa description. +tutorial.deselectDesktop.text = Vous pouvez désélectionner un bloc en utilisant le [orange][[bouton droit de la souris][]. +tutorial.deselectAndroid.text = Vous pouvez désélectionner un bloc en appuyant sur le bouton [orange]X[]. +tutorial.drillPlaced.text = L'extracteur produira maintenant de la [yellow]pierre[], qui sera placée sur le transporteur, puis sera emmenée dans le [yellow]noyau[]. +tutorial.drillInfo.text = Différents minerais ont besoin de différents extracteurs. La pierre nécessite des extracteurs de pierre, le fer des extracteurs de fer,...etc... +tutorial.drillPlaced2.text = Le déplacement d'article dans le noyau le place dans votre[yellow]inventaire[], au milieu à droite. Le placement de blocs utilise les éléments de votre inventaire. +tutorial.moreDrills.text = Vous pouvez relier plusieurs extracteurs et transporteurs ensemble, comme ça. +tutorial.deleteBlock.text = Vous pouvez supprimer des blocs en cliquant sur le clique [orange]droit de la souris[] sur le bloc que vous voulez supprimer. Essayez de supprimer ce transporteur. +tutorial.deleteBlockAndroid.text = Vous pouvez supprimer des blocs en [orange]sélectionnant le réticule[] dans [orange] le menu du mode destruction[] en bas à gauche et en appuyant sur un bloc. Essayez de supprimer ce transporteur. +tutorial.placeTurret.text = Maintenant, sélectionnez et placez une [yellow]tourelle[] à l'[yellow]emplacement marqué[]. +tutorial.placedTurretAmmo.text = Cette tourelle accepte maintenant les [yellow]munitions[] du transporteur. Vous pouvez voir combien de munitions elle a en la survolant et en vérifiant sa [green]barre verte[]. +tutorial.turretExplanation.text = Les tourelles tirent automatiquement sur l'ennemi le plus proche, pourvu qu'elles aient suffisamment de munitions. +tutorial.waves.text = Toutes les [yellow]60 secondes[], une [coral]vague d'ennemis[] apparaîtra dans des endroits spécifiques et tentera de détruire votre noyau. +tutorial.coreDestruction.text = Votre objectif est de [yellow]défendre le noyau[]. Si le noyau est détruit, vous [coral]perdez le jeu[]. +tutorial.pausingDesktop.text = Si vous avez besoin de faire une pause, appuyez sur le bouton [orange]pause[] en haut à gauche pour mettre le jeu en pause. Vous pouvez toujours casser et placer des blocs en pause, mais vous ne pouvez pas bouger ou tirer. +tutorial.pausingAndroid.text = Si vous avez besoin de faire une pause, appuyez sur le bouton [orange]pause[] en haut à gauche pour mettre le jeu en pause. Vous pouvez toujours casser et placer des blocs en pause. +tutorial.purchaseWeapons.text = Vous pouvez acheter de nouvelles [yellow]armes[] pour votre robot en ouvrant le menu de mise à niveau en bas à gauche. +tutorial.switchWeapons.text = Changez d'arme en cliquant sur l'icône en bas à droite, ou en utilisant les chiffres [orange][[1-9][]. +tutorial.spawnWave.text = Une vague arrive. Détruisez-les. +tutorial.pumpDesc.text = Dans les vagues plus lointaines, vous devrez peut-être utiliser des [yellow]pompes[] pour distribuer du liquide pour les générateurs ou les extracteurs. +tutorial.pumpPlace.text = Les pompes fonctionnent de la même manière que les extracteurs, sauf qu'elles récoltent du liquides et non du minerai. Essayez de placer une pompe sur [yellow]pétrole[] désigné. +tutorial.conduitUse.text = Maintenant, placez un [orange]conduit[] qui s'éloigne de la pompe. +tutorial.conduitUse2.text = Et un autre ... +tutorial.conduitUse3.text = Et un autre ... +tutorial.generator.text = Maintenant, placez un bloc [orange]de générateur à combustion[] à l'extrémité du conduit. +tutorial.generatorExplain.text = Ce générateur va maintenant créer de l' [yellow]énergie[] à partir de pétrole. +tutorial.lasers.text = L'énergie est distribuée à l'aide de [yellow]lasers d'énergie[]. Tournez et placez-en un ici. +tutorial.laserExplain.text = Le générateur va maintenant déplacer la puissance dans le laser. Un faisceau [yellow]opaque[] signifie qu'il transmet actuellement de la puissance, et un faisceau [yellow]transparent[] signifie que ce n'est pas le cas. +tutorial.laserMore.text = Vous pouvez vérifier la puissance d'un bloc en survolant celui-ci et en vérifiant la [yellow]barre jaune[] en haut. +tutorial.healingTurret.text = Ce laser peut être utilisé pour alimenter une [lime]tourelle de réparation[]. Placez-en une ici. +tutorial.healingTurretExplain.text = Tant qu'elle a de la puissance, cette tourelle [lime]réparera les blocs voisins[].En jouant, assurez-vous d'en avoir une dans votre base le plus rapidement possible! +tutorial.smeltery.text = De nombreux blocs nécessitent de l' [orange]acier[] pour fabriquer, ce qui nécessite une [orange]fonderie[]. Placez-en une ici. +tutorial.smelterySetup.text = Cette fonderie produira maintenant de l' [orange]acier[] à partir du fer, utilisant le charbon comme combustible. +tutorial.tunnelExplain.text = Notez également que les objets traversent un [orange]tunnel[] et émergent de l'autre côté, traversant le bloc de pierre. Gardez à l'esprit que les tunnels ne peuvent traverser que 2 blocs. +tutorial.end.text = Et cela conclut le tutoriel! Bonne chance! +text.keybind.title = Relier le clés +keybind.move_x.name = mouvement x +keybind.move_y.name = mouvement y +keybind.select.name = sélectionner +keybind.break.name = Pause +keybind.shoot.name = tirer +keybind.zoom_hold.name = tenir le zoom +keybind.zoom.name = zoom +keybind.block_info.name = bloc_info +keybind.menu.name = menu +keybind.pause.name = Pause +keybind.dash.name = attaque frontal +keybind.chat.name = chat +keybind.player_list.name = Liste des joueurs +keybind.console.name = console +keybind.rotate_alt.name = tourner_alt +keybind.rotate.name = Tourner +keybind.weapon_1.name = Arme 1 +keybind.weapon_2.name = Arme 2 +keybind.weapon_3.name = Arme 3 +keybind.weapon_4.name = Arme 4 +keybind.weapon_5.name = Arme 5 +keybind.weapon_6.name = Arme 6 +mode.waves.name = Vagues +mode.sandbox.name = bac à sable +mode.freebuild.name = construction libre +upgrade.standard.name = La norme +upgrade.standard.description = Le robot standard. +upgrade.blaster.name = blaster +upgrade.blaster.description = Tire faiblement et lentetement. +upgrade.triblaster.name = Tri-blaster +upgrade.triblaster.description = Tire 3 balles se propageant en V. +upgrade.clustergun.name = clustergun +upgrade.clustergun.description = Tire une portée de grenades explosives. +upgrade.beam.name = beam cannon +upgrade.beam.description = Tire un rayon laser de perçage à longue portée. +upgrade.vulcan.name = Vulcain +upgrade.vulcan.description = Tire un barrage de balles rapides. +upgrade.shockgun.name = shockgun +upgrade.shockgun.description = Tire une charge de balles qui explosent en éclats. +item.stone.name = pierre +item.iron.name = fer +item.coal.name = charbon +item.steel.name = Acier +item.titanium.name = Titane +item.dirium.name = dirium +item.uranium.name = uranium +item.sand.name = sable +liquid.water.name = eau +liquid.plasma.name = plasma +liquid.lava.name = lave +liquid.oil.name = pétrole +block.weaponfactory.name = usine d'armes +block.weaponfactory.fulldescription = Utilisé pour créer des armes pour le joueur robot. Cliquez pour utiliser. Extrait automatiquement les ressources du noyau. +block.air.name = air +block.blockpart.name = partie de block +block.deepwater.name = eaux profondes +block.water.name = eau +block.lava.name = lave +block.oil.name = pétrole +block.stone.name = pierre +block.blackstone.name = pierre noire +block.iron.name = fer +block.coal.name = charbon +block.titanium.name = titane +block.uranium.name = uranium +block.dirt.name = terre +block.sand.name = sable +block.ice.name = glace +block.snow.name = neige +block.grass.name = herbe +block.sandblock.name = bloc de sable +block.snowblock.name = bloc de neige +block.stoneblock.name = bloc de pierre +block.blackstoneblock.name = bloc de roche noire +block.grassblock.name = bloc d'herbe +block.mossblock.name = bloc de mousse +block.shrub.name = arbuste +block.rock.name = roche +block.icerock.name = roche de glace +block.blackrock.name = roche noire +block.dirtblock.name = bloc de terre +block.stonewall.name = mur de pierres +block.stonewall.fulldescription = Un bloc défensif bon marché. Utile pour protéger le noyau et les tourelles durant les premières vagues. +block.ironwall.name = mur de fer +block.ironwall.fulldescription = Un bloc défensif de base. Fournit une protection contre les ennemis. +block.steelwall.name = mur en acier +block.steelwall.fulldescription = Un bloc défensif standard. une protection adéquate contre les ennemis. +block.titaniumwall.name = mur de titane +block.titaniumwall.fulldescription = Un bloc défensif très résistant. Fournit une protection contre les ennemis. +block.duriumwall.name = mur de dirium +block.duriumwall.fulldescription = Un bloc défensif extrêmement résistant. Fournit une protection contre les ennemis. +block.compositewall.name = mur composite +block.steelwall-large.name = grand mur d'acier +block.steelwall-large.fulldescription = Un bloc défensif standard, prend plusieurs blocs de largeurs. +block.titaniumwall-large.name = grand mur de titane +block.titaniumwall-large.fulldescription = Un bloc défensif très résistant, prend plusieurs blocs de largeurs. +block.duriumwall-large.name = grand mur de dirium +block.duriumwall-large.fulldescription = Un bloc défensif extrêmement résistant, prend plusieurs blocs de largeurs. +block.titaniumshieldwall.name = mur blindé +block.titaniumshieldwall.fulldescription = Un bloc défensif solide, avec un bouclier intégré. Nécessite de l'énergie. Utilise l'énergie pour absorber les balles ennemies. Il est recommandé d'utiliser un distributeur d'énergie pour fournir de l'énergie à ce bloc. +block.repairturret.name = tourelle de réparation +block.repairturret.fulldescription = Répare les blocs avoisinants endommagés dans un zone circulaire à un rythme lent. Utilise de l'énergie. +block.megarepairturret.name = tourelle de réparation II +block.megarepairturret.fulldescription = Répare les blocs avoisinants endommagés dans un zone circulaire à un rythme régulier. Utilise de l'énergie. +block.shieldgenerator.name = générateur de bouclier +block.shieldgenerator.fulldescription = Un bloc défensif avancé. Protège tous les blocs avoisinants dans une zone circulaire. Utilise l'énergie à un rythme lent, mais draine beaucoup d'énergie au contact d'un tir ennemi. +block.door.name = porte +block.door.fulldescription = Un bloc qui peut être ouvert et fermé en cliquant dessus. +block.door-large.name = grande porte +block.door-large.fulldescription = Un bloc qui peut être ouvert et fermé en cliquant dessus. +block.conduit.name = conduit +block.conduit.fulldescription = Bloc de transport de liquide basique. Fonctionne comme un transporteur, mais avec des liquides. A placé à coté de pompes. Peut être utilisé comme un pont sur les liquides pour les ennemis et les joueurs. +block.pulseconduit.name = conduit à impulsion +block.pulseconduit.fulldescription = Bloc de transport de liquide avancé. Transporte les liquides plus rapidement et stocke plus que les conduits standards. +block.liquidrouter.name = routeur de liquide +block.liquidrouter.fulldescription = Fonctionne de manière similaire à un routeur. Accepte l'entrée de liquide d'un côté et l'envoie vers 3 autres côtés. Utile pour répartir le liquide d'un conduit vers plusieurs autres conduits. +block.conveyor.name = transporteur +block.conveyor.fulldescription = Bloc de transport standard. Déplace les objets vers l'avant et les dépose automatiquement dans les tourelles ou des blocs d'artisanats. Rotatif. Peut être utilisé comme une plateforme sur les liquides, pour les ennemis et les joueurs. +block.steelconveyor.name = transporteur en acier +block.steelconveyor.fulldescription = transporteur d'articles avancé. Déplace les objets plus rapidement que les transporteurs standards. +block.poweredconveyor.name = transporteur à impulsions +block.poweredconveyor.fulldescription = Le transporteur d'articles ultime. Déplace les articles plus rapidement que les convoyeurs en acier. +block.router.name = Routeur +block.router.fulldescription = Accepte les éléments d'une direction et les distribue dans 3 autres directions. Peut également stocker une certaine quantité d'articles. Utile pour diviser cette quantité afin d'approvisionner plusieurs tourelles ou des blocs d'artisanat. +block.junction.name = jonction +block.junction.fulldescription = Agit comme un pont pour deux transporteurs qui se croisent et qui possèdent différents articles. +block.conveyortunnel.name = tunnel de transport +block.conveyortunnel.fulldescription = Transporte des articles sous les blocs. Pour l'utiliser, placez les entre des blocs, au maximum deux. Assurez-vous que les deux tunnels sont orientés dans des directions opposées. +block.liquidjunction.name = jonction à liquide +block.liquidjunction.fulldescription = Agit comme un pont pour deux conduits. Utile dans la situations ou deux conduits se croisent et transportent différents liquides. +block.liquiditemjunction.name = jonction de liquide-article +block.liquiditemjunction.fulldescription = Agit comme un pont pour croiser les conduits et les convoyeurs. +block.powerbooster.name = distributeur d'énergie +block.powerbooster.fulldescription = Distribue la puissance à tous les blocs avoisinants dans une zone circulaire. +block.powerlaser.name = laser d'énergie +block.powerlaser.fulldescription = Crée un laser qui transmet la puissance au bloc en face de lui. Ne génère pas d'énergie par lui-même. Idéal avec des générateurs ou d'autres lasers. +block.powerlaserrouter.name = routeur laser +block.powerlaserrouter.fulldescription = Laser qui distribue la puissance à trois directions à la fois. Utile pour séparer l'énergie afin d'alimenter plusieurs blocs +block.powerlasercorner.name = laser en angle droit +block.powerlasercorner.fulldescription = Laser qui distribue la puissance à deux directions en angle droit. Utile pour séparer l'énergie afin d'alimenter plusieurs blocs. +block.teleporter.name = téléporteur +block.teleporter.fulldescription = Bloc de transport avancé. Les téléporteurs saisissent des articles aux autres téléporteurs de la même couleur. Ne fait rien si aucun téléporteur de la même couleur n'existe. Si plusieurs téléporteurs existent de la même couleur, un téléporteur aléatoire est sélectionné. Utilise de l'énergie. Cliquez pour changer de couleur. +block.sorter.name = trieur +block.sorter.fulldescription = Trie l'article par type de matériau. Le matériau à accepter est indiqué par la couleur du bloc. Tous les éléments qui correspondent au matériau de tri sont sortis vers l'avant, tout le reste est sorti à gauche et à droite. +block.core.name = noyau +block.pump.name = pompe +block.pump.fulldescription = Pompe les liquides provenant d'un bloc source - généralement de l'eau, de la lave ou de l'huile. Transmet le liquide dans les conduits voisins. +block.fluxpump.name = pompe à flux +block.fluxpump.fulldescription = Une version avancée de la pompe. Stocke plus et pompe le liquide plus rapidement que la pompe ordinaire. +block.smelter.name = fonderie +block.smelter.fulldescription = Le bloc d'artisanat essentiel. Produit de l'acier lorsqu'il est approvisionné en fer et charbon. Il est conseillé d'introduire le fer et le charbon par différents transporteurs pour éviter les situations de débordement. +block.crucible.name = Crucible +block.crucible.fulldescription = Un bloc d'artisanat avancé. Produit du diridium lorsqu'il est approvisionné en fer, en titanium et en charbon . Il est conseillé d'introduire ces minerais par différents transporteurs. +block.coalpurifier.name = raffinerie de charbon +block.coalpurifier.fulldescription = Un bloc d'artisanat de base. Produit du charbon lorsqu'il est fourni avec de grandes quantités d'eau et de pierre. +block.titaniumpurifier.name = raffinerie de titane +block.titaniumpurifier.fulldescription = Un bloc d'artisanat avancé. Produit du titane lorsqu'il est fourni avec de grandes quantités d'eau et de fer. +block.oilrefinery.name = raffinerie de pétrole +block.oilrefinery.fulldescription = Un bloc d'artisanat standard. Affine de grandes quantités de pétrole grâce au charbon. Utile pour alimenter les tourelles à charbon lorsque les filons de charbon sont rares. +block.stoneformer.name = raffinerie de pierre +block.stoneformer.fulldescription = Un bloc d'artisanat standard. Il purifie la lave en pierre. Utile pour produire des quantités massives de pierre. +block.lavasmelter.name = fonderie d'acier +block.lavasmelter.fulldescription = Un bloc d'artisanat de base. Utilise la lave pour convertir le fer en acier. Une alternative aux fonderies. Utile dans les situations où le charbon est rare. +block.stonedrill.name = extracteur de pierre +block.stonedrill.fulldescription = L'extracteur essentiel. Lorsqu'il est placé sur de la pierre, il l'extrait à un rythme rapide. +block.irondrill.name = extracteur de fer +block.irondrill.fulldescription = Un extracteur de base. Lorsqu'ils il est placé sur un minerai de charbon, il l'extrait à un rythme régulier. +block.coaldrill.name = extracteur de charbon +block.coaldrill.fulldescription = Un extracteur de base. Lorsqu'il est placé sur un minerai de charbon, il l'extrait à un rythme régulier. +block.uraniumdrill.name = extracteur d'uranium +block.uraniumdrill.fulldescription = Un extracteur avancé .Lorsqu'il est placé sur un minerai d'uranium, il l'extrait lentement. +block.titaniumdrill.name = extracteur de titane +block.titaniumdrill.fulldescription = Un extracteur avancé. Lorsqu'il est placé sur un minerai de titane, il l'extrait lentement. +block.omnidrill.name = omni-extracteur +block.omnidrill.fulldescription = L'extracteur ultime .Minera n'importe quel minerai sur lequel il est placé à un rythme rapide. +block.coalgenerator.name = générateur à charbon +block.coalgenerator.fulldescription = Le générateur essentiel. Génère de l'énergie à partir du charbon. eparpille l'énergie de ses 4 cotés. +block.thermalgenerator.name = générateur thermique +block.thermalgenerator.fulldescription = Génère de l'énergie à partir de la lave. éparpille l'énergie de ses 4 cotés. +block.combustiongenerator.name = générateur à combustion +block.combustiongenerator.fulldescription = Génère de l'énergie à partir du pétrole. éparpille l'énergie de ses 4 cotés. +block.rtgenerator.name = Générateur RTG +block.rtgenerator.fulldescription = Génère de petites quantités d'énergie à partir d'uranium. éparpille l'énergie de ses 4 cotés +block.nuclearreactor.name = réacteur nucléaire +block.nuclearreactor.fulldescription = Une version avancée du générateur RTG ,et le générateur d'énergie ultime. Génère de l'énergie à partir de l'uranium. Nécessite un refroidissement à eau constant. Hautement inflammable; explosera violemment si des quantités insuffisantes de liquide de refroidissement sont fournies. +block.turret.name = tourelle +block.turret.fulldescription = Une tourelle basique et bon marché. Utilise la pierre pour munition. A légèrement plus de portée que la double-tourelle. +block.doubleturret.name = tourelle double +block.doubleturret.fulldescription = Une version légèrement plus puissante de la tourelle. Utilise la pierre comme munition. Fait beaucoup plus de dégâts, mais a une portée inférieure. +block.machineturret.name = tourelle gattling +block.machineturret.fulldescription = Une tourelle complète standard. Utilise le fer pour munition. A une vitesse de tir rapide avec des dégâts décents. +block.shotgunturret.name = tourelle fusil à pompe. +block.shotgunturret.fulldescription = Une tourelle standard. Utilise le fer pour munition. Tire une portée de 7 balles. Portée basse, mais plus de dégâts que la tourelle gattling. +block.flameturret.name = tourelle incendiaire +block.flameturret.fulldescription = Tourelle avancée à courte portée. Utilise du charbon pour munition. A une portée très faible, mais des dégâts très élevés. Bon pour les places étroites. Recommandé pour tirer à travers les murs. +block.sniperturret.name = Tourelle laser +block.sniperturret.fulldescription = Tourelle avancée à longue portée. Utilise l'acier pour munition. Dommages très élevés, mais faible vitesse de tir. Chère, mais peut être placé loin des lignes ennemies en raison de sa portée. +block.mortarturret.name = Tourelle Antiaérienne +block.mortarturret.fulldescription = Tourelle avancée à fragmentation de faible précision. Utilise du charbon pour munition. Tire un barrage de balles qui explose en éclats. Utile pour les grandes foules d'ennemis. +block.laserturret.name = Tourelle Laser +block.laserturret.fulldescription = Tourelle à cible unique avancée. Utilise de l'énergie. Bonne tourelle polyvalente de moyenne portée. Une seule cible seulement. Ne manque jamais. +block.waveturret.name = Tourelle Tesla +block.waveturret.fulldescription = Tourelle multi-cible avancée. Utilise de l'énergie. Portée moyenne. Ne manque jamais sa cible. Peu de dégâts, mais peut frapper plusieurs ennemis simultanément avec sa répétition d'éclair. +block.plasmaturret.name = Tourelle à plasma +block.plasmaturret.fulldescription = Version très avancée de la tourelle incendiaire. Utilise le charbon comme munition. Dommages très élevés, de faible à moyenne portée. +block.chainturret.name = Tourelle à répétition. +block.chainturret.fulldescription = La tourelle ultime à tir rapide. Utilise l'uranium comme munition. Tire de grosses salves à une vitesse de feu élevée. Portée moyenne. Traverse plusieurs carreaux. Extrêmement résistante. +block.titancannon.name = Cannon Titan +block.titancannon.fulldescription = La tourelle à longue portée ultime. Utilise l'uranium comme munition. Tire de gros obus à dégâts de zone à une cadence de tir moyenne. Longue portée. occupe plusieurs blocks. Extrêmement dur. +block.playerspawn.name = point d'apparition joueur +block.enemyspawn.name = Point d'apparition ennemie diff --git a/core/assets/bundles/bundle_fr_FR.properties b/core/assets/bundles/bundle_fr_FR.properties deleted file mode 100644 index a130df79a2..0000000000 --- a/core/assets/bundles/bundle_fr_FR.properties +++ /dev/null @@ -1,470 +0,0 @@ -text.about=Créé par [ROYAL]Anuken.[]\nÀ l'origine une entrée dans le [orange]GDL[] MM Jam.\n\n Crédits:\n- Effets sonores réalisés avec [YELLOW]bfxr[]\n- Musique faite par [GREEN]RoccoW[] / trouvé sur [lime]FreeMusicArchive.org[]\n\n Un grand merci à:\n- [coral]MitchellFJN[]: test de jeu étendu et rétroaction\n- [sky]Luxray5474[]: wiki travail, contribution de code\n- Tous les bêta-testeurs sur itch.io et Google Play\n -text.discord=Rejoignez le discord de Mindustry! -text.gameover=Le Noyau a été détruit. -text.highscore=[YELLOW]Nouveau record -text.lasted=Vous avez survécu jusqu'à la vague -text.level.highscore=Meilleur Score : [accent] {0} -text.level.delete.title=Confirmation de la suppression -text.level.delete=Êtes-vous sûr de vouloir supprimer \nla carte "[orange]{0}" ? -text.level.select=Sélection de niveau -text.level.mode=Mode de jeu : -text.savegame=Sauvegarder la partie -text.loadgame=Chargement du jeu -text.quit=Quitter -text.tutorial.back=< Précédent -text.tutorial.next=Suivant > -text.save.new=Nouvelle Sauvegarde -text.save.overwrite=Êtes-vous sûr de vouloir remplacer \ncet emplacement de sauvegarde ? -text.overwrite=Écraser -text.save.none=Aucune sauvegarde trouvée ! -text.saveload=[accent]Sauvegarde... -text.savefail=Échec de la sauvegarde du jeu ! -text.save.delete.confirm=Êtes-vous sur de vouloir supprimer cette sauvegarde ? -text.save.delete=Supprimer -text.save.export=Exporter une sauvegarde -text.save.import.invalid=[orange]Cette sauvegarde est invalide ! -text.save.import.fail=[crimson]Erreur pour exporter cette sauvegarde : [orange]{0} -text.save.export.fail=[crimson]Erreur pour exporter cette sauvegarde : [orange]{0} -text.save.import=Importer une sauvegarde -text.save.newslot=Nom de la sauvegarde : -text.save.rename=Renommer -text.save.rename.text=nouveau nom : -text.selectslot=Sélectionnez une sauvegarde. -text.selectslot=Sélectionnez un emplacement de sauvegarde. -text.slot=[accent]Emplacement {0} -text.save.corrupted=[orange]Ficher de sauvegarde invalide ou corrompu ! -text.empty= -text.on=On -text.off=Off -text.save.autosave=Sauvegarde auto : {0} -text.save.map=Carte : {0} -text.save.wave=Vague {0} -text.save.date=Enregistré le {0} -text.confirm=Confirmer -text.delete=Effacer -text.ok=Ok -text.open=Ouvrir -text.cancel=Annuler -text.openlink=Ouvrir le lien -text.back=Retour -text.quit.confirm=Êtes-vous sûr de vouloir quitter ? -text.loading=[accent]Chargement... -text.wave=[orange]Vague {0} -text.wave.waiting=Vague dans {0} -text.waiting=Attendre... -text.countdown=Vague dans ... {0} -text.enemies={0} Ennemis restants -text.enemies.single={0} Ennemi restant -text.loadimage=Chargement de l'image -text.saveimage=Enregistrer l'image -text.editor.badsize=[orange]Dimensions de l'image incorrectes![]\n Dimensions de carte valides: {0} -text.editor.errorimageload=Erreur lors du chargement du fichier image:\n[orange]{0} -text.editor.errorimagesave=Erreur lors de l'enregistrement du fichier image:\n[orange]{0} -text.editor.generate=Générer -text.editor.resize=Redimensionner -text.editor.loadmap=Chargement de la carte -text.editor.savemap=Enregistrer la carte -text.editor.loadimage=Chargement de l'image -text.editor.saveimage=Enregistrer l'image -text.editor.unsaved=[scarlet]Vous avez des changements non enregistrés![]\n Êtes-vous sûr de vouloir quitter? -text.editor.brushsize=Taille du pinceau: {0} -text.editor.noplayerspawn=Cette carte n'a pas de point d'apparition de joueur! -text.editor.manyplayerspawns=Les cartes ne peuvent pas avoir plus \nd'un point d'apparition! -text.editor.manyenemyspawns=Ne peut pas avoir plus de \n{0} points de réapparition ennemis! -text.editor.resizemap=Redimensionner la carte -text.editor.resizebig=[scarlet]Attention! \n[]Les cartes de plus de 256 unités peuvent être décalées et instables! -text.editor.mapname=Nom de la carte: -text.editor.overwrite=[accent]Attention! \nCela écrase une carte existante -text.editor.failoverwrite=[crimson]Impossible d'écraser la carte par défaut! -text.editor.selectmap=Sélectionnez une carte à charger: -text.width=Largeur: -text.height=Hauteur: -text.randomize=Aléatoire -text.apply=Appliquer -text.update=Mettre à jour -text.menu=Menu -text.play=Jouer -text.load=Charger -text.save=Sauvegarder -text.settings=paramètres -text.tutorial=Tutoriel -text.editor=Editeur -text.mapeditor=Éditeur de carte -text.donate=Faire un don -text.settings.reset=Remettre les paramètres par défaut -text.settings.controls=Controles -text.settings.game=Jeu -text.settings.sound=Son -text.settings.graphics=Graphismes -text.upgrades=Mises à niveau -text.purchased=[LIME]Acheté! -text.weapons=Armes -text.paused=Pause -text.respawn=Réapparition dans -text.error.title=[crimson]Une erreur est survenue -text.error.crashmessage=[SCARLET]Une erreur inattendue s'est produite qui aurait causé un crash. []Veuillez indiquer les circonstances exactes dans lesquelles cette erreur s'est produite pour le développeur: \n[ORANGE]anukendev@gmail.com[] -text.error.crashtitle=Une erreur est survenue -text.blocks.extrainfo=[accent]Informations supplémentaires sur les blocs: -text.blocks.blockinfo=Bloquer les infos -text.blocks.powercapacity=Capacité Electrique -text.blocks.powershot=Puissance/Tir -text.blocks.powersecond=Puissance/Seconde -text.blocks.powerdraindamage=Drain de puissance/Dégats -text.blocks.shieldradius=Rayon de bouclier -text.blocks.itemspeedsecond=Vitesse/objet -text.blocks.range=Portée -text.blocks.size=Taille -text.blocks.powerliquid=Puissance/Liquide -text.blocks.maxliquidsecond=Max liquide/Seconde -text.blocks.liquidcapacity=Capacité Liquide -text.blocks.liquidsecond=Liquide/Seconde -text.blocks.damageshot=Dégats/Tirs -text.blocks.ammocapacity=Capacité de munitions -text.blocks.ammo=Munitions -text.blocks.ammoitem=Munitions/objet -text.blocks.maxitemssecond=Max d'objet/Seconde -text.blocks.powerrange=Portée de la Puissance -text.blocks.lasertilerange=Portée du carreau Laser -text.blocks.capacity=Capacité -text.blocks.itemcapacity=Capacité de l'objet -text.blocks.powergenerationsecond=Génération d'énergie/seconde -text.blocks.generationsecondsitem=Génération secondes/item -text.blocks.input=Carburant -text.blocks.inputliquid=Liquide d'entrée -text.blocks.inputitem=Élément d'entrée -text.blocks.output=Sortie -text.blocks.secondsitem=Secondes/Article -text.blocks.maxpowertransfersecond=Transfert de puissance maximum/seconde -text.blocks.explosive=Hautement explosif! -text.blocks.repairssecond=Réparations/seconde -text.blocks.health=Santé -text.blocks.inaccuracy=Présicion -text.blocks.shots=Tirs -text.blocks.shotssecond=Tirs/seconde -text.placemode=Mode Placement -text.breakmode=Mode Démolition -text.health=Santé -setting.saveinterval.name=Intervalle de la sauvegarde automatique -setting.seconds={0} Secondes -setting.difficulty.easy=Facile -setting.difficulty.normal=Normal -setting.difficulty.hard=Difficile -setting.difficulty.name=Difficulté -setting.screenshake.name=Vibration de l'écran -setting.smoothcam.name=Mouvements de la caméra lissés -setting.indicators.name=Indicateurs d'ennemis -setting.effects.name=Afficher les effets -setting.sensitivity.name=Sensibilité de la manette -setting.fps.name=Afficher FPS -setting.vsync.name=VSync -setting.lasers.name=Afficher les lasers d'énergie -setting.healthbars.name=Afficher les barres de santés d'une entitée -setting.pixelate.name=Écran Pixélisé -setting.musicvol.name=Volume de la musique -setting.mutemusic.name=Musique muette -setting.sfxvol.name=Volume des effets sonores -setting.mutesound.name=Son muet -map.maze.name=Labyrinthe -map.fortress.name=Forteresse -map.sinkhole.name=Gouffre -map.caves.name=Cavernes -map.volcano.name=Volcan -map.caldera.name=Caldera -map.scorch.name=Terres Brûlée -map.desert.name=Désert -map.island.name=île -map.grassland.name=Prairie -map.tundra.name=Toundra -map.spiral.name=Spirale -map.tutorial.name=Tutoriel -tutorial.intro.text=[yellow]Bienvenue dans le tutoriel.[] Pour commencer, appuyez sur "Suivant" -tutorial.moveDesktop.text=Pour vous déplacer, utilisez les touches [orange][[WASD (pour qwerty) ou ZQSD (pour azerty)][] . Maintenir [orange]MAJ[] active le Booster. Maintenir [orange]CTRL[] en utilisant la [orange]molette[] pour faire un zoom avant ou arrière. -tutorial.shootInternal.text=Utilisez votre souris pour viser, maintenez [orange]le clic gauche de la souris[] pour tirer. Essayez de vous entraîner sur la [yellow]cible[]. -tutorial.moveAndroid.text=Pour déplacer la vue, faites glisser un doigt sur l'écran. Pincez et faites glisser pour effectuer un zoom avant ou arrière. -tutorial.placeSelect.text=Essayez de sélectionner un [yellow]tapis roulant[] du menu à bloc en bas à droite. -tutorial.placeConveyorDesktop.text=Utilisez la [orange]molette[] pour faire tourner le tapis roulant afin de l'orienter vers l'[orange]avant[], puis placez-le dans l'[yellow]emplacement marqué[] en utilisant le [orange]clic gauche de la souris[]. -tutorial.placeConveyorAndroid.text=Utilisez le [orange]bouton de rotation[] pour faire tourner le tapis roulant afin de l'orienter vers l'[orange]avant[], faites-le glisser puis puis placez-le dans l'[yellow]emplacement marqué[]. -tutorial.placeConveyorAndroidInfo.text=Vous pouvez également appuyer sur l'icône oeil en bas à gauche pour passer en [orange]mode tactile[]et placez des blocs en tapant sur l'écran. En mode tactile, les blocs peuvent être pivotés avec la flèche en bas à gauche. Pressez [yellow]prochain[] pour l'essayer -tutorial.placeDrill.text=Maintenant, sélectionnez et placez un [yellow]extracteur de pierre[] à l'endroit marqué -tutorial.blockInfo.text=Si vous voulez en savoir plus sur un bloc, vous pouvez appuyer sur le [orange]point d'intérrogation[] en haut à droite pour lire sa description. -tutorial.deselectDesktop.text=Vous pouvez désélectionner un bloc en appuyant sur le [orange]clic droit de la souris[]. -tutorial.deselectAndroid.text=Vous pouvez désélectionner un bloc en appuyant sur le bouton [orange]X[]. -tutorial.drillPlaced.text=L'extracteur va maintenant produire [yellow]de la pierre,[] la sortir sur le tapis roulant, et le déplacer dans le [Yellow]noyau[]. -tutorial.drillInfo.text=Les différents minerais ont besoin d'extracteurs différents. La pierre nécessite des extracteurs de pierre, le fer nécessite des extracteurs de fer, etc. -tutorial.drillPlaced2.text=Le déplacement de minerais dans le noyau les placent dans votre [yellow]inventaire[], en haut à gauche. Le placement de blocs utilise des minerais de votre inventaire. -tutorial.moreDrills.text=Vous pouvez relier plusieurs extracteurs et tapis roulants ensemble, comme ça. -tutorial.deleteBlock.text=vous pouvez supprimer des blocs en utilisant le [orange]clic droit de la souris[] sur le bloc que vous voulez supprimer. Essayez de supprimer ce tapis roulant. -tutorial.deleteBlockAndroid.text=Vous pouvez supprimer des blocs en sélectionnant l'oeil[] dans le [orange]menu en mode pause[] en bas à gauche et en tapant un bloc. Essayez de supprimer ce tapis roulant. -tutorial.placeTurret.text=Maintenant, sélectionnez et placez une [yellow]tourelle[] [yellow]à l'endroit marqué[]. -tutorial.placedTurretAmmo.text=La tourelle va maintenant accepter les [yellow]munitions[] venant du tapis roulant. vous pouvez voir combien de munitions il reste en la touchant et en regardant la [green]barre verte[]. -tutorial.turretExplanation.text=Les tourelles tirent automatiquement sur l'ennemi le plus proche et à portée de tir si elles ont des munitions. -tutorial.waves.text=Toutes les [yellow]60[] secondes, une vague d'[coral]ennemis[] apparaîtra dans des endroits spécifiques et tentera de détruire le noyau. -tutorial.coreDestruction.text=Votre objectif est de [yellow]défendre le noyau[]. Si le noyau est détruit, vous [coral]perdez la partie[]. -tutorial.pausingDesktop.text=Si vous avez besoin de mettre en pause, appuyer sur le [orange]boutton pause[] en haut à gauche ou sur [orange]la touche espace[]. Vous pourrez toujours sélectionner et placer des blocs mais vous ne pourrez bouger ou tirer. -tutorial.pausingAndroid.text=Si vous avez besoin de mettre en pause, appuyer sur le [orange]boutton pause[] en haut à gauche. Vous pourez toujours sélectionner et placer des blocs. -tutorial.purchaseWeapons.text=Vous pouvez acheter de nouvelles [yellow]armes[] pour votre mecha en ouvrant le menu des améliorations en bas à gauche. -tutorial.switchWeapons.text=Changez d'armes en cliquant sur leur icône en bas à gauche, ou en utilisant les chiffres [orange][[1-9][]. -tutorial.spawnWave.text=Une vague est en train d'arriver. Détruisez-la. -tutorial.pumpDesc.text=Pour les vagues suivantes, Vous pourriez avoir besoin de la [yellow]pompe[] pour alimenter les générateurs avec certains liquides. -tutorial.pumpPlace.text=Les pompes fonctionnent comme les extracteurs à l'exception qu'elles produisent un liquide et non un minerai. Essayez de placer une pompe sur [yellow]la flaque d'huile désignée[]. -tutorial.conduitUse.text=Maintenant, placez un [orange]conduit[] pour récupérer la production de la pompe. -tutorial.conduitUse2.text=Et un autre... -tutorial.conduitUse3.text=Et encore un autre... -tutorial.generator.text=Maintenant, placez un [orange]générateur à combustion[] à la fin des conduits. -tutorial.generatorExplain.text=Ce générateur va maintenant créer de l'[yellow]énergie[] à partir de l'huile. -tutorial.lasers.text=L'énergie peut-être redistribuée en utilisant les [yellow]lasers énergétiques[]. Placez-en un. -tutorial.laserExplain.text=Le générateur va maintenant distribuer de l'énergie à travers le laser. Un faisceau [yellow]opaque[] signifie une transmission d'énergie, et un faisceau [yellow]transparent[] signifie qu'il n'en transmet pas. -tutorial.laserMore.text=Vous pouvez vérifier le niveau énergétique d'un bloc en le sélectionnant et en regardant la [yellow]barre jaune[] au-dessus du bloc. -tutorial.healingTurret.text=Ce laser peut-être utilisé pour alimenter une [lime]tourelle réparatrice[]. Placez-en une ici. -tutorial.healingTurretExplain.text=Tant qu'elle sera alimentée, cette tourelle va [lime]réparer les blocs voisins.[] Lorsque vous jouez, assurez-vous d'en avoir le plus rapidement possible ! -tutorial.smeltery.text=Beaucoup de blocs ont besoin d'[orange]acier[]. Pour en fabriquer, il faut une [orange]fonderie[]. Placez-en une ici. -tutorial.smelterySetup.text=La fonderie produit maintenant de l'[orange]acier[] avec le charbon et le fer. -tutorial.end.text=Vous avez fini le tutoriel! Bien joué! -keybind.move_x.name=déplacement_x -keybind.move_y.name=déplacement_y -keybind.select.name=sélectionner -keybind.break.name=casser -keybind.shootInternal.name=tirer -keybind.zoom_hold.name=maintenir_pour_zoomer -keybind.zoom.name=zoomer -keybind.menu.name=menu -keybind.pause.name=pause -keybind.dash.name=accélération -keybind.rotate_alt.name=tourner_alt -keybind.rotate.name=tourner -keybind.weapon_1.name=arme_1 -keybind.weapon_2.name=arme_2 -keybind.weapon_3.name=arme_3 -keybind.weapon_4.name=arme_4 -keybind.weapon_5.name=arme_5 -keybind.weapon_6.name=arme_6 -mode.waves.name=vagues -mode.sandbox.name=bac à sable -mode.freebuild.name=construction -weapon.blaster.name=Blaster -weapon.blaster.description=Tire une balle lente et faible. -weapon.triblaster.name=Triple blaster -weapon.triblaster.description=Tire 3 balles dans une propagation. -weapon.multigun.name=Mitrailleuse -weapon.multigun.description=Tire des balles imprécises mais avec une haute cadance de feu. -weapon.flamer.name=Lance-flamme -weapon.flamer.description=Tire une colonne de feu. -weapon.railgun.name=Fusil a énergie -weapon.railgun.description=Tire une balle à longue portée. -weapon.mortar.name=Mortier -weapon.mortar.description=Tire sur un obus lent mais explosif. -item.stone.name=pierre -item.iron.name=fer -item.coal.name=charbon -item.steel.name=acier -item.titanium.name=titane -item.dirium.name=dirium -item.thorium.name=thorium -liquid.water.name=eau -liquid.plasma.name=plasma -liquid.lava.name=lave -liquid.oil.name=pétrole -block.air.name=air -block.blockpart.name=blockpart -block.deepwater.name=eau profonde -block.water.name=eau -block.lava.name=lave -block.oil.name=pétrole -block.stone.name=pierre -block.blackstone.name=pierre noir -block.iron.name=fer -block.coal.name=charbon -block.titanium.name=titane -block.thorium.name=thorium -block.dirt.name=terre -block.sand.name=sable -block.ice.name=glace -block.snow.name=neige -block.grass.name=herbe -block.sandblock.name=bloc de sable -block.snowblock.name=bloc de neige -block.stoneblock.name=block de pierre -block.blackstoneblock.name=bloc de pierre noire -block.grassblock.name=block d'herbe -block.mossblock.name=bloc de mousse -block.shrub.name=arbuste -block.rock.name=rocher -block.icerock.name=rocher glacé -block.blackrock.name=rocher noir -block.dirtblock.name=bloc de pousière -block.stonewall.name=mur de pierre -block.stonewall.fulldescription=Un bloc défensif bon marché. Utile pour protéger le noyau et les tourelles dans les premières vagues. -block.ironwall.name=mur de fer -block.ironwall.fulldescription=Un bloc défensif de base. Fournit une protection contre les ennemis. -block.steelwall.name=mur d'acier -block.steelwall.fulldescription=Un bloc défensif standard. une protection adéquate contre les ennemis. -block.titaniumwall.name=mur de titane -block.titaniumwall.fulldescription=Un bloc défensif soldie. Fournit une protection contre les ennemis. -block.duriumwall.name=mur de dirium -block.duriumwall.fulldescription=Un bloc défensif très solide. Fournit une protection contre les ennemis. -block.compositewall.name=mur composite -block.steelwall-large.name=grand mur d'acier -block.steelwall-large.fulldescription=Un bloc défensif standard. Couvre plusieurs cases. -block.titaniumwall-large.name=grand mur de titane -block.titaniumwall-large.fulldescription=Un bloc défensif solide. Couvre plusieurs cases. -block.duriumwall-large.name=grand mur de dirium -block.duriumwall-large.fulldescription=Un bloc défensif très solide. Couvre plusieurs cases. -block.titaniumshieldwall.name=mur blindé -block.titaniumshieldwall.fulldescription=Un bloc défensif résistant, avec un bouclier intégré supplémentaire. Nécessite de l'énergie. Utilise l'énergie pour absorber les balles ennemies. Il est recommandé d'utiliser des boosters de puissance pour fournir de l'énergie à ce bloc. -block.repairturret.name=tourelle de réparation -block.repairturret.fulldescription=Répare les blocs endommagés à portée à un rythme lent. Utilise de petites quantités d'énergie. -block.repairturret.description=[powerinfo]Utilise de l'énergie[white]\nRépare les bloc à proximité. -block.megarepairturret.name=tourelle de réparation II -block.megarepairturret.fulldescription=Répare les blocs endommagés à porté à un rythme moyen. Utilise de l'énergie. -block.megarepairturret.description=[powerinfo]Utilise de l'énergie[white]\nRépare les bloc à proximité. -block.shieldgenerator.name=générateur de bouclier -block.shieldgenerator.fulldescription=Un bloc défensif avancé. Protège tous les blocs dans un rayon des attaques. Utilise l'énergie à un rythme lent, mais draine l'énergie rapidement au contact des balles. -block.door.name=Porte -block.door.fulldescription=Un bloc qui peut être ouvert et fermé en le tapant. -block.door.description=Ouvre et ferme. \ N [interact] Appuyez pour ouvrir -block.door-large.name=Grande Porte -block.door-large.fulldescription=Un bloc qui peut être ouvert et fermé en le tapant. -block.door-large.description=Ouvre et ferme. \ N [interact] Appuyez pour ouvrir -block.conduit.name=conduit -block.conduit.fulldescription=Bloc de transport de liquide. Fonctionne comme un tapis roulant, mais avec des liquides. Peut-être connecté avec des pompes ou d'autres conduits. Peut-être utilisé comme un pont au-dessus des liquides pour les ennemis et les joueurs. -block.pulseconduit.name=conduit à pulsation -block.pulseconduit.fulldescription=Bloc de transport de liquide avancé. Transporte les liquides plus rapidement et stocke plus que les conduits standards. -block.liquidrouter.name=routeur de liquide -block.liquidrouter.fulldescription=Fonctionne de manière similaire à un routeur. Accepte l'entrée de liquide d'un côté et l'envoie vers les autres côtés. Utile pour séparer le liquide d'un seul conduit en plusieurs autres conduits. -block.liquidrouter.description=Divise le liquide d'entrée dans 3 directions. -block.conveyor.name=tapis roulant -block.conveyor.fulldescription=Bloc de transport élémentaire. Déplace les objets vers l'avant et les dépose automatiquement dans les tourelles ou les crafters. Rotatif. Peut être utilisé comme un pont sur les liquides pour les ennemis et les joueurs. -block.steelconveyor.name=tapis roulant en acier -block.steelconveyor.fulldescription=Bloc de transport d'élément avancé. Déplace les objets plus rapidement que les tapis roulants standard. -block.poweredconveyor.name=tapis roulant à pulsation -block.poweredconveyor.fulldescription=Le bloc de transport d'élément ultime. Déplace les objets plus rapidement que les tapis roulants en acier. -block.router.name=routeur -block.router.fulldescription=Accepte les éléments d'une direction et les redistribue dans les 3 autres directions. Peut également stocker une certaine quantité d'objets. Utile pour dédoubler les matériaux d'un extracteur dans plusieurs tourelles. -block.router.description=Diviser les matériaux d'entrée dans 3 directions. -block.junction.name=jonction -block.junction.fulldescription=Agit comme un pont pour deux tapis roulants croisé. Utile dans les situations avec deux tapis roulants différents transportant des matériaux différents se coupant. -block.junction.description=Sert de jonction de tapis roulant. -block.conveyortunnel.name=tunnel de transport -block.conveyortunnel.fulldescription=Transporte l'objet sous les blocs. Pour l'utiliser, placez les côte à côte, les entrées de chaque côté avec maximum deux blocs d'écart. -block.conveyortunnel.description=Transporte les objets sous les blocs. -block.liquidjunction.name=jonction pour liquide -block.liquidjunction.fulldescription=Agit comme un pont pour deux conduits de passage. Utile dans les situations avec deux conduits différents transportant différents liquides se coupant. -block.liquiditemjunction.name=jonction de liquides-objets -block.liquiditemjunction.fulldescription=Agit comme un pont quand un conduit coupe un tapis roulant. -block.liquiditemjunction.description=Sert de jonction pour les articles et les liquides. -block.powerbooster.name=Disperseur d'énergie -block.powerbooster.fulldescription=Distribue l'énergie à tous les blocs se trouvant dans son rayon. -block.powerbooster.description=Distribue la puissance dans un rayon. -block.powerlaser.name=laser d'énergie -block.powerlaser.fulldescription=Crée un laser qui transmet l'énergie au bloc en face de lui. Ne génère pas d'énergie lui-même. Idéal avec des générateurs ou d'autres lasers. -block.powerlaser.description=Transmet l'énergie. -block.powerlaserrouter.name=routeur laser -block.powerlaserrouter.fulldescription=Laser qui distribue la puissance dans trois directions à la fois. Utile dans les situations où il est nécessaire d'alimenter plusieurs blocs avec un seul générateur. -block.powerlaserrouter.description=Divise l'énergie d'entrée en 3 lasers. -block.powerlasercorner.name=laser d'angle -block.powerlasercorner.fulldescription=Laser qui distribue la puissance dans deux directions à la fois. Utile dans les situations où il est nécessaire d'alimenter plusieurs blocs avec un seul générateur, et, où, un routeur est imprécis. -block.powerlasercorner.description=Divise l'énergie d'entrée en 2 lasers. -block.teleporter.name=téléporteur -block.teleporter.fulldescription=Bloc de transport de minerai avancé. Les téléporteurs transmettent des objets à d'autres téléporteurs de la même couleur. Ne fait rien si aucun téléporteur de la même couleur n'existe. Si plusieurs téléporteurs de la même couleur existent, un téléporteur aléatoire est sélectionné. Cliquez sur les flèches pour changer de couleur. -block.teleporter.description=[interact]Tapez sur le bloc pour le configurer[] -block.sorter.name=trieur -block.sorter.fulldescription=Trie les objets par type de matériau. Le matériel à accepter est indiqué par la couleur dans le bloc. Tous les éléments qui correspondent au matériau de tri sont sortis vers l'avant, tout le reste est sorti à gauche et à droite. -block.sorter.description=[interact]Tapez sur le bloc pour le configurer[] -block.core.name=noyau -block.pump.name=pompe -block.pump.fulldescription=Pompe les liquides provenant d'un bloc source - généralement de l'eau, de la lave ou de l'huile. distribut le liquide dans les conduits voisins. -block.pump.description=Pompe les liquides dans les conduits voisins. -block.fluxpump.name=pompe à flux élevé -block.fluxpump.fulldescription=Une version avancée de la pompe. Stocke plus de liquide et pompe le liquide plus rapidement. -block.fluxpump.description=Pompe les liquides dans les conduits voisins. -block.smelter.name=fonderie -block.smelter.fulldescription=Le bloc d'artisanat essentiel. Lorsqu'est entré 1 fer et 1 charbon, un acier est produit. -block.smelter.description=Convertit le charbon + le fer en acier. -block.crucible.name=creuset -block.crucible.fulldescription=Un bloc d'artisanat avancé. Lors de l'entrée d'un titane et d'un acier, un dirium en sort. -block.crucible.description=Convertit l'acier + le titane en dirium. -block.coalpurifier.name=convertisseur de charbon -block.coalpurifier.fulldescription=Un bloc de conversion de base. Produit du charbon lorsqu'on lui fourni de grandes quantités d'eau et de pierre. -block.coalpurifier.description=Convertit la pierre + l'eau en charbon. -block.titaniumpurifier.name=convertisseur de titane -block.titaniumpurifier.fulldescription=Un bloc de conversion standard. Produit du titane lorsqu'est fourni de grandes quantités d'eau et de fer. -block.titaniumpurifier.description=Convertit le fer + l'eau en titane. -block.oilrefinery.name=raffinerie de pétrole -block.oilrefinery.fulldescription=Raffine de grandes quantités de pétrole en charbon. Utile pour alimenter les tourelles à charbon lorsque les filons de charbon sont rares. -block.oilrefinery.description=Convertit l'huile en charbon. -block.stoneformer.name=fabrique de pierre -block.stoneformer.fulldescription=Il transforme la lave en pierre. Utile pour produire des quantités massives de pierre pour les convertisseurs de charbon. -block.stoneformer.description=Convertit la lave en pierre. -block.lavasmelter.name=fonderie de lave -block.lavasmelter.fulldescription=Utilise la lave pour convertir le fer en acier. Une alternative aux fonderies. Utile dans les situations où le charbon est rare. -block.lavasmelter.description=Convertit le fer + la lave en acier. -block.stonedrill.name=extracteur de pierre -block.stonedrill.fulldescription=L'extracteur essentiel. Lorsqu'il est placé sur des cases de pierre, les pierres sont produitent à un rythme lent, indéfiniment. -block.stonedrill.description=Mine 1 pierre toutes les 4 secondes. -block.irondrill.name=extracteur de fer -block.irondrill.fulldescription=Un extracteur de base. Lorsqu'il est placé sur des cases de minerai de fer, produit du fer à un rythme lent, indéfiniment. -block.irondrill.description=Mine 1 fer toutes les 5 secondes. -block.coaldrill.name=extracteur de charbon -block.coaldrill.fulldescription=Un extracteur de base. Lorsqu'il est placé sur des cases de minerai de charbon, produit du charbon à un rythme lent, indéfiniment. -block.coaldrill.description=Mine 1 charbon toutes les 5 secondes. -block.thoriumdrill.name=extracteur d'thorium -block.thoriumdrill.fulldescription=Un extracteur avancé. Lorsqu'il est placés sur des cases d'thorium, il produit de l'thorium à un rythme lent, indéfiniment. -block.thoriumdrill.description=Mine 1 thorium toutes les 7 secondes. -block.titaniumdrill.name=extracteur de titane -block.titaniumdrill.fulldescription=Un extracteur avancé. Lorsqu'il est placé sur des cases de minerai de titane, il produit du titane à un rythme lent, indéfiniment. -block.titaniumdrill.description=Mine 1 titane toutes les 5 secondes. -block.omnidrill.name=omni-extracteur -block.omnidrill.fulldescription=L'extracteur ultime. Exploitera n'importe quel minerai sur lequel il est placé à un rythme rapide. -block.omnidrill.description=Mine 1 de toute ressource toutes les 3 secondes. -block.coalgenerator.name=générateur à charbon -block.coalgenerator.fulldescription=Le générateur essentiel. Génère de l'énergie à partir du charbon. Des lasers d'énergies sortent des 4 côtés. -block.coalgenerator.description=Génère de la puissance depuis du charbon. -block.thermalgenerator.name=Générateur thermique -block.thermalgenerator.fulldescription=Génère de la puissance depuis la lave. Emet de la puissance depuis les 4 cotés. -block.thermalgenerator.description=Génère de la puissance depuis la lave. -block.combustiongenerator.name=Générateur a combustion -block.combustiongenerator.fulldescription=Génère de la puissance depuis du petrole. Emet de la puissance depuis les 4 cotés. -block.combustiongenerator.description=Génère de la puissance avec du pétrole. -block.rtgenerator.name=Générateur RTG -block.rtgenerator.fulldescription=Génère de petites partie de puissance avec de l'thorium. Emet de la puissance depuis les 4 cotés. -block.rtgenerator.description=Génère de la puissance depuis l'thorium -block.nuclearreactor.name=Réacteur nucléaire -block.nuclearreactor.fulldescription=Une version avancée du générateur RTG, et le générateur ultime de puissance. Génère de la puissance depuis l'thorium. Requiert un refoidissement par eau. Très instable; Explose violemment s'il n'est pas bien refroidit. -block.turret.name=tourelle -block.turret.fulldescription=Une tourrelle basique. Utilise de la pierre comme munition. A légèrement plus de distance que la tourelle double. -block.turret.description=[turretinfo]Munition: pierre -block.doubleturret.name=tourelle double -block.doubleturret.fulldescription=Une version légèrement plus puissante que la tourelle. Utilise de la pierre comme munition. Inflige plus de dégâts mais a une distance plus faible. Tire deux balles. -block.doubleturret.description=[turretinfo]Munition: pierre -block.machineturret.name=tourelle gatling -block.machineturret.fulldescription=Une tourelle rotative. Utilise du fer comme munition. A une cadence de tir avec des dégâts croissants. -block.machineturret.description=[turretinfo]Munition: fer -block.shotgunturret.name=tourelle à dispersion -block.shotgunturret.fulldescription=une tourelle basique. Utilise du fer comme munition. Tire 7 balles dispersées. Distance faible, mais inflige plus de dégâts que la tourelle gatling. -block.shotgunturret.description=[turretinfo]Munition: fer -block.flameturret.name=Tourelle lance-flamme -block.flameturret.fulldescription=Tourelle avancée à faible distance. Utilise le charbon comme munition. A une distance très faible, mais inflige beaucoup de dégâts. Fort au combat rapproché. Utilisation recommandé derrière les murs. -block.flameturret.description=[turretinfo]Munition: charbon -block.sniperturret.name=tourelle à énergie -block.sniperturret.fulldescription=Tourelle avancée à longue portée. Utilise l'acier pour les munitions. Dommages très élevés, mais faible cadence de tir. Cher à utiliser, mais peut-être placé loin des lignes ennemies en raison de sa portée. -block.sniperturret.description=[turretinfo]munition : acier -block.mortarturret.name=tourelle antiaérienne -block.mortarturret.fulldescription=Tourelle avancée pour les dégâts de zone. Utilise du charbon pour les munitions. Vitesse de tir et balles très lente mais de gros dégâts de cible et de zone. Utile pour les grandes foules d'ennemis. -block.mortarturret.description=[turretinfo]munition : charbon -block.laserturret.name=tourelle laser -block.laserturret.fulldescription=Tourelle avancée à cible unique. Utilise de l'énergie. Tourelle polyvalente de moyenne portée. Une seule cible seulement. Ne manque jamais. -block.laserturret.description=[turretinfo]Utilise de l'énergie. -block.waveturret.name=tourelle Tesla -block.waveturret.fulldescription=Tourelle multi-cible avancée utilisant de l'énergie. A une portée moyenne. Ne rate jamais sa cible. Elle provoque peu de dégâts mais peut frapper plusieurs ennemis simultanément avec une chaîne d'éclairs. -block.waveturret.description=[turretinfo]Utilise de l'énergie. -block.plasmaturret.name=tourelle à plasma -block.plasmaturret.fulldescription=Version très avancée de la tourelle lance-flamme. Utilise du charbon comme munition. Dommages très élevés, de faible à moyenne portée. -block.plasmaturret.description=[turretinfo]munition : charbon -block.chainturret.name=tourelle à mitrailleuse -block.chainturret.fulldescription=La tourelle ultime à tir rapide. Utilise de l'thorium comme munition. Tire de grosses salves à une fréquence élevée. Portée moyenne. Traverse plusieurs carreaux. Extrêmement puissant. -block.chainturret.description=[turretinfo]munition : Uranium -block.titancannon.name=Canon titan -block.titancannon.fulldescription=La tourelle à longue portée ultime. Utilise de l'thorium comme munition. Tire de gros obus provoquant des dégâts de zone à une cadence de tir moyenne. Traverse plusieurs carreaux. Extrêmement puissant. -block.titancannon.description=[turretinfo]munition : thorium -block.playerspawn.name=point d'apparition du joueur -block.enemyspawn.name=point d'apparition des ennemis diff --git a/core/assets/bundles/bundle_ita.properties b/core/assets/bundles/bundle_ita.properties index 7309dfcb46..02b83f8158 100644 --- a/core/assets/bundles/bundle_ita.properties +++ b/core/assets/bundles/bundle_ita.properties @@ -1,7 +1,7 @@ -text.about = Creato da [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]\nOriginariamente era una voce nel [orange]GDL[] Metal Monstrosity Jam.\n\n Crediti:\n - SFX realizzato con [YELLOW]bfxr [] \n - Musica creata da [GREEN]RoccoW[] / trovata su [lime]FreeMusicArchive.org[]\n\n Un ringraziamento speciale a:\n - [coral]MitchellFJN []: esteso test del gioco e feedback\n - [cielo]Luxray5474 []: lavorazione della wiki, contributi col codice\n - [lime]Epowerj []: sistema di costruzione del codice, icone\n - Tutti i beta tester su itch.io e Google Play\n +text.about = Creato da [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]\nOriginariamente era una voce nel [orange]GDL[] Metal Monstrosity Jam.\n\n Crediti:\n - SFX realizzato con [YELLOW]bfxr [] \n - Musica creata da [GREEN]RoccoW[] / trovata su [lime]FreeMusicArchive.org[]\n\n Un ringraziamento speciale a:\n - [coral]MitchellFJN []: esteso test del gioco e feedback\n - [sky]Luxray5474 []: lavorazione della wiki, contributi col codice\n - [lime]Epowerj []: sistema di costruzione del codice, icone\n - Tutti i beta tester su itch.io e Google Play\n text.credits = Crediti text.discord = Unisciti sul server discord di mindustry! -text.changes = [SCARLET]Attenzione!\n[]Alcune importanti meccaniche di gioco sono state modificate.\n\n - [accent]I teletrasporti[] ora usano la corrente.\n - [accent]Le fonderie[] e [accent]i crogioli[] ora hanno una capacità massima di oggetti. \n- [accent]I crogioli[] ora richiedono il carbone come combustibile. +text.changes = [SCARLET]Attenzione!\n[]Alcune importanti meccaniche di gioco sono state modificate.\n\n - [accent]I teletrasporti[] ora usano la corrente.\n - [accent]Le fornaci[] e [accent]i crogioli[] ora hanno una capacità massima di oggetti. \n- [accent]I crogioli[] ora richiedono il carbone come combustibile. text.link.discord.description = la chatroom ufficiale del server discord di Mindustry text.link.github.description = Codice sorgente del gioco text.link.dev-builds.description = Build di sviluppo versioni instabili @@ -15,14 +15,14 @@ text.multiplayer.web = Questa versione del gioco non supporta il multiplayer! Pe text.gameover = Il nucleo è stato distrutto. text.highscore = [YELLOW]Nuovo record! text.lasted = Sei durato fino all'onda -text.level.highscore = Miglior Punteggio: [accent]{0} +text.level.highscore = Migliore: [accent]{0} text.level.delete.title = Conferma Eliminazione text.level.delete = Sei sicuro di voler eliminare la mappa \"[arancione]{0}\"? text.level.select = Selezione del livello text.level.mode = Modalità di gioco: text.savegame = Salva -text.loadgame = Carica Salvataggio -text.joingame = Unisciti alla Partita +text.loadgame = Carica +text.joingame = Gioca MP text.newgame = Nuovo gioco text.quit = Esci text.about.button = Informazioni @@ -35,29 +35,29 @@ text.server.mismatch = Errore nel pacchetto: possibile discrepanza nella version text.server.closing = [accent]Chiusura server ... text.server.kicked.kick = Sei stato cacciato dal server! text.server.kicked.invalidPassword = 10468 = Password non valida. -text.server.kicked.clientOutdated = Cliente obsoleto! Aggiorna il tuo gioco! +text.server.kicked.clientOutdated = Versione del client obsoleta! Aggiorna il tuo gioco! text.server.kicked.serverOutdated = Server obsoleto! Chiedi all'host di aggiornare! text.server.kicked.banned = Sei stato bannato su questo server. text.server.kicked.recentKick = Sei stato cacciato di recente. Attendi prima di connetterti di nuovo. -text.server.connected = partecipa -text.server.disconnected = {0} si disconnette. -text.nohost = Impossibile ospitare il server su una mappa personalizzata! -text.host.info = Il pulsante [accent]hos [] ospita un server sulle porte [scarlet]6567[] e [scarlet]656.[] Chiunque sulla stessa [LIGHT_GRAY]wifi o rete locale[] dovrebbe essere in grado di vedere il proprio server nel proprio elenco server.\n\n Se vuoi che le persone siano in grado di connettersi ovunque tramite IP, è richiesto il [accent]port forwarding[]. \n\n[LIGHT_GRAY]Nota: se qualcuno sta riscontrando problemi durante la connessione al gioco LAN, assicurati di aver consentito a Mindustry di accedere alla rete locale nelle impostazioni del firewall. -text.join.info = Qui è possibile inserire un [accent]IP del server[] per connettersi a, o scoprire [accento]server sulla rete locale[] a cui connettersi.\n Sono supportati sia il multiplayer LAN che WAN. \n\n[LIGHT_GRAY]Nota: non esiste un elenco di server globali automatici; se si desidera connettersi a qualcuno tramite IP, è necessario chiedere all'host il proprio IP. +text.server.connected = {0} si è connesso +text.server.disconnected = {0} si è disconnesso +text.nohost = Impossibile hostare il server con una mappa personalizzata! +text.host.info = Il pulsante [accent]hos [] ospita un server sulle porte [scarlet]6567[] e [scarlet]656.[] Chiunque sulla stessa [LIGHT_GRAY]connessione wifi o rete locale[] dovrebbe essere in grado di vedere il proprio server nel proprio elenco server.\n\n Se vuoi che le persone siano in grado di connettersi ovunque tramite IP, è richiesto il [accent]port forwarding[]. \n\n[LIGHT_GRAY]Nota: se qualcuno sta riscontrando problemi durante la connessione al gioco LAN, assicurati di aver consentito a Mindustry di accedere alla rete locale nelle impostazioni del firewall. +text.join.info = Qui è possibile inserire un [accent]IP del server[] a cui connettersi, o scoprire [accento]un server sulla rete locale[] disponibile.\n Sono supportati sia il multiplayer LAN che WAN. \n\n[LIGHT_GRAY]Nota: non esiste un elenco di server globali automatici; se si desidera connettersi a qualcuno tramite IP, è necessario chiedere all'host il proprio IP. text.hostserver = Server host -text.host = Ospite +text.host = Host text.hosting = [accento] Apertura del server ... text.hosts.refresh = Aggiorna -text.hosts.discovering = Alla scoperta di giochi LAN +text.hosts.discovering = Scoperta partite LAN text.server.refreshing = Aggiornamento server -text.hosts.none = [lightgray]Nessun gioco LAN trovato! +text.hosts.none = [lightgray]Nessuna partita LAN trovata! text.host.invalid = [scarlet]Impossibile connettersi all'host. text.server.friendlyfire = Fuoco amico text.trace = Trace Player text.trace.playername = Nome del giocatore: [accent]{0} text.trace.ip = IP: [accent]{0} text.trace.id = ID univoco: [accent]{0} -text.trace.android = Client Android: [accent {0} +text.trace.android = Client Android: [accent] {0} text.trace.modclient = Cliente personalizzato: [accent]{0} text.trace.totalblocksbroken = Totale blocchi interrotti: [accent]{0} text.trace.structureblocksbroken = Blocchi strutturali distrutti: [accent]{0} @@ -85,18 +85,18 @@ text.joingame.byip = Unisciti a IP ... text.joingame.title = Unisciti alla Partita text.joingame.ip = IP: text.disconnect = Disconnesso. -text.disconnect.data = Impossibile caricare i dati del mondo! -text.connecting = [Accent]Connessione in corso ... +text.disconnect.data = Errore nel caricamento i dati del mondo! +text.connecting = [accent]Connessione in corso ... text.connecting.data = [accent]Caricamento dei dati del mondo ... -text.connectfail = [crimson Impossibile connettersi al server: [orange] {0} +text.connectfail = [crimson] Impossibile connettersi al server: [orange] {0} text.server.port = Porta: text.server.addressinuse = Indirizzo già in uso! text.server.invalidport = Numero di porta non valido! text.server.error = [crimson]Errore nell'hosting del server: [orange] {0} -text.tutorial.back = text.save.new = Nuovo Salvataggio -text.save.overwrite = Sei sicuro di voler sovrascrivere questo spazio di salvataggio? +text.save.overwrite = Sei sicuro di voler sovrascrivere questo salvataggio? text.overwrite = Sostituisci text.save.none = Nessun salvataggio trovato! text.saveload = [Accent]Salvataggio ... @@ -114,7 +114,7 @@ text.save.rename.text = Nuovo nome: text.selectslot = Seleziona un salvataggio. text.slot = [accent]Slot {0} text.save.corrupted = [orang]File di salvataggio danneggiato o non valido! -text.empty = +text.empty = text.on = Acceso text.off = Spento text.save.autosave = Salvataggio automatico: {0} @@ -132,12 +132,12 @@ text.copylink = Copia link text.back = Indietro text.quit.confirm = Sei sicuro di voler uscire? text.changelog.title = Registro modifiche -text.changelog.loading = Ottenere il log delle modifiche ... +text.changelog.loading = Ottenere il registro delle modifiche ... text.changelog.error.android = [orange]Nota che il log delle modifiche non funziona su Android 4.4 e versioni precedenti! Ciò è dovuto a un bug interno di Android. text.changelog.error = [scarlet]Errore durante il recupero del changelog! Controlla la tua connessione Internet. -text.changelog.current = [yellow][[Versione corrente] -text.changelog.latest = [orange][[Ultima versione] -text.loading = [Accent]Caricamento in corso ... +text.changelog.current = [yellow][[Current version] +text.changelog.latest = [orange][[Latest version] +text.loading = [accent]Caricamento in corso ... text.wave = [orange]Onda {0} text.wave.waiting = Onda in {0} text.waiting = In attesa... @@ -150,32 +150,32 @@ text.editor.badsize = [orange]Dimensioni dell'immagine non valide![]\n Dimension text.editor.errorimageload = Errore durante il caricamento del file immagine:\n [orange]{0} text.editor.errorimagesave = Errore durante il salvataggio del file immagine:\n [orange]{0} text.editor.generate = Genera -text.editor.resize = Ridimensiona -text.editor.loadmap = Carica mappa -text.editor.savemap = Salva la mappa -text.editor.loadimage = Carica immagine -text.editor.saveimage = Salva Immagine +text.editor.resize = Zomma o \nRiduci +text.editor.loadmap = Carica\nmappa +text.editor.savemap = Salva\nla mappa +text.editor.loadimage = Carica\nimmagine +text.editor.saveimage = Salva\nImmagine text.editor.unsaved = [scarlet]Hai modifiche non salvate![]\nSei sicuro di voler uscire? text.editor.brushsize = Dimensione del pennello: {0} text.editor.noplayerspawn = Questa mappa non ha lo spawnpoint del giocatore! text.editor.manyplayerspawns = Le mappe non possono avere più di un punto di spawn di un giocatore! text.editor.manyenemyspawns = Non puoi avere più di {0} spawn nemici! text.editor.resizemap = Ridimensiona la mappa -text.editor.resizebig = [Scarlatto]Attenzione!\n[]Le mappe più grandi di 256 unità potrebbero causare del lag oltre ad essere instabili. +text.editor.resizebig = [Scarlet]Attenzione!\n[]Le mappe più grandi di 256 unità potrebbero causare del lag oltre ad essere instabili. text.editor.mapname = Nome Mappa: text.editor.overwrite = [Accent]Attenzione!\nQuesto sovrascrive una mappa esistente. text.editor.failoverwrite = [crimson]Impossibile sovrascrivere la mappa di default! text.editor.selectmap = Seleziona una mappa da caricare: text.width = Larghezza: text.height = Altezza: -text.randomize = Rendi casuale +text.randomize = Randomizza text.apply = Applicare text.update = Aggiorna text.menu = Menu text.play = Gioca text.load = Carica text.save = Salva -text.language.restart = Riavvia il gioco affinché le impostazioni della lingua abbiano effetto. +text.language.restart = Riavvia il gioco affinché il cambiamento della lingua abbia effetto. text.settings.language = Lingua text.settings = Impostazioni text.tutorial = Lezioni @@ -201,10 +201,10 @@ text.mode.place = Modalità luogo: {0} placemode.hold.name = linea placemode.areadelete.name = area placemode.touchdelete.name = toccare -placemode.holddelete.name = trattieni la rotellina +placemode.holddelete.name = trattieni placemode.none.name = nessuno placemode.touch.name = toccare -placemode.cursor.name = CURSORE +placemode.cursor.name = cursore text.blocks.extrainfo = [accent]informazioni extra sui blocchi: text.blocks.blockinfo = Informazioni sul blocco text.blocks.powercapacity = Capacità energetica @@ -225,11 +225,11 @@ text.blocks.ammo = Munizioni text.blocks.ammoitem = Munizioni/Oggetto text.blocks.maxitemssecond = Oggetti massimi/secondo text.blocks.powerrange = Raggio Energia -text.blocks.lasertilerange = Gamma di piastrelle laser +text.blocks.lasertilerange = Raggio piastrelle laser text.blocks.capacity = Capacità -text.blocks.itemcapacity = Capacità degli oggetti +text.blocks.itemcapacity = Capacità oggetto text.blocks.maxpowergenerationsecond = Massima Energia Generata/secondo -text.blocks.powergenerationsecond = Generazione di energia/secondo +text.blocks.powergenerationsecond = Energia generata/secondo text.blocks.generationsecondsitem = Generazione secondi/oggetto text.blocks.input = Ingresso text.blocks.inputliquid = Ingresso del liquido @@ -289,17 +289,17 @@ map.grassland.name = Prateria map.tundra.name = Tundra map.spiral.name = spirale map.tutorial.name = Tutorial -tutorial.intro.text = [yellow]Benvenuti nel tutorial.[] Per iniziare, premere 'next'. -tutorial.moveDesktop.text = Per spostarsi, utilizza i tasti [orange][[WASD][]. Tenere premuto [orange]shift[]per correre. Tenere premuto [orange]CTRL[] mentre si utilizza la [orange]rotella di scorrimento[] per ingrandire o ridurre lo zoom. -tutorial.shoot.text = Usa il mouse per mirare, tieni premuto [orange]tasto sinistro del mouse[] per sparare. Prova a praticare sull' [yellow]obiettivo[]. +tutorial.intro.text = [yellow]Benvenuti nel tutorial.[] Per iniziare, premere 'succ'. +tutorial.moveDesktop.text = Per spostarsi, utilizza i tasti [orange][[WASD][] . Tenere premuto [orange]shift []per correre. Tenere premuto [orange]CTRL[] mentre si utilizza la [orange]rotella del mouse[] per ingrandire o ridurre lo zoom. +tutorial.shoot.text = Usa il mouse per mirare, tieni premuto [orange]tasto sinistro del mouse[] per sparare. Fai uun po' di pratica con quest' [yellow]obiettivo[]. tutorial.moveAndroid.text = Per spostare la vista, trascina un dito sullo schermo. Pizzica e trascina per ingrandire o ridurre. -tutorial.placeSelect.text = Prova a selezionare un [yellow]nastro[] dal menu dei blocchi in basso a destra. -tutorial.placeConveyorDesktop.text = Utilizza la [orange][[rotellina di scorrimento][] per ruotare il trasportatore in modo che sia rivolto verso [orange]in avanti[], quindi posizionarlo nella [yellow]posizione contrassegnata[] utilizzando il [orange][[tasto sinistro del mouse][]. -tutorial.placeConveyorAndroid.text = Utilizzare il pulsante [orange][[tasto di rotazione][] per ruotare il trasportatore in modo che sia rivolto [orange]in avanti[], trascinalo in posizione con un dito, quindi posizionalo nella [yellow]posizione contrassegnata[] utilizzando [orange][[segno di spunta][] -tutorial.placeConveyorAndroidInfo.text = In alternativa, puoi premere l'icona mirino in basso a sinistra per passare alla [orange] [[touch mode][] e posiziona i blocchi toccando sullo schermo. In modalità touch, i blocchi possono essere ruotati con la freccia in basso a sinistra. Premi [yellow]avanti[] per provarlo. +tutorial.placeSelect.text = Prova a selezionare un [yellow]nastro trasportatore[] dal menu dei blocchi in basso a destra. +tutorial.placeConveyorDesktop.text = Utilizza la [orange]rotellina di scorrimento[] per ruotare il nastro trasportatore in modo che sia rivolto verso [orange]in avanti[], quindi posizionarlo nella [yellow]posizione contrassegnata[] utilizzando il [orange]tasto sinistro del mouse[]. +tutorial.placeConveyorAndroid.text = Utilizzare il pulsante [orange]tasto di rotazione[] per ruotare il trasportatore in modo che sia rivolto [orange]in avanti[], trascinalo in posizione con un dito, quindi posizionalo nella [yellow]posizione contrassegnata[] utilizzando [orange]segno di spunta[] +tutorial.placeConveyorAndroidInfo.text = In alternativa, puoi premere l'icona mirino in basso a sinistra per passare alla [orange] touch mode[] e posiziona i blocchi toccando sullo schermo. In modalità touch, i blocchi possono essere ruotati con la freccia in basso a sinistra. Premi [yellow]avanti[] per provarlo. tutorial.placeDrill.text = Ora, seleziona e posiziona un [yellow]trapano per pietra[] nella posizione contrassegnata. tutorial.blockInfo.text = Se vuoi saperne di più su un blocco, puoi toccare il [orange]punto interrogativo[] in alto a destra per leggere la sua descrizione. -tutorial.deselectDesktop.text = Puoi deselezionare un blocco usando [orange][[tasto destro del mouse][]. +tutorial.deselectDesktop.text = Puoi deselezionare un blocco usando [orange]tasto destro del mouse[]. tutorial.deselectAndroid.text = È possibile deselezionare un blocco premendo il tasto [orange]X[]. tutorial.drillPlaced.text = Il trapano ora produrrà [yellow]pietra,[] la manderà sul nastro trasportatore, quindi la sposterà nel [yellow]nucleo[]. tutorial.drillInfo.text = I minerali differenti hanno bisogno di trapani diversi. La pietra richiede il trapano di pietra, il ferro richiede il trapano di ferro, ecc. @@ -318,12 +318,12 @@ tutorial.purchaseWeapons.text = Puoi acquistare nuove [yellow]armi[] per il tuo tutorial.switchWeapons.text = Cambia le armi facendo clic sulla sua icona in basso a sinistra o usando i numeri [orange][[1-9][]. tutorial.spawnWave.text = Ecco un'ondata ora. Distruggili. tutorial.pumpDesc.text = Nelle onde successive, potrebbe essere necessario utilizzare le [yellow]pompe[] per distribuire i liquidi per i generatori o gli estrattori. -tutorial.pumpPlace.text = Le pompe funzionano in modo simile ai trapani, tranne per il fatto che producono liquidi anziché oggetti. Prova a posizionare una pompa sull' [yellow]olio designato[]. +tutorial.pumpPlace.text = Le pompe funzionano in modo simile ai trapani, tranne per il fatto che producono liquidi anziché oggetti. Prova a posizionare una pompa sull' [yellow]petrolio evidenziato[]. tutorial.conduitUse.text = Ora posiziona una [orange]conduttura[] tutorial.conduitUse2.text = E alcuni altri ... tutorial.conduitUse3.text = E alcuni altri ... tutorial.generator.text = Ora, posizionare un [orange]generatore a combustione[] all'estremità del condotto. -tutorial.generatorExplain.text = Questo generatore ora creerà [yellow]corrente[] dall'olio. +tutorial.generatorExplain.text = Questo generatore ora creerà [yellow]corrente[] dall'petrolio. tutorial.lasers.text = La potenza è distribuita usando i [yellow]laser energetici[]. Ruota e posizionane uno qui. tutorial.laserExplain.text = Il generatore ora trasferirà l'energia nel blocco laser. Un raggio [yellow]opaco[] indica che sta trasmettendo corrente e un raggio [yellow]trasparente[] significa che non la sta strasmettendo. tutorial.laserMore.text = Puoi controllare quanta energia ha un blocco passandoci sopra e controllando la barra [yellow]gialla[] in alto. @@ -388,7 +388,7 @@ item.sand.name = sabbia liquid.water.name = acqua liquid.plasma.name = Plasma liquid.lava.name = lava -liquid.oil.name = olio +liquid.oil.name = petrolio block.weaponfactory.name = fabbrica d'armi block.weaponfactory.fulldescription = Utilizzata per creare armi per il giocatore mech. Clicca per usare. Prende automaticamente le risorse dal core. block.air.name = aria @@ -396,7 +396,7 @@ block.blockpart.name = blockpart block.deepwater.name = acque profonde block.water.name = acqua block.lava.name = lava -block.oil.name = olio +block.oil.name = petrolio block.stone.name = pietra block.blackstone.name = pietra nera block.iron.name = ferro @@ -472,7 +472,7 @@ block.liquiditemjunction.name = giunzione di oggetti liquidi block.liquiditemjunction.fulldescription = Funziona come un ponte per attraversare condutture e trasportatori. block.powerbooster.name = power booster block.powerbooster.fulldescription = Distribuisce l'energia a tutti i blocchi entro il suo raggio. -block.powerlaser.name = laser di energia +block.powerlaser.name = laser energetico block.powerlaser.fulldescription = Crea un laser che trasmette energia al blocco di fronte ad esso. Non genera alcuna energia. Ideale per generatori o altri laser. block.powerlaserrouter.name = router laser block.powerlaserrouter.fulldescription = Laser che distribuisce la potenza in tre direzioni contemporaneamente. Utile in situazioni in cui è necessario alimentare più blocchi da un generatore. @@ -484,7 +484,7 @@ block.sorter.name = sorter block.sorter.fulldescription = Ordina l'oggetto per tipo di materiale. Il materiale da accettare è indicato dal colore nel blocco. Tutti gli articoli che corrispondono al materiale di ordinamento vengono emessi in avanti, tutto il resto viene emesso a sinistra e a destra. block.core.name = Centro block.pump.name = pompa -block.pump.fulldescription = Pompa di liquidi da un blocco sorgente - di solito acqua, lava o olio. Emette liquido nei condotti nelle vicinanze. +block.pump.fulldescription = Pompa di liquidi da un blocco sorgente - di solito acqua, lava o petrolio. Emette liquido nei condotti nelle vicinanze. block.fluxpump.name = pompaflux block.fluxpump.fulldescription = Una versione avanzata della pompa. Memorizza più liquido e pompa il liquido più velocemente. block.smelter.name = fonderia @@ -495,7 +495,7 @@ block.coalpurifier.name = estrattore di carbone block.coalpurifier.fulldescription = Un blocco estrattore di base. Emette carbone quando viene fornito con grandi quantità di acqua e pietra. block.titaniumpurifier.name = estrattore di titanio block.titaniumpurifier.fulldescription = Un blocco estrattore standard. Produce il titanio quando viene fornito con grandi quantità di acqua e ferro. -block.oilrefinery.name = raffineria d'olio +block.oilrefinery.name = raffineria d'petrolio block.oilrefinery.fulldescription = Affina grandi quantità di petrolio in oggetti di carbone. Utile per alimentare torrette a base di carbone quando le vene del carbone scarseggiano. block.stoneformer.name = forma pietre block.stoneformer.fulldescription = Solidifica la lava producendo pietra. Utile per produrre enormi quantità di pietra per depuratori di carbone. @@ -516,9 +516,9 @@ block.omnidrill.fulldescription = L'ultimo trapano. Trapanerà qualsiasi mineral block.coalgenerator.name = generatore di carbone block.coalgenerator.fulldescription = Il generatore essenziale. Genera potenza dal carbone. Emette potenza come laser sui suoi 4 lati. block.thermalgenerator.name = generatore termico -block.thermalgenerator.fulldescription = Genera potenza dalla lava. Emette potenza come laser sui suoi 4 lati. +block.thermalgenerator.fulldescription = Genera energia dalla lava. Emette energia come laser sui suoi 4 lati. block.combustiongenerator.name = generatore a combustione -block.combustiongenerator.fulldescription = Genera energia dall'olio. Emette energia come laser sui suoi 4 lati. +block.combustiongenerator.fulldescription = Genera energia dall'petrolio. Emette energia come laser sui suoi 4 lati. block.rtgenerator.name = Generatore RTG block.rtgenerator.fulldescription = Genera piccole quantità di energia dal decadimento radioattivo dell'uranio. Emette potenza come laser sui suoi 4 lati. block.nuclearreactor.name = reattore nucleare diff --git a/core/assets/bundles/bundle_ko.properties b/core/assets/bundles/bundle_ko.properties index ab5dbe0b84..6d9b8684c4 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -1,55 +1,102 @@ -text.about = 제작자 [ROYAL]Anuken.[]\nOriginally an entry in the [orange]GDL[] MM Jam.\n\n크래딧:\n- SFX 제작자 [YELLOW]bfxr[]\n- BGM 제작자 [GREEN]RoccoW[] / 찾아낸곳 [lime]FreeMusicArchive.org[]\n\n제작에 도움을 준 사람들:\n- [coral]MitchellFJN[]: 광범위한 플레이 테스트 및 피드백\n- [sky]Luxray5474[]: wiki 작업, 소스 기여\n- itch.io 그리고 구글플레이의 모든 배타테스터\n +text.about = 만든이 : [ROYAL]Anuken[] - [SKY]anukendev@gmail.com[]\n이 게임은 [orange]GDL[] Metal Monstrosity Jam 을 사용했습니다.\n\n크레딧\n- [YELLOW]bfxr[] 가 SFX 를 만듬\n- [GREEN]a drop a day[] 가 음악을 만듬\n\n특별히 감사한 분들\n- [coral]MitchellFJN[]: 테스트하고 피드백을 주신 분\n- [sky]Luxray5474[]: wiki 를 만들고 코드에 기여하신 분\n- [lime]Epowerj[]: 코드를 만들고 아이콘을 제작하신 분\n- itch.io 그리고 Google Play 에서의 모든 베타 테스터 분들\n +text.credits = 크레딧 text.discord = Mindustry 디스코드에 참여하세요! +text.changes = [SCARLET]주의!\n[]몇몇 중요한 게임 메커니즘이 변경되었습니다.\n\n- [accent]텔레포터[]는 이제 전력을 사용합니다.\n- [accent]제련소[]와 [accent]도가니[] 는 이제 최대 자원저장 공간을 가집니다.\n- [accent]도가니[] 는 이제 석탄 연료를 필요로 합니다. +text.link.discord.description = 공식 Mindustry 디스코드 채팅방 +text.link.github.description = 게임 소스코드 +text.link.dev-builds.description = 개발중인 빌드 (불안정) +text.link.trello.description = 공식 trello 보드에서 현재 계획중인 기능을 찾을 수 있습니다. +text.link.itch.io.description = itch.io 사이트에서 PC 버전 다운로드 또는 웹 버전을 플레이 할 수 있습니다. +text.link.google-play.description = Google Play 스토어 목록 +text.link.wiki.description = 공식 Mindustry 위키 +text.linkfail = 링크를 열지 못했습니다!\nURL이 클립보드에 복사되었습니다. +text.editor.web = 웹버전은 맵 편집기를 지원하지 않습니다!\n게임을 다운로드 한 후에 사용하세요. +text.multiplayer.web = 이 버전의 게임은 멀티플레이를 지원하지 않습니다!\n멀티플레이를 브라우저에서 하고 싶다면 이 itch.io 페이지에서 \"Multiplayer web version\" 버튼을 눌러서 플레이 해 주세요. text.gameover = 코어가 파괴되었습니다. -text.highscore = [YELLOW]하이스코어! -text.lasted = You lasted until wave -text.level.highscore = 하이스코어: [accent]{0} -text.level.delete.title = 삭제 확인 -text.level.delete = \"[orange] {0}\" 지도를 삭제하실건가요? -text.level.select = 레벨 선택 +text.highscore = [YELLOW]최고 점수 달성! +text.lasted = 이번 맵에서 달성한 마지막 웨이브 : +text.level.highscore = 최고 점수: [accent]{0} +text.level.delete.title = 맵 삭제 확인 +text.level.delete = 정말로 이 \"[orange]{0}\" 맵을 삭제하시겠습니까? +text.level.select = 맵 선택 text.level.mode = 게임 모드: text.savegame = 저장하기 text.loadgame = 불러오기 -text.joingame = 서버참가 +text.joingame = 멀티플레이 +text.newgame = 새 게임 text.quit = 나가기 text.about.button = 소개 text.name = 이름: text.public = 공개 -text.players = {0} 명 플레이어 온라인 -text.players.single = {0} 명 플레이어 온라인 -text.server.mismatch = 패킷 오류 : 클라이언트 / 서버 버전이 불일치합니다! 당신과 호스트가 최신 버전의 Mindustry 를 가지고 있는지 확인해주세요! -.server.closing = [accent]서버 닫는중... -text.server.kicked.kick = 당신은 서버에서 쫓겨났습니다! +text.players = {0}명 온라인 +text.server.player.host = {0} 이 호스트함. +text.players.single = {0}명 온라인. +text.server.mismatch = 패킷오류 : 현재 게임 버전과 서버 버전이 일치하지 않습니다.\n현재 게임 버전이 최신버전인지 확인 해 주세요! +text.server.closing = [accent]서버 닫는중... +text.server.kicked.kick = 당신은 서버에서 강제 퇴장 되었습니다. text.server.kicked.invalidPassword = 잘못된 비밀번호 입니다! -text.server.connected = {0} 님이 채팅에 참여했습니다. -text.server.disconnected = {0} 님에 연결이 끊어졌습니다. +text.server.kicked.clientOutdated = 현재 플레이중인 게임 버전이 낮습니다!\n게임을 업데이트 해 주세요. +text.server.kicked.serverOutdated = 낮은 버전의 서버입니다! 서버장에게 업데이트를 요청하세요! +text.server.kicked.banned = 당신은 이 서버에서 차단되었습니다. +text.server.kicked.recentKick = 최근에 강제 퇴장되었습니다.\n잠시 후에 다시 입장 해 주세요. +text.server.connected = {0} 님이 서버에 입장했습니다. +text.server.disconnected = {0} 님이 서버에서 나갔습니다. text.nohost = 커스텀 맵은 서버호스팅이 불가능합니다! +text.host.info = [accent]호스트[] 버튼은 현재 네트워크의 [scarlet]6567[] 과 [scarlet]6568[] 포트를 사용합니다.\n[LIGHY_GRAY]같은 Wi-Fi 또는 로컬 네트워크[] 에서 서버 목록을 볼 수 있습니다.\n\n만약 플레이어들이 이 IP를 통해 어디에서나 연결할 수 있게 하고 싶다면, 공유기 설정에서 [accent]포트 포워딩[]을 해야 합니다.\n\n[LIGHT_GRAY]참고 : LAN 게임 연결에 문제가 있는 사람이 있다면, 방화벽 설정에서 Mindustry 가 로컬 네트워크에 액세스하도록 허용했는지 확인 해 주세요. +text.join.info = 여기서 [accent]서버 IP[]를 입력하여 다른 서버에 접속할 수 있습니다.\n또는 [accent]로컬 네트워크(LAN)[] 서버를 검색하여 접속할 수 있습니다.\nLAN 및 WAN 멀티 플레이어 모두 지원됩니다.\n\n[LIGHT_GRAY]참고 : 여기에서는 자동으로 글로벌 서버를 추가하지 않습니다. IP로 다른 사람의 서버에 접속할려면 서버장에게 IP를 요청해야 합니다. text.hostserver = 서버 열기 text.host = 호스트 text.hosting = [accent]서버여는중... text.hosts.refresh = 새로고침 text.hosts.discovering = LAN 게임 찾기 text.server.refreshing = 서버 새로고침 -text.hosts.none = [lightgray] LAN 게임이 없습니다! +text.hosts.none = [lightgray]LAN 게임이 없습니다! text.host.invalid = [scarlet]호스트에 연결할 수 없습니다! +text.server.friendlyfire = 팀킬 허용 +text.trace = 플레이어 추적 +text.trace.playername = 플레이어 이름 : [accent] {0} +text.trace.ip = IP : [accent]{0} +text.trace.id = 고유 ID : [accent] {0} +text.trace.android = Android 클라이언트 : [accent] {0} +text.trace.modclient = 수정된 클라이언트 : [accent] {0} +text.trace.totalblocksbroken = 총 파괴한 블록 수 : [accent] {0} +text.trace.structureblocksbroken = 총 구조 블럭 파괴수 : [accent] {0} +text.trace.lastblockbroken = 마지막으로 파괴한 블록 : [accent] {0} +text.trace.totalblocksplaced = 총 설치한 블록 수 : [accent] {0} +text.trace.lastblockplaced = 마지막으로 설치한 블록 : [accent] {0} +text.invalidid = 잘못된 클라이언트 ID 입니다! 공식 Mindustry 으로 버그 보고서를 제출 해 주세요. +text.server.bans = 차단된 플레이어들 +text.server.bans.none = 차단된 플레이어가 없습니다. +text.server.admins = 관리자 +text.server.admins.none = 관리자가 없습니다. text.server.add = 서버 추가 text.server.delete = 이 서버를 삭제 하시겠습니까? -text.server.hostname = 호스트: {0} +text.server.hostname = 호스트: text.server.edit = 서버 수정 +text.server.outdated = [crimson]서버 버전이 낮습니다![] +text.server.outdated.client = [Crimson]클라이언트 버전이 낮습니다![] +text.server.version = [lightgray] 버전 : {0} +text.server.custombuild = [노란색]수정된 빌드 +text.confirmban = 이 플레이어를 차단하시겠습니까? +text.confirmunban = 이 플레이어를 차단 해제 하시겠습니까? +text.confirmadmin = 이 플레이어를 관리자로 설정 하시겠습니까? +text.confirmunadmin = 이 플레이어에서 관리자 상태를 삭제 하시겠습니까? text.joingame.byip = IP로 참가하기... text.joingame.title = 게임 참가 text.joingame.ip = IP: -text.disconnect = 연결 끊김 +text.disconnect = 서버와의 연결이 해제되었습니다. +text.disconnect.data = 맵 데이터를 불러오지 못했습니다! text.connecting = [accent]연결중... -text.connecting.data = [accent]월드 데이터 로딩중... -text.connectfail = [crimson]서버에 연결하지 못했습니다: [orange]{0} +text.connecting.data = [accent]맵 데이터 로딩중... +text.connectfail = [crimson][orange]{0}[] 서버에 연결하지 못했습니다.[orange] text.server.port = 포트: +text.server.addressinuse = 이 주소는 이미 사용중입니다! text.server.invalidport = 포트 번호가 잘못되었습니다. -text.server.error = [crimson]호스팅 서버 오류: [orange] {0} +text.server.error = [crimson][orange]{0}[] 서버를 호스팅 하는데 오류가 발생했습니다. text.tutorial.back = < 이전 text.tutorial.next = 다음 > text.save.new = 새로 저장 -text.save.overwrite = 이 저장 슬롯을 덮어 쓰시겠습니까? +text.save.overwrite = 이 저장 슬롯을 덮어씌우겠습니까? text.overwrite = 덮어쓰기 text.save.none = 저장 파일을 찾지 못했습니다! text.saveload = [accent]저장중... @@ -58,158 +105,174 @@ text.save.delete.confirm = 이 저장파일을 삭제 하시겠습니까? text.save.delete = 삭제 text.save.export = 저장파일 내보내기 text.save.import.invalid = [orange]저장파일이 유효하지 않습니다! -text.save.import.fail = [crimson]저장파일을 불러오지 못함: [orange]{0} -text.save.export.fail = [crimson]저장파일을 내보내지 못함: [orange]{0} +text.save.import.fail = [crimson]저장파일을 불러오지 못함: {0}[orange] +text.save.export.fail = [crimson]저장파일을 내보내지 못함: {0}[orange] text.save.import = 저장파일 불러오기 text.save.newslot = 저장 파일이름 : text.save.rename = 이름 변경 text.save.rename.text = 새 이름 : text.selectslot = 저장슬롯을 선택하십시오. -text.slot = [accent]슬롯 {0} +text.slot = [accent]{0}번째 슬롯 text.save.corrupted = [orange]저장파일이 손상되었습니다! text.empty = <비어있음> text.on = 켜기 text.off = 끄기 text.save.autosave = 자동저장: {0} text.save.map = 맵: {0} -text.save.wave = 웨이브 {0} +text.save.wave = {0} 단계 +text.save.difficulty = 난이도 : {0} text.save.date = 마지막 저장 날짜 : {0} text.confirm = 확인 text.delete = 삭제 -text.ok = 승인 +text.ok = OK text.open = 열기 text.cancel = 취소 text.openlink = 링크 열기 +text.copylink = 링크 복사 text.back = 뒤로 text.quit.confirm = 종료 하시겠습니까? -text.loading = [accent]로딩 중 ... -text.wave = [orange]웨이브 {0} -text.wave.waiting = 웨이브 대기중 {0} +text.changelog.title = 변경사항 +text.changelog.loading = 업데이트 내역 가져오는중.. +text.changelog.error.android = [orange]업데이트 내역은 가끔 Android 4.4 이하에서 작동하지 않습니다.\n이것은 Android 내부 버그입니다. +text.changelog.error.ios = [orange]현재 업데이트 내역은 iOS 에서 지원하지 않습니다. +text.changelog.error = [searlet]업데이트 내역을 가져오는데 오류가 발생했습니다!\n인터넷 연결을 확인 해 주세요. +text.changelog.current = [yellow][[현재 버전] +text.changelog.latest = [orange][[최신 버전] +text.loading = [accent]로딩중 ... +text.wave = [orange]{0} 단계 +text.wave.waiting = 다음 레벨 {0} 시작 대기중 text.waiting = 대기 중... -text.enemies = {0} 적 -text.enemies.single = {0} 적 -text.loadimage = 이미지 로드 -text.saveimage = 이미지 저장 -text.editor.badsize = [orange]이미지 크기가 잘못되었습니다![]\n가능한 지도 크기: {0} -text.editor.errorimageload = 이미지 파일 로드중 오류 발생 : [orange]{0} -text.editor.errorimagesave = 이미지 파일 저장중 오류 발생 : [orange]{0} -text.editor.generate = 생성하기 +text.enemies = 남은 잡몹 수 : {0} +text.enemies.single = {0} 마리 남음 +text.loadimage = 사진 불러오기 +text.saveimage = 사진 저장 +text.oregen = 광물 생성 +text.editor.badsize = [orange]사진 크기가 잘못되었습니다![]\n유효한 맵 크기 : {0} +text.editor.errorimageload = [orange]{0} 사진을 불러오는데 오류가 발생했습니다. +text.editor.errorimagesave = [orange]{0} 사진을 저장하는데 오류가 발생했습니다. +text.editor.generate = 생성 text.editor.resize = 크기 조정 -text.editor.loadmap = 맵 로드 +text.editor.loadmap = 맵 불러오기 text.editor.savemap = 맵 저장 -text.editor.loadimage = 이미지 로드 -text.editor.saveimage = 이미지 저장 +text.editor.loadimage = 사진 불러오기 +text.editor.saveimage = 사진 저장 text.editor.unsaved = [scarlet]변경사항을 저장하지 않았습니다![]\n종료하시겠습니까? text.editor.brushsize = 브러쉬 크기 : {0} text.editor.noplayerspawn = 이맵에는 플레이어의 스폰 지점이 없습니다! text.editor.manyplayerspawns = 맵에는 플레이어 스폰 지점이 둘 이상 있을 수 없습니다! -text.editor.manyenemyspawns = {0} 개 이상에 적 스폰 지점이 있을 수 없습니다! -text.editor.resizemap = 지도 크기 조정 -text.editor.resizebig = [scarlet]경고!\n[]맵 크기가 256이상일경우 불안정 할 수 있습니다! -text.editor.mapname = 지도 이름 : -text.editor.overwrite = [accent]경고!\n이렇게 하면 기존 맵을 덮어 쓰게 됩니다! -text.editor.failoverwrite = [crimson]기본지도에 덮어 쓸수 없습니다! -text.editor.selectmap = 로드 할 지도 선택 : -text.width = 폭: +text.editor.manyenemyspawns = 잡몹 스폰지점을 {0}개 이상으로 지정할 수 없습니다! +text.editor.resizemap = 맵 크기 조정 +text.editor.resizebig = [scarlet]경고!\n[]맵 크기가 256이상일경우 랙이 걸리거나 게임이 불안정할 수 있습니다. +text.editor.mapname = 맵 이름 : +text.editor.overwrite = [accent]경고!\n이 작업은 기존 맵을 덮어 쓰게 됩니다! +text.editor.failoverwrite = [crimson]기본맵을 덮어 쓸수 없습니다! +text.editor.selectmap = 불러올 맵 선택 : +text.width = 넓이 : text.height = 높이: text.randomize = 무작위 text.apply = 적용 text.update = 업데이트 text.menu = 메뉴 text.play = 플레이 -text.load = 로드 +text.load = 불러오기 text.save = 저장 +text.language.restart = 언어 설정을 적용하려면 게임을 다시 시작하십시오. +text.settings.language = 언어 text.settings = 설정 -text.tutorial = 튜토리얼 +text.tutorial = 자습서 text.editor = 에디터 -text.mapeditor = 맵 에디터 +text.mapeditor = 맵 편집기 text.donate = 기부하기 text.settings.reset = 기본값으로 재설정 text.settings.controls = 컨트롤 text.settings.game = 게임 설정 -text.settings.sound = 사운드 설정 +text.settings.sound = 소리 설정 text.settings.graphics = 그래픽 설정 text.upgrades = 업그레이드 -text.purchased = [LIME]제작! +text.purchased = [LIME]제작됨! text.weapons = 무기 -text.paused = 일시 중지 -text.respawn = 리스폰 타임 +text.paused = 일시중지 +text.respawn = 남은 부활 시간 : +text.info.title = [accent]정보 text.error.title = [crimson]예기지 않은 오류가 발생했습니다! -text.error.crashmessage = [SCARLET]예기치 못한 오류가 발생하여, 무언가 충돌을 일으켰습니다\n[]이 오류에 대한 정확한 내용을 개발자에게 전달해 주세요!\n[ORANGE]anukendev@gmail.com[] +text.error.crashmessage = [SCARLET]예기치 못한 오류가 발생하여, 무언가 충돌을 일으켰습니다\n[]이 오류에 대한 정확한 내용을 개발자에게 전달해 주세요!\n[ORANGE]anukendev@gmail.com[] 또는 [orange]Mindustry 디스코드[orange]로 보내주세요! text.error.crashtitle = 오류 발생! text.mode.break = 삭제 모드 : {0} text.mode.place = 설치 모드 : {0} placemode.hold.name = 라인 placemode.areadelete.name = 구역 삭제 -placemode.touchdelete.name = 클릭 삭제 -placemode.holddelete.name = 홀드 삭제 +placemode.touchdelete.name = 클릭하여 삭제 +placemode.holddelete.name = 길게 눌러 삭제 placemode.none.name = 없음 placemode.touch.name = 클릭 placemode.cursor.name = 커서 text.blocks.extrainfo = [accent]추가 블록 정보: text.blocks.blockinfo = 블록 정보 text.blocks.powercapacity = 전력 저장량 -text.blocks.powershot = 전력량 / 초 -text.blocks.powersecond = 발전량 / 초 -text.blocks.powerdraindamage = 에너지 소모량 / 데미지 -text.blocks.shieldradius = 쉴드 반경 -text.blocks.itemspeedsecond = 운반량 / 초 +text.blocks.powershot = 초당 전력량 +text.blocks.powersecond = 초당 발전량 +text.blocks.powerdraindamage = 데미지당 에너지 소모량 +text.blocks.shieldradius = 보호막 범위 +text.blocks.itemspeedsecond = 초당 운반량 text.blocks.range = 범위 text.blocks.size = 크기 -text.blocks.powerliquid = 전력 / 액체량 -text.blocks.maxliquidsecond = 최대 액체 운반량 / 초 +text.blocks.powerliquid = 액체량당 전력 +text.blocks.maxliquidsecond = 초당 최대 액체 운반량 text.blocks.liquidcapacity = 액체 저장량 -text.blocks.liquidsecond = 액체 운반량 / 초 -text.blocks.damageshot = 데미지 / 달 -text.blocks.ammocapacity = 최대 저장량 +text.blocks.liquidsecond = 초당 액체 운반량 +text.blocks.damageshot = 1발당 데미지 +text.blocks.ammocapacity = 최대 탄약 저장량 text.blocks.ammo = 탄약 -text.blocks.ammoitem = 탄약 /아이템 -text.blocks.maxitemssecond = 최대 항목 / 초 -text.blocks.powerrange = 출력 범위 -text.blocks.lasertilerange = 파워 레이저 범위 +text.blocks.ammoitem = 아이템당 탄약 +text.blocks.maxitemssecond = 초당 최대 아이템수 +text.blocks.powerrange = 전력 출력범위 +text.blocks.lasertilerange = 전력 레이저 범위 text.blocks.capacity = 용량 text.blocks.itemcapacity = 아이템 저장용량 -text.blocks.maxpowergenerationsecond = 최대 발전량 / 초 -text.blocks.powergenerationsecond = 전력 생산량 / 초 +text.blocks.maxpowergenerationsecond = 초당 최대 발전량 +text.blocks.powergenerationsecond = 초당 전력 생산량 text.blocks.generationsecondsitem = 초당 생산량 / 아이템 text.blocks.input = 입력 text.blocks.inputliquid = 가능한 액체 text.blocks.inputitem = 가능한 아이템 text.blocks.output = 출력 -text.blocks.secondsitem = 초 / 아이템 -text.blocks.maxpowertransfersecond = 최대 전력 전송량 / 초 -text.blocks.explosive = 큰 폭발! -text.blocks.repairssecond = 수리량 / 초 +text.blocks.secondsitem = 초당 아이템수 +text.blocks.maxpowertransfersecond = 초당 최대 전력량 +text.blocks.explosive = 이게 파괴되면 매우 큰 폭발을 일으켜서 근처 블록에게 피해를 입힙니다! +text.blocks.repairssecond = 초당 수리량 text.blocks.health = 체력 -text.blocks.inaccuracy = 체력 +text.blocks.inaccuracy = 명중하지 않을 확률 text.blocks.shots = 발 -text.blocks.shotssecond = 발 / 초 +text.blocks.shotssecond = 초당 발사횟수 text.blocks.fuel = 연료 text.blocks.fuelduration = 연료 지속 시간 -text.blocks.maxoutputsecond = 최대 출력 / 초 +text.blocks.maxoutputsecond = 초당 최대 출력 text.blocks.inputcapacity = 최대 입력량 text.blocks.outputcapacity = 최대 출력량 -text.blocks.poweritem = 전력 / 아이템 -text.placemode = 블럭 설치 모드 -text.breakmode = 블럭 삭제 모드 +text.blocks.poweritem = 아이템당 전력량 +text.placemode = 설치 모드 +text.breakmode = 삭제 모드 text.health = 체력 -setting.difficulty.easy = 쉬움 +setting.difficulty.easy = 쉬움 setting.difficulty.normal = 보통 setting.difficulty.hard = 어려움 -setting.difficulty.insane = 미침 -setting.difficulty.purge = 극악 -setting.difficulty.name = 난이도 +setting.difficulty.insane = 미쳤음 +setting.difficulty.purge = 청소기 +setting.difficulty.name = 난이도: setting.screenshake.name = 화면 흔들림 setting.smoothcam.name = 부드러운 카메라 이동 -setting.indicators.name = 적 표시 화살표 +setting.indicators.name = 적 위치 표시 화살표 setting.effects.name = 화면 효과 setting.sensitivity.name = 컨트롤러 감도 setting.saveinterval.name = 자동 저장 간격 -setting.seconds = {0} 초 +setting.seconds = {0}초 +setting.fullscreen.name = 전체 화면 +setting.multithread.name = 멀티 스레드 활성화 setting.fps.name = 초당 프레임 표시 setting.vsync.name = 수직동기화 setting.lasers.name = 파워 레이저 표시 -setting.healthbars.name = 체력 바 표시 +setting.previewopacity.name = 블럭 배치 미리보기 표시 +setting.healthbars.name = 체력 막대바 표시 setting.pixelate.name = 화면 픽셀화 setting.musicvol.name = 음악 볼륨 setting.mutemusic.name = 음악 끄기 @@ -227,36 +290,36 @@ map.island.name = 섬 map.grassland.name = 초원 map.tundra.name = 툰드라 map.spiral.name = 나선 -map.tutorial.name = 튜토리얼 -tutorial.intro.text = [yellow] 튜토리얼에 오신 것을 환영합니다.[] 시작하려면 '다음'을 누르세요. -tutorial.moveDesktop.text = 이동하려면 [orange] [[WASD] [] 키를 사용하세요. 또한, [orange]Shift[]를 [orange] 누르고 있으면 빠르게 이동할 수 있습니다. [orange]CTRL[]을 누르고 있으면 [orange] 스크롤 휠 []을 사용하여 확대 또는 축소 할 수 있습니다. +map.tutorial.name = 자습서 +tutorial.intro.text = [yellow] 자습서에 오신 것을 환영합니다.[] 시작하려면 '다음'을 누르세요. +tutorial.moveDesktop.text = 이동하려면 [orange] [[WASD] [] 키를 사용하세요. 또한, [orange]Shift[]를 누르고 있으면 빠르게 이동할 수 있습니다. [orange]CTRL[]을 누른 상태에서 [orange] 마우스 스크롤 휠 []을 사용하여 확대 또는 축소 할 수 있습니다 tutorial.shoot.text = 마우스를 사용하여 조준하고 [orange]왼쪽 마우스 버튼[]을 눌러 쏘세요. 저기 노란색 [yellow]타겟[]앞에서 연습해보세요. -tutorial.moveAndroid.text = 화면을 이동하기 위해서 한손가락으로 스크롤을 하세요. 줌인 줌아웃은 두손가락으로 하시면 됩니다. -tutorial.placeSelect.text = 오른쪽 하단에 블럭 메뉴에서[yellow]컨베이어[]를 선택하세요. -tutorial.placeConveyorDesktop.text = [orange][[scrollwheel][]을 사용하여 컨베이어를[orange]앞 방향[]으로 돌린다음 [yellow]표시된 위치[]에 [orange][[left mouse button][]을 이용해 설치 합니다. -tutorial.placeConveyorAndroid.text = 컨베이어를 회전 시키기 위해[orange][[rotate button][]를 터치하고 [orange]앞방향[]을 보게 한후, 한손가락으로 [yellow]표시된 위치[]에 [orange][[checkmark][]으로 설치하세요. -tutorial.placeConveyorAndroidInfo.text = 아니면 왼쪽 하단에 [orange][[touch mode][]를 눌러 터치모드로 전환하고 터치를 이용해 블럭을 배치 할수 있습니다 방향을 바꾸려면 왼쪽하단에 화살표로 바꾸시면 됩니다[yellow]다음[]을 눌러 시도해 보세요 +tutorial.moveAndroid.text = 화면을 이동하기 위해서 한손가락으로 드래그 해 보세요. 확대 및 축소는 두손가락으로 하면 됩니다. +tutorial.placeSelect.text = 오른쪽 하단에 있는 블럭 메뉴에서 [yellow]컨베이어[]를 선택하세요. +tutorial.placeConveyorDesktop.text = [orange][[마우스 스크롤 휠][]을 사용하여 컨베이어를[orange]앞 방향[]으로 돌린다음 [yellow]표시된 위치[]에 [orange][[왼쪽 마우스 버튼][]을 이용해 컨베이어를 설치 합니다. +tutorial.placeConveyorAndroid.text = 컨베이어를 회전 시키기 위해[orange][[회전 버튼][]를 누르고 [orange]앞방향[]을 보게 한후, 한손가락으로 [yellow]표시된 위치[]에 [orange][[확인][] 버튼으로 설치하세요. +tutorial.placeConveyorAndroidInfo.text = 아니면 왼쪽 하단에 [orange][[설치 모드][]를 눌러 클릭모드로 전환하고 클릭만으로 블럭을 배치 할수 있습니다.\n방향을 바꾸려면 왼쪽하단 5번째 칸에 있는 화살표로 바꾸시면 됩니다.\n[yellow]다음[]을 눌러 한번 해 보세요. tutorial.placeDrill.text = 이제, 표시된 위치에 [yellow]돌 드릴[]을 선택하여 배치하세요. tutorial.blockInfo.text = 블록에 대해 더 자세히 알고 싶다면, 오른쪽 상단에있는 [orange]물음표[]를 눌러 설명을 읽으세요. tutorial.deselectDesktop.text = [orange][[마우스 오른쪽 버튼][]을 사용하여 블록을 선택 해제할 수 있습니다. tutorial.deselectAndroid.text = [orange]X[] 버튼을 눌러 블록을 선택 해제할 수 있습니다. -tutorial.drillPlaced.text = 드릴은 이제 [yellow] 돌[]을 생산할 것이고, 컨베이어로 출력 한 다음 [yellow] 코어 []로 옮길 것입니다. +tutorial.drillPlaced.text = 드릴은 이제 [yellow] 돌[]을 생산할 것이고, 컨베이어로 내보낸 다음 [yellow]코어[]로 옮길 것입니다. tutorial.drillInfo.text = 각 광석은 그에 맞는 드릴이 필요합니다. 돌은 돌 드릴이 필요하고, 철은 철 드릴이 필요합니다. -tutorial.drillPlaced2.text = 아이템을 코어로 이동하면 왼쪽 상단의 [orange]아이템 인벤토리[]에 표시됩니다. 인벤토리의 아이템은 블록을 배치할때 사용됩니다. +tutorial.drillPlaced2.text = 아이템을 코어로 이동하면 왼쪽 상단의 [orange]아이템 인벤토리[]에 표시됩니다.\n인벤토리의 아이템은 블록을 배치할때 사용됩니다. tutorial.moreDrills.text = 드릴과 컨베이어는 많이 연결할 수 있습니다. 이것처럼요. -tutorial.deleteBlock.text = 블록을 삭제하고 싶으면 [orange]마우스 오른쪽 버튼[]을 클릭하여 블록을 삭제할 수 있습니다. 이 컨베이어를 삭제 해보십시오. -tutorial.deleteBlockAndroid.text = 왼쪽 하단에 [orange]블록삭제모드[]안에 [orange]십자선을[] 선택한 다음 블록을 눌러 삭제할 수 있습니다. 이 컨베이어를 삭제해 보세요. +tutorial.deleteBlock.text = 블록을 삭제하고 싶으면 [orange]마우스 오른쪽 버튼[]을 클릭하여 블록을 삭제할 수 있습니다.\n이 컨베이어를 삭제 해 보세요. +tutorial.deleteBlockAndroid.text = 왼쪽 하단에 있는 [orange]블록 삭제모드[]안에 [orange]십자선[] 아이콘을 선택한 다음 블록을 눌러 삭제할 수 있습니다. 이 컨베이어를 삭제해 보세요. tutorial.placeTurret.text = 이제[yellow] 표시된 위치 []에 [yellow]포탑[]을 선택하여 배치하세요. -tutorial.placedTurretAmmo.text = 이 포탑은 컨베이어에서 [yellow]탄약[]을 받습니다 커서를 가져 가묜[green]녹색 막대[]를 통해 얼마나 많은 탄약이 있는지 확인 할수 있습니다. -tutorial.turretExplanation.text = 포탑은 충분한 탄약을 보유하고 있는 한 범위 내에서 가장 가까운 적에게 자동으로 총알을 쏩니다. -tutorial.waves.text = [yellow]60[] 초 마다, 웨이브가 시작되고[coral]적[]들이 특정 위치에 스폰되어 코어를 파괴하기위해 올 것 입니다. -tutorial.coreDestruction.text = 당신의 목표는 [yellow]코어를 방어하는 것[]입니다. 코어가 파괴되면 [coral]게임에서 패배합니다[]. -tutorial.pausingDesktop.text = 일시정지를 하고 싶은 경우 왼쪽 상단의 [orange]스페이스[]를 눌러 게임을 일시정지하세요. 일시 중지 된 상태에서는 블록을 선택하고 배치할수는 있지만 이동하거나 쏠수는 없습니다. -tutorial.pausingAndroid.text = 일시정지를 하고 싶은 경우 왼쪽 상단의 [orange]일시 정지 버튼[]을 눌러 게임을 일시정지하세요. 일시 중지 된 상태에서도 선택 및 블록 배치를 할 수 있습니다. +tutorial.placedTurretAmmo.text = 이 포탑은 컨베이어에서 [yellow]탄약[]을 받습니다.\n포탑에 커서를 가리키면 [green]녹색 막대[]를 통해 얼마나 많은 탄약이 포탑 안에있는지 확인 할수 있습니다. +tutorial.turretExplanation.text = 포탑은 충분한 탄약을 보유하고있는 한, 범위 내의 가장 가까운 적을 향해 자동으로 공격합니다. +tutorial.waves.text = [yellow]60[]초 마다, 웨이브가 시작되고[coral]적[]들이 특정 위치에 스폰되어 코어를 파괴하기위해 올 것 입니다. +tutorial.coreDestruction.text = 당신의 목표는 [yellow]코어를 최대한 오래동안 방어하는 것[]입니다. 코어가 파괴되면 [coral]게임에서 패배합니다[]. +tutorial.pausingDesktop.text = 휴식을 취해야 하는 경우, 왼쪽 상단에 있는 [orange]일시정지 버튼[] 을 누르거나 [orange]스페이스바[] 를 눌러 게임을 일시정지 시킬 수 있습니다.\n일시정지된 상태에서 블록을 선택하고 배치할 수는 있지만, 움직이거나 공격할 수는 없습니다. +tutorial.pausingAndroid.text = 휴식을 취해야 하는 경우, 왼쪽 상단에 있는 [orange]일시정지 버튼[] 을 눌러 게임을 일시정지 시킬 수 있습니다.\n일시정지된 상태에서 블록을 선택하고 배치할 수는 있지만, 움직이거나 공격할 수는 없습니다. tutorial.purchaseWeapons.text = 왼쪽 하단에 있는 업그레이드 메뉴를 열어 새로운 [yellow]무기[]를 구입할 수 있습니다. -tutorial.switchWeapons.text = 왼쪽 하단의 아이콘을 클릭하거나 숫자 [orange][[1-9][] 버튼을 사용하여 무기를 전환하세요 +tutorial.switchWeapons.text = 왼쪽 하단의 아이콘을 클릭하거나 숫자 [orange][[1-9][] 버튼을 사용하여 무기를 바꿀 수 있습니다. tutorial.spawnWave.text = 웨이브가 시작되었습니다. 적들을 파괴하세요! -tutorial.pumpDesc.text = 이후 웨이브에선 발전기 또는 추출기 용 액체를 분배하기 위해 [yellow]펌프[] 를 사용해야 할 수도 있습니다 +tutorial.pumpDesc.text = 이후 웨이브에선 발전기 또는 추출기용 액체를 사용하기 위해 [yellow]펌프[] 를 사용해야 할 수도 있습니다 tutorial.pumpPlace.text = 펌프는 드릴과 유사하게 작동하지만, 아이템 대신 액체를 생산합니다. [yellow]지정된 위치[]에 펌프를 놓으세요. tutorial.conduitUse.text = 이제 [orange]파이프[] 를 펌프에서 멀리 떨어트려 두세요 tutorial.conduitUse2.text = 하나 더... @@ -264,63 +327,74 @@ tutorial.conduitUse3.text = 하나 더... tutorial.generator.text = 이제 파이프 끝 부분에 [orange]석유 발전기[] 블록을 놓으세요. tutorial.generatorExplain.text = 이제 이 발전기는 석유에서 [yellow]전력[]을 생성합니다. tutorial.lasers.text = 전력은 [yellow]파워 레이저[]를 통해 전송됩니다. 회전한 후 이곳에 배치하세요. -tutorial.laserExplain.text = 발전기가 이제 레이저 블록으로 전력을 보냅니다. [yellow]불두명[] 광선은 현재 전력을 전송 중임을 의미하고 [yellow]투명[] 광선은 전송하지 않음을 의미합니다. +tutorial.laserExplain.text = 발전기가 이제 레이저 블록으로 전력을 보냅니다.\n[yellow]불투명[] 광선은 현재 전력을 전송 중임을 의미하고 [yellow]투명[] 광선은 전송하지 않음을 의미합니다. tutorial.laserMore.text = 블록 위로 마우스를 올리고 상단의 [yellow]노란 막대[]를 확인하여 블록의 전력을 볼 수 있습니다 -tutorial.healingTurret.text = 이 레이저는 [lime]수리터렛[] 에 전력을 공급하는데 사용합니다. 여기에 하나 놓으세요 -tutorial.healingTurretExplain.text = 전력이 있는 한 이 포탑은 [lime]주변 블록을 수리[] 합니다 시간이 있을 때 가능한 한 빨리 기지에 하나가 있는지 확인하세요! -tutorial.smeltery.text = 많은 블록들은[orange]강철[]을 필요로 합니다. [orange]제련소[]를 선택해 여기에 놓으세요. +tutorial.healingTurret.text = 이 레이저는 [lime]수리포탑[] 에 전력을 공급하는데 사용합니다. 여기에 하나 놓으세요 +tutorial.healingTurretExplain.text = 전력이 있는 한 이 포탑은 [lime]주변 블록을 수리[] 합니다.\n시간이 있을 때 가능한 빨리 기지에 하나가 있는지 확인하세요! +tutorial.smeltery.text = 많은 블록들은[orange]강철[]을 필요로 합니다.\n[orange]제련소[]를 선택해 여기에 놓으세요. tutorial.smelterySetup.text = 이 제련소는 석탄을 연료로 사용하며 철을 넣으면 [orange]강철[] 을 생산할 것입니다. -tutorial.end.text = 이것으로 튜토리얼을 마칩니다! 행운을 빕니다! +tutorial.tunnelExplain.text = 또한 아이템이 [orange]터널 블록[]을 통해 지나가고 다른 쪽에서 돌 블록을 통과하여 나옵니다.\n터널은 최대 2블록까지만 통과할 수 있습니다. +tutorial.end.text = 이것으로 자습서를 마칩니다! 행운을 빕니다! +text.keybind.title = 키 지정 keybind.move_x.name = x축 이동 keybind.move_y.name = y축 이동 keybind.select.name = 선택 -keybind.break.name = 블럭 삭제 -keybind.shootInternal.name = 발사 +keybind.break.name = 파괴 +keybind.shoot.name = 발사 keybind.zoom_hold.name = 확대 할때 누를 버튼 keybind.zoom.name = 확대 +keybind.block_info.name = 블록 정보 keybind.menu.name = 메뉴 keybind.pause.name = 일시정지 -keybind.dash.name = 대시 +keybind.dash.name = 달리기 +keybind.chat.name = 대화창 +keybind.player_list.name = 플레이어 목록 +keybind.console.name = 콘솔 keybind.rotate_alt.name = 반대로 돌기 -keybind.rotate.name = 돌기 +keybind.rotate.name = 회전 keybind.weapon_1.name = 무기 단축키_1 keybind.weapon_2.name = 무기 단축키_2 keybind.weapon_3.name = 무기 단축키_3 keybind.weapon_4.name = 무기 단축키_4 keybind.weapon_5.name = 무기 단축키_5 keybind.weapon_6.name = 무기 단축키_6 -mode.waves.name = 웨이브 -mode.sandbox.name = 무제한 건설 +mode.text.help.title = 모드 설명 +mode.waves.name = 단계 +mode.waves.description = 이것은 일반 모드입니다. 제한된 자원과 자동으로 웨이브가 시작됩니다. +mode.sandbox.name = 샌드박스 +mode.sandbox.description = 무한한 자원과 웨이브를 시작하는 타이머가 없습니다. mode.freebuild.name = 자유 건설 +mode.freebuild.description = 제한된 자원을 가지고 있으며, 웨이브를 시작하기 위한 타이머가 없습니다. upgrade.standard.name = 기본 -upgrade.standard.description = 기본 기계 +upgrade.standard.description = 그냥 기본 총. upgrade.blaster.name = 블래스터 -upgrade.blaster.description = 그냥 평범한 총 -upgrade.triblaster.name = 트리블래스터 -upgrade.triblaster.description = 3발을 동시에 쏘는 총 -upgrade.clustergun.name = 클러스터 -upgrade.clustergun.description = 유탄 발사기, 적에 맞으면 터지거나 일정시간 후 터진다. +upgrade.blaster.description = 그냥 느리고 약한 총알. +upgrade.triblaster.name = 3단 블래스터 +upgrade.triblaster.description = 3발을 동시에 쏘는 총. +upgrade.clustergun.name = 유탄발사기 +upgrade.clustergun.description = 적에 맞으면 폭발하거나, 일정시간 후 터집니다. upgrade.beam.name = 레이저 캐논 upgrade.beam.description = 적을 통과하는 장거리 레이저 빔을 쏩니다 upgrade.vulcan.name = 벌칸 -upgrade.vulcan.description = 빠른 속도로 탄환을 쏩니다 -upgrade.shockgun.name = 쇼크건 +upgrade.vulcan.description = 빠른 속도로 총을 쏩니다 +upgrade.shockgun.name = 샷건 upgrade.shockgun.description = 충전된 총알을 산탄처럼 쏘는 총 item.stone.name = 돌 item.iron.name = 철 item.coal.name = 석탄 item.steel.name = 강철 item.titanium.name = 티타늄 -item.dirium.name = 디리늄 -item.thorium.name = 우라늄 +item.dirium.name = 합금 +item.uranium.name = 우라늄 item.sand.name = 모래 liquid.water.name = 물 liquid.plasma.name = 플라즈마 liquid.lava.name = 용암 liquid.oil.name = 석유 block.weaponfactory.name = 무기 공장 +block.weaponfactory.fulldescription = 플레이어용 무기를 만드는 데 사용됩니다.\n클릭하여 사용하십시오.\n코어에 있는 자원을 사용합니다. block.air.name = 공기 -block.blockpart.name = 블럭 파트 +block.blockpart.name = 블록파트 block.deepwater.name = 깊은 물 block.water.name = 물 block.lava.name = 용암 @@ -330,13 +404,13 @@ block.blackstone.name = 검은 돌 block.iron.name = 철 block.coal.name = 석탄 block.titanium.name = 티타늄 -block.thorium.name = 우라늄 +block.uranium.name = 우라늄 block.dirt.name = 흙 block.sand.name = 모래 block.ice.name = 얼음 block.snow.name = 눈 block.grass.name = 잔디 -block.sandblock.name = 사암 +block.sandblock.name = 모래 블럭 block.snowblock.name = 얼음 블럭 block.stoneblock.name = 돌 블럭 block.blackstoneblock.name = 검은 돌 블럭 @@ -348,95 +422,95 @@ block.icerock.name = 얼음 덩어리 block.blackrock.name = 검은 바위 block.dirtblock.name = 흙 블럭 block.stonewall.name = 돌 벽 -block.stonewall.fulldescription = 제일 안 좋은 벽. 초반 웨이브에서 코어와 포탑을 보호할 때 유용합니다. +block.stonewall.fulldescription = 가장 안좋은 그냥 돌벽. 초반에 코어와 포탑을 보호하는데 사용 할 수 있습니다. block.ironwall.name = 철 벽 block.ironwall.fulldescription = 기본적인 벽 블럭. 적으로부터 보호해 줍니다. block.steelwall.name = 강철 벽 -block.steelwall.fulldescription = 좋은 벽 블럭. 적으로부터의 공격을 대부분 보호해 줍니다. +block.steelwall.fulldescription = 나름 좋은 벽 블럭. 적으로부터의 공격을 대부분 보호해 줍니다. block.titaniumwall.name = 티타늄 벽 block.titaniumwall.fulldescription = 강력한 벽 블럭. 적으로부터의 공격을 거의 보호해 줍니다 -block.duriumwall.name = 디리듐 벽 +block.duriumwall.name = 합금 벽 block.duriumwall.fulldescription = 매우 강력한 벽 블록. 게임내에서 가장 강력한 벽 입니다. block.compositewall.name = 복합 벽 block.steelwall-large.name = 대형 강철 벽 block.steelwall-large.fulldescription = 좋은 벽 블럭. 2x2 크기에 큰 벽입니다. block.titaniumwall-large.name = 대형 티타늄 벽 block.titaniumwall-large.fulldescription = 강력한 벽 블럭. 2x2 크기에 큰 벽입니다. -block.duriumwall-large.name = 대형 디리듐 벽 +block.duriumwall-large.name = 대형 합금 벽 block.duriumwall-large.fulldescription = 매우 강력한 벽 블록. 2x2 크기에 큰 벽입니다. -block.titaniumshieldwall.name = 쉴드 벽 -block.titaniumshieldwall.fulldescription = 쉴드가 내장 된 강력한 벽 블럭입니다. 적의 총알을 흡수할 때 에너지를 사용합니다. 따라서 전력이 필요합니다. 전력을 공급할때 무선 공급기를 사용하면 편리합니다 -block.repairturret.name = 수리 포탑 +block.titaniumshieldwall.name = 보호막 벽 +block.titaniumshieldwall.fulldescription = 보호막이 내장 된 강력한 벽 블럭입니다.\n적의 총알을 흡수할 때 에너지를 사용하기 때문에 전력이 필요합니다.\n전력을 공급할때 무선 공급기를 사용하면 편리합니다 . +block.repairturret.name = 수리포탑 block.repairturret.fulldescription = 범위 안에 있는 손상된 블록을 느린 속도로 수리합니다. 소량의 전력을 사용합니다. -block.megarepairturret.name = 수리 포탑 II +block.megarepairturret.name = 수리포탑 II block.megarepairturret.fulldescription = 범위 안에 있는 손상된 블록을 수리합니다. 전력을 사용합니다. -block.shieldgenerator.name = 쉴드 발전기 -block.shieldgenerator.fulldescription = 고급 보호 블록. 반경 내의 모든 블록을 공격으로부터 보호합니다. 작동 중일 때는 느린 속도로 전력을 사용하지만 공격을 받았을 시 그만큼의 전력을 소모하게 됩니다. +block.shieldgenerator.name = 보호막 발전기 +block.shieldgenerator.fulldescription = 고급 보호 블록. 반경 내의 모든 블록을 공격으로부터 보호합니다.\n작동 중일 때는 느린 속도로 전력을 사용하지만 공격을 받았을 시 그만큼의 전력을 소모하게 됩니다. block.door.name = 문 -block.door.fulldescription = 블록을 탭하여 열거 나 닫을 수 있습니다. +block.door.fulldescription = 블록을 탭하여 열거나 닫을 수 있습니다. block.door-large.name = 대형 문 -block.door-large.fulldescription = 블록을 탭하여 열거 나 닫을 수 있습니다. 2x2 크기 입니다. +block.door-large.fulldescription = 블록을 탭하여 열거나 닫을 수 있습니다. 2x2 크기 입니다. block.conduit.name = 파이프 -block.conduit.fulldescription = 기본 액체 이송 블록. 컨베이어처럼 작동하지만 액체를 운반하는데 쓰입니다. 펌프 또는 다른 파이프와 함께 사용하는 것이 가장 좋습니다. 적과 플레이어가 액체를 건널때 쓰일수도 있습니다. +block.conduit.fulldescription = 기본 액체 이송 블록. 컨베이어처럼 작동하지만 액체를 운반하는데 쓰입니다.\n펌프 또는 다른 파이프와 함께 사용하는 것이 가장 좋습니다.\n적과 플레이어가 액체를 건널때 쓰일수도 있습니다. block.pulseconduit.name = 펄스 파이프 block.pulseconduit.fulldescription = 파이프에 상위호환, 액체를 더 빨리 운반하고 파이프보다 더 많이 저장합니다. block.liquidrouter.name = 액체 분배기 -block.liquidrouter.fulldescription = 분배기와 유사하게 작동합니다. 한 방향으로 액체를 입력받아 다른 방향으로 출력합니다. 하나의 파이프에서 다른 파이프들로 액체를 분배할 때 유용합니다. +block.liquidrouter.fulldescription = 분배기와 유사하게 작동합니다.\n한 방향으로 액체를 입력받아 다른 방향으로 출력합니다. 하나의 파이프에서 다른 파이프들로 액체를 분배할 때 유용합니다. block.conveyor.name = 컨베이어 -block.conveyor.fulldescription = 기본 컨베이어. 아이템을 앞으로 운반시켜 자동으로 포탑이나 제작기에 넣어 줍니다. 회전이 가능합니다. 적과 플레이어의 다리가 될수 도 있습니다. +block.conveyor.fulldescription = 기본 컨베이어.\n아이템을 앞으로 운반시켜 자동으로 포탑이나 제작기에 넣어 줍니다.\n회전이 가능하고 적과 플레이어의 다리가 될 수도 있습니다. block.steelconveyor.name = 강철 컨베이어 block.steelconveyor.fulldescription = 빠른 컨베이어, 표준 컨베이어보다 빠르게 아이템을 운반합니다. block.poweredconveyor.name = 펄스 컨베이어 -block.poweredconveyor.fulldescription = 가장 빠른 컨베이어. 강철 컨베이어보다 빠르게 항목을 이동합니다. +block.poweredconveyor.fulldescription = 가장 빠른 컨베이어. 강철 컨베이어보다 매우 항목을 이동합니다. block.router.name = 분배기 -block.router.fulldescription = 한 방향으로 아이템을 받아 다른 방향으로 출력합니다. 하나의 컨베이어에서 다른 컨베이어들로 아이템을 분배할 때 유용합니다 +block.router.fulldescription = 한 방향으로 아이템을 받아 다른 방향으로 출력합니다.\n하나의 컨베이어에서 다른 컨베이어들로 아이템을 분배할 때 유용합니다 block.junction.name = 교차기 -block.junction.fulldescription = 두 개의 컨베이어를 교차시키는 역할을합니다. 교차된 위치의 다른 재료를 담고있는 2개의 컨베이어가 있는 상황에서 유용합니다. +block.junction.fulldescription = 두 개의 컨베이어를 교차시키는 역할을합니다.\n교차된 위치의 다른 재료를 담고있는 2개의 컨베이어가 있는 상황에서 유용합니다. block.conveyortunnel.name = 컨베이어 터널 -block.conveyortunnel.fulldescription = 한블럭 단위로 아이템을 전송 합니다. 사용하려면 두 터널이 한블럭을 사이로 서로 반대 방향을 향하게하세요. +block.conveyortunnel.fulldescription = 한블럭 단위로 아이템을 전송 합니다.\n이 블럭을 사용하려면 두 터널이 한블럭을 사이로 서로 반대 방향을 향하게하세요. block.liquidjunction.name = 액체 교차기 -block.liquidjunction.fulldescription = 교차기와 유사합니다, 두 개 파이프를 교차시키는 역할을합니다. 교차된 위치의 다른 액체를 담고있는 2개의 파이프가 있는 상황에서 유용합니다. +block.liquidjunction.fulldescription = 교차기와 유사하며 두 개 파이프를 교차시키는 역할을합니다.\n교차된 위치의 다른 액체를 담고있는 2개의 파이프가 있는 상황에서 유용합니다. block.liquiditemjunction.name = 액체 아이템 교차기 -block.liquiditemjunction.fulldescription = 파이프와 컨베이어를 교차 시키는 역할을합니다. +block.liquiditemjunction.fulldescription = 파이프와 컨베이어를 교차시키는 역할을합니다. block.powerbooster.name = 무선 전력 공급기 block.powerbooster.fulldescription = 반경 내에 무선으로 전력을 공급합니다. block.powerlaser.name = 파워 레이저 -block.powerlaser.fulldescription = 반경 내에 바라보는 블록에 전력을 전송하는 레이저를 쏩니다. 전력을 생성하지는 않습니다. 발전기 또는 다른 레이저와 함께 사용하는 것이 가장 좋습니다. +block.powerlaser.fulldescription = 반경 내에 바라보는 블록에 전력을 전송하는 레이저를 쏩니다.\n전력을 생성하지는 않고 발전기 또는 다른 레이저와 함께 사용하는 것이 가장 좋습니다. block.powerlaserrouter.name = 레이저 분배기 -block.powerlaserrouter.fulldescription = 한 번에 세 방향으로 전력을 전송하는 레이저를 쏩니다. 하나의 발전기에서 여러 개의 블록에 전원을 공급해야하는 경우에 유용합니다. +block.powerlaserrouter.fulldescription = 한 번에 세 방향으로 전력을 전송하는 레이저를 쏩니다.\n하나의 발전기에서 여러 개의 블록에 전원을 공급해야하는 경우에 유용합니다. block.powerlasercorner.name = 코너 레이저 -block.powerlasercorner.fulldescription = 한 번에 두 방향으로 전력을 전송하는 레이저를 쏩니다. 하나의 발전기에서 여러 개의 블록에 전원을 공급해야하는 상황에서 유용합니다 +block.powerlasercorner.fulldescription = 한 번에 두 방향으로 전력을 전송하는 레이저를 쏩니다.\n하나의 발전기에서 여러 개의 블록에 전원을 공급해야하는 상황에서 유용합니다 block.teleporter.name = 텔레포터 -block.teleporter.fulldescription = 고급 아이템 전송 블록. 텔레포터는 동일한 색깔의 다른 텔레포터에게 아이템을 전송합니다. 같은 색의 텔레포터가 없다면 아무 것도 하지 않습니다. 동일한 색상의 여러 텔레포터가 있는 경우 임의의 하나에게 전송됩니다. 전원을 사용하고, 눌러서 색깔을 바꿀수 있습니다. +block.teleporter.fulldescription = 고급 아이템 전송 블록.\n텔레포터는 동일한 색깔의 다른 텔레포터에게 아이템을 전송합니다.\n같은 색의 텔레포터가 없다면 아무것도 하지 않습니다.\n동일한 색상의 여러 텔레포터가 있는 경우 임의의 하나에게 전송됩니다.\n전원을 사용하고, 눌러서 색깔을 바꿀수 있습니다. block.sorter.name = 필터 -block.sorter.fulldescription = 유형별로 아이템을 정렬합니다. 통과할 아이템은 블록의 색상으로 표시됩니다. 통과된 아이템은 앞으로 출력 되고 나머지는 왼쪽과 오른쪽으로 출력됩니다. +block.sorter.fulldescription = 유형별로 아이템을 정렬합니다.\n통과할 아이템은 블록의 색상으로 표시됩니다.\n통과된 아이템은 앞으로 출력 되고 나머지는 왼쪽과 오른쪽으로 출력됩니다. block.core.name = 코어 block.pump.name = 펌프 -block.pump.fulldescription = 물, 용암 또는 기름과 같은 액체를 퍼올립니다 붙어있는 파이프에게 액체를 배출합니다. +block.pump.fulldescription = 물, 용암 또는 기름과 같은 액체를 퍼올립니다.\n붙어있는 파이프에게 액체를 배출합니다. block.fluxpump.name = 플럭스 펌프 block.fluxpump.fulldescription = 빠른 펌프. 더 많은 액체를 저장하고 액체를 더 빠르게 퍼올립니다. block.smelter.name = 제련소 -block.smelter.fulldescription = 필수적인 제작 블록. 철 1개 석탄 1개를 넣으면 강철 1개를 생산합니다. +block.smelter.fulldescription = 필수적인 제작 블록.\n1개의 철과 1개의 석탄을 연료로 넣으면 하나의 강철을 생성합니다.\n막힘을 방지하기 위해 철과 석탄을 다른 컨베이어에 넣는 것이 좋습니다. block.crucible.name = 도가니 -block.crucible.fulldescription = 고급 제작 블록. 티타늄 1개 스틸 1개 석탄 1개를 넣으면 하나의 디리듐을 생산합니다. +block.crucible.fulldescription = 고급 제작 블록.\n티타늄 1개, 강철 1개, 석탄 1개를 연료로 넣으면 하나의 합금을 출력합니다.\n막힘을 방지하기 위해 석탄, 강철 및 티타늄을 다른 컨베이어에 입력하는 것이 좋습니다. block.coalpurifier.name = 석탄 추출기 block.coalpurifier.fulldescription = 간단한 추출기. 다량의 물과 돌이 공급되면 석탄을 생산합니다. block.titaniumpurifier.name = 티타늄 추출기 block.titaniumpurifier.fulldescription = 기본 추출기 블록. 다량의 물과 철이 공급되면 티타늄을 생산합니다. block.oilrefinery.name = 정유소 -block.oilrefinery.fulldescription = 다량의 기름을 석탄으로 정제합니다. 석탄이 부족할 때 석탄 기반 포탑에 연료를 공급하는 데 유용합니다. +block.oilrefinery.fulldescription = 다량의 기름을 석탄으로 정제합니다.\n석탄이 부족할 때 석탄 기반 포탑에 연료를 공급하는 데 유용합니다. block.stoneformer.name = 돌 생산기 block.stoneformer.fulldescription = 용암을 돌로 바꿉니다. 석탄 추출기용 돌을 대량 생산할 때 유용합니다. block.lavasmelter.name = 용암 제련소 -block.lavasmelter.fulldescription = 용암을 사용하여 철을 강철로 전환합니다. 제련소의 대안으로 쓸수 있습니다. 석탄이 부족한 상황에서 유용합니다. +block.lavasmelter.fulldescription = 용암을 사용하여 철을 강철로 전환합니다. 제련소의 대안으로 쓸수 있습니다.\n석탄이 부족한 상황에서 유용합니다. block.stonedrill.name = 돌 드릴 -block.stonedrill.fulldescription = 필수 적인 드릴. 돌 타일 위에 놓으면 느린속도로 채굴합니다. +block.stonedrill.fulldescription = 필수 적인 드릴. 돌 타일 위에 놓을 때 느린속도로 채굴합니다. block.irondrill.name = 철 드릴 block.irondrill.fulldescription = 기본 드릴. 철 광석 타일에 놓으면 느린속도로 철을 채굴합니다. block.coaldrill.name = 석탄 드릴 block.coaldrill.fulldescription = 기본 드릴. 석탄 광석 타일 위에 놓으면 느린속도로 석탄을 채굴 합니다. -block.thoriumdrill.name = 우라늄 드릴 -block.thoriumdrill.fulldescription = 고급 드릴. 우라늄 광석 타일 위에 놓으면 느린 속도로 우라늄을 채굴합니다. +block.uraniumdrill.name = 우라늄 드릴 +block.uraniumdrill.fulldescription = 고급 드릴. 우라늄 광석 타일 위에 놓으면, 느린 속도로 우라늄을 채굴합니다. block.titaniumdrill.name = 티타늄 드릴 block.titaniumdrill.fulldescription = 고급 드릴. 티타늄 광석 타일 위에 놓으면 느린속도로 티타늄을 채굴합니다. block.omnidrill.name = 옴니 드릴 @@ -450,30 +524,30 @@ block.combustiongenerator.fulldescription = 기름에서 전력을 생산합니 block.rtgenerator.name = 우라늄 발전기 block.rtgenerator.fulldescription = 우라늄의 방사성 붕괴로부터 적은 양의 전력을 생성합니다. 4면에 레이저로 전력을 출력합니다. block.nuclearreactor.name = 원자로 -block.nuclearreactor.fulldescription = 우라늄 발전기의 고급 버전. 우라늄으로부터 전력을 생산합니다. 냉각수가 필요하며 높은 휘발성을 가지고 있습니다. 부족한 양의 냉각수가 공급되면 크게 폭발 합니다. +block.nuclearreactor.fulldescription = 우라늄 발전기의 고급 버전. 우라늄으로부터 전력을 생산합니다.\n냉각수가 필요하며 높은 휘발성을 가지고 있습니다.\n물 공급량이 부족할 경우 매우 크게 폭발 하여 다른 블록에게 큰 피해를 줍니다. block.turret.name = 포탑 block.turret.fulldescription = 간단한 포탑. 탄약으로 돌을 사용합니다. 이중 포탑보다 약간 넓은 범위를가집니다. -block.doubleturret.name = 이중 포탑 -block.doubleturret.fulldescription = 포탑의 상위 버전입니다. 탄약으로 돌을 사용합니다. 더 많은 데미지를 주지만 범위는 낮습니다. 두발에 총알을 쏩니다 -block.machineturret.name = 게틀링 터렛 +block.doubleturret.name = 2단 포탑 +block.doubleturret.fulldescription = 포탑의 상위 버전입니다. 탄약으로 돌을 사용합니다. 더 많은 데미지를 주지만 범위는 낮습니다. 총알 2발을 동시에 발사합니다. +block.machineturret.name = 게틀링 포탑 block.machineturret.fulldescription = 표준적인 포탑. 탄약으로 철을 사용합니다. 적당한 데미지에 빠른 발사 속도를 가지고 있습니다. -block.shotgunturret.name = 스플리터 터렛 +block.shotgunturret.name = 스플리터 포탑 block.shotgunturret.fulldescription = 표준적인 포탑. 탄약으로 철을 사용합니다. 7발에 총알을 쏩니다. 범위가 낮지만 게틀링 포탑보다 높은 데미지를 가지고 있습니다. -block.flameturret.name = 화염 터렛 +block.flameturret.name = 화염 포탑 block.flameturret.fulldescription = 고급 근거리 포탑. 탄약으로 석탄을 사용합니다. 범위는 낮지만 높은 데미지를 가지고 있습니다, 벽 뒤에 두는것이 좋습니다. -block.sniperturret.name = 레일 건 터렛 -block.sniperturret.fulldescription = 고급 장거리 포탑. 탄약으로 강철을 사용합니다. 매우 높은 데미지를 입지만 발사 속도는 낮습니다. 비싸지 만 사용 범위에 따라 적의 선과 멀리 떨어질 수 있습니다. -block.mortarturret.name = 플랭크 터렛 -block.mortarturret.fulldescription = 고급 범위공격 터렛. 탄약으로 석탄을 사용합니다. 매우 느린 발사 속도와 총알을 가지고 있지만, 단일 타겟 데미지와 스플래쉬 데미지는 매우 높습니다. 뭉쳐있는 적군에게 유용합니다. +block.sniperturret.name = 레일건 포탑 +block.sniperturret.fulldescription = 고급 장거리 포탑. 탄약에 강철을 사용합니다. 매우 높은 데미지를 입힐 수 있지만 발사 속도는 낮습니다.\n사용 범위에 따라 적의 공격 범위 밖에서 공격할 스 있습니다. +block.mortarturret.name = 플랭크 포탑 +block.mortarturret.fulldescription = 고급 저 정확도 스플래쉬 데미지 포탑. 탄약에 석탄을 사용합니다. 파편으로 폭발하는 총알을 사용하고. 많은 적군에게 유용합니다. block.laserturret.name = 레이저 포탑 -block.laserturret.fulldescription = 고급 싱글 타겟 터렛. 전력을 사용합니다. 좋은 중거리 포위 터렛. 단일 타겟 만. 절대 놓치지 마십시오. +block.laserturret.fulldescription = 고급 단일 대상 공격 포탑. 전력을 사용합니다. 중간 크기의 사거리를 가지고 있고 절대 빗나가지 않습니다. block.waveturret.name = 테슬라 포탑 -block.waveturret.fulldescription = 고급 다중 타겟 포탑. 전력을 사용합니다. 중간 범위를 가지고 있으며. 타겟을 놓칠 염려가 없습니다. 데미지는 거의 없지만 연속공격으로 여러 명의 적들을 동시에 때릴 수 있습니다. +block.waveturret.fulldescription = 고급 다중 타겟 포탑. 전력을 사용합니다. 중간크기의 사거리를 가지고 있으며. 절대 빗나가지 않으므로 걱정할 염려가 없습니다.\n데미지는 거의 없지만 연속공격으로 여러 명의 적들을 동시에 공격 할 수 있습니다. block.plasmaturret.name = 플라즈마 포탑 -block.plasmaturret.fulldescription = 포탑의 최고급 버전. 석탄을 탄약으로 사용합니다. 매우 높은 데미지를 가지고 있고, 근거리와 중거리의 걸쳐있습니다. +block.plasmaturret.fulldescription = 포탑의 최고급 버전. 석탄을 탄약으로 사용합니다.\n엄청나게 높은 데미지와 근거리와 중거리 사이 정도의 사거리를 가지고 있습니다. block.chainturret.name = 체인 포탑 -block.chainturret.fulldescription = 궁극에 고속 포탑. 우라늄을 탄약으로 사용합니다. 높은 발사속도에 적당한 사정거리를 가지고 있고 대형 슬러그를 쏩니다. 여러 타일에 걸쳐 있으며. 매우 아픕니다. +block.chainturret.fulldescription = 궁극에 고속 포탑. 우라늄을 탄약으로 사용합니다. 높은 발사속도에 적당한 사정거리를 가지고 있고 대형 알을 발사합니다.\n2x2 크기이고, 매우 아픕니다. block.titancannon.name = 타이탄 캐논 -block.titancannon.fulldescription = 궁극의 장거리 포탑. 우라늄을 탄약으로 사용합니다. 적당한 발사속도에 긴 사정거리를 가지고 있고 여러 타일에 걸쳐 있으며. 매우 아픕니다 +block.titancannon.fulldescription = 궁극의 장거리 포탑. 우라늄을 탄약으로 사용합니다. 적당한 발사속도에 긴 사정거리를 가지고 있고 3x3 크기이며, 매우 아픕니다 block.playerspawn.name = 플레이어 스폰 지점 block.enemyspawn.name = 적 스폰 지점 diff --git a/core/assets/bundles/bundle_tk.properties b/core/assets/bundles/bundle_tk.properties new file mode 100644 index 0000000000..814f36c6e0 --- /dev/null +++ b/core/assets/bundles/bundle_tk.properties @@ -0,0 +1,551 @@ +text.about = [ROYAL] Anuken tarafından oluşturuldu [] - [SKY] anukendev@gmail.com [] Aslen [turuncu] GDL [] Metal Monstrosity Jam. Kredi: - [SARI] ile yapılan SFX bfxr [] - [YEŞİL] RoccoW tarafından yapılan müzik [] / [kireç] bulunan FreeMusicArchive.org [] Özel teşekkürler: - [mercan] MitchellFJN []: Kapsamlı oyun testi ve geri bildirim - [sky] Luxray5474 []: wiki çalışması, kod katkıları - [kireç] Epowerj []: kod sistemi yapılandırması, icon - itch.io ve Google Play'deki tüm beta test kullanıcıları\n +text.credits = Yapımcılar +text.discord = Mindustry Discord'una katılın! +text.changes = [SCARLET] Dikkat! [] Bazı önemli oyun mekanikleri değişti. - [Aksanın] teletaşıyıcı [] şimdi artık gücü kullanıyor. - [accent] dökümcü [] ve [accent] pota [] artık bir maksimum ürün kapasitesine sahip. - [Aksan] pota [] artık yakıt olarak kömür gerektiriyor. +text.link.discord.description = Resmi Mindustry Discord iletişim kanalı +text.link.github.description = Oyunun kaynak kodu +text.link.dev-builds.description = Geliştirme altında olan sürüm +text.link.trello.description = Planlanan özellikler için resmi Trello Bülteni +text.link.itch.io.description = PC yüklemeleri ve web sürümü ile itch.io sayfası +text.link.google-play.description = Google Play mağaza sayfası +text.link.wiki.description = Resmi Mindustry Wikipedi'si +text.linkfail = Bağlantı açılamadı! URL, yazı tahtanıza kopyalandı. +text.editor.web = Web sürümü editörü desteklemiyor! Editörü kullanmak için oyunu indirin. +text.multiplayer.web = Oyunun bu sürümü çok oyunculuyu desteklemiyor! Tarayıcınızdan çok oyunculu oynamak için, itch.io sayfasındaki \"çok oyunculu web sürümü\" bağlantısını kullanın. +text.gameover = Çekirdek yok edildi. +text.highscore = [SARI] Yeni yüksek puan! +text.lasted = Dalgaya kadar sürdün +text.level.highscore = Yüksek Puan: [accent] {0} +text.level.delete.title = Silmeyi onaylayın +text.level.delete = \"[Orange] {0} \" Haritayı silmek istediğinizden emin misiniz? +text.level.select = Seviye Seç +text.level.mode = Oyun Modu +text.savegame = Oyunu Kaydet +text.loadgame = Oyunu yükle +text.joingame = Oyuna katıl +text.newgame = Yeni Oyun +text.quit = Çık +text.about.button = Hakkında +text.name = Adı: +text.public = Herkese açık +text.players = 1090 oyuncu çevrimiçi +text.server.player.host = Sunucu +text.players.single = {0} Oyuncu Çevrimiçi +text.server.mismatch = Paket hatası: olası istemci / sunucu sürümü uyuşmazlığı. Siz ve ev sahibi Mindustry'nin en son sürümüne sahip olduğunuzdan emin olun! +text.server.closing = [accent] Sunucu kapatılıyor ... +text.server.kicked.kick = Sunucudan kovuldun! +text.server.kicked.invalidPassword = Geçersiz şifre! +text.server.kicked.clientOutdated = Oyun sürümünüz geçerli değil. Oyununu güncelleyin! +text.server.kicked.serverOutdated = Eski sunucu! Ev sahibinden güncellemesini isteyin! +text.server.kicked.banned = Bu sunucudan yasaklandınız. +text.server.kicked.recentKick = Son zamanlarda tekmelendin. Tekrar bağlanmadan önce bekleyin. +text.server.connected = {0} katıldı. +text.server.disconnected = {0} bağlantısı kesildi. +text.nohost = Özel bir haritada sunucuyu barındıramıyor! +text.host.info = [Vurgu] ana bilgisayarı [] düğmesi, [657] [65] [65] ve [65] [6568] bağlantı noktalarında bir sunucuyu barındırır. [] Aynı [LIGHT_GRAY] wifi veya yerel ağ [] üzerindeki herkes sunucunuzu sunucularında görebilir. liste. Kişilerin IP tarafından herhangi bir yerden bağlanabilmesini istiyorsanız [vurgu] bağlantı noktası iletme [] gereklidir. [LIGHT_GRAY] Not: Birisi LAN oyununuza bağlanırken sorun yaşıyorsa, güvenlik duvarı ayarlarınızda Mindustry'e yerel ağınıza erişebildiğinizden emin olun. +text.join.info = Burada, bağlanmak için yerel ağ [] sunucularına bağlanmak ya da [aksan] sunucularını bulmak için bir [vurgu] sunucunun IP [] girebilirsiniz. Hem LAN hem de WAN çok oyunculu desteklenir. [LIGHT_GRAY] Not: Otomatik bir global sunucu listesi yoktur; Birisine IP ile bağlanmak isterseniz, ana bilgisayardan kendi IP adreslerini sormanız gerekir. +text.hostserver = Oyunu Sun +text.host = evsahibi +text.hosting = [accent] Sunucu açılıyor ... +text.hosts.refresh = Yenile +text.hosts.discovering = LAN oyunlarını keşfetme +text.server.refreshing = Canlandırıcı sunucu +text.hosts.none = [lightgray] Hayır LAN oyunları bulundu! +text.host.invalid = [scarlet] Ana bilgisayara bağlanılamıyor. +text.server.friendlyfire = Dost ateşi +text.trace = Oyuncuyu Takip Et +text.trace.playername = Oyuncu adı: [accent] {0} +text.trace.ip = IP: [vurgu] {0} +text.trace.id = Benzersiz kimlik: [accent] {0} +text.trace.android = Android : [accent] {0} +text.trace.modclient = Özel Alıcı: [accent] {0} +text.trace.totalblocksbroken = Toplam kırık blok: [accent] {0} +text.trace.structureblocksbroken = Kırılan yapı blokları: [accent] {0} +text.trace.lastblockbroken = Kırılan son blok: [accent] {0} +text.trace.totalblocksplaced = Toplam blok yerleştirildi: [accent] {0} +text.trace.lastblockplaced = Konulan son blok: [accent] {0} +text.invalidid = Geçersiz alıcı kimliği! Bir hata raporu gönderin. +text.server.bans = yasaklar +text.server.bans.none = Yasaklanmış oyuncu bulunamadı! +text.server.admins = Yöneticiler +text.server.admins.none = Yönetici bulunamadı! +text.server.add = Sunucu ekle +text.server.delete = Bu sunucuyu silmek istediğinizden emin misiniz? +text.server.hostname = Sun +text.server.edit = Sunucuyu Düzenle +text.server.outdated = [crimson] Eski Sunucu! +text.server.outdated.client = [crimson] Eski Alıcı! +text.server.version = [lightgray] Sürüm: {0} +text.server.custombuild = [sarı] Özel Yapım +text.confirmban = Bu oyuncuyu yasaklamak istediğinizden emin misiniz? +text.confirmunban = Bu oyuncunun yasağını kaldırmak istediğinden emin misin? +text.confirmadmin = Bu oyuncunun yönetici yapmak istediğinden emin misin? +text.confirmunadmin = Bu oyuncudan yönetici durumunu kaldırmak istediğinizden emin misiniz? +text.joingame.byip = IP ile Katılın ... +text.joingame.title = Oyuna katılmak +text.joingame.ip = IP: +text.disconnect = Bağlantı Kesildi +text.disconnect.data = Dünya verileri yüklenemedi! +text.connecting = [Vurgu] bağlanıyor ... +text.connecting.data = [accent] Dünya verileri yükleniyor ... +text.connectfail = [crimson] Sunucuya bağlanılamadı: [orange] {0} +text.server.port = Liman +text.server.addressinuse = Adres çoktan kullanımda! +text.server.invalidport = Bağlantı noktası numarası geçersiz. +text.server.error = [crimson] Sunucu barındırma hatası: [orange] {0} +text.tutorial.back = <Önceki +text.tutorial.next = İleri > +text.save.new = 6349,Yeni Kayıt +text.save.overwrite = Bu kayıt yuvasının üzerine yazmak istediğinizden emin misiniz? +text.overwrite = Üzerine Yaz +text.save.none = Hiçbir kayıt bulunamadı! +text.saveload = [Vurgu] Kaydediliyor ... +text.savefail = Oyun kaydedilemedi! +text.save.delete.confirm = Bu kaydı silmek istediğinizden emin misiniz? +text.save.delete = Sil +text.save.export = Dışa Aktar +text.save.import.invalid = [turuncu] Bu kayıt geçersiz! +text.save.import.fail = [crimson] Kayıt oyuna aktarılamadı : [orange] {0} +text.save.export.fail = [crimson] Kayıt dışa aktarılamadı: [orange] {0} +text.save.import = İçe Aktar +text.save.newslot = İsmi kaydet: +text.save.rename = Yeniden Adlandır +text.save.rename.text = Yeni İsim: +text.selectslot = Bir kayıt seçin. +text.slot = [accent] Yuva {0} +text.save.corrupted = [orange] Kayıt dosyası bozuk veya geçersiz! +text.empty = +text.on = Açık +text.off = Kapalı +text.save.autosave = Otomatik kaydetme: {0} +text.save.map = harita +text.save.wave = Dalga +text.save.difficulty = zorluk +text.save.date = Son Kaydedilen: {0} +text.confirm = Onayla +text.delete = Sil +text.ok = Tamam +text.open = Açık +text.cancel = İptal +text.openlink = Linki aç +text.copylink = Bağlantıyı kopyala +text.back = Geri +text.quit.confirm = Çıkmak istediğinden emin misin? +text.changelog.title = Değişiklik listesi +text.changelog.loading = Değişiklik listesi yükleniyor +text.changelog.error.android = [turuncu] Android'da olan hata nedeniyle değişiklik listesi görüntülenemiyor. +text.changelog.error = [scarlet] Değişiklik listesi alma hatası! İnternet bağlantınızı kontrol edin. +text.changelog.current = [sarı] [[Güncel versiyon] +text.changelog.latest = [turuncu] [[Son sürüm] +text.loading = [Vurgu] Yükleniyor ... +text.wave = [turuncu] Dalga {0} +text.wave.waiting = {0} içinde dalga +text.waiting = Bekleniyor +text.enemies = {0} Düşmanlar +text.enemies.single = {0} Düşman +text.loadimage = Resmi yükle +text.saveimage = Resmi Kaydet +text.oregen = Maden Üretimi +text.editor.badsize = [orange] Resim boyutları geçersiz! [] Geçerli harita boyutları: {0} +text.editor.errorimageload = Resim dosyası yüklenirken hata oluştu: [orange] {0} +text.editor.errorimagesave = Resim dosyası kaydedilirken hata oluştu: [orange] {0} +text.editor.generate = Üretmek +text.editor.resize = Yeniden Boyutlandırma +text.editor.loadmap = Harita Yükle +text.editor.savemap = Harita Kaydet +text.editor.loadimage = Resmi yükle +text.editor.saveimage = Resmi Kaydet +text.editor.unsaved = [scarlet] Kaydedilmemiş değişiklikleriniz var! [] Çıkmak istediğinizden emin misiniz? +text.editor.brushsize = Fırça boyutu: {0} +text.editor.noplayerspawn = Bu haritanın oyuncu spawnpoint'i yok! +text.editor.manyplayerspawns = Haritalar, birden fazla oyuncu spawnpoint'e sahip olamaz! +text.editor.manyenemyspawns = {0} düşman spawnpoint {0}'den daha fazlası olamaz! +text.editor.resizemap = Haritayı Yeniden Boyutlandır +text.editor.resizebig = [Kızıl] Uyarı! [] 256'dan büyük haritalar yavaş ve dengesiz olabilir. +text.editor.mapname = Harita Adı +text.editor.overwrite = [Vurgu] Uyarı! Bu mevcut bir haritanın üzerine yazar. +text.editor.failoverwrite = [crimson] Varsayılan haritanın üzerine yazılamıyor! +text.editor.selectmap = Yüklenecek bir harita seçin: +text.width = Genişliği: +text.height = Boy: +text.randomize = Rasgele seçmek +text.apply = Uygula +text.update = Güncelle +text.menu = Menü +text.play = Oyna +text.load = Yükle +text.save = Kaydet +text.language.restart = Lütfen dil ayarlarının etkili olması için oyununuzu yeniden başlatın. +text.settings.language = Dil +text.settings = Ayarlar +text.tutorial = Eğitim +text.editor = Editör +text.mapeditor = Harita Editörü +text.donate = Bağışlamak +text.settings.reset = Varsayılanlara Dön +text.settings.controls = kontroller +text.settings.game = Oyun +text.settings.sound = Ses +text.settings.graphics = Grafik +text.upgrades = Geliştirmeler +text.purchased = [KİREÇ] Yap၊ld၊ +text.weapons = Silahlar +text.paused = Duraklatıldı +text.respawn = Saniye içinde yeniden doğacaksınız. +text.info.title = [Vurgu] Bilgi +text.error.title = [crimson] Bir hata oluştu +text.error.crashmessage = [SCARLET] Bir kilitlenme meydana getiren beklenmeyen bir hata oluştu. [] Lütfen geliştiriciye bu hatanın gerçekleştiği koşulları bildirin: [ORANGE] anukendev@gmail.com [] +text.error.crashtitle = Bir hata oluştu +text.mode.break = Ara verme modu: {0} +text.mode.place = Döşeme modu: {0} +placemode.hold.name = hat +placemode.areadelete.name = alan +placemode.touchdelete.name = dokun +placemode.holddelete.name = tut +placemode.none.name = Yok +placemode.touch.name = dokun +placemode.cursor.name = İmleç +text.blocks.extrainfo = [accent] fazladan blok bilgisi: +text.blocks.blockinfo = Blok Bilgisi +text.blocks.powercapacity = Güç kapasitesi +text.blocks.powershot = Güç / atış +text.blocks.powersecond = Güç / saniye +text.blocks.powerdraindamage = Güç tahliye / hasar +text.blocks.shieldradius = Kalkan Yarıçapı +text.blocks.itemspeedsecond = Ürün Hız / saniye +text.blocks.range = Menzil +text.blocks.size = Boyut +text.blocks.powerliquid = Güç / Sıvı +text.blocks.maxliquidsecond = Maksimum sıvı / saniye +text.blocks.liquidcapacity = Sıvı kapasitesi +text.blocks.liquidsecond = Sıvı / saniye +text.blocks.damageshot = Zarar / atış +text.blocks.ammocapacity = Mermi kapasitesi +text.blocks.ammo = Cephane: +text.blocks.ammoitem = Cephane / öğe +text.blocks.maxitemssecond = Maksimum öğe / saniye +text.blocks.powerrange = Güç aralığı +text.blocks.lasertilerange = Lazer karo aralığı +text.blocks.capacity = Kapasite +text.blocks.itemcapacity = Ürün kapasitesi +text.blocks.maxpowergenerationsecond = Maksimum Güç Üretimi / saniye +text.blocks.powergenerationsecond = Güç Üretimi / saniye +text.blocks.generationsecondsitem = Nesil Saniye / öğe +text.blocks.input = giriş +text.blocks.inputliquid = Giriş sıvı +text.blocks.inputitem = Giriş öğesi +text.blocks.output = Çıktı +text.blocks.secondsitem = Saniye / öğe +text.blocks.maxpowertransfersecond = Maksimum güç aktarımı / saniye +text.blocks.explosive = Çok patlayıcı! +text.blocks.repairssecond = Tamir / saniye +text.blocks.health = Can +text.blocks.inaccuracy = yanlışlık +text.blocks.shots = atışlar +text.blocks.shotssecond = Çekim / saniye +text.blocks.fuel = Yakıt +text.blocks.fuelduration = Yakıt Süresi +text.blocks.maxoutputsecond = Maksimum çıkış / saniye +text.blocks.inputcapacity = Giriş kapasitesi +text.blocks.outputcapacity = Çıkış kapasitesi +text.blocks.poweritem = Güç / Ürün +text.placemode = Yer Modu +text.breakmode = Mola modu +text.health = sağlık +setting.difficulty.easy = kolay +setting.difficulty.normal = orta +setting.difficulty.hard = zor +setting.difficulty.insane = deli +setting.difficulty.purge = tasfiye +setting.difficulty.name = Zorluk: +setting.screenshake.name = Ekran Sallamak +setting.smoothcam.name = Pürüzsüz kamera +setting.indicators.name = Düşman Göstergeleri +setting.effects.name = Görüntü Efektleri +setting.sensitivity.name = Denetleyici hassasiyeti +setting.saveinterval.name = Otomatik Kaydetme Aralığı +setting.seconds = saniye +setting.fullscreen.name = Tam ekran +setting.multithread.name = Çok iş parçacığı +setting.fps.name = Saniyede ... Kare göstermek +setting.vsync.name = VSync +setting.lasers.name = Güç Lazerleri Göster +setting.healthbars.name = Varlık Sağlık çubuklarını göster +setting.pixelate.name = Piksel Ekran +setting.musicvol.name = Müzik sesi +setting.mutemusic.name = Müziği Kapat +setting.sfxvol.name = SFX Hacmi +setting.mutesound.name = Sesi kapat +map.maze.name = Labirent +map.fortress.name = Kale +map.sinkhole.name = düden +map.caves.name = mağaralar +map.volcano.name = volkan +map.caldera.name = kaldera +map.scorch.name = alazlamak +map.desert.name = çöl +map.island.name = ada +map.grassland.name = Çayır +map.tundra.name = tundra +map.spiral.name = sarmal +map.tutorial.name = Eğitim +tutorial.intro.text = [sarı] Eğiticiye hoşgeldiniz. [] Başlamak için 'ileri' ye basın. +tutorial.moveDesktop.text = Taşımak için [turuncu] [[WASD] [] tuşlarını kullanın. Destek için [turuncu] shift [] tuşunu basılı tutun. Yakınlaştırmak veya uzaklaştırmak için [turuncu] kaydırma tekerini [] kullanırken [turuncu] CTRL [] tuşunu basılı tutun. +tutorial.shoot.text = Hedeflemek için farenizi kullanın, [turuncu] sol fare tuşunu [] vurun. [Sarı] hedef [] üzerinde çalışmayı deneyin. +tutorial.moveAndroid.text = Görünümü kaydırmak için, bir parmağınızı ekran boyunca sürükleyin. Yakınlaştırmak veya uzaklaştırmak için sıkıştırın ve sürükleyin. +tutorial.placeSelect.text = Sağ alttaki blok menüsünden [sarı] bir konveyör [] seçmeyi deneyin. +tutorial.placeConveyorDesktop.text = [Turuncu] [[scrollwheel] [] tuşunu kullanarak konveyörü [turuncu] ileriye [] getirin ve [turuncu] [[sol fare tuşu] [] düğmesini kullanarak [sarı] işaretli konuma [] yerleştirin. +tutorial.placeConveyorAndroid.text = [Turuncu] [[döndürme düğmesi] [] düğmesini kullanarak konveyörü [turuncu] ileriye [] doğru döndürün, bir parmağınızla konumuna sürükleyin, ardından [turuncu] kullanarak [sarı] işaretli konuma [] yerleştirin [[onay işareti][]. +tutorial.placeConveyorAndroidInfo.text = Alternatif olarak, [turuncu] [[dokunma modu] [] moduna geçmek için sol alt taraftaki artı simgesini ve ekrana dokunarak blokları yerleştirebilirsiniz. Dokunmatik modda, bloklar soldaki ok ile döndürülebilir. Denemek için [sarı] sonraki [] tuşuna basın. +tutorial.placeDrill.text = Şimdi, işaretlenmiş konuma bir [sarı] taş matkap [] seçin ve yerleştirin. +tutorial.blockInfo.text = Bir blok hakkında daha fazla bilgi edinmek isterseniz, açıklamayı okumak için sağ üstteki [turuncu] soru işaretine [] dokunabilirsiniz. +tutorial.deselectDesktop.text = [Turuncu] [[sağ fare tuşu] [] kullanarak bir bloğu kaldırabilirsiniz. +tutorial.deselectAndroid.text = [Turuncu] X [] düğmesine basarak bir bloğun seçimini kaldırabilirsiniz. +tutorial.drillPlaced.text = Matkap şimdi [sarı] taş üretecek, [] konveyör üzerine çıkacak, daha sonra [sarı] çekirdeğe [] hareket ettirilecektir. +tutorial.drillInfo.text = Farklı cevherlerin farklı matkaplara ihtiyacı vardır. Taş taş matkaplar gerektirir, demir demir matkaplar gerektirir, vb. +tutorial.drillPlaced2.text = Öğeleri çekirdeğe taşımak, onları sol üstteki [sarı] öğe envanterinize [] yerleştirir. Yerleştirme blokları, envanterinizdeki öğeleri kullanır. +tutorial.moreDrills.text = Birçok matkap ve konveyörü birbirine bağlayabilirsiniz. +tutorial.deleteBlock.text = Silmek istediğiniz blokta [turuncu] sağ fare düğmesine [] tıklayarak blokları silebilirsiniz. Bu konveyörü silmeyi deneyin. +tutorial.deleteBlockAndroid.text = Alt soldaki [turuncu] kesme modu menüsünde [] artı işaretini [] seçerek ve bir bloka dokunarak blokları [turuncu] ile silebilirsiniz. Bu konveyörü silmeyi deneyin. +tutorial.placeTurret.text = Şimdi, [sarı] işaretli konuma [] [sarı] bir taret [] seçin ve yerleştirin. +tutorial.placedTurretAmmo.text = Bu taret artık konveyör [sarı] mermiyi [] kabul edecektir. Üzerinde gezdirerek ne kadar cephane olduğunu ve yeşil renkli [[yeşil] çubuğunu [] kontrol ederek görebilirsiniz. +tutorial.turretExplanation.text = Taretler, yeterli mermiye sahip oldukları sürece otomatik olarak en yakın düşmana ateş ederler. +tutorial.waves.text = Her [sarı] 60 [] saniyede, [mercan] düşmanlardan oluşan bir dalga [] belirli yerlerde doğacak ve çekirdeği yok etmeye çalışacaktır. +tutorial.coreDestruction.text = Hedefiniz [sarı] çekirdeği [] savunmaktır. Çekirdek yok edilirse, [mercan] oyunu kaybedersiniz []. +tutorial.pausingDesktop.text = Bir ara vermeniz gerekiyorsa, oyunu duraklatmak için sol üstteki [turuncu] duraklat [] düğmesine veya [turuncu] boşluk [] tuşuna basın. Duraklatılırken blokları seçebilir ve yerleştirebilirsiniz, ancak hareket edemez veya ateş edemezsiniz. +tutorial.pausingAndroid.text = Bir ara vermeniz gerekirse, oyunu duraklatmak için sol üstteki [turuncu] duraklatma düğmesine [] basın. Duraklatılırken hala blokları kırıp yerleştirebilirsiniz. +tutorial.purchaseWeapons.text = Alt soldaki yükseltme menüsünü açarak, makineniz için yeni [sarı] silahlar [] satın alabilirsiniz. +tutorial.switchWeapons.text = Silahları, sol alt taraftaki simgesini tıklayarak veya sayıları [turuncu] [[1-9] [] kullanarak değiştirebilirsiniz. +tutorial.spawnWave.text = İşte şimdi bir dalga geliyor. Onları yok et. +tutorial.pumpDesc.text = Daha sonraki dalgalarda, jeneratörler veya aspiratörler için sıvı dağıtmak için [sarı] pompaları [] kullanmanız gerekebilir. +tutorial.pumpPlace.text = Pompalar, matkaplar yerine benzer şekilde çalışırlar; [Sarı] belirlenmiş yağa [] bir pompa yerleştirmeyi deneyin. +tutorial.conduitUse.text = Şimdi pompadan önde giden bir [turuncu] kablo kanalı [] yerleştirin. +tutorial.conduitUse2.text = Ve birkaç tane daha ... +tutorial.conduitUse3.text = Ve birkaç tane daha ... +tutorial.generator.text = Şimdi, kanalın ucunda bir [turuncu] yanma jeneratörü [] bloğu yerleştirin. +tutorial.generatorExplain.text = Bu jeneratör şimdi yağdan [sarı] güç [] oluşturacaktır. +tutorial.lasers.text = Güç [sarı] güç lazerleri [] kullanılarak dağıtılır. Döndür ve buraya bir tane yerleştir. +tutorial.laserExplain.text = Jeneratör şimdi gücü lazer bloğuna taşıyacaktır. Bir [sarı] opak [] ışını, şu anda gücü iletmekte olduğu anlamına gelir ve [sarı] saydam [] ışını, bunun olmadığı anlamına gelir. +tutorial.laserMore.text = Bir bloğun üzerine geldiğinde ne kadar gç olduğunu ve üst taraftaki [sarı] sarı çubuğu [] kontrol ederek kontrol edebilirsiniz. +tutorial.healingTurret.text = Bu lazer bir [kireç] onarım tareti [] için kullanılabilir. Bir tane buraya yerleştirin. +tutorial.healingTurretExplain.text = Gücü olduğu sürece, bu taret yakındaki blokları tamir eder. [] en yakın zamanda bu bloku temin edin! +tutorial.smeltery.text = Pek çok blok, [turuncu] yapılabilmesi için çelik gerektirir ve bu da [turuncu] bir dökümcünün [] yapılmasını gerektirir. Bir tane buraya yerleştirin. +tutorial.smelterySetup.text = Bu dökümcü kömürü yakıt olarak kullanarak, demirden [turuncu] çelik [] üretecek. +tutorial.tunnelExplain.text = Ayrıca, eşyaların bir [turuncu] tünel bloğundan [] geçtiğini ve taş bloktan geçerek diğer tarafta ortaya çıktığını unutmayın. Tünellerin yalnızca 2 bloğa kadar gidebileceğini unutmayın. +tutorial.end.text = Ve bu dersi bitirir! İyi şanslar! +text.keybind.title = Tuşları yeniden ayarla +keybind.move_x.name = sağ / sol +keybind.move_y.name = yukarı / aşağı +keybind.select.name = seçmek +keybind.break.name = kırmak +keybind.shoot.name = ateş etme +keybind.zoom_hold.name = tut ve büyüt +keybind.zoom.name = Yakınlaştır +keybind.block_info.name = blok bilgisi +keybind.menu.name = menü +keybind.pause.name = duraklatma +keybind.dash.name = tire +keybind.chat.name = Sohbet +keybind.player_list.name = oyuncu listesi +keybind.console.name = KONTROL MASASI +keybind.rotate_alt.name = rotate_alt +keybind.rotate.name = Döndür +keybind.weapon_1.name = weapon_1 +keybind.weapon_2.name = weapon_2 +keybind.weapon_3.name = weapon_3 +keybind.weapon_4.name = weapon_4 +keybind.weapon_5.name = weapon_5 +keybind.weapon_6.name = weapon_6 +mode.text.help.title = Modların açıklaması +mode.waves.name = dalgalar +mode.waves.description = normal mod. sınırlı kaynaklar ve otomatik gelen dalgalar. +mode.sandbox.name = Limitsiz Oynama +mode.sandbox.description = sonsuz kaynaklar ve dalgalar için zamanlayıcı yok. +mode.freebuild.name = Özgür Oynama +mode.freebuild.description = sınırlı kaynaklar ve dalgalar için zamanlayıcı yok. +upgrade.standard.name = standart +upgrade.standard.description = Standart mech. +upgrade.blaster.name = blaster +upgrade.blaster.description = Yavaş, zayıf bir mermi ateş eder. +upgrade.triblaster.name = triblaster +upgrade.triblaster.description = Bir yayında 3 mermi ateş eder. +upgrade.clustergun.name = clustergun +upgrade.clustergun.description = Yayılan bombalar ateş eder. +upgrade.beam.name = lazer +upgrade.beam.description = Uzun menzilli bir delici lazer ışını atar. +upgrade.vulcan.name = Vulkan +upgrade.vulcan.description = Hızlı mermiler ateş eder. +upgrade.shockgun.name = shockgun +upgrade.shockgun.description = Yıkıcı ve patlayıcı mermiler savurarak ateş eder. +item.stone.name = taş +item.iron.name = Demir +item.coal.name = kömür +item.steel.name = çelik +item.titanium.name = titanyum +item.dirium.name = dirium +item.uranium.name = uranyum +item.sand.name = kum +liquid.water.name = su +liquid.plasma.name = plazma +liquid.lava.name = lav +liquid.oil.name = petrol +block.weaponfactory.name = silah fabrikası +block.weaponfactory.fulldescription = Oyuncu mech için silah oluşturmak için kullanılır. Kullanmak için tıklayın. Kaynaklarını otomatik olarak çekirdekten alır. +block.air.name = hava +block.blockpart.name = blokparçası +block.deepwater.name = derin su +block.water.name = su +block.lava.name = lav +block.oil.name = petrol +block.stone.name = taş +block.blackstone.name = siyah taş +block.iron.name = Demir +block.coal.name = kömür +block.titanium.name = titanyum +block.uranium.name = uranyum +block.dirt.name = toprak +block.sand.name = kum +block.ice.name = buz +block.snow.name = kar +block.grass.name = Otlar +block.sandblock.name = kumbloku +block.snowblock.name = karbloku +block.stoneblock.name = taşbloku +block.blackstoneblock.name = blackstoneblock +block.grassblock.name = grassblock +block.mossblock.name = mossblock +block.shrub.name = çalı +block.rock.name = Kaya +block.icerock.name = ICEROCK +block.blackrock.name = Siyah Kaya +block.dirtblock.name = dirtblock +block.stonewall.name = taş duvar +block.stonewall.fulldescription = Ucuz bir savunma bloğu. İlk birkaç dalgada çekirdeği ve tareti korumak için kullanışlıdır. +block.ironwall.name = Demir duvar +block.ironwall.fulldescription = Temel bir savunma bloğu. Düşmanlardan korunma sağlar. Taş duvardan daha korunaklıdır. +block.steelwall.name = Çelik duvar +block.steelwall.fulldescription = Standart bir savunma bloğu. düşmanlardan korunma sağlar +block.titaniumwall.name = titanyum duvar +block.titaniumwall.fulldescription = Güçlü bir savunma bloğu. Düşmanlardan korunma sağlar. +block.duriumwall.name = dirium duvar +block.duriumwall.fulldescription = Çok güçlü bir savunma bloğu. Düşmanlardan korunma sağlar. +block.compositewall.name = kompozit duvar +block.steelwall-large.name = büyük çelik duvar +block.steelwall-large.fulldescription = Standart bir savunma bloğu. Birden fazla fayansa yayılır. +block.titaniumwall-large.name = büyük titanyum duvar +block.titaniumwall-large.fulldescription = Güçlü bir savunma bloğu. Birden fazla fayans yayılır. +block.duriumwall-large.name = büyük dirsek duvarı +block.duriumwall-large.fulldescription = Çok güçlü bir savunma bloğu. Birden fazla fayans yayılır. +block.titaniumshieldwall.name = korumalı duvar +block.titaniumshieldwall.fulldescription = Ekstra yerleşik bir kalkan ile güçlü bir savunma bloğu. Düşman mermilerini emmek için enerji kullanır. Bu bloğa enerji sağlamak için güç arttırıcıların kullanılması tavsiye edilir. +block.repairturret.name = onarım tareti +block.repairturret.fulldescription = Yakındaki hasarlı blokları yavaş bir hızda tamir eder. Küçük menzili vardır. Az miktarlarda güç kullanır. +block.megarepairturret.name = onarım tareti II +block.megarepairturret.fulldescription = Yakındaki hasarlı blokları tamir eder. Uygun menzillidir. Gücü kullanır. +block.shieldgenerator.name = kalkan üreteci +block.shieldgenerator.fulldescription = Gelişmiş bir savunma bloğu. Bir yarıçaptaki tüm blokları saldırıya karşı korur. Boştayken gücü yavaş bir hızda kullanır, ancak mermi temasında enerjiyi hızla boşaltır. +block.door.name = kapı +block.door.fulldescription = Dokunarak açılıp kapatılabilen bir blok. +block.door-large.name = büyük kapı +block.door-large.fulldescription = Dokunarak açılıp kapatılabilen bir blok. +block.conduit.name = sıvı borusu +block.conduit.fulldescription = Temel sıvı taşıma bloğu. Bir konveyör gibi çalışır, ancak sıvılar ile. pompa veya diğer borular ile kullanılır. Düşmanlar ve oyuncular için sıvılar üzerinde bir köprü olarak kullanılabilir. +block.pulseconduit.name = hızlı sıvı borusu +block.pulseconduit.fulldescription = Gelişmiş sıvı taşıma bloku. Sıvıları daha hızlı taşır ve standart sıvı taşıma borularından daha fazla sıvı depolar. +block.liquidrouter.name = sıvı yönlendirici +block.liquidrouter.fulldescription = Bir yönlendiriciye benzer şekilde çalışır. Bir taraftan sıvı girişi kabul eder ve diğer tarafa gönderir. Tek bir borudan diğer birçok boruyla sıvı paylaşmak için kullanışlıdır. +block.conveyor.name = konveyör +block.conveyor.fulldescription = En temel madde taşıma bloğu. Öğeleri konulduğu yöne göre maddeleri ileriye taşır ve bunları otomatik olarak taretlere ya da üretici bloklara getirir. konulmadan önce Döndürülebilirler, ancak konulduktan sonra Döndürülemezler. Düşmanlar ve oyuncular için sıvılar üzerinde bir köprü olarak kullanılabilir. +block.steelconveyor.name = çelik konveyör +block.steelconveyor.fulldescription = Gelişmiş madde taşıma bloğu. Öğeleri standart konveyörlerden daha hızlı taşır. +block.poweredconveyor.name = hızlı konveyör +block.poweredconveyor.fulldescription = Nihai ürün taşıma bloğu. Öğeleri çelik konveyörlerden daha hızlı taşır. +block.router.name = yönlendirici +block.router.fulldescription = Öğeleri bir yönden kabul eder ve 3 farklı yöne gönderir. Malzemelerin belirli bir miktarını da depolayabilir. Malzemelerin bir matkaptan çoklu taretlere ayrılması için uygundur. +block.junction.name = Kavşak noktası +block.junction.fulldescription = İki çapraz şekilde geçmeye çalışan konveyör bandı için köprü görevi görür. Farklı yerlere farklı malzemeler taşıyan konveyör olduğu durumlarda kullanışlıdır. +block.conveyortunnel.name = konveyör tüneli +block.conveyortunnel.fulldescription = Maddeleri blokların altından geçirmek için kullanılır. Kullanmak için, altına tünel yapılacak bloğun bir tarafta giriş tüneli ve diğer tarafa çıkış tüneli yerleştirin. Her iki tünelin de giriş veya çıkış yapan bloklara doğru zıt yönlere baktığından emin olun. +block.liquidjunction.name = sıvı bağlantı +block.liquidjunction.fulldescription = İki çaprazdan geçen boru için köprü görevi görür. Farklı yerlere farklı sıvılar taşıyan kanalların olduğu durumlarda kullanışlıdır. +block.liquiditemjunction.name = sıvı madde kavşağı +block.liquiditemjunction.fulldescription = Kanalları ve konveyörleri yan yana geçirmek için bir köprü görevi görür. +block.powerbooster.name = güç yükseltici +block.powerbooster.fulldescription = Gücü kendi yarıçapı içindeki tüm bloklara dağıtır. +block.powerlaser.name = güç lazeri +block.powerlaser.fulldescription = Önündeki bloğa güç ileten bir lazer oluşturur. Herhangi bir güç üretmez. En iyi jeneratörler veya diğer lazerler ile kullanılır. +block.powerlaserrouter.name = lazer yönlendirici +block.powerlaserrouter.fulldescription = Bir kerede gücü üç yöne dağıtan lazer. Bir jeneratörden birçok bloka güç verilmesi gereken durumlarda kullanışlıdır. +block.powerlasercorner.name = lazer köşesi +block.powerlasercorner.fulldescription = Bir kerede gücü iki yöne dağıtan lazer. Bir jeneratörden birçok bloka güç verilmesi gereken durumlarda ve bir yönlendiricinin kesin olmadığı durumlarda kullanışlıdır. +block.teleporter.name = teletaşıyıcı +block.teleporter.fulldescription = Gelişmiş madde taşıma bloğu. tele-taşıyıcı, öğeleri aynı renkte olan bir teletaşıyıcıya yönlendirir. Aynı renkte teletaşıyıcı yoksa, hiçbir şey yapmaz. Aynı renkten birden çok tele-yazıcı varsa, rastgele biri seçilir. Gücü kullanır. Rengi değiştirmek için dokunun. Not: Sadece madde ileten teletaşıyıcılar gücü kullanır. +block.sorter.name = ayrıştırıcı +block.sorter.fulldescription = Malzemeleri türüne göre ayrıştırır. Kabul edilecek malzeme bloktaki renkle gösterilir. Doğru materyal ile eşleşen tüm öğeler ileriye doğru çıkar, diğer her şey sol ve sağ taraflardan çıkar. +block.core.name = çekirdek +block.pump.name = pompa +block.pump.fulldescription = Kaynak bloğundan su, lav veya yağ gibi sıvıları pompalar. Yakındaki kanallara sıvıyı aktarır. +block.fluxpump.name = fluxpump +block.fluxpump.fulldescription = Pompanın gelişmiş bir versiyonu. Sıvıyı daha hızlı pompalar ve daha fazla sıvı depolar. +block.smelter.name = dökümcü +block.smelter.fulldescription = Temel üretim bloğu. 1 demir ve 1 kömür yakıt olarak verildiğinde, demir çıkarır. Tıkanmayı önlemek için farklı konveyörlerden demir ve kömürün kullanılması tavsiye edilir. +block.crucible.name = pota +block.crucible.fulldescription = Gelişmiş bir üretim bloğu. 1 titanyum, 1 çelik ve 1 kömür yakıt olarak girildiğinde, dirium çıkarır. Tıkanmayı önlemek için farklı konveyörlerden kömür, çelik ve titanyum kullanılması tavsiye edilir. +block.coalpurifier.name = kömür çıkarıcı +block.coalpurifier.fulldescription = Temel bir ekstraktör bloğu. Çok miktarda su ve taş ile birlikte tedarik edildiğinde kömür çıkarır. +block.titaniumpurifier.name = titanyum çıkarıcı +block.titaniumpurifier.fulldescription = Standart bir ekstraktör bloğu. Çok miktarda su ve demir ile birlikte verildiğinde titanyum çıkarır. +block.oilrefinery.name = yağ rafinerisi +block.oilrefinery.fulldescription = Büyük miktarda yağı kömür parçalarına ayırır. Kömür damarları kıt olduğunda kömür bazlı taretlerin yakıtı için kullanışlıdır. +block.stoneformer.name = taş biçimlendiricisi +block.stoneformer.fulldescription = Lavı taş haline getirir. Muazzam miktarda taş üretmek için kullanışlıdır. +block.lavasmelter.name = lav dökümcüsü +block.lavasmelter.fulldescription = Demiri çeliğe dönüştürmek için lav kullanır. Dökümcüler için bir alternatif. Kömürün az olduğu durumlarda kullanışlıdır +block.stonedrill.name = taş matkap +block.stonedrill.fulldescription = Temel bir matkap. Taş karolara yerleştirildiğinde, süresiz olarak yavaş bir hızda taş çıkarırç +block.irondrill.name = demir matkap +block.irondrill.fulldescription = Temel bir matkap. Demir cevheri çinileri üzerine yerleştirildiğinde, süresiz olarak yavaş bir şekilde demir çıkarıTemel bir matkap. Demir cevheri çinileri üzerine yerleştirildiğinde, süresiz olarak yavaş bir şekilde demir çıkarır.\n. +block.coaldrill.name = kömür matkap +block.coaldrill.fulldescription = Temel bir matkap. Kömür madeninin üzerine yerleştirildiğinde, süresiz olarak yavaş bir şekilde kömür çıkarır. +block.uraniumdrill.name = uranyum matkap +block.uraniumdrill.fulldescription = Gelişmiş bir matkap. Uranyum cevheri üzerine yerleştirildiğinde, uranyumu süresiz olarak yavaş bir hızda çıkarır. +block.titaniumdrill.name = titanyum matkap +block.titaniumdrill.fulldescription = Gelişmiş bir matkap. Titanyum cevherinin üzerine yerleştirildiğinde, sonsuza yavaş bir tempoda titanyum çıkar. +block.omnidrill.name = omnidrill +block.omnidrill.fulldescription = En büyük matkap. Herhangi bir cevherin uzerine yerlestitldiginde hızlı bir hızda cevher çıkarır +block.coalgenerator.name = kömür jeneratörü +block.coalgenerator.fulldescription = Gerekli jeneratör. Kömürden güç üretir. 4 tarafına lazer olarak güç verir. +block.thermalgenerator.name = termik jeneratör +block.thermalgenerator.fulldescription = Lavdan güç üretir. 4 tarafına lazer olarak güç verir. +block.combustiongenerator.name = yanma jeneratörü +block.combustiongenerator.fulldescription = Yağdan güç üretir. 4 tarafına lazer olarak güç verir. +block.rtgenerator.name = RTG jeneratörü +block.rtgenerator.fulldescription = Uranyumun radyoaktif bozunmasından az miktarda güç üretir. 4 tarafına lazer olarak güç verir. +block.nuclearreactor.name = nükleer reaktör +block.nuclearreactor.fulldescription = RTG Jeneratörünün gelişmiş bir versiyonu ve en iyi güç jeneratörüdür. Uranyumdan güç üretir. Su ile soğutulması gerekir. Son derece tehlikelidir; yetersiz miktarda su ile beslenmediğinde şiddetli patlayabilir. +block.turret.name = taret +block.turret.fulldescription = Basit, ucuz bir kule. Cephane için taş kullanır. Çift taretten biraz daha büyük menzillidir. +block.doubleturret.name = çift ​​taret +block.doubleturret.fulldescription = Taretin biraz daha güçlü bir versiyonu. Cephane için taş kullanır. standart tarete nazaran daha fazla hasar verir, ancak daha düşük bir menzile sahiptir. İki mermi ile ateş eder. +block.machineturret.name = gattling tareti +block.machineturret.fulldescription = Demir atan bir taret. Cephane için demir kullanır. İyi bir hasar ile ateş oranına sahiptir. +block.shotgunturret.name = splitter tareti +block.shotgunturret.fulldescription = Standart bir kule. Cephane için demir kullanır. tek atışta 7 mermi yayılır. Düşük menzillidir, ancak Gatling taretinden daha yüksek hasar verir. +block.flameturret.name = alev tareti +block.flameturret.fulldescription = Gelişmiş yakın menzilli taret. Cephane için kömür kullanır. Çok düşük bir menzile sahiptir, ancak çok yüksek hasar verir. Duvarların arkasında kullanılması tavsiye edilir. +block.sniperturret.name = çelik tareti +block.sniperturret.fulldescription = Gelişmiş uzun menzilli taret. Cephane için çelik kullanır. Yüksek hasar verir, ancak düşük ateş hızı vardır. Kullanımı pahalı, ancak yüksek menzili nedeniyle düşmanı uzak mesafelerden vurabilir. +block.mortarturret.name = flak tareti +block.mortarturret.fulldescription = Gelişmiş sıçrama hasarlı tareti. Cephane için kömür kullanır. Patlayan mermi şarapnel saysinde birden fazla düşman vurabilir. büyük düşman topluluklarını yok etmek için kullanışlıdır. +block.laserturret.name = lazer tareti +block.laserturret.fulldescription = Gelişmiş tek hedefli taret. Gücü kullanır. orta menzilli taret. Sadece tek hedefli. Asla ıskalamaz. +block.waveturret.name = tesla tareti +block.waveturret.fulldescription = Gelişmiş birçok hedefli taret. Gücü kullanır. Orta menzilli. Asla ıskalamaz. Düşük ile orta seviyede hasar verir, ancak aynı anda birden fazla düşmana vurabilir. +block.plasmaturret.name = plazma tareti +block.plasmaturret.fulldescription = Alev taretinin gelişmiş versiyonu. kömürü cephane olarak kullanır. Çok yüksek hasar, düşük ila orta menzil. +block.chainturret.name = zincir tareti +block.chainturret.fulldescription = En iyi hızlı ateş tareti. Uranyumu cephane olarak kullanır. Yüksek ateş hızı vardır. Orta menzillidir. Birden fazla blok boyunca yayılır. Son derece dayanıklıdır. +block.titancannon.name = titan topu +block.titancannon.fulldescription = En iyi uzak menzilli taret. Uranyumu cephane olarak kullanır. Orta ateş hızındadır ve top ateşinin sıçrama hasarı büyüktür. Uzun mesafe. Birden fazla blok boyunca yayılır. Son derece dayanıklıdır. +block.playerspawn.name = oyuncudoğuşu +block.enemyspawn.name = dϋşmandoğuşu diff --git a/core/assets/music/1.mp3 b/core/assets/music/1.mp3 index cdbb366b48..642338935e 100644 Binary files a/core/assets/music/1.mp3 and b/core/assets/music/1.mp3 differ diff --git a/core/assets/music/2.mp3 b/core/assets/music/2.mp3 index cab7d699eb..8a40164ad5 100644 Binary files a/core/assets/music/2.mp3 and b/core/assets/music/2.mp3 differ diff --git a/core/assets/music/3.mp3 b/core/assets/music/3.mp3 index f03d72bbcc..1586984c2d 100644 Binary files a/core/assets/music/3.mp3 and b/core/assets/music/3.mp3 differ diff --git a/core/assets/music/4.mp3 b/core/assets/music/4.mp3 index 48c4ff24fc..8f1998b9c8 100644 Binary files a/core/assets/music/4.mp3 and b/core/assets/music/4.mp3 differ diff --git a/core/assets/music/5.mp3 b/core/assets/music/5.mp3 deleted file mode 100644 index 65a5034fbf..0000000000 Binary files a/core/assets/music/5.mp3 and /dev/null differ diff --git a/core/assets/music/6.mp3 b/core/assets/music/6.mp3 deleted file mode 100644 index 88f04f33a8..0000000000 Binary files a/core/assets/music/6.mp3 and /dev/null differ diff --git a/core/src/io/anuke/mindustry/Vars.java b/core/src/io/anuke/mindustry/Vars.java index 5fe60457bd..f39511b080 100644 --- a/core/src/io/anuke/mindustry/Vars.java +++ b/core/src/io/anuke/mindustry/Vars.java @@ -102,7 +102,7 @@ public class Vars{ public static final int tilesize = 8; - public static final Locale[] locales = {new Locale("en"), new Locale("fr", "FR"), new Locale("ru"), new Locale("uk", "UA"), new Locale("pl", "PL"), + public static final Locale[] locales = {new Locale("en"), new Locale("fr"), new Locale("ru"), new Locale("uk", "UA"), new Locale("pl", "PL"), new Locale("de"), new Locale("pt", "BR"), new Locale("ko"), new Locale("in", "ID"), new Locale("ita"), new Locale("es")}; public static final Color[] playerColors = { diff --git a/core/src/io/anuke/mindustry/core/Control.java b/core/src/io/anuke/mindustry/core/Control.java index c7ed0d553d..fdf693e0a5 100644 --- a/core/src/io/anuke/mindustry/core/Control.java +++ b/core/src/io/anuke/mindustry/core/Control.java @@ -103,7 +103,7 @@ public class Control extends Module{ Sounds.setFalloff(9000f); - Musics.load("1.mp3", "2.mp3", "3.mp3", "4.mp3", "5.mp3", "6.mp3"); + Musics.load("1.mp3", "2.mp3", "3.mp3", "4.mp3"); DefaultKeybinds.load(); @@ -188,6 +188,11 @@ public class Control extends Module{ }); } + //FIXME figure out what's causing this problem in the first place + public void triggerInputUpdate(){ + Gdx.input = proxy; + } + public void setError(Throwable error){ this.error = error; } @@ -266,9 +271,7 @@ public class Control extends Module{ throw new RuntimeException(error); } - if(Gdx.input != proxy){ - Gdx.input = proxy; - } + Gdx.input = proxy; if(Inputs.keyTap("console")){ console = !console; @@ -292,16 +295,21 @@ public class Control extends Module{ controly -= ya*baseControllerSpeed*scl; controlling = true; + Gdx.input.setCursorCatched(true); + Inputs.getProcessor().touchDragged(Gdx.input.getX(), Gdx.input.getY(), 0); } controlx = Mathf.clamp(controlx, 0, Gdx.graphics.getWidth()); controly = Mathf.clamp(controly, 0, Gdx.graphics.getHeight()); - if(Gdx.input.getDeltaX() > 1 || Gdx.input.getDeltaY() > 1) - controlling = false; + if(Gdx.input.getDeltaX() > 1 || Gdx.input.getDeltaY() > 1) { + controlling = false; + Gdx.input.setCursorCatched(false); + } }else{ controlling = false; + Gdx.input.setCursorCatched(false); } if(!controlling){ diff --git a/core/src/io/anuke/mindustry/core/Logic.java b/core/src/io/anuke/mindustry/core/Logic.java index 2918be163b..0ae214dad5 100644 --- a/core/src/io/anuke/mindustry/core/Logic.java +++ b/core/src/io/anuke/mindustry/core/Logic.java @@ -83,6 +83,8 @@ public class Logic extends Module { if(!state.is(State.menu)){ + if(control != null) control.triggerInputUpdate(); + if(!state.is(State.paused) || Net.active()){ Timers.update(); } diff --git a/core/src/io/anuke/mindustry/core/NetClient.java b/core/src/io/anuke/mindustry/core/NetClient.java index 07ded27877..86c5ec9d73 100644 --- a/core/src/io/anuke/mindustry/core/NetClient.java +++ b/core/src/io/anuke/mindustry/core/NetClient.java @@ -35,6 +35,7 @@ import static io.anuke.mindustry.Vars.*; public class NetClient extends Module { private final static float dataTimeout = 60*18; private final static float playerSyncTime = 2; + private final static int maxRequests = 50; private Timer timer = new Timer(5); /**Whether the client is currently conencting.*/ @@ -47,6 +48,7 @@ public class NetClient extends Module { private IntMap recent = new IntMap<>(); /**Counter for data timeout.*/ private float timeoutTime = 0f; + private int requests = 0; public NetClient(){ @@ -125,11 +127,12 @@ public class NetClient extends Module { if(entity instanceof BaseUnit) enemies ++; if (entity == null || id == player.id) { - if (id != player.id) { + if (id != player.id && requests < maxRequests) { EntityRequestPacket req = new EntityRequestPacket(); req.id = id; req.group = groupid; Net.send(req, SendMode.udp); + requests ++; } data.position(data.position() + writesize); } else { @@ -322,6 +325,7 @@ public class NetClient extends Module { } void sync(){ + requests = 0; if(timer.get(0, playerSyncTime)){ PositionPacket packet = new PositionPacket(); diff --git a/core/src/io/anuke/mindustry/core/NetServer.java b/core/src/io/anuke/mindustry/core/NetServer.java index 8207bd4a1e..803e9058f1 100644 --- a/core/src/io/anuke/mindustry/core/NetServer.java +++ b/core/src/io/anuke/mindustry/core/NetServer.java @@ -179,8 +179,8 @@ public class NetServer extends Module{ if(!Timers.get("fastshoot-" + id + "-" + weapon.id, wtrc)){ info.fastShots.getAndIncrement(weapon.id, 0, 1); - if(info.fastShots.get(weapon.id, 0) > (int)(wtrc / (weapon.getReload() / 2f)) + 8){ - kick(id, KickReason.kick); + if(info.fastShots.get(weapon.id, 0) > (int)(wtrc / (weapon.getReload() / 2f)) + 30){ + kick(id, KickReason.fastShoot); } }else{ info.fastShots.put(weapon.id, 0); @@ -202,6 +202,14 @@ public class NetServer extends Module{ if(recipe == null || recipe.debugOnly != debug) return; + Tile tile = world.tile(packet.x, packet.y); + if(tile.synthetic() && admins.isValidateReplace() && !admins.validateBreak(admins.getTrace(Net.getConnection(id).address).uuid, Net.getConnection(id).address)){ + if(Timers.get("break-message-" + id, 120)){ + sendMessageTo(id, "[scarlet]Anti-grief: you are replacing blocks too quickly. wait until replacing again."); + } + return; + } + state.inventory.removeItems(recipe.requirements); Placement.placeBlock(placer.team, packet.x, packet.y, block, packet.rotation, true, false); @@ -221,6 +229,15 @@ public class NetServer extends Module{ if(!Placement.validBreak(placer.team, packet.x, packet.y)) return; + Tile tile = world.tile(packet.x, packet.y); + + if(tile.synthetic() && !admins.validateBreak(admins.getTrace(Net.getConnection(id).address).uuid, Net.getConnection(id).address)){ + if(Timers.get("break-message-" + id, 120)){ + sendMessageTo(id, "[scarlet]Anti-grief: you are breaking blocks too quickly. wait until breaking again."); + } + return; + } + Block block = Placement.breakBlock(placer.team, packet.x, packet.y, true, false); if(block != null) { @@ -282,6 +299,7 @@ public class NetServer extends Module{ }); Net.handleServer(EntityRequestPacket.class, (cid, packet) -> { + int id = packet.id; int dest = cid; EntityGroup group = Entities.getGroup(packet.group); @@ -382,6 +400,12 @@ public class NetServer extends Module{ return connections.get(connectionID).uuid; } + void sendMessageTo(int id, String message){ + ChatPacket packet = new ChatPacket(); + packet.text = message; + Net.sendTo(id, packet, SendMode.tcp); + } + void sync(){ if(timer.get(timerEntitySync, serverSyncTime)){ diff --git a/core/src/io/anuke/mindustry/core/Renderer.java b/core/src/io/anuke/mindustry/core/Renderer.java index d214d8484d..e5e9e86018 100644 --- a/core/src/io/anuke/mindustry/core/Renderer.java +++ b/core/src/io/anuke/mindustry/core/Renderer.java @@ -332,15 +332,15 @@ public class Renderer extends RendererModule{ if(!player.isLocal && !player.isDead()){ layout.setText(Core.font, player.name); Draw.color(0f, 0f, 0f, 0.3f); - Draw.rect("blank", player.x, player.y + 8 - layout.height/2, layout.width + 2, layout.height + 2); + Draw.rect("blank", player.getDrawPosition().x, player.getDrawPosition().y + 8 - layout.height/2, layout.width + 2, layout.height + 2); Draw.color(); Draw.tcolor(player.getColor()); - Draw.text(player.name, player.x, player.y + 8); + Draw.text(player.name, player.getDrawPosition().x, player.getDrawPosition().y + 8); if(player.isAdmin){ Draw.color(player.getColor()); float s = 3f; - Draw.rect("icon-admin-small", player.x + layout.width/2f + 2 + 1, player.y + 7f, s, s); + Draw.rect("icon-admin-small", player.getDrawPosition().x + layout.width/2f + 2 + 1, player.getDrawPosition().y + 7f, s, s); } Draw.reset(); } diff --git a/core/src/io/anuke/mindustry/entities/SyncEntity.java b/core/src/io/anuke/mindustry/entities/SyncEntity.java index 164c5e797c..2c8c5f536c 100644 --- a/core/src/io/anuke/mindustry/entities/SyncEntity.java +++ b/core/src/io/anuke/mindustry/entities/SyncEntity.java @@ -119,6 +119,8 @@ public abstract class SyncEntity extends DestructibleEntity{ time += 1f / spacing * Math.min(Timers.delta(), 1f); + time = Mathf.clamp(time, 0, 2f); + Mathf.lerp2(pos.set(last), target, time); rotation = Mathf.slerpDelta(rotation, targetrot, 0.6f); diff --git a/core/src/io/anuke/mindustry/input/DefaultKeybinds.java b/core/src/io/anuke/mindustry/input/DefaultKeybinds.java index 007414c082..ddf55418ef 100644 --- a/core/src/io/anuke/mindustry/input/DefaultKeybinds.java +++ b/core/src/io/anuke/mindustry/input/DefaultKeybinds.java @@ -24,13 +24,14 @@ public class DefaultKeybinds { "dash", Input.SHIFT_LEFT, "rotate_alt", new Axis(Input.R, Input.E), "rotate", new Axis(Input.SCROLL), + "toggle_menus", Input.C, "block_info", Input.CONTROL_LEFT, "player_list", Input.TAB, + "item_withdraw", Input.SHIFT_LEFT, "chat", Input.ENTER, "chat_history_prev", Input.UP, "chat_history_next", Input.DOWN, "chat_scroll", new Axis(Input.SCROLL), - "item_withdraw", Input.SHIFT_LEFT, "console", Input.GRAVE, "weapon_1", Input.NUM_1, "weapon_2", Input.NUM_2, @@ -41,7 +42,7 @@ public class DefaultKeybinds { ); KeyBinds.defaults( - DeviceType.controller, + DeviceType.controller, "move_x", new Axis(Input.CONTROLLER_L_STICK_HORIZONTAL_AXIS), "move_y", new Axis(Input.CONTROLLER_L_STICK_VERTICAL_AXIS), "cursor_x", new Axis(Input.CONTROLLER_R_STICK_HORIZONTAL_AXIS), diff --git a/core/src/io/anuke/mindustry/net/Administration.java b/core/src/io/anuke/mindustry/net/Administration.java index 66e156f7f6..08adae7560 100644 --- a/core/src/io/anuke/mindustry/net/Administration.java +++ b/core/src/io/anuke/mindustry/net/Administration.java @@ -3,9 +3,13 @@ package io.anuke.mindustry.net; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Json; import com.badlogic.gdx.utils.ObjectMap; +import com.badlogic.gdx.utils.TimeUtils; import io.anuke.ucore.core.Settings; public class Administration { + public static final int defaultMaxBrokenBlocks = 15; + public static final int defaultBreakCooldown = 1000*15; + private Json json = new Json(); /**All player info. Maps UUIDs to info. This persists throughout restarts.*/ private ObjectMap playerInfo = new ObjectMap<>(); @@ -14,12 +18,72 @@ public class Administration { private Array bannedIPs = new Array<>(); public Administration(){ - Settings.defaults("playerInfo", "{}"); - Settings.defaults("bannedIPs", "{}"); + Settings.defaultList( + "playerInfo", "{}", + "bannedIPs", "{}", + "antigrief", false, + "antigrief-max", defaultMaxBrokenBlocks, + "antigrief-cooldown", defaultBreakCooldown + ); load(); } + public boolean isAntiGrief(){ + return Settings.getBool("antigrief"); + } + + public boolean isValidateReplace(){ + return false; + } + + public void setAntiGrief(boolean antiGrief){ + Settings.putBool("antigrief", antiGrief); + Settings.save(); + } + + public void setAntiGriefParams(int maxBreak, int cooldown){ + Settings.putInt("antigrief-max", maxBreak); + Settings.putInt("antigrief-cooldown", cooldown); + Settings.save(); + } + + public boolean validateBreak(String id, String ip){ + if(!isAntiGrief() || isAdmin(id, ip)) return true; + + PlayerInfo info = getCreateInfo(id); + + if(info.lastBroken == null || info.lastBroken.length != Settings.getInt("antigrief-max")){ + info.lastBroken = new long[Settings.getInt("antigrief-max")]; + } + + long[] breaks = info.lastBroken; + + int shiftBy = 0; + for(int i = 0; i < breaks.length && breaks[i] != 0; i ++){ + if(TimeUtils.timeSinceMillis(breaks[i]) >= Settings.getInt("antigrief-cooldown")){ + shiftBy = i; + } + } + + for (int i = 0; i < breaks.length; i++) { + breaks[i] = (i + shiftBy >= breaks.length) ? 0 : breaks[i + shiftBy]; + } + + int remaining = 0; + for(int i = 0; i < breaks.length; i ++){ + if(breaks[i] == 0){ + remaining = breaks.length - i; + break; + } + } + + if(remaining == 0) return false; + + breaks[breaks.length - remaining] = TimeUtils.millis(); + return true; + } + /**Call when a player joins to update their information here.*/ public void updatePlayerJoined(String id, String ip, String name){ PlayerInfo info = getCreateInfo(id); @@ -248,6 +312,8 @@ public class Administration { public boolean banned, admin; public long lastKicked; //last kicked timestamp + public long[] lastBroken; + PlayerInfo(String id){ this.id = id; } diff --git a/core/src/io/anuke/mindustry/net/Packets.java b/core/src/io/anuke/mindustry/net/Packets.java index ea9fe1812b..ff371d221e 100644 --- a/core/src/io/anuke/mindustry/net/Packets.java +++ b/core/src/io/anuke/mindustry/net/Packets.java @@ -158,7 +158,7 @@ public class Packets { } } - public static class EntityShootPacket implements Packet{ + public static class EntityShootPacket implements Packet, UnimportantPacket{ public float x, y, rotation; public short bulletid; public byte groupid; @@ -350,7 +350,7 @@ public class Packets { } public enum KickReason{ - kick, invalidPassword, clientOutdated, serverOutdated, banned, gameover(true), recentKick, nameInUse, idInUse; + kick, invalidPassword, clientOutdated, serverOutdated, banned, gameover(true), recentKick, nameInUse, idInUse, fastShoot; public final boolean quiet; KickReason(){ quiet = false; } diff --git a/core/src/io/anuke/mindustry/ui/MenuButton.java b/core/src/io/anuke/mindustry/ui/MenuButton.java index e01f9aeb8b..c489923e72 100644 --- a/core/src/io/anuke/mindustry/ui/MenuButton.java +++ b/core/src/io/anuke/mindustry/ui/MenuButton.java @@ -1,6 +1,7 @@ package io.anuke.mindustry.ui; import com.badlogic.gdx.graphics.Color; +import com.badlogic.gdx.utils.Align; import io.anuke.ucore.function.Listenable; import io.anuke.ucore.scene.ui.TextButton; @@ -27,7 +28,7 @@ public class MenuButton extends TextButton{ table(t -> { - t.add(text); + t.add(text).wrap().growX().get().setAlignment(Align.center, Align.left); if(description != null){ t.row(); t.add(description).color(Color.LIGHT_GRAY); diff --git a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java index cf863b8691..5aea54da86 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java @@ -8,6 +8,7 @@ import com.badlogic.gdx.math.Interpolation; import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.net.Net; import io.anuke.ucore.core.Core; +import io.anuke.ucore.core.Inputs; import io.anuke.ucore.core.Settings; import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.scene.actions.Actions; @@ -26,11 +27,14 @@ import static io.anuke.mindustry.Vars.*; public class HudFragment implements Fragment{ public final BlocksFragment blockfrag = new BlocksFragment(); + private ImageButton menu, flip; private Table respawntable; private Table wavetable; private Label infolabel; private boolean shown = true; + private float dsize = 58; + private float isize = 40; public void build(){ @@ -43,42 +47,25 @@ public class HudFragment implements Fragment{ new table() {{ left(); - float dsize = 58; defaults().size(dsize).left(); - float isize = 40; menu = new imagebutton("icon-menu", isize, ui.paused::show).get(); + flip = new imagebutton("icon-arrow-up", isize, () -> toggleMenus()).get(); - flip = new imagebutton("icon-arrow-up", isize, () -> { - if (wavetable.getActions().size != 0) return; - - float dur = 0.3f; - Interpolation in = Interpolation.pow3Out; - - flip.getStyle().imageUp = Core.skin.getDrawable(shown ? "icon-arrow-down" : "icon-arrow-up"); - - if (shown) { - blockfrag.toggle(false, dur, in); - wavetable.actions(Actions.translateBy(0, wavetable.getHeight() + dsize, dur, in), Actions.call(() -> shown = false)); - infolabel.actions(Actions.translateBy(0, wavetable.getHeight(), dur, in), Actions.call(() -> shown = false)); - } else { - shown = true; - blockfrag.toggle(true, dur, in); - wavetable.actions(Actions.translateBy(0, -wavetable.getTranslation().y, dur, in)); - infolabel.actions(Actions.translateBy(0, -infolabel.getTranslation().y, dur, in)); + update(t -> { + if(Inputs.keyTap("toggle_menus") && !ui.chatfrag.chatOpen()){ + toggleMenus(); } - - }).get(); + }); new imagebutton("icon-pause", isize, () -> { - if(mobile) DebugFragment.printDebugInfo(); - if (Net.active() && mobile) { + if (Net.active()) { ui.listfrag.visible = !ui.listfrag.visible; } else { state.set(state.is(State.paused) ? State.playing : State.paused); } }).update(i -> { - if (Net.active() && mobile) { + if (Net.active()) { i.getStyle().imageUp = Core.skin.getDrawable("icon-players"); } else { i.setDisabled(Net.active()); @@ -209,6 +196,26 @@ public class HudFragment implements Fragment{ blockfrag.build(); } + private void toggleMenus(){ + if (wavetable.getActions().size != 0) return; + + float dur = 0.3f; + Interpolation in = Interpolation.pow3Out; + + flip.getStyle().imageUp = Core.skin.getDrawable(shown ? "icon-arrow-down" : "icon-arrow-up"); + + if (shown) { + blockfrag.toggle(false, dur, in); + wavetable.actions(Actions.translateBy(0, wavetable.getHeight() + dsize, dur, in), Actions.call(() -> shown = false)); + infolabel.actions(Actions.translateBy(0, wavetable.getHeight(), dur, in), Actions.call(() -> shown = false)); + } else { + shown = true; + blockfrag.toggle(true, dur, in); + wavetable.actions(Actions.translateBy(0, -wavetable.getTranslation().y, dur, in)); + infolabel.actions(Actions.translateBy(0, -infolabel.getTranslation().y, dur, in)); + } + } + private String getEnemiesRemaining() { if(state.enemies == 1) { return Bundles.format("text.enemies.single", state.enemies); diff --git a/core/src/io/anuke/mindustry/ui/fragments/PlayerListFragment.java b/core/src/io/anuke/mindustry/ui/fragments/PlayerListFragment.java index 788331eb66..47f4359c3f 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/PlayerListFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/PlayerListFragment.java @@ -64,7 +64,9 @@ public class PlayerListFragment implements Fragment{ update(t -> { if(!mobile){ - visible = Inputs.keyDown("player_list"); + if(Inputs.keyTap("player_list")){ + visible = !visible; + } } if(!(Net.active() && !state.is(State.menu))){ visible = false; diff --git a/core/src/io/anuke/mindustry/world/Tile.java b/core/src/io/anuke/mindustry/world/Tile.java index 47c2235435..8bd8247cb4 100644 --- a/core/src/io/anuke/mindustry/world/Tile.java +++ b/core/src/io/anuke/mindustry/world/Tile.java @@ -181,6 +181,11 @@ public class Tile implements Position{ Block floor = floor(); return isLinked() || !((floor.solid && (block == Blocks.air || block.solidifes)) || (block.solid && (!block.destructible && !block.update))); } + + public boolean synthetic(){ + Block block = block(); + return block.update || block.destructible; + } public boolean solid(){ Block block = block(); diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/LiquidJunction.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/LiquidJunction.java index 6c3053e777..254f942b86 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/LiquidJunction.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/LiquidJunction.java @@ -4,7 +4,6 @@ import com.badlogic.gdx.graphics.g2d.TextureRegion; import io.anuke.mindustry.resource.Liquid; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.blocks.types.LiquidBlock; -import io.anuke.ucore.core.Timers; import io.anuke.ucore.graphics.Draw; public class LiquidJunction extends LiquidBlock{ @@ -30,10 +29,8 @@ public class LiquidJunction extends LiquidBlock{ dir = (dir+4)%4; Tile to = tile.getNearby(dir); - Timers.run(20f, () -> { - if(to.block().hasLiquids && to.block().acceptLiquid(to, tile, liquid, amount)) - to.block().handleLiquid(to, tile, liquid, amount); - }); + if(to.block().hasLiquids && to.block().acceptLiquid(to, tile, liquid, amount)) + to.block().handleLiquid(to, tile, liquid, amount); } @Override diff --git a/desktop/build.gradle b/desktop/build.gradle index 2dcc0cf38d..268eb20c03 100644 --- a/desktop/build.gradle +++ b/desktop/build.gradle @@ -9,29 +9,6 @@ project.ext.assetsDir = new File("../core/assets") def PACKR_DIR = "$System.env.PACKR_DIR" def ICON_DIR = new File("core/assets/sprites/icon.icns") -ext.writeVersion = { - def pfile = new File('core/assets/version.properties') - def props = new Properties() - - try{ - pfile.createNewFile() - }catch (Exception e){} - - if(pfile.exists()) { - - props.load(new FileInputStream(pfile)) - - String code = getBuildVersion() - - props["name"] = appName - props["version"] = versionType - props["code"] = versionNumber - props["build"] = code - - props.store(pfile.newWriter(), "Autogenerated file. Do not modify.") - } -} - ext.getPlatform = { if (project.hasProperty("platform")) { def lc = platform.toLowerCase() @@ -107,7 +84,7 @@ task packrCmd() { exec { - commandLine "java", "-jar", PACKR_DIR + "packr.jar", + commandLine("java", "-jar", PACKR_DIR + "packr.jar", "--verbose", "--bundle", getPackage(), "--platform", getPlatform(), @@ -116,7 +93,8 @@ task packrCmd() { "--mainclass", project.ext.mainClassName, "--jdk", PACKR_DIR + "jdk-" + getPlatform() + ".zip", "--icon", ICON_DIR.getAbsolutePath(), - "--classpath", "--", PACKR_DIR + "config.json" + "--vmargs", (getPlatform().equals("mac") ? "XstartOnFirstThread" : "Xms256m"), + "--classpath", "--", PACKR_DIR + "config.json") } } } diff --git a/ios/src/io/anuke/mindustry/IOSLauncher.java b/ios/src/io/anuke/mindustry/IOSLauncher.java index 3662dabe1f..d34907fbed 100644 --- a/ios/src/io/anuke/mindustry/IOSLauncher.java +++ b/ios/src/io/anuke/mindustry/IOSLauncher.java @@ -25,7 +25,7 @@ public class IOSLauncher extends IOSApplication.Delegate { Net.setClientProvider(new KryoClient()); Net.setServerProvider(new KryoServer()); - Unit.dp.addition -= 0.25f; + Unit.dp.addition -= 0.2f; Platform.instance = new Platform() { DateFormat format = SimpleDateFormat.getDateTimeInstance(); diff --git a/kryonet/src/io/anuke/kryonet/KryoClient.java b/kryonet/src/io/anuke/kryonet/KryoClient.java index d9f25b830e..2e220d1bdd 100644 --- a/kryonet/src/io/anuke/kryonet/KryoClient.java +++ b/kryonet/src/io/anuke/kryonet/KryoClient.java @@ -6,6 +6,7 @@ import com.badlogic.gdx.utils.ObjectMap; import com.badlogic.gdx.utils.ObjectSet; import com.esotericsoftware.kryonet.*; import com.esotericsoftware.kryonet.Listener.LagListener; +import com.esotericsoftware.minlog.Log; import io.anuke.mindustry.net.Host; import io.anuke.mindustry.net.Net; import io.anuke.mindustry.net.Net.ClientProvider; @@ -70,6 +71,7 @@ public class KryoClient implements ClientProvider{ Disconnect c = new Disconnect(); Gdx.app.postRunnable(() -> Net.handleClientReceived(c)); + if(connection.getLastProtocolError() != null) Log.error("\n\n\n\nProtocol error: " + connection.getLastProtocolError() + "\n\n\n\n"); } @Override @@ -80,6 +82,7 @@ public class KryoClient implements ClientProvider{ try{ Net.handleClientReceived(object); }catch (Exception e){ + e.printStackTrace(); if(e instanceof KryoNetException && e.getMessage() != null && e.getMessage().toLowerCase().contains("incorrect")) { Net.showError("$text.server.mismatch"); netClient.disconnectQuietly(); @@ -159,11 +162,7 @@ public class KryoClient implements ClientProvider{ ByteBuffer buffer = ByteBuffer.wrap(packet.getData()); Host host = NetworkIO.readServerData(packet.getAddress().getHostAddress(), buffer); - if (host != null) { - Gdx.app.postRunnable(() -> valid.accept(host)); - } else { - Gdx.app.postRunnable(() -> invalid.accept(new IOException("Outdated server."))); - } + Gdx.app.postRunnable(() -> valid.accept(host)); } catch (Exception e) { Gdx.app.postRunnable(() -> invalid.accept(e)); } diff --git a/run-server b/run-server index 803b323731..e5b07aa779 100755 --- a/run-server +++ b/run-server @@ -1,3 +1,8 @@ #!/usr/bin/env bash -./gradlew server:dist +if [[ $# -eq 0 ]] ; then + echo 'A build version must be supplied as the first argument.' + exit 1 +fi + +./gradlew server:dist -Pbuildversion=$1 java -jar server/build/libs/server-release.jar diff --git a/server/build.gradle b/server/build.gradle index 0ea3b61d79..f391741bdf 100644 --- a/server/build.gradle +++ b/server/build.gradle @@ -31,6 +31,8 @@ task dist(type: Jar) { from files(sourceSets.main.output.resourcesDir) from {configurations.compile.collect {zipTree(it)}} from files(project.assetsDir); + + writeVersion() manifest { attributes 'Main-Class': project.mainClassName diff --git a/server/src/io/anuke/mindustry/server/ServerControl.java b/server/src/io/anuke/mindustry/server/ServerControl.java index 2f1aad76ca..5c81a29323 100644 --- a/server/src/io/anuke/mindustry/server/ServerControl.java +++ b/server/src/io/anuke/mindustry/server/ServerControl.java @@ -11,13 +11,10 @@ import io.anuke.mindustry.game.GameMode; import io.anuke.mindustry.io.Map; import io.anuke.mindustry.io.SaveIO; import io.anuke.mindustry.io.Version; +import io.anuke.mindustry.net.*; import io.anuke.mindustry.net.Administration.PlayerInfo; -import io.anuke.mindustry.net.Net; -import io.anuke.mindustry.net.NetConnection; -import io.anuke.mindustry.net.NetEvents; import io.anuke.mindustry.net.Packets.ChatPacket; import io.anuke.mindustry.net.Packets.KickReason; -import io.anuke.mindustry.net.TraceInfo; import io.anuke.mindustry.ui.fragments.DebugFragment; import io.anuke.mindustry.world.Tile; import io.anuke.ucore.core.*; @@ -251,7 +248,7 @@ public class ServerControl extends Module { } }); - handler.register("friendlyfire", "", "Enable or disable friendly fire", arg -> { + handler.register("friendlyfire", "", "Enable or disable friendly fire.", arg -> { String s = arg[0]; if(s.equalsIgnoreCase("on")){ NetEvents.handleFriendlyFireChange(true); @@ -266,6 +263,35 @@ public class ServerControl extends Module { } }); + handler.register("antigrief", "[on/off] [max-break] [cooldown-in-ms]", "Enable or disable anti-grief.", arg -> { + if(arg.length == 0){ + info("Anti-grief is currently &lc{0}.", netServer.admins.isAntiGrief() ? "on" : "off"); + return; + } + + String s = arg[0]; + if(s.equalsIgnoreCase("on")){ + netServer.admins.setAntiGrief(true); + info("Anti-grief enabled."); + }else if(s.equalsIgnoreCase("off")){ + netServer.admins.setAntiGrief(false); + info("Anti-grief disabled."); + }else{ + err("Incorrect command usage."); + } + + if(arg.length >= 2) { + try { + int maxbreak = Integer.parseInt(arg[1]); + int cooldown = (arg.length >= 3 ? Integer.parseInt(arg[2]) : Administration.defaultBreakCooldown); + netServer.admins.setAntiGriefParams(maxbreak, cooldown); + info("Anti-grief parameters set."); + } catch (NumberFormatException e) { + err("Invalid number format."); + } + } + }); + handler.register("shuffle", "", "Set map shuffling.", arg -> { try{