diff --git a/core/assets-raw/sprites/blocks/environment/snowrock1.png b/core/assets-raw/sprites/blocks/environment/snowrock1.png new file mode 100644 index 0000000000..2a4cc7fca6 Binary files /dev/null and b/core/assets-raw/sprites/blocks/environment/snowrock1.png differ diff --git a/core/assets-raw/sprites/blocks/environment/snowrock2.png b/core/assets-raw/sprites/blocks/environment/snowrock2.png new file mode 100644 index 0000000000..3c2714009b Binary files /dev/null and b/core/assets-raw/sprites/blocks/environment/snowrock2.png differ diff --git a/core/assets-raw/sprites/blocks/environment/sporerocks-large.png b/core/assets-raw/sprites/blocks/environment/sporerocks-large.png new file mode 100644 index 0000000000..9b0cf4712e Binary files /dev/null and b/core/assets-raw/sprites/blocks/environment/sporerocks-large.png differ diff --git a/core/assets-raw/sprites/blocks/environment/sporerocks1.png b/core/assets-raw/sprites/blocks/environment/sporerocks1.png new file mode 100644 index 0000000000..8d9fbecd7a Binary files /dev/null and b/core/assets-raw/sprites/blocks/environment/sporerocks1.png differ diff --git a/core/assets-raw/sprites/blocks/environment/sporerocks2.png b/core/assets-raw/sprites/blocks/environment/sporerocks2.png new file mode 100644 index 0000000000..c50be4bb96 Binary files /dev/null and b/core/assets-raw/sprites/blocks/environment/sporerocks2.png differ diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 4f32062daa..2aae0ba13b 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -203,6 +203,12 @@ waves.waves = wave(s) waves.perspawn = per spawn waves.to = to waves.boss = Boss +waves.preview = Preview +waves.edit = Edit... +waves.copy = Copy to Clipboard +waves.load = Load from Clipboard +waves.invalid = Invalid waves in clipboard. +waves.copied = Waves copied. editor.default = [LIGHT_GRAY] edit = Edit... editor.name = Name: @@ -250,14 +256,18 @@ filter.rivernoise = River Noise filter.scatter = Scatter filter.terrain = Terrain filter.option.scale = Scale +filter.option.chance = Chance filter.option.mag = Magnitude filter.option.threshold = Threshold filter.option.circle-scale = Circle Scale filter.option.octaves = Octaves filter.option.falloff = Falloff +filter.option.block = Block filter.option.floor = Floor filter.option.wall = Wall filter.option.ore = Ore +filter.option.floor2 = Secondary Floor +filter.option.threshold2 = Secondary Threshold width = Width: height = Height: menu = Menu @@ -289,7 +299,7 @@ uncover = Uncover configure = Configure Loadout configure.locked = [LIGHT_GRAY]Unlock configuring loadout:\nWave {0}. zone.unlocked = [LIGHT_GRAY]{0} unlocked. -zone.complete = Wave {0} reached:\nNew zone requirements met. +zone.complete = Wave {0} reached:\nNext zone requirements met. zone.config.complete = Wave {0} reached:\nLoadout config unlocked. zone.resources = Resources Detected: add = Add... @@ -340,6 +350,7 @@ blocks.poweroutput = Power Output: {0} blocks.powercapacity = Power Capacity blocks.powershot = Power/Shot blocks.targetsair = Targets Air +blocks.targetsground = Targets Ground blocks.items = Items: {0} blocks.itemsmoved = Move Speed blocks.shootrange = Range @@ -409,6 +420,7 @@ setting.autotarget.name = Auto-Target setting.fpscap.name = Max FPS setting.fpscap.none = None setting.fpscap.text = {0} FPS +setting.swapdiagonal.name = Always Diagonal Placement setting.difficulty.training = training setting.difficulty.easy = easy setting.difficulty.normal = normal @@ -445,6 +457,7 @@ keybind.screenshot.name = Map Screenshot keybind.move_x.name = Move x keybind.move_y.name = Move y keybind.select.name = Select/Shoot +keybind.diagonal_placement.name = Diagonal Placement keybind.pick.name = Pick Block keybind.break_block.name = Break Block keybind.deselect.name = Deselect @@ -563,6 +576,9 @@ block.grass.name = Grass block.salt.name = Salt block.sandrocks.name = Sand Rocks block.spore-pine.name = Spore Pine +block.sporerocks.name = Spore Rocks +block.rock.name = Rock +block.snowrock.name = Snow Rock block.shale.name = Shale block.shale-boulder.name = Shale Boulder block.moss.name = Moss diff --git a/core/assets/bundles/bundle_cs.properties b/core/assets/bundles/bundle_cs.properties index dd60dac4c7..33bfa8d71d 100644 --- a/core/assets/bundles/bundle_cs.properties +++ b/core/assets/bundles/bundle_cs.properties @@ -201,6 +201,12 @@ waves.waves = wave(s) waves.perspawn = per spawn waves.to = to waves.boss = Boss +waves.preview = Preview +waves.edit = Edit... +waves.copy = Copy to Clipboard +waves.load = Load from Clipboard +waves.invalid = Invalid waves in clipboard. +waves.copied = Waves copied. editor.default = [LIGHT_GRAY] edit = Edit... editor.name = Jméno: @@ -240,6 +246,7 @@ editor.mapname = Jméno mapy: editor.overwrite = [accent]Varování!\nToto přepíše již existující mapu. editor.overwrite.confirm = [scarlet]Varování![] Mapa s tímto jménem již existuje. Jsi si jistý že ji chceš přepsat? editor.selectmap = Vyber mapu k načtení: +filters.empty = [LIGHT_GRAY]No filters! Add one with the button below. filter.distort = Distort filter.noise = Noise filter.ore = Ore @@ -247,14 +254,18 @@ filter.rivernoise = River Noise filter.scatter = Scatter filter.terrain = Terrain filter.option.scale = Scale +filter.option.chance = Chance filter.option.mag = Magnitude filter.option.threshold = Threshold filter.option.circle-scale = Circle Scale filter.option.octaves = Octaves filter.option.falloff = Falloff +filter.option.block = Block filter.option.floor = Floor filter.option.wall = Wall filter.option.ore = Ore +filter.option.floor2 = Secondary Floor +filter.option.threshold2 = Secondary Threshold width = Šířka: height = Výška: menu = Hlavní menu @@ -333,6 +344,7 @@ blocks.poweroutput = Power Output: {0} blocks.powercapacity = Kapacita energie blocks.powershot = Energie na výstřel blocks.targetsair = Zaměřuje vzdušné jednotky +blocks.targetsground = Targets Ground blocks.items = Items: {0} blocks.itemsmoved = Move Speed blocks.shootrange = Dostřel @@ -402,6 +414,7 @@ setting.autotarget.name = Automaticky zaměřuje setting.fpscap.name = Max FPS setting.fpscap.none = žádný setting.fpscap.text = {0} FPS +setting.swapdiagonal.name = Always Diagonal Placement setting.difficulty.training = Trénink setting.difficulty.easy = lehká setting.difficulty.normal = normální @@ -438,6 +451,7 @@ keybind.screenshot.name = Sníměk mapy keybind.move_x.name = Pohyb na X keybind.move_y.name = Pohyb na Y keybind.select.name = Vybrat/Střílet +keybind.diagonal_placement.name = Diagonal Placement keybind.pick.name = Pick Block keybind.break_block.name = Break Block keybind.deselect.name = Odznačit @@ -555,6 +569,8 @@ block.grass.name = Grass block.salt.name = Salt block.sandrocks.name = Sand Rocks block.spore-pine.name = Spore Pine +block.sporerocks.name = Spore Rocks +block.rock.name = Rock block.shale.name = Shale block.shale-boulder.name = Shale Boulder block.moss.name = Moss diff --git a/core/assets/bundles/bundle_de.properties b/core/assets/bundles/bundle_de.properties index 3d08a494ec..84fcd4f192 100644 --- a/core/assets/bundles/bundle_de.properties +++ b/core/assets/bundles/bundle_de.properties @@ -201,6 +201,12 @@ waves.waves = wave(s) waves.perspawn = per spawn waves.to = to waves.boss = Boss +waves.preview = Preview +waves.edit = Edit... +waves.copy = Copy to Clipboard +waves.load = Load from Clipboard +waves.invalid = Invalid waves in clipboard. +waves.copied = Waves copied. editor.default = [LIGHT_GRAY] edit = Edit... editor.name = Name: @@ -240,6 +246,7 @@ editor.mapname = Karten Name editor.overwrite = [accent] Warnung! Dies überschreibt eine vorhandene Karte. editor.overwrite.confirm = [scarlet]Warnung![] Eine Karte mit diesem Namen existiert bereits. Bist du sicher, dass du sie überschreiben willst? editor.selectmap = Wähle eine Karte zum Laden: +filters.empty = [LIGHT_GRAY]No filters! Add one with the button below. filter.distort = Distort filter.noise = Noise filter.ore = Ore @@ -247,14 +254,18 @@ filter.rivernoise = River Noise filter.scatter = Scatter filter.terrain = Terrain filter.option.scale = Scale +filter.option.chance = Chance filter.option.mag = Magnitude filter.option.threshold = Threshold filter.option.circle-scale = Circle Scale filter.option.octaves = Octaves filter.option.falloff = Falloff +filter.option.block = Block filter.option.floor = Floor filter.option.wall = Wall filter.option.ore = Ore +filter.option.floor2 = Secondary Floor +filter.option.threshold2 = Secondary Threshold width = Breite: height = Höhe: menu = Menü @@ -333,6 +344,7 @@ blocks.poweroutput = Power Output: {0} blocks.powercapacity = Kapazität blocks.powershot = Stromverbrauch/Schuss blocks.targetsair = Visiert Luft Einheiten an +blocks.targetsground = Targets Ground blocks.items = Items: {0} blocks.itemsmoved = Move Speed blocks.shootrange = Reichweite @@ -402,6 +414,7 @@ setting.autotarget.name = Auto-Zielauswahl setting.fpscap.name = Max FPS setting.fpscap.none = kein setting.fpscap.text = {0} FPS +setting.swapdiagonal.name = Always Diagonal Placement setting.difficulty.training = Training setting.difficulty.easy = Leicht setting.difficulty.normal = Normal @@ -438,6 +451,7 @@ keybind.screenshot.name = Map Screenshot keybind.move_x.name = X-Achse keybind.move_y.name = Y-Achse keybind.select.name = Auswählen/Schießen +keybind.diagonal_placement.name = Diagonal Placement keybind.pick.name = Pick Block keybind.break_block.name = Break Block keybind.deselect.name = Auswahl aufheben @@ -555,6 +569,8 @@ block.grass.name = Grass block.salt.name = Salt block.sandrocks.name = Sand Rocks block.spore-pine.name = Spore Pine +block.sporerocks.name = Spore Rocks +block.rock.name = Rock block.shale.name = Shale block.shale-boulder.name = Shale Boulder block.moss.name = Moss diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 1405a6e8e8..013c5531df 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -201,6 +201,12 @@ waves.waves = wave(s) waves.perspawn = per spawn waves.to = to waves.boss = Boss +waves.preview = Preview +waves.edit = Edit... +waves.copy = Copy to Clipboard +waves.load = Load from Clipboard +waves.invalid = Invalid waves in clipboard. +waves.copied = Waves copied. editor.default = [LIGHT_GRAY] edit = Edit... editor.name = Nombre: @@ -240,6 +246,7 @@ editor.mapname = Nombre del Mapa: editor.overwrite = [accent]¡Advertencia!\nEsto sobrescribe un mapa ya existente. editor.overwrite.confirm = [scarlet]¡Advertencia![] Un mapa con ese nombre ya existe. ¿Estás seguro de querer sobrescribirlo? editor.selectmap = Selecciona un mapa para cargar: +filters.empty = [LIGHT_GRAY]No filters! Add one with the button below. filter.distort = Distort filter.noise = Noise filter.ore = Ore @@ -247,14 +254,18 @@ filter.rivernoise = River Noise filter.scatter = Scatter filter.terrain = Terrain filter.option.scale = Scale +filter.option.chance = Chance filter.option.mag = Magnitude filter.option.threshold = Threshold filter.option.circle-scale = Circle Scale filter.option.octaves = Octaves filter.option.falloff = Falloff +filter.option.block = Block filter.option.floor = Floor filter.option.wall = Wall filter.option.ore = Ore +filter.option.floor2 = Secondary Floor +filter.option.threshold2 = Secondary Threshold width = Ancho: height = Alto: menu = Menu @@ -333,6 +344,7 @@ blocks.poweroutput = Power Output: {0} blocks.powercapacity = Capacidad de Energía blocks.powershot = Energía/Disparo blocks.targetsair = Apunta al Aire +blocks.targetsground = Targets Ground blocks.items = Items: {0} blocks.itemsmoved = Move Speed blocks.shootrange = Rango @@ -402,6 +414,7 @@ setting.autotarget.name = Auto apuntado setting.fpscap.name = Máx FPS setting.fpscap.none = Nada setting.fpscap.text = {0} FPS +setting.swapdiagonal.name = Always Diagonal Placement setting.difficulty.training = entrenamiento setting.difficulty.easy = fácil setting.difficulty.normal = normal @@ -438,6 +451,7 @@ keybind.screenshot.name = Map Screenshot keybind.move_x.name = Mover x keybind.move_y.name = Mover y keybind.select.name = Seleccionar +keybind.diagonal_placement.name = Diagonal Placement keybind.pick.name = Pick Block keybind.break_block.name = Break Block keybind.deselect.name = Deseleccionar @@ -555,6 +569,8 @@ block.grass.name = Grass block.salt.name = Salt block.sandrocks.name = Sand Rocks block.spore-pine.name = Spore Pine +block.sporerocks.name = Spore Rocks +block.rock.name = Rock block.shale.name = Shale block.shale-boulder.name = Shale Boulder block.moss.name = Moss diff --git a/core/assets/bundles/bundle_fr.properties b/core/assets/bundles/bundle_fr.properties index aaca224a72..d97f637c02 100644 --- a/core/assets/bundles/bundle_fr.properties +++ b/core/assets/bundles/bundle_fr.properties @@ -201,6 +201,12 @@ waves.waves = wave(s) waves.perspawn = per spawn waves.to = to waves.boss = Boss +waves.preview = Preview +waves.edit = Edit... +waves.copy = Copy to Clipboard +waves.load = Load from Clipboard +waves.invalid = Invalid waves in clipboard. +waves.copied = Waves copied. editor.default = [LIGHT_GRAY] edit = Edit... editor.name = Nom: @@ -240,6 +246,7 @@ editor.mapname = Nom de la carte²: editor.overwrite = [accent]Attention !\nCeci réécrit une carte existante . editor.overwrite.confirm = [scarlet]Attention ![] Une carte avec ce nom existe déjà. Êtes-vous sûr de vouloir la réécrire? editor.selectmap = Séléctionnez une carte: +filters.empty = [LIGHT_GRAY]No filters! Add one with the button below. filter.distort = Distort filter.noise = Noise filter.ore = Ore @@ -247,14 +254,18 @@ filter.rivernoise = River Noise filter.scatter = Scatter filter.terrain = Terrain filter.option.scale = Scale +filter.option.chance = Chance filter.option.mag = Magnitude filter.option.threshold = Threshold filter.option.circle-scale = Circle Scale filter.option.octaves = Octaves filter.option.falloff = Falloff +filter.option.block = Block filter.option.floor = Floor filter.option.wall = Wall filter.option.ore = Ore +filter.option.floor2 = Secondary Floor +filter.option.threshold2 = Secondary Threshold width = Largeur: height = Hauteur: menu = Menu @@ -333,6 +344,7 @@ blocks.poweroutput = Power Output: {0} blocks.powercapacity = capacité d'énergie blocks.powershot = Énergie/Tir blocks.targetsair = Cible les unités aériennes +blocks.targetsground = Targets Ground blocks.items = Items: {0} blocks.itemsmoved = Move Speed blocks.shootrange = Portée @@ -402,6 +414,7 @@ setting.autotarget.name = Visée automatique setting.fpscap.name = Max FPS setting.fpscap.none = None setting.fpscap.text = {0} FPS +setting.swapdiagonal.name = Always Diagonal Placement setting.difficulty.training = entraînement setting.difficulty.easy = facile setting.difficulty.normal = normal @@ -438,6 +451,7 @@ keybind.screenshot.name = Map Screenshot keybind.move_x.name = mouvement x keybind.move_y.name = mouvement y keybind.select.name = sélectionner +keybind.diagonal_placement.name = Diagonal Placement keybind.pick.name = Pick Block keybind.break_block.name = Break Block keybind.deselect.name = Déselectionner @@ -555,6 +569,8 @@ block.grass.name = Grass block.salt.name = Salt block.sandrocks.name = Sand Rocks block.spore-pine.name = Spore Pine +block.sporerocks.name = Spore Rocks +block.rock.name = Rock block.shale.name = Shale block.shale-boulder.name = Shale Boulder block.moss.name = Moss diff --git a/core/assets/bundles/bundle_fr_BE.properties b/core/assets/bundles/bundle_fr_BE.properties index 661e1e9b3d..1d1a15f664 100644 --- a/core/assets/bundles/bundle_fr_BE.properties +++ b/core/assets/bundles/bundle_fr_BE.properties @@ -201,6 +201,12 @@ waves.waves = wave(s) waves.perspawn = per spawn waves.to = to waves.boss = Boss +waves.preview = Preview +waves.edit = Edit... +waves.copy = Copy to Clipboard +waves.load = Load from Clipboard +waves.invalid = Invalid waves in clipboard. +waves.copied = Waves copied. editor.default = [LIGHT_GRAY] edit = Edit... editor.name = Nom: @@ -240,6 +246,7 @@ editor.mapname = Nom de la carte: editor.overwrite = [accent]Attention!\nCela écrasera une carte existante. editor.overwrite.confirm = [scarlet]Attention ![] Une carte avec ce nom existe déjà. Êtes-vous sûr de vouloir la réécrire? editor.selectmap = Sélectionnez une carte à charger: +filters.empty = [LIGHT_GRAY]No filters! Add one with the button below. filter.distort = Distort filter.noise = Noise filter.ore = Ore @@ -247,14 +254,18 @@ filter.rivernoise = River Noise filter.scatter = Scatter filter.terrain = Terrain filter.option.scale = Scale +filter.option.chance = Chance filter.option.mag = Magnitude filter.option.threshold = Threshold filter.option.circle-scale = Circle Scale filter.option.octaves = Octaves filter.option.falloff = Falloff +filter.option.block = Block filter.option.floor = Floor filter.option.wall = Wall filter.option.ore = Ore +filter.option.floor2 = Secondary Floor +filter.option.threshold2 = Secondary Threshold width = Largeur: height = Hauteur: menu = Menu @@ -333,6 +344,7 @@ blocks.poweroutput = Power Output: {0} blocks.powercapacity = Capacité d'énergie blocks.powershot = Énergie/Tir blocks.targetsair = Cible les unités aériennes +blocks.targetsground = Targets Ground blocks.items = Items: {0} blocks.itemsmoved = Move Speed blocks.shootrange = Portée @@ -402,6 +414,7 @@ setting.autotarget.name = Visée automatique setting.fpscap.name = Max FPS setting.fpscap.none = Vide setting.fpscap.text = {0} FPS +setting.swapdiagonal.name = Always Diagonal Placement setting.difficulty.training = Entraînement setting.difficulty.easy = Facile setting.difficulty.normal = Normal @@ -438,6 +451,7 @@ keybind.screenshot.name = Map Screenshot keybind.move_x.name = Mouvement X keybind.move_y.name = Mouvement Y keybind.select.name = Sélectionner/Tirer +keybind.diagonal_placement.name = Diagonal Placement keybind.pick.name = Pick Block keybind.break_block.name = Break Block keybind.deselect.name = Déselectionner @@ -555,6 +569,8 @@ block.grass.name = Grass block.salt.name = Salt block.sandrocks.name = Sand Rocks block.spore-pine.name = Spore Pine +block.sporerocks.name = Spore Rocks +block.rock.name = Rock block.shale.name = Shale block.shale-boulder.name = Shale Boulder block.moss.name = Moss diff --git a/core/assets/bundles/bundle_in_ID.properties b/core/assets/bundles/bundle_in_ID.properties index db4f8a61b2..655cafe13c 100644 --- a/core/assets/bundles/bundle_in_ID.properties +++ b/core/assets/bundles/bundle_in_ID.properties @@ -201,6 +201,12 @@ waves.waves = wave(s) waves.perspawn = per spawn waves.to = to waves.boss = Boss +waves.preview = Preview +waves.edit = Edit... +waves.copy = Copy to Clipboard +waves.load = Load from Clipboard +waves.invalid = Invalid waves in clipboard. +waves.copied = Waves copied. editor.default = [LIGHT_GRAY] edit = Edit... editor.name = Name: @@ -240,6 +246,7 @@ editor.mapname = Nama Peta: editor.overwrite = [accent]Peringatan!\nIni akan mengganti peta yang ada. editor.overwrite.confirm = [scarlet]Warning![] A map with this name already exists. Are you sure you want to overwrite it? editor.selectmap = Pilih peta yang akan dimuat: +filters.empty = [LIGHT_GRAY]No filters! Add one with the button below. filter.distort = Distort filter.noise = Noise filter.ore = Ore @@ -247,14 +254,18 @@ filter.rivernoise = River Noise filter.scatter = Scatter filter.terrain = Terrain filter.option.scale = Scale +filter.option.chance = Chance filter.option.mag = Magnitude filter.option.threshold = Threshold filter.option.circle-scale = Circle Scale filter.option.octaves = Octaves filter.option.falloff = Falloff +filter.option.block = Block filter.option.floor = Floor filter.option.wall = Wall filter.option.ore = Ore +filter.option.floor2 = Secondary Floor +filter.option.threshold2 = Secondary Threshold width = Lebar: height = Tinggi: menu = Menu @@ -333,6 +344,7 @@ blocks.poweroutput = Power Output: {0} blocks.powercapacity = Kapasitas Tenaga blocks.powershot = Tenaga/tembakan blocks.targetsair = Targets Air +blocks.targetsground = Targets Ground blocks.items = Items: {0} blocks.itemsmoved = Move Speed blocks.shootrange = Range @@ -402,6 +414,7 @@ setting.autotarget.name = Auto-Target setting.fpscap.name = Max FPS setting.fpscap.none = None setting.fpscap.text = {0} FPS +setting.swapdiagonal.name = Always Diagonal Placement setting.difficulty.training = training setting.difficulty.easy = mudah setting.difficulty.normal = normal @@ -438,6 +451,7 @@ keybind.screenshot.name = Map Screenshot keybind.move_x.name = gerak_x keybind.move_y.name = gerak_y keybind.select.name = pilih +keybind.diagonal_placement.name = Diagonal Placement keybind.pick.name = Pick Block keybind.break_block.name = Break Block keybind.deselect.name = Deselect @@ -555,6 +569,8 @@ block.grass.name = Grass block.salt.name = Salt block.sandrocks.name = Sand Rocks block.spore-pine.name = Spore Pine +block.sporerocks.name = Spore Rocks +block.rock.name = Rock block.shale.name = Shale block.shale-boulder.name = Shale Boulder block.moss.name = Moss diff --git a/core/assets/bundles/bundle_it.properties b/core/assets/bundles/bundle_it.properties index d143f6005e..68a9966119 100644 --- a/core/assets/bundles/bundle_it.properties +++ b/core/assets/bundles/bundle_it.properties @@ -201,6 +201,12 @@ waves.waves = wave(s) waves.perspawn = per spawn waves.to = to waves.boss = Boss +waves.preview = Preview +waves.edit = Edit... +waves.copy = Copy to Clipboard +waves.load = Load from Clipboard +waves.invalid = Invalid waves in clipboard. +waves.copied = Waves copied. editor.default = [LIGHT_GRAY] edit = Edit... editor.name = Nome: @@ -240,6 +246,7 @@ editor.mapname = Nome Mappa: editor.overwrite = [Accent]Attenzione!\nQuesto sovrascrive una mappa esistente. editor.overwrite.confirm = [scarlet]Attenzione![] Una mappa con questo nome esiste già. Sei sicuro di volerla sovrascrivere? editor.selectmap = Seleziona una mappa da caricare: +filters.empty = [LIGHT_GRAY]No filters! Add one with the button below. filter.distort = Distort filter.noise = Noise filter.ore = Ore @@ -247,14 +254,18 @@ filter.rivernoise = River Noise filter.scatter = Scatter filter.terrain = Terrain filter.option.scale = Scale +filter.option.chance = Chance filter.option.mag = Magnitude filter.option.threshold = Threshold filter.option.circle-scale = Circle Scale filter.option.octaves = Octaves filter.option.falloff = Falloff +filter.option.block = Block filter.option.floor = Floor filter.option.wall = Wall filter.option.ore = Ore +filter.option.floor2 = Secondary Floor +filter.option.threshold2 = Secondary Threshold width = Larghezza: height = Altezza: menu = Menu @@ -333,6 +344,7 @@ blocks.poweroutput = Power Output: {0} blocks.powercapacity = Capacità Energetica blocks.powershot = Danno/Colpo blocks.targetsair = Attacca nemici aerei +blocks.targetsground = Targets Ground blocks.items = Items: {0} blocks.itemsmoved = Move Speed blocks.shootrange = Raggio @@ -402,6 +414,7 @@ setting.autotarget.name = Auto-Target setting.fpscap.name = Limite FPS setting.fpscap.none = Niente setting.fpscap.text = {0} FPS +setting.swapdiagonal.name = Always Diagonal Placement setting.difficulty.training = training setting.difficulty.easy = facile setting.difficulty.normal = medio @@ -438,6 +451,7 @@ keybind.screenshot.name = Map Screenshot keybind.move_x.name = Sposta_x keybind.move_y.name = Sposta_y keybind.select.name = seleziona +keybind.diagonal_placement.name = Diagonal Placement keybind.pick.name = Pick Block keybind.break_block.name = Break Block keybind.deselect.name = Deselect @@ -555,6 +569,8 @@ block.grass.name = Grass block.salt.name = Salt block.sandrocks.name = Sand Rocks block.spore-pine.name = Spore Pine +block.sporerocks.name = Spore Rocks +block.rock.name = Rock block.shale.name = Shale block.shale-boulder.name = Shale Boulder block.moss.name = Moss diff --git a/core/assets/bundles/bundle_ja.properties b/core/assets/bundles/bundle_ja.properties index 0e7665f8e4..a098a1a995 100644 --- a/core/assets/bundles/bundle_ja.properties +++ b/core/assets/bundles/bundle_ja.properties @@ -194,17 +194,23 @@ editor.oregen.info = 鉱石の生成: editor.mapinfo = マップ情報 editor.author = 作者: editor.description = 説明: -editor.waves = ウェーブ: -waves.title = ウェーブ -waves.remove = 削除 -waves.never = <永久> -waves.every = -waves.waves = ウェーブごとに出現 -waves.perspawn = スポーン -waves.to = から -waves.boss = ボス -editor.default = [LIGHT_GRAY]<デフォルト> -edit = 編集... +editor.waves = Waves: +waves.title = Waves +waves.remove = Remove +waves.never = +waves.every = every +waves.waves = wave(s) +waves.perspawn = per spawn +waves.to = to +waves.boss = Boss +waves.preview = Preview +waves.edit = Edit... +waves.copy = Copy to Clipboard +waves.load = Load from Clipboard +waves.invalid = Invalid waves in clipboard. +waves.copied = Waves copied. +editor.default = [LIGHT_GRAY] +edit = Edit... editor.name = 名前: editor.teams = チーム editor.elevation = 標高 @@ -242,22 +248,26 @@ editor.mapname = マップ名: editor.overwrite = [accent]警告!\n存在するマップを上書きします。 editor.overwrite.confirm = [scarlet]警告![] この名前のマップがすでに存在します。上書きしてもよろしいですか? editor.selectmap = 読み込むマップを選択: -filters.empty = [LIGHT_GRAY]フィルターが設定されていません!下のボタンからフィルターを追加してください。 -filter.distort = ゆがみ -filter.noise = ノイズ -filter.ore = 鉱石 -filter.rivernoise = リバーノイズ -filter.scatter = 分散 -filter.terrain = 地形 -filter.option.scale = スケール -filter.option.mag = マグニチュード -filter.option.threshold = スレッシュホールド -filter.option.circle-scale = サークルスケール -filter.option.octaves = オクターブ -filter.option.falloff = フォールオフ -filter.option.floor = 地面 -filter.option.wall = 壁 -filter.option.ore = 鉱石 +filters.empty = [LIGHT_GRAY]No filters! Add one with the button below. +filter.distort = Distort +filter.noise = Noise +filter.ore = Ore +filter.rivernoise = River Noise +filter.scatter = Scatter +filter.terrain = Terrain +filter.option.scale = Scale +filter.option.chance = Chance +filter.option.mag = Magnitude +filter.option.threshold = Threshold +filter.option.circle-scale = Circle Scale +filter.option.octaves = Octaves +filter.option.falloff = Falloff +filter.option.block = Block +filter.option.floor = Floor +filter.option.wall = Wall +filter.option.ore = Ore +filter.option.floor2 = Secondary Floor +filter.option.threshold2 = Secondary Threshold width = 幅: height = 高さ: menu = メニュー @@ -336,8 +346,9 @@ blocks.poweroutput = 電力発電量: {0} blocks.powercapacity = 電力容量 blocks.powershot = 電力/ショット blocks.targetsair = 対空攻撃 -blocks.items = アイテム: {0} -blocks.itemsmoved = 輸送速度 +blocks.targetsground = Targets Ground +blocks.items = Items: {0} +blocks.itemsmoved = Move Speed blocks.shootrange = 範囲 blocks.size = 大きさ blocks.liquidcapacity = 液体容量 @@ -405,6 +416,7 @@ setting.autotarget.name = 自動ターゲット setting.fpscap.name = 最大FPS setting.fpscap.none = なし setting.fpscap.text = {0} FPS +setting.swapdiagonal.name = Always Diagonal Placement setting.difficulty.training = トレーニング setting.difficulty.easy = イージー setting.difficulty.normal = ノーマル @@ -441,8 +453,9 @@ keybind.screenshot.name = スクリーンショット keybind.move_x.name = 左右移動 keybind.move_y.name = 上下移動 keybind.select.name = 選択/ショット -keybind.pick.name = ブロックを選ぶ -keybind.break_block.name = ブロックを破壊 +keybind.diagonal_placement.name = Diagonal Placement +keybind.pick.name = Pick Block +keybind.break_block.name = Break Block keybind.deselect.name = 選択解除 keybind.shoot.name = ショット keybind.zoom_hold.name = ズーム長押し @@ -554,24 +567,26 @@ mech.ability = [LIGHT_GRAY]能力: {0} liquid.heatcapacity = [LIGHT_GRAY]熱容量: {0} liquid.viscosity = [LIGHT_GRAY]粘度: {0} liquid.temperature = [LIGHT_GRAY]温度: {0} -block.grass.name = 草 -block.salt.name = 岩塩氷河 -block.sandrocks.name = 砂岩 -block.spore-pine.name = 胞子の松の木 -block.shale.name = 泥板岩 -block.shale-boulder.name = 泥板岩の丸石 -block.moss.name = コケ -block.spore-moss.name = 胞子のコケ -block.shalerocks.name = 泥板岩の岩 -block.scrap-wall.name = スクラップの壁 -block.scrap-wall-large.name = 大きなスクラップの壁 -block.scrap-wall-huge.name = とても大きなスクラップの壁 -block.scrap-wall-gigantic.name = 巨大なスクラップの壁 -block.thruster.name = スラスター -block.kiln.name = かまど -block.kiln.description = 砂と鉛を溶かしてメタガラスを生成します。少量の電力が必要です。 -block.graphite-press.name = 黒鉛圧縮機 -block.multi-press.name = 複合圧縮機 +block.grass.name = Grass +block.salt.name = Salt +block.sandrocks.name = Sand Rocks +block.spore-pine.name = Spore Pine +block.sporerocks.name = Spore Rocks +block.rock.name = Rock +block.shale.name = Shale +block.shale-boulder.name = Shale Boulder +block.moss.name = Moss +block.spore-moss.name = Spore Moss +block.shalerocks.name = Shale Rocks +block.scrap-wall.name = Scrap Wall +block.scrap-wall-large.name = Large Scrap Wall +block.scrap-wall-huge.name = Huge Scrap Wall +block.scrap-wall-gigantic.name = Gigantic Scrap Wall +block.thruster.name = Thruster +block.kiln.name = Kiln +block.kiln.description = Smelts sand and lead into metaglass. Requires small amounts of power. +block.graphite-press.name = Graphite Press +block.multi-press.name = Multi-Press block.constructing = {0}\n[LIGHT_GRAY](建設中) block.spawn.name = 敵のスポーン block.core-shard.name = コア: シャード diff --git a/core/assets/bundles/bundle_ko.properties b/core/assets/bundles/bundle_ko.properties index 869256d1ba..daa48a329a 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -201,6 +201,12 @@ waves.waves = wave(s) waves.perspawn = per spawn waves.to = to waves.boss = Boss +waves.preview = Preview +waves.edit = Edit... +waves.copy = Copy to Clipboard +waves.load = Load from Clipboard +waves.invalid = Invalid waves in clipboard. +waves.copied = Waves copied. editor.default = [LIGHT_GRAY] edit = Edit... editor.name = 이름: @@ -240,6 +246,7 @@ editor.mapname = 맵 이름: editor.overwrite = [accept]경고!이 명령은 기존 맵을 덮어씌우게 됩니다. editor.overwrite.confirm = [scarlet]경고![] 이 이름을 가진 맵이 이미 있습니다. 덮어 쓰시겠습니까? editor.selectmap = 불러올 맵 선택: +filters.empty = [LIGHT_GRAY]No filters! Add one with the button below. filter.distort = Distort filter.noise = Noise filter.ore = Ore @@ -247,14 +254,18 @@ filter.rivernoise = River Noise filter.scatter = Scatter filter.terrain = Terrain filter.option.scale = Scale +filter.option.chance = Chance filter.option.mag = Magnitude filter.option.threshold = Threshold filter.option.circle-scale = Circle Scale filter.option.octaves = Octaves filter.option.falloff = Falloff +filter.option.block = Block filter.option.floor = Floor filter.option.wall = Wall filter.option.ore = Ore +filter.option.floor2 = Secondary Floor +filter.option.threshold2 = Secondary Threshold width = 넓이: height = 높이: menu = 메뉴 @@ -333,6 +344,7 @@ blocks.poweroutput = 전력 출력: {0} blocks.powercapacity = 전력 용량 blocks.powershot = 1발당 전력 소모량 blocks.targetsair = 공중공격 가능 +blocks.targetsground = Targets Ground blocks.items = Items: {0} blocks.itemsmoved = 이동 속도 blocks.shootrange = 사거리 @@ -402,6 +414,7 @@ setting.autotarget.name = 자동 조준 setting.fpscap.name = 최대 FPS setting.fpscap.none = 없음 setting.fpscap.text = FPS +setting.swapdiagonal.name = Always Diagonal Placement setting.difficulty.training = 훈련 setting.difficulty.easy = 쉬움 setting.difficulty.normal = 보통 @@ -438,6 +451,7 @@ keybind.screenshot.name = 맵 스크린샷 keybind.move_x.name = 오른쪽/왼쪽 이동 keybind.move_y.name = 위 / 아래 중간 keybind.select.name = 선택 +keybind.diagonal_placement.name = Diagonal Placement keybind.pick.name = 블록 선택 keybind.break_block.name = 블록 파괴 keybind.deselect.name = 선택해제 @@ -555,6 +569,8 @@ block.grass.name = Grass block.salt.name = Salt block.sandrocks.name = Sand Rocks block.spore-pine.name = Spore Pine +block.sporerocks.name = Spore Rocks +block.rock.name = Rock block.shale.name = Shale block.shale-boulder.name = Shale Boulder block.moss.name = Moss diff --git a/core/assets/bundles/bundle_nl.properties b/core/assets/bundles/bundle_nl.properties index 233e9fb109..ae18fe26be 100644 --- a/core/assets/bundles/bundle_nl.properties +++ b/core/assets/bundles/bundle_nl.properties @@ -201,6 +201,12 @@ waves.waves = wave(s) waves.perspawn = per spawn waves.to = to waves.boss = Boss +waves.preview = Preview +waves.edit = Edit... +waves.copy = Copy to Clipboard +waves.load = Load from Clipboard +waves.invalid = Invalid waves in clipboard. +waves.copied = Waves copied. editor.default = [LIGHT_GRAY] edit = Edit... editor.name = Name: @@ -240,6 +246,7 @@ editor.mapname = Map Name: editor.overwrite = [accent]Warning!\nThis overwrites an existing map. editor.overwrite.confirm = [scarlet]Warning![] A map with this name already exists. Are you sure you want to overwrite it? editor.selectmap = Select a map to load: +filters.empty = [LIGHT_GRAY]No filters! Add one with the button below. filter.distort = Distort filter.noise = Noise filter.ore = Ore @@ -247,14 +254,18 @@ filter.rivernoise = River Noise filter.scatter = Scatter filter.terrain = Terrain filter.option.scale = Scale +filter.option.chance = Chance filter.option.mag = Magnitude filter.option.threshold = Threshold filter.option.circle-scale = Circle Scale filter.option.octaves = Octaves filter.option.falloff = Falloff +filter.option.block = Block filter.option.floor = Floor filter.option.wall = Wall filter.option.ore = Ore +filter.option.floor2 = Secondary Floor +filter.option.threshold2 = Secondary Threshold width = Width: height = Height: menu = Menu @@ -333,6 +344,7 @@ blocks.poweroutput = Power Output: {0} blocks.powercapacity = Power Capacity blocks.powershot = Power/Shot blocks.targetsair = Targets Air +blocks.targetsground = Targets Ground blocks.items = Items: {0} blocks.itemsmoved = Move Speed blocks.shootrange = Range @@ -402,6 +414,7 @@ setting.autotarget.name = Auto-Target setting.fpscap.name = Max FPS setting.fpscap.none = None setting.fpscap.text = {0} FPS +setting.swapdiagonal.name = Always Diagonal Placement setting.difficulty.training = training setting.difficulty.easy = easy setting.difficulty.normal = normal @@ -438,6 +451,7 @@ keybind.screenshot.name = Map Screenshot keybind.move_x.name = Move x keybind.move_y.name = Move y keybind.select.name = Select/Shoot +keybind.diagonal_placement.name = Diagonal Placement keybind.pick.name = Pick Block keybind.break_block.name = Break Block keybind.deselect.name = Deselect @@ -555,6 +569,8 @@ block.grass.name = Grass block.salt.name = Salt block.sandrocks.name = Sand Rocks block.spore-pine.name = Spore Pine +block.sporerocks.name = Spore Rocks +block.rock.name = Rock block.shale.name = Shale block.shale-boulder.name = Shale Boulder block.moss.name = Moss diff --git a/core/assets/bundles/bundle_pl.properties b/core/assets/bundles/bundle_pl.properties index ef419aaf6c..2f1997ca7b 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -201,6 +201,12 @@ waves.waves = wave(s) waves.perspawn = per spawn waves.to = to waves.boss = Boss +waves.preview = Preview +waves.edit = Edit... +waves.copy = Copy to Clipboard +waves.load = Load from Clipboard +waves.invalid = Invalid waves in clipboard. +waves.copied = Waves copied. editor.default = [LIGHT_GRAY] edit = Edit... editor.name = Nazwa: @@ -240,6 +246,7 @@ editor.mapname = Nazwa mapy: editor.overwrite = [accent]Uwaga!\nSpowoduje to nadpisanie istniejącej mapy. editor.overwrite.confirm = [scarlet]Uwaga![] Mapa pod tą nazwą już istnieje. Jesteś pewny, że chcesz ją nadpisać? editor.selectmap = Wybierz mapę do załadowania: +filters.empty = [LIGHT_GRAY]No filters! Add one with the button below. filter.distort = Distort filter.noise = Noise filter.ore = Ore @@ -247,14 +254,18 @@ filter.rivernoise = River Noise filter.scatter = Scatter filter.terrain = Terrain filter.option.scale = Scale +filter.option.chance = Chance filter.option.mag = Magnitude filter.option.threshold = Threshold filter.option.circle-scale = Circle Scale filter.option.octaves = Octaves filter.option.falloff = Falloff +filter.option.block = Block filter.option.floor = Floor filter.option.wall = Wall filter.option.ore = Ore +filter.option.floor2 = Secondary Floor +filter.option.threshold2 = Secondary Threshold width = Szerokość: height = Wysokość: menu = Menu @@ -333,6 +344,7 @@ blocks.poweroutput = Power Output: {0} blocks.powercapacity = Pojemność mocy blocks.powershot = moc/strzał blocks.targetsair = Może namierzać wrogów powietrznych +blocks.targetsground = Targets Ground blocks.items = Items: {0} blocks.itemsmoved = Move Speed blocks.shootrange = Zasięg @@ -402,6 +414,7 @@ setting.autotarget.name = Automatyczne Celowanie setting.fpscap.name = Maksymalny FPS setting.fpscap.none = Nieograniczone setting.fpscap.text = {0} FPS +setting.swapdiagonal.name = Always Diagonal Placement setting.difficulty.training = trening setting.difficulty.easy = łatwy setting.difficulty.normal = normalny @@ -438,6 +451,7 @@ keybind.screenshot.name = Zrzut ekranu mapy keybind.move_x.name = Poruszanie w poziomie keybind.move_y.name = Poruszanie w pionie keybind.select.name = Zaznacz +keybind.diagonal_placement.name = Diagonal Placement keybind.pick.name = Wybierz Blok keybind.break_block.name = Break Block keybind.deselect.name = Odznacz @@ -555,6 +569,8 @@ block.grass.name = Grass block.salt.name = Salt block.sandrocks.name = Sand Rocks block.spore-pine.name = Spore Pine +block.sporerocks.name = Spore Rocks +block.rock.name = Rock block.shale.name = Shale block.shale-boulder.name = Shale Boulder block.moss.name = Moss diff --git a/core/assets/bundles/bundle_pt_BR.properties b/core/assets/bundles/bundle_pt_BR.properties index 8796b94bb7..c999f3bbc2 100644 --- a/core/assets/bundles/bundle_pt_BR.properties +++ b/core/assets/bundles/bundle_pt_BR.properties @@ -201,6 +201,12 @@ waves.waves = wave(s) waves.perspawn = per spawn waves.to = to waves.boss = Boss +waves.preview = Preview +waves.edit = Edit... +waves.copy = Copy to Clipboard +waves.load = Load from Clipboard +waves.invalid = Invalid waves in clipboard. +waves.copied = Waves copied. editor.default = [LIGHT_GRAY] edit = Edit... editor.name = Nome: @@ -240,6 +246,7 @@ editor.mapname = Nome do Mapa: editor.overwrite = [accent]Aviso!\nIsso Subistitui um mapa existente. editor.overwrite.confirm = [scarlet]Aviso![] Um mapa com esse nome já existe. Tem certeza que deseja substituir? editor.selectmap = Selecione uma mapa para carregar: +filters.empty = [LIGHT_GRAY]No filters! Add one with the button below. filter.distort = Distort filter.noise = Noise filter.ore = Ore @@ -247,14 +254,18 @@ filter.rivernoise = River Noise filter.scatter = Scatter filter.terrain = Terrain filter.option.scale = Scale +filter.option.chance = Chance filter.option.mag = Magnitude filter.option.threshold = Threshold filter.option.circle-scale = Circle Scale filter.option.octaves = Octaves filter.option.falloff = Falloff +filter.option.block = Block filter.option.floor = Floor filter.option.wall = Wall filter.option.ore = Ore +filter.option.floor2 = Secondary Floor +filter.option.threshold2 = Secondary Threshold width = Largura: height = Altura: menu = Menu @@ -333,6 +344,7 @@ blocks.poweroutput = Power Output: {0} blocks.powercapacity = Capacidade de Energia blocks.powershot = Energia/tiro blocks.targetsair = Mirar no ar +blocks.targetsground = Targets Ground blocks.items = Items: {0} blocks.itemsmoved = Move Speed blocks.shootrange = Alcance @@ -402,6 +414,7 @@ setting.autotarget.name = Alvo automatico setting.fpscap.name = FPS Maximo setting.fpscap.none = Nenhum setting.fpscap.text = {0} FPS +setting.swapdiagonal.name = Always Diagonal Placement setting.difficulty.training = treinamento setting.difficulty.easy = Fácil setting.difficulty.normal = Normal @@ -438,6 +451,7 @@ keybind.screenshot.name = Map Screenshot keybind.move_x.name = mover_x keybind.move_y.name = mover_y keybind.select.name = selecionar +keybind.diagonal_placement.name = Diagonal Placement keybind.pick.name = Pick Block keybind.break_block.name = Break Block keybind.deselect.name = Deselecionar @@ -555,6 +569,8 @@ block.grass.name = Grass block.salt.name = Salt block.sandrocks.name = Sand Rocks block.spore-pine.name = Spore Pine +block.sporerocks.name = Spore Rocks +block.rock.name = Rock block.shale.name = Shale block.shale-boulder.name = Shale Boulder block.moss.name = Moss diff --git a/core/assets/bundles/bundle_ru.properties b/core/assets/bundles/bundle_ru.properties index 25d8792463..04838e7422 100644 --- a/core/assets/bundles/bundle_ru.properties +++ b/core/assets/bundles/bundle_ru.properties @@ -201,6 +201,12 @@ waves.waves = wave(s) waves.perspawn = per spawn waves.to = to waves.boss = Boss +waves.preview = Preview +waves.edit = Edit... +waves.copy = Copy to Clipboard +waves.load = Load from Clipboard +waves.invalid = Invalid waves in clipboard. +waves.copied = Waves copied. editor.default = [LIGHT_GRAY] edit = Edit... editor.name = Название: @@ -240,6 +246,7 @@ editor.mapname = Название карты: editor.overwrite = [accent]Внимание! \nЭто перезапишет уже существующую карту. editor.overwrite.confirm = [scarlet]Осторожно![] Карта с таким названием уже существует. Вы действительно хотите её перезаписать? editor.selectmap = Выберите карту для загрузки: +filters.empty = [LIGHT_GRAY]No filters! Add one with the button below. filter.distort = Distort filter.noise = Noise filter.ore = Ore @@ -247,14 +254,18 @@ filter.rivernoise = River Noise filter.scatter = Scatter filter.terrain = Terrain filter.option.scale = Scale +filter.option.chance = Chance filter.option.mag = Magnitude filter.option.threshold = Threshold filter.option.circle-scale = Circle Scale filter.option.octaves = Octaves filter.option.falloff = Falloff +filter.option.block = Block filter.option.floor = Floor filter.option.wall = Wall filter.option.ore = Ore +filter.option.floor2 = Secondary Floor +filter.option.threshold2 = Secondary Threshold width = Ширина: height = Высота: menu = Меню @@ -333,6 +344,7 @@ blocks.poweroutput = Выходная энергия: {0} blocks.powercapacity = Вместимость энергии blocks.powershot = Энергия/выстрел blocks.targetsair = Атакует воздуш. юнитов +blocks.targetsground = Targets Ground blocks.items = Items: {0} blocks.itemsmoved = Скорость перемещения blocks.shootrange = Радиус действия @@ -402,6 +414,7 @@ setting.autotarget.name = Авто-цель setting.fpscap.name = Макс. FPS setting.fpscap.none = Неограниченный setting.fpscap.text = {0} FPS +setting.swapdiagonal.name = Always Diagonal Placement setting.difficulty.training = обучение setting.difficulty.easy = легко setting.difficulty.normal = нормально @@ -438,6 +451,7 @@ keybind.screenshot.name = Скриншот карты keybind.move_x.name = Движение по оси x keybind.move_y.name = Движение по оси y keybind.select.name = Выбор/Выстрел +keybind.diagonal_placement.name = Diagonal Placement keybind.pick.name = Выбрать блок keybind.break_block.name = Разрушить блок keybind.deselect.name = Отмена @@ -555,6 +569,8 @@ block.grass.name = Grass block.salt.name = Salt block.sandrocks.name = Sand Rocks block.spore-pine.name = Spore Pine +block.sporerocks.name = Spore Rocks +block.rock.name = Rock block.shale.name = Shale block.shale-boulder.name = Shale Boulder block.moss.name = Moss diff --git a/core/assets/bundles/bundle_tk.properties b/core/assets/bundles/bundle_tk.properties index 6485aac7b9..19e7179c08 100644 --- a/core/assets/bundles/bundle_tk.properties +++ b/core/assets/bundles/bundle_tk.properties @@ -201,6 +201,12 @@ waves.waves = wave(s) waves.perspawn = per spawn waves.to = to waves.boss = Boss +waves.preview = Preview +waves.edit = Edit... +waves.copy = Copy to Clipboard +waves.load = Load from Clipboard +waves.invalid = Invalid waves in clipboard. +waves.copied = Waves copied. editor.default = [LIGHT_GRAY] edit = Edit... editor.name = isim: @@ -240,6 +246,7 @@ editor.mapname = Harita ismi: editor.overwrite = [accent]Dikkat et!\nBu bir haritanin uzerinden cececek. editor.overwrite.confirm = [scarlet]uyari![] bu isimde bir harita zaten var. Uzerinden gececek misin? editor.selectmap = Yukleyecek bir harita sec: +filters.empty = [LIGHT_GRAY]No filters! Add one with the button below. filter.distort = Distort filter.noise = Noise filter.ore = Ore @@ -247,14 +254,18 @@ filter.rivernoise = River Noise filter.scatter = Scatter filter.terrain = Terrain filter.option.scale = Scale +filter.option.chance = Chance filter.option.mag = Magnitude filter.option.threshold = Threshold filter.option.circle-scale = Circle Scale filter.option.octaves = Octaves filter.option.falloff = Falloff +filter.option.block = Block filter.option.floor = Floor filter.option.wall = Wall filter.option.ore = Ore +filter.option.floor2 = Secondary Floor +filter.option.threshold2 = Secondary Threshold width = Genislik: height = Yukseklik: menu = Menu @@ -333,6 +344,7 @@ blocks.poweroutput = Power Output: {0} blocks.powercapacity = Guc kapasitesi blocks.powershot = Guc/Saldiri hizi blocks.targetsair = Havayi hedef alir mi? +blocks.targetsground = Targets Ground blocks.items = Items: {0} blocks.itemsmoved = Move Speed blocks.shootrange = Menzil @@ -402,6 +414,7 @@ setting.autotarget.name = Auto-Target setting.fpscap.name = Max FPS setting.fpscap.none = Yok setting.fpscap.text = {0} FPS +setting.swapdiagonal.name = Always Diagonal Placement setting.difficulty.training = training setting.difficulty.easy = kolay setting.difficulty.normal = orta @@ -438,6 +451,7 @@ keybind.screenshot.name = Map Screenshot keybind.move_x.name = Sol/Sag hareket keybind.move_y.name = Yukari/asagi hareket keybind.select.name = Sec/silahi sik +keybind.diagonal_placement.name = Diagonal Placement keybind.pick.name = Pick Block keybind.break_block.name = Break Block keybind.deselect.name = Eldeki yapiyi birak @@ -555,6 +569,8 @@ block.grass.name = Grass block.salt.name = Salt block.sandrocks.name = Sand Rocks block.spore-pine.name = Spore Pine +block.sporerocks.name = Spore Rocks +block.rock.name = Rock block.shale.name = Shale block.shale-boulder.name = Shale Boulder block.moss.name = Moss diff --git a/core/assets/bundles/bundle_tr.properties b/core/assets/bundles/bundle_tr.properties index bb1641547c..4ed48c6af9 100644 --- a/core/assets/bundles/bundle_tr.properties +++ b/core/assets/bundles/bundle_tr.properties @@ -201,6 +201,12 @@ waves.waves = wave(s) waves.perspawn = per spawn waves.to = to waves.boss = Boss +waves.preview = Preview +waves.edit = Edit... +waves.copy = Copy to Clipboard +waves.load = Load from Clipboard +waves.invalid = Invalid waves in clipboard. +waves.copied = Waves copied. editor.default = [LIGHT_GRAY] edit = Edit... editor.name = Name: @@ -240,6 +246,7 @@ editor.mapname = Harita Adı editor.overwrite = [Vurgu] Uyarı! Bu mevcut bir haritanın üzerine yazar. editor.overwrite.confirm = [scarlet]Warning![] A map with this name already exists. Are you sure you want to overwrite it? editor.selectmap = Yüklenecek bir harita seçin: +filters.empty = [LIGHT_GRAY]No filters! Add one with the button below. filter.distort = Distort filter.noise = Noise filter.ore = Ore @@ -247,14 +254,18 @@ filter.rivernoise = River Noise filter.scatter = Scatter filter.terrain = Terrain filter.option.scale = Scale +filter.option.chance = Chance filter.option.mag = Magnitude filter.option.threshold = Threshold filter.option.circle-scale = Circle Scale filter.option.octaves = Octaves filter.option.falloff = Falloff +filter.option.block = Block filter.option.floor = Floor filter.option.wall = Wall filter.option.ore = Ore +filter.option.floor2 = Secondary Floor +filter.option.threshold2 = Secondary Threshold width = Genişliği: height = Boy: menu = Menü @@ -333,6 +344,7 @@ blocks.poweroutput = Power Output: {0} blocks.powercapacity = Güç kapasitesi blocks.powershot = Güç / atış blocks.targetsair = Targets Air +blocks.targetsground = Targets Ground blocks.items = Items: {0} blocks.itemsmoved = Move Speed blocks.shootrange = Range @@ -402,6 +414,7 @@ setting.autotarget.name = Auto-Target setting.fpscap.name = Max FPS setting.fpscap.none = None setting.fpscap.text = {0} FPS +setting.swapdiagonal.name = Always Diagonal Placement setting.difficulty.training = training setting.difficulty.easy = kolay setting.difficulty.normal = orta @@ -438,6 +451,7 @@ keybind.screenshot.name = Map Screenshot keybind.move_x.name = sağ / sol keybind.move_y.name = yukarı / aşağı keybind.select.name = seçmek +keybind.diagonal_placement.name = Diagonal Placement keybind.pick.name = Pick Block keybind.break_block.name = Break Block keybind.deselect.name = Deselect @@ -555,6 +569,8 @@ block.grass.name = Grass block.salt.name = Salt block.sandrocks.name = Sand Rocks block.spore-pine.name = Spore Pine +block.sporerocks.name = Spore Rocks +block.rock.name = Rock block.shale.name = Shale block.shale-boulder.name = Shale Boulder block.moss.name = Moss diff --git a/core/assets/bundles/bundle_uk_UA.properties b/core/assets/bundles/bundle_uk_UA.properties index 97c191b6f7..f833247bd1 100644 --- a/core/assets/bundles/bundle_uk_UA.properties +++ b/core/assets/bundles/bundle_uk_UA.properties @@ -201,6 +201,12 @@ waves.waves = wave(s) waves.perspawn = per spawn waves.to = to waves.boss = Boss +waves.preview = Preview +waves.edit = Edit... +waves.copy = Copy to Clipboard +waves.load = Load from Clipboard +waves.invalid = Invalid waves in clipboard. +waves.copied = Waves copied. editor.default = [LIGHT_GRAY] edit = Edit... editor.name = Назва: @@ -240,6 +246,7 @@ editor.mapname = Название карты: editor.overwrite = [accent]Попередження!\nЦе перезаписує існуючу карту. editor.overwrite.confirm = [scarlet]Попередження![] Карта з такою назвою вже існує. Ви впевнені, що хочете переписати її? editor.selectmap = Виберіть мапу для завантаження: +filters.empty = [LIGHT_GRAY]No filters! Add one with the button below. filter.distort = Distort filter.noise = Noise filter.ore = Ore @@ -247,14 +254,18 @@ filter.rivernoise = River Noise filter.scatter = Scatter filter.terrain = Terrain filter.option.scale = Scale +filter.option.chance = Chance filter.option.mag = Magnitude filter.option.threshold = Threshold filter.option.circle-scale = Circle Scale filter.option.octaves = Octaves filter.option.falloff = Falloff +filter.option.block = Block filter.option.floor = Floor filter.option.wall = Wall filter.option.ore = Ore +filter.option.floor2 = Secondary Floor +filter.option.threshold2 = Secondary Threshold width = Ширина: height = Висота: menu = Меню @@ -333,6 +344,7 @@ blocks.poweroutput = Вихідна енергія: {0} blocks.powercapacity = Місткість енергії blocks.powershot = Енергія/постріл blocks.targetsair = Атакуе повітряних ворогів +blocks.targetsground = Targets Ground blocks.items = Items: {0} blocks.itemsmoved = Швидкість переміщення blocks.shootrange = Діапазон дії @@ -402,6 +414,7 @@ setting.autotarget.name = Авто-ціль setting.fpscap.name = Макс. FPS setting.fpscap.none = Необмежений setting.fpscap.text = {0} FPS +setting.swapdiagonal.name = Always Diagonal Placement setting.difficulty.training = навчання setting.difficulty.easy = легка setting.difficulty.normal = нормальна @@ -438,6 +451,7 @@ keybind.screenshot.name = Скріншот мапи keybind.move_x.name = Рух по осі x keybind.move_y.name = Рух по осі x keybind.select.name = Вибір/Постріл +keybind.diagonal_placement.name = Diagonal Placement keybind.pick.name = Вибрати блок keybind.break_block.name = Зламати блок keybind.deselect.name = Скасувати @@ -555,6 +569,8 @@ block.grass.name = Grass block.salt.name = Salt block.sandrocks.name = Sand Rocks block.spore-pine.name = Spore Pine +block.sporerocks.name = Spore Rocks +block.rock.name = Rock block.shale.name = Shale block.shale-boulder.name = Shale Boulder block.moss.name = Moss diff --git a/core/assets/bundles/bundle_zh_CN.properties b/core/assets/bundles/bundle_zh_CN.properties index f9677c7ca9..8aa74c94bd 100644 --- a/core/assets/bundles/bundle_zh_CN.properties +++ b/core/assets/bundles/bundle_zh_CN.properties @@ -201,6 +201,12 @@ waves.waves = wave(s) waves.perspawn = per spawn waves.to = to waves.boss = Boss +waves.preview = Preview +waves.edit = Edit... +waves.copy = Copy to Clipboard +waves.load = Load from Clipboard +waves.invalid = Invalid waves in clipboard. +waves.copied = Waves copied. editor.default = [LIGHT_GRAY] edit = Edit... editor.name = 名字: @@ -240,6 +246,7 @@ editor.mapname = 地图名字: editor.overwrite = [accent]警告!\n这将会覆盖一个已经存在的地图。 editor.overwrite.confirm = [scarlet]警告![] 存在同名地图,确定要覆盖? editor.selectmap = 选择一个地图加载: +filters.empty = [LIGHT_GRAY]No filters! Add one with the button below. filter.distort = Distort filter.noise = Noise filter.ore = Ore @@ -247,14 +254,18 @@ filter.rivernoise = River Noise filter.scatter = Scatter filter.terrain = Terrain filter.option.scale = Scale +filter.option.chance = Chance filter.option.mag = Magnitude filter.option.threshold = Threshold filter.option.circle-scale = Circle Scale filter.option.octaves = Octaves filter.option.falloff = Falloff +filter.option.block = Block filter.option.floor = Floor filter.option.wall = Wall filter.option.ore = Ore +filter.option.floor2 = Secondary Floor +filter.option.threshold2 = Secondary Threshold width = 宽度: height = 高度: menu = 菜单 @@ -333,6 +344,7 @@ blocks.poweroutput = Power Output: {0} blocks.powercapacity = 能量容量 blocks.powershot = 能量/发射 blocks.targetsair = 攻击空中单位 +blocks.targetsground = Targets Ground blocks.items = Items: {0} blocks.itemsmoved = 移动速度 blocks.shootrange = 范围 @@ -402,6 +414,7 @@ setting.autotarget.name = 自动发射 setting.fpscap.name = 最高 FPS setting.fpscap.none = 无 setting.fpscap.text = {0} FPS +setting.swapdiagonal.name = Always Diagonal Placement setting.difficulty.training = 训练 setting.difficulty.easy = 简单 setting.difficulty.normal = 普通 @@ -438,6 +451,7 @@ keybind.screenshot.name = 地图截图 keybind.move_x.name = 水平移动 keybind.move_y.name = 垂直移动 keybind.select.name = 选择 +keybind.diagonal_placement.name = Diagonal Placement keybind.pick.name = 选择方块 keybind.break_block.name = 破坏方块 keybind.deselect.name = 取消 @@ -555,6 +569,8 @@ block.grass.name = Grass block.salt.name = Salt block.sandrocks.name = Sand Rocks block.spore-pine.name = Spore Pine +block.sporerocks.name = Spore Rocks +block.rock.name = Rock block.shale.name = Shale block.shale-boulder.name = Shale Boulder block.moss.name = Moss diff --git a/core/assets/bundles/bundle_zh_TW.properties b/core/assets/bundles/bundle_zh_TW.properties index 772d9d6e89..d1ea37d867 100644 --- a/core/assets/bundles/bundle_zh_TW.properties +++ b/core/assets/bundles/bundle_zh_TW.properties @@ -201,6 +201,12 @@ waves.waves = wave(s) waves.perspawn = per spawn waves.to = to waves.boss = Boss +waves.preview = Preview +waves.edit = Edit... +waves.copy = Copy to Clipboard +waves.load = Load from Clipboard +waves.invalid = Invalid waves in clipboard. +waves.copied = Waves copied. editor.default = [LIGHT_GRAY] edit = Edit... editor.name = 名稱: @@ -240,6 +246,7 @@ editor.mapname = 地圖名稱: editor.overwrite = [accent]警告!這將會覆蓋現有的地圖。 editor.overwrite.confirm = [scarlet]警告![]同名地圖存在,確定要覆蓋現有地圖? editor.selectmap = 選取要載入的地圖: +filters.empty = [LIGHT_GRAY]No filters! Add one with the button below. filter.distort = Distort filter.noise = Noise filter.ore = Ore @@ -247,14 +254,18 @@ filter.rivernoise = River Noise filter.scatter = Scatter filter.terrain = Terrain filter.option.scale = Scale +filter.option.chance = Chance filter.option.mag = Magnitude filter.option.threshold = Threshold filter.option.circle-scale = Circle Scale filter.option.octaves = Octaves filter.option.falloff = Falloff +filter.option.block = Block filter.option.floor = Floor filter.option.wall = Wall filter.option.ore = Ore +filter.option.floor2 = Secondary Floor +filter.option.threshold2 = Secondary Threshold width = 寬度: height = 長度: menu = 主選單 @@ -333,6 +344,7 @@ blocks.poweroutput = Power Output: {0} blocks.powercapacity = 蓄電量 blocks.powershot = 能量/射擊 blocks.targetsair = 攻擊空中目標 +blocks.targetsground = Targets Ground blocks.items = Items: {0} blocks.itemsmoved = Move Speed blocks.shootrange = 範圍 @@ -402,6 +414,7 @@ setting.autotarget.name = 自動射擊 setting.fpscap.name = 最大FPS setting.fpscap.none = 没有 setting.fpscap.text = {0}FPS +setting.swapdiagonal.name = Always Diagonal Placement setting.difficulty.training = 訓練 setting.difficulty.easy = 簡單 setting.difficulty.normal = 普通 @@ -438,6 +451,7 @@ keybind.screenshot.name = 地圖截圖 keybind.move_x.name = 水平移動 keybind.move_y.name = 垂直移動 keybind.select.name = 選取 +keybind.diagonal_placement.name = Diagonal Placement keybind.pick.name = Pick Block keybind.break_block.name = Break Block keybind.deselect.name = 取消選取 @@ -555,6 +569,8 @@ block.grass.name = Grass block.salt.name = Salt block.sandrocks.name = Sand Rocks block.spore-pine.name = Spore Pine +block.sporerocks.name = Spore Rocks +block.rock.name = Rock block.shale.name = Shale block.shale-boulder.name = Shale Boulder block.moss.name = Moss diff --git a/core/assets/maps/craters.mmap b/core/assets/maps/craters.mmap index a0032dfdc3..92baaff531 100644 Binary files a/core/assets/maps/craters.mmap and b/core/assets/maps/craters.mmap differ diff --git a/core/assets/maps/groundZero.mmap b/core/assets/maps/groundZero.mmap index 24bca59ae2..201b03352c 100644 Binary files a/core/assets/maps/groundZero.mmap and b/core/assets/maps/groundZero.mmap differ diff --git a/core/assets/maps/nuclearProductionComplex.mmap b/core/assets/maps/nuclearProductionComplex.mmap index d6385bf8a6..0fe2013949 100644 Binary files a/core/assets/maps/nuclearProductionComplex.mmap and b/core/assets/maps/nuclearProductionComplex.mmap differ diff --git a/core/assets/maps/ruinousShores.mmap b/core/assets/maps/ruinousShores.mmap index a429d12525..861c13a1f6 100644 Binary files a/core/assets/maps/ruinousShores.mmap and b/core/assets/maps/ruinousShores.mmap differ diff --git a/core/assets/sprites/block_colors.png b/core/assets/sprites/block_colors.png index cf39740b1b..dba87393f8 100644 Binary files a/core/assets/sprites/block_colors.png and b/core/assets/sprites/block_colors.png differ diff --git a/core/assets/sprites/sprites.atlas b/core/assets/sprites/sprites.atlas index dda7bf18ef..23e75fd37a 100644 --- a/core/assets/sprites/sprites.atlas +++ b/core/assets/sprites/sprites.atlas @@ -48,308 +48,308 @@ overdrive-projector-top index: -1 shock-mine rotate: false - xy: 1489, 849 + xy: 563, 152 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-conveyor rotate: false - xy: 1551, 1168 + xy: 1117, 847 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-conveyor-bridge rotate: false - xy: 1585, 1168 + xy: 1117, 813 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-conveyor-end rotate: false - xy: 1619, 1168 + xy: 1117, 779 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-0-0 rotate: false - xy: 1817, 1100 + xy: 1451, 1121 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-0-1 rotate: false - xy: 1851, 1134 + xy: 1485, 1121 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-0-2 rotate: false - xy: 1851, 1100 + xy: 1519, 1121 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-0-3 rotate: false - xy: 1891, 1159 + xy: 1553, 1121 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-1-0 rotate: false - xy: 1925, 1159 + xy: 1587, 1121 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-1-1 rotate: false - xy: 1885, 1125 + xy: 1621, 1105 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-1-2 rotate: false - xy: 1919, 1125 + xy: 1655, 1105 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-1-3 rotate: false - xy: 1885, 1091 + xy: 1689, 1096 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-2-0 rotate: false - xy: 1919, 1091 + xy: 1723, 1096 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-2-1 rotate: false - xy: 1545, 1066 + xy: 1185, 863 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-2-2 rotate: false - xy: 1579, 1066 + xy: 1185, 829 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-2-3 rotate: false - xy: 1613, 1066 + xy: 1185, 795 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-3-0 rotate: false - xy: 1647, 1066 + xy: 1151, 753 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-3-1 rotate: false - xy: 1681, 1066 + xy: 1185, 761 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-3-2 rotate: false - xy: 1715, 1066 + xy: 1235, 913 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-3-3 rotate: false - xy: 1749, 1066 + xy: 1285, 963 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-4-0 rotate: false - xy: 1783, 1066 + xy: 1335, 1013 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-4-1 rotate: false - xy: 1817, 1066 + xy: 1375, 1105 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-4-2 rotate: false - xy: 1851, 1066 + xy: 1385, 1071 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conveyor-4-3 rotate: false - xy: 1885, 1057 + xy: 1419, 1087 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-0-0 rotate: false - xy: 1151, 753 + xy: 1693, 960 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-0-1 rotate: false - xy: 1185, 863 + xy: 1693, 926 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-0-2 rotate: false - xy: 1185, 829 + xy: 1727, 1028 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-0-3 rotate: false - xy: 1185, 795 + xy: 1727, 994 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-1-0 rotate: false - xy: 1185, 761 + xy: 1727, 960 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-1-1 rotate: false - xy: 1185, 727 + xy: 1727, 926 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-1-2 rotate: false - xy: 1113, 745 + xy: 1659, 892 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-1-3 rotate: false - xy: 1108, 711 + xy: 1693, 892 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-2-0 rotate: false - xy: 1074, 700 + xy: 1727, 892 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-2-1 rotate: false - xy: 1108, 677 + xy: 1350, 581 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-2-2 rotate: false - xy: 1142, 711 + xy: 567, 687 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-2-3 rotate: false - xy: 1142, 677 + xy: 567, 653 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-3-0 rotate: false - xy: 1176, 693 + xy: 567, 619 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-3-1 rotate: false - xy: 1176, 659 + xy: 567, 585 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-3-2 rotate: false - xy: 1210, 693 + xy: 567, 551 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-3-3 rotate: false - xy: 1210, 659 + xy: 1321, 883 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-4-0 rotate: false - xy: 495, 488 + xy: 1321, 849 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-4-1 rotate: false - xy: 495, 454 + xy: 1321, 815 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-4-2 rotate: false - xy: 495, 420 + xy: 1321, 781 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-conveyor-4-3 rotate: false - xy: 495, 386 + xy: 1321, 747 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -363,7 +363,7 @@ distributor index: -1 junction rotate: false - xy: 1913, 1023 + xy: 1253, 743 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -377,49 +377,49 @@ mass-driver-base index: -1 overflow-gate rotate: false - xy: 1573, 930 + xy: 1181, 693 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conveyor rotate: false - xy: 1777, 930 + xy: 1961, 1049 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conveyor-arrow rotate: false - xy: 1811, 930 + xy: 1995, 1049 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conveyor-bridge rotate: false - xy: 1845, 930 + xy: 1215, 667 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conveyor-end rotate: false - xy: 1879, 921 + xy: 1214, 633 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 router rotate: false - xy: 1727, 896 + xy: 529, 118 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sorter rotate: false - xy: 1999, 879 + xy: 1623, 1071 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -580,35 +580,35 @@ water-extractor-top index: -1 block-border rotate: false - xy: 1477, 1121 + xy: 1787, 1139 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-middle rotate: false - xy: 1511, 1155 + xy: 1821, 1139 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pump-liquid rotate: false - xy: 1511, 1155 + xy: 1821, 1139 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 block-select rotate: false - xy: 1511, 1121 + xy: 1855, 1134 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-liquid rotate: false - xy: 1681, 1134 + xy: 1731, 1130 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -678,175 +678,175 @@ rubble-4-1 index: -1 spawn rotate: false - xy: 1931, 845 + xy: 1623, 1037 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-conduit rotate: false - xy: 1409, 1079 + xy: 1889, 1134 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-conduit-arrow rotate: false - xy: 1443, 1087 + xy: 1923, 1129 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-conveyor-arrow rotate: false - xy: 1443, 1087 + xy: 1923, 1129 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-conduit-bridge rotate: false - xy: 1477, 1087 + xy: 1957, 1117 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-conduit-end rotate: false - xy: 1511, 1087 + xy: 1991, 1117 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom rotate: false - xy: 1857, 1168 + xy: 1425, 1155 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-0 rotate: false - xy: 1545, 1134 + xy: 1459, 1155 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-1 rotate: false - xy: 1545, 1100 + xy: 1493, 1155 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-2 rotate: false - xy: 1579, 1134 + xy: 1527, 1155 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-3 rotate: false - xy: 1579, 1100 + xy: 1561, 1155 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-4 rotate: false - xy: 1613, 1134 + xy: 1595, 1155 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-5 rotate: false - xy: 1613, 1100 + xy: 1629, 1139 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-bottom-6 rotate: false - xy: 1647, 1134 + xy: 1663, 1139 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-0 rotate: false - xy: 1681, 1100 + xy: 1151, 855 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-1 rotate: false - xy: 1715, 1134 + xy: 1151, 821 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-2 rotate: false - xy: 1715, 1100 + xy: 1151, 787 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-3 rotate: false - xy: 1749, 1134 + xy: 1201, 905 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-4 rotate: false - xy: 1749, 1100 + xy: 1251, 955 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-5 rotate: false - xy: 1783, 1134 + xy: 1301, 1005 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-top-6 rotate: false - xy: 1783, 1100 + xy: 1351, 1055 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-junction rotate: false - xy: 1981, 981 + xy: 1287, 751 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-router-bottom rotate: false - xy: 1539, 964 + xy: 1253, 675 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-router-liquid rotate: false - xy: 1607, 964 + xy: 1287, 649 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-router-top rotate: false - xy: 1641, 964 + xy: 495, 488 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -874,84 +874,84 @@ liquid-tank-top index: -1 mechanical-pump rotate: false - xy: 1879, 955 + xy: 495, 250 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conduit rotate: false - xy: 1641, 930 + xy: 1927, 1083 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conduit-arrow rotate: false - xy: 1675, 930 + xy: 1961, 1083 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conduit-bridge rotate: false - xy: 1709, 930 + xy: 1995, 1083 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conduit-end rotate: false - xy: 1743, 930 + xy: 1927, 1049 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-0 rotate: false - xy: 1285, 894 + xy: 499, 526 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-1 rotate: false - xy: 1319, 894 + xy: 533, 696 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-2 rotate: false - xy: 1353, 894 + xy: 533, 662 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-3 rotate: false - xy: 1387, 909 + xy: 533, 628 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-4 rotate: false - xy: 1421, 909 + xy: 533, 594 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-5 rotate: false - xy: 1455, 909 + xy: 533, 560 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-top-6 rotate: false - xy: 1489, 917 + xy: 533, 526 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -1021,7 +1021,7 @@ trident-ship-pad index: -1 battery rotate: false - xy: 1409, 1147 + xy: 1863, 1168 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -1035,14 +1035,14 @@ battery-large index: -1 combustion-generator rotate: false - xy: 1789, 1168 + xy: 1267, 997 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 combustion-generator-top rotate: false - xy: 1823, 1168 + xy: 1317, 1047 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -1119,7 +1119,7 @@ impact-reactor-top index: -1 power-node rotate: false - xy: 1151, 787 + xy: 485, 730 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -1133,28 +1133,28 @@ power-node-large index: -1 power-source rotate: false - xy: 1251, 929 + xy: 499, 696 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 power-void rotate: false - xy: 1285, 928 + xy: 499, 662 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 powerinfinite rotate: false - xy: 1319, 928 + xy: 499, 628 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 powervoid rotate: false - xy: 1353, 928 + xy: 499, 594 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -1168,14 +1168,14 @@ rtg-generator index: -1 rtg-generator-top rotate: false - xy: 1795, 896 + xy: 529, 50 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 solar-panel rotate: false - xy: 1897, 853 + xy: 87, 3 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -1308,21 +1308,21 @@ graphite-press index: -1 incinerator rotate: false - xy: 1539, 1032 + xy: 1455, 985 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-source rotate: false - xy: 1743, 998 + xy: 1489, 917 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-void rotate: false - xy: 1845, 998 + xy: 1253, 811 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -1350,21 +1350,21 @@ silicon-smelter-top index: -1 lavasmelter rotate: false - xy: 2015, 1015 + xy: 1287, 819 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-source rotate: false - xy: 1709, 964 + xy: 495, 420 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 melter rotate: false - xy: 1947, 947 + xy: 495, 182 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -1413,14 +1413,14 @@ plastanium-compressor-top index: -1 pulverizer rotate: false - xy: 1387, 875 + xy: 529, 492 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulverizer-rotator rotate: false - xy: 1455, 875 + xy: 529, 424 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -1455,7 +1455,7 @@ silicon-smelter index: -1 smelter rotate: false - xy: 1863, 853 + xy: 563, 50 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -1546,14 +1546,14 @@ launch-pad index: -1 sortedunloader rotate: false - xy: 1965, 879 + xy: 1589, 1037 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 unloader rotate: false - xy: 495, 182 + xy: 1355, 799 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -1574,7 +1574,7 @@ arc-heat index: -1 block-1 rotate: false - xy: 1477, 1155 + xy: 1999, 1151 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -1791,7 +1791,7 @@ phantom-factory-top-open index: -1 repair-point-base rotate: false - xy: 1557, 896 + xy: 529, 322 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -1854,7 +1854,7 @@ wraith-factory-top-open index: -1 copper-wall rotate: false - xy: 1919, 1057 + xy: 1453, 1087 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -1868,7 +1868,7 @@ copper-wall-large index: -1 door rotate: false - xy: 1167, 897 + xy: 1521, 1019 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -1889,14 +1889,14 @@ door-large-open index: -1 door-open rotate: false - xy: 1267, 997 + xy: 1757, 1096 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-wall rotate: false - xy: 1913, 921 + xy: 1249, 641 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -1966,42 +1966,42 @@ scrap-wall-large4 index: -1 scrap-wall1 rotate: false - xy: 1557, 862 + xy: 563, 458 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap-wall2 rotate: false - xy: 1591, 862 + xy: 563, 424 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap-wall3 rotate: false - xy: 1625, 862 + xy: 563, 390 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap-wall4 rotate: false - xy: 1659, 862 + xy: 563, 356 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap-wall5 rotate: false - xy: 1659, 862 + xy: 563, 356 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 surge-wall rotate: false - xy: 1659, 828 + xy: 1591, 901 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -2015,7 +2015,7 @@ surge-wall-large index: -1 thorium-wall rotate: false - xy: 1897, 819 + xy: 1693, 1028 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -2036,7 +2036,7 @@ thruster index: -1 titanium-wall rotate: false - xy: 495, 352 + xy: 1321, 713 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -2078,7 +2078,7 @@ error index: -1 laser rotate: false - xy: 2041, 1399 + xy: 2043, 1103 size: 4, 48 orig: 4, 48 offset: 0, 0 @@ -2092,7 +2092,7 @@ laser-end index: -1 minelaser rotate: false - xy: 2041, 1349 + xy: 2041, 1399 size: 4, 48 orig: 4, 48 offset: 0, 0 @@ -2106,91 +2106,91 @@ minelaser-end index: -1 missile rotate: false - xy: 1893, 1193 + xy: 1075, 759 size: 36, 36 orig: 36, 36 offset: 0, 0 index: -1 missile-back rotate: false - xy: 1931, 1193 + xy: 1074, 721 size: 36, 36 orig: 36, 36 offset: 0, 0 index: -1 scale_marker rotate: false - xy: 317, 1633 + xy: 517, 1228 size: 4, 4 orig: 4, 4 offset: 0, 0 index: -1 scorch1 rotate: false - xy: 1219, 811 + xy: 1389, 753 size: 28, 100 orig: 28, 100 offset: 0, 0 index: -1 scorch2 rotate: false - xy: 1249, 793 + xy: 1761, 994 size: 28, 100 orig: 28, 100 offset: 0, 0 index: -1 scorch3 rotate: false - xy: 1279, 792 + xy: 1761, 892 size: 28, 100 orig: 28, 100 offset: 0, 0 index: -1 scorch4 rotate: false - xy: 1309, 792 + xy: 1791, 969 size: 28, 100 orig: 28, 100 offset: 0, 0 index: -1 scorch5 rotate: false - xy: 1339, 792 + xy: 1821, 964 size: 28, 100 orig: 28, 100 offset: 0, 0 index: -1 shell rotate: false - xy: 1363, 1059 + xy: 1711, 1164 size: 36, 36 orig: 36, 36 offset: 0, 0 index: -1 shell-back rotate: false - xy: 1317, 1030 + xy: 1749, 1164 size: 36, 36 orig: 36, 36 offset: 0, 0 index: -1 shot rotate: false - xy: 1863, 887 + xy: 563, 118 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 transfer rotate: false - xy: 2041, 1299 + xy: 2041, 1349 size: 4, 48 orig: 4, 48 offset: 0, 0 index: -1 transfer-arrow rotate: false - xy: 495, 284 + xy: 1355, 901 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -2253,7 +2253,7 @@ arc index: -1 arc-icon-full rotate: false - xy: 1074, 734 + xy: 1939, 1197 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -2295,14 +2295,14 @@ battery-large-icon-large index: -1 battery-large-icon-medium rotate: false - xy: 1409, 1113 + xy: 1897, 1168 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 battery-large-icon-small rotate: false - xy: 499, 552 + xy: 1321, 653 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -2323,14 +2323,14 @@ blast-drill-icon-large index: -1 blast-drill-icon-medium rotate: false - xy: 1443, 1155 + xy: 1931, 1163 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 blast-drill-icon-small rotate: false - xy: 1219, 747 + xy: 1389, 689 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -2344,14 +2344,14 @@ blast-mixer-icon-large index: -1 blast-mixer-icon-medium rotate: false - xy: 1443, 1121 + xy: 1965, 1151 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 blast-mixer-icon-small rotate: false - xy: 1398, 849 + xy: 1389, 663 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -2365,7 +2365,7 @@ bridge-conduit-icon-large index: -1 bridge-conduit-icon-small rotate: false - xy: 1398, 823 + xy: 1851, 1002 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -2393,7 +2393,7 @@ char-icon-large index: -1 char-icon-small rotate: false - xy: 499, 526 + xy: 1851, 976 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -2407,7 +2407,7 @@ cliffs-icon-large index: -1 cliffs-icon-small rotate: false - xy: 1424, 849 + xy: 1420, 891 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -2421,14 +2421,14 @@ combustion-generator-icon-large index: -1 combustion-generator-icon-small rotate: false - xy: 1424, 823 + xy: 1446, 891 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 conduit-icon-full rotate: false - xy: 1647, 1100 + xy: 1697, 1130 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -2442,7 +2442,7 @@ conduit-icon-large index: -1 conduit-icon-small rotate: false - xy: 1450, 849 + xy: 1420, 865 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -2456,14 +2456,14 @@ container-icon-large index: -1 container-icon-medium rotate: false - xy: 1817, 1134 + xy: 1417, 1121 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 container-icon-small rotate: false - xy: 1450, 823 + xy: 1472, 891 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -2477,7 +2477,7 @@ conveyor-icon-large index: -1 conveyor-icon-small rotate: false - xy: 533, 704 + xy: 1446, 865 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -2491,7 +2491,7 @@ copper-wall-icon-large index: -1 copper-wall-icon-small rotate: false - xy: 1369, 786 + xy: 1498, 891 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -2505,14 +2505,14 @@ copper-wall-large-icon-large index: -1 copper-wall-large-icon-medium rotate: false - xy: 1401, 1045 + xy: 1487, 1087 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 copper-wall-large-icon-small rotate: false - xy: 1248, 767 + xy: 1472, 865 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -2526,14 +2526,14 @@ core-foundation-icon-large index: -1 core-foundation-icon-medium rotate: false - xy: 1959, 1151 + xy: 1521, 1087 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 core-foundation-icon-small rotate: false - xy: 1274, 766 + xy: 1524, 891 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -2547,14 +2547,14 @@ core-nucleus-icon-large index: -1 core-nucleus-icon-medium rotate: false - xy: 1993, 1151 + xy: 1555, 1087 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 core-nucleus-icon-small rotate: false - xy: 1300, 766 + xy: 1498, 865 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -2568,14 +2568,14 @@ core-shard-icon-large index: -1 core-shard-icon-medium rotate: false - xy: 1953, 1117 + xy: 1385, 1037 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 core-shard-icon-small rotate: false - xy: 1326, 766 + xy: 1550, 891 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -2589,7 +2589,7 @@ craters-icon-large index: -1 craters-icon-small rotate: false - xy: 1245, 741 + xy: 1524, 865 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -2610,14 +2610,14 @@ crawler-factory-icon-large index: -1 crawler-factory-icon-medium rotate: false - xy: 1953, 1083 + xy: 1419, 1053 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 crawler-factory-icon-small rotate: false - xy: 1271, 740 + xy: 1550, 865 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -2638,14 +2638,14 @@ cryofluidmixer-icon-large index: -1 cryofluidmixer-icon-medium rotate: false - xy: 1987, 1117 + xy: 1453, 1053 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cryofluidmixer-icon-small rotate: false - xy: 1297, 740 + xy: 1820, 938 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -2666,14 +2666,14 @@ cultivator-icon-large index: -1 cultivator-icon-medium rotate: false - xy: 1987, 1083 + xy: 1487, 1053 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cultivator-icon-small rotate: false - xy: 1323, 740 + xy: 1820, 912 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -2701,14 +2701,14 @@ cyclone-icon-large index: -1 cyclone-icon-medium rotate: false - xy: 1953, 1049 + xy: 1521, 1053 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cyclone-icon-small rotate: false - xy: 1476, 823 + xy: 1791, 880 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -2729,14 +2729,14 @@ dagger-factory-icon-large index: -1 dagger-factory-icon-medium rotate: false - xy: 1987, 1049 + xy: 1555, 1053 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dagger-factory-icon-small rotate: false - xy: 1398, 797 + xy: 1880, 1035 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -2750,7 +2750,7 @@ deepwater-icon-large index: -1 deepwater-icon-small rotate: false - xy: 1424, 797 + xy: 1384, 603 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -2764,14 +2764,14 @@ delta-mech-pad-icon-large index: -1 delta-mech-pad-icon-medium rotate: false - xy: 1117, 847 + xy: 1419, 1019 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 delta-mech-pad-icon-small rotate: false - xy: 1450, 797 + xy: 1384, 577 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -2785,14 +2785,14 @@ differential-generator-icon-large index: -1 differential-generator-icon-medium rotate: false - xy: 1117, 813 + xy: 1453, 1019 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 differential-generator-icon-small rotate: false - xy: 1476, 797 + xy: 1851, 950 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -2806,14 +2806,14 @@ distributor-icon-large index: -1 distributor-icon-medium rotate: false - xy: 1117, 779 + xy: 1487, 1019 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 distributor-icon-small rotate: false - xy: 1244, 715 + xy: 1846, 924 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -2827,7 +2827,7 @@ door-icon-large index: -1 door-icon-small rotate: false - xy: 1244, 689 + xy: 1846, 898 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -2841,14 +2841,14 @@ door-large-icon-large index: -1 door-large-icon-medium rotate: false - xy: 1217, 947 + xy: 1555, 1019 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 door-large-icon-small rotate: false - xy: 1244, 663 + xy: 1820, 886 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -2862,21 +2862,21 @@ dunerocks-icon-large index: -1 dunerocks-icon-small rotate: false - xy: 1270, 714 + xy: 1846, 872 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 duo rotate: false - xy: 1301, 996 + xy: 1791, 1105 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 duo-icon-full rotate: false - xy: 1335, 996 + xy: 1791, 1071 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -2890,7 +2890,7 @@ duo-icon-large index: -1 duo-icon-small rotate: false - xy: 1270, 688 + xy: 1576, 875 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -2904,14 +2904,14 @@ force-projector-icon-large index: -1 force-projector-icon-medium rotate: false - xy: 1403, 1011 + xy: 1219, 837 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 force-projector-icon-small rotate: false - xy: 1296, 714 + xy: 1602, 875 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -2932,14 +2932,14 @@ fortress-factory-icon-large index: -1 fortress-factory-icon-medium rotate: false - xy: 1403, 977 + xy: 1219, 803 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 fortress-factory-icon-small rotate: false - xy: 1296, 688 + xy: 1628, 875 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -2967,14 +2967,14 @@ fuse-icon-large index: -1 fuse-icon-medium rotate: false - xy: 1435, 1045 + xy: 1219, 769 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 fuse-icon-small rotate: false - xy: 1322, 714 + xy: 1654, 866 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -2995,14 +2995,14 @@ ghoul-factory-icon-large index: -1 ghoul-factory-icon-medium rotate: false - xy: 1437, 1011 + xy: 1185, 727 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ghoul-factory-icon-small rotate: false - xy: 1322, 688 + xy: 1680, 866 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -3016,14 +3016,14 @@ glaive-ship-pad-icon-large index: -1 glaive-ship-pad-icon-medium rotate: false - xy: 1437, 977 + xy: 1219, 735 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 glaive-ship-pad-icon-small rotate: false - xy: 1270, 662 + xy: 1706, 866 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -3037,14 +3037,14 @@ graphite-press-icon-large index: -1 graphite-press-icon-medium rotate: false - xy: 1469, 1053 + xy: 1269, 921 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 graphite-press-icon-small rotate: false - xy: 1296, 662 + xy: 1732, 866 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -3058,21 +3058,21 @@ grass-icon-large index: -1 grass-icon-small rotate: false - xy: 1322, 662 + xy: 1758, 866 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 hail rotate: false - xy: 1503, 1053 + xy: 1319, 971 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 hail-icon-full rotate: false - xy: 1471, 1019 + xy: 1369, 1003 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3086,7 +3086,7 @@ hail-icon-large index: -1 hail-icon-small rotate: false - xy: 77, 8 + xy: 1420, 839 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -3100,7 +3100,7 @@ holostone-icon-large index: -1 holostone-icon-small rotate: false - xy: 103, 11 + xy: 1446, 839 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -3114,7 +3114,7 @@ hotrock-icon-large index: -1 hotrock-icon-small rotate: false - xy: 533, 678 + xy: 1472, 839 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -3128,7 +3128,7 @@ ice-icon-large index: -1 ice-icon-small rotate: false - xy: 530, 652 + xy: 1498, 839 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -3142,7 +3142,7 @@ ice-snow-icon-large index: -1 ice-snow-icon-small rotate: false - xy: 530, 626 + xy: 1524, 839 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -3156,7 +3156,7 @@ icerocks-icon-large index: -1 icerocks-icon-small rotate: false - xy: 530, 600 + xy: 1550, 839 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -3170,7 +3170,7 @@ ignarock-icon-large index: -1 ignarock-icon-small rotate: false - xy: 529, 496 + xy: 1419, 813 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -3191,14 +3191,14 @@ impact-reactor-icon-large index: -1 impact-reactor-icon-medium rotate: false - xy: 1505, 985 + xy: 1421, 985 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 impact-reactor-icon-small rotate: false - xy: 529, 470 + xy: 1419, 787 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -3212,21 +3212,21 @@ incinerator-icon-large index: -1 incinerator-icon-small rotate: false - xy: 529, 444 + xy: 1445, 813 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-blast-compound-medium rotate: false - xy: 529, 376 + xy: 1445, 787 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-blast-compound-small rotate: false - xy: 2030, 1903 + xy: 1810, 844 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -3240,14 +3240,14 @@ item-blast-compound-xlarge index: -1 item-coal-medium rotate: false - xy: 529, 350 + xy: 1471, 813 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-coal-small rotate: false - xy: 2030, 1885 + xy: 1828, 850 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -3261,14 +3261,14 @@ item-coal-xlarge index: -1 item-copper-medium rotate: false - xy: 529, 324 + xy: 1445, 761 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-copper-small rotate: false - xy: 2030, 1867 + xy: 1846, 854 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -3282,189 +3282,189 @@ item-copper-xlarge index: -1 item-graphite-medium rotate: false - xy: 529, 298 + xy: 1471, 787 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-graphite-small rotate: false - xy: 2030, 1849 + xy: 1810, 826 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 item-graphite-xlarge rotate: false - xy: 1325, 1139 + xy: 1425, 1189 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-lead-medium rotate: false - xy: 529, 272 + xy: 1497, 813 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-lead-small rotate: false - xy: 2027, 1167 + xy: 1828, 832 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 item-lead-xlarge rotate: false - xy: 1425, 1189 + xy: 1075, 839 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-metaglass-medium rotate: false - xy: 529, 246 + xy: 1471, 761 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-metaglass-small rotate: false - xy: 1858, 801 + xy: 1846, 836 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 item-metaglass-xlarge rotate: false - xy: 1075, 839 + xy: 1125, 889 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-phase-fabric-medium rotate: false - xy: 529, 220 + xy: 1497, 787 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-phase-fabric-small rotate: false - xy: 1876, 801 + xy: 1810, 808 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 item-phase-fabric-xlarge rotate: false - xy: 1125, 889 + xy: 1175, 939 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-plastanium-medium rotate: false - xy: 529, 194 + xy: 1523, 813 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-plastanium-small rotate: false - xy: 1858, 783 + xy: 1828, 814 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 item-plastanium-xlarge rotate: false - xy: 1175, 939 + xy: 1225, 989 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-pyratite-medium rotate: false - xy: 529, 168 + xy: 1497, 761 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-pyratite-small rotate: false - xy: 1894, 801 + xy: 1846, 818 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 item-pyratite-xlarge rotate: false - xy: 1225, 989 + xy: 1275, 1039 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-sand-medium rotate: false - xy: 529, 142 + xy: 1523, 787 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-sand-small rotate: false - xy: 1876, 783 + xy: 1864, 854 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 item-sand-xlarge rotate: false - xy: 1275, 1039 + xy: 1325, 1089 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-scrap-medium rotate: false - xy: 529, 116 + xy: 1549, 813 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-scrap-small rotate: false - xy: 1912, 801 + xy: 1864, 836 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 item-scrap-xlarge rotate: false - xy: 1325, 1097 + xy: 1375, 1139 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-silicon-medium rotate: false - xy: 529, 90 + xy: 1523, 761 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-silicon-small rotate: false - xy: 1894, 783 + xy: 1864, 818 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 item-silicon-xlarge rotate: false - xy: 1367, 1139 + xy: 1467, 1189 size: 40, 40 orig: 40, 40 offset: 0, 0 @@ -3478,91 +3478,91 @@ item-source-icon-large index: -1 item-source-icon-small rotate: false - xy: 529, 64 + xy: 1549, 787 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-spore-pod-medium rotate: false - xy: 529, 38 + xy: 1549, 761 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-spore-pod-small rotate: false - xy: 1912, 783 + xy: 1880, 1017 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 item-spore-pod-xlarge rotate: false - xy: 1467, 1189 + xy: 1075, 797 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-surge-alloy-medium rotate: false - xy: 529, 12 + xy: 1418, 719 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-surge-alloy-small rotate: false - xy: 1930, 793 + xy: 1877, 999 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 item-surge-alloy-xlarge rotate: false - xy: 1075, 797 + xy: 1509, 1189 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-thorium-medium rotate: false - xy: 1395, 771 + xy: 1654, 840 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-thorium-small rotate: false - xy: 1948, 793 + xy: 1877, 981 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 item-thorium-xlarge rotate: false - xy: 1367, 1097 + xy: 1551, 1189 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 item-titanium-medium rotate: false - xy: 1421, 771 + xy: 1680, 840 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-titanium-small rotate: false - xy: 1966, 793 + xy: 1877, 963 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 item-titanium-xlarge rotate: false - xy: 1509, 1189 + xy: 1593, 1189 size: 40, 40 orig: 40, 40 offset: 0, 0 @@ -3576,7 +3576,7 @@ item-void-icon-large index: -1 item-void-icon-small rotate: false - xy: 1447, 771 + xy: 1706, 840 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -3590,14 +3590,14 @@ javelin-ship-pad-icon-large index: -1 javelin-ship-pad-icon-medium rotate: false - xy: 1879, 1023 + xy: 1253, 777 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 javelin-ship-pad-icon-small rotate: false - xy: 1473, 771 + xy: 1732, 840 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -3611,7 +3611,7 @@ junction-icon-large index: -1 junction-icon-small rotate: false - xy: 2021, 1125 + xy: 1758, 840 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -3625,14 +3625,14 @@ kiln-icon-large index: -1 kiln-icon-medium rotate: false - xy: 1879, 989 + xy: 1219, 701 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 kiln-icon-small rotate: false - xy: 2021, 1099 + xy: 1784, 854 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -3660,14 +3660,14 @@ lancer-icon-large index: -1 lancer-icon-medium rotate: false - xy: 1913, 989 + xy: 1253, 709 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 lancer-icon-small rotate: false - xy: 2021, 1073 + xy: 1445, 735 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -3688,14 +3688,14 @@ laser-drill-icon-large index: -1 laser-drill-icon-medium rotate: false - xy: 1947, 1015 + xy: 1287, 887 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 laser-drill-icon-small rotate: false - xy: 553, 736 + xy: 1471, 735 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -3709,14 +3709,14 @@ launch-pad-icon-large index: -1 launch-pad-icon-medium rotate: false - xy: 1981, 1015 + xy: 1287, 853 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 launch-pad-icon-small rotate: false - xy: 579, 736 + xy: 1497, 735 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -3730,14 +3730,14 @@ liquid-junction-icon-large index: -1 liquid-junction-icon-small rotate: false - xy: 559, 710 + xy: 1523, 735 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 liquid-router-icon-full rotate: false - xy: 1573, 964 + xy: 1287, 683 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -3751,7 +3751,7 @@ liquid-router-icon-large index: -1 liquid-router-icon-small rotate: false - xy: 559, 684 + xy: 1549, 735 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -3765,7 +3765,7 @@ liquid-source-icon-large index: -1 liquid-source-icon-small rotate: false - xy: 585, 710 + xy: 1444, 709 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -3786,14 +3786,14 @@ liquid-tank-icon-large index: -1 liquid-tank-icon-medium rotate: false - xy: 1743, 964 + xy: 495, 386 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-tank-icon-small rotate: false - xy: 585, 684 + xy: 1470, 709 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -3807,7 +3807,7 @@ magmarock-icon-large index: -1 magmarock-icon-small rotate: false - xy: 559, 658 + xy: 1496, 709 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -3835,14 +3835,14 @@ mass-driver-icon-large index: -1 mass-driver-icon-medium rotate: false - xy: 1811, 964 + xy: 495, 318 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 mass-driver-icon-small rotate: false - xy: 585, 658 + xy: 1522, 709 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -3919,14 +3919,14 @@ mechanical-drill-icon-large index: -1 mechanical-drill-icon-medium rotate: false - xy: 1845, 964 + xy: 495, 284 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 mechanical-drill-icon-small rotate: false - xy: 556, 632 + xy: 1548, 709 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -3940,7 +3940,7 @@ mechanical-pump-icon-large index: -1 mechanical-pump-icon-small rotate: false - xy: 556, 606 + xy: 1784, 828 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -3968,14 +3968,14 @@ meltdown-icon-large index: -1 meltdown-icon-medium rotate: false - xy: 1913, 955 + xy: 495, 216 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 meltdown-icon-small rotate: false - xy: 582, 632 + xy: 1418, 693 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -3989,7 +3989,7 @@ melter-icon-large index: -1 melter-icon-small rotate: false - xy: 582, 606 + xy: 1415, 667 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4003,14 +4003,14 @@ mend-projector-icon-large index: -1 mend-projector-icon-medium rotate: false - xy: 1981, 947 + xy: 495, 148 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 mend-projector-icon-small rotate: false - xy: 556, 580 + xy: 1419, 641 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4024,7 +4024,7 @@ metal-floor-2-icon-large index: -1 metal-floor-2-icon-small rotate: false - xy: 582, 580 + xy: 1444, 683 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4038,7 +4038,7 @@ metal-floor-3-icon-large index: -1 metal-floor-3-icon-small rotate: false - xy: 1502, 802 + xy: 1470, 683 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4052,7 +4052,7 @@ metal-floor-5-icon-large index: -1 metal-floor-5-icon-small rotate: false - xy: 1528, 802 + xy: 1496, 683 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4066,7 +4066,7 @@ metal-floor-damaged-icon-large index: -1 metal-floor-damaged-icon-small rotate: false - xy: 1554, 802 + xy: 1522, 683 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4080,7 +4080,7 @@ metal-floor-icon-large index: -1 metal-floor-icon-small rotate: false - xy: 1580, 802 + xy: 1548, 683 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4094,7 +4094,7 @@ moss-icon-large index: -1 moss-icon-small rotate: false - xy: 1606, 802 + xy: 1419, 615 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4108,14 +4108,14 @@ multi-press-icon-large index: -1 multi-press-icon-medium rotate: false - xy: 2015, 947 + xy: 495, 114 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 multi-press-icon-small rotate: false - xy: 1632, 802 + xy: 1410, 589 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4136,14 +4136,14 @@ oil-extractor-icon-large index: -1 oil-extractor-icon-medium rotate: false - xy: 1267, 963 + xy: 495, 80 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 oil-extractor-icon-small rotate: false - xy: 1658, 802 + xy: 1410, 563 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4157,28 +4157,28 @@ omega-mech-pad-icon-large index: -1 omega-mech-pad-icon-medium rotate: false - xy: 1301, 962 + xy: 1825, 1100 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 omega-mech-pad-icon-small rotate: false - xy: 1684, 802 + xy: 1576, 823 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 ore-coal-icon-full rotate: false - xy: 1335, 962 + xy: 1859, 1100 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-coal-icon-medium rotate: false - xy: 1335, 962 + xy: 1859, 1100 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4192,21 +4192,21 @@ ore-coal-icon-large index: -1 ore-coal-icon-small rotate: false - xy: 1710, 802 + xy: 1602, 823 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 ore-copper-icon-full rotate: false - xy: 1369, 962 + xy: 1825, 1066 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-copper-icon-medium rotate: false - xy: 1369, 962 + xy: 1825, 1066 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4220,21 +4220,21 @@ ore-copper-icon-large index: -1 ore-copper-icon-small rotate: false - xy: 1736, 802 + xy: 1628, 823 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 ore-lead-icon-full rotate: false - xy: 1403, 943 + xy: 1859, 1066 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-lead-icon-medium rotate: false - xy: 1403, 943 + xy: 1859, 1066 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4248,21 +4248,21 @@ ore-lead-icon-large index: -1 ore-lead-icon-small rotate: false - xy: 1762, 802 + xy: 1575, 797 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 ore-scrap-icon-full rotate: false - xy: 1437, 943 + xy: 1147, 719 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-scrap-icon-medium rotate: false - xy: 1437, 943 + xy: 1147, 719 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4276,21 +4276,21 @@ ore-scrap-icon-large index: -1 ore-scrap-icon-small rotate: false - xy: 1788, 802 + xy: 1575, 771 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 ore-thorium-icon-full rotate: false - xy: 1471, 951 + xy: 1146, 685 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-thorium-icon-medium rotate: false - xy: 1471, 951 + xy: 1146, 685 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4304,21 +4304,21 @@ ore-thorium-icon-large index: -1 ore-thorium-icon-small rotate: false - xy: 1814, 802 + xy: 1601, 797 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 ore-titanium-icon-full rotate: false - xy: 1505, 951 + xy: 1893, 1095 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-titanium-icon-medium rotate: false - xy: 1505, 951 + xy: 1893, 1095 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4332,7 +4332,7 @@ ore-titanium-icon-large index: -1 ore-titanium-icon-small rotate: false - xy: 1244, 637 + xy: 1575, 745 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4346,14 +4346,14 @@ overdrive-projector-icon-large index: -1 overdrive-projector-icon-medium rotate: false - xy: 1539, 930 + xy: 1893, 1061 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 overdrive-projector-icon-small rotate: false - xy: 1270, 636 + xy: 1601, 771 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4367,7 +4367,7 @@ overflow-gate-icon-large index: -1 overflow-gate-icon-small rotate: false - xy: 1296, 636 + xy: 1627, 797 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4388,14 +4388,14 @@ phantom-factory-icon-large index: -1 phantom-factory-icon-medium rotate: false - xy: 1607, 930 + xy: 1180, 659 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phantom-factory-icon-small rotate: false - xy: 1322, 636 + xy: 1601, 745 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4409,7 +4409,7 @@ phase-conduit-icon-large index: -1 phase-conduit-icon-small rotate: false - xy: 1502, 776 + xy: 1627, 771 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4423,7 +4423,7 @@ phase-conveyor-icon-large index: -1 phase-conveyor-icon-small rotate: false - xy: 1528, 776 + xy: 1627, 745 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4437,7 +4437,7 @@ phase-wall-icon-large index: -1 phase-wall-icon-small rotate: false - xy: 1554, 776 + xy: 1654, 814 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4451,14 +4451,14 @@ phase-wall-large-icon-large index: -1 phase-wall-large-icon-medium rotate: false - xy: 1947, 913 + xy: 1248, 607 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-wall-large-icon-small rotate: false - xy: 1580, 776 + xy: 1680, 814 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4479,28 +4479,28 @@ phase-weaver-icon-large index: -1 phase-weaver-icon-medium rotate: false - xy: 1981, 913 + xy: 1283, 615 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-weaver-icon-small rotate: false - xy: 1606, 776 + xy: 1706, 814 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 pine-icon-medium rotate: false - xy: 2015, 913 + xy: 1282, 581 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pine-icon-small rotate: false - xy: 1632, 776 + xy: 1732, 814 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4514,14 +4514,14 @@ plastanium-compressor-icon-large index: -1 plastanium-compressor-icon-medium rotate: false - xy: 1151, 855 + xy: 1317, 615 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plastanium-compressor-icon-small rotate: false - xy: 1658, 776 + xy: 1758, 814 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4542,14 +4542,14 @@ pneumatic-drill-icon-large index: -1 pneumatic-drill-icon-medium rotate: false - xy: 1151, 821 + xy: 1316, 581 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pneumatic-drill-icon-small rotate: false - xy: 1684, 776 + xy: 1653, 788 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4563,7 +4563,7 @@ power-node-icon-large index: -1 power-node-icon-small rotate: false - xy: 1710, 776 + xy: 1653, 762 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4577,14 +4577,14 @@ power-node-large-icon-large index: -1 power-node-large-icon-medium rotate: false - xy: 1217, 913 + xy: 519, 730 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 power-node-large-icon-small rotate: false - xy: 1736, 776 + xy: 1679, 788 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4598,7 +4598,7 @@ power-source-icon-large index: -1 power-source-icon-small rotate: false - xy: 1762, 776 + xy: 1679, 762 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4612,14 +4612,14 @@ power-void-icon-large index: -1 power-void-icon-small rotate: false - xy: 1788, 776 + xy: 1705, 788 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 pulse-conduit-icon-full rotate: false - xy: 1251, 895 + xy: 499, 560 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4633,14 +4633,14 @@ pulse-conduit-icon-large index: -1 pulse-conduit-icon-small rotate: false - xy: 1814, 776 + xy: 1705, 762 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 pulverizer-icon-full rotate: false - xy: 1421, 875 + xy: 529, 458 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4654,7 +4654,7 @@ pulverizer-icon-large index: -1 pulverizer-icon-small rotate: false - xy: 554, 554 + xy: 1731, 788 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4668,28 +4668,28 @@ pyratite-mixer-icon-large index: -1 pyratite-mixer-icon-medium rotate: false - xy: 1489, 883 + xy: 529, 390 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pyratite-mixer-icon-small rotate: false - xy: 580, 554 + xy: 1731, 762 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 repair-point rotate: false - xy: 1523, 896 + xy: 529, 356 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 repair-point-icon-full rotate: false - xy: 1591, 896 + xy: 529, 288 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -4703,7 +4703,7 @@ repair-point-icon-large index: -1 repair-point-icon-small rotate: false - xy: 551, 528 + xy: 1757, 788 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4724,14 +4724,14 @@ revenant-factory-icon-large index: -1 revenant-factory-icon-medium rotate: false - xy: 1625, 896 + xy: 529, 254 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 revenant-factory-icon-small rotate: false - xy: 577, 528 + xy: 1757, 762 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4759,14 +4759,28 @@ ripple-icon-large index: -1 ripple-icon-medium rotate: false - xy: 1659, 896 + xy: 529, 220 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ripple-icon-small rotate: false - xy: 555, 502 + xy: 1653, 736 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +rock-icon-medium + rotate: false + xy: 529, 186 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +rock-icon-small + rotate: false + xy: 1679, 736 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4780,7 +4794,7 @@ rocks-icon-large index: -1 rocks-icon-small rotate: false - xy: 555, 476 + xy: 1705, 736 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4794,14 +4808,14 @@ rotary-pump-icon-large index: -1 rotary-pump-icon-medium rotate: false - xy: 1693, 896 + xy: 529, 152 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 rotary-pump-icon-small rotate: false - xy: 555, 450 + xy: 1731, 736 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4815,7 +4829,7 @@ router-icon-large index: -1 router-icon-small rotate: false - xy: 555, 424 + xy: 1757, 736 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4829,14 +4843,14 @@ rtg-generator-icon-large index: -1 rtg-generator-icon-medium rotate: false - xy: 1761, 896 + xy: 529, 84 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 rtg-generator-icon-small rotate: false - xy: 555, 398 + xy: 1784, 802 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4850,7 +4864,7 @@ salt-icon-large index: -1 salt-icon-small rotate: false - xy: 555, 372 + xy: 1783, 776 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4878,14 +4892,14 @@ salvo-icon-large index: -1 salvo-icon-medium rotate: false - xy: 1829, 896 + xy: 529, 16 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 salvo-icon-small rotate: false - xy: 555, 346 + xy: 1783, 750 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4899,7 +4913,7 @@ sand-icon-large index: -1 sand-icon-small rotate: false - xy: 555, 320 + xy: 1783, 724 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4913,7 +4927,7 @@ sand-water-icon-large index: -1 sand-water-icon-small rotate: false - xy: 555, 294 + xy: 1445, 657 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4927,7 +4941,7 @@ sandrocks-icon-large index: -1 sandrocks-icon-small rotate: false - xy: 555, 268 + xy: 1445, 631 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4955,14 +4969,14 @@ scatter-icon-large index: -1 scatter-icon-medium rotate: false - xy: 1523, 862 + xy: 563, 492 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scatter-icon-small rotate: false - xy: 555, 242 + xy: 1471, 657 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4976,14 +4990,14 @@ scrap-wall-gigantic-icon-large index: -1 scrap-wall-gigantic-icon-medium rotate: false - xy: 1693, 862 + xy: 563, 322 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap-wall-gigantic-icon-small rotate: false - xy: 555, 216 + xy: 1471, 631 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -4997,14 +5011,14 @@ scrap-wall-huge-icon-large index: -1 scrap-wall-huge-icon-medium rotate: false - xy: 1727, 862 + xy: 563, 288 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap-wall-huge-icon-small rotate: false - xy: 555, 190 + xy: 1497, 657 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -5018,7 +5032,7 @@ scrap-wall-icon-large index: -1 scrap-wall-icon-small rotate: false - xy: 555, 164 + xy: 1497, 631 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -5032,14 +5046,14 @@ scrap-wall-large-icon-large index: -1 scrap-wall-large-icon-medium rotate: false - xy: 1761, 862 + xy: 563, 254 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap-wall-large-icon-small rotate: false - xy: 555, 138 + xy: 1523, 657 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -5053,14 +5067,14 @@ separator-icon-large index: -1 separator-icon-medium rotate: false - xy: 1829, 862 + xy: 563, 186 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 separator-icon-small rotate: false - xy: 555, 33 + xy: 1549, 620 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -5074,7 +5088,7 @@ shale-boulder-icon-large index: -1 shale-boulder-icon-small rotate: false - xy: 581, 502 + xy: 1445, 605 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -5088,7 +5102,7 @@ shale-icon-large index: -1 shale-icon-small rotate: false - xy: 581, 476 + xy: 1471, 605 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -5102,7 +5116,7 @@ shalerocks-icon-large index: -1 shalerocks-icon-small rotate: false - xy: 581, 450 + xy: 1497, 605 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -5116,7 +5130,7 @@ shock-mine-icon-large index: -1 shock-mine-icon-small rotate: false - xy: 581, 424 + xy: 1436, 579 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -5130,14 +5144,14 @@ silicon-smelter-icon-large index: -1 silicon-smelter-icon-medium rotate: false - xy: 1897, 887 + xy: 563, 84 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 silicon-smelter-icon-small rotate: false - xy: 581, 398 + xy: 1462, 579 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -5151,7 +5165,21 @@ snow-icon-large index: -1 snow-icon-small rotate: false - xy: 581, 372 + xy: 1488, 579 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +snowrock-icon-medium + rotate: false + xy: 563, 16 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +snowrock-icon-small + rotate: false + xy: 1436, 553 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -5165,7 +5193,7 @@ snowrocks-icon-large index: -1 snowrocks-icon-small rotate: false - xy: 581, 346 + xy: 1462, 553 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -5179,7 +5207,7 @@ solar-panel-icon-large index: -1 solar-panel-icon-small rotate: false - xy: 581, 320 + xy: 1488, 553 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -5193,14 +5221,14 @@ solar-panel-large-icon-large index: -1 solar-panel-large-icon-medium rotate: false - xy: 1931, 879 + xy: 1589, 1071 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 solar-panel-large-icon-small rotate: false - xy: 581, 294 + xy: 1575, 719 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -5214,7 +5242,7 @@ sorter-icon-large index: -1 sorter-icon-small rotate: false - xy: 581, 268 + xy: 1601, 719 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -5228,7 +5256,7 @@ spawn-icon-large index: -1 spawn-icon-small rotate: false - xy: 581, 242 + xy: 1627, 719 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -5256,14 +5284,14 @@ spectre-icon-large index: -1 spectre-icon-medium rotate: false - xy: 1965, 845 + xy: 1591, 1003 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spectre-icon-small rotate: false - xy: 581, 216 + xy: 1574, 693 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -5284,14 +5312,14 @@ spirit-factory-icon-large index: -1 spirit-factory-icon-medium rotate: false - xy: 1999, 845 + xy: 1591, 969 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spirit-factory-icon-small rotate: false - xy: 581, 190 + xy: 1600, 693 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -5305,14 +5333,14 @@ spore-cluster-icon-large index: -1 spore-cluster-icon-medium rotate: false - xy: 1523, 828 + xy: 1591, 935 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spore-cluster-icon-small rotate: false - xy: 581, 164 + xy: 1626, 693 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -5326,21 +5354,21 @@ spore-moss-icon-large index: -1 spore-moss-icon-small rotate: false - xy: 581, 138 + xy: 1653, 710 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 spore-pine-icon-medium rotate: false - xy: 1557, 828 + xy: 1625, 1003 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spore-pine-icon-small rotate: false - xy: 581, 112 + xy: 1679, 710 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -5361,84 +5389,98 @@ spore-press-icon-large index: -1 spore-press-icon-medium rotate: false - xy: 1591, 828 + xy: 1625, 969 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spore-press-icon-small rotate: false - xy: 581, 86 + xy: 1705, 710 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -stone-icon-large +sporerocks-icon-large rotate: false xy: 975, 781 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -stone-icon-small +sporerocks-icon-small rotate: false - xy: 581, 60 + xy: 1731, 710 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -surge-tower-icon-large +stone-icon-large rotate: false xy: 1025, 781 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -surge-tower-icon-medium +stone-icon-small rotate: false - xy: 1625, 828 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -surge-tower-icon-small - rotate: false - xy: 581, 34 + xy: 1757, 710 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -surge-wall-icon-large +surge-tower-icon-large rotate: false xy: 874, 731 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 -surge-wall-icon-small +surge-tower-icon-medium rotate: false - xy: 555, 7 + xy: 1625, 935 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +surge-tower-icon-small + rotate: false + xy: 1575, 667 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -surge-wall-large-icon-large +surge-wall-icon-large rotate: false xy: 924, 731 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 +surge-wall-icon-small + rotate: false + xy: 1575, 641 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +surge-wall-large-icon-large + rotate: false + xy: 974, 731 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 surge-wall-large-icon-medium rotate: false - xy: 1693, 828 + xy: 1625, 901 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 surge-wall-large-icon-small rotate: false - xy: 581, 8 + xy: 1601, 667 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -5459,175 +5501,175 @@ swarmer-icon-full index: -1 swarmer-icon-large rotate: false - xy: 1024, 731 + xy: 1075, 1181 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 swarmer-icon-medium rotate: false - xy: 1727, 828 + xy: 1657, 1062 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 swarmer-icon-small rotate: false - xy: 603, 528 + xy: 1601, 641 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 tar-icon-large rotate: false - xy: 1075, 1181 + xy: 1125, 1181 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 tar-icon-small rotate: false - xy: 606, 554 + xy: 1627, 667 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 tau-mech-pad-icon-large rotate: false - xy: 1175, 1181 + xy: 1075, 1081 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 tau-mech-pad-icon-medium rotate: false - xy: 1761, 828 + xy: 1691, 1062 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 tau-mech-pad-icon-small rotate: false - xy: 607, 502 + xy: 1627, 641 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 thermal-generator-icon-large rotate: false - xy: 1075, 1081 + xy: 1125, 1131 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 thermal-generator-icon-medium rotate: false - xy: 1795, 828 + xy: 1725, 1062 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 thermal-generator-icon-small rotate: false - xy: 607, 476 + xy: 1575, 615 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 thermal-pump-icon-large rotate: false - xy: 1125, 1131 + xy: 1225, 1181 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 thermal-pump-icon-medium rotate: false - xy: 1829, 828 + xy: 1659, 1028 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 thermal-pump-icon-small rotate: false - xy: 607, 450 + xy: 1601, 615 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 thorium-reactor-icon-large rotate: false - xy: 1225, 1181 + xy: 1075, 1031 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 thorium-reactor-icon-medium rotate: false - xy: 1863, 819 + xy: 1659, 994 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 thorium-reactor-icon-small rotate: false - xy: 607, 424 + xy: 1627, 615 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 thorium-wall-icon-large rotate: false - xy: 1075, 1031 + xy: 1125, 1081 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 thorium-wall-icon-small rotate: false - xy: 607, 398 + xy: 1783, 698 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 thorium-wall-large-icon-large rotate: false - xy: 1125, 1081 + xy: 1175, 1131 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 thorium-wall-large-icon-medium rotate: false - xy: 1931, 811 + xy: 1659, 960 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 thorium-wall-large-icon-small rotate: false - xy: 607, 372 + xy: 1523, 589 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 thruster-icon-large rotate: false - xy: 1175, 1131 + xy: 1275, 1181 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 thruster-icon-medium rotate: false - xy: 1965, 811 + xy: 1693, 994 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 thruster-icon-small rotate: false - xy: 607, 346 + xy: 1549, 594 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -5641,112 +5683,112 @@ titan-factory-icon-full index: -1 titan-factory-icon-large rotate: false - xy: 1275, 1181 + xy: 1075, 981 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 titan-factory-icon-medium rotate: false - xy: 1999, 811 + xy: 1659, 926 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titan-factory-icon-small rotate: false - xy: 607, 320 + xy: 1575, 589 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 titanium-conveyor-icon-large rotate: false - xy: 1075, 981 + xy: 1125, 1031 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 titanium-conveyor-icon-small rotate: false - xy: 607, 294 + xy: 1601, 589 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 titanium-wall-icon-large rotate: false - xy: 1125, 1031 + xy: 1175, 1081 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 titanium-wall-icon-small rotate: false - xy: 607, 268 + xy: 1627, 589 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 titanium-wall-large-icon-large rotate: false - xy: 1175, 1081 + xy: 1225, 1131 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 titanium-wall-large-icon-medium rotate: false - xy: 495, 318 + xy: 1321, 679 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-wall-large-icon-small rotate: false - xy: 607, 242 + xy: 1514, 563 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 trident-ship-pad-icon-large rotate: false - xy: 1225, 1131 + xy: 1325, 1181 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 trident-ship-pad-icon-medium rotate: false - xy: 495, 250 + xy: 1355, 867 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 trident-ship-pad-icon-small rotate: false - xy: 607, 216 + xy: 1549, 568 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 turbine-generator-icon-large rotate: false - xy: 1325, 1181 + xy: 1075, 931 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 turbine-generator-icon-medium rotate: false - xy: 495, 216 + xy: 1355, 833 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 turbine-generator-icon-small rotate: false - xy: 607, 190 + xy: 1575, 563 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -5760,14 +5802,14 @@ unit-icon-chaos-array index: -1 unit-icon-crawler rotate: false - xy: 1075, 931 + xy: 1125, 981 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 unit-icon-dagger rotate: false - xy: 1125, 981 + xy: 1175, 1031 size: 48, 48 orig: 48, 48 offset: 0, 0 @@ -5802,35 +5844,35 @@ unit-icon-titan index: -1 unloader-icon-large rotate: false - xy: 1175, 1031 + xy: 1225, 1081 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 unloader-icon-small rotate: false - xy: 607, 164 + xy: 1601, 563 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 vault-icon-large rotate: false - xy: 1225, 1081 + xy: 1275, 1131 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 vault-icon-medium rotate: false - xy: 495, 148 + xy: 1355, 765 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 vault-icon-small rotate: false - xy: 607, 138 + xy: 1627, 563 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -5844,35 +5886,35 @@ water-extractor-icon-full index: -1 water-extractor-icon-large rotate: false - xy: 1275, 1131 + xy: 1375, 1181 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 water-extractor-icon-medium rotate: false - xy: 495, 114 + xy: 1355, 731 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 water-extractor-icon-small rotate: false - xy: 607, 112 + xy: 1514, 537 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 water-icon-large rotate: false - xy: 1375, 1181 + xy: 1075, 881 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 water-icon-small rotate: false - xy: 607, 86 + xy: 1540, 542 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -5893,63 +5935,63 @@ wave-icon-full index: -1 wave-icon-large rotate: false - xy: 1075, 881 + xy: 1125, 931 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 wave-icon-medium rotate: false - xy: 495, 80 + xy: 1355, 697 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 wave-icon-small rotate: false - xy: 607, 60 + xy: 1566, 537 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 white-tree-dead-icon-large rotate: false - xy: 1125, 931 + xy: 1175, 981 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 white-tree-dead-icon-medium rotate: false - xy: 485, 730 + xy: 1355, 663 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 white-tree-dead-icon-small rotate: false - xy: 607, 34 + xy: 1592, 537 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 white-tree-icon-large rotate: false - xy: 1175, 981 + xy: 1225, 1031 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 white-tree-icon-medium rotate: false - xy: 519, 730 + xy: 1351, 629 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 white-tree-icon-small rotate: false - xy: 607, 8 + xy: 1618, 537 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -5963,168 +6005,168 @@ wraith-factory-icon-full index: -1 wraith-factory-icon-large rotate: false - xy: 1275, 1081 + xy: 1325, 1131 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 wraith-factory-icon-medium rotate: false - xy: 499, 696 + xy: 1385, 629 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 wraith-factory-icon-small rotate: false - xy: 629, 528 + xy: 1540, 516 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 item-biomatter rotate: false - xy: 1573, 1032 + xy: 1489, 985 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-blast-compound rotate: false - xy: 1539, 998 + xy: 1523, 985 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-coal rotate: false - xy: 1607, 1032 + xy: 1557, 985 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-copper rotate: false - xy: 1573, 998 + xy: 1421, 951 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-graphite rotate: false - xy: 1641, 1032 + xy: 1455, 951 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-lead rotate: false - xy: 1607, 998 + xy: 1489, 951 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-metaglass rotate: false - xy: 1675, 1032 + xy: 1523, 951 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-phase-fabric rotate: false - xy: 1641, 998 + xy: 1557, 951 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-plastanium rotate: false - xy: 1709, 1032 + xy: 1319, 937 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-pyratite rotate: false - xy: 1675, 998 + xy: 1353, 935 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-sand rotate: false - xy: 1743, 1032 + xy: 1387, 935 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-scrap rotate: false - xy: 1709, 998 + xy: 1421, 917 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-silicon rotate: false - xy: 1777, 1032 + xy: 1455, 917 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-spore-pod rotate: false - xy: 1811, 1032 + xy: 1523, 917 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-surge-alloy rotate: false - xy: 1777, 998 + xy: 1557, 917 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-thorium rotate: false - xy: 1845, 1032 + xy: 1253, 879 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-titanium rotate: false - xy: 1811, 998 + xy: 1253, 845 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-cryofluid rotate: false - xy: 1947, 981 + xy: 1287, 785 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-oil rotate: false - xy: 2015, 981 + xy: 1287, 717 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-slag rotate: false - xy: 1675, 964 + xy: 495, 454 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-water rotate: false - xy: 1777, 964 + xy: 495, 352 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6208,14 +6250,14 @@ tau-mech index: -1 tau-mech-base rotate: false - xy: 1125, 1181 + xy: 1075, 1131 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 tau-mech-leg rotate: false - xy: 1075, 1131 + xy: 1175, 1181 size: 48, 48 orig: 48, 48 offset: 0, 0 @@ -6257,7 +6299,7 @@ trident-ship index: -1 blank rotate: false - xy: 1245, 770 + xy: 1415, 712 size: 1, 1 orig: 1, 1 offset: 0, 0 @@ -6271,7 +6313,7 @@ circle index: -1 clear rotate: false - xy: 1245, 767 + xy: 1441, 690 size: 1, 1 orig: 1, 1 offset: 0, 0 @@ -6285,7 +6327,7 @@ shape-3 index: -1 bar rotate: false - xy: 1219, 773 + xy: 1851, 1028 size: 27, 36 split: 9, 9, 9, 9 orig: 27, 36 @@ -6293,7 +6335,7 @@ bar index: -1 bar-top rotate: false - xy: 499, 578 + xy: 1389, 715 size: 27, 36 split: 9, 10, 9, 10 orig: 27, 36 @@ -6301,7 +6343,7 @@ bar-top index: -1 button rotate: false - xy: 1741, 1202 + xy: 1825, 1202 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -6341,7 +6383,7 @@ button-edge-2 index: -1 button-edge-3 rotate: false - xy: 1551, 1202 + xy: 1635, 1202 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -6357,7 +6399,7 @@ button-edge-4 index: -1 button-over rotate: false - xy: 1589, 1202 + xy: 1673, 1202 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -6365,7 +6407,7 @@ button-over index: -1 button-right rotate: false - xy: 1703, 1202 + xy: 1787, 1202 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -6373,7 +6415,7 @@ button-right index: -1 button-right-down rotate: false - xy: 1627, 1202 + xy: 1711, 1202 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -6381,7 +6423,7 @@ button-right-down index: -1 button-right-over rotate: false - xy: 1665, 1202 + xy: 1749, 1202 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -6397,28 +6439,28 @@ button-select index: -1 check-off rotate: false - xy: 1653, 1168 + xy: 1113, 745 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-on rotate: false - xy: 1687, 1168 + xy: 1112, 711 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-on-over rotate: false - xy: 1721, 1168 + xy: 1167, 897 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 check-over rotate: false - xy: 1755, 1168 + xy: 1217, 947 size: 32, 32 orig: 32, 32 offset: 0, 0 @@ -6432,7 +6474,7 @@ clear index: -1 content-background rotate: false - xy: 1855, 1202 + xy: 261, 1372 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -6440,7 +6482,7 @@ content-background index: -1 content-background-locked rotate: false - xy: 1779, 1202 + xy: 1863, 1202 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -6448,7 +6490,7 @@ content-background-locked index: -1 content-background-over rotate: false - xy: 1817, 1202 + xy: 1901, 1202 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -6456,7 +6498,7 @@ content-background-over index: -1 cursor rotate: false - xy: 553, 730 + xy: 317, 1633 size: 4, 4 orig: 4, 4 offset: 0, 0 @@ -6470,77 +6512,77 @@ discord-banner index: -1 empty-sector rotate: false - xy: 1369, 996 + xy: 1219, 871 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 icon-crafting rotate: false - xy: 1219, 729 + xy: 1091, 1237 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-defense rotate: false - xy: 2021, 1055 + xy: 1906, 1043 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-distribution rotate: false - xy: 605, 744 + xy: 567, 533 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-effect rotate: false - xy: 1502, 831 + xy: 1566, 519 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-liquid rotate: false - xy: 633, 420 + xy: 2030, 1849 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-power rotate: false - xy: 633, 258 + xy: 121, 7 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-production rotate: false - xy: 633, 240 + xy: 139, 7 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-turret rotate: false - xy: 633, 78 + xy: 1978, 1031 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-units rotate: false - xy: 633, 42 + xy: 2014, 1031 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-upgrade rotate: false - xy: 1840, 774 + xy: 1810, 862 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -6582,56 +6624,56 @@ icon-admin-small index: -1 icon-areaDelete rotate: false - xy: 599, 1420 + xy: 1927, 1117 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-arrow rotate: false - xy: 1369, 876 + xy: 649, 1356 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-arrow-16 rotate: false - xy: 1369, 876 + xy: 649, 1356 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-arrow-down rotate: false - xy: 333, 74 + xy: 599, 1420 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-arrow-left rotate: false - xy: 1087, 1679 + xy: 333, 74 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-arrow-right rotate: false - xy: 568, 1949 + xy: 1939, 1117 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-arrow-up rotate: false - xy: 1476, 863 + xy: 1087, 1679 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-back rotate: false - xy: 649, 1356 + xy: 295, 721 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -6645,91 +6687,91 @@ icon-ban index: -1 icon-break rotate: false - xy: 295, 721 + xy: 564, 1771 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-cancel rotate: false - xy: 564, 1771 + xy: 299, 1218 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-cancel-2 rotate: false - xy: 528, 574 + xy: 1576, 849 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 icon-chat rotate: false - xy: 329, 2 + xy: 568, 1949 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-check rotate: false - xy: 299, 1218 + xy: 1765, 1146 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-check-2 rotate: false - xy: 525, 548 + xy: 1602, 849 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 icon-copy rotate: false - xy: 1091, 1237 + xy: 553, 746 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-cursor rotate: false - xy: 989, 1663 + xy: 1351, 617 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-database rotate: false - xy: 1387, 946 + xy: 1403, 1021 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-database-small rotate: false - xy: 568, 1937 + xy: 1576, 905 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-dev-builds rotate: false - xy: 1523, 935 + xy: 1589, 1105 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-discord rotate: false - xy: 2033, 897 + xy: 1605, 1105 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-donate rotate: false - xy: 2027, 1151 + xy: 1765, 1130 size: 14, 14 orig: 14, 14 offset: 0, 0 @@ -6750,84 +6792,84 @@ icon-editor index: -1 icon-egg rotate: false - xy: 2033, 881 + xy: 313, 53 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-elevation rotate: false - xy: 1840, 810 + xy: 667, 1356 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-eraser rotate: false - xy: 633, 510 + xy: 1584, 519 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-exit rotate: false - xy: 2033, 865 + xy: 625, 1218 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-file rotate: false - xy: 667, 1356 + xy: 1602, 519 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-file-image rotate: false - xy: 1840, 792 + xy: 1620, 519 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-file-text rotate: false - xy: 2033, 849 + xy: 625, 1202 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-fill rotate: false - xy: 633, 492 + xy: 585, 533 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-floppy rotate: false - xy: 2033, 833 + xy: 1367, 1089 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-floppy-16 rotate: false - xy: 633, 474 + xy: 2030, 1903 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-folder rotate: false - xy: 2033, 817 + xy: 1369, 1039 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-folder-parent rotate: false - xy: 313, 53 + xy: 1303, 947 size: 14, 14 orig: 14, 14 offset: 0, 0 @@ -6841,168 +6883,168 @@ icon-generated index: -1 icon-github rotate: false - xy: 625, 1218 + xy: 1303, 931 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-google-play rotate: false - xy: 625, 1202 + xy: 2033, 1169 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-grid rotate: false - xy: 633, 456 + xy: 2030, 1885 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-hold rotate: false - xy: 1476, 851 + xy: 553, 734 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-holdDelete rotate: false - xy: 341, 2 + xy: 329, 2 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-home rotate: false - xy: 1251, 973 + xy: 2033, 1153 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-host rotate: false - xy: 1201, 923 + xy: 2025, 1117 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-info rotate: false - xy: 1201, 907 + xy: 303, 1418 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-itch.io rotate: false - xy: 2033, 801 + xy: 303, 1402 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-item rotate: false - xy: 568, 1925 + xy: 515, 10 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-items-none rotate: false - xy: 1251, 963 + xy: 77, 24 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-line rotate: false - xy: 633, 438 + xy: 2030, 1867 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-link rotate: false - xy: 303, 1418 + xy: 1403, 1005 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-liquid-small rotate: false - xy: 353, 2 + xy: 1877, 951 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-load rotate: false - xy: 303, 1402 + xy: 303, 1386 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-load-image rotate: false - xy: 633, 402 + xy: 571, 744 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-load-map rotate: false - xy: 633, 384 + xy: 589, 744 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-loading rotate: false - xy: 633, 366 + xy: 567, 721 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-locked rotate: false - xy: 633, 348 + xy: 585, 721 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-logic rotate: false - xy: 365, 2 + xy: 989, 1663 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-map rotate: false - xy: 303, 1386 + xy: 607, 746 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-menu rotate: false - xy: 377, 2 + xy: 2029, 1105 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-menu-large rotate: false - xy: 633, 330 + xy: 1644, 545 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-missing rotate: false - xy: 389, 2 + xy: 1653, 618 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -7016,308 +7058,308 @@ icon-mission-background index: -1 icon-mission-battle rotate: false - xy: 401, 2 + xy: 1669, 634 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-mission-defense rotate: false - xy: 413, 2 + xy: 1685, 650 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-mission-done rotate: false - xy: 425, 2 + xy: 1701, 666 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-none rotate: false - xy: 437, 2 + xy: 1717, 682 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-paste rotate: false - xy: 633, 312 + xy: 2025, 1133 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-pause rotate: false - xy: 449, 2 + xy: 568, 1937 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-pencil rotate: false - xy: 633, 294 + xy: 479, 4 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-pencil-small rotate: false - xy: 1352, 776 + xy: 1652, 694 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-pick rotate: false - xy: 633, 276 + xy: 497, 4 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-play rotate: false - xy: 461, 2 + xy: 1363, 617 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-play-2 rotate: false - xy: 1984, 795 + xy: 1668, 694 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-play-custom rotate: false - xy: 2000, 795 + xy: 1684, 694 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-players rotate: false - xy: 564, 1759 + xy: 341, 2 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-power-requirement rotate: false - xy: 1471, 985 + xy: 1353, 969 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 icon-power-small rotate: false - xy: 1368, 758 + xy: 2029, 1093 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-quit rotate: false - xy: 2016, 795 + xy: 1700, 694 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-redo rotate: false - xy: 633, 222 + xy: 157, 7 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-refresh rotate: false - xy: 129, 9 + xy: 1716, 694 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-rename rotate: false - xy: 145, 9 + xy: 1732, 694 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-resize rotate: false - xy: 633, 204 + xy: 175, 7 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-rotate rotate: false - xy: 161, 9 + xy: 1748, 694 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-rotate-arrow rotate: false - xy: 177, 9 + xy: 1764, 694 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-rotate-left rotate: false - xy: 193, 9 + xy: 1653, 678 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-rotate-right rotate: false - xy: 209, 9 + xy: 1653, 662 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-save rotate: false - xy: 299, 1202 + xy: 1669, 678 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-save-image rotate: false - xy: 633, 186 + xy: 193, 7 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-save-map rotate: false - xy: 633, 168 + xy: 211, 7 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-settings rotate: false - xy: 1858, 771 + xy: 1653, 606 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-spray rotate: false - xy: 633, 150 + xy: 1906, 1025 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-terrain rotate: false - xy: 633, 132 + xy: 1924, 1031 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-tools rotate: false - xy: 1930, 777 + xy: 1653, 646 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-touch rotate: false - xy: 1870, 771 + xy: 1729, 682 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-touchDelete rotate: false - xy: 1882, 771 + xy: 568, 1925 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-trash rotate: false - xy: 1946, 777 + xy: 1669, 662 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-trash-16 rotate: false - xy: 633, 114 + xy: 1942, 1031 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-tree rotate: false - xy: 633, 96 + xy: 1960, 1031 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-tree-locked rotate: false - xy: 1505, 1019 + xy: 1387, 969 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 icon-trello rotate: false - xy: 1962, 777 + xy: 1685, 678 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-tutorial rotate: false - xy: 299, 1370 + xy: 1653, 630 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-undo rotate: false - xy: 633, 60 + xy: 1996, 1031 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-unlocked rotate: false - xy: 633, 24 + xy: 1644, 527 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-unlocks rotate: false - xy: 1352, 760 + xy: 1669, 646 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-wiki rotate: false - xy: 1368, 770 + xy: 1685, 662 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-zone rotate: false - xy: 525, 522 + xy: 1628, 849 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -7331,14 +7373,14 @@ icon-zone-locked index: -1 icon-zoom rotate: false - xy: 633, 6 + xy: 1828, 868 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-zoom-small rotate: false - xy: 1349, 744 + xy: 1701, 678 size: 14, 14 orig: 14, 14 offset: 0, 0 @@ -7352,7 +7394,7 @@ info-banner index: -1 inventory rotate: false - xy: 529, 402 + xy: 1419, 745 size: 24, 40 split: 10, 10, 10, 14 orig: 24, 40 @@ -7367,7 +7409,7 @@ logotext index: -1 pane rotate: false - xy: 1325, 1068 + xy: 1673, 1173 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -7375,7 +7417,7 @@ pane index: -1 pane-2 rotate: false - xy: 261, 1372 + xy: 1635, 1173 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -7383,7 +7425,7 @@ pane-2 index: -1 scroll rotate: false - xy: 555, 59 + xy: 1549, 646 size: 24, 35 split: 10, 10, 6, 5 orig: 24, 35 @@ -7407,7 +7449,7 @@ scroll-knob-horizontal-black index: -1 scroll-knob-vertical-black rotate: false - xy: 555, 96 + xy: 1523, 615 size: 24, 40 split: 10, 10, 6, 10 orig: 24, 40 @@ -7415,56 +7457,56 @@ scroll-knob-vertical-black index: -1 sector-select rotate: false - xy: 1795, 862 + xy: 563, 220 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 selection rotate: false - xy: 530, 693 + xy: 2046, 2020 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 slider rotate: false - xy: 1395, 802 + xy: 1924, 1051 size: 1, 8 orig: 1, 8 offset: 0, 0 index: -1 slider-knob rotate: false - xy: 499, 656 + xy: 1389, 895 size: 29, 38 orig: 29, 38 offset: 0, 0 index: -1 slider-knob-down rotate: false - xy: 499, 616 + xy: 1389, 855 size: 29, 38 orig: 29, 38 offset: 0, 0 index: -1 slider-knob-over rotate: false - xy: 499, 616 + xy: 1389, 855 size: 29, 38 orig: 29, 38 offset: 0, 0 index: -1 slider-vertical rotate: false - xy: 87, 34 + xy: 121, 34 size: 8, 1 orig: 8, 1 offset: 0, 0 index: -1 underline rotate: false - xy: 1075, 768 + xy: 1825, 1173 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -7472,7 +7514,7 @@ underline index: -1 underline-2 rotate: false - xy: 1355, 1030 + xy: 1787, 1173 size: 36, 27 split: 12, 12, 12, 12 orig: 36, 27 @@ -7487,7 +7529,7 @@ white index: -1 window-empty rotate: false - xy: 1369, 812 + xy: 1791, 906 size: 27, 61 split: 8, 8, 44, 11 orig: 27, 61 @@ -7691,7 +7733,7 @@ titan-leg index: -1 wraith rotate: false - xy: 1225, 1031 + xy: 1275, 1081 size: 48, 48 orig: 48, 48 offset: 0, 0 @@ -7803,7 +7845,7 @@ shockgun-equip index: -1 swarmer-equip rotate: false - xy: 974, 731 + xy: 1024, 731 size: 48, 48 orig: 48, 48 offset: 0, 0 @@ -7816,1694 +7858,1715 @@ filter: Nearest,Nearest repeat: none alloy-smelter-icon-editor rotate: false - xy: 905, 269 + xy: 905, 271 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 alpha-dart-mech-pad-icon-editor rotate: false - xy: 1395, 333 + xy: 1395, 335 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 arc-icon-editor rotate: false - xy: 2015, 463 + xy: 2015, 465 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 battery-icon-editor rotate: false - xy: 2015, 429 + xy: 2015, 431 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 battery-large-icon-editor rotate: false - xy: 1035, 399 + xy: 1035, 401 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 blast-drill-icon-editor rotate: false - xy: 645, 367 + xy: 645, 369 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 blast-mixer-icon-editor rotate: false - xy: 1461, 333 + xy: 1461, 335 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 block-border-editor rotate: false - xy: 2015, 395 + xy: 2015, 397 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-conduit-icon-editor rotate: false - xy: 1819, 191 + xy: 1869, 193 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 bridge-conveyor-icon-editor rotate: false - xy: 1861, 233 + xy: 1911, 235 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 char-icon-editor rotate: false - xy: 1895, 233 + xy: 1945, 235 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-char1 rotate: false - xy: 1895, 233 + xy: 1945, 235 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 clear-editor rotate: false - xy: 645, 234 + xy: 645, 236 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 cliffs-icon-editor rotate: false - xy: 1929, 233 + xy: 945, 41 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 combustion-generator-icon-editor rotate: false - xy: 945, 39 + xy: 979, 41 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 conduit-icon-editor rotate: false - xy: 979, 39 + xy: 1109, 71 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 container-icon-editor rotate: false - xy: 1527, 333 + xy: 1527, 335 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 conveyor-icon-editor rotate: false - xy: 1109, 69 + xy: 1143, 71 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 copper-wall-icon-editor rotate: false - xy: 1143, 69 + xy: 1177, 71 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 copper-wall-large-icon-editor rotate: false - xy: 1593, 333 + xy: 1593, 335 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 core-foundation-icon-editor rotate: false - xy: 163, 45 + xy: 163, 47 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 core-nucleus-icon-editor rotate: false - xy: 1, 13 + xy: 1, 15 size: 160, 160 orig: 160, 160 offset: 0, 0 index: -1 core-shard-icon-editor rotate: false - xy: 1133, 399 + xy: 1133, 401 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 craters-icon-editor rotate: false - xy: 1177, 69 + xy: 1211, 71 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-craters1 rotate: false - xy: 1177, 69 + xy: 1211, 71 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 crawler-factory-icon-editor rotate: false - xy: 1659, 333 + xy: 1659, 335 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cryofluidmixer-icon-editor rotate: false - xy: 1725, 333 + xy: 1725, 335 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cultivator-icon-editor rotate: false - xy: 1791, 333 + xy: 1791, 335 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 cyclone-icon-editor rotate: false - xy: 1231, 399 + xy: 1231, 401 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 dagger-factory-icon-editor rotate: false - xy: 1857, 333 + xy: 1857, 335 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 deepwater-icon-editor rotate: false - xy: 1211, 69 + xy: 1245, 71 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-deepwater rotate: false - xy: 1211, 69 + xy: 1245, 71 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 delta-mech-pad-icon-editor rotate: false - xy: 1923, 333 + xy: 1923, 335 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 differential-generator-icon-editor rotate: false - xy: 1329, 399 + xy: 1329, 401 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 distributor-icon-editor rotate: false - xy: 1043, 203 + xy: 1043, 205 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 door-icon-editor rotate: false - xy: 1245, 69 + xy: 1279, 71 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 door-large-icon-editor rotate: false - xy: 1043, 137 + xy: 1043, 139 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 dunerocks-icon-editor rotate: false - xy: 1279, 69 + xy: 1313, 71 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 duo-icon-editor rotate: false - xy: 1313, 69 + xy: 163, 13 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-char2 rotate: false - xy: 163, 11 + xy: 197, 13 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-char3 rotate: false - xy: 197, 11 + xy: 231, 13 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-clear rotate: false - xy: 1803, 155 + xy: 1871, 147 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 editor-craters2 rotate: false - xy: 231, 11 + xy: 265, 13 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-craters3 rotate: false - xy: 265, 11 + xy: 299, 13 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-craters4 rotate: false - xy: 299, 11 + xy: 333, 13 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-craters5 rotate: false - xy: 333, 11 + xy: 367, 13 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-stone1 rotate: false - xy: 333, 11 + xy: 367, 13 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 stone-icon-editor rotate: false - xy: 333, 11 + xy: 367, 13 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-craters6 rotate: false - xy: 367, 11 + xy: 401, 13 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-stone2 rotate: false - xy: 367, 11 + xy: 401, 13 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-grass1 rotate: false - xy: 401, 11 + xy: 435, 13 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 grass-icon-editor rotate: false - xy: 401, 11 + xy: 435, 13 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-grass2 rotate: false - xy: 435, 11 + xy: 469, 13 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-grass3 rotate: false - xy: 469, 11 + xy: 503, 13 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-holostone1 rotate: false - xy: 503, 11 + xy: 1373, 103 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 holostone-icon-editor rotate: false - xy: 503, 11 + xy: 1373, 103 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-holostone2 rotate: false - xy: 1373, 101 + xy: 1407, 103 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-holostone3 rotate: false - xy: 1407, 101 + xy: 1441, 103 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-hotrock1 rotate: false - xy: 1441, 101 + xy: 1475, 103 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 hotrock-icon-editor rotate: false - xy: 1441, 101 + xy: 1475, 103 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-hotrock2 rotate: false - xy: 1475, 101 + xy: 1509, 103 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-hotrock3 rotate: false - xy: 1509, 101 + xy: 1543, 103 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ice-snow1 rotate: false - xy: 1645, 101 + xy: 1679, 103 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice-snow-icon-editor rotate: false - xy: 1645, 101 + xy: 1679, 103 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ice-snow2 rotate: false - xy: 1679, 101 + xy: 1713, 103 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ice-snow3 rotate: false - xy: 1713, 101 + xy: 1769, 135 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ice1 rotate: false - xy: 1543, 101 + xy: 1577, 103 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice-icon-editor rotate: false - xy: 1543, 101 + xy: 1577, 103 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ice2 rotate: false - xy: 1577, 101 + xy: 1611, 103 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ice3 rotate: false - xy: 1611, 101 + xy: 1645, 103 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ignarock1 rotate: false - xy: 1769, 133 + xy: 1803, 135 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ignarock-icon-editor rotate: false - xy: 1769, 133 + xy: 1803, 135 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ignarock2 rotate: false - xy: 1963, 233 + xy: 1837, 135 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ignarock3 rotate: false - xy: 1819, 157 + xy: 1979, 235 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-magmarock1 rotate: false - xy: 1747, 99 + xy: 1747, 101 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 magmarock-icon-editor rotate: false - xy: 1747, 99 + xy: 1747, 101 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-magmarock2 rotate: false - xy: 1781, 99 + xy: 1781, 101 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-magmarock3 rotate: false - xy: 1853, 191 + xy: 1815, 101 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-metal-floor rotate: false - xy: 1853, 157 + xy: 1849, 101 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-metal-floor-damaged5 rotate: false - xy: 1853, 157 + xy: 1849, 101 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-icon-editor rotate: false - xy: 1853, 157 + xy: 1849, 101 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-metal-floor-2 rotate: false - xy: 1887, 199 + xy: 1903, 193 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-2-icon-editor rotate: false - xy: 1887, 199 + xy: 1903, 193 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-metal-floor-3 rotate: false - xy: 1887, 165 + xy: 1937, 201 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-3-icon-editor rotate: false - xy: 1887, 165 + xy: 1937, 201 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-metal-floor-5 rotate: false - xy: 1921, 199 + xy: 1971, 201 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-5-icon-editor rotate: false - xy: 1921, 199 + xy: 1971, 201 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-metal-floor-damaged1 rotate: false - xy: 1921, 165 + xy: 1871, 159 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-damaged-icon-editor rotate: false - xy: 1921, 165 + xy: 1871, 159 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-metal-floor-damaged2 rotate: false - xy: 1955, 199 + xy: 1905, 159 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-metal-floor-damaged3 rotate: false - xy: 1955, 165 + xy: 1939, 167 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-metal-floor-damaged4 rotate: false - xy: 1989, 361 + xy: 1973, 167 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-metal-floor-damaged6 rotate: false - xy: 1989, 327 + xy: 1883, 125 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-moss1 rotate: false - xy: 1989, 293 + xy: 1883, 91 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 moss-icon-editor rotate: false - xy: 1989, 293 + xy: 1883, 91 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-moss2 rotate: false - xy: 1887, 131 + xy: 1917, 125 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-moss3 rotate: false - xy: 1921, 131 + xy: 1917, 91 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-coal1 rotate: false - xy: 1955, 131 + xy: 1951, 133 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-coal2 rotate: false - xy: 1989, 199 + xy: 1951, 99 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-coal3 rotate: false - xy: 1989, 165 + xy: 1985, 133 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-copper1 rotate: false - xy: 1989, 131 + xy: 1985, 99 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-copper2 rotate: false - xy: 1347, 67 + xy: 2005, 201 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-copper3 rotate: false - xy: 1381, 67 + xy: 2007, 167 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-lead1 rotate: false - xy: 1415, 67 + xy: 1989, 363 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-lead2 rotate: false - xy: 1449, 67 + xy: 1989, 329 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-lead3 rotate: false - xy: 1483, 67 + xy: 1989, 295 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-scrap1 rotate: false - xy: 1517, 67 + xy: 1951, 65 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-scrap2 rotate: false - xy: 1551, 67 + xy: 1985, 65 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-scrap3 rotate: false - xy: 1585, 67 + xy: 1347, 69 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-thorium1 rotate: false - xy: 1619, 67 + xy: 1381, 69 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-thorium2 rotate: false - xy: 1653, 67 + xy: 1415, 69 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-thorium3 rotate: false - xy: 1687, 67 + xy: 1449, 69 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-titanium1 rotate: false - xy: 1815, 123 + xy: 1483, 69 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-titanium2 rotate: false - xy: 1849, 123 + xy: 1517, 69 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-ore-titanium3 rotate: false - xy: 1815, 89 + xy: 1551, 69 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-salt rotate: false - xy: 1849, 89 + xy: 1585, 69 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 salt-icon-editor rotate: false - xy: 1849, 89 + xy: 1585, 69 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-sand-water rotate: false - xy: 1985, 97 + xy: 1721, 67 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sand-water-icon-editor rotate: false - xy: 1985, 97 + xy: 1721, 67 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-sand1 rotate: false - xy: 1883, 97 + xy: 1619, 69 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sand-icon-editor rotate: false - xy: 1883, 97 + xy: 1619, 69 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-sand2 rotate: false - xy: 1917, 97 + xy: 1653, 69 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-sand3 rotate: false - xy: 1951, 97 + xy: 1687, 69 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-shale1 rotate: false - xy: 1883, 63 + xy: 1755, 67 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shale-icon-editor rotate: false - xy: 1883, 63 + xy: 1755, 67 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-shale2 rotate: false - xy: 1917, 63 + xy: 1789, 67 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-shale3 rotate: false - xy: 1951, 63 + xy: 1823, 67 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-snow1 rotate: false - xy: 1985, 63 + xy: 1013, 39 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 snow-icon-editor rotate: false - xy: 1985, 63 + xy: 1013, 39 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-snow2 rotate: false - xy: 1721, 65 + xy: 1047, 39 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-snow3 rotate: false - xy: 1755, 65 + xy: 1081, 37 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-spore-moss1 rotate: false - xy: 1013, 37 + xy: 1115, 37 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spore-moss-icon-editor rotate: false - xy: 1013, 37 + xy: 1115, 37 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-spore-moss2 rotate: false - xy: 1047, 37 + xy: 1149, 37 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-spore-moss3 rotate: false - xy: 1081, 35 + xy: 1183, 37 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-stone3 rotate: false - xy: 1115, 35 + xy: 1217, 37 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-tar rotate: false - xy: 1149, 35 + xy: 1251, 37 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 tar-icon-editor rotate: false - xy: 1149, 35 + xy: 1251, 37 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 editor-water rotate: false - xy: 1183, 35 + xy: 1285, 37 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 water-icon-editor rotate: false - xy: 1183, 35 + xy: 1285, 37 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 force-projector-icon-editor rotate: false - xy: 1427, 399 + xy: 1427, 401 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 fortress-factory-icon-editor rotate: false - xy: 1525, 399 + xy: 1525, 401 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 fuse-icon-editor rotate: false - xy: 1623, 399 + xy: 1623, 401 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 ghoul-factory-icon-editor rotate: false - xy: 1721, 399 + xy: 1721, 401 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 glaive-ship-pad-icon-editor rotate: false - xy: 1819, 399 + xy: 1819, 401 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 graphite-press-icon-editor rotate: false - xy: 1043, 71 + xy: 1043, 73 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 hail-icon-editor rotate: false - xy: 1217, 35 + xy: 1319, 35 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 icerocks-icon-editor rotate: false - xy: 1251, 35 + xy: 1353, 35 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 impact-reactor-icon-editor rotate: false - xy: 645, 237 + xy: 645, 239 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 incinerator-icon-editor rotate: false - xy: 1285, 35 + xy: 1387, 35 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-source-icon-editor rotate: false - xy: 1319, 33 + xy: 1421, 35 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 item-void-icon-editor rotate: false - xy: 1353, 33 + xy: 1455, 35 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 javelin-ship-pad-icon-editor rotate: false - xy: 1109, 235 + xy: 1109, 237 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 junction-icon-editor rotate: false - xy: 1387, 33 + xy: 1489, 35 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 kiln-icon-editor rotate: false - xy: 1109, 169 + xy: 1109, 171 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 lancer-icon-editor rotate: false - xy: 1175, 235 + xy: 1175, 237 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 laser-drill-icon-editor rotate: false - xy: 1917, 399 + xy: 1917, 401 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 launch-pad-icon-editor rotate: false - xy: 553, 77 + xy: 553, 79 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 liquid-junction-icon-editor rotate: false - xy: 1421, 33 + xy: 1523, 35 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-router-icon-editor rotate: false - xy: 1455, 33 + xy: 1557, 35 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-source-icon-editor rotate: false - xy: 1489, 33 + xy: 1591, 35 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 liquid-tank-icon-editor rotate: false - xy: 651, 139 + xy: 651, 141 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 mass-driver-icon-editor rotate: false - xy: 749, 139 + xy: 749, 141 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 mechanical-drill-icon-editor rotate: false - xy: 1109, 103 + xy: 1109, 105 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 mechanical-pump-icon-editor rotate: false - xy: 1523, 33 + xy: 1625, 35 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 meltdown-icon-editor rotate: false - xy: 775, 367 + xy: 775, 369 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 melter-icon-editor rotate: false - xy: 1557, 33 + xy: 1659, 35 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 mend-projector-icon-editor rotate: false - xy: 1175, 169 + xy: 1175, 171 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 multi-press-icon-editor rotate: false - xy: 651, 41 + xy: 651, 43 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 oil-extractor-icon-editor rotate: false - xy: 749, 41 + xy: 749, 43 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 omega-mech-pad-icon-editor rotate: false - xy: 847, 139 + xy: 847, 141 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 overdrive-projector-icon-editor rotate: false - xy: 1241, 235 + xy: 1241, 237 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 overflow-gate-icon-editor rotate: false - xy: 1591, 33 + xy: 1693, 33 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phantom-factory-icon-editor rotate: false - xy: 1175, 103 + xy: 1175, 105 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 phase-conduit-icon-editor rotate: false - xy: 1625, 33 + xy: 1727, 33 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-conveyor-icon-editor rotate: false - xy: 1659, 33 + xy: 1761, 33 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-wall-icon-editor rotate: false - xy: 1693, 31 + xy: 1795, 33 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 phase-wall-large-icon-editor rotate: false - xy: 1241, 169 + xy: 1241, 171 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 phase-weaver-icon-editor rotate: false - xy: 1307, 235 + xy: 1307, 237 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 pine-icon-editor rotate: false - xy: 1769, 217 + xy: 1769, 219 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 plastanium-compressor-icon-editor rotate: false - xy: 1241, 103 + xy: 1241, 105 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 pneumatic-drill-icon-editor rotate: false - xy: 1307, 169 + xy: 1307, 171 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 power-node-icon-editor rotate: false - xy: 1727, 31 + xy: 1829, 33 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 power-node-large-icon-editor rotate: false - xy: 1307, 103 + xy: 1307, 105 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 power-source-icon-editor rotate: false - xy: 1761, 31 + xy: 619, 9 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 power-void-icon-editor rotate: false - xy: 1997, 259 + xy: 653, 9 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulse-conduit-icon-editor rotate: false - xy: 619, 7 + xy: 687, 9 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pulverizer-icon-editor rotate: false - xy: 653, 7 + xy: 721, 9 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pyratite-mixer-icon-editor rotate: false - xy: 553, 11 + xy: 553, 13 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 repair-point-icon-editor rotate: false - xy: 687, 7 + xy: 755, 9 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 revenant-factory-icon-editor rotate: false - xy: 293, 45 + xy: 293, 47 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 ripple-icon-editor rotate: false - xy: 847, 41 + xy: 847, 43 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 +rock-icon-editor + rotate: false + xy: 1769, 169 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 rocks-icon-editor rotate: false - xy: 721, 7 + xy: 789, 9 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 rotary-pump-icon-editor rotate: false - xy: 1395, 267 + xy: 1395, 269 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 router-icon-editor rotate: false - xy: 755, 7 + xy: 823, 9 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 rtg-generator-icon-editor rotate: false - xy: 1461, 267 + xy: 1461, 269 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 salvo-icon-editor rotate: false - xy: 1527, 267 + xy: 1527, 269 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 sandrocks-icon-editor rotate: false - xy: 789, 7 + xy: 857, 9 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scatter-icon-editor rotate: false - xy: 1593, 267 + xy: 1593, 269 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 scrap-wall-gigantic-icon-editor rotate: false - xy: 775, 237 + xy: 775, 239 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 scrap-wall-huge-icon-editor rotate: false - xy: 1003, 269 + xy: 1003, 271 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 scrap-wall-icon-editor rotate: false - xy: 823, 7 + xy: 891, 9 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap-wall-large-icon-editor rotate: false - xy: 1659, 267 + xy: 1659, 269 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 separator-icon-editor rotate: false - xy: 1725, 267 + xy: 1725, 269 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 shale-boulder-icon-editor rotate: false - xy: 857, 7 + xy: 925, 7 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shalerocks-icon-editor rotate: false - xy: 891, 7 + xy: 959, 7 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shock-mine-icon-editor rotate: false - xy: 925, 5 + xy: 993, 5 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 silicon-smelter-icon-editor rotate: false - xy: 1791, 267 + xy: 1791, 269 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 +snowrock-icon-editor + rotate: false + xy: 1819, 219 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 snowrocks-icon-editor rotate: false - xy: 959, 5 + xy: 1027, 5 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 solar-panel-icon-editor rotate: false - xy: 993, 3 + xy: 1061, 3 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 solar-panel-large-icon-editor rotate: false - xy: 945, 171 + xy: 945, 173 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 sorter-icon-editor rotate: false - xy: 1027, 3 + xy: 1095, 3 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spawn-icon-editor rotate: false - xy: 1061, 1 + xy: 1129, 3 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spectre-icon-editor rotate: false - xy: 905, 367 + xy: 905, 369 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 spirit-factory-icon-editor rotate: false - xy: 1857, 267 + xy: 1857, 269 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 spore-cluster-icon-editor rotate: false - xy: 1819, 225 + xy: 1869, 227 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 spore-pine-icon-editor rotate: false - xy: 1769, 167 + xy: 1819, 169 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 spore-press-icon-editor rotate: false - xy: 1923, 267 + xy: 1923, 269 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 +sporerocks-icon-editor + rotate: false + xy: 1163, 3 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 surge-tower-icon-editor rotate: false - xy: 1373, 201 + xy: 1373, 203 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 surge-wall-icon-editor rotate: false - xy: 1095, 1 + xy: 1197, 3 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 surge-wall-large-icon-editor rotate: false - xy: 1373, 135 + xy: 1373, 137 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 swarmer-icon-editor rotate: false - xy: 1439, 201 + xy: 1439, 203 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 tau-mech-pad-icon-editor rotate: false - xy: 1439, 135 + xy: 1439, 137 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 thermal-generator-icon-editor rotate: false - xy: 1505, 201 + xy: 1505, 203 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 thermal-pump-icon-editor rotate: false - xy: 945, 73 + xy: 945, 75 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 thorium-reactor-icon-editor rotate: false - xy: 1101, 301 + xy: 1101, 303 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 thorium-wall-icon-editor rotate: false - xy: 1129, 1 + xy: 1231, 3 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 thorium-wall-large-icon-editor rotate: false - xy: 1505, 135 + xy: 1505, 137 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 thruster-icon-editor rotate: false - xy: 423, 45 + xy: 423, 47 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 titan-factory-icon-editor rotate: false - xy: 1199, 301 + xy: 1199, 303 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 titanium-conveyor-icon-editor rotate: false - xy: 1163, 1 + xy: 1265, 3 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-wall-icon-editor rotate: false - xy: 1197, 1 + xy: 1299, 1 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium-wall-large-icon-editor rotate: false - xy: 1571, 201 + xy: 1571, 203 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 trident-ship-pad-icon-editor rotate: false - xy: 1571, 135 + xy: 1571, 137 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 turbine-generator-icon-editor rotate: false - xy: 1637, 201 + xy: 1637, 203 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 unloader-icon-editor rotate: false - xy: 1231, 1 + xy: 1333, 1 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 vault-icon-editor rotate: false - xy: 1297, 301 + xy: 1297, 303 size: 96, 96 orig: 96, 96 offset: 0, 0 index: -1 water-extractor-icon-editor rotate: false - xy: 1637, 135 + xy: 1637, 137 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 wave-icon-editor rotate: false - xy: 1703, 201 + xy: 1703, 203 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 white-tree-dead-icon-editor rotate: false - xy: 1, 175 + xy: 1, 177 size: 320, 320 orig: 320, 320 offset: 0, 0 index: -1 white-tree-icon-editor rotate: false - xy: 323, 175 + xy: 323, 177 size: 320, 320 orig: 320, 320 offset: 0, 0 index: -1 wraith-factory-icon-editor rotate: false - xy: 1703, 135 + xy: 1703, 137 size: 64, 64 orig: 64, 64 offset: 0, 0 @@ -9516,1064 +9579,1099 @@ filter: Nearest,Nearest repeat: none char1 rotate: false - xy: 1549, 793 + xy: 1773, 865 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 char2 rotate: false - xy: 373, 401 + xy: 1889, 981 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 char3 rotate: false - xy: 117, 51 + xy: 729, 491 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 cliffs1 rotate: false - xy: 1773, 873 + xy: 1019, 589 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 coal1 rotate: false - xy: 1889, 989 + xy: 1309, 687 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 coal2 rotate: false - xy: 721, 499 + xy: 1591, 785 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 coal3 rotate: false - xy: 1011, 597 + xy: 175, 43 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 copper1 rotate: false - xy: 1301, 695 + xy: 415, 393 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 copper2 rotate: false - xy: 1583, 793 + xy: 1773, 831 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 copper3 rotate: false - xy: 407, 401 + xy: 1923, 981 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 craters1 rotate: false - xy: 151, 51 + xy: 763, 491 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 craters2 rotate: false - xy: 1773, 839 + xy: 1053, 589 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 craters3 rotate: false - xy: 1923, 989 + xy: 1343, 687 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 craters4 rotate: false - xy: 755, 499 + xy: 1625, 785 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 craters5 rotate: false - xy: 1045, 597 + xy: 209, 43 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 stone1 rotate: false - xy: 1045, 597 + xy: 209, 43 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 craters6 rotate: false - xy: 1335, 695 + xy: 449, 393 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 stone2 rotate: false - xy: 1335, 695 + xy: 449, 393 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 deepwater rotate: false - xy: 1617, 793 + xy: 1957, 981 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 deepwater-edge rotate: false - xy: 323, 925 + xy: 323, 917 size: 288, 96 orig: 288, 96 offset: 0, 0 index: -1 dunerocks-large rotate: false - xy: 1, 19 + xy: 1, 11 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 dunerocks1 rotate: false - xy: 441, 401 + xy: 797, 491 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 dunerocks2 rotate: false - xy: 185, 51 + xy: 1087, 589 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 edge-stencil-blocky rotate: false - xy: 1, 281 + xy: 1, 273 size: 288, 96 orig: 288, 96 offset: 0, 0 index: -1 edge-stencil-smooth rotate: false - xy: 323, 827 + xy: 323, 819 size: 288, 96 orig: 288, 96 offset: 0, 0 index: -1 grass-edge rotate: false - xy: 613, 925 + xy: 613, 917 size: 288, 96 orig: 288, 96 offset: 0, 0 index: -1 grass1 rotate: false - xy: 1957, 989 + xy: 1377, 687 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 grass2 rotate: false - xy: 789, 499 + xy: 1659, 785 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 grass3 rotate: false - xy: 1079, 597 + xy: 243, 43 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 holostone-edge rotate: false - xy: 1, 183 + xy: 1, 175 size: 288, 96 orig: 288, 96 offset: 0, 0 index: -1 holostone1 rotate: false - xy: 1369, 695 + xy: 483, 393 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 holostone2 rotate: false - xy: 1651, 793 + xy: 1991, 981 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 holostone3 rotate: false - xy: 475, 401 + xy: 831, 491 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 hotrock1 rotate: false - xy: 219, 51 + xy: 1121, 589 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 hotrock2 rotate: false - xy: 1991, 989 + xy: 1411, 687 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 hotrock3 rotate: false - xy: 823, 499 + xy: 1693, 785 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice-edge rotate: false - xy: 323, 729 + xy: 323, 721 size: 288, 96 orig: 288, 96 offset: 0, 0 index: -1 ice-snow-edge rotate: false - xy: 613, 827 + xy: 613, 819 size: 288, 96 orig: 288, 96 offset: 0, 0 index: -1 ice-snow1 rotate: false - xy: 509, 401 + xy: 1445, 687 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice-snow2 rotate: false - xy: 253, 51 + xy: 1727, 785 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice-snow3 rotate: false - xy: 857, 499 + xy: 551, 393 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice1 rotate: false - xy: 1113, 597 + xy: 517, 393 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice2 rotate: false - xy: 1403, 695 + xy: 865, 491 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ice3 rotate: false - xy: 1685, 793 + xy: 1155, 589 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 icerocks-large rotate: false - xy: 1773, 957 + xy: 1773, 949 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 icerocks1 rotate: false - xy: 1147, 597 + xy: 291, 337 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 icerocks2 rotate: false - xy: 1437, 695 + xy: 291, 303 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ignarock-edge rotate: false - xy: 903, 925 + xy: 903, 917 size: 288, 96 orig: 288, 96 offset: 0, 0 index: -1 ignarock1 rotate: false - xy: 1719, 793 + xy: 291, 269 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ignarock2 rotate: false - xy: 543, 401 + xy: 291, 235 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ignarock3 rotate: false - xy: 577, 401 + xy: 291, 201 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 lead1 rotate: false - xy: 291, 345 + xy: 291, 167 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 lead2 rotate: false - xy: 291, 311 + xy: 291, 133 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 lead3 rotate: false - xy: 291, 277 + xy: 291, 99 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 magmarock1 rotate: false - xy: 291, 243 + xy: 613, 425 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 magmarock2 rotate: false - xy: 291, 209 + xy: 903, 523 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 magmarock3 rotate: false - xy: 291, 175 + xy: 1193, 621 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor rotate: false - xy: 291, 141 + xy: 1483, 719 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-damaged5 rotate: false - xy: 291, 141 + xy: 1483, 719 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-2 rotate: false - xy: 291, 107 + xy: 647, 425 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-2-edge rotate: false - xy: 1, 85 + xy: 1, 77 size: 288, 96 orig: 288, 96 offset: 0, 0 index: -1 metal-floor-3 rotate: false - xy: 613, 433 + xy: 937, 523 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-3-edge rotate: false - xy: 323, 631 + xy: 323, 623 size: 288, 96 orig: 288, 96 offset: 0, 0 index: -1 metal-floor-5 rotate: false - xy: 903, 531 + xy: 1227, 621 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-5-edge rotate: false - xy: 613, 729 + xy: 613, 721 size: 288, 96 orig: 288, 96 offset: 0, 0 index: -1 metal-floor-damaged-edge rotate: false - xy: 903, 827 + xy: 903, 819 size: 288, 96 orig: 288, 96 offset: 0, 0 index: -1 metal-floor-damaged1 rotate: false - xy: 1193, 629 + xy: 1517, 719 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-damaged2 rotate: false - xy: 1483, 727 + xy: 325, 343 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-damaged3 rotate: false - xy: 1549, 759 + xy: 325, 309 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-damaged4 rotate: false - xy: 1583, 759 + xy: 325, 275 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-damaged6 rotate: false - xy: 1617, 759 + xy: 325, 241 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 metal-floor-edge rotate: false - xy: 1193, 925 + xy: 1193, 917 size: 288, 96 orig: 288, 96 offset: 0, 0 index: -1 moss-edge rotate: false - xy: 323, 533 + xy: 323, 525 size: 288, 96 orig: 288, 96 offset: 0, 0 index: -1 moss1 rotate: false - xy: 1651, 759 + xy: 325, 207 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 moss2 rotate: false - xy: 1685, 759 + xy: 325, 173 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 moss3 rotate: false - xy: 1719, 759 + xy: 325, 139 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-coal1 rotate: false - xy: 647, 433 + xy: 325, 105 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-coal2 rotate: false - xy: 937, 531 + xy: 899, 489 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-coal3 rotate: false - xy: 1227, 629 + xy: 933, 489 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-copper1 rotate: false - xy: 611, 399 + xy: 1189, 587 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-copper2 rotate: false - xy: 645, 399 + xy: 1223, 587 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-copper3 rotate: false - xy: 325, 351 + xy: 1479, 685 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-lead1 rotate: false - xy: 325, 317 + xy: 1513, 685 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-lead2 rotate: false - xy: 325, 283 + xy: 133, 1 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-lead3 rotate: false - xy: 325, 249 + xy: 291, 65 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-scrap1 rotate: false - xy: 325, 215 + xy: 325, 71 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-scrap2 rotate: false - xy: 325, 181 + xy: 681, 441 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-scrap3 rotate: false - xy: 325, 147 + xy: 971, 539 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-thorium1 rotate: false - xy: 325, 113 + xy: 1261, 637 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-thorium2 rotate: false - xy: 291, 73 + xy: 1823, 915 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-thorium3 rotate: false - xy: 325, 79 + xy: 1807, 865 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-titanium1 rotate: false - xy: 1753, 793 + xy: 1807, 831 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-titanium2 rotate: false - xy: 1753, 759 + xy: 1889, 947 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 ore-titanium3 rotate: false - xy: 891, 497 + xy: 1923, 947 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 pine rotate: false - xy: 323, 385 + xy: 323, 377 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 rock1 rotate: false - xy: 67, 35 + xy: 1773, 899 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 rock2 rotate: false - xy: 1773, 907 + xy: 1839, 965 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 rocks-large rotate: false - xy: 613, 467 + xy: 613, 459 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 rocks1 rotate: false - xy: 925, 497 + xy: 1957, 947 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 rocks2 rotate: false - xy: 1181, 595 + xy: 1991, 947 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 salt rotate: false - xy: 1215, 595 + xy: 729, 457 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 salt-edge rotate: false - xy: 613, 631 + xy: 613, 623 size: 288, 96 orig: 288, 96 offset: 0, 0 index: -1 sand-edge rotate: false - xy: 903, 729 + xy: 903, 721 size: 288, 96 orig: 288, 96 offset: 0, 0 index: -1 sand-water rotate: false - xy: 1823, 923 + xy: 865, 457 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sand-water-edge rotate: false - xy: 1193, 827 + xy: 1193, 819 size: 288, 96 orig: 288, 96 offset: 0, 0 index: -1 sand1 rotate: false - xy: 1471, 693 + xy: 763, 457 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sand2 rotate: false - xy: 287, 39 + xy: 797, 457 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sand3 rotate: false - xy: 67, 1 + xy: 831, 457 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sandrocks-large rotate: false - xy: 903, 565 + xy: 903, 557 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 sandrocks1 rotate: false - xy: 1807, 873 + xy: 899, 455 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 sandrocks2 rotate: false - xy: 1807, 839 + xy: 933, 455 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap1 rotate: false - xy: 1787, 805 + xy: 1019, 555 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap2 rotate: false - xy: 1787, 771 + xy: 1053, 555 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scrap3 rotate: false - xy: 1821, 805 + xy: 1087, 555 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shale-boulder1 rotate: false - xy: 1957, 955 + xy: 1223, 553 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shale-boulder2 rotate: false - xy: 1991, 955 + xy: 1309, 653 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shale-edge rotate: false - xy: 1483, 925 + xy: 1483, 917 size: 288, 96 orig: 288, 96 offset: 0, 0 index: -1 shale1 rotate: false - xy: 1821, 771 + xy: 1121, 555 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shale2 rotate: false - xy: 1889, 955 + xy: 1155, 555 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shale3 rotate: false - xy: 1923, 955 + xy: 1189, 553 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shalerocks-large rotate: false - xy: 1193, 663 + xy: 1193, 655 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 shalerocks1 rotate: false - xy: 373, 367 + xy: 1343, 653 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 shalerocks2 rotate: false - xy: 407, 367 + xy: 1377, 653 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 snow-edge rotate: false - xy: 323, 435 + xy: 323, 427 size: 288, 96 orig: 288, 96 offset: 0, 0 index: -1 snow1 rotate: false - xy: 441, 367 + xy: 1411, 653 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 snow2 rotate: false - xy: 475, 367 + xy: 1445, 653 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 snow3 rotate: false - xy: 509, 367 + xy: 1479, 651 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 +snowrock1 + rotate: false + xy: 679, 475 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 +snowrock2 + rotate: false + xy: 969, 573 + size: 48, 48 + orig: 48, 48 + offset: 0, 0 + index: -1 snowrocks-large rotate: false - xy: 1483, 761 + xy: 1483, 753 size: 64, 64 orig: 64, 64 offset: 0, 0 index: -1 snowrocks1 rotate: false - xy: 543, 367 + xy: 1513, 651 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 snowrocks2 rotate: false - xy: 577, 367 + xy: 681, 407 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spore-cluster1 rotate: false - xy: 679, 491 + xy: 1549, 777 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 spore-cluster2 rotate: false - xy: 969, 589 + xy: 133, 35 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 spore-cluster3 rotate: false - xy: 1259, 687 + xy: 373, 385 size: 40, 40 orig: 40, 40 offset: 0, 0 index: -1 spore-moss-edge rotate: false - xy: 613, 533 + xy: 613, 525 size: 288, 96 orig: 288, 96 offset: 0, 0 index: -1 spore-moss1 rotate: false - xy: 611, 365 + xy: 715, 423 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spore-moss2 rotate: false - xy: 645, 365 + xy: 749, 423 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spore-moss3 rotate: false - xy: 359, 333 + xy: 783, 423 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 spore-pine rotate: false - xy: 1839, 973 + xy: 1259, 671 size: 48, 48 orig: 48, 48 offset: 0, 0 index: -1 +sporerocks-large + rotate: false + xy: 67, 11 + size: 64, 64 + orig: 64, 64 + offset: 0, 0 + index: -1 +sporerocks1 + rotate: false + xy: 817, 423 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +sporerocks2 + rotate: false + xy: 851, 423 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 stone-edge rotate: false - xy: 903, 631 + xy: 903, 623 size: 288, 96 orig: 288, 96 offset: 0, 0 index: -1 stone3 rotate: false - xy: 359, 299 + xy: 885, 421 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 tar rotate: false - xy: 393, 333 + xy: 919, 421 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 tar-edge rotate: false - xy: 1193, 729 + xy: 1193, 721 size: 288, 96 orig: 288, 96 offset: 0, 0 index: -1 thorium1 rotate: false - xy: 359, 265 + xy: 971, 505 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 thorium2 rotate: false - xy: 393, 299 + xy: 967, 471 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 thorium3 rotate: false - xy: 427, 333 + xy: 1005, 521 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium1 rotate: false - xy: 359, 231 + xy: 1039, 521 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium2 rotate: false - xy: 393, 265 + xy: 1073, 521 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 titanium3 rotate: false - xy: 427, 299 + xy: 1107, 521 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 water rotate: false - xy: 461, 333 + xy: 1141, 521 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 water-edge rotate: false - xy: 1483, 827 + xy: 1483, 819 size: 288, 96 orig: 288, 96 offset: 0, 0 index: -1 white-tree rotate: false - xy: 1, 701 + xy: 1, 693 size: 320, 320 orig: 320, 320 offset: 0, 0 index: -1 white-tree-dead rotate: false - xy: 1, 379 + xy: 1, 371 size: 320, 320 orig: 320, 320 offset: 0, 0 diff --git a/core/assets/sprites/sprites.png b/core/assets/sprites/sprites.png index f04b623bb2..8baf88c126 100644 Binary files a/core/assets/sprites/sprites.png and b/core/assets/sprites/sprites.png differ diff --git a/core/assets/sprites/sprites2.png b/core/assets/sprites/sprites2.png index 5f90253ca5..9ae2f80be2 100644 Binary files a/core/assets/sprites/sprites2.png and b/core/assets/sprites/sprites2.png differ diff --git a/core/assets/sprites/sprites3.png b/core/assets/sprites/sprites3.png index 8102b5b089..85dcc5d4b7 100644 Binary files a/core/assets/sprites/sprites3.png and b/core/assets/sprites/sprites3.png differ diff --git a/core/src/io/anuke/mindustry/Vars.java b/core/src/io/anuke/mindustry/Vars.java index 43324c873a..1685852eb4 100644 --- a/core/src/io/anuke/mindustry/Vars.java +++ b/core/src/io/anuke/mindustry/Vars.java @@ -66,6 +66,8 @@ public class Vars{ public static final float finalWorldBounds = worldBounds + 500; /**ticks spent out of bound until self destruct.*/ public static final float boundsCountdown = 60*7; + /**for map generator dialog*/ + public static boolean updateEditorOnChange = false; /**size of tiles in units*/ public static final int tilesize = 8; /**all choosable player colors in join/host dialog*/ diff --git a/core/src/io/anuke/mindustry/ai/WaveSpawner.java b/core/src/io/anuke/mindustry/ai/WaveSpawner.java index cfdb2b134d..fca6df51a7 100644 --- a/core/src/io/anuke/mindustry/ai/WaveSpawner.java +++ b/core/src/io/anuke/mindustry/ai/WaveSpawner.java @@ -27,6 +27,7 @@ public class WaveSpawner{ private Array flySpawns = new Array<>(); private Array groundSpawns = new Array<>(); private IntArray loadedSpawns = new IntArray(); + private boolean spawning = false; public WaveSpawner(){ Events.on(WorldLoadEvent.class, e -> reset()); @@ -57,6 +58,7 @@ public class WaveSpawner{ } public void spawnEnemies(){ + spawning = true; for(SpawnGroup group : state.rules.spawns){ int spawned = group.getUnitsSpawned(state.wave); @@ -90,7 +92,7 @@ public class WaveSpawner{ BaseUnit unit = group.createUnit(waveTeam); unit.set(spawnX + Tmp.v1.x, spawnY + Tmp.v1.y); - Time.run(i*5, () -> shockwave(unit)); + Time.run(Math.min(i*5, 60*2), () -> shockwave(unit)); } Time.run(20f, () -> Effects.effect(Fx.spawnShockwave, spawn.x * tilesize, spawn.y * tilesize)); //would be interesting to see player structures survive this without hacks @@ -98,6 +100,12 @@ public class WaveSpawner{ } } } + + Time.runTask(121f, () -> spawning = false); + } + + public boolean isSpawning(){ + return spawning; } private void reset(){ diff --git a/core/src/io/anuke/mindustry/content/Blocks.java b/core/src/io/anuke/mindustry/content/Blocks.java index ab2ba4c56e..62fee69f2c 100644 --- a/core/src/io/anuke/mindustry/content/Blocks.java +++ b/core/src/io/anuke/mindustry/content/Blocks.java @@ -36,9 +36,9 @@ public class Blocks implements ContentList{ //environment air, part, spawn, deepwater, water, tar, stone, craters, charr, sand, ice, snow, - holostone, rocks, icerocks, cliffs, sporePine, pine, whiteTree, whiteTreeDead, sporeCluster, + holostone, rocks, sporerocks, icerocks, cliffs, sporePine, pine, whiteTree, whiteTreeDead, sporeCluster, iceSnow, sandWater, duneRocks, sandRocks, moss, sporeMoss, shale, shaleRocks, shaleBoulder, grass, salt, - metalFloor, metalFloorDamaged, metalFloor2, metalFloor3, metalFloor5, ignarock, magmarock, hotrock, snowrocks, + metalFloor, metalFloorDamaged, metalFloor2, metalFloor3, metalFloor5, ignarock, magmarock, hotrock, snowrocks, rock, snowrock, //ores oreCopper, oreLead, oreScrap, oreCoal, oreTitanium, oreThorium, @@ -189,11 +189,6 @@ public class Blocks implements ContentList{ variants = 0; }}; - iceSnow = new Floor("ice-snow"){{ - variants = 3; - attributes.set(Attribute.water, 0.3f); - }}; - snow = new Floor("snow"){{ attributes.set(Attribute.water, 0.2f); }}; @@ -205,6 +200,12 @@ public class Blocks implements ContentList{ attributes.set(Attribute.water, 0.4f); }}; + iceSnow = new Floor("ice-snow"){{ + variants = 3; + attributes.set(Attribute.water, 0.3f); + edgeStyle = "blocky"; + }}; + cliffs = new StaticWall("cliffs"){{ variants = 1; fillsTile = false; @@ -214,6 +215,18 @@ public class Blocks implements ContentList{ variants = 2; }}; + sporerocks = new StaticWall("sporerocks"){{ + variants = 2; + }}; + + rock = new Rock("rock"){{ + variants = 2; + }}; + + snowrock = new Rock("snowrock"){{ + variants = 2; + }}; + icerocks = new StaticWall("icerocks"){{ variants = 2; }}; @@ -269,6 +282,7 @@ public class Blocks implements ContentList{ sporeMoss = new Floor("spore-moss"){{ variants = 3; attributes.set(Attribute.spores, 0.3f); + edgeStyle = "blocky"; }}; metalFloor = new Floor("metal-floor"){{ @@ -694,7 +708,7 @@ public class Blocks implements ContentList{ }}; junction = new Junction("junction"){{ - requirements(Category.distribution, ItemStack.with(Items.copper, 3)); + requirements(Category.distribution, ItemStack.with(Items.copper, 3), true); speed = 26; capacity = 32; health = 25; @@ -1061,29 +1075,30 @@ public class Blocks implements ContentList{ range = 95f; shootCone = 15f; ammoUseEffect = Fx.shellEjectSmall; - health = 210; + health = 250; inaccuracy = 2f; rotatespeed = 10f; }}; scatter = new BurstTurret("scatter"){{ - requirements(Category.turret, ItemStack.with(Items.copper, 170, Items.lead, 90), true); + requirements(Category.turret, ItemStack.with(Items.copper, 170, Items.lead, 90)); ammo( Items.scrap, Bullets.flakScrap, Items.lead, Bullets.flakLead ); - reload = 45f; + reload = 43f; range = 160f; size = 2; burstSpacing = 5f; shots = 2; + targetGround = false; recoil = 2f; rotatespeed = 10f; - inaccuracy = 18f; + inaccuracy = 17f; shootCone = 35f; - health = 220*size*size; + health = 260*size*size; }}; hail = new ArtilleryTurret("hail"){{ @@ -1098,7 +1113,7 @@ public class Blocks implements ContentList{ range = 230f; inaccuracy = 1f; shootCone = 10f; - health = 120; + health = 260; }}; wave = new LiquidTurret("wave"){{ @@ -1116,7 +1131,7 @@ public class Blocks implements ContentList{ shootCone = 50f; shootEffect = Fx.shootLiquid; range = 100f; - health = 360; + health = 250*size*size; drawer = (tile, entity) -> { Draw.rect(region, tile.drawx() + tr2.x, tile.drawy() + tr2.y, entity.rotation - 90); @@ -1147,7 +1162,7 @@ public class Blocks implements ContentList{ chargeBeginEffect = Fx.lancerLaserChargeBegin; heatColor = Color.RED; size = 2; - health = 320; + health = 280*size*size; targetAir = false; }}; @@ -1165,6 +1180,7 @@ public class Blocks implements ContentList{ heatColor = Color.RED; recoil = 1f; size = 1; + health = 260; }}; swarmer = new BurstTurret("swarmer"){{ @@ -1181,7 +1197,7 @@ public class Blocks implements ContentList{ range = 140f; xRand = 6f; size = 2; - health = 380; + health = 300*size*size; }}; salvo = new BurstTurret("salvo"){{ diff --git a/core/src/io/anuke/mindustry/content/Mechs.java b/core/src/io/anuke/mindustry/content/Mechs.java index 4ba2506664..cc96e1ece2 100644 --- a/core/src/io/anuke/mindustry/content/Mechs.java +++ b/core/src/io/anuke/mindustry/content/Mechs.java @@ -36,7 +36,7 @@ public class Mechs implements ContentList{ speed = 0.5f; boostSpeed = 0.85f; engineColor = Color.valueOf("ffd37f"); - health = 250f; + health = 300f; weapon = new Weapon("blaster"){{ length = 1.5f; @@ -62,7 +62,7 @@ public class Mechs implements ContentList{ boostSpeed = 0.95f; itemCapacity = 15; mass = 0.9f; - health = 220f; + health = 250f; weaponOffsetX = -1; weaponOffsetY = -1; engineColor = Color.valueOf("d3ddff"); diff --git a/core/src/io/anuke/mindustry/content/TechTree.java b/core/src/io/anuke/mindustry/content/TechTree.java index 46e34eb01d..330cdc8114 100644 --- a/core/src/io/anuke/mindustry/content/TechTree.java +++ b/core/src/io/anuke/mindustry/content/TechTree.java @@ -43,20 +43,22 @@ public class TechTree implements ContentList{ }); node(duo, () -> { - node(hail, () -> { + node(scatter, () -> { + node(hail, () -> { - node(salvo, () -> { - node(swarmer, () -> { - node(cyclone, () -> { - node(spectre, () -> { + node(salvo, () -> { + node(swarmer, () -> { + node(cyclone, () -> { + node(spectre, () -> { + }); }); }); - }); - node(ripple, () -> { - node(fuse, () -> { + node(ripple, () -> { + node(fuse, () -> { + }); }); }); }); @@ -257,7 +259,7 @@ public class TechTree implements ContentList{ private TechNode node(Block block, Runnable children){ ItemStack[] requirements = new ItemStack[block.buildRequirements.length]; for(int i = 0; i < requirements.length; i++){ - requirements[i] = new ItemStack(block.buildRequirements[i].item, block.buildRequirements[i].amount * 10); + requirements[i] = new ItemStack(block.buildRequirements[i].item, block.buildRequirements[i].amount * 8); } return new TechNode(block, requirements, children); diff --git a/core/src/io/anuke/mindustry/content/Zones.java b/core/src/io/anuke/mindustry/content/Zones.java index 9d94ce230e..1c12202b73 100644 --- a/core/src/io/anuke/mindustry/content/Zones.java +++ b/core/src/io/anuke/mindustry/content/Zones.java @@ -16,13 +16,13 @@ public class Zones implements ContentList{ @Override public void load(){ - groundZero = new Zone("groundZero", new MapGenerator("groundZero", 1)){{ + groundZero = new Zone("groundZero", new MapGenerator("groundZero", 1).decor(new Decoration(Blocks.snow, Blocks.snowrock, 0.01))){{ baseLaunchCost = ItemStack.with(Items.copper, -100); startingItems = ItemStack.list(Items.copper, 100); alwaysUnlocked = true; conditionWave = 5; launchPeriod = 5; - resources = new Item[]{Items.copper, Items.scrap}; + resources = new Item[]{Items.copper, Items.scrap, Items.lead}; rules = () -> new Rules(){{ waves = true; waveTimer = true; @@ -30,7 +30,7 @@ public class Zones implements ContentList{ }}; }}; - craters = new Zone("craters", new MapGenerator("craters", 1).dist(0)){{ + craters = new Zone("craters", new MapGenerator("craters", 1).dist(0).decor(new Decoration(Blocks.snow, Blocks.sporeCluster, 0.01))){{ startingItems = ItemStack.list(Items.copper, 200); conditionWave = 10; itemRequirements = ItemStack.with(Items.copper, 2000); diff --git a/core/src/io/anuke/mindustry/editor/MapEditor.java b/core/src/io/anuke/mindustry/editor/MapEditor.java index 32b05da7e0..e53bb60117 100644 --- a/core/src/io/anuke/mindustry/editor/MapEditor.java +++ b/core/src/io/anuke/mindustry/editor/MapEditor.java @@ -212,7 +212,7 @@ public class MapEditor{ if(tile.block().isMultiblock()){ removeLinked(wx, wy); - }else if(link != 0 && tiles[x][y].block() == Blocks.part){ + }else if(link != 0 && tiles[wx][wy].block() == Blocks.part){ removeLinked(wx - (Pack.leftByte(link) - 8), wy - (Pack.rightByte(link) - 8)); } } diff --git a/core/src/io/anuke/mindustry/editor/MapGenerateDialog.java b/core/src/io/anuke/mindustry/editor/MapGenerateDialog.java index bae20da504..a662e4d6fd 100644 --- a/core/src/io/anuke/mindustry/editor/MapGenerateDialog.java +++ b/core/src/io/anuke/mindustry/editor/MapGenerateDialog.java @@ -6,10 +6,12 @@ import io.anuke.arc.function.Supplier; import io.anuke.arc.graphics.Pixmap; import io.anuke.arc.graphics.Pixmap.Format; import io.anuke.arc.graphics.Texture; +import io.anuke.arc.scene.ui.Image; +import io.anuke.arc.scene.ui.layout.Stack; import io.anuke.arc.scene.ui.layout.Table; +import io.anuke.arc.util.Scaling; import io.anuke.arc.util.async.AsyncExecutor; import io.anuke.arc.util.async.AsyncResult; -import io.anuke.mindustry.content.Blocks; import io.anuke.mindustry.editor.generation.*; import io.anuke.mindustry.editor.generation.GenerateFilter.GenerateInput; import io.anuke.mindustry.game.Team; @@ -21,7 +23,7 @@ import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.blocks.Floor; -import static io.anuke.mindustry.Vars.mobile; +import static io.anuke.mindustry.Vars.*; @SuppressWarnings("unchecked") public class MapGenerateDialog extends FloatingDialog{ @@ -48,8 +50,10 @@ public class MapGenerateDialog extends FloatingDialog{ shown(this::setup); addCloseButton(); buttons.addButton("$editor.apply", () -> { - apply(); - hide(); + ui.loadAnd(() -> { + apply(); + hide(); + }); }).size(160f, 64f); buttons.addButton("$editor.randomize", () -> { for(GenerateFilter filter : filters){ @@ -75,15 +79,20 @@ public class MapGenerateDialog extends FloatingDialog{ cont.clear(); cont.table("flat", t -> { t.margin(8f); - t.add(new BorderImage(texture)).size(400f).padRight(6); + t.stack(new BorderImage(texture), new Stack(){{ + add(new Image("loadDim")); + add(new Image("icon-refresh"){{ + setScaling(Scaling.none); + }}); + visible(() -> generating); + }}).size(mobile ? 300f : 400f).padRight(6); t.pane(p -> filterTable = p).width(300f).get().setScrollingDisabled(true, false); }).grow(); - update(); - buffer1 = create(); buffer2 = create(); + update(); rebuildFilters(); } @@ -186,6 +195,16 @@ public class MapGenerateDialog extends FloatingDialog{ result.get(); } + buffer1 = null; + buffer2 = null; + generating = false; + if(pixmap != null){ + pixmap.dispose(); + texture.dispose(); + pixmap = null; + texture = null; + } + //writeback buffer DummyTile[][] writeTiles = new DummyTile[editor.width()][editor.height()]; @@ -196,7 +215,7 @@ public class MapGenerateDialog extends FloatingDialog{ } for(GenerateFilter filter : filters){ - input.setFilter(filter, (x, y) -> dset(editor.tile(x, y))); + input.setFilter(filter, editor.width(), editor.height(), 1, (x, y) -> dset(editor.tile(x, y))); //write to buffer for(int x = 0; x < editor.width(); x++){ for(int y = 0; y < editor.height(); y++){ @@ -215,10 +234,10 @@ public class MapGenerateDialog extends FloatingDialog{ DummyTile write = writeTiles[x][y]; tile.setRotation((byte)write.rotation); - tile.setFloor((Floor)write.floor); - tile.setBlock(write.block); - tile.setTeam(write.team); - tile.setOre(write.ore); + tile.setFloor((Floor)content.block(write.floor)); + tile.setBlock(content.block(write.block)); + tile.setTeam(Team.all[write.team]); + tile.setOre(content.block(write.ore)); } } }); @@ -239,74 +258,81 @@ public class MapGenerateDialog extends FloatingDialog{ Array copy = new Array<>(filters); result = executor.submit(() -> { - generating = true; + try{ + generating = true; + + if(!filters.isEmpty()){ + //write to buffer1 for reading + for(int px = 0; px < pixmap.getWidth(); px++){ + for(int py = 0; py < pixmap.getHeight(); py++){ + buffer1[px][py].set(editor.tile(px * scaling, py * scaling)); + } + } + } + + for(GenerateFilter filter : copy){ + input.setFilter(filter, pixmap.getWidth(), pixmap.getHeight(), scaling, (x, y) -> buffer1[x][y]); + //read from buffer1 and write to buffer2 + for(int px = 0; px < pixmap.getWidth(); px++){ + for(int py = 0; py < pixmap.getHeight(); py++){ + int x = px * scaling, y = py * scaling; + DummyTile tile = buffer1[px][py]; + input.begin(editor, x, y, content.block(tile.floor), content.block(tile.block), content.block(tile.ore)); + filter.apply(input); + buffer2[px][py].set(input.floor, input.block, input.ore, Team.all[tile.team], tile.rotation); + } + } + for(int px = 0; px < pixmap.getWidth(); px++){ + for(int py = 0; py < pixmap.getHeight(); py++){ + buffer1[px][py].set(buffer2[px][py]); + } + } + } - if(!filters.isEmpty()){ - //write to buffer1 for reading for(int px = 0; px < pixmap.getWidth(); px++){ for(int py = 0; py < pixmap.getHeight(); py++){ - buffer1[px][py].set(editor.tile(px * scaling, py * scaling)); + int color; + //get result from buffer1 if there's filters left, otherwise get from editor directly + if(filters.isEmpty()){ + Tile tile = editor.tile(px * scaling, py * scaling); + color = MapIO.colorFor(tile.floor(), tile.block(), tile.ore(), Team.none); + }else{ + DummyTile tile = buffer1[px][py]; + color = MapIO.colorFor(content.block(tile.floor), content.block(tile.block), content.block(tile.ore), Team.none); + } + pixmap.drawPixel(px, pixmap.getHeight() - 1 - py, color); } } - } - for(GenerateFilter filter : copy){ - input.setFilter(filter, (x, y) -> buffer1[x][y]); - //read from buffer1 and write to buffer2 - for(int px = 0; px < pixmap.getWidth(); px++){ - for(int py = 0; py < pixmap.getHeight(); py++){ - int x = px*scaling, y = py*scaling; - DummyTile tile = buffer1[px][py]; - input.begin(editor, x, y, tile.floor, tile.block, tile.ore); - filter.apply(input); - buffer2[px][py].set(input.floor, input.block, input.ore, tile.team, tile.rotation); - } - } - for(int px = 0; px < pixmap.getWidth(); px++){ - for(int py = 0; py < pixmap.getHeight(); py++){ - buffer1[px][py].set(buffer2[px][py]); - } - } - } - - for(int px = 0; px < pixmap.getWidth(); px++){ - for(int py = 0; py < pixmap.getHeight(); py++){ - int color; - //get result from buffer1 if there's filters left, otherwise get from editor directly - if(filters.isEmpty()){ - Tile tile = editor.tile(px * scaling, py * scaling); - color = MapIO.colorFor(tile.floor(), tile.block(), tile.ore(), Team.none); - }else{ - DummyTile tile = buffer1[px][py]; - color = MapIO.colorFor(tile.floor, tile.block, tile.ore, Team.none); - } - pixmap.drawPixel(px, pixmap.getHeight() - 1 - py, color); - } - } - - Core.app.post(() -> { - texture.draw(pixmap, 0, 0); + Core.app.post(() -> { + texture.draw(pixmap, 0, 0); + generating = false; + }); + }catch(Exception e){ generating = false; - }); + e.printStackTrace(); + } return null; }); } public static class DummyTile{ - public Block block = Blocks.air, ore = Blocks.air, floor = Blocks.air; - public Team team = Team.none; - public int rotation; + public byte block, floor, ore, team, rotation; void set(Block floor, Block wall, Block ore, Team team, int rotation){ - this.floor = floor; - this.block = wall; - this.ore = ore; - this.team = team; - this.rotation = rotation; + this.floor = floor.id; + this.block = wall.id; + this.ore = ore.id; + this.team = (byte)team.ordinal(); + this.rotation = (byte)rotation; } void set(DummyTile other){ - set(other.floor, other.block, other.ore, other.team, other.rotation); + this.floor = other.floor; + this.block = other.block; + this.ore = other.ore; + this.team = other.team; + this.rotation = other.rotation; } void set(Tile other){ diff --git a/core/src/io/anuke/mindustry/editor/MapView.java b/core/src/io/anuke/mindustry/editor/MapView.java index bf115b9f8c..9b4ccef3ff 100644 --- a/core/src/io/anuke/mindustry/editor/MapView.java +++ b/core/src/io/anuke/mindustry/editor/MapView.java @@ -267,7 +267,9 @@ public class MapView extends Element implements GestureListener{ Draw.color(Pal.remove); Lines.stroke(2f); Lines.rect(centerx - sclwidth / 2 - 1, centery - sclheight / 2 - 1, sclwidth + 2, sclheight + 2); - editor.renderer().draw(centerx - sclwidth / 2, centery - sclheight / 2, sclwidth, sclheight); + if(Core.scene.getKeyboardFocus() != null && isDescendantOf(Core.scene.getKeyboardFocus())){ + editor.renderer().draw(centerx - sclwidth / 2, centery - sclheight / 2, sclwidth, sclheight); + } Draw.reset(); if(!ScissorStack.pushScissors(rect.set(x, y, width, height))){ diff --git a/core/src/io/anuke/mindustry/editor/WaveInfoDialog.java b/core/src/io/anuke/mindustry/editor/WaveInfoDialog.java index 1cb2fadae4..45eef72a81 100644 --- a/core/src/io/anuke/mindustry/editor/WaveInfoDialog.java +++ b/core/src/io/anuke/mindustry/editor/WaveInfoDialog.java @@ -3,6 +3,7 @@ package io.anuke.mindustry.editor; import io.anuke.arc.Core; import io.anuke.arc.collection.Array; import io.anuke.arc.graphics.Color; +import io.anuke.arc.input.KeyCode; import io.anuke.arc.math.Mathf; import io.anuke.arc.scene.ui.TextField.TextFieldFilter; import io.anuke.arc.scene.ui.layout.Table; @@ -37,13 +38,49 @@ public class WaveInfoDialog extends FloatingDialog{ this.editor = editor; shown(this::setup); - hidden(() -> editor.getTags().put("waves", world.maps.writeWaves(groups))); + hidden(() -> { + if(groups == null){ + editor.getTags().remove("waves"); + }else{ + editor.getTags().put("waves", world.maps.writeWaves(groups)); + } + }); + + keyDown(key -> { + if(key == KeyCode.ESCAPE || key == KeyCode.BACK) { + Core.app.post(this::hide); + } + }); addCloseButton(); - buttons.addButton("$settings.reset", () -> ui.showConfirm("$confirm", "$settings.clear.confirm", () ->{ - groups = null; - buildGroups(); - })).size(270f, 64f); + buttons.addButton("$waves.edit", () -> { + FloatingDialog dialog = new FloatingDialog("$waves.edit"); + dialog.addCloseButton(); + dialog.setFillParent(false); + dialog.cont.defaults().size(210f, 64f); + dialog.cont.addButton("$waves.copy", () -> { + ui.showInfoFade("$waves.copied"); + Core.app.getClipboard().setContents(world.maps.writeWaves(groups)); + dialog.hide(); + }).disabled(b -> groups == null); + dialog.cont.row(); + dialog.cont.addButton("$waves.load", () -> { + try{ + groups = world.maps.readWaves(Core.app.getClipboard().getContents()); + buildGroups(); + }catch(Exception e){ + ui.showError("$waves.invalid"); + } + dialog.hide(); + }).disabled(b -> Core.app.getClipboard().getContents() == null || Core.app.getClipboard().getContents().isEmpty()); + dialog.cont.row(); + dialog.cont.addButton("$settings.reset", () -> ui.showConfirm("$confirm", "$settings.clear.confirm", () ->{ + groups = null; + buildGroups(); + dialog.hide(); + })); + dialog.show(); + }).size(270f, 64f); } void setup(){ @@ -61,7 +98,7 @@ public class WaveInfoDialog extends FloatingDialog{ }).growX().height(70f); }).width(390f).growY(); cont.table("clear", m -> { - m.add("Preview").color(Color.LIGHT_GRAY).growX().center().get().setAlignment(Align.center, Align.center); + m.add("$waves.preview").color(Color.LIGHT_GRAY).growX().center().get().setAlignment(Align.center, Align.center); m.row(); m.addButton("-", () -> {}).update(t -> { if(t.getClickListener().isPressed()){ @@ -108,16 +145,16 @@ public class WaveInfoDialog extends FloatingDialog{ t.row(); t.table(spawns -> { - spawns.addField("" + group.begin, TextFieldFilter.digitsOnly, text -> { + spawns.addField("" + (group.begin + 1), TextFieldFilter.digitsOnly, text -> { if(Strings.canParsePostiveInt(text)){ - group.begin = Strings.parseInt(text); + group.begin = Strings.parseInt(text) - 1; updateWaves(); } }).width(100f); spawns.add("$waves.to").padLeft(4).padRight(4); - spawns.addField(group.end == never ? "" : group.end + "", TextFieldFilter.digitsOnly, text -> { + spawns.addField(group.end == never ? "" : (group.end + 1) + "", TextFieldFilter.digitsOnly, text -> { if(Strings.canParsePostiveInt(text)){ - group.end = Strings.parseInt(text); + group.end = Strings.parseInt(text) - 1; updateWaves(); }else if(text.isEmpty()){ group.end = never; @@ -205,7 +242,7 @@ public class WaveInfoDialog extends FloatingDialog{ for(int i = start; i < displayed + start; i ++){ int wave = i; preview.table("underline", table -> { - table.add(wave + "").color(Pal.accent).center().colspan(2).get().setAlignment(Align.center, Align.center); + table.add((wave+1) + "").color(Pal.accent).center().colspan(2).get().setAlignment(Align.center, Align.center); table.row(); int[] spawned = new int[Vars.content.getBy(ContentType.unit).size]; diff --git a/core/src/io/anuke/mindustry/editor/generation/DistortFilter.java b/core/src/io/anuke/mindustry/editor/generation/DistortFilter.java index 042d08ed01..ebd969845b 100644 --- a/core/src/io/anuke/mindustry/editor/generation/DistortFilter.java +++ b/core/src/io/anuke/mindustry/editor/generation/DistortFilter.java @@ -4,6 +4,8 @@ import io.anuke.mindustry.editor.MapGenerateDialog.DummyTile; import io.anuke.mindustry.editor.generation.FilterOption.SliderOption; import io.anuke.mindustry.world.blocks.Floor; +import static io.anuke.mindustry.Vars.content; + public class DistortFilter extends GenerateFilter{ float scl = 40, mag = 5; @@ -16,10 +18,10 @@ public class DistortFilter extends GenerateFilter{ @Override public void apply(){ - DummyTile tile = in.tile(in.x + noise(in.x, in.y, scl, mag)-mag/2f, in.y + noise(in.x, in.y+o, scl, mag)-mag/2f); + DummyTile tile = in.tile(in.x / (in.scaling) + (noise(in.x, in.y, scl, mag)-mag/2f)/in.scaling, in.y / (in.scaling) + (noise(in.x, in.y+o, scl, mag)-mag/2f)/in.scaling); - in.floor = tile.floor; - if(!tile.block.synthetic() && !in.block.synthetic()) in.block = tile.block; - if(!((Floor)in.floor).isLiquid) in.ore = tile.ore; + in.floor = content.block(tile.floor); + if(!content.block(tile.block).synthetic() && !in.block.synthetic()) in.block = content.block(tile.block); + if(!((Floor)in.floor).isLiquid) in.ore = content.block(tile.ore); } } diff --git a/core/src/io/anuke/mindustry/editor/generation/FilterOption.java b/core/src/io/anuke/mindustry/editor/generation/FilterOption.java index f3e7d3fbee..8ebad34254 100644 --- a/core/src/io/anuke/mindustry/editor/generation/FilterOption.java +++ b/core/src/io/anuke/mindustry/editor/generation/FilterOption.java @@ -12,6 +12,8 @@ import io.anuke.mindustry.world.Block.Icon; import io.anuke.mindustry.world.blocks.Floor; import io.anuke.mindustry.world.blocks.OreBlock; +import static io.anuke.mindustry.Vars.updateEditorOnChange; + public abstract class FilterOption{ public static final Predicate floorsOnly = b -> (b instanceof Floor && !(b instanceof OreBlock)) && Core.atlas.isFound(b.icon(Icon.full)); public static final Predicate wallsOnly = b -> (!b.synthetic() && !(b instanceof Floor)) && Core.atlas.isFound(b.icon(Icon.full)); @@ -40,7 +42,11 @@ public abstract class FilterOption{ table.row(); Slider slider = table.addSlider(min, max, (max-min)/200f, setter).growX().get(); slider.setValue(getter.get()); - slider.changed(changed); + if(updateEditorOnChange){ + slider.changed(changed); + }else{ + slider.released(changed); + } } } diff --git a/core/src/io/anuke/mindustry/editor/generation/GenerateFilter.java b/core/src/io/anuke/mindustry/editor/generation/GenerateFilter.java index d889907b0c..b6bde0d4de 100644 --- a/core/src/io/anuke/mindustry/editor/generation/GenerateFilter.java +++ b/core/src/io/anuke/mindustry/editor/generation/GenerateFilter.java @@ -56,7 +56,7 @@ public abstract class GenerateFilter{ public Floor srcfloor; public Block srcblock; public Block srcore; - public int x, y; + public int x, y, width, height, scaling; public MapEditor editor; public Block floor, block, ore; @@ -74,14 +74,17 @@ public abstract class GenerateFilter{ this.y = y; } - public void setFilter(GenerateFilter filter, TileProvider buffer){ + public void setFilter(GenerateFilter filter, int width, int height, int scaling, TileProvider buffer){ this.buffer = buffer; + this.width = width; + this.height = height; + this.scaling = scaling; noise.setSeed(filter.seed); pnoise.setSeed((int)(filter.seed + 1)); } DummyTile tile(float x, float y){ - return buffer.get(Mathf.clamp((int)x, 0, editor.width() - 1), Mathf.clamp((int)y, 0, editor.height() - 1)); + return buffer.get(Mathf.clamp((int)x, 0, width - 1), Mathf.clamp((int)y, 0, height - 1)); } public interface TileProvider{ diff --git a/core/src/io/anuke/mindustry/entities/traits/BuilderTrait.java b/core/src/io/anuke/mindustry/entities/traits/BuilderTrait.java index 39bec65fce..248fadfee1 100644 --- a/core/src/io/anuke/mindustry/entities/traits/BuilderTrait.java +++ b/core/src/io/anuke/mindustry/entities/traits/BuilderTrait.java @@ -45,7 +45,7 @@ import static io.anuke.mindustry.Vars.*; public interface BuilderTrait extends Entity, TeamTrait{ //these are not instance variables! Vector2[] tmptr = new Vector2[]{new Vector2(), new Vector2(), new Vector2(), new Vector2()}; - float placeDistance = 150f; + float placeDistance = 220f; float mineDistance = 70f; Array removal = new Array<>(); diff --git a/core/src/io/anuke/mindustry/entities/type/FlyingUnit.java b/core/src/io/anuke/mindustry/entities/type/FlyingUnit.java index 65d324e742..ff628a98b8 100644 --- a/core/src/io/anuke/mindustry/entities/type/FlyingUnit.java +++ b/core/src/io/anuke/mindustry/entities/type/FlyingUnit.java @@ -32,20 +32,18 @@ public abstract class FlyingUnit extends BaseUnit{ target = null; } - if(target == null){ + retarget(() -> { + targetClosest(); - retarget(() -> { - targetClosest(); + if(target == null) targetClosestEnemyFlag(BlockFlag.producer); + if(target == null) targetClosestEnemyFlag(BlockFlag.turret); - if(target == null) targetClosestEnemyFlag(BlockFlag.producer); - if(target == null) targetClosestEnemyFlag(BlockFlag.turret); + if(target == null){ + setState(patrol); + } + }); - if(target == null){ - setState(patrol); - } - }); - - }else{ + if(target != null){ attack(type.attackLength); if((Angles.near(angleTo(target), rotation, type.shootCone) || getWeapon().ignoreRotation) //bombers and such don't care about rotation diff --git a/core/src/io/anuke/mindustry/entities/type/Player.java b/core/src/io/anuke/mindustry/entities/type/Player.java index a592a0ce85..7598bfd03c 100644 --- a/core/src/io/anuke/mindustry/entities/type/Player.java +++ b/core/src/io/anuke/mindustry/entities/type/Player.java @@ -9,9 +9,13 @@ import io.anuke.arc.graphics.g2d.*; import io.anuke.arc.math.Angles; import io.anuke.arc.math.Mathf; import io.anuke.arc.math.geom.Geometry; +import io.anuke.arc.math.geom.Point2; import io.anuke.arc.math.geom.Rectangle; import io.anuke.arc.math.geom.Vector2; -import io.anuke.arc.util.*; +import io.anuke.arc.util.Align; +import io.anuke.arc.util.Interval; +import io.anuke.arc.util.Pack; +import io.anuke.arc.util.Time; import io.anuke.arc.util.pooling.Pools; import io.anuke.mindustry.content.Fx; import io.anuke.mindustry.content.Mechs; @@ -24,12 +28,12 @@ import io.anuke.mindustry.game.Team; import io.anuke.mindustry.gen.Call; import io.anuke.mindustry.graphics.Pal; import io.anuke.mindustry.input.Binding; +import io.anuke.mindustry.input.InputHandler.PlaceDraw; import io.anuke.mindustry.io.TypeIO; import io.anuke.mindustry.net.Net; import io.anuke.mindustry.net.NetConnection; import io.anuke.mindustry.type.*; import io.anuke.mindustry.world.Block; -import io.anuke.mindustry.world.Block.Icon; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.blocks.Floor; @@ -407,6 +411,7 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{ /** Draw all current build requests. Does not draw the beam effect, only the positions. */ public void drawBuildRequests(){ + BuildRequest last = null; for(BuildRequest request : getPlaceQueue()){ if(getCurrentRequest() == request && request.progress > 0.001f) continue; @@ -426,32 +431,37 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{ Lines.square( request.x * tilesize + block.offset(), - request.y * tilesize + block.offset(), - rad); + request.y * tilesize + block.offset(), rad); }else{ - float rad = Mathf.absin(Time.time(), 7f, 1f) - 1.5f + request.block.size * tilesize / 2f; - - //draw place request - Lines.stroke(1f, Pal.accentBack); - - Lines.square( - request.x * tilesize + request.block.offset(), - request.y * tilesize + request.block.offset() - 1, - rad); - Draw.color(); + PlaceDraw draw = PlaceDraw.instance; - Draw.rect(request.block.icon(Icon.full), - request.x * tilesize + request.block.offset(), - request.y * tilesize + request.block.offset(), rad*2, rad*2, request.block.rotate ? request.rotation * 90 : 0); + draw.scalex = 1; + draw.scaley = 1; + draw.rotation = request.rotation; + if(last == null){ + request.block.getPlaceDraw(draw, request.rotation, request.x, request.y, request.rotation); + }else{ + request.block.getPlaceDraw(draw, request.rotation, last.x - request.x, last.y - request.y, last.rotation); + } + + TextureRegion region = draw.region; + + Draw.rect(region, + request.x * tilesize + request.block.offset(), request.y * tilesize + request.block.offset(), + region.getWidth() * 1f * Draw.scl * draw.scalex, + region.getHeight() * 1f * Draw.scl * draw.scaley, request.block.rotate ? draw.rotation * 90 : 0); Draw.color(Pal.accent); + for(int i = 0; i < 4; i++){ + Point2 p = Geometry.d8edge[i]; + float offset = -Math.max(request.block.size-1, 0)/2f * tilesize; + if(i % 2 == 0) Draw.rect("block-select", request.x * tilesize + request.block.offset() + offset * p.x, request.y * tilesize + request.block.offset() + offset * p.y, i * 90); + } + Draw.color(); - Lines.square( - request.x * tilesize + request.block.offset(), - request.y * tilesize + request.block.offset(), - rad); + last = request; } } @@ -584,6 +594,8 @@ public class Player extends Unit implements BuilderTrait, ShooterTrait{ if(!ui.chatfrag.chatOpen()){ velocity.add(movement.x, movement.y); + }else{ + isShooting = false; } float prex = x, prey = y; updateVelocityStatus(); diff --git a/core/src/io/anuke/mindustry/game/Stats.java b/core/src/io/anuke/mindustry/game/Stats.java index d99edd78ce..05917231c5 100644 --- a/core/src/io/anuke/mindustry/game/Stats.java +++ b/core/src/io/anuke/mindustry/game/Stats.java @@ -30,7 +30,7 @@ public class Stats{ //each new launch period adds onto the rank 'points' if(wavesLasted >= zone.conditionWave){ - score += (float)((wavesLasted - zone.conditionWave) / zone.launchPeriod + 1) * 1.3f; + score += (float)((wavesLasted - zone.conditionWave) / zone.launchPeriod + 1) * 1.2f; } int capacity = zone.loadout.core().itemCapacity; @@ -42,7 +42,7 @@ public class Stats{ frac += Mathf.clamp((float)itemsDelivered.get(item, 0) / capacity) / (float)obtainable.size; } - score += frac*2.0f; + score += frac*1.6f; if(!launched){ score *= 0.5f; diff --git a/core/src/io/anuke/mindustry/input/Binding.java b/core/src/io/anuke/mindustry/input/Binding.java index 5600c5f213..dc23e9f7dd 100644 --- a/core/src/io/anuke/mindustry/input/Binding.java +++ b/core/src/io/anuke/mindustry/input/Binding.java @@ -15,6 +15,7 @@ public enum Binding implements KeyBind{ deselect(KeyCode.MOUSE_RIGHT), break_block(KeyCode.MOUSE_RIGHT), rotate(new Axis(KeyCode.SCROLL)), + diagonal_placement(KeyCode.CONTROL_LEFT), pick(KeyCode.MOUSE_MIDDLE), dash(KeyCode.SHIFT_LEFT), gridMode(KeyCode.GRAVE), diff --git a/core/src/io/anuke/mindustry/input/DesktopInput.java b/core/src/io/anuke/mindustry/input/DesktopInput.java index 4c22050f54..eeda4020d1 100644 --- a/core/src/io/anuke/mindustry/input/DesktopInput.java +++ b/core/src/io/anuke/mindustry/input/DesktopInput.java @@ -5,7 +5,6 @@ import io.anuke.arc.Graphics.Cursor; import io.anuke.arc.Graphics.Cursor.SystemCursor; import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.graphics.g2d.Lines; -import io.anuke.arc.graphics.g2d.TextureRegion; import io.anuke.arc.math.Mathf; import io.anuke.arc.math.geom.Geometry; import io.anuke.arc.math.geom.Point2; @@ -17,7 +16,6 @@ import io.anuke.mindustry.input.PlaceUtils.NormalizeDrawResult; import io.anuke.mindustry.input.PlaceUtils.NormalizeResult; import io.anuke.mindustry.net.Net; import io.anuke.mindustry.world.Block; -import io.anuke.mindustry.world.Block.Icon; import io.anuke.mindustry.world.Tile; import static io.anuke.mindustry.Vars.*; @@ -34,33 +32,35 @@ public class DesktopInput extends InputHandler{ /**Animation scale for line.*/ private float selectScale; + private int prevX, prevY, prevRotation; + public DesktopInput(Player player){ super(player); } /**Draws a placement icon for a specific block.*/ - void drawPlace(int x, int y, Block block, int rotation){ + void drawPlace(int x, int y, Block block, int rotation, int prevX, int prevY, int prevRotation){ if(validPlace(x, y, block, rotation)){ + block.getPlaceDraw(placeDraw, rotation, prevX, prevY, prevRotation); + Draw.color(); - - TextureRegion region = block.icon(Icon.full); - - Draw.rect(region, x * tilesize + block.offset(), y * tilesize + block.offset(), - region.getWidth() * selectScale * Draw.scl, - region.getHeight() * selectScale * Draw.scl, block.rotate ? rotation * 90 : 0); + Draw.rect(placeDraw.region, x * tilesize + block.offset(), y * tilesize + block.offset(), + placeDraw.region.getWidth() * selectScale * Draw.scl * placeDraw.scalex, + placeDraw.region.getHeight() * selectScale * Draw.scl * placeDraw.scaley, + block.rotate ? placeDraw.rotation * 90 : 0); Draw.color(Pal.accent); for(int i = 0; i < 4; i++){ Point2 p = Geometry.d8edge[i]; float offset = -Math.max(block.size-1, 0)/2f * tilesize; - Draw.rect("block-select", x * tilesize + block.offset() + offset * p.x, y * tilesize + block.offset() + offset * p.y, i * 90); + if(i % 2 == 0)Draw.rect("block-select", x * tilesize + block.offset() + offset * p.x, y * tilesize + block.offset() + offset * p.y, i * 90); } Draw.color(); }else{ Draw.color(Pal.removeBack); - Lines.square(x * tilesize + block.offset(), y * tilesize + block.offset() - 1, block.size * tilesize / 2f); + Lines.square(x * tilesize + block.offset(), y * tilesize + block.offset() - 1, block.size * tilesize / 2f - 1); Draw.color(Pal.remove); - Lines.square(x * tilesize + block.offset(), y * tilesize + block.offset(), block.size * tilesize / 2f); + Lines.square(x * tilesize + block.offset(), y * tilesize + block.offset(), block.size * tilesize / 2f - 1); } } @@ -77,32 +77,21 @@ public class DesktopInput extends InputHandler{ //draw selection(s) if(mode == placing && block != null){ - NormalizeResult result = PlaceUtils.normalizeArea(selectX, selectY, cursorX, cursorY, rotation, true, maxLength); + prevX = selectX; + prevY = selectY; + prevRotation = rotation; - for(int i = 0; i <= result.getLength(); i += block.size){ - int x = selectX + i * Mathf.sign(cursorX - selectX) * Mathf.num(result.isX()); - int y = selectY + i * Mathf.sign(cursorY - selectY) * Mathf.num(!result.isX()); - - if(i + block.size > result.getLength() && block.rotate){ - Draw.color(!validPlace(x, y, block, result.rotation) ? Pal.removeBack : Pal.accentBack); - Draw.rect(Core.atlas.find("place-arrow"), - x * tilesize + block.offset(), - y * tilesize + block.offset() - 1, - Core.atlas.find("place-arrow").getWidth() * Draw.scl, - Core.atlas.find("place-arrow").getHeight() * Draw.scl, result.rotation * 90 - 90); - - Draw.color(!validPlace(x, y, block, result.rotation) ? Pal.remove : Pal.accent); - Draw.rect(Core.atlas.find("place-arrow"), - x * tilesize + block.offset(), - y * tilesize + block.offset(), - Core.atlas.find("place-arrow").getWidth() * Draw.scl, - Core.atlas.find("place-arrow").getHeight() * Draw.scl, result.rotation * 90 - 90); + iterateLine(selectX, selectY, cursorX, cursorY, l -> { + if(l.last && block.rotate){ + drawArrow(block, l.x, l.y, l.rotation); } + drawPlace(l.x, l.y, block, l.rotation, prevX - l.x, prevY - l.y, prevRotation); - drawPlace(x, y, block, result.rotation); - } + prevX = l.x; + prevY = l.y; + prevRotation = l.rotation; + }); - Draw.reset(); }else if(mode == breaking){ NormalizeDrawResult result = PlaceUtils.normalizeDrawArea(Blocks.air, selectX, selectY, cursorX, cursorY, false, maxLength, 1f); NormalizeResult dresult = PlaceUtils.normalizeArea(selectX, selectY, cursorX, cursorY, rotation, false, maxLength); @@ -126,21 +115,9 @@ public class DesktopInput extends InputHandler{ Lines.rect(result.x, result.y, result.x2 - result.x, result.y2 - result.y); }else if(isPlacing()){ if(block.rotate){ - Draw.color(!validPlace(cursorX, cursorY, block, rotation) ? Pal.removeBack : Pal.accentBack); - Draw.rect(Core.atlas.find("place-arrow"), - cursorX * tilesize + block.offset(), - cursorY * tilesize + block.offset() - 1, - Core.atlas.find("place-arrow").getWidth() * Draw.scl, - Core.atlas.find("place-arrow").getHeight() * Draw.scl, rotation * 90 - 90); - - Draw.color(!validPlace(cursorX, cursorY, block, rotation) ? Pal.remove : Pal.accent); - Draw.rect(Core.atlas.find("place-arrow"), - cursorX * tilesize + block.offset(), - cursorY * tilesize + block.offset(), - Core.atlas.find("place-arrow").getWidth() * Draw.scl, - Core.atlas.find("place-arrow").getHeight() * Draw.scl, rotation * 90 - 90); + drawArrow(block, cursorX, cursorY, rotation); } - drawPlace(cursorX, cursorY, block, rotation); + drawPlace(cursorX, cursorY, block, rotation, cursorX, cursorY, rotation); block.drawPlace(cursorX, cursorY, rotation, validPlace(cursorX, cursorY, block, rotation)); } @@ -166,7 +143,10 @@ public class DesktopInput extends InputHandler{ //renderer.minimap.zoomBy(-Core.input.axisTap(Binding.zoom_minimap)); - if(player.isDead()) return; + if(player.isDead()){ + cursorType = SystemCursor.arrow; + return; + } pollInput(); @@ -190,9 +170,7 @@ public class DesktopInput extends InputHandler{ Tile cursor = tileAt(Core.input.mouseX(), Core.input.mouseY()); - if(player.isDead()){ - cursorType = SystemCursor.arrow; - }else if(cursor != null){ + if(cursor != null){ cursor = cursor.target(); cursorType = cursor.block().getCursor(cursor); @@ -255,20 +233,13 @@ public class DesktopInput extends InputHandler{ selectY = tileY(Core.input.mouseY()); } - if(Core.input.keyRelease(Binding.break_block) || Core.input.keyRelease(Binding.select)){ if(mode == placing && block != null){ //touch up while placing, place everything in selection - NormalizeResult result = PlaceUtils.normalizeArea(selectX, selectY, cursorX, cursorY, rotation, true, maxLength); - - for(int i = 0; i <= result.getLength(); i += block.size){ - int x = selectX + i * Mathf.sign(cursorX - selectX) * Mathf.num(result.isX()); - int y = selectY + i * Mathf.sign(cursorY - selectY) * Mathf.num(!result.isX()); - - rotation = result.rotation; - - tryPlaceBlock(x, y); - } + iterateLine(selectX, selectY, cursorX, cursorY, l -> { + rotation = l.rotation; + tryPlaceBlock(l.x, l.y); + }); }else if(mode == breaking){ //touch up while breaking, break everything in selection NormalizeResult result = PlaceUtils.normalizeArea(selectX, selectY, cursorX, cursorY, rotation, false, maxLength); for(int x = 0; x <= Math.abs(result.x2 - result.x); x++){ @@ -287,7 +258,6 @@ public class DesktopInput extends InputHandler{ mode = none; } - } @Override @@ -312,5 +282,4 @@ public class DesktopInput extends InputHandler{ droppingItem = false; } } - } diff --git a/core/src/io/anuke/mindustry/input/InputHandler.java b/core/src/io/anuke/mindustry/input/InputHandler.java index 75a773d16f..46e442a818 100644 --- a/core/src/io/anuke/mindustry/input/InputHandler.java +++ b/core/src/io/anuke/mindustry/input/InputHandler.java @@ -3,13 +3,19 @@ package io.anuke.mindustry.input; import io.anuke.annotations.Annotations.Loc; import io.anuke.annotations.Annotations.Remote; import io.anuke.arc.Core; +import io.anuke.arc.collection.Array; +import io.anuke.arc.function.Consumer; import io.anuke.arc.graphics.Color; +import io.anuke.arc.graphics.g2d.Draw; +import io.anuke.arc.graphics.g2d.TextureRegion; import io.anuke.arc.input.InputProcessor; import io.anuke.arc.math.Angles; import io.anuke.arc.math.Mathf; +import io.anuke.arc.math.geom.Point2; import io.anuke.arc.math.geom.Vector2; import io.anuke.arc.scene.ui.layout.Table; import io.anuke.arc.util.Time; +import io.anuke.arc.util.Tmp; import io.anuke.mindustry.content.Blocks; import io.anuke.mindustry.content.Fx; import io.anuke.mindustry.entities.Effects; @@ -17,6 +23,7 @@ import io.anuke.mindustry.entities.effect.ItemTransfer; import io.anuke.mindustry.entities.traits.BuilderTrait.BuildRequest; import io.anuke.mindustry.entities.type.Player; import io.anuke.mindustry.gen.Call; +import io.anuke.mindustry.graphics.Pal; import io.anuke.mindustry.net.Net; import io.anuke.mindustry.net.ValidateException; import io.anuke.mindustry.type.Item; @@ -44,6 +51,9 @@ public abstract class InputHandler implements InputProcessor{ public int rotation; public boolean droppingItem; + protected PlaceDraw placeDraw = new PlaceDraw(); + private PlaceLine line = new PlaceLine(); + public InputHandler(Player player){ this.player = player; } @@ -337,4 +347,67 @@ public abstract class InputHandler implements InputProcessor{ player.addBuildRequest(new BuildRequest(tile.x, tile.y)); } + void drawArrow(Block block, int x, int y, int rotation){ + Draw.color(!validPlace(x, y, block, rotation) ? Pal.removeBack : Pal.accentBack); + Draw.rect(Core.atlas.find("place-arrow"), + x * tilesize + block.offset(), + y * tilesize + block.offset() - 1, + Core.atlas.find("place-arrow").getWidth() * Draw.scl, + Core.atlas.find("place-arrow").getHeight() * Draw.scl, rotation * 90 - 90); + + Draw.color(!validPlace(x, y, block, rotation) ? Pal.remove : Pal.accent); + Draw.rect(Core.atlas.find("place-arrow"), + x * tilesize + block.offset(), + y * tilesize + block.offset(), + Core.atlas.find("place-arrow").getWidth() * Draw.scl, + Core.atlas.find("place-arrow").getHeight() * Draw.scl, rotation * 90 - 90); + } + + void iterateLine(int startX, int startY, int endX, int endY, Consumer cons){ + Array points; + boolean diagonal = Core.input.keyDown(Binding.diagonal_placement); + if(Core.settings.getBool("swapdiagonal")){ + diagonal = !diagonal; + } + + if(diagonal){ + points = PlaceUtils.normalizeDiagonal(startX, startY, endX, endY); + }else{ + points = PlaceUtils.normalizeLine(startX, startY, endX, endY); + } + + float angle = Angles.angle(startX, startY, endX, endY); + int baseRotation = (startX == endX && startY == endY) ? rotation : ((int)((angle + 45) / 90f)) % 4; + + Tmp.r3.set(-1, -1, 0, 0); + + for(int i = 0; i < points.size; i++){ + Point2 point = points.get(i); + + if(block != null && Tmp.r2.setSize(block.size * tilesize).setCenter(point.x*tilesize + block.offset(), point.y*tilesize + block.offset()).overlaps(Tmp.r3)){ + continue; + } + + Point2 next = i == points.size - 1 ? null : points.get(i + 1); + line.x = point.x; + line.y = point.y; + line.rotation = next != null ? Tile.relativeTo(point.x, point.y, next.x, next.y) : baseRotation; + line.last = next == null; + cons.accept(line); + + Tmp.r3.setSize(block.size * tilesize).setCenter(point.x*tilesize + block.offset(), point.y*tilesize + block.offset()); + } + } + + public static class PlaceDraw{ + public int rotation, scalex, scaley; + public TextureRegion region; + + public static final PlaceDraw instance = new PlaceDraw(); + } + + class PlaceLine{ + public int x, y, rotation; + public boolean last; + } } diff --git a/core/src/io/anuke/mindustry/input/MobileInput.java b/core/src/io/anuke/mindustry/input/MobileInput.java index cb2b4a3900..a2b1d076ef 100644 --- a/core/src/io/anuke/mindustry/input/MobileInput.java +++ b/core/src/io/anuke/mindustry/input/MobileInput.java @@ -34,7 +34,6 @@ import io.anuke.mindustry.input.PlaceUtils.NormalizeDrawResult; import io.anuke.mindustry.input.PlaceUtils.NormalizeResult; import io.anuke.mindustry.ui.dialogs.FloatingDialog; import io.anuke.mindustry.world.Block; -import io.anuke.mindustry.world.Block.Icon; import io.anuke.mindustry.world.Tile; import static io.anuke.mindustry.Vars.*; @@ -50,7 +49,6 @@ public class MobileInput extends InputHandler implements GestureListener{ //gesture data private Vector2 vector = new Vector2(); private float lastDistance = -1f; - private boolean canPan; /** Set of completed guides. */ private ObjectSet guides = new ObjectSet<>(); @@ -62,6 +60,8 @@ public class MobileInput extends InputHandler implements GestureListener{ /** Animation data for crosshair. */ private float crosshairScale; private TargetTrait lastTarget; + /** Used for shifting build requests.*/ + private float shiftDeltaX, shiftDeltaY; /** List of currently selected tiles to place. */ private Array selection = new Array<>(); @@ -78,6 +78,8 @@ public class MobileInput extends InputHandler implements GestureListener{ /** Last placed request. Used for drawing block overlay. */ private PlaceRequest lastPlaced; + private int prevX, prevY, prevRotation; + public MobileInput(Player player){ super(player); Core.input.addProcessor(new GestureDetector(20, 0.5f, 0.4f, 0.15f, this)); @@ -167,42 +169,6 @@ public class MobileInput extends InputHandler implements GestureListener{ removals.add(request); } - void drawRequest(PlaceRequest request){ - Tile tile = request.tile(); - - if(!request.remove){ - //draw placing request - float offset = request.block.offset(); - TextureRegion region = request.block.icon(Icon.full); - - Draw.mixcol(Pal.accent, Mathf.clamp((1f - request.scale) / 0.5f)); - Draw.tint(Color.WHITE, Pal.breakInvalid, request.redness); - - Draw.rect(region, tile.worldx() + offset, tile.worldy() + offset, - region.getWidth() * request.scale * Draw.scl, - region.getHeight() * request.scale * Draw.scl, - request.block.rotate ? request.rotation * 90 : 0); - - Draw.mixcol(Pal.accent, 1f); - for(int i = 0; i < 4; i++){ - Point2 p = Geometry.d8edge[i]; - float poffset = -Math.max(request.block.size-1, 0)/2f * tilesize; - TextureRegion find = Core.atlas.find("block-select"); - Draw.rect("block-select", request.tile().x * tilesize + request.block.offset() + poffset * p.x, request.tile().y * tilesize + request.block.offset() + poffset * p.y, - find.getWidth() * Draw.scl * request.scale, find.getHeight() * Draw.scl * request.scale, i * 90); - } - Draw.color(); - }else{ - float rad = (tile.block().size * tilesize / 2f - 1) * request.scale; - Draw.mixcol(); - //draw removing request - Draw.tint(Pal.removeBack); - Lines.square(tile.drawx(), tile.drawy()-1, rad); - Draw.tint(Pal.remove); - Lines.square(tile.drawx(), tile.drawy(), rad); - } - } - void showGuide(String type){ if(!guides.contains(type) && !Core.settings.getBool(type, false)){ FloatingDialog dialog = new FloatingDialog("$" + type + ".title"); @@ -219,26 +185,76 @@ public class MobileInput extends InputHandler implements GestureListener{ } } - void drawPlaceArrow(Block block, int x, int y, int rotation){ - if(!block.rotate) return; - Draw.color(!validPlace(x, y, block, rotation) ? Pal.removeBack : Pal.accentBack); - Draw.rect(Core.atlas.find("place-arrow"), - x * tilesize + block.offset(), - y * tilesize + block.offset() - 1, - Core.atlas.find("place-arrow").getWidth() * Draw.scl, - Core.atlas.find("place-arrow").getHeight() * Draw.scl, rotation * 90 - 90); + //endregion + //region UI and drawing - Draw.color(!validPlace(x, y, block, rotation) ? Pal.remove : Pal.accent); - Draw.rect(Core.atlas.find("place-arrow"), - x * tilesize + block.offset(), - y * tilesize + block.offset(), - Core.atlas.find("place-arrow").getWidth() * Draw.scl, - Core.atlas.find("place-arrow").getHeight() * Draw.scl, rotation * 90 - 90); + void drawRequest(PlaceRequest request, PlaceRequest prev){ + Tile tile = request.tile(); + + if(!request.remove){ + if(prev != null){ + block.getPlaceDraw(placeDraw, request.rotation, prev.x - request.x, prev.y - request.y, prev.rotation); + }else{ + block.getPlaceDraw(placeDraw, request.rotation, 0, 0, request.rotation); + } + + //draw placing request + float offset = request.block.offset(); + TextureRegion region = placeDraw.region; + + Draw.mixcol(Pal.accent, Mathf.clamp((1f - request.scale) / 0.5f)); + Draw.tint(Color.WHITE, Pal.breakInvalid, request.redness); + + Draw.rect(region, tile.worldx() + offset, tile.worldy() + offset, + region.getWidth() * request.scale * Draw.scl * placeDraw.scalex, + region.getHeight() * request.scale * Draw.scl * placeDraw.scaley, + request.block.rotate ? placeDraw.rotation * 90 : 0); + + Draw.mixcol(Pal.accent, 1f); + for(int i = 0; i < 4; i++){ + Point2 p = Geometry.d8edge[i]; + float poffset = -Math.max(request.block.size-1, 0)/2f * tilesize; + TextureRegion find = Core.atlas.find("block-select"); + if(i%2 == 0) Draw.rect("block-select", request.tile().x * tilesize + request.block.offset() + poffset * p.x, request.tile().y * tilesize + request.block.offset() + poffset * p.y, + find.getWidth() * Draw.scl * request.scale, find.getHeight() * Draw.scl * request.scale, i * 90); + } + Draw.color(); + }else{ + float rad = (tile.block().size * tilesize / 2f - 1) * request.scale; + Draw.mixcol(); + //draw removing request + Draw.tint(Pal.removeBack); + Lines.square(tile.drawx(), tile.drawy()-1, rad); + Draw.tint(Pal.remove); + Lines.square(tile.drawx(), tile.drawy(), rad); + } } - //endregion + /**Draws a placement icon for a specific block.*/ + void drawPlace(int x, int y, Block block, int rotation, int prevX, int prevY, int prevRotation){ + if(validPlace(x, y, block, rotation)){ + block.getPlaceDraw(placeDraw, rotation, prevX, prevY, prevRotation); - //region UI and drawing + Draw.color(); + Draw.rect(placeDraw.region, x * tilesize + block.offset(), y * tilesize + block.offset(), + placeDraw.region.getWidth() * Draw.scl * placeDraw.scalex, + placeDraw.region.getHeight() * Draw.scl * placeDraw.scaley, + block.rotate ? placeDraw.rotation * 90 : 0); + + Draw.color(Pal.accent); + for(int i = 0; i < 4; i++){ + Point2 p = Geometry.d8edge[i]; + float offset = -Math.max(block.size-1, 0)/2f * tilesize; + if(i % 2 == 0)Draw.rect("block-select", x * tilesize + block.offset() + offset * p.x, y * tilesize + block.offset() + offset * p.y, i * 90); + } + Draw.color(); + }else{ + Draw.color(Pal.removeBack); + Lines.square(x * tilesize + block.offset(), y * tilesize + block.offset() - 1, block.size * tilesize / 2f - 1); + Draw.color(Pal.remove); + Lines.square(x * tilesize + block.offset(), y * tilesize + block.offset(), block.size * tilesize / 2f - 1); + } + } @Override public void buildUI(Table table){ @@ -314,9 +330,11 @@ public class MobileInput extends InputHandler implements GestureListener{ request.scale = Mathf.lerpDelta(request.scale, 0f, 0.2f); request.redness = Mathf.lerpDelta(request.redness, 0f, 0.2f); - drawRequest(request); + drawRequest(request, null); } + PlaceRequest last = null; + //draw list of requests for(PlaceRequest request : selection){ Tile tile = request.tile(); @@ -336,17 +354,19 @@ public class MobileInput extends InputHandler implements GestureListener{ if(!request.remove && request == lastPlaced && request.block != null){ Draw.mixcol(); - drawPlaceArrow(request.block, tile.x, tile.y, request.rotation); + drawArrow(request.block, tile.x, tile.y, request.rotation); } Draw.mixcol(Tmp.c1, 1f); - drawRequest(request); + drawRequest(request, last); //draw last placed request if(!request.remove && request == lastPlaced && request.block != null){ Draw.mixcol(); request.block.drawPlace(tile.x, tile.y, rotation, validPlace(tile.x, tile.y, request.block, rotation)); } + + last = request; } Draw.mixcol(); @@ -357,51 +377,23 @@ public class MobileInput extends InputHandler implements GestureListener{ int tileX = tileX(Core.input.mouseX()); int tileY = tileY(Core.input.mouseY()); - //draw placing if(mode == placing && block != null){ + //draw placing - NormalizeDrawResult dresult = PlaceUtils.normalizeDrawArea(block, lineStartX, lineStartY, tileX, tileY, true, maxLength, lineScale); + prevX = lineStartX; + prevY = lineStartY; + prevRotation = rotation; - Lines.rect(dresult.x, dresult.y, dresult.x2 - dresult.x, dresult.y2 - dresult.y); - - NormalizeResult result = PlaceUtils.normalizeArea(lineStartX, lineStartY, tileX, tileY, rotation, true, maxLength); - - { - int x = lineStartX + result.getLength() * Mathf.sign(tileX - lineStartX) * Mathf.num(result.isX()); - int y = lineStartY + result.getLength() * Mathf.sign(tileY - lineStartY) * Mathf.num(!result.isX()); - drawPlaceArrow(block, x, y, result.rotation); - } - - //go through each cell and draw the block to place if valid - for(int i = 0; i <= result.getLength(); i += block.size){ - int x = lineStartX + i * Mathf.sign(tileX - lineStartX) * Mathf.num(result.isX()); - int y = lineStartY + i * Mathf.sign(tileY - lineStartY) * Mathf.num(!result.isX()); - - if(!checkOverlapPlacement(x, y, block) && validPlace(x, y, block, result.rotation)){ - Draw.color(); - - TextureRegion region = block.icon(Icon.full); - - Draw.rect(region, x * tilesize + block.offset(), y * tilesize + block.offset(), - region.getWidth() * lineScale * Draw.scl, - region.getHeight() * lineScale * Draw.scl, - block.rotate ? result.rotation * 90 : 0); - - Draw.color(Pal.accent); - for(int j = 0; j < 4; j++){ - Point2 p = Geometry.d8edge[j]; - float offset = -Math.max(block.size-1, 0)/2f * tilesize; - Draw.rect("block-select", x * tilesize + block.offset() + offset * p.x, y * tilesize + block.offset() + offset * p.y,j * 90); - } - Draw.color(); - }else{ - Draw.color(Pal.removeBack); - Lines.square(x * tilesize + block.offset(), y * tilesize + block.offset() - 1, block.size * tilesize / 2f); - Draw.color(Pal.remove); - Lines.square(x * tilesize + block.offset(), y * tilesize + block.offset(), block.size * tilesize / 2f); + iterateLine(lineStartX, lineStartY, tileX, tileY, l -> { + if(l.last && block.rotate){ + drawArrow(block, l.x, l.y, l.rotation); } - } + drawPlace(l.x, l.y, block, l.rotation, prevX - l.x, prevY - l.y, prevRotation); + prevX = l.x; + prevY = l.y; + prevRotation = l.rotation; + }); }else if(mode == breaking){ //draw breaking NormalizeDrawResult result = PlaceUtils.normalizeDrawArea(Blocks.air, lineStartX, lineStartY, tileX, tileY, false, maxLength, 1f); @@ -487,28 +479,12 @@ public class MobileInput extends InputHandler implements GestureListener{ int tileX = tileX(screenX); int tileY = tileY(screenY); - if(mode == placing && block != null){ - - //normalize area - NormalizeResult result = PlaceUtils.normalizeArea(lineStartX, lineStartY, tileX, tileY, rotation, true, 100); - - rotation = result.rotation; - - //place blocks on line - for(int i = 0; i <= result.getLength(); i += block.size){ - int x = lineStartX + i * Mathf.sign(tileX - lineStartX) * Mathf.num(result.isX()); - int y = lineStartY + i * Mathf.sign(tileY - lineStartY) * Mathf.num(!result.isX()); - - if(!checkOverlapPlacement(x, y, block) && validPlace(x, y, block, result.rotation)){ - PlaceRequest request = new PlaceRequest(x * tilesize + block.offset(), y * tilesize + block.offset(), block, result.rotation); - request.scale = 1f; - selection.add(request); - } - } - - //reset last placed for convenience - lastPlaced = null; - + if(mode == placing && isPlacing()){ + iterateLine(lineStartX, lineStartY, tileX, tileY, l -> { + PlaceRequest request = new PlaceRequest(l.x, l.y, block, l.rotation); + request.scale = 1f; + selection.add(request); + }); }else if(mode == breaking){ //normalize area NormalizeResult result = PlaceUtils.normalizeArea(lineStartX, lineStartY, tileX, tileY, rotation, false, maxLength); @@ -526,7 +502,7 @@ public class MobileInput extends InputHandler implements GestureListener{ tar = tar.target(); if(!hasRequest(world.tile(tar.x, tar.y)) && validBreak(tar.x, tar.y)){ - PlaceRequest request = new PlaceRequest(tar.worldx(), tar.worldy()); + PlaceRequest request = new PlaceRequest(tar.x, tar.y); request.scale = 1f; selection.add(request); } @@ -589,11 +565,11 @@ public class MobileInput extends InputHandler implements GestureListener{ removeRequest(getRequest(cursor)); }else if(mode == placing && isPlacing() && validPlace(cursor.x, cursor.y, block, rotation) && !checkOverlapPlacement(cursor.x, cursor.y, block)){ //add to selection queue if it's a valid place position - selection.add(lastPlaced = new PlaceRequest(cursor.worldx() + block.offset(), cursor.worldy() + block.offset(), block, rotation)); + selection.add(lastPlaced = new PlaceRequest(cursor.x, cursor.y, block, rotation)); }else if(mode == breaking && validBreak(cursor.target().x, cursor.target().y) && !hasRequest(cursor.target())){ //add to selection queue if it's a valid BREAK position cursor = cursor.target(); - selection.add(new PlaceRequest(cursor.worldx(), cursor.worldy())); + selection.add(new PlaceRequest(cursor.x, cursor.y)); }else if(!canTapPlayer(worldx, worldy) && !tileTapped(cursor.target())){ tryBeginMine(cursor); } @@ -701,10 +677,21 @@ public class MobileInput extends InputHandler implements GestureListener{ } if(selecting){ //pan all requests - for(PlaceRequest req : selection){ - if(req.remove) continue; //don't shift removal requests - req.x += deltaX; - req.y += deltaY; + shiftDeltaX += deltaX; + shiftDeltaY += deltaY; + + int shiftedX = (int)(shiftDeltaX / tilesize); + int shiftedY = (int)(shiftDeltaY / tilesize); + + if(Math.abs(shiftedX) > 0 || Math.abs(shiftedY) > 0){ + for(PlaceRequest req : selection){ + if(req.remove) continue; //don't shift removal requests + req.x += shiftedX; + req.y += shiftedY; + } + + shiftDeltaX %= tilesize; + shiftDeltaY %= tilesize; } }else{ //pan player @@ -715,6 +702,12 @@ public class MobileInput extends InputHandler implements GestureListener{ return false; } + @Override + public boolean panStop(float x, float y, int pointer, KeyCode button){ + shiftDeltaX = shiftDeltaY = 0f; + return false; + } + @Override public boolean zoom(float initialDistance, float distance){ if(lastDistance == -1) lastDistance = initialDistance; @@ -727,8 +720,8 @@ public class MobileInput extends InputHandler implements GestureListener{ //endregion - class PlaceRequest{ - float x, y; + private class PlaceRequest{ + int x, y; Block block; int rotation; boolean remove; @@ -737,7 +730,7 @@ public class MobileInput extends InputHandler implements GestureListener{ float scale; float redness; - PlaceRequest(float x, float y, Block block, int rotation){ + PlaceRequest(int x, int y, Block block, int rotation){ this.x = x; this.y = y; this.block = block; @@ -745,14 +738,14 @@ public class MobileInput extends InputHandler implements GestureListener{ this.remove = false; } - PlaceRequest(float x, float y){ + PlaceRequest(int x, int y){ this.x = x; this.y = y; this.remove = true; } Tile tile(){ - return world.tileWorld(x - (block == null ? 0 : block.offset()), y - (block == null ? 0 : block.offset())); + return world.tile(x, y); } } } diff --git a/core/src/io/anuke/mindustry/input/PlaceUtils.java b/core/src/io/anuke/mindustry/input/PlaceUtils.java index c2e3370eed..1a36c24608 100644 --- a/core/src/io/anuke/mindustry/input/PlaceUtils.java +++ b/core/src/io/anuke/mindustry/input/PlaceUtils.java @@ -1,13 +1,44 @@ package io.anuke.mindustry.input; -import io.anuke.mindustry.world.Block; +import io.anuke.arc.collection.Array; import io.anuke.arc.math.Mathf; +import io.anuke.arc.math.geom.Bresenham2; +import io.anuke.arc.math.geom.Point2; +import io.anuke.arc.util.pooling.Pools; +import io.anuke.mindustry.world.Block; import static io.anuke.mindustry.Vars.tilesize; public class PlaceUtils{ private static final NormalizeResult result = new NormalizeResult(); private static final NormalizeDrawResult drawResult = new NormalizeDrawResult(); + private static Bresenham2 bres = new Bresenham2(); + private static Array points = new Array<>(); + + /**Normalize a diagonal line into points. */ + public static Array normalizeDiagonal(int startX, int startY, int endX, int endY){ + Pools.freeAll(points); + points.clear(); + return bres.lineNoDiagonal(startX, startY, endX, endY, Pools.get(Point2.class, Point2::new), points); + } + + /**Normalize two points into one straight line, no diagonals.*/ + public static Array normalizeLine(int startX, int startY, int endX, int endY){ + Pools.freeAll(points); + points.clear(); + if(Math.abs(startX - endX) > Math.abs(startY - endY)){ + //go width + for(int i = 0; i <= Math.abs(startX - endX); i++){ + points.add(Pools.obtain(Point2.class, Point2::new).set(startX + i*Mathf.sign(endX - startX), startY)); + } + }else{ + //go height + for(int i = 0; i <= Math.abs(startY - endY); i++){ + points.add(Pools.obtain(Point2.class, Point2::new).set(startX, startY + i*Mathf.sign(endY - startY))); + } + } + return points; + } /** * Normalizes a placement area and returns the result, ready to be used for drawing a rectangle. diff --git a/core/src/io/anuke/mindustry/maps/generators/MapGenerator.java b/core/src/io/anuke/mindustry/maps/generators/MapGenerator.java index c4087ca2e1..96a904fc8c 100644 --- a/core/src/io/anuke/mindustry/maps/generators/MapGenerator.java +++ b/core/src/io/anuke/mindustry/maps/generators/MapGenerator.java @@ -25,7 +25,7 @@ import static io.anuke.mindustry.Vars.world; public class MapGenerator extends Generator{ private Map map; private String mapName; - private Array decorations = new Array<>(); + private Array decorations = Array.with(new Decoration(Blocks.stone, Blocks.rock, 0.003f)); private Loadout loadout; /**How much the landscape is randomly distorted.*/ public float distortion = 3; @@ -99,6 +99,10 @@ public class MapGenerator extends Generator{ enemies.add(new Point2(x, y)); tiles[x][y].setBlock(Blocks.air); } + + if(tiles[x][y].block() == Blocks.part){ + tiles[x][y].setBlock(Blocks.air); + } } } @@ -120,9 +124,14 @@ public class MapGenerator extends Generator{ if(distortFloor){ tile.setFloor(tiles[newX][newY].floor()); + tile.setOre(tiles[newX][newY].ore()); } for(Decoration decor : decorations){ + if(x > 0 && y > 0 && (tiles[x - 1][y].block() == decor.wall || tiles[x][y - 1].block() == decor.wall)){ + continue; + } + if(tile.block() == Blocks.air && !(decor.wall instanceof Floor) && tile.floor() == decor.floor && Mathf.chance(decor.chance)){ tile.setBlock(decor.wall); }else if(tile.floor() == decor.floor && decor.wall instanceof Floor && Mathf.chance(decor.chance)){ diff --git a/core/src/io/anuke/mindustry/ui/dialogs/SettingsMenuDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/SettingsMenuDialog.java index 60e0ad707e..fa55b6534d 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/SettingsMenuDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/SettingsMenuDialog.java @@ -124,6 +124,7 @@ public class SettingsMenuDialog extends SettingsDialog{ game.screenshakePref(); game.checkPref("effects", true); + game.checkPref("swapdiagonal", false); if(mobile){ game.checkPref("autotarget", true); } diff --git a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java index 682fabf56e..58a46650b8 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java @@ -4,6 +4,7 @@ import io.anuke.arc.Core; import io.anuke.arc.Events; import io.anuke.arc.collection.Array; import io.anuke.arc.graphics.Color; +import io.anuke.arc.input.KeyCode; import io.anuke.arc.math.Interpolation; import io.anuke.arc.math.Mathf; import io.anuke.arc.scene.Element; @@ -31,6 +32,7 @@ import io.anuke.mindustry.net.Net; import io.anuke.mindustry.net.Packets.AdminAction; import io.anuke.mindustry.ui.Bar; import io.anuke.mindustry.ui.IntFormat; +import io.anuke.mindustry.ui.dialogs.FloatingDialog; import static io.anuke.mindustry.Vars.*; @@ -222,16 +224,37 @@ public class HudFragment extends Fragment{ //launch button parent.fill(t -> { t.top().visible(() -> !state.is(State.menu)); + TextButton[] testb = {null}; - TextButton button = Elements.newButton("$launch", () -> ui.showConfirm("$launch", "$launch.confirm", Call::launchZone)); + TextButton button = Elements.newButton("$launch", () -> { + FloatingDialog dialog = new FloatingDialog("$launch"); + dialog.update(() -> { + if(!testb[0].isVisible()){ + dialog.hide(); + } + }); + dialog.cont.add("$launch.confirm").width(500f).wrap().pad(4f).get().setAlignment(Align.center, Align.center); + dialog.buttons.defaults().size(200f, 54f).pad(2f); + dialog.setFillParent(false); + dialog.buttons.addButton("$cancel", dialog::hide); + dialog.buttons.addButton("$ok", () -> { + dialog.hide(); + Call.launchZone(); + }); + dialog.keyDown(KeyCode.ESCAPE, dialog::hide); + dialog.keyDown(KeyCode.BACK, dialog::hide); + dialog.show(); + + }); + + testb[0] = button; button.getStyle().disabledFontColor = Color.WHITE; button.visible(() -> world.isZone() && world.getZone().metCondition() && !Net.client() && - state.wave % world.getZone().launchPeriod == 0 && - state.wavetime < state.rules.waveSpacing * launchWaveMultiplier - 70); + state.wave % world.getZone().launchPeriod == 0 && !world.spawner.isSpawning()); button.update(() -> { if(world.getZone() == null){ @@ -444,6 +467,6 @@ public class HudFragment extends Fragment{ } }).growY().fillX().right().width(40f) .visible(() -> state.rules.waves && ((Net.server() || players[0].isAdmin) || !Net.active()) && state.enemies() == 0 - && (state.wavetime < state.rules.waveSpacing - 60 || !state.rules.waveTimer)); + && (!world.spawner.isSpawning() || !state.rules.waveTimer)); } } diff --git a/core/src/io/anuke/mindustry/world/Block.java b/core/src/io/anuke/mindustry/world/Block.java index 95bfcb99eb..749ee5cc64 100644 --- a/core/src/io/anuke/mindustry/world/Block.java +++ b/core/src/io/anuke/mindustry/world/Block.java @@ -26,6 +26,7 @@ import io.anuke.mindustry.game.UnlockableContent; import io.anuke.mindustry.graphics.CacheLayer; import io.anuke.mindustry.graphics.Layer; import io.anuke.mindustry.graphics.Pal; +import io.anuke.mindustry.input.InputHandler.PlaceDraw; import io.anuke.mindustry.type.*; import io.anuke.mindustry.ui.Bar; import io.anuke.mindustry.ui.ContentDisplay; @@ -269,6 +270,7 @@ public class Block extends BlockStorage{ public float sumAttribute(Attribute attr, int x, int y){ Tile tile = world.tile(x, y); + if(tile == null) return 0; float sum = 0; for(Tile other : tile.getLinkedTilesAs(this, tempTiles)){ sum += other.floor().attributes.get(attr); @@ -546,6 +548,12 @@ public class Block extends BlockStorage{ return icons[icon.ordinal()]; } + public void getPlaceDraw(PlaceDraw draw, int rotation, int prevX, int prevY, int prevRotation){ + draw.region = icon(Icon.full); + draw.scalex = draw.scaley = 1; + draw.rotation = rotation; + } + /**Never use outside of the editor!*/ public TextureRegion editorIcon(){ if(editorIcon == null) editorIcon = Core.atlas.find(name + "-icon-editor"); diff --git a/core/src/io/anuke/mindustry/world/Tile.java b/core/src/io/anuke/mindustry/world/Tile.java index bb3d9dacfa..6bd1f201a3 100644 --- a/core/src/io/anuke/mindustry/world/Tile.java +++ b/core/src/io/anuke/mindustry/world/Tile.java @@ -87,6 +87,14 @@ public class Tile implements Position, TargetTrait{ return -1; } + public static byte relativeTo(int x, int y, int cx, int cy){ + if(x == cx && y == cy - 1) return 1; + if(x == cx && y == cy + 1) return 3; + if(x == cx - 1 && y == cy) return 0; + if(x == cx + 1 && y == cy) return 2; + return -1; + } + public byte absoluteRelativeTo(int cx, int cy){ if(x == cx && y <= cy - 1) return 1; if(x == cx && y >= cy + 1) return 3; @@ -95,6 +103,14 @@ public class Tile implements Position, TargetTrait{ return -1; } + public static byte absoluteRelativeTo(int x, int y, int cx, int cy){ + if(x == cx && y <= cy - 1) return 1; + if(x == cx && y >= cy + 1) return 3; + if(x <= cx - 1 && y == cy) return 0; + if(x >= cx + 1 && y == cy) return 2; + return -1; + } + @SuppressWarnings("unchecked") public T entity(){ return (T) entity; diff --git a/core/src/io/anuke/mindustry/world/blocks/Floor.java b/core/src/io/anuke/mindustry/world/blocks/Floor.java index 0487c66e85..023224df81 100644 --- a/core/src/io/anuke/mindustry/world/blocks/Floor.java +++ b/core/src/io/anuke/mindustry/world/blocks/Floor.java @@ -109,12 +109,13 @@ public class Floor extends Block{ Mathf.random.setSeed(tile.pos()); Draw.rect(variantRegions[Mathf.randomSeed(tile.pos(), 0, Math.max(0, variantRegions.length - 1))], tile.worldx(), tile.worldy()); + + drawEdges(tile); + Floor floor = tile.ore(); if(floor != Blocks.air && floor != this){ //ore should never have itself on top, but it's possible, so prevent a crash in that case floor.draw(tile); } - - drawEdges(tile); } diff --git a/core/src/io/anuke/mindustry/world/blocks/defense/turrets/Turret.java b/core/src/io/anuke/mindustry/world/blocks/defense/turrets/Turret.java index 4b6990d320..fb79202269 100644 --- a/core/src/io/anuke/mindustry/world/blocks/defense/turrets/Turret.java +++ b/core/src/io/anuke/mindustry/world/blocks/defense/turrets/Turret.java @@ -58,6 +58,7 @@ public abstract class Turret extends Block{ protected float shootShake = 0f; protected float xRand = 0f; protected boolean targetAir = true; + protected boolean targetGround = true; protected Vector2 tr = new Vector2(); protected Vector2 tr2 = new Vector2(); @@ -108,6 +109,7 @@ public abstract class Turret extends Block{ stats.add(BlockStat.reload, 60f / reload, StatUnit.none); stats.add(BlockStat.shots, shots, StatUnit.none); stats.add(BlockStat.targetsAir, targetAir); + stats.add(BlockStat.targetsGround, targetGround); } @Override @@ -201,7 +203,7 @@ public abstract class Turret extends Block{ TurretEntity entity = tile.entity(); entity.target = Units.getClosestTarget(tile.getTeam(), - tile.drawx(), tile.drawy(), range, e -> !e.isDead() && (!e.isFlying() || targetAir)); + tile.drawx(), tile.drawy(), range, e -> !e.isDead() && (!e.isFlying() || targetAir) && (e.isFlying() || targetGround)); } protected void turnToTarget(Tile tile, float targetRot){ diff --git a/core/src/io/anuke/mindustry/world/blocks/distribution/Conveyor.java b/core/src/io/anuke/mindustry/world/blocks/distribution/Conveyor.java index 3858b02e48..92fd7c65f1 100644 --- a/core/src/io/anuke/mindustry/world/blocks/distribution/Conveyor.java +++ b/core/src/io/anuke/mindustry/world/blocks/distribution/Conveyor.java @@ -6,6 +6,7 @@ import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.graphics.g2d.TextureRegion; import io.anuke.arc.math.Mathf; import io.anuke.arc.math.geom.Geometry; +import io.anuke.arc.math.geom.Point2; import io.anuke.arc.math.geom.Vector2; import io.anuke.arc.util.Log; import io.anuke.arc.util.Pack; @@ -13,6 +14,7 @@ import io.anuke.arc.util.Time; import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.entities.type.Unit; import io.anuke.mindustry.graphics.Layer; +import io.anuke.mindustry.input.InputHandler.PlaceDraw; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; @@ -89,7 +91,6 @@ public class Conveyor extends Block{ ConveyorEntity entity = tile.entity(); entity.blendbits = 0; entity.blendsclx = entity.blendscly = 1; - entity.blendshadowrot = -1; if(blends(tile, 2) && blends(tile, 1) && blends(tile, 3)){ entity.blendbits = 3; @@ -103,13 +104,34 @@ public class Conveyor extends Block{ }else if(blends(tile, 1)){ entity.blendbits = 1; entity.blendscly = -1; - entity.blendshadowrot = 0; }else if(blends(tile, 3)){ entity.blendbits = 1; - entity.blendshadowrot = 1; } } + @Override + public void getPlaceDraw(PlaceDraw draw, int rotation, int prevX, int prevY, int prevRotation){ + draw.rotation = rotation; + draw.scalex = draw.scaley = 1; + + int blendbits = 0; + + if(blends(rotation, 1, prevX, prevY, prevRotation)){ + blendbits = 1; + draw.scaley = -1; + }else if(blends(rotation, 3, prevX, prevY, prevRotation)){ + blendbits = 1; + } + + draw.rotation = rotation; + draw.region = regions[blendbits][0]; + } + + private boolean blends(int rotation, int offset, int prevX, int prevY, int prevRotation){ + Point2 left = Geometry.d4(rotation - offset); + return left.equals(prevX, prevY) && prevRotation == Mathf.mod(rotation + offset, 4); + } + private boolean blends(Tile tile, int direction){ Tile other = tile.getNearby(Mathf.mod(tile.getRotation() - direction, 4)); if(other != null) other = other.target(); @@ -343,7 +365,6 @@ public class Conveyor extends Block{ byte lastInserted; float minitem = 1; - int blendshadowrot = -1; int blendbits; int blendsclx, blendscly; diff --git a/core/src/io/anuke/mindustry/world/blocks/power/PowerGraph.java b/core/src/io/anuke/mindustry/world/blocks/power/PowerGraph.java index 949a549c89..6de3fbbff2 100644 --- a/core/src/io/anuke/mindustry/world/blocks/power/PowerGraph.java +++ b/core/src/io/anuke/mindustry/world/blocks/power/PowerGraph.java @@ -143,6 +143,10 @@ public class PowerGraph{ } public void update(){ + if(Core.graphics.getFrameId() == lastFrameUpdated){ + return; + } + lastFrameUpdated = Core.graphics.getFrameId(); float powerNeeded = getPowerNeeded(); @@ -150,7 +154,7 @@ public class PowerGraph{ powerBalance.addValue((powerProduced - powerNeeded) / Time.delta()); - if(Core.graphics.getFrameId() == lastFrameUpdated || (consumers.size == 0 && producers.size == 0 && batteries.size == 0)){ + if(consumers.size == 0 && producers.size == 0 && batteries.size == 0){ return; } diff --git a/core/src/io/anuke/mindustry/world/blocks/power/ThermalGenerator.java b/core/src/io/anuke/mindustry/world/blocks/power/ThermalGenerator.java index 053840decf..f79007b348 100644 --- a/core/src/io/anuke/mindustry/world/blocks/power/ThermalGenerator.java +++ b/core/src/io/anuke/mindustry/world/blocks/power/ThermalGenerator.java @@ -28,7 +28,7 @@ public class ThermalGenerator extends PowerGenerator{ @Override public void drawPlace(int x, int y, int rotation, boolean valid){ - drawPlaceText(Core.bundle.format("blocks.efficiency", sumAttribute(Attribute.heat, x, y)*100, 1), x, y, valid); + drawPlaceText(Core.bundle.formatDouble("blocks.efficiency", sumAttribute(Attribute.heat, x, y)*100, 1), x, y, valid); } @Override diff --git a/core/src/io/anuke/mindustry/world/blocks/production/Cultivator.java b/core/src/io/anuke/mindustry/world/blocks/production/Cultivator.java index 51cf6cae9f..8251519d57 100644 --- a/core/src/io/anuke/mindustry/world/blocks/production/Cultivator.java +++ b/core/src/io/anuke/mindustry/world/blocks/production/Cultivator.java @@ -53,7 +53,7 @@ public class Cultivator extends GenericCrafter{ public void setBars(){ super.setBars(); bars.add("multiplier", entity -> new Bar(() -> - Core.bundle.format("blocks.efficiency", + Core.bundle.formatDouble("blocks.efficiency", ((((CultivatorEntity)entity).boost + 1f) * ((CultivatorEntity)entity).warmup)*100f,1), () -> Pal.ammo, () -> ((CultivatorEntity)entity).warmup)); @@ -61,7 +61,7 @@ public class Cultivator extends GenericCrafter{ @Override public void drawPlace(int x, int y, int rotation, boolean valid){ - drawPlaceText(Core.bundle.format("blocks.efficiency", (1+sumAttribute(Attribute.spores, x, y))*100, 1), x, y, valid); + drawPlaceText(Core.bundle.formatDouble("blocks.efficiency", (1+sumAttribute(Attribute.spores, x, y))*100, 1), x, y, valid); } @Override diff --git a/core/src/io/anuke/mindustry/world/blocks/production/SolidPump.java b/core/src/io/anuke/mindustry/world/blocks/production/SolidPump.java index f91501c1cf..6bdecaf130 100644 --- a/core/src/io/anuke/mindustry/world/blocks/production/SolidPump.java +++ b/core/src/io/anuke/mindustry/world/blocks/production/SolidPump.java @@ -42,7 +42,7 @@ public class SolidPump extends Pump{ @Override public void drawPlace(int x, int y, int rotation, boolean valid){ if(attribute != null){ - drawPlaceText(Core.bundle.format("blocks.efficiency", (sumAttribute(attribute, x, y) + 1f)*100, 1), x, y, valid); + drawPlaceText(Core.bundle.formatDouble("blocks.efficiency", (sumAttribute(attribute, x, y) + 1f)*100, 1), x, y, valid); } } @@ -50,7 +50,7 @@ public class SolidPump extends Pump{ public void setBars(){ super.setBars(); bars.add("efficiency", entity -> new Bar(() -> - Core.bundle.format("blocks.efficiency", + Core.bundle.formatDouble("blocks.efficiency", ((((SolidPumpEntity)entity).boost + 1f) * ((SolidPumpEntity)entity).warmup) * 100, 1), () -> Pal.ammo, () -> ((SolidPumpEntity)entity).warmup)); diff --git a/core/src/io/anuke/mindustry/world/meta/BlockStat.java b/core/src/io/anuke/mindustry/world/meta/BlockStat.java index 21fa588ea0..578339d3ce 100644 --- a/core/src/io/anuke/mindustry/world/meta/BlockStat.java +++ b/core/src/io/anuke/mindustry/world/meta/BlockStat.java @@ -47,6 +47,7 @@ public enum BlockStat{ reload(StatCategory.shooting), powerShot(StatCategory.shooting), targetsAir(StatCategory.shooting), + targetsGround(StatCategory.shooting), boostItem(StatCategory.optional), boostLiquid(StatCategory.optional),; diff --git a/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java b/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java index 8be38a1feb..028218e723 100644 --- a/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java +++ b/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java @@ -3,11 +3,11 @@ package io.anuke.mindustry.desktop; import io.anuke.arc.ApplicationListener; import io.anuke.arc.backends.lwjgl3.Lwjgl3Application; import io.anuke.arc.backends.lwjgl3.Lwjgl3ApplicationConfiguration; -import io.anuke.net.KryoClient; -import io.anuke.net.KryoServer; import io.anuke.mindustry.Mindustry; import io.anuke.mindustry.core.Platform; import io.anuke.mindustry.net.Net; +import io.anuke.net.KryoClient; +import io.anuke.net.KryoServer; public class DesktopLauncher extends Lwjgl3Application{