diff --git a/core/assets-raw/sprites/blocks/power/batterylarge.png b/core/assets-raw/sprites/blocks/power/battery-large.png similarity index 100% rename from core/assets-raw/sprites/blocks/power/batterylarge.png rename to core/assets-raw/sprites/blocks/power/battery-large.png diff --git a/core/assets-raw/sprites/blocks/power/combustiongenerator-top.png b/core/assets-raw/sprites/blocks/power/combustion-generator-top.png similarity index 100% rename from core/assets-raw/sprites/blocks/power/combustiongenerator-top.png rename to core/assets-raw/sprites/blocks/power/combustion-generator-top.png diff --git a/core/assets-raw/sprites/blocks/power/combustiongenerator.png b/core/assets-raw/sprites/blocks/power/combustion-generator.png similarity index 100% rename from core/assets-raw/sprites/blocks/power/combustiongenerator.png rename to core/assets-raw/sprites/blocks/power/combustion-generator.png diff --git a/core/assets-raw/sprites/blocks/power/fusionreactor-bottom.png b/core/assets-raw/sprites/blocks/power/fusion-reactor-bottom.png similarity index 100% rename from core/assets-raw/sprites/blocks/power/fusionreactor-bottom.png rename to core/assets-raw/sprites/blocks/power/fusion-reactor-bottom.png diff --git a/core/assets-raw/sprites/blocks/power/fusionreactor-light.png b/core/assets-raw/sprites/blocks/power/fusion-reactor-light.png similarity index 100% rename from core/assets-raw/sprites/blocks/power/fusionreactor-light.png rename to core/assets-raw/sprites/blocks/power/fusion-reactor-light.png diff --git a/core/assets-raw/sprites/blocks/power/fusionreactor-plasma-0.png b/core/assets-raw/sprites/blocks/power/fusion-reactor-plasma-0.png similarity index 100% rename from core/assets-raw/sprites/blocks/power/fusionreactor-plasma-0.png rename to core/assets-raw/sprites/blocks/power/fusion-reactor-plasma-0.png diff --git a/core/assets-raw/sprites/blocks/power/fusionreactor-plasma-1.png b/core/assets-raw/sprites/blocks/power/fusion-reactor-plasma-1.png similarity index 100% rename from core/assets-raw/sprites/blocks/power/fusionreactor-plasma-1.png rename to core/assets-raw/sprites/blocks/power/fusion-reactor-plasma-1.png diff --git a/core/assets-raw/sprites/blocks/power/fusionreactor-plasma-2.png b/core/assets-raw/sprites/blocks/power/fusion-reactor-plasma-2.png similarity index 100% rename from core/assets-raw/sprites/blocks/power/fusionreactor-plasma-2.png rename to core/assets-raw/sprites/blocks/power/fusion-reactor-plasma-2.png diff --git a/core/assets-raw/sprites/blocks/power/fusionreactor-plasma-3.png b/core/assets-raw/sprites/blocks/power/fusion-reactor-plasma-3.png similarity index 100% rename from core/assets-raw/sprites/blocks/power/fusionreactor-plasma-3.png rename to core/assets-raw/sprites/blocks/power/fusion-reactor-plasma-3.png diff --git a/core/assets-raw/sprites/blocks/power/fusionreactor-top.png b/core/assets-raw/sprites/blocks/power/fusion-reactor-top.png similarity index 100% rename from core/assets-raw/sprites/blocks/power/fusionreactor-top.png rename to core/assets-raw/sprites/blocks/power/fusion-reactor-top.png diff --git a/core/assets-raw/sprites/blocks/power/fusionreactor.png b/core/assets-raw/sprites/blocks/power/fusion-reactor.png similarity index 100% rename from core/assets-raw/sprites/blocks/power/fusionreactor.png rename to core/assets-raw/sprites/blocks/power/fusion-reactor.png diff --git a/core/assets-raw/sprites/blocks/power/largesolarpanel.png b/core/assets-raw/sprites/blocks/power/large-solar-panel.png similarity index 100% rename from core/assets-raw/sprites/blocks/power/largesolarpanel.png rename to core/assets-raw/sprites/blocks/power/large-solar-panel.png diff --git a/core/assets-raw/sprites/blocks/power/liquidcombustiongenerator.png b/core/assets-raw/sprites/blocks/power/liquidcombustiongenerator.png deleted file mode 100644 index 5d49000258..0000000000 Binary files a/core/assets-raw/sprites/blocks/power/liquidcombustiongenerator.png and /dev/null differ diff --git a/core/assets-raw/sprites/blocks/power/nuclearreactor-center.png b/core/assets-raw/sprites/blocks/power/nuclear-reactor-center.png similarity index 100% rename from core/assets-raw/sprites/blocks/power/nuclearreactor-center.png rename to core/assets-raw/sprites/blocks/power/nuclear-reactor-center.png diff --git a/core/assets-raw/sprites/blocks/power/nuclearreactor-lights.png b/core/assets-raw/sprites/blocks/power/nuclear-reactor-lights.png similarity index 100% rename from core/assets-raw/sprites/blocks/power/nuclearreactor-lights.png rename to core/assets-raw/sprites/blocks/power/nuclear-reactor-lights.png diff --git a/core/assets-raw/sprites/blocks/power/nuclearreactor.png b/core/assets-raw/sprites/blocks/power/nuclear-reactor.png similarity index 100% rename from core/assets-raw/sprites/blocks/power/nuclearreactor.png rename to core/assets-raw/sprites/blocks/power/nuclear-reactor.png diff --git a/core/assets-raw/sprites/blocks/power/powernodelarge.png b/core/assets-raw/sprites/blocks/power/power-node-large.png similarity index 100% rename from core/assets-raw/sprites/blocks/power/powernodelarge.png rename to core/assets-raw/sprites/blocks/power/power-node-large.png diff --git a/core/assets-raw/sprites/blocks/power/powernode.png b/core/assets-raw/sprites/blocks/power/power-node.png similarity index 100% rename from core/assets-raw/sprites/blocks/power/powernode.png rename to core/assets-raw/sprites/blocks/power/power-node.png diff --git a/core/assets-raw/sprites/blocks/power/rtgenerator-top.png b/core/assets-raw/sprites/blocks/power/rtg-generator-top.png similarity index 100% rename from core/assets-raw/sprites/blocks/power/rtgenerator-top.png rename to core/assets-raw/sprites/blocks/power/rtg-generator-top.png diff --git a/core/assets-raw/sprites/blocks/power/rtgenerator.png b/core/assets-raw/sprites/blocks/power/rtg-generator.png similarity index 54% rename from core/assets-raw/sprites/blocks/power/rtgenerator.png rename to core/assets-raw/sprites/blocks/power/rtg-generator.png index 87ef28aa4a..9e4a43058f 100644 Binary files a/core/assets-raw/sprites/blocks/power/rtgenerator.png and b/core/assets-raw/sprites/blocks/power/rtg-generator.png differ diff --git a/core/assets-raw/sprites/blocks/power/shieldgenerator.png b/core/assets-raw/sprites/blocks/power/shieldgenerator.png deleted file mode 100644 index 4da9e9ccf5..0000000000 Binary files a/core/assets-raw/sprites/blocks/power/shieldgenerator.png and /dev/null differ diff --git a/core/assets-raw/sprites/blocks/power/shieldprojector.png b/core/assets-raw/sprites/blocks/power/shieldprojector.png deleted file mode 100644 index 528cd08109..0000000000 Binary files a/core/assets-raw/sprites/blocks/power/shieldprojector.png and /dev/null differ diff --git a/core/assets-raw/sprites/blocks/power/solarpanel.png b/core/assets-raw/sprites/blocks/power/solar-panel.png similarity index 100% rename from core/assets-raw/sprites/blocks/power/solarpanel.png rename to core/assets-raw/sprites/blocks/power/solar-panel.png diff --git a/core/assets-raw/sprites/blocks/power/thermal-generator.png b/core/assets-raw/sprites/blocks/power/thermal-generator.png new file mode 100644 index 0000000000..388654a481 Binary files /dev/null and b/core/assets-raw/sprites/blocks/power/thermal-generator.png differ diff --git a/core/assets-raw/sprites/blocks/power/thermalgenerator.png b/core/assets-raw/sprites/blocks/power/thermalgenerator.png deleted file mode 100644 index fa3c593150..0000000000 Binary files a/core/assets-raw/sprites/blocks/power/thermalgenerator.png and /dev/null differ diff --git a/core/assets-raw/sprites/blocks/power/turbine-generator.png b/core/assets-raw/sprites/blocks/power/turbine-generator.png new file mode 100644 index 0000000000..2fdf521bfe Binary files /dev/null and b/core/assets-raw/sprites/blocks/power/turbine-generator.png differ diff --git a/core/assets/sprites/sprites.atlas b/core/assets/sprites/sprites.atlas index d5fdf7c7bc..9c95c07f52 100644 --- a/core/assets/sprites/sprites.atlas +++ b/core/assets/sprites/sprites.atlas @@ -11,912 +11,1108 @@ background orig: 421, 316 offset: 0, 0 index: -1 +conveyor + rotate: false + xy: 357, 73 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 conveyormove rotate: false - xy: 911, 433 + xy: 367, 73 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +junction + rotate: false + xy: 655, 203 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +laserconveyor + rotate: false + xy: 665, 193 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 laserconveyor-arrow rotate: false - xy: 341, 23 + xy: 655, 173 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 laserconveyor-bridge rotate: false - xy: 351, 23 + xy: 665, 183 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 laserconveyor-end rotate: false - xy: 361, 23 + xy: 665, 173 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 mass-driver-turret rotate: false - xy: 255, 127 + xy: 519, 157 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 ripple rotate: false - xy: 255, 127 + xy: 519, 157 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 +multiplexer + rotate: false + xy: 731, 392 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +overflowgate + rotate: false + xy: 695, 235 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +poweredconveyor + rotate: false + xy: 695, 225 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 poweredconveyormove rotate: false - xy: 335, 13 + xy: 705, 235 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +router + rotate: false + xy: 745, 255 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +sorter + rotate: false + xy: 735, 205 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +splitter + rotate: false + xy: 705, 165 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +steelconveyor + rotate: false + xy: 715, 175 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 steelconveyormove rotate: false - xy: 475, 112 + xy: 725, 185 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 warpgate rotate: false - xy: 597, 154 + xy: 437, 136 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 warpgate-top rotate: false - xy: 991, 447 + xy: 587, 232 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 irondrill rotate: false - xy: 375, 53 + xy: 668, 273 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 irondrill-rotator rotate: false - xy: 385, 53 + xy: 678, 285 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titaniumdrill-rotator rotate: false - xy: 385, 53 + xy: 678, 285 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 irondrill-top rotate: false - xy: 395, 53 + xy: 678, 275 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 laserdrill rotate: false - xy: 715, 223 + xy: 607, 140 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 laserdrill-rotator rotate: false - xy: 733, 223 + xy: 607, 122 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 laserdrill-top rotate: false - xy: 661, 215 + xy: 731, 410 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 nucleardrill rotate: false - xy: 281, 135 + xy: 572, 258 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 nucleardrill-rim rotate: false - xy: 307, 135 + xy: 598, 258 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 nucleardrill-rotator rotate: false - xy: 333, 135 + xy: 229, 117 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 nucleardrill-top rotate: false - xy: 359, 135 + xy: 255, 127 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 oilextractor rotate: false - xy: 437, 136 + xy: 281, 135 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 oilextractor-liquid rotate: false - xy: 587, 232 + xy: 307, 135 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 oilextractor-rotator rotate: false - xy: 613, 232 + xy: 333, 135 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 oilextractor-top rotate: false - xy: 607, 206 + xy: 359, 135 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 plasmadrill rotate: false - xy: 839, 479 + xy: 805, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plasmadrill-rim rotate: false - xy: 873, 479 + xy: 839, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plasmadrill-rotator rotate: false - xy: 907, 479 + xy: 873, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 plasmadrill-top rotate: false - xy: 941, 479 + xy: 907, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 reinforceddrill rotate: false - xy: 355, 3 + xy: 725, 245 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 reinforceddrill-rotator rotate: false - xy: 365, 13 + xy: 735, 255 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 reinforceddrill-top rotate: false - xy: 365, 3 + xy: 685, 195 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 steeldrill rotate: false - xy: 485, 122 + xy: 735, 195 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 steeldrill-rotator rotate: false - xy: 485, 112 + xy: 745, 205 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 steeldrill-top rotate: false - xy: 455, 102 + xy: 715, 165 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titaniumdrill rotate: false - xy: 505, 101 + xy: 323, 45 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titaniumdrill-top rotate: false - xy: 515, 101 + xy: 323, 35 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 waterextractor rotate: false - xy: 679, 169 + xy: 237, 81 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 waterextractor-liquid rotate: false - xy: 697, 169 + xy: 255, 91 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 waterextractor-rotator rotate: false - xy: 715, 169 + xy: 273, 91 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 waterextractor-top rotate: false - xy: 733, 169 + xy: 255, 73 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 blackrock1 rotate: false - xy: 207, 52 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-blackrock - rotate: false - xy: 207, 52 + xy: 245, 60 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackrockshadow1 rotate: false - xy: 187, 8 + xy: 263, 39 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstone1 rotate: false - xy: 249, 99 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-blackstone - rotate: false - xy: 249, 99 + xy: 263, 29 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstone2 rotate: false - xy: 633, 206 + xy: 273, 39 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstone3 rotate: false - xy: 643, 206 + xy: 273, 29 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstoneblock1 rotate: false - xy: 639, 255 + xy: 283, 39 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstoneblock2 rotate: false - xy: 639, 245 + xy: 293, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstoneblock3 rotate: false - xy: 639, 235 + xy: 283, 29 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstoneedge rotate: false - xy: 195, 124 + xy: 612, 296 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 +coal1 + rotate: false + xy: 751, 374 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 coal2 rotate: false - xy: 789, 439 + xy: 751, 364 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 coal3 rotate: false - xy: 799, 439 + xy: 256, 9 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +deepwater + rotate: false + xy: 387, 73 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +dirt1 + rotate: false + xy: 407, 73 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt2 rotate: false - xy: 931, 433 + xy: 417, 73 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt3 rotate: false - xy: 941, 433 + xy: 427, 73 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirtedge rotate: false - xy: 612, 296 + xy: 572, 244 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 +grass1 + rotate: false + xy: 825, 423 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 grass2 rotate: false - xy: 991, 427 + xy: 835, 423 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass3 rotate: false - xy: 1001, 427 + xy: 845, 425 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grassblock1 rotate: false - xy: 1011, 427 + xy: 855, 425 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grassblock2 rotate: false - xy: 747, 135 + xy: 865, 425 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grassedge rotate: false - xy: 637, 138 + xy: 187, 70 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 +ice1 + rotate: false + xy: 875, 425 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 ice2 rotate: false - xy: 757, 145 + xy: 885, 425 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ice3 rotate: false - xy: 757, 135 + xy: 895, 427 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 iceedge rotate: false - xy: 197, 2 + xy: 187, 56 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 +icerock1 + rotate: false + xy: 905, 427 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 icerock2 rotate: false - xy: 315, 51 + xy: 915, 427 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icerockshadow1 rotate: false - xy: 325, 53 + xy: 925, 427 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rockshadow1 rotate: false - xy: 325, 53 + xy: 925, 427 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icerockshadow2 rotate: false - xy: 335, 53 + xy: 625, 114 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rockshadow2 rotate: false - xy: 335, 53 + xy: 625, 114 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +iron1 + rotate: false + xy: 658, 283 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 iron2 rotate: false - xy: 355, 53 + xy: 658, 273 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 iron3 rotate: false - xy: 365, 53 + xy: 668, 283 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +lava + rotate: false + xy: 655, 163 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lavaedge rotate: false - xy: 745, 155 + xy: 181, 26 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 +lead1 + rotate: false + xy: 748, 285 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 lead2 rotate: false - xy: 381, 23 + xy: 748, 275 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lead3 rotate: false - xy: 391, 23 + xy: 748, 265 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +metalfloor1 + rotate: false + xy: 675, 173 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor2 rotate: false - xy: 431, 33 + xy: 675, 163 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor3 rotate: false - xy: 431, 23 + xy: 685, 255 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor4 rotate: false - xy: 305, 11 + xy: 685, 245 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor5 rotate: false - xy: 305, 1 + xy: 695, 255 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor6 rotate: false - xy: 315, 11 + xy: 685, 235 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalflooredge rotate: false - xy: 747, 414 + xy: 181, 12 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 mossblock rotate: false - xy: 315, 1 + xy: 695, 245 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +oil + rotate: false + xy: 705, 255 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 oiledge rotate: false - xy: 747, 400 + xy: 203, 48 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 +rock1 + rotate: false + xy: 725, 235 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 rock2 rotate: false - xy: 375, 3 + xy: 735, 245 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +sand1 + rotate: false + xy: 705, 205 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand2 rotate: false - xy: 385, 3 + xy: 715, 215 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand3 rotate: false - xy: 395, 13 + xy: 725, 225 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sandblock1 rotate: false - xy: 395, 3 + xy: 735, 235 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sandblock2 rotate: false - xy: 405, 13 + xy: 745, 245 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sandblock3 rotate: false - xy: 405, 3 + xy: 685, 175 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sandedge rotate: false - xy: 291, 85 + xy: 217, 48 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 +shrub + rotate: false + xy: 745, 235 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 shrubshadow rotate: false - xy: 435, 13 + xy: 685, 165 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +snow1 + rotate: false + xy: 715, 195 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow2 rotate: false - xy: 455, 122 + xy: 725, 205 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow3 rotate: false - xy: 455, 112 + xy: 735, 215 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snowblock1 rotate: false - xy: 465, 122 + xy: 745, 225 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snowblock2 rotate: false - xy: 465, 112 + xy: 695, 165 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snowblock3 rotate: false - xy: 475, 122 + xy: 705, 175 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snowedge rotate: false - xy: 347, 85 + xy: 209, 20 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 +space + rotate: false + xy: 745, 215 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 spaceedge rotate: false - xy: 361, 85 + xy: 223, 34 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 stone-cliff-edge rotate: false - xy: 485, 102 + xy: 735, 175 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone-cliff-edge-1 rotate: false - xy: 495, 111 + xy: 745, 185 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone-cliff-edge-2 rotate: false - xy: 505, 111 + xy: 735, 165 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone-cliff-side rotate: false - xy: 515, 111 + xy: 745, 175 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +stone1 + rotate: false + xy: 735, 185 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone2 rotate: false - xy: 465, 102 + xy: 745, 195 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone3 rotate: false - xy: 475, 102 + xy: 725, 165 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stoneblock1 rotate: false - xy: 525, 111 + xy: 745, 165 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stoneblock2 rotate: false - xy: 535, 111 + xy: 755, 255 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stoneblock3 rotate: false - xy: 545, 111 + xy: 755, 245 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stoneedge rotate: false - xy: 403, 85 + xy: 237, 34 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 +thorium1 + rotate: false + xy: 755, 215 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 thorium2 rotate: false - xy: 555, 111 + xy: 755, 205 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 thorium3 rotate: false - xy: 565, 111 + xy: 755, 195 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +titanium1 + rotate: false + xy: 755, 185 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium2 rotate: false - xy: 575, 111 + xy: 755, 175 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium3 rotate: false - xy: 495, 101 + xy: 755, 165 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +water + rotate: false + xy: 475, 112 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 water-cliff-edge rotate: false - xy: 585, 108 + xy: 485, 122 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 water-cliff-edge-1 rotate: false - xy: 595, 108 + xy: 485, 112 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 water-cliff-edge-2 rotate: false - xy: 585, 98 + xy: 455, 102 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 water-cliff-side rotate: false - xy: 595, 98 + xy: 465, 102 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 wateredge rotate: false - xy: 303, 71 + xy: 242, 6 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 block-border rotate: false - xy: 215, 22 + xy: 317, 55 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-elevation rotate: false - xy: 225, 30 + xy: 263, 19 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -combustiongenerator-top +combustion-generator-top rotate: false - xy: 225, 30 + xy: 263, 19 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-middle rotate: false - xy: 661, 141 + xy: 273, 19 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pump-liquid rotate: false - xy: 661, 141 + xy: 273, 19 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-slope rotate: false - xy: 661, 131 + xy: 283, 19 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 border rotate: false - xy: 661, 121 + xy: 293, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-liquid rotate: false - xy: 891, 433 + xy: 337, 73 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 cross-1 rotate: false - xy: 921, 433 + xy: 377, 73 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 cross-2 rotate: false - xy: 291, 99 + xy: 553, 139 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 cross-3 rotate: false - xy: 571, 157 + xy: 493, 183 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 cross-4 rotate: false - xy: 305, 161 + xy: 95, 39 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 enemyspawn rotate: false - xy: 971, 430 + xy: 445, 116 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -930,70 +1126,70 @@ nuclearreactor-shadow index: -1 place-arrow rotate: false - xy: 325, 11 + xy: 705, 245 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 playerspawn rotate: false - xy: 325, 1 + xy: 715, 255 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ripples rotate: false - xy: 761, 408 + xy: 257, 49 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 rubble-1-0 rotate: false - xy: 661, 197 + xy: 163, 22 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 rubble-1-1 rotate: false - xy: 679, 187 + xy: 163, 4 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 rubble-2-0 rotate: false - xy: 697, 187 + xy: 165, 82 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 rubble-2-1 rotate: false - xy: 715, 187 + xy: 183, 84 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 rubble-3-0 rotate: false - xy: 597, 180 + xy: 385, 135 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 rubble-3-1 rotate: false - xy: 597, 180 + xy: 385, 135 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 shadow-1 rotate: false - xy: 761, 360 + xy: 251, 36 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1035,7 +1231,7 @@ shadow-6 index: -1 shadow-round-1 rotate: false - xy: 289, 21 + xy: 251, 24 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1047,254 +1243,359 @@ shadow-round-2 orig: 18, 18 offset: 0, 0 index: -1 +bridgeconduit + rotate: false + xy: 303, 23 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 bridgeconduit-arrow rotate: false - xy: 667, 111 + xy: 313, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridgeconduit-bridge rotate: false - xy: 733, 359 + xy: 313, 33 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridgeconduit-end rotate: false - xy: 731, 349 + xy: 313, 23 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +bridgeconveyor + rotate: false + xy: 293, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridgeconveyor-arrow rotate: false - xy: 301, 47 + xy: 303, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridgeconveyor-bridge rotate: false - xy: 301, 37 + xy: 313, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridgeconveyor-end rotate: false - xy: 301, 27 + xy: 749, 404 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom rotate: false - xy: 819, 439 + xy: 327, 73 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top rotate: false - xy: 901, 433 + xy: 347, 73 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +laserconduit + rotate: false + xy: 665, 213 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 laserconduit-arrow rotate: false - xy: 311, 21 + xy: 655, 193 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 laserconduit-bridge rotate: false - xy: 321, 21 + xy: 665, 203 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 laserconduit-end rotate: false - xy: 331, 23 + xy: 655, 183 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +liquidjunction + rotate: false + xy: 675, 253 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquidrouter rotate: false - xy: 401, 23 + xy: 675, 243 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquidrouter-bottom rotate: false - xy: 411, 23 + xy: 675, 233 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquidrouter-liquid rotate: false - xy: 421, 23 + xy: 675, 223 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquidrouter-top rotate: false - xy: 431, 43 + xy: 675, 213 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquidtank-bottom rotate: false - xy: 572, 258 + xy: 571, 183 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 liquidtank-liquid rotate: false - xy: 598, 258 + xy: 467, 150 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 liquidtank-top rotate: false - xy: 229, 117 + xy: 493, 157 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 +mechanical-pump + rotate: false + xy: 675, 193 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 pulseconduit-bottom rotate: false - xy: 335, 3 + xy: 685, 205 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulseconduit-top rotate: false - xy: 345, 13 + xy: 695, 215 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 +rotary-pump + rotate: false + xy: 741, 338 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +thermal-pump + rotate: false + xy: 219, 96 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 battery rotate: false - xy: 175, 128 + xy: 165, 118 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -block-icon-battery - rotate: false - xy: 175, 128 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -batterylarge +battery-large rotate: false xy: 913, 453 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -block-icon-batterylarge +combustion-generator rotate: false - xy: 913, 453 - size: 24, 24 - orig: 24, 24 + xy: 266, 9 + size: 8, 8 + orig: 8, 8 offset: 0, 0 index: -1 -fusionreactor +fusion-reactor + rotate: false + xy: 271, 161 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +fusion-reactor-bottom + rotate: false + xy: 305, 161 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +fusion-reactor-light rotate: false xy: 339, 161 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -fusionreactor-bottom +fusion-reactor-plasma-0 rotate: false xy: 373, 161 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -fusionreactor-light +fusion-reactor-plasma-1 rotate: false xy: 489, 209 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -fusionreactor-plasma-0 +fusion-reactor-plasma-2 rotate: false xy: 523, 209 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -fusionreactor-plasma-1 +fusion-reactor-plasma-3 rotate: false xy: 131, 94 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -fusionreactor-plasma-2 +fusion-reactor-top rotate: false - xy: 129, 18 + xy: 129, 60 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 -fusionreactor-plasma-3 +large-solar-panel rotate: false - xy: 163, 18 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -fusionreactor-top - rotate: false - xy: 771, 479 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -nuclearreactor-center - rotate: false - xy: 385, 135 + xy: 545, 183 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -nuclearreactor-lights +nuclear-reactor rotate: false - xy: 411, 135 + xy: 545, 157 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -rtgenerator-top +nuclear-reactor-center rotate: false - xy: 385, 13 + xy: 571, 157 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +nuclear-reactor-lights + rotate: false + xy: 229, 143 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +power-node + rotate: false + xy: 685, 215 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -shieldprojector +power-node-large rotate: false - xy: 733, 187 + xy: 789, 431 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +powerinfinite + rotate: false + xy: 715, 245 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +powervoid + rotate: false + xy: 725, 255 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +rtg-generator + rotate: false + xy: 685, 185 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +rtg-generator-top + rotate: false + xy: 695, 195 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +solar-panel + rotate: false + xy: 715, 185 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +thermal-generator + rotate: false + xy: 169, 46 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +turbine-generator + rotate: false + xy: 219, 78 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -1313,247 +1614,352 @@ phase-weaver orig: 24, 24 offset: 0, 0 index: -1 -block-icon-alloy-fuser - rotate: false - xy: 887, 453 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-icon-phase-weaver - rotate: false - xy: 887, 453 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 alloy-smelter rotate: false - xy: 195, 106 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-icon-alloy-smelter - rotate: false - xy: 195, 106 + xy: 145, 22 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 arc-smelter rotate: false - xy: 679, 365 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-icon-arc-smelter - rotate: false - xy: 679, 365 + xy: 145, 4 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 biomattercompressor rotate: false - xy: 677, 347 + xy: 613, 240 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 biomattercompressor-frame0 rotate: false - xy: 679, 313 + xy: 679, 365 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 biomattercompressor-frame1 rotate: false - xy: 197, 34 + xy: 677, 347 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 biomattercompressor-frame2 rotate: false - xy: 197, 16 + xy: 679, 313 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 biomattercompressor-liquid rotate: false - xy: 255, 109 + xy: 175, 120 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 biomattercompressor-top rotate: false - xy: 463, 132 + xy: 255, 109 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 -centrifuge-liquid - rotate: false - xy: 207, 80 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -cryofluidmixer-bottom - rotate: false - xy: 381, 99 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -cryofluidmixer-liquid - rotate: false - xy: 399, 99 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -cryofluidmixer-top - rotate: false - xy: 417, 99 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -cultivator - rotate: false - xy: 713, 347 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -cultivator-middle - rotate: false - xy: 715, 313 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -cultivator-top - rotate: false - xy: 715, 295 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -extractor - rotate: false - xy: 981, 430 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -lavasmelter - rotate: false - xy: 371, 23 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -plasteel-compressor-top - rotate: false - xy: 679, 205 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -poweralloysmelter-top - rotate: false - xy: 697, 205 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -powersmelter-top - rotate: false - xy: 715, 205 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -silicon-smelter-top - rotate: false - xy: 715, 205 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -pulverizer - rotate: false - xy: 345, 3 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -pulverizer-rotator - rotate: false - xy: 355, 13 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -separator-liquid - rotate: false - xy: 415, 13 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -siliconextractor - rotate: false - xy: 435, 3 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -core-open - rotate: false - xy: 545, 157 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-1 - rotate: false - xy: 225, 40 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-2 - rotate: false - xy: 481, 132 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-2-top +centrifuge rotate: false xy: 499, 139 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 +centrifuge-liquid + rotate: false + xy: 517, 139 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +cryofluidmixer-bottom + rotate: false + xy: 697, 365 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +cryofluidmixer-liquid + rotate: false + xy: 695, 347 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +cryofluidmixer-top + rotate: false + xy: 715, 367 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +cultivator + rotate: false + xy: 697, 313 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +cultivator-middle + rotate: false + xy: 679, 295 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +cultivator-top + rotate: false + xy: 697, 295 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +extractor + rotate: false + xy: 445, 106 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +incinerator + rotate: false + xy: 648, 269 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +itemsource + rotate: false + xy: 655, 213 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +itemvoid + rotate: false + xy: 665, 223 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +lavasmelter + rotate: false + xy: 665, 163 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +liquidsource + rotate: false + xy: 675, 203 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +melter + rotate: false + xy: 675, 183 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +oilrefinery + rotate: false + xy: 685, 225 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +plasteel-compressor + rotate: false + xy: 753, 430 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +plasteel-compressor-top + rotate: false + xy: 771, 431 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +poweralloysmelter-top + rotate: false + xy: 807, 431 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +powersmelter-top + rotate: false + xy: 733, 374 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +silicon-smelter-top + rotate: false + xy: 733, 374 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +pulverizer + rotate: false + xy: 705, 225 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +pulverizer-rotator + rotate: false + xy: 715, 235 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +separator + rotate: false + xy: 695, 185 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +separator-liquid + rotate: false + xy: 705, 195 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +silicon-smelter + rotate: false + xy: 163, 64 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +siliconextractor + rotate: false + xy: 695, 175 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +smelter + rotate: false + xy: 705, 185 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +stoneformer + rotate: false + xy: 755, 235 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +weaponfactory + rotate: false + xy: 309, 81 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +core + rotate: false + xy: 653, 305 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +core-open + rotate: false + xy: 586, 284 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +core-top + rotate: false + xy: 467, 176 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +mass-driver + rotate: false + xy: 467, 176 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +sortedunloader + rotate: false + xy: 725, 195 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +unloader + rotate: false + xy: 465, 122 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +vault + rotate: false + xy: 411, 135 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +block-1 + rotate: false + xy: 303, 33 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +block-2 + rotate: false + xy: 463, 132 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +block-2-top + rotate: false + xy: 481, 132 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 block-3 rotate: false - xy: 939, 453 + xy: 939, 445 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 block-3-top rotate: false - xy: 627, 301 + xy: 965, 445 size: 24, 24 orig: 24, 24 offset: 0, 0 @@ -1574,207 +1980,333 @@ block-4-top index: -1 arc rotate: false - xy: 195, 94 + xy: 612, 284 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 arc-heat rotate: false - xy: 612, 284 + xy: 653, 293 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 crux rotate: false - xy: 309, 99 + xy: 571, 139 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 crux-heat rotate: false - xy: 327, 99 + xy: 209, 114 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 crux-panel-left rotate: false - xy: 345, 99 + xy: 165, 100 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 crux-panel-right rotate: false - xy: 363, 99 + xy: 613, 222 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 duo rotate: false - xy: 961, 430 + xy: 445, 126 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 fuse rotate: false - xy: 229, 143 + xy: 519, 183 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 spectre rotate: false - xy: 229, 143 + xy: 519, 183 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 lancer rotate: false - xy: 211, 4 + xy: 279, 61 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 lancer-heat rotate: false - xy: 761, 420 + xy: 245, 48 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 meltdown rotate: false - xy: 805, 479 + xy: 771, 479 size: 32, 32 orig: 32, 32 offset: 0, 0 index: -1 scatter rotate: false - xy: 761, 396 + xy: 269, 49 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 scatter-heat rotate: false - xy: 764, 384 + xy: 281, 49 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 scorch rotate: false - xy: 761, 372 + xy: 293, 53 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 scorch-shoot rotate: false - xy: 749, 361 + xy: 305, 53 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 swarmer rotate: false - xy: 661, 179 + xy: 201, 78 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 wave rotate: false - xy: 661, 161 + xy: 273, 73 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 wave-liquid rotate: false - xy: 679, 151 + xy: 291, 81 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +dronefactory + rotate: false + xy: 327, 117 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +reconstructor + rotate: false + xy: 327, 117 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +walkerfactory + rotate: false + xy: 327, 117 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 dronefactory-top rotate: false - xy: 733, 295 + xy: 345, 117 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 walkerfactory-top rotate: false - xy: 733, 295 + xy: 345, 117 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 dronefactory-top-open rotate: false - xy: 499, 121 + xy: 363, 117 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 walkerfactory-top-open rotate: false - xy: 499, 121 + xy: 363, 117 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 +droppoint + rotate: false + xy: 435, 105 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 reconstructor-open rotate: false - xy: 733, 205 + xy: 733, 356 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 +repairpoint + rotate: false + xy: 695, 205 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 repairpoint-turret rotate: false - xy: 375, 13 + xy: 705, 215 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +resupplypoint + rotate: false + xy: 715, 225 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 compositewall rotate: false - xy: 809, 439 + xy: 276, 9 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 +deflector-wall + rotate: false + xy: 397, 73 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +duriumwall + rotate: false + xy: 397, 73 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +deflector-wall-large + rotate: false + xy: 273, 109 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +duriumwall-large + rotate: false + xy: 273, 109 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +door + rotate: false + xy: 435, 125 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +door-large + rotate: false + xy: 291, 117 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 door-large-open rotate: false - xy: 733, 313 + xy: 309, 117 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 door-open rotate: false - xy: 951, 433 + xy: 435, 115 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +ironwall + rotate: false + xy: 688, 285 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +steelwall + rotate: false + xy: 725, 175 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +steelwall-large + rotate: false + xy: 201, 96 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +stonewall + rotate: false + xy: 755, 225 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titaniumshieldwall rotate: false - xy: 525, 101 + xy: 323, 25 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 +titaniumwall + rotate: false + xy: 323, 15 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +titaniumwall-large + rotate: false + xy: 237, 99 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 beam rotate: false xy: 486, 208 @@ -1798,21 +2330,21 @@ blank index: -1 bullet rotate: false - xy: 731, 385 + xy: 181, 1 size: 9, 9 orig: 9, 9 offset: 0, 0 index: -1 bullet-back rotate: false - xy: 742, 385 + xy: 192, 1 size: 9, 9 orig: 9, 9 offset: 0, 0 index: -1 casing rotate: false - xy: 209, 126 + xy: 463, 156 size: 2, 4 orig: 2, 4 offset: 0, 0 @@ -1826,42 +2358,42 @@ clear index: -1 enemyarrow rotate: false - xy: 641, 152 + xy: 731, 347 size: 8, 7 orig: 8, 7 offset: 0, 0 index: -1 error rotate: false - xy: 623, 138 + xy: 991, 446 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 laser rotate: false - xy: 431, 85 + xy: 749, 414 size: 1, 12 orig: 1, 12 offset: 0, 0 index: -1 laser-end rotate: false - xy: 466, 202 + xy: 129, 40 size: 18, 18 orig: 18, 18 offset: 0, 0 index: -1 laserfull rotate: false - xy: 1001, 493 + xy: 466, 202 size: 18, 18 orig: 18, 18 offset: 0, 0 index: -1 minelaser rotate: false - xy: 434, 85 + xy: 323, 67 size: 1, 12 orig: 1, 12 offset: 0, 0 @@ -1875,1645 +2407,245 @@ minelaser-end index: -1 shell rotate: false - xy: 650, 290 + xy: 203, 1 size: 9, 9 orig: 9, 9 offset: 0, 0 index: -1 shell-back rotate: false - xy: 650, 279 + xy: 233, 62 size: 9, 9 orig: 9, 9 offset: 0, 0 index: -1 shot rotate: false - xy: 425, 3 + xy: 735, 225 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 transfer rotate: false - xy: 1021, 499 + xy: 1019, 499 size: 1, 12 orig: 1, 12 offset: 0, 0 index: -1 transfer-arrow rotate: false - xy: 535, 101 + xy: 437, 73 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 transfer-end rotate: false - xy: 1001, 473 + xy: 149, 40 size: 18, 18 orig: 18, 18 offset: 0, 0 index: -1 -block-icon-arc - rotate: false - xy: 517, 139 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-icon-biomattercompressor - rotate: false - xy: 535, 139 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-icon-bridgeconduit - rotate: false - xy: 225, 20 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -bridgeconduit - rotate: false - xy: 225, 20 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-bridgeconveyor - rotate: false - xy: 235, 25 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -bridgeconveyor - rotate: false - xy: 235, 25 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-centrifuge - rotate: false - xy: 553, 139 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -centrifuge - rotate: false - xy: 553, 139 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-icon-coal - rotate: false - xy: 245, 25 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -coal1 - rotate: false - xy: 245, 25 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-combustiongenerator - rotate: false - xy: 235, 15 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -combustiongenerator - rotate: false - xy: 235, 15 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-conduit - rotate: false - xy: 245, 15 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-conveyor - rotate: false - xy: 255, 19 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -conveyor - rotate: false - xy: 255, 19 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-core - rotate: false - xy: 653, 305 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -core - rotate: false - xy: 653, 305 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-icon-crux - rotate: false - xy: 571, 139 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-icon-cryofluidmixer - rotate: false - xy: 623, 188 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-icon-cultivator - rotate: false - xy: 623, 170 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-icon-deepwater - rotate: false - xy: 265, 19 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -deepwater - rotate: false - xy: 265, 19 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-deflector-wall - rotate: false - xy: 275, 19 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -deflector-wall - rotate: false - xy: 275, 19 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -duriumwall - rotate: false - xy: 275, 19 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-duriumwall - rotate: false - xy: 275, 19 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-deflector-wall-large - rotate: false - xy: 623, 152 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -deflector-wall-large - rotate: false - xy: 623, 152 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -duriumwall-large - rotate: false - xy: 623, 152 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-icon-duriumwall-large - rotate: false - xy: 623, 152 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-icon-dirt - rotate: false - xy: 223, 10 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -dirt1 - rotate: false - xy: 223, 10 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-door - rotate: false - xy: 255, 9 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -door - rotate: false - xy: 255, 9 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-door-large - rotate: false - xy: 697, 365 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -door-large - rotate: false - xy: 697, 365 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-icon-dronefactory - rotate: false - xy: 695, 347 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-icon-droppoint - rotate: false - xy: 265, 9 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -droppoint - rotate: false - xy: 265, 9 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-duo - rotate: false - xy: 275, 9 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-fuse - rotate: false - xy: 586, 284 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-icon-spectre - rotate: false - xy: 586, 284 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-icon-fusionreactor - rotate: false - xy: 37, 8 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-icon-grass - rotate: false - xy: 285, 11 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -grass1 - rotate: false - xy: 285, 11 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-ice - rotate: false - xy: 285, 1 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -ice1 - rotate: false - xy: 285, 1 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-icerock - rotate: false - xy: 295, 11 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -icerock1 - rotate: false - xy: 295, 11 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-incinerator - rotate: false - xy: 295, 1 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -incinerator - rotate: false - xy: 295, 1 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-iron - rotate: false - xy: 773, 374 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -iron1 - rotate: false - xy: 773, 374 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-irondrill - rotate: false - xy: 773, 364 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-ironwall - rotate: false - xy: 773, 354 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -ironwall - rotate: false - xy: 773, 354 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-itemsource - rotate: false - xy: 233, 5 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -itemsource - rotate: false - xy: 233, 5 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-itemvoid - rotate: false - xy: 243, 5 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -itemvoid - rotate: false - xy: 243, 5 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-junction - rotate: false - xy: 831, 441 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -junction - rotate: false - xy: 831, 441 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-lancer - rotate: false - xy: 715, 367 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-icon-largesolarpanel - rotate: false - xy: 965, 450 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -largesolarpanel - rotate: false - xy: 965, 450 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-icon-laserconduit - rotate: false - xy: 841, 441 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -laserconduit - rotate: false - xy: 841, 441 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-laserconveyor - rotate: false - xy: 851, 441 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -laserconveyor - rotate: false - xy: 851, 441 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-laserdrill - rotate: false - xy: 697, 313 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-icon-lava - rotate: false - xy: 861, 441 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -lava - rotate: false - xy: 861, 441 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-lead - rotate: false - xy: 871, 441 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -lead1 - rotate: false - xy: 871, 441 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-liquidcombustiongenerator - rotate: false - xy: 881, 441 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -liquidcombustiongenerator - rotate: false - xy: 881, 441 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-liquidjunction - rotate: false - xy: 891, 443 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -liquidjunction - rotate: false - xy: 891, 443 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-liquidrouter - rotate: false - xy: 901, 443 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-liquidsource - rotate: false - xy: 911, 443 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -liquidsource - rotate: false - xy: 911, 443 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-liquidtank - rotate: false - xy: 467, 176 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-icon-mass-driver - rotate: false - xy: 493, 183 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -mass-driver - rotate: false - xy: 493, 183 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -core-top - rotate: false - xy: 493, 183 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-icon-mechanical-pump - rotate: false - xy: 921, 443 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -mechanical-pump - rotate: false - xy: 921, 443 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-meltdown - rotate: false - xy: 95, 39 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-icon-melter - rotate: false - xy: 931, 443 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -melter - rotate: false - xy: 931, 443 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-metalfloor - rotate: false - xy: 941, 443 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -metalfloor1 - rotate: false - xy: 941, 443 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-multiplexer - rotate: false - xy: 679, 295 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -multiplexer - rotate: false - xy: 679, 295 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-icon-nucleardrill - rotate: false - xy: 519, 183 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-icon-nuclearreactor - rotate: false - xy: 545, 183 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -nuclearreactor - rotate: false - xy: 545, 183 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-icon-oil - rotate: false - xy: 951, 443 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -oil - rotate: false - xy: 951, 443 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-oilextractor - rotate: false - xy: 571, 183 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-icon-oilrefinery - rotate: false - xy: 961, 440 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -oilrefinery - rotate: false - xy: 961, 440 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-overflowgate - rotate: false - xy: 971, 440 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -overflowgate - rotate: false - xy: 971, 440 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-plasmadrill - rotate: false - xy: 271, 161 - size: 32, 32 - orig: 32, 32 - offset: 0, 0 - index: -1 -block-icon-plasteel-compressor - rotate: false - xy: 697, 295 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -plasteel-compressor - rotate: false - xy: 697, 295 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-icon-poweredconveyor - rotate: false - xy: 981, 440 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -poweredconveyor - rotate: false - xy: 981, 440 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-powerinfinite - rotate: false - xy: 991, 437 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -powerinfinite - rotate: false - xy: 991, 437 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-powernode - rotate: false - xy: 1001, 437 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -powernode - rotate: false - xy: 1001, 437 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-powernodelarge - rotate: false - xy: 273, 109 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -powernodelarge - rotate: false - xy: 273, 109 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-icon-powervoid - rotate: false - xy: 1011, 437 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -powervoid - rotate: false - xy: 1011, 437 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-pulseconduit - rotate: false - xy: 607, 110 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-pulverizer - rotate: false - xy: 617, 110 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-reconstructor - rotate: false - xy: 291, 117 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -dronefactory - rotate: false - xy: 291, 117 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -reconstructor - rotate: false - xy: 291, 117 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -walkerfactory - rotate: false - xy: 291, 117 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-icon-reinforceddrill - rotate: false - xy: 627, 110 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-repairpoint - rotate: false - xy: 637, 110 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -repairpoint - rotate: false - xy: 637, 110 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-resupplypoint - rotate: false - xy: 647, 110 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -resupplypoint - rotate: false - xy: 647, 110 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-ripple - rotate: false - xy: 467, 150 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-icon-rock - rotate: false - xy: 657, 110 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -rock1 - rotate: false - xy: 657, 110 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-rotary-pump - rotate: false - xy: 309, 117 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -rotary-pump - rotate: false - xy: 309, 117 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-icon-router - rotate: false - xy: 697, 143 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -router - rotate: false - xy: 697, 143 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-rtgenerator - rotate: false - xy: 707, 143 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -rtgenerator - rotate: false - xy: 707, 143 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-sand - rotate: false - xy: 717, 143 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -sand1 - rotate: false - xy: 717, 143 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-scatter - rotate: false - xy: 727, 143 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-scorch - rotate: false - xy: 737, 143 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-separator - rotate: false - xy: 747, 145 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -separator - rotate: false - xy: 747, 145 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-shieldgenerator - rotate: false - xy: 315, 61 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -shieldgenerator - rotate: false - xy: 315, 61 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-shrub - rotate: false - xy: 325, 63 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -shrub - rotate: false - xy: 325, 63 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-silicon-smelter - rotate: false - xy: 327, 117 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -silicon-smelter - rotate: false - xy: 327, 117 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-icon-smelter - rotate: false - xy: 335, 63 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -smelter - rotate: false - xy: 335, 63 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-snow - rotate: false - xy: 345, 63 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -snow1 - rotate: false - xy: 345, 63 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-solarpanel - rotate: false - xy: 355, 63 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -solarpanel - rotate: false - xy: 355, 63 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-sortedunloader - rotate: false - xy: 365, 63 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -sortedunloader - rotate: false - xy: 365, 63 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-sorter - rotate: false - xy: 375, 63 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -sorter - rotate: false - xy: 375, 63 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-space - rotate: false - xy: 385, 63 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -space - rotate: false - xy: 385, 63 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-splitter - rotate: false - xy: 395, 63 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -splitter - rotate: false - xy: 395, 63 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-steelconveyor - rotate: false - xy: 405, 63 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -steelconveyor - rotate: false - xy: 405, 63 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-steeldrill - rotate: false - xy: 415, 63 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-steelwall - rotate: false - xy: 425, 63 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -steelwall - rotate: false - xy: 425, 63 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-steelwall-large - rotate: false - xy: 345, 117 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -steelwall-large - rotate: false - xy: 345, 117 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-icon-stone - rotate: false - xy: 435, 125 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -stone1 - rotate: false - xy: 435, 125 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-stoneformer - rotate: false - xy: 435, 115 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -stoneformer - rotate: false - xy: 435, 115 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-stonewall - rotate: false - xy: 435, 105 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -stonewall - rotate: false - xy: 435, 105 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-swarmer - rotate: false - xy: 363, 117 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-icon-thermal-pump - rotate: false - xy: 381, 117 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -thermal-pump - rotate: false - xy: 381, 117 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-icon-thermalgenerator - rotate: false - xy: 445, 126 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -thermalgenerator - rotate: false - xy: 445, 126 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-thorium - rotate: false - xy: 445, 116 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -thorium1 - rotate: false - xy: 445, 116 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-titanium - rotate: false - xy: 445, 106 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -titanium1 - rotate: false - xy: 445, 106 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-titaniumdrill - rotate: false - xy: 651, 160 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-titaniumwall - rotate: false - xy: 651, 150 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -titaniumwall - rotate: false - xy: 651, 150 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-titaniumwall-large - rotate: false - xy: 399, 117 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -titaniumwall-large - rotate: false - xy: 399, 117 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-icon-unloader - rotate: false - xy: 661, 151 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -unloader - rotate: false - xy: 661, 151 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-vault - rotate: false - xy: 493, 157 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -vault - rotate: false - xy: 493, 157 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -block-icon-water - rotate: false - xy: 651, 140 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -water - rotate: false - xy: 651, 140 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-waterextractor - rotate: false - xy: 417, 117 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-icon-wave - rotate: false - xy: 213, 98 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -block-icon-weaponfactory - rotate: false - xy: 231, 99 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 -weaponfactory - rotate: false - xy: 231, 99 - size: 16, 16 - orig: 16, 16 - offset: 0, 0 - index: -1 item-armor-piercing-bullet rotate: false - xy: 405, 53 + xy: 688, 275 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-composite-flak rotate: false - xy: 311, 31 + xy: 708, 275 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-explosive-shell rotate: false - xy: 321, 41 + xy: 718, 285 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-frag-shell rotate: false - xy: 321, 31 + xy: 718, 275 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-homing-bullet rotate: false - xy: 331, 43 + xy: 728, 285 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-incendiary-mortar-shell rotate: false - xy: 331, 33 + xy: 728, 275 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-lead-bullet rotate: false - xy: 351, 43 + xy: 658, 263 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-scythe-missile rotate: false - xy: 371, 43 + xy: 698, 265 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-surge-mortar-shell rotate: false - xy: 391, 33 + xy: 655, 253 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-swarm-missile rotate: false - xy: 401, 43 + xy: 655, 243 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-thorium-shell rotate: false - xy: 411, 33 + xy: 665, 243 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-tracer-bullet rotate: false - xy: 421, 33 + xy: 665, 233 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-biomatter rotate: false - xy: 415, 53 + xy: 698, 285 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-blast-compound rotate: false - xy: 425, 53 + xy: 698, 275 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-coal rotate: false - xy: 311, 41 + xy: 708, 285 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-iron rotate: false - xy: 341, 43 + xy: 738, 285 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-lead rotate: false - xy: 341, 33 + xy: 738, 275 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-phase-matter rotate: false - xy: 351, 33 + xy: 668, 263 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-plasteel rotate: false - xy: 361, 43 + xy: 678, 265 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-sand rotate: false - xy: 361, 33 + xy: 688, 265 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-silicon rotate: false - xy: 371, 33 + xy: 708, 265 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-steel rotate: false - xy: 381, 43 + xy: 718, 265 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-stone rotate: false - xy: 381, 33 + xy: 728, 265 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-surge-alloy rotate: false - xy: 391, 43 + xy: 738, 265 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-thermite rotate: false - xy: 401, 33 + xy: 665, 253 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-thorium rotate: false - xy: 411, 43 + xy: 655, 233 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-titanium rotate: false - xy: 421, 43 + xy: 655, 223 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 standard-mech rotate: false - xy: 375, 85 + xy: 223, 20 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 standard-ship rotate: false - xy: 389, 85 + xy: 231, 48 size: 12, 12 orig: 12, 12 offset: 0, 0 @@ -3570,7 +2702,7 @@ border index: -1 button rotate: false - xy: 129, 52 + xy: 705, 385 size: 24, 40 split: 10, 10, 6, 10 orig: 24, 40 @@ -3578,7 +2710,7 @@ button index: -1 textarea rotate: false - xy: 129, 52 + xy: 705, 385 size: 24, 40 split: 10, 10, 9, 11 orig: 24, 40 @@ -3602,7 +2734,7 @@ button-over index: -1 button-map rotate: false - xy: 705, 385 + xy: 679, 383 size: 24, 40 split: 10, 10, 5, 10 orig: 24, 40 @@ -3610,7 +2742,7 @@ button-map index: -1 button-map-down rotate: false - xy: 679, 383 + xy: 67, 2 size: 24, 40 split: 10, 10, 5, 10 orig: 24, 40 @@ -3618,7 +2750,7 @@ button-map-down index: -1 button-map-over rotate: false - xy: 679, 383 + xy: 67, 2 size: 24, 40 split: 10, 10, 5, 10 orig: 24, 40 @@ -3626,7 +2758,7 @@ button-map-over index: -1 button-select rotate: false - xy: 519, 157 + xy: 627, 301 size: 24, 24 split: 4, 4, 4, 4 orig: 24, 24 @@ -3634,7 +2766,7 @@ button-select index: -1 check-off rotate: false - xy: 165, 94 + xy: 37, 8 size: 28, 32 orig: 28, 32 offset: 0, 0 @@ -3662,7 +2794,7 @@ check-over index: -1 clear rotate: false - xy: 289, 45 + xy: 665, 293 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -3690,7 +2822,7 @@ discord-banner-over index: -1 controller-cursor rotate: false - xy: 207, 62 + xy: 535, 139 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -3711,7 +2843,7 @@ icon-add index: -1 icon-admin rotate: false - xy: 213, 116 + xy: 677, 331 size: 14, 14 orig: 14, 14 offset: 0, 0 @@ -3725,112 +2857,112 @@ icon-admin-small index: -1 icon-areaDelete rotate: false - xy: 303, 59 + xy: 625, 148 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-arrow rotate: false - xy: 517, 121 + xy: 381, 117 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-arrow-16 rotate: false - xy: 517, 121 + xy: 381, 117 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-arrow-down rotate: false - xy: 317, 73 + xy: 625, 136 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-arrow-left rotate: false - xy: 289, 33 + xy: 625, 124 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-arrow-right rotate: false - xy: 329, 73 + xy: 626, 289 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-arrow-up rotate: false - xy: 341, 73 + xy: 638, 289 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-back rotate: false - xy: 535, 121 + xy: 399, 117 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-ban rotate: false - xy: 677, 331 + xy: 193, 122 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-break rotate: false - xy: 553, 121 + xy: 417, 117 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-cancel rotate: false - xy: 571, 121 + xy: 589, 139 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-chat rotate: false - xy: 353, 73 + xy: 624, 277 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-check rotate: false - xy: 589, 136 + xy: 183, 102 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-crafting rotate: false - xy: 365, 73 + xy: 624, 265 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-cursor rotate: false - xy: 377, 73 + xy: 636, 277 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-defense rotate: false - xy: 389, 73 + xy: 636, 265 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -3844,518 +2976,518 @@ icon-dev-builds index: -1 icon-discord rotate: false - xy: 123, 2 + xy: 709, 331 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-distribution rotate: false - xy: 401, 73 + xy: 631, 253 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-donate rotate: false - xy: 139, 2 + xy: 725, 331 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-dots rotate: false - xy: 155, 2 + xy: 737, 428 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-editor rotate: false - xy: 171, 2 + xy: 327, 83 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-egg rotate: false - xy: 709, 331 + xy: 343, 83 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-elevation rotate: false - xy: 589, 118 + xy: 713, 347 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-eraser rotate: false - xy: 607, 120 + xy: 715, 313 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-exit rotate: false - xy: 725, 331 + xy: 359, 83 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-file rotate: false - xy: 625, 120 + xy: 715, 295 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-file-image rotate: false - xy: 643, 120 + xy: 291, 99 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-file-text rotate: false - xy: 607, 138 + xy: 375, 83 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-fill rotate: false - xy: 661, 287 + xy: 309, 99 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-floppy rotate: false - xy: 697, 153 + xy: 391, 83 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-floppy-16 rotate: false - xy: 679, 277 + xy: 327, 99 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-folder rotate: false - xy: 713, 153 + xy: 407, 83 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-folder-parent rotate: false - xy: 729, 153 + xy: 423, 83 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-github rotate: false - xy: 737, 428 + xy: 291, 65 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-google-play rotate: false - xy: 731, 412 + xy: 307, 65 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-grid rotate: false - xy: 697, 277 + xy: 345, 99 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-hold rotate: false - xy: 413, 73 + xy: 631, 241 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-holdDelete rotate: false - xy: 425, 73 + xy: 631, 229 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-home rotate: false - xy: 731, 396 + xy: 615, 192 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-host rotate: false - xy: 753, 432 + xy: 615, 176 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-info rotate: false - xy: 641, 194 + xy: 631, 217 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-itch.io rotate: false - xy: 733, 369 + xy: 615, 160 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-items-none rotate: false - xy: 345, 53 + xy: 648, 279 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-line rotate: false - xy: 715, 277 + xy: 363, 99 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-link rotate: false - xy: 225, 82 + xy: 825, 433 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-liquid rotate: false - xy: 641, 182 + xy: 631, 205 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-load rotate: false - xy: 225, 66 + xy: 841, 435 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-load-image rotate: false - xy: 733, 277 + xy: 381, 99 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-load-map rotate: false - xy: 661, 269 + xy: 399, 99 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-loading rotate: false - xy: 679, 259 + xy: 417, 99 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-logic rotate: false - xy: 641, 170 + xy: 631, 193 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-menu rotate: false - xy: 626, 289 + xy: 631, 181 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-menu-large rotate: false - xy: 697, 259 + xy: 733, 313 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-none rotate: false - xy: 638, 289 + xy: 631, 169 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-pause rotate: false - xy: 649, 267 + xy: 643, 253 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-pencil rotate: false - xy: 715, 259 + xy: 733, 295 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-pencil-small rotate: false - xy: 241, 83 + xy: 857, 435 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-pick rotate: false - xy: 733, 259 + xy: 499, 121 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-play rotate: false - xy: 649, 255 + xy: 643, 241 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-play-2 rotate: false - xy: 241, 67 + xy: 873, 435 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-players rotate: false - xy: 649, 243 + xy: 643, 229 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-power rotate: false - xy: 649, 231 + xy: 643, 217 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-production rotate: false - xy: 649, 219 + xy: 643, 205 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-quit rotate: false - xy: 259, 93 + xy: 889, 437 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-redo rotate: false - xy: 661, 251 + xy: 517, 121 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-refresh rotate: false - xy: 275, 93 + xy: 905, 437 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-rename rotate: false - xy: 257, 77 + xy: 921, 437 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-resize rotate: false - xy: 679, 241 + xy: 535, 121 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-rotate rotate: false - xy: 273, 77 + xy: 937, 429 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-rotate-arrow rotate: false - xy: 257, 61 + xy: 953, 429 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-rotate-left rotate: false - xy: 273, 61 + xy: 969, 429 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-rotate-right rotate: false - xy: 241, 51 + xy: 985, 429 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-save rotate: false - xy: 225, 50 + xy: 993, 460 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-save-image rotate: false - xy: 697, 241 + xy: 553, 121 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-save-map rotate: false - xy: 715, 241 + xy: 571, 121 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-settings rotate: false - xy: 624, 277 + xy: 643, 193 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-terrain rotate: false - xy: 733, 241 + xy: 589, 121 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-tools rotate: false - xy: 257, 45 + xy: 1009, 460 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-touch rotate: false - xy: 624, 265 + xy: 643, 181 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-touchDelete rotate: false - xy: 636, 277 + xy: 643, 169 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-trash rotate: false - xy: 273, 45 + xy: 1005, 444 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-trash-16 rotate: false - xy: 661, 233 + xy: 597, 194 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-trello rotate: false - xy: 241, 35 + xy: 1001, 428 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-tutorial rotate: false - xy: 257, 29 + xy: 201, 62 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-undo rotate: false - xy: 679, 223 + xy: 597, 176 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-units rotate: false - xy: 636, 265 + xy: 255, 61 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-weapon rotate: false - xy: 749, 373 + xy: 267, 61 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-wiki rotate: false - xy: 273, 29 + xy: 217, 62 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-zoom rotate: false - xy: 697, 223 + xy: 597, 158 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 icon-zoom-small rotate: false - xy: 633, 216 + xy: 187, 40 size: 14, 14 orig: 14, 14 offset: 0, 0 @@ -4369,7 +3501,7 @@ logotext index: -1 pane rotate: false - xy: 97, 1 + xy: 119, 1 size: 24, 36 split: 10, 10, 5, 5 orig: 24, 36 @@ -4377,7 +3509,7 @@ pane index: -1 pane-button rotate: false - xy: 71, 1 + xy: 93, 1 size: 24, 36 split: 10, 10, 5, 5 orig: 24, 36 @@ -4385,7 +3517,7 @@ pane-button index: -1 scroll rotate: false - xy: 975, 476 + xy: 993, 476 size: 24, 35 split: 10, 10, 6, 5 orig: 24, 35 @@ -4410,7 +3542,7 @@ scroll-knob-horizontal index: -1 scroll-knob-vertical rotate: false - xy: 181, 52 + xy: 967, 471 size: 24, 40 split: 10, 10, 6, 10 orig: 24, 40 @@ -4418,7 +3550,7 @@ scroll-knob-vertical index: -1 scroll-knob-vertical-black rotate: false - xy: 155, 52 + xy: 941, 471 size: 24, 40 split: 10, 10, 6, 10 orig: 24, 40 @@ -4426,14 +3558,14 @@ scroll-knob-vertical-black index: -1 selection rotate: false - xy: 587, 209 + xy: 145, 1 size: 1, 1 orig: 1, 1 offset: 0, 0 index: -1 slider rotate: false - xy: 217, 52 + xy: 1022, 503 size: 1, 8 orig: 1, 8 offset: 0, 0 @@ -4461,7 +3593,7 @@ slider-knob-over index: -1 slider-vertical rotate: false - xy: 965, 476 + xy: 587, 209 size: 8, 1 orig: 8, 1 offset: 0, 0 @@ -4528,147 +3660,147 @@ window-empty index: -1 drone rotate: false - xy: 572, 244 + xy: 617, 208 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 scout rotate: false - xy: 305, 85 + xy: 195, 26 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 scout-base rotate: false - xy: 319, 85 + xy: 195, 12 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 standard-mech-base rotate: false - xy: 319, 85 + xy: 195, 12 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 scout-leg rotate: false - xy: 333, 85 + xy: 209, 34 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 standard-mech-leg rotate: false - xy: 333, 85 + xy: 209, 34 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 vtol rotate: false - xy: 417, 85 + xy: 237, 20 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 vtol-booster-1 rotate: false - xy: 289, 71 + xy: 214, 6 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 vtol-booster-2 rotate: false - xy: 289, 57 + xy: 228, 6 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 vtol-flame rotate: false - xy: 753, 385 + xy: 244, 70 size: 9, 9 orig: 9, 9 offset: 0, 0 index: -1 beam-equip rotate: false - xy: 185, 128 + xy: 607, 212 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blaster rotate: false - xy: 215, 42 + xy: 293, 33 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blaster-equip rotate: false - xy: 215, 32 + xy: 303, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 clustergun rotate: false - xy: 769, 438 + xy: 749, 394 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 clustergun-equip rotate: false - xy: 779, 439 + xy: 751, 384 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shockgun rotate: false - xy: 415, 3 + xy: 715, 205 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shockgun-equip rotate: false - xy: 425, 13 + xy: 725, 215 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 triblaster rotate: false - xy: 545, 101 + xy: 455, 122 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 triblaster-equip rotate: false - xy: 555, 101 + xy: 455, 112 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 vulcan rotate: false - xy: 565, 101 + xy: 465, 112 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 vulcan-equip rotate: false - xy: 575, 101 + xy: 475, 122 size: 8, 8 orig: 8, 8 offset: 0, 0 diff --git a/core/assets/sprites/sprites.png b/core/assets/sprites/sprites.png index 5e6cc0881f..54bbd0526b 100644 Binary files a/core/assets/sprites/sprites.png and b/core/assets/sprites/sprites.png differ diff --git a/core/src/io/anuke/mindustry/content/Items.java b/core/src/io/anuke/mindustry/content/Items.java index 843aa18694..085b521c64 100644 --- a/core/src/io/anuke/mindustry/content/Items.java +++ b/core/src/io/anuke/mindustry/content/Items.java @@ -47,6 +47,7 @@ public class Items implements ContentList{ type = ItemType.material; explosiveness = 0.1f; hardness = 4; + radioactivity = 0.5f; }}; silicon = new Item("silicon", Color.valueOf("53565c")) {{ diff --git a/core/src/io/anuke/mindustry/content/Liquids.java b/core/src/io/anuke/mindustry/content/Liquids.java index 8023fdde42..b4cb6d4fb2 100644 --- a/core/src/io/anuke/mindustry/content/Liquids.java +++ b/core/src/io/anuke/mindustry/content/Liquids.java @@ -37,7 +37,7 @@ public class Liquids implements ContentList { flammability = 0.6f; explosiveness = 0.6f; tier = 1; - effect = StatusEffects.oiled; + effect = StatusEffects.tarred; } }; diff --git a/core/src/io/anuke/mindustry/content/Recipes.java b/core/src/io/anuke/mindustry/content/Recipes.java index 3fca71ec5f..bba1688e6c 100644 --- a/core/src/io/anuke/mindustry/content/Recipes.java +++ b/core/src/io/anuke/mindustry/content/Recipes.java @@ -89,22 +89,17 @@ public class Recipes implements ContentList{ new Recipe(power, PowerBlocks.powernodelarge, new ItemStack(Items.steel, 3), new ItemStack(Items.iron, 3)); new Recipe(power, PowerBlocks.battery, new ItemStack(Items.steel, 5), new ItemStack(Items.iron, 5)); new Recipe(power, PowerBlocks.batteryLarge, new ItemStack(Items.steel, 5), new ItemStack(Items.iron, 5)); - new Recipe(power, PowerBlocks.combustiongenerator, new ItemStack(Items.iron, 30)); - new Recipe(power, PowerBlocks.liquidcombustiongenerator, new ItemStack(Items.iron, 30)); - new Recipe(power, PowerBlocks.thermalgenerator, new ItemStack(Items.steel, 30)); - new Recipe(power, PowerBlocks.rtgenerator, new ItemStack(Items.titanium, 20), new ItemStack(Items.steel, 20)); + new Recipe(power, PowerBlocks.combustiongenerator, new ItemStack(Items.iron, 1)); + new Recipe(power, PowerBlocks.turbinegenerator, new ItemStack(Items.iron, 1)); + new Recipe(power, PowerBlocks.thermalgenerator, new ItemStack(Items.steel, 1)); + new Recipe(power, PowerBlocks.rtgenerator, new ItemStack(Items.titanium, 1), new ItemStack(Items.steel, 1)); new Recipe(power, PowerBlocks.solarpanel, new ItemStack(Items.iron, 30), new ItemStack(Items.silicon, 20)); new Recipe(power, PowerBlocks.largesolarpanel, new ItemStack(Items.iron, 30), new ItemStack(Items.silicon, 20)); new Recipe(power, PowerBlocks.nuclearReactor, new ItemStack(Items.titanium, 40), new ItemStack(Items.surgealloy, 40), new ItemStack(Items.steel, 50)); new Recipe(power, PowerBlocks.fusionReactor, new ItemStack(Items.titanium, 40), new ItemStack(Items.surgealloy, 40), new ItemStack(Items.steel, 50)); - new Recipe(power, PowerBlocks.shieldgenerator, new ItemStack(Items.titanium, 30), new ItemStack(Items.surgealloy, 30)); - new Recipe(distribution, PowerBlocks.warpgate, new ItemStack(Items.steel, 1)); - new Recipe(power, PowerBlocks.repairturret, new ItemStack(Items.iron, 30)); - new Recipe(power, PowerBlocks.megarepairturret, new ItemStack(Items.iron, 20), new ItemStack(Items.steel, 30)); - new Recipe(liquid, LiquidBlocks.conduit, new ItemStack(Items.steel, 1)); new Recipe(liquid, LiquidBlocks.pulseconduit, new ItemStack(Items.titanium, 1), new ItemStack(Items.steel, 1)); new Recipe(liquid, LiquidBlocks.liquidrouter, new ItemStack(Items.steel, 2)); @@ -124,6 +119,9 @@ public class Recipes implements ContentList{ new Recipe(units, UnitBlocks.droneFactory, new ItemStack(Items.iron, 50)); new Recipe(units, UnitBlocks.reconstructor, new ItemStack(Items.iron, 1)); + new Recipe(units, UnitBlocks.overdriveProjector, new ItemStack(Items.iron, 1)); + new Recipe(units, UnitBlocks.shieldProjector, new ItemStack(Items.iron, 1)); + //new Recipe(units, UnitBlocks.vtolFactory, new ItemStack(Items.steel, 10)); //new Recipe(units, UnitBlocks.droneFactory, new ItemStack(Items.steel, 10)); diff --git a/core/src/io/anuke/mindustry/content/StatusEffects.java b/core/src/io/anuke/mindustry/content/StatusEffects.java index f6456a1f6c..8f978be392 100644 --- a/core/src/io/anuke/mindustry/content/StatusEffects.java +++ b/core/src/io/anuke/mindustry/content/StatusEffects.java @@ -2,7 +2,7 @@ package io.anuke.mindustry.content; import com.badlogic.gdx.utils.Array; import io.anuke.mindustry.content.fx.EnvironmentFx; -import io.anuke.mindustry.entities.StatusController.TransitionResult; +import io.anuke.mindustry.entities.StatusController.StatusEntry; import io.anuke.mindustry.game.Content; import io.anuke.mindustry.type.StatusEffect; import io.anuke.mindustry.entities.Unit; @@ -12,7 +12,7 @@ import io.anuke.ucore.core.Timers; import io.anuke.ucore.util.Mathf; public class StatusEffects implements ContentList { - public static StatusEffect none, burning, freezing, wet, melting, oiled; + public static StatusEffect none, burning, freezing, wet, melting, tarred, overdrive, shielded; @Override public void load() { @@ -25,11 +25,11 @@ public class StatusEffects implements ContentList { } @Override - public TransitionResult getTransition(Unit unit, StatusEffect to, float time, float newTime, TransitionResult result) { - if (to == oiled) { + public StatusEntry getTransition(Unit unit, StatusEffect to, float time, float newTime, StatusEntry result) { + if (to == tarred) { unit.damage(1f); Effects.effect(EnvironmentFx.burning, unit.x + Mathf.range(unit.getSize() / 2f), unit.y + Mathf.range(unit.getSize() / 2f)); - return result.set(this, Math.min(time + newTime, baseDuration + oiled.baseDuration)); + return result.set(this, Math.min(time + newTime, baseDuration + tarred.baseDuration)); } return super.getTransition(unit, to, time, newTime, result); @@ -49,11 +49,11 @@ public class StatusEffects implements ContentList { freezing = new StatusEffect(5 * 60f) { { oppositeScale = 0.4f; + speedMultiplier = 0.7f; } @Override public void update(Unit unit, float time) { - unit.getVelocity().scl(0.7f); if (Mathf.chance(Timers.delta() * 0.15f)) { Effects.effect(EnvironmentFx.freezing, unit.x + Mathf.range(unit.getSize() / 2f), unit.y + Mathf.range(unit.getSize() / 2f)); @@ -64,6 +64,7 @@ public class StatusEffects implements ContentList { wet = new StatusEffect(3 * 60f) { { oppositeScale = 0.5f; + speedMultiplier = 0.999f; } @Override @@ -71,19 +72,19 @@ public class StatusEffects implements ContentList { if (Mathf.chance(Timers.delta() * 0.15f)) { Effects.effect(EnvironmentFx.wet, unit.x + Mathf.range(unit.getSize() / 2f), unit.y + Mathf.range(unit.getSize() / 2f)); } - - unit.getVelocity().scl(0.999f); } }; melting = new StatusEffect(5 * 60f) { { oppositeScale = 0.2f; + speedMultiplier = 0.8f; + armorMultiplier = 0.8f; } @Override - public TransitionResult getTransition(Unit unit, StatusEffect to, float time, float newTime, TransitionResult result) { - if (to == oiled) { + public StatusEntry getTransition(Unit unit, StatusEffect to, float time, float newTime, StatusEntry result) { + if (to == tarred) { return result.set(this, Math.min(time + newTime / 2f, baseDuration)); } @@ -92,7 +93,6 @@ public class StatusEffects implements ContentList { @Override public void update(Unit unit, float time) { - unit.getVelocity().scl(0.8f); unit.damagePeriodic(0.1f); if (Mathf.chance(Timers.delta() * 0.2f)) { @@ -101,18 +101,20 @@ public class StatusEffects implements ContentList { } }; - oiled = new StatusEffect(4 * 60f) { + tarred = new StatusEffect(4 * 60f) { + { + speedMultiplier = 0.6f; + } + @Override public void update(Unit unit, float time) { if (Mathf.chance(Timers.delta() * 0.15f)) { Effects.effect(EnvironmentFx.oily, unit.x + Mathf.range(unit.getSize() / 2f), unit.y + Mathf.range(unit.getSize() / 2f)); } - - unit.getVelocity().scl(0.6f); } @Override - public TransitionResult getTransition(Unit unit, StatusEffect to, float time, float newTime, TransitionResult result) { + public StatusEntry getTransition(Unit unit, StatusEffect to, float time, float newTime, StatusEntry result) { if (to == melting || to == burning) { return result.set(to, newTime + time); } @@ -121,6 +123,26 @@ public class StatusEffects implements ContentList { } }; + overdrive = new StatusEffect(6f) { + { + armorMultiplier = 0.95f; + speedMultiplier = 1.4f; + damageMultiplier = 1.4f; + } + + @Override + public void update(Unit unit, float time) { + //idle regen boosted + unit.health += 0.01f * Timers.delta(); + } + }; + + shielded = new StatusEffect(6f) { + { + armorMultiplier = 3f; + } + }; + melting.setOpposites(wet, freezing); wet.setOpposites(burning); freezing.setOpposites(burning, melting); diff --git a/core/src/io/anuke/mindustry/content/blocks/Blocks.java b/core/src/io/anuke/mindustry/content/blocks/Blocks.java index 1869e34b6d..1df5b8ab24 100644 --- a/core/src/io/anuke/mindustry/content/blocks/Blocks.java +++ b/core/src/io/anuke/mindustry/content/blocks/Blocks.java @@ -86,7 +86,7 @@ public class Blocks extends BlockList implements ContentList{ oil = new Floor("oil") {{ placeableOn = false; liquidColor = Color.valueOf("292929"); - status = StatusEffects.oiled; + status = StatusEffects.tarred; statusIntensity = 1f; speedMultiplier = 0.2f; variants = 0; diff --git a/core/src/io/anuke/mindustry/content/blocks/DebugBlocks.java b/core/src/io/anuke/mindustry/content/blocks/DebugBlocks.java index ec7d8c994d..7b0b040f1e 100644 --- a/core/src/io/anuke/mindustry/content/blocks/DebugBlocks.java +++ b/core/src/io/anuke/mindustry/content/blocks/DebugBlocks.java @@ -50,6 +50,9 @@ public class DebugBlocks extends BlockList implements ContentList{ }; itemSource = new Sorter("itemsource") { + { + hasItems = true; + } @Override public void update(Tile tile) { SorterEntity entity = tile.entity(); diff --git a/core/src/io/anuke/mindustry/content/blocks/PowerBlocks.java b/core/src/io/anuke/mindustry/content/blocks/PowerBlocks.java index 19641ddca1..fd69e2c917 100644 --- a/core/src/io/anuke/mindustry/content/blocks/PowerBlocks.java +++ b/core/src/io/anuke/mindustry/content/blocks/PowerBlocks.java @@ -3,93 +3,73 @@ package io.anuke.mindustry.content.blocks; import io.anuke.mindustry.content.fx.BlockFx; import io.anuke.mindustry.type.ContentList; import io.anuke.mindustry.world.Block; -import io.anuke.mindustry.world.blocks.defense.RepairTurret; -import io.anuke.mindustry.world.blocks.defense.ShieldBlock; import io.anuke.mindustry.world.blocks.distribution.WarpGate; import io.anuke.mindustry.world.blocks.power.*; public class PowerBlocks extends BlockList implements ContentList { - public static Block combustiongenerator, thermalgenerator, liquidcombustiongenerator, rtgenerator, solarpanel, largesolarpanel, - nuclearReactor, fusionReactor, repairturret, megarepairturret, shieldgenerator, battery, batteryLarge, powernode, powernodelarge, warpgate; + public static Block combustiongenerator, thermalgenerator, turbinegenerator, rtgenerator, solarpanel, largesolarpanel, + nuclearReactor, fusionReactor, battery, batteryLarge, powernode, powernodelarge, warpgate; @Override public void load() { - combustiongenerator = new BurnerGenerator("combustiongenerator") {{ + combustiongenerator = new BurnerGenerator("combustion-generator") {{ powerOutput = 0.04f; powerCapacity = 40f; }}; - thermalgenerator = new LiquidHeatGenerator("thermalgenerator") {{ + thermalgenerator = new LiquidHeatGenerator("thermal-generator") {{ maxLiquidGenerate = 0.5f; powerPerLiquid = 0.08f; powerCapacity = 40f; generateEffect = BlockFx.redgeneratespark; + size = 2; }}; - liquidcombustiongenerator = new LiquidBurnerGenerator("liquidcombustiongenerator") {{ - maxLiquidGenerate = 0.4f; - powerPerLiquid = 0.12f; + turbinegenerator = new TurbineGenerator("turbine-generator") {{ + powerOutput = 0.04f; powerCapacity = 40f; + size = 2; }}; - rtgenerator = new DecayGenerator("rtgenerator") {{ + rtgenerator = new DecayGenerator("rtg-generator") {{ powerCapacity = 40f; powerOutput = 0.02f; itemDuration = 500f; }}; - solarpanel = new SolarGenerator("solarpanel") {{ + solarpanel = new SolarGenerator("solar-panel") {{ generation = 0.003f; }}; - largesolarpanel = new SolarGenerator("largesolarpanel") {{ + largesolarpanel = new SolarGenerator("large-solar-panel") {{ size = 3; generation = 0.012f; }}; - nuclearReactor = new NuclearReactor("nuclearreactor") {{ + nuclearReactor = new NuclearReactor("nuclear-reactor") {{ size = 3; health = 600; }}; - fusionReactor = new FusionReactor("fusionreactor") {{ + fusionReactor = new FusionReactor("fusion-reactor") {{ size = 4; health = 600; }}; - repairturret = new RepairTurret("repairturret") {{ - range = 30; - reload = 20f; - health = 60; - powerUsed = 0.08f; - }}; - - megarepairturret = new RepairTurret("megarepairturret") {{ - range = 44; - reload = 12f; - health = 90; - powerUsed = 0.13f; - size = 2; - }}; - - shieldgenerator = new ShieldBlock("shieldgenerator") {{ - health = 400; - }}; - battery = new PowerGenerator("battery") {{ powerCapacity = 320f; }}; - batteryLarge = new PowerGenerator("batterylarge") {{ + batteryLarge = new PowerGenerator("battery-large") {{ size = 3; powerCapacity = 2000f; }}; - powernode = new PowerDistributor("powernode") {{ + powernode = new PowerDistributor("power-node") {{ shadow = "shadow-round-1"; }}; - powernodelarge = new PowerDistributor("powernodelarge") {{ + powernodelarge = new PowerDistributor("power-node-large") {{ size = 2; powerSpeed = 1f; maxNodes = 5; diff --git a/core/src/io/anuke/mindustry/content/bullets/TurretBullets.java b/core/src/io/anuke/mindustry/content/bullets/TurretBullets.java index 529a2b3720..5ee60e29b8 100644 --- a/core/src/io/anuke/mindustry/content/bullets/TurretBullets.java +++ b/core/src/io/anuke/mindustry/content/bullets/TurretBullets.java @@ -156,7 +156,7 @@ public class TurretBullets extends BulletList implements ContentList { { speed = 2f; drag = 0.03f; - status = StatusEffects.oiled; + status = StatusEffects.tarred; statusIntensity = 0.5f; } }; diff --git a/core/src/io/anuke/mindustry/entities/Player.java b/core/src/io/anuke/mindustry/entities/Player.java index 23f280f513..09e385c2a8 100644 --- a/core/src/io/anuke/mindustry/entities/Player.java +++ b/core/src/io/anuke/mindustry/entities/Player.java @@ -142,7 +142,7 @@ public class Player extends Unit implements BuilderTrait, CarryTrait { @Override public float getArmor() { - return 0f; + return mech.armor; } @Override @@ -172,7 +172,7 @@ public class Player extends Unit implements BuilderTrait, CarryTrait { @Override public void damage(float amount){ - CallEntity.onPlayerDamage(this, amount); + CallEntity.onPlayerDamage(this, calculateDamage(amount)); if(health <= 0 && !dead && isLocal){ CallEntity.onPlayerDeath(this); diff --git a/core/src/io/anuke/mindustry/entities/StatusController.java b/core/src/io/anuke/mindustry/entities/StatusController.java index 79d0f138fc..e2f0b02e95 100644 --- a/core/src/io/anuke/mindustry/entities/StatusController.java +++ b/core/src/io/anuke/mindustry/entities/StatusController.java @@ -1,69 +1,136 @@ package io.anuke.mindustry.entities; +import com.badlogic.gdx.utils.Array; +import com.badlogic.gdx.utils.Pools; import io.anuke.mindustry.content.StatusEffects; +import io.anuke.mindustry.entities.traits.Saveable; import io.anuke.mindustry.type.StatusEffect; import io.anuke.ucore.core.Timers; +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; + /**Class for controlling status effects on an entity.*/ -public class StatusController { - private static final TransitionResult globalResult = new TransitionResult(); +public class StatusController implements Saveable{ + private static final StatusEntry globalResult = new StatusEntry(); + private static final Array removals = new Array<>(); - private io.anuke.mindustry.type.StatusEffect current = StatusEffects.none; - private float time; + private Array statuses = new Array<>(); - public void handleApply(Unit unit, io.anuke.mindustry.type.StatusEffect effect, float intensity){ + private float speedMultiplier; + private float damageMultiplier; + private float armorMultiplier; + + public void handleApply(Unit unit, StatusEffect effect, float intensity){ if(effect == StatusEffects.none) return; //don't apply empty effects float newTime = effect.baseDuration*intensity; - if(effect == current){ - time = Math.max(time, newTime); - }else { + if(statuses.size > 0){ + //check for opposite effects + for(StatusEntry entry : statuses){ + //extend effect + if(entry.effect == effect) { + entry.time = Math.max(entry.time, newTime); + return; + }else if(entry.effect.isOpposite(effect)){ //find opposite + entry.effect.getTransition(unit, effect, entry.time, newTime, globalResult); + entry.time = globalResult.time; - current.getTransition(unit, effect, time, newTime, globalResult); - time = globalResult.time; + if (globalResult.effect != entry.effect) { + entry.effect.onTransition(unit, globalResult.effect); + entry.effect = globalResult.effect; + } - if (globalResult.result != current) { - current.onTransition(unit, globalResult.result); - current = globalResult.result; + //stop looking when one is found + return; + } } } + + //otherwise, no opposites found, add direct effect + StatusEntry entry = Pools.obtain(StatusEntry.class); + entry.set(effect, newTime); + statuses.add(entry); } public void clear(){ - current = StatusEffects.none; - time = 0f; + statuses.clear(); } public void update(Unit unit){ - time = Math.max(time - Timers.delta(), 0); + speedMultiplier = damageMultiplier = armorMultiplier = 1f; - if(time <= 0){ - current = StatusEffects.none; - }else{ - current.update(unit, time); + if(statuses.size == 0) return; + + removals.clear(); + + for(StatusEntry entry : statuses){ + entry.time = Math.max(entry.time - Timers.delta(), 0); + + if(entry.time <= 0){ + Pools.free(entry); + removals.add(entry); + }else{ + speedMultiplier *= entry.effect.speedMultiplier; + armorMultiplier *= entry.effect.armorMultiplier; + damageMultiplier *= entry.effect.damageMultiplier; + entry.effect.update(unit, entry.time); + } + } + + if(removals.size > 0){ + statuses.removeAll(removals, true); } } - public void set(io.anuke.mindustry.type.StatusEffect current, float time){ - this.current = current; - this.time = time; + public float getSpeedMultiplier(){ + return speedMultiplier; } - public io.anuke.mindustry.type.StatusEffect current() { - return current; + public float getDamageMultiplier(){ + return damageMultiplier; } - public float getTime() { - return time; + public float getArmorMultiplier() { + return armorMultiplier; } - public static class TransitionResult{ - public io.anuke.mindustry.type.StatusEffect result; + public boolean hasEffect(StatusEffect effect){ + for(StatusEntry entry : statuses){ + if(entry.effect == effect) return true; + } + return false; + } + + @Override + public void writeSave(DataOutput stream) throws IOException { + stream.writeByte(statuses.size); + for(StatusEntry entry : statuses){ + stream.writeByte(entry.effect.id); + stream.writeShort((short)(entry.time * 2)); + } + } + + @Override + public void readSave(DataInput stream) throws IOException { + byte amount = stream.readByte(); + for (int i = 0; i < amount; i++) { + byte id = stream.readByte(); + float time = stream.readShort() / 2f; + StatusEntry entry = Pools.obtain(StatusEntry.class); + entry.set(StatusEffect.getByID(id), time); + statuses.add(entry); + } + } + + public static class StatusEntry { + public StatusEffect effect; public float time; - public TransitionResult set(StatusEffect effect, float time){ - this.result = effect; + public StatusEntry set(StatusEffect effect, float time){ + this.effect = effect; this.time = time; return this; } diff --git a/core/src/io/anuke/mindustry/entities/Unit.java b/core/src/io/anuke/mindustry/entities/Unit.java index db0595c28f..f1e27f7a1d 100644 --- a/core/src/io/anuke/mindustry/entities/Unit.java +++ b/core/src/io/anuke/mindustry/entities/Unit.java @@ -81,7 +81,7 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ @Override public void damage(float amount){ - super.damage(amount * Mathf.clamp(1f-getArmor()/100f)); + super.damage(calculateDamage(amount)); hitTime = hitDuration; } @@ -117,17 +117,15 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ byte yv = stream.readByte(); float rotation = stream.readShort()/2f; int health = stream.readShort(); - byte effect = stream.readByte(); - float etime = stream.readShort()/2f; - this.inventory.read(stream); + this.status.readSave(stream); + this.inventory.readSave(stream); this.team = Team.values()[team]; this.health = health; this.x = x; this.y = y; this.velocity.set(xv / velocityPercision, yv / velocityPercision); this.rotation = rotation; - this.status.set(StatusEffect.getByID(effect), etime); } public void writeSave(DataOutput stream, boolean net) throws IOException { @@ -138,13 +136,20 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ stream.writeByte((byte)(Mathf.clamp(velocity.y, -maxAbsVelocity, maxAbsVelocity) * velocityPercision)); stream.writeShort((short)(rotation*2)); stream.writeShort((short)health); - stream.writeByte(status.current().id); - stream.writeShort((short)(status.getTime()*2)); - inventory.write(stream); + status.writeSave(stream); + inventory.writeSave(stream); } - public StatusEffect getStatus(){ - return status.current(); + public float calculateDamage(float amount){ + return amount * Mathf.clamp(1f-getArmor()/100f*status.getArmorMultiplier()); + } + + public float getDamageMultipler(){ + return status.getDamageMultiplier(); + } + + public boolean hasEffect(StatusEffect effect){ + return status.hasEffect(effect); } public TileEntity getClosestCore(){ @@ -178,10 +183,10 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ Floor floor = getFloorOn(); Tile tile = world.tileWorld(x, y); - velocity.limit(maxVelocity); - status.update(this); + velocity.limit(maxVelocity).scl(status.getSpeedMultiplier()); + if(isFlying()) { x += velocity.x / getMass() * Timers.delta(); y += velocity.y / getMass() * Timers.delta(); diff --git a/core/src/io/anuke/mindustry/entities/UnitInventory.java b/core/src/io/anuke/mindustry/entities/UnitInventory.java index 41012ae64a..9d961b2ac4 100644 --- a/core/src/io/anuke/mindustry/entities/UnitInventory.java +++ b/core/src/io/anuke/mindustry/entities/UnitInventory.java @@ -2,6 +2,7 @@ package io.anuke.mindustry.entities; import com.badlogic.gdx.utils.Array; import io.anuke.mindustry.content.Items; +import io.anuke.mindustry.entities.traits.Saveable; import io.anuke.mindustry.type.AmmoEntry; import io.anuke.mindustry.type.AmmoType; import io.anuke.mindustry.type.Item; @@ -9,7 +10,7 @@ import io.anuke.mindustry.type.ItemStack; import java.io.*; -public class UnitInventory { +public class UnitInventory implements Saveable{ private Array ammos = new Array<>(); private int totalAmmo; private ItemStack item = new ItemStack(Items.stone, 0); @@ -30,7 +31,8 @@ public class UnitInventory { infiniteAmmo = infinite; } - public void write(DataOutput stream) throws IOException { + @Override + public void writeSave(DataOutput stream) throws IOException { stream.writeShort(item.amount); stream.writeByte(item.item.id); stream.writeBoolean(infiniteAmmo); @@ -42,7 +44,8 @@ public class UnitInventory { } } - public void read(DataInput stream) throws IOException { + @Override + public void readSave(DataInput stream) throws IOException { short iamount = stream.readShort(); byte iid = stream.readByte(); infiniteAmmo = stream.readBoolean(); diff --git a/core/src/io/anuke/mindustry/entities/bullet/Bullet.java b/core/src/io/anuke/mindustry/entities/bullet/Bullet.java index b7d2509016..73dc5d95ee 100644 --- a/core/src/io/anuke/mindustry/entities/bullet/Bullet.java +++ b/core/src/io/anuke/mindustry/entities/bullet/Bullet.java @@ -100,6 +100,15 @@ public class Bullet extends BulletEntity implements TeamTrait, SyncT return data; } + @Override + public float getDamage(){ + if(owner instanceof Unit){ + return super.getDamage() * ((Unit) owner).getDamageMultipler(); + } + + return super.getDamage(); + } + @Override public int getTypeID() { return typeID; diff --git a/core/src/io/anuke/mindustry/entities/effect/Lightning.java b/core/src/io/anuke/mindustry/entities/effect/Lightning.java index abd7ec41db..de8d3d8916 100644 --- a/core/src/io/anuke/mindustry/entities/effect/Lightning.java +++ b/core/src/io/anuke/mindustry/entities/effect/Lightning.java @@ -89,7 +89,7 @@ public class Lightning extends TimedEntity implements Poolable, DrawTrait{ if(hitrect.contains(x2, y2) || hitrect.contains(fx, fy)){ float result = damage; - if(entity.getStatus() == StatusEffects.wet) + if(entity.hasEffect(StatusEffects.wet)) result = (result * wetDamageMultiplier); entity.damage(result); diff --git a/core/src/io/anuke/mindustry/entities/traits/SaveTrait.java b/core/src/io/anuke/mindustry/entities/traits/SaveTrait.java index 59652182dd..94590db2fc 100644 --- a/core/src/io/anuke/mindustry/entities/traits/SaveTrait.java +++ b/core/src/io/anuke/mindustry/entities/traits/SaveTrait.java @@ -2,12 +2,6 @@ package io.anuke.mindustry.entities.traits; import io.anuke.ucore.entities.trait.Entity; -import java.io.DataInput; -import java.io.DataOutput; -import java.io.IOException; - /**Marks an entity as serializable.*/ -public interface SaveTrait extends Entity, TypeTrait{ - void writeSave(DataOutput stream) throws IOException; - void readSave(DataInput stream) throws IOException; +public interface SaveTrait extends Entity, TypeTrait, Saveable{ } diff --git a/core/src/io/anuke/mindustry/entities/traits/Saveable.java b/core/src/io/anuke/mindustry/entities/traits/Saveable.java new file mode 100644 index 0000000000..fee2a3123b --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/traits/Saveable.java @@ -0,0 +1,10 @@ +package io.anuke.mindustry.entities.traits; + +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; + +public interface Saveable { + void writeSave(DataOutput stream) throws IOException; + void readSave(DataInput stream) throws IOException; +} diff --git a/core/src/io/anuke/mindustry/type/Mech.java b/core/src/io/anuke/mindustry/type/Mech.java index a8eaf34b01..4d54b931bb 100644 --- a/core/src/io/anuke/mindustry/type/Mech.java +++ b/core/src/io/anuke/mindustry/type/Mech.java @@ -11,6 +11,7 @@ public class Mech extends Upgrade { public float mass = 1f; public int drillPower = -1; public float carryWeight = 1f; + public float armor = 1f; public Weapon weapon = Weapons.blaster; public TextureRegion baseRegion, legRegion, region; diff --git a/core/src/io/anuke/mindustry/type/StatusEffect.java b/core/src/io/anuke/mindustry/type/StatusEffect.java index 29bf99066f..6c36a655b4 100644 --- a/core/src/io/anuke/mindustry/type/StatusEffect.java +++ b/core/src/io/anuke/mindustry/type/StatusEffect.java @@ -2,7 +2,7 @@ package io.anuke.mindustry.type; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.ObjectSet; -import io.anuke.mindustry.entities.StatusController.TransitionResult; +import io.anuke.mindustry.entities.StatusController.StatusEntry; import io.anuke.mindustry.entities.Unit; import io.anuke.mindustry.game.Content; @@ -14,6 +14,10 @@ public class StatusEffect implements Content{ public final float baseDuration; public final int id; + public float damageMultiplier; //damage dealt + public float armorMultiplier; //armor points + public float speedMultiplier; //speed + /**Set of 'opposite' effects, which will decrease the duration of this effect when applied.*/ protected ObjectSet opposites = new ObjectSet<>(); /**The strength of time decrease when met with an opposite effect, as a fraction of the other's duration.*/ @@ -33,7 +37,7 @@ public class StatusEffect implements Content{ * @param to The state to transition to * @param time The current status effect time * @param newTime The time that the new status effect will last*/ - public TransitionResult getTransition(Unit unit, StatusEffect to, float time, float newTime, TransitionResult result){ + public StatusEntry getTransition(Unit unit, StatusEffect to, float time, float newTime, StatusEntry result){ if(opposites.contains(to)){ time -= newTime*oppositeScale; if(time > 0) { @@ -47,6 +51,10 @@ public class StatusEffect implements Content{ /**Called when this effect transitions to a new status effect.*/ public void onTransition(Unit unit, StatusEffect to){} + public boolean isOpposite(StatusEffect other){ + return opposites.size > 0 && opposites.contains(other); + } + public void setOpposites(StatusEffect... effects){ for(StatusEffect e : effects){ opposites.add(e); diff --git a/core/src/io/anuke/mindustry/world/BaseBlock.java b/core/src/io/anuke/mindustry/world/BaseBlock.java index 3135812c79..caefb27f90 100644 --- a/core/src/io/anuke/mindustry/world/BaseBlock.java +++ b/core/src/io/anuke/mindustry/world/BaseBlock.java @@ -59,6 +59,10 @@ public abstract class BaseBlock { && (tile.entity.liquids.liquid == liquid || tile.entity.liquids.amount <= 0.1f); } + public float handleAuxLiquid(Tile tile, Tile source, Liquid liquid, float amount){ + return 0f; + } + public void handleLiquid(Tile tile, Tile source, Liquid liquid, float amount){ tile.entity.liquids.liquid = liquid; tile.entity.liquids.amount += amount; @@ -118,31 +122,36 @@ public abstract class BaseBlock { next = next.target(); if(next.block().hasLiquids && tile.entity.liquids.amount > 0f){ - float ofract = next.entity.liquids.amount / next.block().liquidCapacity; - float fract = tile.entity.liquids.amount / liquidCapacity; - float flow = Math.min(Mathf.clamp((fract - ofract)*(1f)) * (liquidCapacity), tile.entity.liquids.amount); - flow = Math.min(flow, next.block().liquidCapacity - next.entity.liquids.amount - 0.001f); + if(next.entity.liquids.liquid == tile.entity.liquids.liquid) { + float ofract = next.entity.liquids.amount / next.block().liquidCapacity; + float fract = tile.entity.liquids.amount / liquidCapacity; + float flow = Math.min(Mathf.clamp((fract - ofract) * (1f)) * (liquidCapacity), tile.entity.liquids.amount); + flow = Math.min(flow, next.block().liquidCapacity - next.entity.liquids.amount - 0.001f); - if(flow > 0f && ofract <= fract && next.block().acceptLiquid(next, tile, tile.entity.liquids.liquid, flow)){ - next.block().handleLiquid(next, tile, tile.entity.liquids.liquid, flow); - tile.entity.liquids.amount -= flow; - return flow; - }else if(ofract > 0.1f && fract > 0.1f){ - Liquid liquid = tile.entity.liquids.liquid, other = next.entity.liquids.liquid; - if((other.flammability > 0.3f && liquid.temperature > 0.7f) || - (liquid.flammability > 0.3f && other.temperature > 0.7f)){ - tile.entity.damage(1 * Timers.delta()); - next.entity.damage(1 * Timers.delta()); - if(Mathf.chance(0.1 * Timers.delta())){ - Effects.effect(EnvironmentFx.fire, (tile.worldx() + next.worldx())/2f, (tile.worldy() + next.worldy())/2f); - } - }else if((liquid.temperature > 0.7f && other.temperature < 0.55f) || - (other.temperature > 0.7f && liquid.temperature < 0.55f)){ - tile.entity.liquids.amount -= Math.min(tile.entity.liquids.amount, 0.7f * Timers.delta()); - if(Mathf.chance(0.2f * Timers.delta())){ - Effects.effect(EnvironmentFx.steam, (tile.worldx() + next.worldx())/2f, (tile.worldy() + next.worldy())/2f); + if (flow > 0f && ofract <= fract && next.block().acceptLiquid(next, tile, tile.entity.liquids.liquid, flow)) { + next.block().handleLiquid(next, tile, tile.entity.liquids.liquid, flow); + tile.entity.liquids.amount -= flow; + return flow; + } else if (ofract > 0.1f && fract > 0.1f) { + Liquid liquid = tile.entity.liquids.liquid, other = next.entity.liquids.liquid; + if ((other.flammability > 0.3f && liquid.temperature > 0.7f) || + (liquid.flammability > 0.3f && other.temperature > 0.7f)) { + tile.entity.damage(1 * Timers.delta()); + next.entity.damage(1 * Timers.delta()); + if (Mathf.chance(0.1 * Timers.delta())) { + Effects.effect(EnvironmentFx.fire, (tile.worldx() + next.worldx()) / 2f, (tile.worldy() + next.worldy()) / 2f); + } + } else if ((liquid.temperature > 0.7f && other.temperature < 0.55f) || + (other.temperature > 0.7f && liquid.temperature < 0.55f)) { + tile.entity.liquids.amount -= Math.min(tile.entity.liquids.amount, 0.7f * Timers.delta()); + if (Mathf.chance(0.2f * Timers.delta())) { + Effects.effect(EnvironmentFx.steam, (tile.worldx() + next.worldx()) / 2f, (tile.worldy() + next.worldy()) / 2f); + } } } + }else{ + float accepted = next.block().handleAuxLiquid(next, tile, tile.entity.liquids.liquid, tile.entity.liquids.amount); + tile.entity.liquids.amount -= accepted; } }else if(leak && !next.block().solid && !next.block().hasLiquids){ float leakAmount = Math.min(tile.entity.liquids.amount, tile.entity.liquids.amount/1.5f); diff --git a/core/src/io/anuke/mindustry/world/blocks/power/BurnerGenerator.java b/core/src/io/anuke/mindustry/world/blocks/power/BurnerGenerator.java index 59a4095244..cee1109845 100644 --- a/core/src/io/anuke/mindustry/world/blocks/power/BurnerGenerator.java +++ b/core/src/io/anuke/mindustry/world/blocks/power/BurnerGenerator.java @@ -1,120 +1,21 @@ package io.anuke.mindustry.world.blocks.power; -import com.badlogic.gdx.graphics.Color; -import io.anuke.mindustry.content.fx.BlockFx; -import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.type.Item; -import io.anuke.mindustry.world.BarType; -import io.anuke.mindustry.world.Tile; -import io.anuke.mindustry.world.meta.BlockBar; -import io.anuke.ucore.core.Effects; -import io.anuke.ucore.core.Effects.Effect; -import io.anuke.ucore.core.Timers; -import io.anuke.ucore.graphics.Draw; -import io.anuke.ucore.util.Mathf; +import io.anuke.mindustry.type.Liquid; -import java.io.DataInputStream; -import java.io.DataOutputStream; -import java.io.IOException; +public class BurnerGenerator extends ItemLiquidGenerator { -public class BurnerGenerator extends PowerGenerator { - protected float minEfficiency = 0.2f; - protected float powerOutput; - protected float itemDuration = 70f; - protected Effect generateEffect = BlockFx.generatespark; - protected Color heatColor = Color.valueOf("ff9b59"); + public BurnerGenerator(String name) { + super(name); + } - public BurnerGenerator(String name) { - super(name); - itemCapacity = 20; - hasItems = true; - } - - @Override - public void setBars(){ - super.setBars(); - bars.replace(new BlockBar(BarType.inventory, true, tile -> (float)tile.entity.items.totalItems() / itemCapacity)); - } - - @Override - public void setStats(){ - super.setStats(); - //TODO both of these depend on the item type, implement later - //stats.add("powergenerationsecond", Strings.toFixed(powerOutput*60f, 2)); - //stats.add("generationsecondsitem", Strings.toFixed(itemDuration/60f, 2)); - } - - @Override - public void draw(Tile tile){ - super.draw(tile); - - GeneratorEntity entity = tile.entity(); - - if(entity.generateTime > 0){ - Draw.color(heatColor); - float alpha = (entity.items.totalItems() > 0 ? 1f : Mathf.clamp(entity.generateTime)); - alpha = alpha * 0.7f + Mathf.absin(Timers.time(), 12f, 0.3f) * alpha; - Draw.alpha(alpha); - Draw.rect(name + "-top", tile.worldx(), tile.worldy()); - Draw.reset(); - } - } - - @Override - public boolean acceptItem(Item item, Tile tile, Tile source){ - return getItemEfficiency(item) >= minEfficiency && tile.entity.items.totalItems() < itemCapacity; - } - - @Override - public void update(Tile tile){ - BurnerEntity entity = tile.entity(); - - float maxPower = Math.min(powerCapacity - entity.power.amount, powerOutput * Timers.delta()) * entity.efficiency; - float mfract = maxPower/(powerOutput); - - if(entity.generateTime > 0f){ - entity.generateTime -= 1f/itemDuration*mfract; - entity.power.amount += maxPower; - entity.generateTime = Mathf.clamp(entity.generateTime); - } - - if(entity.generateTime <= 0f && entity.items.totalItems() > 0){ - Effects.effect(generateEffect, tile.worldx() + Mathf.range(3f), tile.worldy() + Mathf.range(3f)); - for(int i = 0; i < entity.items.items.length; i ++){ - if(entity.items.items[i] > 0){ - entity.items.items[i] --; - entity.efficiency = getItemEfficiency(Item.getByID(i)); - break; - } - } - entity.generateTime = 1f; - } - - distributePower(tile); - - } - - protected float getItemEfficiency(Item item){ - return item.flammability; - } - - @Override - public TileEntity getEntity() { - return new BurnerEntity(); - } - - public static class BurnerEntity extends GeneratorEntity{ - public float efficiency; - - @Override - public void write(DataOutputStream stream) throws IOException { - stream.writeFloat(efficiency); - } - - @Override - public void read(DataInputStream stream) throws IOException { - efficiency = stream.readFloat(); - } - } + @Override + protected float getLiquidEfficiency(Liquid liquid) { + return liquid.flammability; + } + @Override + protected float getItemEfficiency(Item item) { + return item.flammability; + } } diff --git a/core/src/io/anuke/mindustry/world/blocks/power/DecayGenerator.java b/core/src/io/anuke/mindustry/world/blocks/power/DecayGenerator.java index 84600c225e..f1481bfe23 100644 --- a/core/src/io/anuke/mindustry/world/blocks/power/DecayGenerator.java +++ b/core/src/io/anuke/mindustry/world/blocks/power/DecayGenerator.java @@ -2,11 +2,12 @@ package io.anuke.mindustry.world.blocks.power; import io.anuke.mindustry.type.Item; -public class DecayGenerator extends BurnerGenerator { +public class DecayGenerator extends ItemGenerator { public DecayGenerator(String name) { super(name); hasItems = true; + hasLiquids = false; } @Override diff --git a/core/src/io/anuke/mindustry/world/blocks/power/ItemGenerator.java b/core/src/io/anuke/mindustry/world/blocks/power/ItemGenerator.java new file mode 100644 index 0000000000..40ce8429ab --- /dev/null +++ b/core/src/io/anuke/mindustry/world/blocks/power/ItemGenerator.java @@ -0,0 +1,110 @@ +package io.anuke.mindustry.world.blocks.power; + +import com.badlogic.gdx.graphics.Color; +import io.anuke.mindustry.content.fx.BlockFx; +import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.type.Item; +import io.anuke.mindustry.world.BarType; +import io.anuke.mindustry.world.Tile; +import io.anuke.mindustry.world.meta.BlockBar; +import io.anuke.ucore.core.Effects; +import io.anuke.ucore.core.Effects.Effect; +import io.anuke.ucore.core.Timers; +import io.anuke.ucore.graphics.Draw; +import io.anuke.ucore.util.Mathf; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public abstract class ItemGenerator extends PowerGenerator { + protected float minItemEfficiency = 0.2f; + protected float powerOutput; + protected float itemDuration = 70f; + protected Effect generateEffect = BlockFx.generatespark; + protected Color heatColor = Color.valueOf("ff9b59"); + + public ItemGenerator(String name) { + super(name); + itemCapacity = 20; + hasItems = true; + } + + @Override + public void setBars(){ + super.setBars(); + bars.replace(new BlockBar(BarType.inventory, true, tile -> (float)tile.entity.items.totalItems() / itemCapacity)); + } + + @Override + public void draw(Tile tile){ + super.draw(tile); + + GeneratorEntity entity = tile.entity(); + + if(entity.generateTime > 0){ + Draw.color(heatColor); + float alpha = (entity.items.totalItems() > 0 ? 1f : Mathf.clamp(entity.generateTime)); + alpha = alpha * 0.7f + Mathf.absin(Timers.time(), 12f, 0.3f) * alpha; + Draw.alpha(alpha); + Draw.rect(name + "-top", tile.worldx(), tile.worldy()); + Draw.reset(); + } + } + + @Override + public boolean acceptItem(Item item, Tile tile, Tile source){ + return getItemEfficiency(item) >= minItemEfficiency && tile.entity.items.totalItems() < itemCapacity; + } + + @Override + public void update(Tile tile){ + ItemGeneratorEntity entity = tile.entity(); + + float maxPower = Math.min(powerCapacity - entity.power.amount, powerOutput * Timers.delta()) * entity.efficiency; + float mfract = maxPower/(powerOutput); + + if(entity.generateTime > 0f){ + entity.generateTime -= 1f/itemDuration*mfract; + entity.power.amount += maxPower; + entity.generateTime = Mathf.clamp(entity.generateTime); + } + + if(entity.generateTime <= 0f && entity.items.totalItems() > 0){ + Effects.effect(generateEffect, tile.worldx() + Mathf.range(3f), tile.worldy() + Mathf.range(3f)); + for(int i = 0; i < entity.items.items.length; i ++){ + if(entity.items.items[i] > 0){ + entity.items.items[i] --; + entity.efficiency = getItemEfficiency(Item.getByID(i)); + break; + } + } + entity.generateTime = 1f; + } + + distributePower(tile); + + } + + protected abstract float getItemEfficiency(Item item); + + @Override + public TileEntity getEntity() { + return new ItemGeneratorEntity(); + } + + public static class ItemGeneratorEntity extends GeneratorEntity{ + public float efficiency; + + @Override + public void write(DataOutputStream stream) throws IOException { + stream.writeFloat(efficiency); + } + + @Override + public void read(DataInputStream stream) throws IOException { + efficiency = stream.readFloat(); + } + } + +} diff --git a/core/src/io/anuke/mindustry/world/blocks/power/ItemLiquidGenerator.java b/core/src/io/anuke/mindustry/world/blocks/power/ItemLiquidGenerator.java new file mode 100644 index 0000000000..36b5d5bdca --- /dev/null +++ b/core/src/io/anuke/mindustry/world/blocks/power/ItemLiquidGenerator.java @@ -0,0 +1,89 @@ +package io.anuke.mindustry.world.blocks.power; + +import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.type.Item; +import io.anuke.mindustry.type.Liquid; +import io.anuke.mindustry.world.Tile; +import io.anuke.ucore.core.Effects; +import io.anuke.ucore.core.Timers; +import io.anuke.ucore.graphics.Draw; +import io.anuke.ucore.util.Mathf; + +public abstract class ItemLiquidGenerator extends ItemGenerator { + protected float minLiquidEfficiency = 0.2f; + protected float powerPerLiquid = 0.13f; + /**Maximum liquid used per frame.*/ + protected float maxLiquidGenerate = 0.4f; + + public ItemLiquidGenerator(String name) { + super(name); + hasLiquids = true; + liquidCapacity = 10f; + } + + @Override + public void update(Tile tile){ + ItemGeneratorEntity entity = tile.entity(); + + //liquid takes priority over solids + if(entity.liquids.amount >= 0.001f){ + float powerPerLiquid = getLiquidEfficiency(entity.liquids.liquid)*this.powerPerLiquid; + float used = Math.min(entity.liquids.amount, maxLiquidGenerate * Timers.delta()); + used = Math.min(used, (powerCapacity - entity.power.amount)/powerPerLiquid); + + entity.liquids.amount -= used; + entity.power.amount += used * powerPerLiquid; + + if(used > 0.001f && Mathf.chance(0.05 * Timers.delta())){ + Effects.effect(generateEffect, tile.drawx() + Mathf.range(3f), tile.drawy() + Mathf.range(3f)); + } + }else { + + float maxPower = Math.min(powerCapacity - entity.power.amount, powerOutput * Timers.delta()) * entity.efficiency; + float mfract = maxPower / (powerOutput); + + if (entity.generateTime > 0f) { + entity.generateTime -= 1f / itemDuration * mfract; + entity.power.amount += maxPower; + entity.generateTime = Mathf.clamp(entity.generateTime); + } + + if (entity.generateTime <= 0f && entity.items.totalItems() > 0) { + Effects.effect(generateEffect, tile.worldx() + Mathf.range(3f), tile.worldy() + Mathf.range(3f)); + for (int i = 0; i < entity.items.items.length; i++) { + if (entity.items.items[i] > 0) { + entity.items.items[i]--; + entity.efficiency = getItemEfficiency(Item.getByID(i)); + break; + } + } + entity.generateTime = 1f; + } + } + + distributePower(tile); + } + + @Override + public void draw(Tile tile){ + super.draw(tile); + + TileEntity entity = tile.entity(); + + Draw.color(entity.liquids.liquid.color); + Draw.alpha(entity.liquids.amount / liquidCapacity); + drawLiquidCenter(tile); + Draw.color(); + } + + public void drawLiquidCenter(Tile tile){ + Draw.rect("blank", tile.drawx(), tile.drawy(), 2, 2); + } + + @Override + public boolean acceptLiquid(Tile tile, Tile source, Liquid liquid, float amount){ + return getLiquidEfficiency(liquid) >= minLiquidEfficiency && super.acceptLiquid(tile, source, liquid, amount); + } + + protected abstract float getLiquidEfficiency(Liquid liquid); +} diff --git a/core/src/io/anuke/mindustry/world/blocks/power/LiquidBurnerGenerator.java b/core/src/io/anuke/mindustry/world/blocks/power/LiquidGenerator.java similarity index 77% rename from core/src/io/anuke/mindustry/world/blocks/power/LiquidBurnerGenerator.java rename to core/src/io/anuke/mindustry/world/blocks/power/LiquidGenerator.java index 5a9edf6fba..06e01a2708 100644 --- a/core/src/io/anuke/mindustry/world/blocks/power/LiquidBurnerGenerator.java +++ b/core/src/io/anuke/mindustry/world/blocks/power/LiquidGenerator.java @@ -4,34 +4,26 @@ import io.anuke.mindustry.content.fx.BlockFx; import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.world.Tile; -import io.anuke.mindustry.world.blocks.power.BurnerGenerator.BurnerEntity; +import io.anuke.mindustry.world.blocks.power.ItemGenerator.ItemGeneratorEntity; import io.anuke.ucore.core.Effects; import io.anuke.ucore.core.Effects.Effect; import io.anuke.ucore.core.Timers; import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.util.Mathf; -//TODO remove this class -public class LiquidBurnerGenerator extends PowerGenerator { +public abstract class LiquidGenerator extends PowerGenerator { protected float minEfficiency = 0.2f; protected float powerPerLiquid = 0.13f; /**Maximum liquid used per frame.*/ protected float maxLiquidGenerate = 0.4f; protected Effect generateEffect = BlockFx.generatespark; - public LiquidBurnerGenerator(String name) { + public LiquidGenerator(String name) { super(name); liquidCapacity = 30f; hasLiquids = true; } - @Override - public void setStats(){ - super.setStats(); - //stats.add("powerliquid", Strings.toFixed(powerPerLiquid, 2) + " power/liquid"); - //stats.add("maxliquidsecond", Strings.toFixed(maxLiquidGenerate*60f, 2) + " liquid/s"); - } - @Override public void draw(Tile tile){ super.draw(tile); @@ -75,10 +67,11 @@ public class LiquidBurnerGenerator extends PowerGenerator { @Override public TileEntity getEntity() { - return new BurnerEntity(); + return new ItemGeneratorEntity(); } - protected float getEfficiency(Liquid liquid){ - return liquid.flammability; - } + /**Returns an efficiency value for the specified liquid. + * Greater efficiency means more power generation. + * If a liquid's efficiency is below {@link #minEfficiency}, it is not accepted.*/ + protected abstract float getEfficiency(Liquid liquid); } diff --git a/core/src/io/anuke/mindustry/world/blocks/power/LiquidHeatGenerator.java b/core/src/io/anuke/mindustry/world/blocks/power/LiquidHeatGenerator.java index 081bf37cb7..d591bea4f9 100644 --- a/core/src/io/anuke/mindustry/world/blocks/power/LiquidHeatGenerator.java +++ b/core/src/io/anuke/mindustry/world/blocks/power/LiquidHeatGenerator.java @@ -2,7 +2,7 @@ package io.anuke.mindustry.world.blocks.power; import io.anuke.mindustry.type.Liquid; -public class LiquidHeatGenerator extends LiquidBurnerGenerator { +public class LiquidHeatGenerator extends LiquidGenerator { public LiquidHeatGenerator(String name) { super(name); @@ -10,6 +10,6 @@ public class LiquidHeatGenerator extends LiquidBurnerGenerator { @Override protected float getEfficiency(Liquid liquid){ - return liquid.flammability; + return liquid.temperature-0.5f; } } diff --git a/core/src/io/anuke/mindustry/world/blocks/power/NuclearReactor.java b/core/src/io/anuke/mindustry/world/blocks/power/NuclearReactor.java index c8d50db014..9de000b63e 100644 --- a/core/src/io/anuke/mindustry/world/blocks/power/NuclearReactor.java +++ b/core/src/io/anuke/mindustry/world/blocks/power/NuclearReactor.java @@ -24,7 +24,7 @@ import java.io.IOException; import static io.anuke.mindustry.Vars.tilesize; -public class NuclearReactor extends LiquidBurnerGenerator { +public class NuclearReactor extends PowerGenerator { protected final int timerFuel = timers++; protected final Translator tr = new Translator(); @@ -112,11 +112,6 @@ public class NuclearReactor extends LiquidBurnerGenerator { } } - @Override - public void drawLiquidCenter(Tile tile){ - Draw.rect(name + "-center", tile.drawx(), tile.drawy()); - } - @Override public void onDestroyed(Tile tile){ super.onDestroyed(tile); diff --git a/core/src/io/anuke/mindustry/world/blocks/power/TurbineGenerator.java b/core/src/io/anuke/mindustry/world/blocks/power/TurbineGenerator.java new file mode 100644 index 0000000000..1e99b88883 --- /dev/null +++ b/core/src/io/anuke/mindustry/world/blocks/power/TurbineGenerator.java @@ -0,0 +1,49 @@ +package io.anuke.mindustry.world.blocks.power; + +import io.anuke.mindustry.content.Liquids; +import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.type.Liquid; +import io.anuke.mindustry.world.Tile; +import io.anuke.ucore.core.Timers; + +public class TurbineGenerator extends BurnerGenerator { + protected float auxLiquidUse = 0.1f; + protected Liquid auxLiquid = Liquids.water; + protected float auxLiquidCapacity = 10; + + public TurbineGenerator(String name) { + super(name); + } + + @Override + public void update(Tile tile) { + TurbineEntity entity = tile.entity(); + float used = Math.min(auxLiquidUse * Timers.delta(), auxLiquidCapacity); + + if(entity.aux >= used){ + super.update(tile); + entity.aux -= used; + } + } + + @Override + public float handleAuxLiquid(Tile tile, Tile source, Liquid liquid, float amount) { + TurbineEntity entity = tile.entity(); + if(liquid == auxLiquid){ + float accepted = Math.min(auxLiquidCapacity - entity.aux, amount); + entity.aux += accepted; + return accepted; + }else { + return 0; + } + } + + @Override + public TileEntity getEntity() { + return new TurbineEntity(); + } + + public class TurbineEntity extends ItemGeneratorEntity{ + public float aux; + } +} diff --git a/core/src/io/anuke/mindustry/world/blocks/production/LiquidMixer.java b/core/src/io/anuke/mindustry/world/blocks/production/LiquidMixer.java index 3c40b1b6d8..c2327f3181 100644 --- a/core/src/io/anuke/mindustry/world/blocks/production/LiquidMixer.java +++ b/core/src/io/anuke/mindustry/world/blocks/production/LiquidMixer.java @@ -33,27 +33,30 @@ public class LiquidMixer extends LiquidBlock{ if(tile.entity.power.amount > used) tile.entity.power.amount -= used; } - @Override - public void handleLiquid(Tile tile, Tile source, Liquid liquid, float amount) { - LiquidMixerEntity entity = tile.entity(); - entity.accumulator += amount; - int items = (int)(entity.accumulator / liquidPerItem); - entity.items.removeItem(inputItem, items); - entity.accumulator %= liquidPerItem; - entity.liquids.liquid = outputLiquid; - entity.liquids.amount += amount; - } - @Override public boolean acceptItem(Item item, Tile tile, Tile source) { return item == inputItem && tile.entity.items.getItem(item) < itemCapacity; } @Override - public boolean acceptLiquid(Tile tile, Tile source, Liquid liquid, float amount) { - return liquid == inputLiquid && tile.entity.liquids.amount + amount <= liquidCapacity && - tile.entity.items.hasItem(inputItem, (int)((tile.entity().accumulator + amount)/amount)) && - tile.entity.power.amount >= powerUse; + public float handleAuxLiquid(Tile tile, Tile source, Liquid liquid, float amount) { + LiquidMixerEntity entity = tile.entity(); + + if(liquid == inputLiquid && tile.entity.items.hasItem(inputItem, (int)((entity.accumulator + amount)/amount)) && + tile.entity.power.amount >= powerUse){ + + amount = Math.min(liquidCapacity - tile.entity.liquids.amount, amount); + + entity.accumulator += amount; + int items = (int)(entity.accumulator / liquidPerItem); + entity.items.removeItem(inputItem, items); + entity.accumulator %= liquidPerItem; + entity.liquids.liquid = outputLiquid; + entity.liquids.amount += amount; + return amount; + }else{ + return 0; + } } @Override diff --git a/core/src/io/anuke/mindustry/world/blocks/units/OverdriveProjector.java b/core/src/io/anuke/mindustry/world/blocks/units/OverdriveProjector.java index 00cd0d2397..7acecd1414 100644 --- a/core/src/io/anuke/mindustry/world/blocks/units/OverdriveProjector.java +++ b/core/src/io/anuke/mindustry/world/blocks/units/OverdriveProjector.java @@ -1,8 +1,12 @@ package io.anuke.mindustry.world.blocks.units; +import io.anuke.mindustry.content.StatusEffects; + public class OverdriveProjector extends Projector { public OverdriveProjector(String name) { super(name); + + status = StatusEffects.overdrive; } } diff --git a/core/src/io/anuke/mindustry/world/blocks/units/Projector.java b/core/src/io/anuke/mindustry/world/blocks/units/Projector.java index f309688d30..5dd6c7c3e5 100644 --- a/core/src/io/anuke/mindustry/world/blocks/units/Projector.java +++ b/core/src/io/anuke/mindustry/world/blocks/units/Projector.java @@ -1,20 +1,25 @@ package io.anuke.mindustry.world.blocks.units; +import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.entities.Units; +import io.anuke.mindustry.graphics.Palette; import io.anuke.mindustry.type.StatusEffect; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; import io.anuke.ucore.core.Timers; +import io.anuke.ucore.graphics.Draw; +import io.anuke.ucore.graphics.Lines; +import io.anuke.ucore.util.Mathf; public abstract class Projector extends Block { protected final int timerApply = timers++; protected final float applyTime = 4f; protected float powerUse = 0.01f; - protected float range = 40f; + protected float range = 80f; protected StatusEffect status; - protected float intensity; + protected float intensity = 1f; public Projector(String name) { super(name); @@ -23,12 +28,39 @@ public abstract class Projector extends Block { solid = true; } + @Override + public void drawSelect(Tile tile){ + Draw.color(Palette.accent); + Lines.dashCircle(tile.drawx(), tile.drawy(), range); + Draw.reset(); + } + @Override public void update(Tile tile) { - if(Timers.get(timerApply, applyTime)) { + ProjectorEntity entity = tile.entity(); + + float used = Math.min(powerCapacity, powerUse * Timers.delta()); + + if(entity.power.amount >= used){ + entity.heat = Mathf.lerpDelta(entity.heat, 1f, 0.01f); + entity.power.amount -= used; + }else{ + entity.heat = Mathf.lerpDelta(entity.heat, 0f, 0.01f); + } + + if(entity.heat > 0.6f && Timers.get(timerApply, applyTime)) { Units.getNearby(tile.getTeam(), tile.drawx(), tile.drawy(), range, unit -> { unit.applyEffect(status, intensity); }); } } + + @Override + public TileEntity getEntity() { + return new ProjectorEntity(); + } + + public class ProjectorEntity extends TileEntity{ + public float heat; + } } diff --git a/core/src/io/anuke/mindustry/world/blocks/units/ShieldProjector.java b/core/src/io/anuke/mindustry/world/blocks/units/ShieldProjector.java index c2c2c6976c..7f171fe193 100644 --- a/core/src/io/anuke/mindustry/world/blocks/units/ShieldProjector.java +++ b/core/src/io/anuke/mindustry/world/blocks/units/ShieldProjector.java @@ -1,11 +1,12 @@ package io.anuke.mindustry.world.blocks.units; -import io.anuke.mindustry.world.Block; +import io.anuke.mindustry.content.StatusEffects; public class ShieldProjector extends Projector { public ShieldProjector(String name) { super(name); - hasPower = true; + + status = StatusEffects.shielded; } }