diff --git a/core/assets-raw/sprites/blocks/production/cultivator.png b/core/assets-raw/sprites/blocks/production/cultivator.png index 586032e180..6167bdbeda 100644 Binary files a/core/assets-raw/sprites/blocks/production/cultivator.png and b/core/assets-raw/sprites/blocks/production/cultivator.png differ diff --git a/core/assets-raw/sprites/blocks/production/largesolarpanel.png b/core/assets-raw/sprites/blocks/production/largesolarpanel.png new file mode 100644 index 0000000000..a0f3d22ba3 Binary files /dev/null and b/core/assets-raw/sprites/blocks/production/largesolarpanel.png differ diff --git a/core/assets-raw/sprites/blocks/production/laserdrill.png b/core/assets-raw/sprites/blocks/production/laserdrill.png index f371e8a6f5..153e62935d 100644 Binary files a/core/assets-raw/sprites/blocks/production/laserdrill.png and b/core/assets-raw/sprites/blocks/production/laserdrill.png differ diff --git a/core/assets-raw/sprites/blocks/production/pump-liquid.png b/core/assets-raw/sprites/blocks/production/pump-liquid.png new file mode 100644 index 0000000000..4ecbc4988c Binary files /dev/null and b/core/assets-raw/sprites/blocks/production/pump-liquid.png differ diff --git a/core/assets-raw/sprites/blocks/production/solarpanel.png b/core/assets-raw/sprites/blocks/production/solarpanel.png index 986ee478cb..5aafde0e04 100644 Binary files a/core/assets-raw/sprites/blocks/production/solarpanel.png and b/core/assets-raw/sprites/blocks/production/solarpanel.png differ diff --git a/core/assets-raw/sprites/blocks/production/waterextractor-liquid.png b/core/assets-raw/sprites/blocks/production/waterextractor-liquid.png new file mode 100644 index 0000000000..3f938a0c61 Binary files /dev/null and b/core/assets-raw/sprites/blocks/production/waterextractor-liquid.png differ diff --git a/core/assets-raw/sprites/blocks/production/waterextractor.png b/core/assets-raw/sprites/blocks/production/waterextractor.png new file mode 100644 index 0000000000..86f80db8d2 Binary files /dev/null and b/core/assets-raw/sprites/blocks/production/waterextractor.png differ diff --git a/core/assets-raw/sprites/blocks/tech/conduittunnel.png b/core/assets-raw/sprites/blocks/tech/conduittunnel.png index dece2786ea..76900c263a 100644 Binary files a/core/assets-raw/sprites/blocks/tech/conduittunnel.png and b/core/assets-raw/sprites/blocks/tech/conduittunnel.png differ diff --git a/core/assets-raw/sprites/blocks/tech/liquidsilo-bottom.png b/core/assets-raw/sprites/blocks/tech/liquidtank-bottom.png similarity index 100% rename from core/assets-raw/sprites/blocks/tech/liquidsilo-bottom.png rename to core/assets-raw/sprites/blocks/tech/liquidtank-bottom.png diff --git a/core/assets-raw/sprites/blocks/tech/liquidsilo-liquid.png b/core/assets-raw/sprites/blocks/tech/liquidtank-liquid.png similarity index 100% rename from core/assets-raw/sprites/blocks/tech/liquidsilo-liquid.png rename to core/assets-raw/sprites/blocks/tech/liquidtank-liquid.png diff --git a/core/assets-raw/sprites/blocks/tech/liquidsilo-top.png b/core/assets-raw/sprites/blocks/tech/liquidtank-top.png similarity index 100% rename from core/assets-raw/sprites/blocks/tech/liquidsilo-top.png rename to core/assets-raw/sprites/blocks/tech/liquidtank-top.png diff --git a/core/assets/sprites/sprites.atlas b/core/assets/sprites/sprites.atlas index a51b96cbe5..b952410b0e 100644 --- a/core/assets/sprites/sprites.atlas +++ b/core/assets/sprites/sprites.atlas @@ -13,539 +13,546 @@ background index: -1 blackrock1 rotate: false - xy: 667, 218 + xy: 221, 50 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackrockshadow1 rotate: false - xy: 677, 218 + xy: 714, 300 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstone1 rotate: false - xy: 689, 228 + xy: 231, 33 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstone2 rotate: false - xy: 687, 218 + xy: 241, 33 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstone3 rotate: false - xy: 699, 230 + xy: 659, 228 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstoneblock1 rotate: false - xy: 709, 230 + xy: 669, 228 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstoneblock2 rotate: false - xy: 719, 230 + xy: 679, 228 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstoneblock3 rotate: false - xy: 185, 28 + xy: 657, 218 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstoneedge rotate: false - xy: 933, 446 + xy: 191, 44 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 coal1 rotate: false - xy: 817, 430 + xy: 564, 107 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 coal2 rotate: false - xy: 827, 430 + xy: 562, 97 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 coal3 rotate: false - xy: 561, 65 + xy: 563, 87 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 deepwater rotate: false - xy: 591, 95 + xy: 765, 351 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt1 rotate: false - xy: 601, 95 + xy: 775, 352 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt2 rotate: false - xy: 571, 90 + xy: 760, 309 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt3 rotate: false - xy: 581, 85 + xy: 760, 299 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirtedge rotate: false - xy: 947, 446 + xy: 965, 437 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 grass1 rotate: false - xy: 847, 431 + xy: 574, 107 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass2 rotate: false - xy: 857, 431 + xy: 572, 97 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass3 rotate: false - xy: 611, 119 + xy: 573, 87 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grassblock1 rotate: false - xy: 611, 109 + xy: 563, 77 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grassblock2 rotate: false - xy: 621, 119 + xy: 573, 77 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grassedge rotate: false - xy: 175, 52 + xy: 979, 437 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 ice1 rotate: false - xy: 611, 99 + xy: 561, 67 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ice2 rotate: false - xy: 621, 109 + xy: 571, 67 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ice3 rotate: false - xy: 631, 119 + xy: 837, 430 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 iceedge rotate: false - xy: 546, 99 + xy: 993, 437 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 icerock1 rotate: false - xy: 611, 89 + xy: 847, 431 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icerock2 rotate: false - xy: 621, 99 + xy: 857, 431 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icerockshadow1 rotate: false - xy: 631, 109 + xy: 193, 34 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rockshadow1 rotate: false - xy: 631, 109 + xy: 193, 34 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icerockshadow2 rotate: false - xy: 621, 89 + xy: 193, 24 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rockshadow2 rotate: false - xy: 621, 89 + xy: 193, 24 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 iron1 rotate: false - xy: 631, 99 + xy: 193, 14 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 iron2 rotate: false - xy: 631, 89 + xy: 203, 32 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 iron3 rotate: false - xy: 641, 119 + xy: 203, 22 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lava rotate: false - xy: 611, 65 + xy: 613, 125 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lavaedge rotate: false - xy: 746, 311 + xy: 564, 117 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 mossblock rotate: false - xy: 651, 69 + xy: 594, 105 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 oil rotate: false - xy: 651, 59 + xy: 604, 105 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 oiledge rotate: false - xy: 171, 10 + xy: 620, 161 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 rock1 rotate: false - xy: 652, 208 + xy: 723, 283 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rock2 rotate: false - xy: 642, 198 + xy: 723, 273 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand1 rotate: false - xy: 672, 208 + xy: 743, 283 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand2 rotate: false - xy: 662, 198 + xy: 723, 253 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand3 rotate: false - xy: 652, 188 + xy: 733, 263 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sandblock1 rotate: false - xy: 682, 208 + xy: 743, 273 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sandblock2 rotate: false - xy: 672, 198 + xy: 723, 243 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sandblock3 rotate: false - xy: 662, 188 + xy: 733, 253 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sandedge rotate: false - xy: 965, 469 + xy: 533, 73 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 shrub rotate: false - xy: 672, 178 + xy: 749, 233 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shrubshadow rotate: false - xy: 682, 178 + xy: 729, 223 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow1 rotate: false - xy: 692, 178 + xy: 367, 61 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow2 rotate: false - xy: 697, 218 + xy: 377, 61 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow3 rotate: false - xy: 707, 220 + xy: 387, 61 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snowblock1 rotate: false - xy: 717, 220 + xy: 397, 61 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snowblock2 rotate: false - xy: 640, 168 + xy: 407, 61 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snowblock3 rotate: false - xy: 650, 168 + xy: 417, 61 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snowedge rotate: false - xy: 993, 469 + xy: 547, 69 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 stone1 rotate: false - xy: 702, 178 + xy: 497, 61 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone2 rotate: false - xy: 700, 168 + xy: 507, 61 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone3 rotate: false - xy: 712, 210 + xy: 517, 61 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stoneblock1 rotate: false - xy: 712, 200 + xy: 355, 51 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stoneblock2 rotate: false - xy: 712, 190 + xy: 365, 51 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stoneblock3 rotate: false - xy: 712, 180 + xy: 375, 51 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stoneedge rotate: false - xy: 979, 455 + xy: 231, 55 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 titanium1 rotate: false - xy: 651, 148 + xy: 425, 51 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium2 rotate: false - xy: 661, 148 + xy: 435, 51 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium3 rotate: false - xy: 671, 158 + xy: 445, 51 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 uranium1 rotate: false - xy: 722, 200 + xy: 537, 63 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 uranium2 rotate: false - xy: 722, 190 + xy: 525, 51 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 uranium3 rotate: false - xy: 722, 180 + xy: 547, 59 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 water rotate: false - xy: 721, 150 + xy: 567, 47 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 wateredge rotate: false - xy: 993, 455 + xy: 245, 55 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 block-middle rotate: false - xy: 617, 129 + xy: 687, 218 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +pump-liquid + rotate: false + xy: 687, 218 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduitliquid rotate: false - xy: 571, 110 + xy: 295, 47 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 cross-1 rotate: false - xy: 581, 95 + xy: 345, 47 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -559,63 +566,63 @@ cross-2 index: -1 enemyspawn rotate: false - xy: 637, 129 + xy: 251, 33 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 playerspawn rotate: false - xy: 782, 332 + xy: 583, 79 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shadow rotate: false - xy: 997, 443 + xy: 753, 349 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 alloysmelter rotate: false - xy: 659, 228 + xy: 714, 310 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 coaldrill rotate: false - xy: 571, 130 + xy: 793, 426 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 coalextractor rotate: false - xy: 581, 125 + xy: 803, 426 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 coalgenerator rotate: false - xy: 591, 125 + xy: 817, 430 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 coalgenerator-top rotate: false - xy: 601, 125 + xy: 827, 430 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 combustiongenerator rotate: false - xy: 571, 120 + xy: 255, 45 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -629,18 +636,25 @@ cultivator index: -1 fluxpump rotate: false - xy: 837, 430 + xy: 719, 230 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 irondrill rotate: false - xy: 641, 109 + xy: 203, 12 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 +largesolarpanel + rotate: false + xy: 390, 105 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 laserdrill rotate: false xy: 431, 87 @@ -650,63 +664,63 @@ laserdrill index: -1 lavasmelter rotate: false - xy: 621, 69 + xy: 623, 131 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 nuclearreactor rotate: false - xy: 468, 105 + xy: 494, 105 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 nuclearreactor-center rotate: false - xy: 494, 105 + xy: 537, 131 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 nuclearreactor-lights rotate: false - xy: 537, 131 + xy: 520, 105 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 oilrefinery rotate: false - xy: 782, 352 + xy: 584, 99 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 omnidrill rotate: false - xy: 782, 342 + xy: 583, 89 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 powerbooster rotate: false - xy: 727, 294 + xy: 594, 95 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulverizer rotate: false - xy: 632, 183 + xy: 734, 293 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pump rotate: false - xy: 642, 208 + xy: 744, 293 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -720,98 +734,112 @@ quartzextractor index: -1 rtgenerator rotate: false - xy: 652, 198 + xy: 723, 263 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rtgenerator-top rotate: false - xy: 642, 188 + xy: 733, 273 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 siliconextractor rotate: false - xy: 692, 208 + xy: 739, 223 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 smelter rotate: false - xy: 692, 198 + xy: 749, 223 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 smelter-middle rotate: false - xy: 692, 188 + xy: 357, 61 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 solarpanel rotate: false - xy: 660, 168 + xy: 427, 61 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stonedrill rotate: false - xy: 641, 158 + xy: 385, 51 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stoneformer rotate: false - xy: 651, 158 + xy: 395, 51 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 thermalgenerator rotate: false - xy: 641, 148 + xy: 415, 51 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titaniumdrill rotate: false - xy: 671, 148 + xy: 455, 51 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titaniumextractor rotate: false - xy: 681, 158 + xy: 465, 51 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 uraniumdrill rotate: false - xy: 710, 168 + xy: 537, 53 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 uraniumextractor rotate: false - xy: 711, 158 + xy: 547, 49 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 +waterextractor + rotate: false + xy: 303, 69 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 +waterextractor-liquid + rotate: false + xy: 321, 69 + size: 16, 16 + orig: 16, 16 + offset: 0, 0 + index: -1 battery rotate: false - xy: 669, 228 + xy: 539, 87 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -832,42 +860,42 @@ batterylarge-base index: -1 conduit-bottom rotate: false - xy: 591, 115 + xy: 275, 47 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top rotate: false - xy: 601, 115 + xy: 285, 47 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduittunnel rotate: false - xy: 581, 105 + xy: 305, 47 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor rotate: false - xy: 591, 105 + xy: 315, 47 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyormove rotate: false - xy: 601, 105 + xy: 325, 47 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyortunnel rotate: false - xy: 571, 100 + xy: 335, 47 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -881,74 +909,74 @@ core index: -1 junction rotate: false - xy: 635, 79 + xy: 593, 125 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 laser-base rotate: false - xy: 645, 79 + xy: 603, 125 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquidjunction rotate: false - xy: 631, 69 + xy: 623, 121 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquidrouter rotate: false - xy: 641, 69 + xy: 633, 131 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquidrouter-bottom rotate: false - xy: 621, 59 + xy: 633, 121 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquidrouter-liquid rotate: false - xy: 631, 59 + xy: 594, 115 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquidrouter-top rotate: false - xy: 641, 59 + xy: 604, 115 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -liquidsilo-bottom - rotate: false - xy: 390, 105 - size: 24, 24 - orig: 24, 24 - offset: 0, 0 - index: -1 -liquidsilo-liquid +liquidtank-bottom rotate: false xy: 416, 105 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 -liquidsilo-top +liquidtank-liquid rotate: false xy: 442, 105 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 +liquidtank-top + rotate: false + xy: 468, 105 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 multiplexer rotate: false xy: 503, 87 @@ -958,77 +986,77 @@ multiplexer index: -1 poweredconveyor rotate: false - xy: 727, 284 + xy: 604, 95 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 poweredconveyormove rotate: false - xy: 727, 274 + xy: 593, 85 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 powerinfinite rotate: false - xy: 727, 264 + xy: 603, 85 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 powerlaser rotate: false - xy: 727, 254 + xy: 593, 75 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 powerlasercorner rotate: false - xy: 727, 244 + xy: 603, 75 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 powerlaserrouter rotate: false - xy: 729, 234 + xy: 583, 69 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 powervoid rotate: false - xy: 729, 224 + xy: 593, 65 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulseconduit-bottom rotate: false - xy: 632, 203 + xy: 603, 65 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulseconduit-top rotate: false - xy: 632, 193 + xy: 724, 293 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 router rotate: false - xy: 662, 208 + xy: 733, 283 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shieldgenerator rotate: false - xy: 672, 188 + xy: 733, 243 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1042,84 +1070,84 @@ shieldprojector index: -1 sortedunloader rotate: false - xy: 670, 168 + xy: 437, 61 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sorter rotate: false - xy: 680, 168 + xy: 447, 61 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 splitter rotate: false - xy: 690, 168 + xy: 457, 61 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 steelconveyor rotate: false - xy: 702, 208 + xy: 467, 61 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 steelconveyormove rotate: false - xy: 702, 198 + xy: 477, 61 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 teleporter rotate: false - xy: 520, 105 + xy: 589, 219 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 teleporter-top rotate: false - xy: 589, 219 + xy: 615, 223 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 unloader rotate: false - xy: 722, 210 + xy: 527, 61 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 vault rotate: false - xy: 727, 357 + xy: 724, 331 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 vault-icon rotate: false - xy: 711, 148 + xy: 557, 57 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weaponfactory rotate: false - xy: 267, 69 + xy: 339, 69 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 block-1 rotate: false - xy: 551, 65 + xy: 689, 228 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1147,14 +1175,14 @@ chainturret index: -1 chainturret-icon rotate: false - xy: 1007, 457 + xy: 1013, 471 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 doubleturret rotate: false - xy: 592, 159 + xy: 1013, 447 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1168,7 +1196,7 @@ flakturret index: -1 flameturret rotate: false - xy: 604, 159 + xy: 580, 159 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1182,14 +1210,14 @@ fornaxcannon index: -1 gatlingturret rotate: false - xy: 616, 163 + xy: 259, 57 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 laserturret rotate: false - xy: 746, 299 + xy: 711, 264 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1217,70 +1245,70 @@ missileturret index: -1 plasmaturret rotate: false - xy: 961, 443 + xy: 711, 252 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 railgunturret rotate: false - xy: 973, 443 + xy: 711, 240 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 repairturret rotate: false - xy: 985, 443 + xy: 748, 303 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 shotgunturret rotate: false - xy: 1009, 445 + xy: 750, 331 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 teslaturret rotate: false - xy: 628, 163 + xy: 756, 319 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 titancannon rotate: false - xy: 615, 223 + xy: 727, 357 size: 24, 24 orig: 24, 24 offset: 0, 0 index: -1 titancannon-icon rotate: false - xy: 629, 151 + xy: 578, 119 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 turret rotate: false - xy: 629, 139 + xy: 615, 145 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 compositewall rotate: false - xy: 581, 115 + xy: 265, 47 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 door rotate: false - xy: 591, 85 + xy: 183, 28 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1301,14 +1329,14 @@ door-large-open index: -1 door-open rotate: false - xy: 601, 85 + xy: 183, 18 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 duriumwall rotate: false - xy: 565, 75 + xy: 183, 8 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1322,49 +1350,49 @@ duriumwall-large index: -1 ironwall rotate: false - xy: 641, 99 + xy: 193, 4 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 steelwall rotate: false - xy: 702, 188 + xy: 487, 61 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 steelwall-large rotate: false - xy: 724, 339 + xy: 213, 70 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 stonewall rotate: false - xy: 661, 158 + xy: 405, 51 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titaniumshieldwall rotate: false - xy: 681, 148 + xy: 475, 51 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titaniumwall rotate: false - xy: 691, 158 + xy: 485, 51 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titaniumwall-large rotate: false - xy: 249, 69 + xy: 285, 69 size: 16, 16 orig: 16, 16 offset: 0, 0 @@ -1378,28 +1406,28 @@ blank index: -1 bullet rotate: false - xy: 627, 129 + xy: 699, 230 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 chainbullet rotate: false - xy: 171, 1 + xy: 563, 131 size: 8, 7 orig: 8, 7 offset: 0, 0 index: -1 enemyarrow rotate: false - xy: 181, 1 + xy: 573, 131 size: 8, 7 orig: 8, 7 offset: 0, 0 index: -1 laser rotate: false - xy: 560, 99 + xy: 750, 343 size: 1, 12 orig: 1, 12 offset: 0, 0 @@ -1420,112 +1448,112 @@ laserfull index: -1 shell rotate: false - xy: 682, 198 + xy: 743, 263 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shot rotate: false - xy: 652, 178 + xy: 729, 233 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shot-long rotate: false - xy: 662, 178 + xy: 739, 233 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanshell rotate: false - xy: 691, 148 + xy: 495, 51 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blastenemy-t1 rotate: false - xy: 285, 71 + xy: 357, 71 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 blastenemy-t2 rotate: false - xy: 301, 71 + xy: 373, 71 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 blastenemy-t3 rotate: false - xy: 317, 71 + xy: 389, 71 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 empenemy-t1 rotate: false - xy: 333, 71 + xy: 405, 71 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 empenemy-t2 rotate: false - xy: 349, 71 + xy: 421, 71 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 empenemy-t3 rotate: false - xy: 365, 71 + xy: 437, 71 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 fastenemy-t1 rotate: false - xy: 381, 71 + xy: 453, 71 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 fastenemy-t2 rotate: false - xy: 397, 71 + xy: 469, 71 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 fastenemy-t3 rotate: false - xy: 413, 71 + xy: 485, 71 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 flamerenemy-t1 rotate: false - xy: 429, 71 + xy: 501, 71 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 flamerenemy-t2 rotate: false - xy: 445, 71 + xy: 517, 71 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 flamerenemy-t3 rotate: false - xy: 461, 71 + xy: 584, 203 size: 14, 14 orig: 14, 14 offset: 0, 0 @@ -1553,231 +1581,231 @@ fortressenemy-t3 index: -1 healerenemy-t1 rotate: false - xy: 477, 71 + xy: 584, 187 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 healerenemy-t2 rotate: false - xy: 493, 71 + xy: 600, 203 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 healerenemy-t3 rotate: false - xy: 509, 71 + xy: 600, 187 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 mortarenemy-t1 rotate: false - xy: 869, 463 + xy: 949, 444 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 mortarenemy-t2 rotate: false - xy: 885, 463 + xy: 965, 467 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 mortarenemy-t3 rotate: false - xy: 901, 463 + xy: 965, 451 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 rapidenemy-t1 rotate: false - xy: 917, 463 + xy: 981, 467 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 rapidenemy-t2 rotate: false - xy: 869, 447 + xy: 981, 451 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 rapidenemy-t3 rotate: false - xy: 885, 447 + xy: 997, 467 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 standardenemy-t1 rotate: false - xy: 901, 447 + xy: 997, 451 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 targetenemy-t1 rotate: false - xy: 901, 447 + xy: 997, 451 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 standardenemy-t2 rotate: false - xy: 1007, 469 + xy: 207, 56 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 standardenemy-t3 rotate: false - xy: 965, 455 + xy: 205, 42 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 tankenemy-t1 rotate: false - xy: 917, 447 + xy: 175, 50 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 tankenemy-t2 rotate: false - xy: 933, 460 + xy: 546, 97 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 tankenemy-t3 rotate: false - xy: 949, 460 + xy: 191, 58 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 titanenemy-t1 rotate: false - xy: 724, 321 + xy: 231, 69 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 titanenemy-t2 rotate: false - xy: 213, 70 + xy: 249, 69 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 titanenemy-t3 rotate: false - xy: 231, 69 + xy: 267, 69 size: 16, 16 orig: 16, 16 offset: 0, 0 index: -1 item-biomatter rotate: false - xy: 641, 89 + xy: 203, 2 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-coal rotate: false - xy: 571, 65 + xy: 584, 109 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-dirium rotate: false - xy: 575, 75 + xy: 213, 28 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-glass rotate: false - xy: 585, 75 + xy: 213, 18 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-iron rotate: false - xy: 581, 65 + xy: 213, 8 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-quartz rotate: false - xy: 595, 75 + xy: 627, 151 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-silicon rotate: false - xy: 591, 65 + xy: 627, 141 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-steel rotate: false - xy: 605, 75 + xy: 583, 131 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-stone rotate: false - xy: 601, 65 + xy: 593, 135 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-titanium rotate: false - xy: 615, 79 + xy: 603, 135 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-uranium rotate: false - xy: 625, 79 + xy: 613, 135 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 mech-standard rotate: false - xy: 175, 38 + xy: 592, 157 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 mech-standard-icon rotate: false - xy: 171, 24 + xy: 606, 157 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 ship-standard rotate: false - xy: 979, 469 + xy: 549, 83 size: 12, 12 orig: 12, 12 offset: 0, 0 @@ -1918,14 +1946,14 @@ check-over index: -1 clear rotate: false - xy: 580, 159 + xy: 1013, 459 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 cursor rotate: false - xy: 539, 99 + xy: 753, 343 size: 4, 4 orig: 4, 4 offset: 0, 0 @@ -1939,21 +1967,21 @@ controller-cursor index: -1 icon-about rotate: false - xy: 525, 71 + xy: 616, 207 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-add rotate: false - xy: 584, 203 + xy: 616, 191 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-admin rotate: false - xy: 584, 187 + xy: 724, 315 size: 14, 14 orig: 14, 14 offset: 0, 0 @@ -1967,42 +1995,42 @@ icon-admin-small index: -1 icon-areaDelete rotate: false - xy: 581, 147 + xy: 271, 57 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-arrow rotate: false - xy: 600, 203 + xy: 641, 218 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-arrow-down rotate: false - xy: 593, 147 + xy: 283, 57 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-arrow-left rotate: false - xy: 605, 147 + xy: 295, 57 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-arrow-right rotate: false - xy: 539, 87 + xy: 307, 57 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-arrow-up rotate: false - xy: 541, 75 + xy: 319, 57 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -2016,28 +2044,28 @@ icon-back index: -1 icon-ban rotate: false - xy: 600, 187 + xy: 753, 409 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-cancel rotate: false - xy: 616, 207 + xy: 753, 393 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-chat rotate: false - xy: 551, 87 + xy: 331, 57 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-check rotate: false - xy: 616, 191 + xy: 753, 377 size: 14, 14 orig: 14, 14 offset: 0, 0 @@ -2065,63 +2093,63 @@ icon-close-over index: -1 icon-crafting rotate: false - xy: 553, 75 + xy: 343, 57 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-cursor rotate: false - xy: 758, 349 + xy: 591, 145 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-defense rotate: false - xy: 758, 337 + xy: 603, 145 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-discord rotate: false - xy: 641, 218 + xy: 753, 361 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-distribution rotate: false - xy: 758, 325 + xy: 175, 38 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-donate rotate: false - xy: 742, 341 + xy: 769, 410 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-dots rotate: false - xy: 742, 325 + xy: 769, 394 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-editor rotate: false - xy: 698, 304 + xy: 769, 378 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-file-text rotate: false - xy: 695, 288 + xy: 769, 362 size: 14, 14 orig: 14, 14 offset: 0, 0 @@ -2135,21 +2163,21 @@ icon-fill index: -1 icon-floppy rotate: false - xy: 695, 272 + xy: 698, 304 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-folder rotate: false - xy: 695, 256 + xy: 695, 288 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-folder-parent rotate: false - xy: 695, 240 + xy: 695, 272 size: 14, 14 orig: 14, 14 offset: 0, 0 @@ -2163,35 +2191,35 @@ icon-grid index: -1 icon-hold rotate: false - xy: 770, 350 + xy: 171, 26 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-holdDelete rotate: false - xy: 770, 338 + xy: 171, 14 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-home rotate: false - xy: 753, 409 + xy: 695, 256 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-host rotate: false - xy: 753, 393 + xy: 695, 240 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-info rotate: false - xy: 770, 326 + xy: 781, 432 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -2205,14 +2233,14 @@ icon-line index: -1 icon-liquid rotate: false - xy: 760, 313 + xy: 793, 436 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-load rotate: false - xy: 753, 377 + xy: 740, 315 size: 14, 14 orig: 14, 14 offset: 0, 0 @@ -2240,28 +2268,28 @@ icon-loading index: -1 icon-logic rotate: false - xy: 772, 314 + xy: 805, 436 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-menu rotate: false - xy: 581, 135 + xy: 817, 440 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-none rotate: false - xy: 593, 135 + xy: 829, 440 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-pause rotate: false - xy: 605, 135 + xy: 841, 441 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -2275,7 +2303,7 @@ icon-pencil index: -1 icon-pencil-small rotate: false - xy: 753, 361 + xy: 584, 171 size: 14, 14 orig: 14, 14 offset: 0, 0 @@ -2289,42 +2317,42 @@ icon-pick index: -1 icon-play rotate: false - xy: 617, 151 + xy: 853, 441 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-play-2 rotate: false - xy: 769, 410 + xy: 600, 171 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-players rotate: false - xy: 617, 139 + xy: 219, 38 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-power rotate: false - xy: 781, 432 + xy: 231, 43 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-production rotate: false - xy: 793, 436 + xy: 243, 43 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-quit rotate: false - xy: 769, 394 + xy: 616, 175 size: 14, 14 orig: 14, 14 offset: 0, 0 @@ -2338,14 +2366,14 @@ icon-redo index: -1 icon-refresh rotate: false - xy: 769, 378 + xy: 869, 463 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-rename rotate: false - xy: 769, 362 + xy: 885, 463 size: 14, 14 orig: 14, 14 offset: 0, 0 @@ -2359,35 +2387,35 @@ icon-resize index: -1 icon-rotate rotate: false - xy: 714, 304 + xy: 901, 463 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-rotate-arrow rotate: false - xy: 711, 288 + xy: 917, 463 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-rotate-left rotate: false - xy: 711, 272 + xy: 869, 447 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-rotate-right rotate: false - xy: 711, 256 + xy: 885, 447 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-save rotate: false - xy: 711, 240 + xy: 901, 447 size: 14, 14 orig: 14, 14 offset: 0, 0 @@ -2408,7 +2436,7 @@ icon-save-map index: -1 icon-settings rotate: false - xy: 805, 436 + xy: 171, 2 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -2422,28 +2450,28 @@ icon-terrain index: -1 icon-tools rotate: false - xy: 730, 305 + xy: 917, 447 size: 14, 14 orig: 14, 14 offset: 0, 0 index: -1 icon-touch rotate: false - xy: 817, 440 + xy: 724, 303 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-touchDelete rotate: false - xy: 829, 440 + xy: 736, 303 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-trash rotate: false - xy: 584, 171 + xy: 933, 460 size: 14, 14 orig: 14, 14 offset: 0, 0 @@ -2457,7 +2485,7 @@ icon-trash-16 index: -1 icon-tutorial rotate: false - xy: 600, 171 + xy: 949, 460 size: 14, 14 orig: 14, 14 offset: 0, 0 @@ -2471,14 +2499,14 @@ icon-undo index: -1 icon-units rotate: false - xy: 841, 441 + xy: 711, 288 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-weapon rotate: false - xy: 853, 441 + xy: 711, 276 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -2492,7 +2520,7 @@ icon-zoom index: -1 icon-zoom-small rotate: false - xy: 616, 175 + xy: 933, 444 size: 14, 14 orig: 14, 14 offset: 0, 0 @@ -2570,7 +2598,7 @@ selection index: -1 slider rotate: false - xy: 632, 213 + xy: 590, 121 size: 1, 8 orig: 1, 8 offset: 0, 0 @@ -2598,7 +2626,7 @@ slider-knob-over index: -1 slider-vertical rotate: false - xy: 632, 180 + xy: 581, 146 size: 8, 1 orig: 8, 1 offset: 0, 0 @@ -2665,84 +2693,84 @@ window-empty index: -1 beam rotate: false - xy: 679, 228 + xy: 221, 60 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 beam-equip rotate: false - xy: 657, 218 + xy: 581, 149 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blaster rotate: false - xy: 185, 18 + xy: 667, 218 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blaster-equip rotate: false - xy: 541, 65 + xy: 677, 218 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 clustergun rotate: false - xy: 793, 426 + xy: 709, 230 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 clustergun-equip rotate: false - xy: 803, 426 + xy: 1007, 437 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shockgun rotate: false - xy: 682, 188 + xy: 743, 253 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shockgun-equip rotate: false - xy: 642, 178 + xy: 743, 243 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 triblaster rotate: false - xy: 701, 158 + xy: 505, 51 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 triblaster-equip rotate: false - xy: 701, 148 + xy: 515, 51 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 vulcan rotate: false - xy: 720, 170 + xy: 567, 57 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 vulcan-equip rotate: false - xy: 721, 160 + xy: 557, 47 size: 8, 8 orig: 8, 8 offset: 0, 0 diff --git a/core/assets/sprites/sprites.png b/core/assets/sprites/sprites.png index bd0e095b00..7a0fa17988 100644 Binary files a/core/assets/sprites/sprites.png and b/core/assets/sprites/sprites.png differ diff --git a/core/assets/version.properties b/core/assets/version.properties index f0de441295..d71e0f2b48 100644 --- a/core/assets/version.properties +++ b/core/assets/version.properties @@ -1,7 +1,7 @@ #Autogenerated file. Do not modify. -#Mon Mar 12 16:07:14 EDT 2018 +#Mon Mar 12 22:01:24 EDT 2018 version=release -androidBuildCode=461 +androidBuildCode=474 name=Mindustry code=3.4 build=custom build diff --git a/core/src/io/anuke/mindustry/resource/Item.java b/core/src/io/anuke/mindustry/resource/Item.java index 1798203fde..da850cefea 100644 --- a/core/src/io/anuke/mindustry/resource/Item.java +++ b/core/src/io/anuke/mindustry/resource/Item.java @@ -5,7 +5,7 @@ import com.badlogic.gdx.utils.Array; import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.util.Bundles; -public class Item{ +public class Item implements Comparable{ private static final Array items = new Array<>(); public static final Item @@ -15,6 +15,7 @@ public class Item{ { explosiveness = 0.2f; flammability = 0.5f; + fluxiness = 0.5f; material = false; } }, @@ -30,6 +31,7 @@ public class Item{ quartz = new Item("quartz") { { material = false; + fluxiness = 0.65f; } }, glass = new Item("glass"), @@ -47,6 +49,8 @@ public class Item{ public float explosiveness = 0f; public float flammability = 0f; + /**how effective this item is as flux for smelting. 0 = not a flux, 0.5 = normal flux, 1 = very good*/ + public float fluxiness = 0f; public boolean material = true; public Item(String name) { @@ -69,6 +73,11 @@ public class Item{ return localizedName(); } + @Override + public int compareTo(Item item) { + return Integer.compare(id, item.id); + } + public static Array getAllItems() { return Item.items; } diff --git a/core/src/io/anuke/mindustry/resource/Liquid.java b/core/src/io/anuke/mindustry/resource/Liquid.java index febdc84a3d..9378073928 100644 --- a/core/src/io/anuke/mindustry/resource/Liquid.java +++ b/core/src/io/anuke/mindustry/resource/Liquid.java @@ -11,7 +11,11 @@ public class Liquid { public static final Liquid none = new Liquid("none", Color.CLEAR), - water = new Liquid("water", Color.ROYAL), + water = new Liquid("water", Color.ROYAL){ + { + heatCapacity = 0.7f; + } + }, plasma = new Liquid("plasma", Color.CORAL){ { flammability = 0.4f; @@ -28,7 +32,7 @@ public class Liquid { oil = new Liquid("oil", Color.valueOf("292929")){ { viscosity = 0.7f; - flammability = 0.5f; + flammability = 0.6f; explosiveness = 0.6f; } }, @@ -50,10 +54,15 @@ public class Liquid { public final String name; public final int id; + /**0-1, 0 is completely inflammable, anything above that may catch fire when exposed to heat, 0.5+ is very flammable.*/ public float flammability; + /**temperature: 0.5 is 'room' temperature, 0 is very cold, 1 is molten hot*/ public float temperature = 0.5f; + /**how much heat this liquid can store. 0.75=water (high), anything lower is probably less dense and bad at cooling.*/ public float heatCapacity = 0.5f; + /**how thick this liquid is. 0.5=water (relatively viscous), 1 would be something like tar (very slow)*/ public float viscosity = 0.5f; + /**how prone to exploding this liquid is, when heated. 0 = nothing, 1 = nuke*/ public float explosiveness; public Liquid(String name, Color color) { diff --git a/core/src/io/anuke/mindustry/resource/Recipes.java b/core/src/io/anuke/mindustry/resource/Recipes.java index 1795a49648..2fd3d7301f 100644 --- a/core/src/io/anuke/mindustry/resource/Recipes.java +++ b/core/src/io/anuke/mindustry/resource/Recipes.java @@ -10,96 +10,97 @@ import static io.anuke.mindustry.resource.Section.*; public class Recipes { private static final Array list = Array.with( - new Recipe(defense, DefenseBlocks.stonewall, stack(Item.stone, 12)), - new Recipe(defense, DefenseBlocks.ironwall, stack(Item.iron, 12)), - new Recipe(defense, DefenseBlocks.steelwall, stack(Item.steel, 12)), - new Recipe(defense, DefenseBlocks.titaniumwall, stack(Item.titanium, 12)), - new Recipe(defense, DefenseBlocks.diriumwall, stack(Item.dirium, 12)), - new Recipe(defense, DefenseBlocks.steelwalllarge, stack(Item.steel, 12*4)), - new Recipe(defense, DefenseBlocks.titaniumwalllarge, stack(Item.titanium, 12*4)), - new Recipe(defense, DefenseBlocks.diriumwalllarge, stack(Item.dirium, 12*4)), - new Recipe(defense, DefenseBlocks.door, stack(Item.steel, 3), stack(Item.iron, 3*4)).setDesktop(), - new Recipe(defense, DefenseBlocks.largedoor, stack(Item.steel, 3*4), stack(Item.iron, 3*4*4)).setDesktop(), - new Recipe(defense, DefenseBlocks.titaniumshieldwall, stack(Item.titanium, 16)), + new Recipe(defense, DefenseBlocks.stonewall, stack(Item.stone, 12)), + new Recipe(defense, DefenseBlocks.ironwall, stack(Item.iron, 12)), + new Recipe(defense, DefenseBlocks.steelwall, stack(Item.steel, 12)), + new Recipe(defense, DefenseBlocks.titaniumwall, stack(Item.titanium, 12)), + new Recipe(defense, DefenseBlocks.diriumwall, stack(Item.dirium, 12)), + new Recipe(defense, DefenseBlocks.steelwalllarge, stack(Item.steel, 12*4)), + new Recipe(defense, DefenseBlocks.titaniumwalllarge, stack(Item.titanium, 12*4)), + new Recipe(defense, DefenseBlocks.diriumwalllarge, stack(Item.dirium, 12*4)), + new Recipe(defense, DefenseBlocks.door, stack(Item.steel, 3), stack(Item.iron, 3*4)).setDesktop(), + new Recipe(defense, DefenseBlocks.largedoor, stack(Item.steel, 3*4), stack(Item.iron, 3*4*4)).setDesktop(), + new Recipe(defense, DefenseBlocks.titaniumshieldwall, stack(Item.titanium, 16)), - new Recipe(distribution, DistributionBlocks.conveyor, stack(Item.stone, 1)), - new Recipe(distribution, DistributionBlocks.steelconveyor, stack(Item.steel, 1)), - new Recipe(distribution, DistributionBlocks.pulseconveyor, stack(Item.dirium, 1)), - new Recipe(distribution, DistributionBlocks.router, stack(Item.stone, 2)), - new Recipe(distribution, DistributionBlocks.multiplexer, stack(Item.iron, 8)), - new Recipe(distribution, DistributionBlocks.junction, stack(Item.iron, 2)), - new Recipe(distribution, DistributionBlocks.tunnel, stack(Item.iron, 2)), - new Recipe(distribution, DistributionBlocks.sorter, stack(Item.steel, 2)), - new Recipe(distribution, DistributionBlocks.splitter, stack(Item.steel, 1)), - new Recipe(distribution, DistributionBlocks.vault, stack(Item.steel, 50)), - new Recipe(distribution, DistributionBlocks.unloader, stack(Item.steel, 5)), - new Recipe(distribution, DistributionBlocks.sortedunloader, stack(Item.steel, 5)), + new Recipe(distribution, DistributionBlocks.conveyor, stack(Item.stone, 1)), + new Recipe(distribution, DistributionBlocks.steelconveyor, stack(Item.steel, 1)), + new Recipe(distribution, DistributionBlocks.pulseconveyor, stack(Item.dirium, 1)), + new Recipe(distribution, DistributionBlocks.router, stack(Item.stone, 2)), + new Recipe(distribution, DistributionBlocks.multiplexer, stack(Item.iron, 8)), + new Recipe(distribution, DistributionBlocks.junction, stack(Item.iron, 2)), + new Recipe(distribution, DistributionBlocks.tunnel, stack(Item.iron, 2)), + new Recipe(distribution, DistributionBlocks.sorter, stack(Item.steel, 2)), + new Recipe(distribution, DistributionBlocks.splitter, stack(Item.steel, 1)), + new Recipe(distribution, DistributionBlocks.vault, stack(Item.steel, 50)), + new Recipe(distribution, DistributionBlocks.unloader, stack(Item.steel, 5)), + new Recipe(distribution, DistributionBlocks.sortedunloader, stack(Item.steel, 5)), - new Recipe(weapon, WeaponBlocks.doubleturret, stack(Item.stone, 7)), - new Recipe(weapon, WeaponBlocks.gatlingturret, stack(Item.iron, 8), stack(Item.stone, 10)), - new Recipe(weapon, WeaponBlocks.flameturret, stack(Item.iron, 12), stack(Item.steel, 9)), - new Recipe(weapon, WeaponBlocks.railgunturret, stack(Item.iron, 15), stack(Item.steel, 10)), - new Recipe(weapon, WeaponBlocks.laserturret, stack(Item.steel, 12), stack(Item.titanium, 12)), - new Recipe(weapon, WeaponBlocks.flakturret, stack(Item.steel, 25), stack(Item.titanium, 15)), - new Recipe(weapon, WeaponBlocks.teslaturret, stack(Item.steel, 20), stack(Item.titanium, 25), stack(Item.dirium, 15)), - new Recipe(weapon, WeaponBlocks.magmaturret, stack(Item.steel, 80), stack(Item.titanium, 70), stack(Item.dirium, 60)), - new Recipe(weapon, WeaponBlocks.chainturret, stack(Item.steel, 50), stack(Item.titanium, 25), stack(Item.dirium, 40)), - new Recipe(weapon, WeaponBlocks.titanturret, stack(Item.steel, 70), stack(Item.titanium, 50), stack(Item.dirium, 55)), - new Recipe(weapon, WeaponBlocks.missileturret, stack(Item.steel, 70), stack(Item.titanium, 50), stack(Item.dirium, 55)), - new Recipe(weapon, WeaponBlocks.fornaxcannon, stack(Item.steel, 70), stack(Item.titanium, 50), stack(Item.dirium, 55)), + new Recipe(weapon, WeaponBlocks.doubleturret, stack(Item.stone, 7)), + new Recipe(weapon, WeaponBlocks.gatlingturret, stack(Item.iron, 8), stack(Item.stone, 10)), + new Recipe(weapon, WeaponBlocks.flameturret, stack(Item.iron, 12), stack(Item.steel, 9)), + new Recipe(weapon, WeaponBlocks.railgunturret, stack(Item.iron, 15), stack(Item.steel, 10)), + new Recipe(weapon, WeaponBlocks.laserturret, stack(Item.steel, 12), stack(Item.titanium, 12)), + new Recipe(weapon, WeaponBlocks.flakturret, stack(Item.steel, 25), stack(Item.titanium, 15)), + new Recipe(weapon, WeaponBlocks.teslaturret, stack(Item.steel, 20), stack(Item.titanium, 25), stack(Item.dirium, 15)), + new Recipe(weapon, WeaponBlocks.magmaturret, stack(Item.steel, 80), stack(Item.titanium, 70), stack(Item.dirium, 60)), + new Recipe(weapon, WeaponBlocks.chainturret, stack(Item.steel, 50), stack(Item.titanium, 25), stack(Item.dirium, 40)), + new Recipe(weapon, WeaponBlocks.titanturret, stack(Item.steel, 70), stack(Item.titanium, 50), stack(Item.dirium, 55)), + new Recipe(weapon, WeaponBlocks.missileturret, stack(Item.steel, 70), stack(Item.titanium, 50), stack(Item.dirium, 55)), + new Recipe(weapon, WeaponBlocks.fornaxcannon, stack(Item.steel, 70), stack(Item.titanium, 50), stack(Item.dirium, 55)), - new Recipe(crafting, ProductionBlocks.smelter, stack(Item.stone, 40), stack(Item.iron, 40)), - new Recipe(crafting, ProductionBlocks.alloysmelter, stack(Item.titanium, 50), stack(Item.steel, 50)), - new Recipe(crafting, ProductionBlocks.coalextractor, stack(Item.steel, 10), stack(Item.iron, 10)), - new Recipe(crafting, ProductionBlocks.titaniumextractor, stack(Item.steel, 30), stack(Item.iron, 30)), - new Recipe(crafting, ProductionBlocks.uraniumextractor, stack(Item.steel, 30), stack(Item.iron, 30)), - new Recipe(crafting, ProductionBlocks.oilrefinery, stack(Item.steel, 15), stack(Item.iron, 15)), - new Recipe(crafting, ProductionBlocks.stoneformer, stack(Item.steel, 10), stack(Item.iron, 10)), - new Recipe(crafting, ProductionBlocks.lavasmelter, stack(Item.steel, 30), stack(Item.titanium, 15)), - new Recipe(crafting, ProductionBlocks.pulverizer, stack(Item.steel, 30), stack(Item.titanium, 15)), - new Recipe(crafting, ProductionBlocks.siliconextractor, stack(Item.steel, 30), stack(Item.titanium, 15)), - new Recipe(crafting, ProductionBlocks.weaponFactory, stack(Item.steel, 60), stack(Item.iron, 60)).setDesktop(), + new Recipe(crafting, ProductionBlocks.smelter, stack(Item.stone, 40), stack(Item.iron, 40)), + new Recipe(crafting, ProductionBlocks.alloysmelter, stack(Item.titanium, 50), stack(Item.steel, 50)), + new Recipe(crafting, ProductionBlocks.coalextractor, stack(Item.steel, 10), stack(Item.iron, 10)), + new Recipe(crafting, ProductionBlocks.titaniumextractor, stack(Item.steel, 30), stack(Item.iron, 30)), + new Recipe(crafting, ProductionBlocks.oilrefinery, stack(Item.steel, 15), stack(Item.iron, 15)), + new Recipe(crafting, ProductionBlocks.stoneformer, stack(Item.steel, 10), stack(Item.iron, 10)), + new Recipe(crafting, ProductionBlocks.lavasmelter, stack(Item.steel, 30), stack(Item.titanium, 15)), + new Recipe(crafting, ProductionBlocks.siliconextractor, stack(Item.steel, 30), stack(Item.titanium, 15)), + new Recipe(crafting, ProductionBlocks.weaponFactory, stack(Item.steel, 60), stack(Item.iron, 60)).setDesktop(), + //new Recipe(crafting, ProductionBlocks.centrifuge, stack(Item.steel, 30), stack(Item.iron, 30)), - new Recipe(production, ProductionBlocks.stonedrill, stack(Item.stone, 12)), - new Recipe(production, ProductionBlocks.irondrill, stack(Item.stone, 25)), - new Recipe(production, ProductionBlocks.coaldrill, stack(Item.stone, 25), stack(Item.iron, 40)), - new Recipe(production, ProductionBlocks.titaniumdrill, stack(Item.iron, 50), stack(Item.steel, 50)), - new Recipe(production, ProductionBlocks.uraniumdrill, stack(Item.iron, 40), stack(Item.steel, 40)), - new Recipe(production, ProductionBlocks.quartzextractor, stack(Item.titanium, 40), stack(Item.dirium, 40)), - new Recipe(production, ProductionBlocks.cultivator, stack(Item.titanium, 40), stack(Item.dirium, 40)), - new Recipe(production, ProductionBlocks.laserdrill, stack(Item.titanium, 40), stack(Item.dirium, 40)), + new Recipe(production, ProductionBlocks.stonedrill, stack(Item.stone, 12)), + new Recipe(production, ProductionBlocks.irondrill, stack(Item.stone, 25)), + new Recipe(production, ProductionBlocks.coaldrill, stack(Item.stone, 25), stack(Item.iron, 40)), + new Recipe(production, ProductionBlocks.titaniumdrill, stack(Item.iron, 50), stack(Item.steel, 50)), + new Recipe(production, ProductionBlocks.uraniumdrill, stack(Item.iron, 40), stack(Item.steel, 40)), + new Recipe(production, ProductionBlocks.quartzextractor, stack(Item.titanium, 40), stack(Item.dirium, 40)), + new Recipe(production, ProductionBlocks.cultivator, stack(Item.titanium, 40), stack(Item.dirium, 40)), + new Recipe(production, ProductionBlocks.laserdrill, stack(Item.titanium, 40), stack(Item.dirium, 40)), + new Recipe(production, ProductionBlocks.waterextractor, stack(Item.titanium, 40), stack(Item.dirium, 40)), - new Recipe(power, ProductionBlocks.coalgenerator, stack(Item.iron, 30), stack(Item.stone, 20)), - new Recipe(power, ProductionBlocks.thermalgenerator, stack(Item.steel, 30), stack(Item.iron, 30)), - new Recipe(power, ProductionBlocks.combustiongenerator, stack(Item.iron, 30), stack(Item.stone, 20)), - new Recipe(power, ProductionBlocks.solarpanel, stack(Item.iron, 30), stack(Item.silicon, 20)), - new Recipe(power, ProductionBlocks.rtgenerator, stack(Item.titanium, 20), stack(Item.steel, 20)), - new Recipe(power, ProductionBlocks.nuclearReactor, stack(Item.titanium, 40), stack(Item.dirium, 40), stack(Item.steel, 50)), - new Recipe(power, DistributionBlocks.powerlaser, stack(Item.steel, 3), stack(Item.iron, 3)), - new Recipe(power, DistributionBlocks.powerlasercorner, stack(Item.steel, 4), stack(Item.iron, 4)), - new Recipe(power, DistributionBlocks.powerlaserrouter, stack(Item.steel, 5), stack(Item.iron, 5)), - new Recipe(power, DistributionBlocks.battery, stack(Item.steel, 5), stack(Item.iron, 5)), - new Recipe(power, DistributionBlocks.batteryLarge, stack(Item.steel, 5), stack(Item.iron, 5)), + new Recipe(power, ProductionBlocks.coalgenerator, stack(Item.iron, 30), stack(Item.stone, 20)), + new Recipe(power, ProductionBlocks.thermalgenerator, stack(Item.steel, 30), stack(Item.iron, 30)), + new Recipe(power, ProductionBlocks.combustiongenerator, stack(Item.iron, 30), stack(Item.stone, 20)), + new Recipe(power, ProductionBlocks.solarpanel, stack(Item.iron, 30), stack(Item.silicon, 20)), + new Recipe(power, ProductionBlocks.largesolarpanel, stack(Item.iron, 30), stack(Item.silicon, 20)), + new Recipe(power, ProductionBlocks.rtgenerator, stack(Item.titanium, 20), stack(Item.steel, 20)), + new Recipe(power, ProductionBlocks.nuclearReactor, stack(Item.titanium, 40), stack(Item.dirium, 40), stack(Item.steel, 50)), + new Recipe(power, DistributionBlocks.powerlaser, stack(Item.steel, 3), stack(Item.iron, 3)), + new Recipe(power, DistributionBlocks.powerlasercorner, stack(Item.steel, 4), stack(Item.iron, 4)), + new Recipe(power, DistributionBlocks.powerlaserrouter, stack(Item.steel, 5), stack(Item.iron, 5)), + new Recipe(power, DistributionBlocks.battery, stack(Item.steel, 5), stack(Item.iron, 5)), + new Recipe(power, DistributionBlocks.batteryLarge, stack(Item.steel, 5), stack(Item.iron, 5)), - new Recipe(power, DefenseBlocks.shieldgenerator, stack(Item.titanium, 30), stack(Item.dirium, 30)), + new Recipe(power, DefenseBlocks.shieldgenerator, stack(Item.titanium, 30), stack(Item.dirium, 30)), - new Recipe(distribution, DistributionBlocks.teleporter, stack(Item.steel, 30), stack(Item.dirium, 40)), + new Recipe(distribution, DistributionBlocks.teleporter, stack(Item.steel, 30), stack(Item.dirium, 40)), - new Recipe(power, DefenseBlocks.repairturret, stack(Item.iron, 30)), - new Recipe(power, DefenseBlocks.megarepairturret, stack(Item.iron, 20), stack(Item.steel, 30)), + new Recipe(power, DefenseBlocks.repairturret, stack(Item.iron, 30)), + new Recipe(power, DefenseBlocks.megarepairturret, stack(Item.iron, 20), stack(Item.steel, 30)), - new Recipe(liquid, DistributionBlocks.conduit, stack(Item.steel, 1)), - new Recipe(liquid, DistributionBlocks.pulseconduit, stack(Item.titanium, 1), stack(Item.steel, 1)), - new Recipe(liquid, DistributionBlocks.liquidrouter, stack(Item.steel, 2)), - new Recipe(liquid, DistributionBlocks.liquidsilo, stack(Item.steel, 2)), - new Recipe(liquid, DistributionBlocks.liquidjunction, stack(Item.steel, 2)), - new Recipe(liquid, DistributionBlocks.conduittunnel, stack(Item.titanium, 2), stack(Item.steel, 2)), + new Recipe(liquid, DistributionBlocks.conduit, stack(Item.steel, 1)), + new Recipe(liquid, DistributionBlocks.pulseconduit, stack(Item.titanium, 1), stack(Item.steel, 1)), + new Recipe(liquid, DistributionBlocks.liquidrouter, stack(Item.steel, 2)), + new Recipe(liquid, DistributionBlocks.liquidtank, stack(Item.steel, 2)), + new Recipe(liquid, DistributionBlocks.liquidjunction, stack(Item.steel, 2)), + new Recipe(liquid, DistributionBlocks.conduittunnel, stack(Item.titanium, 2), stack(Item.steel, 2)), - new Recipe(liquid, ProductionBlocks.pump, stack(Item.steel, 10)), - new Recipe(liquid, ProductionBlocks.fluxpump, stack(Item.steel, 10), stack(Item.dirium, 5)), + new Recipe(liquid, ProductionBlocks.pump, stack(Item.steel, 10)), + new Recipe(liquid, ProductionBlocks.fluxpump, stack(Item.steel, 10), stack(Item.dirium, 5)), - new Recipe(units, DebugBlocks.powerVoid, stack(Item.steel, 10)).setDebug(), - new Recipe(units, DebugBlocks.powerInfinite, stack(Item.steel, 10), stack(Item.dirium, 5)).setDebug() + new Recipe(units, DebugBlocks.powerVoid, stack(Item.steel, 10)).setDebug(), + new Recipe(units, DebugBlocks.powerInfinite, stack(Item.steel, 10), stack(Item.dirium, 5)).setDebug() ); private static ItemStack stack(Item item, int amount){ diff --git a/core/src/io/anuke/mindustry/world/blocks/DistributionBlocks.java b/core/src/io/anuke/mindustry/world/blocks/DistributionBlocks.java index 97d03b2587..a0b3aeec65 100644 --- a/core/src/io/anuke/mindustry/world/blocks/DistributionBlocks.java +++ b/core/src/io/anuke/mindustry/world/blocks/DistributionBlocks.java @@ -26,9 +26,9 @@ public class DistributionBlocks{ liquidRegion = "liquidrouter-liquid"; }}, - liquidsilo = new LiquidRouter("liquidsilo"){{ + liquidtank = new LiquidRouter("liquidtank"){{ size = 3; - liquidRegion = "liquidsilo-liquid"; + liquidRegion = "liquidtank-liquid"; liquidCapacity = 1300f; }}, diff --git a/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java b/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java index 440fae0a61..660e8c6317 100644 --- a/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java +++ b/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java @@ -2,13 +2,14 @@ package io.anuke.mindustry.world.blocks; import io.anuke.mindustry.graphics.Fx; import io.anuke.mindustry.resource.Item; -import io.anuke.mindustry.resource.ItemStack; import io.anuke.mindustry.resource.Liquid; import io.anuke.mindustry.world.Block; -import io.anuke.mindustry.world.blocks.types.generation.*; +import io.anuke.mindustry.world.blocks.types.generation.ItemPowerGenerator; +import io.anuke.mindustry.world.blocks.types.generation.LiquidPowerGenerator; +import io.anuke.mindustry.world.blocks.types.generation.NuclearReactor; import io.anuke.mindustry.world.blocks.types.generation.SolarGenerator; -import io.anuke.mindustry.world.blocks.types.storage.CoreBlock; import io.anuke.mindustry.world.blocks.types.production.*; +import io.anuke.mindustry.world.blocks.types.storage.CoreBlock; public class ProductionBlocks{ public static final Block @@ -29,6 +30,7 @@ public class ProductionBlocks{ inputs = new Item[]{Item.iron}; fuel = Item.coal; result = Item.steel; + craftTime = 25f; } }, @@ -38,27 +40,41 @@ public class ProductionBlocks{ inputs = new Item[]{Item.titanium, Item.steel}; fuel = Item.coal; result = Item.dirium; - burnDuration = 40f; - craftTime = 20f; + burnDuration = 45f; + craftTime = 25f; + } + }, + + powersmelter = new PowerSmelter("powersmelter"){ + { + /* + health = 90; + inputs = new Item[]{Item.titanium, Item.steel}; + fuel = Item.coal; + results = Item.dirium; + burnDuration = 45f; + craftTime = 25f; + size = 2;*/ } }, coalextractor = new LiquidCrafter("coalextractor"){ { input = Item.stone; - inputAmount = 5; + inputAmount = 6; inputLiquid = Liquid.water; - liquidAmount = 18.99f; + liquidAmount = 19f; output = Item.coal; health = 50; purifyTime = 50; + health = 60; } }, titaniumextractor = new LiquidCrafter("titaniumextractor"){ { input = Item.iron; - inputAmount = 6; + inputAmount = 8; inputLiquid = Liquid.water; liquidAmount = 40f; liquidCapacity = 41f; @@ -67,19 +83,6 @@ public class ProductionBlocks{ health = 70; } }, - - uraniumextractor = new LiquidCrafter("uraniumextractor"){ - { - input = Item.iron; - inputAmount = 6; - inputLiquid = Liquid.water; - liquidAmount = 40f; - liquidCapacity = 41f; - purifyTime = 60; - output = Item.uranium; - health = 70; - } - }, oilrefinery = new LiquidCrafter("oilrefinery"){ { @@ -120,17 +123,6 @@ public class ProductionBlocks{ } }, - pulverizer = new PowerSmelter("pulverizer"){ - { - inputs = new ItemStack[]{new ItemStack(Item.stone, 5)}; - result = Item.quartz; - health = 50; - craftTime = 60f; - powerDrain = 0.02f; - craftEffect = Fx.pulverize; - } - }, - siliconextractor = new LiquidCrafter("siliconextractor"){ { input = Item.quartz; @@ -221,6 +213,15 @@ public class ProductionBlocks{ } }, + //TODO test it + waterextractor = new SolidPump("waterextractor"){ + { + result = Liquid.water; + powerUse = 0.1f; + size = 2; + } + }, + cultivator = new GenericDrill("cultivator"){ { resource = Blocks.grass; @@ -267,7 +268,15 @@ public class ProductionBlocks{ } }, solarpanel = new SolarGenerator("solarpanel"){ - + { + generation = 0.003f; + } + }, + largesolarpanel = new SolarGenerator("largesolarpanel"){ + { + size = 3; + generation = 0.012f; + } }, nuclearReactor = new NuclearReactor("nuclearreactor"){ { diff --git a/core/src/io/anuke/mindustry/world/blocks/types/generation/Generator.java b/core/src/io/anuke/mindustry/world/blocks/types/generation/Generator.java index b3245963ac..a6bd3a927e 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/generation/Generator.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/generation/Generator.java @@ -198,7 +198,7 @@ public class Generator extends PowerBlock{ t1.trns(rotation * 90, 1 * tilesize / 2 + 2f + (interfering ? Vector2.dst(tile.worldx(), tile.worldy(), target.worldx(), - target.worldy()) / 2f - tilesize / 2f * 1 + 1 : 0)); + target.worldy()) / 2f - tilesize / 2f * 1 : 0)); t2.trns(rotation * 90, size * tilesize / 2 + 2f); diff --git a/core/src/io/anuke/mindustry/world/blocks/types/generation/LiquidPowerGenerator.java b/core/src/io/anuke/mindustry/world/blocks/types/generation/LiquidPowerGenerator.java index ed723a0403..a384febbc1 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/generation/LiquidPowerGenerator.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/generation/LiquidPowerGenerator.java @@ -12,7 +12,6 @@ import io.anuke.ucore.util.Mathf; import io.anuke.ucore.util.Strings; public class LiquidPowerGenerator extends Generator{ - public int generateTime = 15; public Liquid generateLiquid; public float powerPerLiquid = 0.13f; /**Maximum liquid used per frame.*/ diff --git a/core/src/io/anuke/mindustry/world/blocks/types/generation/NuclearReactor.java b/core/src/io/anuke/mindustry/world/blocks/types/generation/NuclearReactor.java index 24ea04bf88..4a6ce480bb 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/generation/NuclearReactor.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/generation/NuclearReactor.java @@ -85,9 +85,12 @@ public class NuclearReactor extends LiquidPowerGenerator{ } if(entity.liquid.amount > 0){ - float maxCool = Math.min(entity.liquid.amount * coolantPower, entity.heat); - entity.heat -= maxCool; //TODO steam when cooling large amounts? - entity.liquid.amount -= maxCool / coolantPower; + //TODO proper coolant usage + float coolDirection = Mathf.clamp(10f * (0.6f - entity.liquid.liquid.temperature), -2f, 2f); + float maxCool = entity.liquid.amount * coolantPower * entity.liquid.liquid.heatCapacity; + entity.heat -= maxCool * coolDirection; //TODO steam when cooling large amounts? + entity.heat = Mathf.clamp(entity.heat); + entity.liquid.amount -= Math.min(entity.liquid.amount, entity.heat / coolantPower); } if(entity.heat > smokeThreshold){ @@ -162,7 +165,13 @@ public class NuclearReactor extends LiquidPowerGenerator{ public boolean acceptItem(Item item, Tile tile, Tile source){ return item == generateItem && tile.entity.inventory.getItem(generateItem) < itemCapacity; } - + + @Override + public boolean acceptLiquid(Tile tile, Tile source, Liquid liquid, float amount){ + return tile.entity.liquid.amount + amount < liquidCapacity + && (tile.entity.liquid.liquid == liquid || tile.entity.liquid.amount <= 0.001f); + } + @Override public void draw(Tile tile){ super.draw(tile); diff --git a/core/src/io/anuke/mindustry/world/blocks/types/generation/SolarGenerator.java b/core/src/io/anuke/mindustry/world/blocks/types/generation/SolarGenerator.java index 6c2748eb1d..e093b36e9a 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/generation/SolarGenerator.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/generation/SolarGenerator.java @@ -9,6 +9,7 @@ public class SolarGenerator extends Generator { public SolarGenerator(String name){ super(name); + hasInventory = false; } @Override diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/LiquidCrafter.java b/core/src/io/anuke/mindustry/world/blocks/types/production/LiquidCrafter.java index bad83ca074..f8a1ffd747 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/LiquidCrafter.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/LiquidCrafter.java @@ -35,7 +35,7 @@ public class LiquidCrafter extends LiquidBlock{ health = 60; hasInventory = true; itemCapacity = 90; - liquidCapacity = 21f; + liquidCapacity = 20f; } @Override diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/PowerSmelter.java b/core/src/io/anuke/mindustry/world/blocks/types/production/PowerSmelter.java index fe2b78b966..f55f3539a6 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/PowerSmelter.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/PowerSmelter.java @@ -1,28 +1,28 @@ package io.anuke.mindustry.world.blocks.types.production; +import com.badlogic.gdx.utils.Array; +import com.badlogic.gdx.utils.ObjectSet; import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.graphics.Fx; import io.anuke.mindustry.resource.Item; -import io.anuke.mindustry.resource.ItemStack; import io.anuke.mindustry.world.BarType; import io.anuke.mindustry.world.BlockBar; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.blocks.types.PowerBlock; -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.ucore.util.Strings; -import java.util.Arrays; - public class PowerSmelter extends PowerBlock { protected final int timerDump = timers++; protected final int timerCraft = timers++; - protected ItemStack[] inputs; - protected Item result; + /**Recipe format: + * First item in each array: result + * Everything else in each array: requirements. Can have duplicates.*/ + protected Item[][] recipes; protected float powerDrain = 0.01f; protected float heatUpTime = 80f; @@ -46,17 +46,35 @@ public class PowerSmelter extends PowerBlock { super.setBars(); bars.remove(BarType.inventory); - for(ItemStack item : inputs){ - bars.add(new BlockBar(BarType.inventory, true, tile -> (float)tile.entity.inventory.getItem(item.item)/capacity)); + if(true) return; + + //TODO + + ObjectSet set = new ObjectSet<>(); + + for(Item[] items : recipes){ + for(int i = 1; i < items.length; i ++) { + set.add(items[i]); + } + } + + Array items = new Array<>(); + set.forEach(items::add); + + items.sort(); + + for(Item item : items){ + bars.add(new BlockBar(BarType.inventory, true, tile -> (float) tile.entity.inventory.getItem(item) / capacity)); } } @Override public void setStats(){ super.setStats(); - stats.add("input", Arrays.toString(inputs)); + //TODO input/outputs + // stats.add("input", Arrays.toString(inputs)); stats.add("powersecond", Strings.toFixed(powerDrain*60f, 2)); - stats.add("output", result); + //stats.add("output", result); stats.add("fuelduration", Strings.toFixed(burnDuration/60f, 1)); stats.add("maxoutputsecond", Strings.toFixed(60f/craftTime, 1)); stats.add("inputcapacity", capacity); @@ -65,6 +83,7 @@ public class PowerSmelter extends PowerBlock { @Override public void update(Tile tile){ + /* PowerSmelterEntity entity = tile.entity(); if(entity.timer.get(timerDump, 5) && entity.inventory.hasItem(result)){ @@ -102,17 +121,20 @@ public class PowerSmelter extends PowerBlock { } offloadNear(tile, result); - Effects.effect(craftEffect, entity); + Effects.effect(craftEffect, entity);*/ } @Override public boolean acceptItem(Item item, Tile tile, Tile source){ boolean isInput = false; - for(ItemStack req : inputs){ - if(req.item == item){ - isInput = true; - break; + out: + for(Item[] items : recipes){ + for(int i = 1; i < items.length; i ++){ + if(items[i] == item){ + isInput = true; + break out; + } } } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/Pump.java b/core/src/io/anuke/mindustry/world/blocks/types/production/Pump.java index 2098a7617c..da3711ccb9 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/Pump.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/Pump.java @@ -21,6 +21,7 @@ public class Pump extends LiquidBlock{ layer = Layer.overlay; liquidFlowFactor = 3f; group = BlockGroup.liquids; + liquidRegion = "pump-liquid"; } @Override @@ -36,11 +37,11 @@ public class Pump extends LiquidBlock{ @Override public void draw(Tile tile){ - Draw.rect(name(), tile.worldx(), tile.worldy()); + Draw.rect(name(), tile.drawx(), tile.drawy()); Draw.color(tile.entity.liquid.liquid.color); Draw.alpha(tile.entity.liquid.amount / liquidCapacity); - Draw.rect("blank", tile.worldx(), tile.worldy(), 2, 2); + Draw.rect(liquidRegion, tile.drawx(), tile.drawy()); Draw.color(); } @@ -57,7 +58,7 @@ public class Pump extends LiquidBlock{ @Override public void drawLayer(Tile tile){ Draw.colorl(0.85f + Mathf.absin(Timers.time(), 6f, 0.15f)); - Draw.rect("cross-"+size, tile.worldx(), tile.worldy()); + Draw.rect("cross-"+size, tile.drawx(), tile.drawy()); Draw.color(); } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/SolidPump.java b/core/src/io/anuke/mindustry/world/blocks/types/production/SolidPump.java new file mode 100644 index 0000000000..386b9c0323 --- /dev/null +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/SolidPump.java @@ -0,0 +1,64 @@ +package io.anuke.mindustry.world.blocks.types.production; + +import com.badlogic.gdx.utils.Array; +import io.anuke.mindustry.resource.Liquid; +import io.anuke.mindustry.world.Tile; +import io.anuke.ucore.core.Timers; + +/**Pump that makes liquid from solids and takes in power. Only works on solid floor blocks.*/ +public class SolidPump extends Pump { + protected Liquid result = Liquid.water; + protected float powerUse = 0.1f; + + protected final Array drawTiles = new Array<>(); + + public SolidPump(String name){ + super(name); + hasPower = true; + liquidRegion = name + "-liquid"; + } + + @Override + public void update(Tile tile){ + float used = Math.min(powerUse * Timers.delta(), powerCapacity); + + float fraction = 0f; + + if(isMultiblock()){ + for(Tile other : tile.getLinkedTiles(tempTiles)){ + if(isValid(other)){ + fraction += 1f/ size; + } + } + }else{ + if(isValid(tile)) fraction = 1f; + } + + if(tile.entity.power.amount >= used){ + float maxPump = Math.min(liquidCapacity - tile.entity.liquid.amount, pumpAmount * Timers.delta() * fraction); + tile.entity.liquid.liquid = result; + tile.entity.liquid.amount += maxPump; + tile.entity.power.amount -= used; + } + + tryDumpLiquid(tile); + } + + @Override + public boolean isLayer(Tile tile) { + if(isMultiblock()){ + for(Tile other : tile.getLinkedTiles(drawTiles)){ + if(isValid(other)){ + return false; + } + } + return true; + }else{ + return !isValid(tile); + } + } + + protected boolean isValid(Tile tile){ + return !tile.floor().liquid; + } +}