diff --git a/core/assets-raw/sprites/units/dagger.png b/core/assets-raw/sprites/units/dagger.png index 25474f4e5a..ccce8b0729 100644 Binary files a/core/assets-raw/sprites/units/dagger.png and b/core/assets-raw/sprites/units/dagger.png differ diff --git a/core/assets-raw/sprites/units/drone.png b/core/assets-raw/sprites/units/drone.png index 18367666ce..75a86d9cdd 100644 Binary files a/core/assets-raw/sprites/units/drone.png and b/core/assets-raw/sprites/units/drone.png differ diff --git a/core/assets-raw/sprites/units/fabricator.png b/core/assets-raw/sprites/units/fabricator.png index 10d9e47b98..ab23162064 100644 Binary files a/core/assets-raw/sprites/units/fabricator.png and b/core/assets-raw/sprites/units/fabricator.png differ diff --git a/core/assets-raw/sprites/units/interceptor.png b/core/assets-raw/sprites/units/interceptor.png index d33f701bb9..b0da8131f2 100644 Binary files a/core/assets-raw/sprites/units/interceptor.png and b/core/assets-raw/sprites/units/interceptor.png differ diff --git a/core/assets-raw/sprites/units/monsoon.png b/core/assets-raw/sprites/units/monsoon.png index 2c89a57c48..bed8802a5b 100644 Binary files a/core/assets-raw/sprites/units/monsoon.png and b/core/assets-raw/sprites/units/monsoon.png differ diff --git a/core/assets-raw/sprites/units/power-cell.png b/core/assets-raw/sprites/units/power-cell.png new file mode 100644 index 0000000000..cc8ea4f2dc Binary files /dev/null and b/core/assets-raw/sprites/units/power-cell.png differ diff --git a/core/assets-raw/sprites/units/titan.png b/core/assets-raw/sprites/units/titan.png index 63dcb6f8e3..a11d23d604 100644 Binary files a/core/assets-raw/sprites/units/titan.png and b/core/assets-raw/sprites/units/titan.png differ diff --git a/core/assets/sprites/sprites.atlas b/core/assets/sprites/sprites.atlas index 4bde4b30c4..6f31aaff97 100644 --- a/core/assets/sprites/sprites.atlas +++ b/core/assets/sprites/sprites.atlas @@ -13,287 +13,287 @@ background index: -1 bridge-conveyor-arrow rotate: false - xy: 425, 37 + xy: 823, 258 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridge-conveyor-bridge rotate: false - xy: 425, 27 + xy: 813, 238 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridge-conveyor-end rotate: false - xy: 425, 17 + xy: 823, 248 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-0-1 rotate: false - xy: 813, 188 + xy: 843, 258 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-0-2 rotate: false - xy: 823, 198 + xy: 843, 248 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-0-3 rotate: false - xy: 823, 188 + xy: 843, 238 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-1-0 rotate: false - xy: 833, 268 + xy: 843, 228 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-1-1 rotate: false - xy: 833, 258 + xy: 843, 218 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-1-2 rotate: false - xy: 833, 248 + xy: 843, 208 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-1-3 rotate: false - xy: 833, 238 + xy: 843, 198 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-2-0 rotate: false - xy: 833, 228 + xy: 843, 188 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-2-1 rotate: false - xy: 833, 218 + xy: 853, 286 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-2-2 rotate: false - xy: 833, 208 + xy: 863, 281 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-2-3 rotate: false - xy: 833, 198 + xy: 853, 276 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-3-0 rotate: false - xy: 833, 188 + xy: 853, 266 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-3-1 rotate: false - xy: 841, 278 + xy: 863, 271 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-3-2 rotate: false - xy: 843, 268 + xy: 853, 256 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-3-3 rotate: false - xy: 843, 258 + xy: 863, 261 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-4-0 rotate: false - xy: 843, 248 + xy: 853, 246 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-4-1 rotate: false - xy: 843, 238 + xy: 863, 251 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-4-2 rotate: false - xy: 843, 228 + xy: 853, 236 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-4-3 rotate: false - xy: 843, 218 + xy: 863, 241 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-0-1 rotate: false - xy: 429, 104 + xy: 943, 283 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-0-2 rotate: false - xy: 449, 114 + xy: 943, 273 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-0-3 rotate: false - xy: 439, 104 + xy: 953, 283 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-1-0 rotate: false - xy: 459, 114 + xy: 943, 263 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-1-1 rotate: false - xy: 449, 104 + xy: 953, 273 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-1-2 rotate: false - xy: 459, 104 + xy: 963, 283 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-1-3 rotate: false - xy: 469, 114 + xy: 943, 253 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-2-0 rotate: false - xy: 469, 104 + xy: 953, 263 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-2-1 rotate: false - xy: 427, 94 + xy: 963, 273 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-2-2 rotate: false - xy: 437, 94 + xy: 973, 283 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-2-3 rotate: false - xy: 447, 94 + xy: 943, 243 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-3-0 rotate: false - xy: 457, 94 + xy: 953, 253 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-3-1 rotate: false - xy: 467, 94 + xy: 963, 263 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-3-2 rotate: false - xy: 428, 84 + xy: 973, 273 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-3-3 rotate: false - xy: 428, 74 + xy: 983, 283 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-4-0 rotate: false - xy: 438, 84 + xy: 943, 233 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-4-1 rotate: false - xy: 428, 64 + xy: 953, 243 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-4-2 rotate: false - xy: 438, 74 + xy: 963, 253 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-4-3 rotate: false - xy: 448, 84 + xy: 973, 263 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -307,21 +307,21 @@ mass-driver-turret index: -1 phase-conveyor-arrow rotate: false - xy: 1013, 221 + xy: 933, 277 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 phase-conveyor-bridge rotate: false - xy: 983, 189 + xy: 883, 217 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 phase-conveyor-end rotate: false - xy: 993, 199 + xy: 893, 227 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -552,7 +552,7 @@ blackstone2 index: -1 blackstone3 rotate: false - xy: 1015, 371 + xy: 677, 194 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -566,553 +566,553 @@ blackstoneedge index: -1 coal1 rotate: false - xy: 425, 7 + xy: 813, 228 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 coal2 rotate: false - xy: 813, 288 + xy: 823, 238 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 coal3 rotate: false - xy: 823, 288 + xy: 813, 218 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt2 rotate: false - xy: 873, 283 + xy: 863, 211 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt3 rotate: false - xy: 883, 283 + xy: 853, 196 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirtedge rotate: false - xy: 905, 307 + xy: 921, 307 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 generic-cliff-edge rotate: false - xy: 863, 273 + xy: 873, 251 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ice-cliff-edge rotate: false - xy: 863, 273 + xy: 873, 251 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 generic-cliff-edge-1 rotate: false - xy: 853, 256 + xy: 873, 241 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ice-cliff-edge-1 rotate: false - xy: 853, 256 + xy: 873, 241 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 generic-cliff-edge-2 rotate: false - xy: 863, 263 + xy: 873, 231 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ice-cliff-edge-2 rotate: false - xy: 863, 263 + xy: 873, 231 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 generic-cliff-side rotate: false - xy: 873, 273 + xy: 873, 221 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ice-cliff-side rotate: false - xy: 873, 273 + xy: 873, 221 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass-cliff-edge rotate: false - xy: 873, 263 + xy: 873, 191 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass-cliff-edge-1 rotate: false - xy: 883, 273 + xy: 873, 181 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass-cliff-edge-2 rotate: false - xy: 853, 236 + xy: 413, 7 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass-cliff-side rotate: false - xy: 863, 243 + xy: 423, 7 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass2 rotate: false - xy: 853, 246 + xy: 873, 211 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass3 rotate: false - xy: 863, 253 + xy: 873, 201 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grassedge rotate: false - xy: 891, 293 + xy: 213, 19 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 ice2 rotate: false - xy: 883, 263 + xy: 187, 9 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ice3 rotate: false - xy: 893, 273 + xy: 197, 9 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 iceedge rotate: false - xy: 919, 293 + xy: 241, 19 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 icerock2 rotate: false - xy: 853, 226 + xy: 207, 9 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icerockshadow1 rotate: false - xy: 863, 233 + xy: 217, 9 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rockshadow1 rotate: false - xy: 863, 233 + xy: 217, 9 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icerockshadow2 rotate: false - xy: 873, 243 + xy: 227, 9 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rockshadow2 rotate: false - xy: 873, 243 + xy: 227, 9 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lavaedge rotate: false - xy: 961, 303 + xy: 283, 19 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 lead1 rotate: false - xy: 893, 233 + xy: 459, 114 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lead2 rotate: false - xy: 903, 243 + xy: 449, 104 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lead3 rotate: false - xy: 913, 253 + xy: 459, 104 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor2 rotate: false - xy: 883, 203 + xy: 438, 84 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor3 rotate: false - xy: 893, 213 + xy: 428, 64 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor4 rotate: false - xy: 903, 223 + xy: 438, 74 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor5 rotate: false - xy: 913, 233 + xy: 448, 84 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor6 rotate: false - xy: 923, 243 + xy: 438, 64 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalflooredge rotate: false - xy: 989, 289 + xy: 367, 19 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 oiledge rotate: false - xy: 199, 19 + xy: 1003, 353 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 rock2 rotate: false - xy: 1003, 181 + xy: 913, 227 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand2 rotate: false - xy: 581, 182 + xy: 933, 247 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand3 rotate: false - xy: 581, 172 + xy: 883, 187 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sandedge rotate: false - xy: 227, 19 + xy: 1005, 325 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 shrubshadow rotate: false - xy: 247, 9 + xy: 923, 217 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow2 rotate: false - xy: 257, 9 + xy: 933, 227 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow3 rotate: false - xy: 267, 9 + xy: 903, 187 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snowedge rotate: false - xy: 255, 19 + xy: 963, 303 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 spaceedge rotate: false - xy: 269, 19 + xy: 977, 303 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 stone-cliff-edge rotate: false - xy: 357, 11 + xy: 903, 177 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone-cliff-edge-1 rotate: false - xy: 357, 1 + xy: 913, 177 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone-cliff-edge-2 rotate: false - xy: 367, 11 + xy: 923, 177 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone-cliff-side rotate: false - xy: 367, 1 + xy: 933, 177 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone2 rotate: false - xy: 347, 11 + xy: 883, 177 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone3 rotate: false - xy: 347, 1 + xy: 893, 177 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stoneedge rotate: false - xy: 283, 19 + xy: 991, 303 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 thorium1 rotate: false - xy: 377, 11 + xy: 882, 167 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 thorium2 rotate: false - xy: 377, 1 + xy: 892, 167 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 thorium3 rotate: false - xy: 419, 114 + xy: 902, 167 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium1 rotate: false - xy: 419, 104 + xy: 912, 167 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium2 rotate: false - xy: 429, 114 + xy: 922, 167 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium3 rotate: false - xy: 439, 114 + xy: 932, 167 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 tungsten1 rotate: false - xy: 448, 74 + xy: 943, 223 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 tungsten2 rotate: false - xy: 458, 84 + xy: 953, 233 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 tungsten3 rotate: false - xy: 448, 64 + xy: 963, 243 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 water-cliff-edge rotate: false - xy: 458, 74 + xy: 973, 253 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 water-cliff-edge-1 rotate: false - xy: 458, 64 + xy: 983, 263 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 water-cliff-edge-2 rotate: false - xy: 468, 84 + xy: 943, 213 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 water-cliff-side rotate: false - xy: 468, 74 + xy: 953, 223 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 wateredge rotate: false - xy: 311, 19 + xy: 1005, 297 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 block-border rotate: false - xy: 1005, 327 + xy: 662, 182 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-elevation rotate: false - xy: 1015, 321 + xy: 672, 182 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 combustion-generator-top rotate: false - xy: 1015, 321 + xy: 672, 182 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-middle rotate: false - xy: 415, 47 + xy: 821, 278 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pump-liquid rotate: false - xy: 415, 47 + xy: 821, 278 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-slope rotate: false - xy: 415, 37 + xy: 813, 268 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 border rotate: false - xy: 415, 27 + xy: 831, 278 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-liquid rotate: false - xy: 813, 228 + xy: 833, 238 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 cross-1 rotate: false - xy: 843, 208 + xy: 853, 226 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1140,7 +1140,7 @@ cross-4 index: -1 enemyspawn rotate: false - xy: 853, 266 + xy: 873, 261 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1154,21 +1154,21 @@ nuclearreactor-shadow index: -1 place-arrow rotate: false - xy: 1003, 201 + xy: 903, 237 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 playerspawn rotate: false - xy: 1013, 211 + xy: 913, 247 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ripples rotate: false - xy: 532, 185 + xy: 641, 192 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1217,7 +1217,7 @@ rubble-3-1 index: -1 shadow-1 rotate: false - xy: 557, 194 + xy: 653, 192 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1259,14 +1259,14 @@ shadow-6 index: -1 shadow-corner rotate: false - xy: 569, 194 + xy: 665, 192 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 shadow-round-1 rotate: false - xy: 581, 192 + xy: 557, 182 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1294,154 +1294,154 @@ shadow-rounded-2 index: -1 bridge-conduit-arrow rotate: false - xy: 415, 17 + xy: 813, 258 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridge-conduit-bridge rotate: false - xy: 415, 7 + xy: 823, 268 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridge-conduit-end rotate: false - xy: 425, 47 + xy: 813, 248 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom rotate: false - xy: 813, 268 + xy: 813, 198 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom-0 rotate: false - xy: 831, 278 + xy: 823, 208 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom-1 rotate: false - xy: 813, 258 + xy: 813, 188 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom-2 rotate: false - xy: 823, 268 + xy: 823, 198 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom-3 rotate: false - xy: 813, 248 + xy: 823, 188 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom-4 rotate: false - xy: 823, 258 + xy: 833, 268 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom-5 rotate: false - xy: 813, 238 + xy: 833, 258 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom-6 rotate: false - xy: 823, 248 + xy: 833, 248 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top-0 rotate: false - xy: 823, 238 + xy: 833, 228 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top-1 rotate: false - xy: 813, 218 + xy: 833, 218 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top-2 rotate: false - xy: 823, 228 + xy: 833, 208 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top-3 rotate: false - xy: 813, 208 + xy: 833, 198 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top-4 rotate: false - xy: 823, 218 + xy: 833, 188 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top-5 rotate: false - xy: 813, 198 + xy: 841, 278 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top-6 rotate: false - xy: 823, 208 + xy: 843, 268 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-router rotate: false - xy: 903, 233 + xy: 457, 94 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-router-bottom rotate: false - xy: 913, 243 + xy: 467, 94 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-router-liquid rotate: false - xy: 923, 253 + xy: 428, 84 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-router-top rotate: false - xy: 933, 263 + xy: 428, 74 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1469,70 +1469,70 @@ liquid-tank-top index: -1 phase-conduit-arrow rotate: false - xy: 983, 199 + xy: 903, 247 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 phase-conduit-bridge rotate: false - xy: 993, 209 + xy: 913, 257 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 phase-conduit-end rotate: false - xy: 1003, 211 + xy: 923, 267 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulse-conduit-top-0 rotate: false - xy: 993, 189 + xy: 923, 257 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulse-conduit-top-1 rotate: false - xy: 1003, 191 + xy: 933, 267 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulse-conduit-top-2 rotate: false - xy: 1013, 201 + xy: 883, 207 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulse-conduit-top-3 rotate: false - xy: 1013, 191 + xy: 893, 217 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulse-conduit-top-4 rotate: false - xy: 943, 179 + xy: 903, 227 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulse-conduit-top-5 rotate: false - xy: 953, 179 + xy: 913, 237 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulse-conduit-top-6 rotate: false - xy: 963, 179 + xy: 923, 247 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1637,7 +1637,7 @@ nuclear-reactor-lights index: -1 rtg-generator-top rotate: false - xy: 1013, 181 + xy: 923, 237 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1812,14 +1812,14 @@ cultivator-top index: -1 lavasmelter rotate: false - xy: 883, 223 + xy: 439, 104 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 oilrefinery rotate: false - xy: 923, 223 + xy: 435, 54 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1861,21 +1861,21 @@ poweralloysmelter-top index: -1 pulverizer rotate: false - xy: 973, 179 + xy: 933, 257 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulverizer-rotator rotate: false - xy: 983, 179 + xy: 883, 197 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 separator-liquid rotate: false - xy: 227, 9 + xy: 903, 197 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1896,21 +1896,21 @@ core-top index: -1 sortedunloader rotate: false - xy: 317, 9 + xy: 923, 197 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-1 rotate: false - xy: 1005, 337 + xy: 642, 182 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-1-top rotate: false - xy: 1015, 331 + xy: 652, 182 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1980,7 +1980,7 @@ cyclone index: -1 duo rotate: false - xy: 853, 276 + xy: 873, 271 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2001,14 +2001,14 @@ spectre index: -1 hail rotate: false - xy: 873, 253 + xy: 177, 9 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 scatter rotate: false - xy: 873, 253 + xy: 177, 9 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2085,14 +2085,14 @@ salvo-panel-right index: -1 scorch rotate: false - xy: 207, 9 + xy: 933, 237 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 scorch-shoot rotate: false - xy: 217, 9 + xy: 893, 187 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2246,7 +2246,14 @@ reconstructor-open index: -1 repair-point-turret rotate: false - xy: 993, 179 + xy: 893, 207 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +resupply-point + rotate: false + xy: 903, 217 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2274,7 +2281,7 @@ door-large-open index: -1 door-open rotate: false - xy: 933, 283 + xy: 873, 281 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2330,35 +2337,35 @@ clear index: -1 command-attack rotate: false - xy: 811, 278 + xy: 823, 228 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 command-idle rotate: false - xy: 833, 288 + xy: 813, 208 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 command-retreat rotate: false - xy: 821, 278 + xy: 823, 218 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 enemyarrow rotate: false - xy: 544, 185 + xy: 403, 8 size: 8, 7 orig: 8, 7 offset: 0, 0 index: -1 error rotate: false - xy: 933, 307 + xy: 863, 291 size: 12, 12 orig: 12, 12 offset: 0, 0 @@ -2400,14 +2407,14 @@ minelaser-end index: -1 missile rotate: false - xy: 593, 193 + xy: 546, 187 size: 9, 9 orig: 9, 9 offset: 0, 0 index: -1 missile-back rotate: false - xy: 604, 193 + xy: 569, 183 size: 9, 9 orig: 9, 9 offset: 0, 0 @@ -2449,21 +2456,21 @@ scorch5 index: -1 shell rotate: false - xy: 615, 193 + xy: 580, 181 size: 9, 9 orig: 9, 9 offset: 0, 0 index: -1 shell-back rotate: false - xy: 626, 193 + xy: 591, 181 size: 9, 9 orig: 9, 9 offset: 0, 0 index: -1 shot rotate: false - xy: 237, 9 + xy: 913, 207 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2477,7 +2484,7 @@ transfer index: -1 transfer-arrow rotate: false - xy: 438, 64 + xy: 983, 273 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2491,28 +2498,28 @@ transfer-end index: -1 blackstone-cliff-edge rotate: false - xy: 1015, 361 + xy: 602, 182 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstone-cliff-edge-1 rotate: false - xy: 1015, 351 + xy: 612, 182 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstone-cliff-edge-2 rotate: false - xy: 1005, 347 + xy: 622, 182 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blackstone-cliff-side rotate: false - xy: 1015, 341 + xy: 632, 182 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2540,28 +2547,28 @@ block-icon-blast-drill index: -1 block-icon-bridge-conduit rotate: false - xy: 1005, 317 + xy: 388, 71 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridge-conduit rotate: false - xy: 1005, 317 + xy: 388, 71 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-bridge-conveyor rotate: false - xy: 1015, 311 + xy: 398, 73 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridge-conveyor rotate: false - xy: 1015, 311 + xy: 398, 73 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2575,14 +2582,14 @@ block-icon-carbide-drill index: -1 block-icon-carbide-wall rotate: false - xy: 1015, 301 + xy: 481, 174 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 carbide-wall rotate: false - xy: 1015, 301 + xy: 481, 174 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2617,14 +2624,14 @@ centrifuge index: -1 block-icon-combustion-generator rotate: false - xy: 1015, 291 + xy: 491, 175 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 combustion-generator rotate: false - xy: 1015, 291 + xy: 491, 175 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2645,21 +2652,21 @@ command-center index: -1 block-icon-conduit rotate: false - xy: 1015, 281 + xy: 501, 175 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-conveyor rotate: false - xy: 637, 194 + xy: 511, 175 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conveyor-0-0 rotate: false - xy: 637, 194 + xy: 511, 175 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2722,42 +2729,42 @@ dart-ship-factory index: -1 block-icon-deepwater rotate: false - xy: 647, 194 + xy: 521, 175 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 deepwater rotate: false - xy: 647, 194 + xy: 521, 175 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-deflector-wall rotate: false - xy: 657, 194 + xy: 531, 175 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 deflector-wall rotate: false - xy: 657, 194 + xy: 531, 175 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 phase-wall rotate: false - xy: 657, 194 + xy: 531, 175 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-phase-wall rotate: false - xy: 657, 194 + xy: 531, 175 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2806,14 +2813,14 @@ delta-mech-factory index: -1 block-icon-dirt rotate: false - xy: 667, 194 + xy: 481, 164 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt1 rotate: false - xy: 667, 194 + xy: 481, 164 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2834,14 +2841,14 @@ distributor index: -1 block-icon-door rotate: false - xy: 677, 194 + xy: 491, 165 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 door rotate: false - xy: 677, 194 + xy: 491, 165 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2869,21 +2876,21 @@ block-icon-drone-pad index: -1 block-icon-drop-point rotate: false - xy: 481, 174 + xy: 501, 165 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 drop-point rotate: false - xy: 481, 174 + xy: 501, 165 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-duo rotate: false - xy: 491, 175 + xy: 511, 165 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2911,63 +2918,63 @@ block-icon-fusion-reactor index: -1 block-icon-grass rotate: false - xy: 501, 175 + xy: 521, 165 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass1 rotate: false - xy: 501, 175 + xy: 521, 165 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-hail rotate: false - xy: 511, 175 + xy: 531, 165 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-ice rotate: false - xy: 521, 175 + xy: 682, 184 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ice1 rotate: false - xy: 521, 175 + xy: 682, 184 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-icerock rotate: false - xy: 531, 175 + xy: 692, 185 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icerock1 rotate: false - xy: 531, 175 + xy: 692, 185 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-incinerator rotate: false - xy: 481, 164 + xy: 702, 185 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 incinerator rotate: false - xy: 481, 164 + xy: 702, 185 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2981,28 +2988,28 @@ block-icon-interceptor-pad index: -1 block-icon-itemsource rotate: false - xy: 491, 165 + xy: 712, 185 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 itemsource rotate: false - xy: 491, 165 + xy: 712, 185 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-itemvoid rotate: false - xy: 501, 165 + xy: 541, 175 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 itemvoid rotate: false - xy: 501, 165 + xy: 541, 175 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3023,14 +3030,14 @@ javelin-ship-factory index: -1 block-icon-junction rotate: false - xy: 511, 165 + xy: 541, 165 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 junction rotate: false - xy: 511, 165 + xy: 541, 165 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3051,35 +3058,35 @@ block-icon-laser-drill index: -1 block-icon-lava rotate: false - xy: 521, 165 + xy: 551, 172 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lava rotate: false - xy: 521, 165 + xy: 551, 172 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-liquid-junction rotate: false - xy: 531, 165 + xy: 561, 172 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-junction rotate: false - xy: 531, 165 + xy: 561, 172 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-liquid-router rotate: false - xy: 388, 71 + xy: 551, 162 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3093,14 +3100,14 @@ block-icon-liquid-tank index: -1 block-icon-liquidsource rotate: false - xy: 398, 73 + xy: 561, 162 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquidsource rotate: false - xy: 398, 73 + xy: 561, 162 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3121,14 +3128,14 @@ mass-driver index: -1 block-icon-mechanical-pump rotate: false - xy: 541, 175 + xy: 409, 107 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 mechanical-pump rotate: false - xy: 541, 175 + xy: 409, 107 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3142,28 +3149,28 @@ block-icon-meltdown index: -1 block-icon-melter rotate: false - xy: 541, 165 + xy: 409, 97 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 melter rotate: false - xy: 541, 165 + xy: 409, 97 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-metalfloor rotate: false - xy: 554, 184 + xy: 407, 87 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor1 rotate: false - xy: 554, 184 + xy: 407, 87 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3191,14 +3198,14 @@ nuclear-reactor index: -1 block-icon-oil rotate: false - xy: 564, 184 + xy: 408, 77 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 oil rotate: false - xy: 564, 184 + xy: 408, 77 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3212,42 +3219,42 @@ block-icon-oil-extractor index: -1 block-icon-overflow-gate rotate: false - xy: 551, 174 + xy: 408, 67 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 overflow-gate rotate: false - xy: 551, 174 + xy: 408, 67 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-phase-conduit rotate: false - xy: 561, 174 + xy: 398, 63 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 phase-conduit rotate: false - xy: 561, 174 + xy: 398, 63 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-phase-conveyor rotate: false - xy: 551, 164 + xy: 395, 53 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 phase-conveyor rotate: false - xy: 551, 164 + xy: 395, 53 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3282,14 +3289,14 @@ plastanium-compressor index: -1 block-icon-power-node rotate: false - xy: 561, 164 + xy: 395, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 power-node rotate: false - xy: 561, 164 + xy: 395, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3310,42 +3317,42 @@ power-node-large index: -1 block-icon-powerinfinite rotate: false - xy: 571, 174 + xy: 395, 33 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 powerinfinite rotate: false - xy: 571, 174 + xy: 395, 33 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-powervoid rotate: false - xy: 571, 164 + xy: 408, 57 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 powervoid rotate: false - xy: 571, 164 + xy: 408, 57 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-pulse-conduit rotate: false - xy: 409, 107 + xy: 405, 47 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-pulverizer rotate: false - xy: 409, 97 + xy: 405, 37 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3408,28 +3415,14 @@ reconstructor index: -1 block-icon-repair-point rotate: false - xy: 407, 87 + xy: 395, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 repair-point rotate: false - xy: 407, 87 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-resupply-point - rotate: false - xy: 408, 77 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -resupply-point - rotate: false - xy: 408, 77 + xy: 395, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3443,14 +3436,14 @@ block-icon-ripple index: -1 block-icon-rock rotate: false - xy: 408, 67 + xy: 405, 27 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rock1 rotate: false - xy: 408, 67 + xy: 405, 27 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3471,14 +3464,14 @@ rotary-pump index: -1 block-icon-rtg-generator rotate: false - xy: 398, 63 + xy: 393, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rtg-generator rotate: false - xy: 398, 63 + xy: 393, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3492,49 +3485,49 @@ block-icon-salvo index: -1 block-icon-sand rotate: false - xy: 395, 53 + xy: 405, 17 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand1 rotate: false - xy: 395, 53 + xy: 405, 17 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-scorch rotate: false - xy: 395, 43 + xy: 417, 87 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-separator rotate: false - xy: 408, 57 + xy: 418, 77 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 separator rotate: false - xy: 408, 57 + xy: 418, 77 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-shrub rotate: false - xy: 405, 47 + xy: 418, 67 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shrub rotate: false - xy: 405, 47 + xy: 418, 67 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3555,42 +3548,42 @@ silicon-smelter index: -1 block-icon-smelter rotate: false - xy: 405, 37 + xy: 418, 57 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 smelter rotate: false - xy: 405, 37 + xy: 418, 57 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-snow rotate: false - xy: 395, 33 + xy: 415, 47 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow1 rotate: false - xy: 395, 33 + xy: 415, 47 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-solar-panel rotate: false - xy: 385, 31 + xy: 415, 37 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 solar-panel rotate: false - xy: 385, 31 + xy: 415, 37 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3611,42 +3604,42 @@ solar-panel-large index: -1 block-icon-solidifer rotate: false - xy: 385, 21 + xy: 415, 27 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 solidifer rotate: false - xy: 385, 21 + xy: 415, 27 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-sorter rotate: false - xy: 395, 23 + xy: 415, 17 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sorter rotate: false - xy: 395, 23 + xy: 415, 17 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-space rotate: false - xy: 405, 27 + xy: 425, 47 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 space rotate: false - xy: 405, 27 + xy: 425, 47 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3660,28 +3653,28 @@ block-icon-spectre index: -1 block-icon-splitter rotate: false - xy: 405, 17 + xy: 425, 37 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 splitter rotate: false - xy: 405, 17 + xy: 425, 37 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-stone rotate: false - xy: 395, 13 + xy: 425, 27 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone1 rotate: false - xy: 395, 13 + xy: 425, 27 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3723,14 +3716,14 @@ thermal-pump index: -1 block-icon-thorium-wall rotate: false - xy: 405, 7 + xy: 425, 17 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 thorium-wall rotate: false - xy: 405, 7 + xy: 425, 17 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3758,21 +3751,21 @@ block-icon-titan-pad index: -1 block-icon-titanium-conveyor rotate: false - xy: 417, 87 + xy: 813, 288 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor-0-0 rotate: false - xy: 417, 87 + xy: 813, 288 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium-conveyor rotate: false - xy: 417, 87 + xy: 813, 288 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3786,14 +3779,14 @@ block-icon-tungsten-drill index: -1 block-icon-tungsten-wall rotate: false - xy: 418, 77 + xy: 823, 288 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 tungsten-wall rotate: false - xy: 418, 77 + xy: 823, 288 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3828,14 +3821,14 @@ turbine-generator index: -1 block-icon-unloader rotate: false - xy: 418, 67 + xy: 811, 278 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 unloader rotate: false - xy: 418, 67 + xy: 811, 278 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3870,14 +3863,14 @@ warp-gate index: -1 block-icon-water rotate: false - xy: 418, 57 + xy: 833, 288 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 water rotate: false - xy: 418, 57 + xy: 833, 288 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3898,938 +3891,938 @@ block-icon-wave index: -1 deepwater-cliff-edge rotate: false - xy: 843, 198 + xy: 863, 231 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 deepwater-cliff-edge-1 rotate: false - xy: 843, 188 + xy: 853, 216 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 deepwater-cliff-edge-2 rotate: false - xy: 853, 286 + xy: 863, 221 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 deepwater-cliff-side rotate: false - xy: 863, 283 + xy: 853, 206 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt-cliff-edge rotate: false - xy: 893, 283 + xy: 863, 201 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt-cliff-edge-1 rotate: false - xy: 903, 283 + xy: 853, 186 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt-cliff-edge-2 rotate: false - xy: 913, 283 + xy: 863, 191 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt-cliff-side rotate: false - xy: 923, 283 + xy: 863, 181 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lava-cliff-edge rotate: false - xy: 923, 273 + xy: 429, 114 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lava-cliff-edge-1 rotate: false - xy: 853, 196 + xy: 439, 114 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lava-cliff-edge-2 rotate: false - xy: 863, 203 + xy: 429, 104 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lava-cliff-side rotate: false - xy: 873, 213 + xy: 449, 114 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-icon-cryofluid rotate: false - xy: 933, 273 + xy: 469, 104 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-icon-lava rotate: false - xy: 873, 203 + xy: 427, 94 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-icon-oil rotate: false - xy: 883, 213 + xy: 437, 94 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-icon-water rotate: false - xy: 893, 223 + xy: 447, 94 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 mech-icon-alpha-mech rotate: false - xy: 975, 303 + xy: 297, 19 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 mech-icon-dart-ship rotate: false - xy: 989, 303 + xy: 311, 19 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 mech-icon-delta-mech rotate: false - xy: 947, 289 + xy: 325, 19 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 mech-icon-halberd-ship rotate: false - xy: 961, 289 + xy: 339, 19 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 mech-icon-trident-ship rotate: false - xy: 961, 289 + xy: 339, 19 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 mech-icon-omega-mech rotate: false - xy: 975, 289 + xy: 353, 19 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 mech-icon-tau-mech rotate: false - xy: 975, 289 + xy: 353, 19 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 metalfloor-cliff-edge rotate: false - xy: 933, 253 + xy: 448, 74 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor-cliff-edge-1 rotate: false - xy: 893, 203 + xy: 458, 84 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor-cliff-edge-2 rotate: false - xy: 903, 213 + xy: 448, 64 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor-cliff-side rotate: false - xy: 913, 223 + xy: 458, 74 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 oil-cliff-edge rotate: false - xy: 923, 233 + xy: 458, 64 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 oil-cliff-edge-1 rotate: false - xy: 933, 243 + xy: 468, 84 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 oil-cliff-edge-2 rotate: false - xy: 903, 203 + xy: 468, 74 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 oil-cliff-side rotate: false - xy: 913, 213 + xy: 468, 64 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-blackstone1 rotate: false - xy: 933, 233 + xy: 435, 44 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-blackstone2 rotate: false - xy: 913, 203 + xy: 445, 54 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-blackstone3 rotate: false - xy: 923, 213 + xy: 435, 34 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-grass1 rotate: false - xy: 933, 223 + xy: 445, 44 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-grass2 rotate: false - xy: 923, 203 + xy: 455, 54 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-grass3 rotate: false - xy: 933, 213 + xy: 435, 24 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-ice1 rotate: false - xy: 933, 203 + xy: 445, 34 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-ice2 rotate: false - xy: 853, 186 + xy: 455, 44 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-ice3 rotate: false - xy: 863, 193 + xy: 465, 54 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-sand1 rotate: false - xy: 873, 193 + xy: 445, 24 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-sand2 rotate: false - xy: 883, 193 + xy: 455, 34 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-sand3 rotate: false - xy: 893, 193 + xy: 465, 44 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-snow1 rotate: false - xy: 903, 193 + xy: 455, 24 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-snow2 rotate: false - xy: 913, 193 + xy: 465, 34 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-snow3 rotate: false - xy: 923, 193 + xy: 465, 24 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-stone1 rotate: false - xy: 933, 193 + xy: 435, 14 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-stone2 rotate: false - xy: 863, 183 + xy: 445, 14 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-coal-stone3 rotate: false - xy: 873, 183 + xy: 455, 14 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-blackstone1 rotate: false - xy: 883, 183 + xy: 465, 14 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-blackstone2 rotate: false - xy: 893, 183 + xy: 433, 4 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-blackstone3 rotate: false - xy: 903, 183 + xy: 443, 4 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-grass1 rotate: false - xy: 913, 183 + xy: 453, 4 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-grass2 rotate: false - xy: 923, 183 + xy: 463, 4 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-grass3 rotate: false - xy: 933, 183 + xy: 477, 94 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-ice1 rotate: false - xy: 943, 279 + xy: 478, 84 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-ice2 rotate: false - xy: 953, 279 + xy: 478, 74 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-ice3 rotate: false - xy: 943, 269 + xy: 478, 64 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-sand1 rotate: false - xy: 963, 279 + xy: 475, 54 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-sand2 rotate: false - xy: 943, 259 + xy: 475, 44 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-sand3 rotate: false - xy: 953, 269 + xy: 475, 34 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-snow1 rotate: false - xy: 973, 279 + xy: 475, 24 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-snow2 rotate: false - xy: 943, 249 + xy: 475, 14 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-snow3 rotate: false - xy: 953, 259 + xy: 473, 4 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-stone1 rotate: false - xy: 963, 269 + xy: 485, 54 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-stone2 rotate: false - xy: 983, 279 + xy: 485, 44 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-lead-stone3 rotate: false - xy: 993, 279 + xy: 485, 34 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-blackstone1 rotate: false - xy: 943, 239 + xy: 485, 24 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-blackstone2 rotate: false - xy: 953, 249 + xy: 485, 14 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-blackstone3 rotate: false - xy: 963, 259 + xy: 483, 4 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-grass1 rotate: false - xy: 973, 269 + xy: 722, 178 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-grass2 rotate: false - xy: 943, 229 + xy: 732, 178 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-grass3 rotate: false - xy: 953, 239 + xy: 742, 178 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-ice1 rotate: false - xy: 963, 249 + xy: 752, 178 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-ice2 rotate: false - xy: 973, 259 + xy: 762, 178 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-ice3 rotate: false - xy: 983, 269 + xy: 772, 178 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-sand1 rotate: false - xy: 943, 219 + xy: 782, 178 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-sand2 rotate: false - xy: 953, 229 + xy: 792, 178 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-sand3 rotate: false - xy: 963, 239 + xy: 802, 178 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-snow1 rotate: false - xy: 973, 249 + xy: 812, 178 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-snow2 rotate: false - xy: 983, 259 + xy: 822, 178 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-snow3 rotate: false - xy: 993, 269 + xy: 832, 178 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-stone1 rotate: false - xy: 1003, 271 + xy: 842, 178 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-stone2 rotate: false - xy: 943, 209 + xy: 852, 176 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-thorium-stone3 rotate: false - xy: 953, 219 + xy: 862, 171 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-blackstone1 rotate: false - xy: 963, 229 + xy: 872, 171 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-blackstone2 rotate: false - xy: 973, 239 + xy: 879, 297 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-blackstone3 rotate: false - xy: 983, 249 + xy: 889, 297 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-grass1 rotate: false - xy: 993, 259 + xy: 899, 297 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-grass2 rotate: false - xy: 1003, 261 + xy: 909, 297 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-grass3 rotate: false - xy: 1013, 271 + xy: 919, 297 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-ice1 rotate: false - xy: 943, 199 + xy: 929, 297 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-ice2 rotate: false - xy: 953, 209 + xy: 939, 297 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-ice3 rotate: false - xy: 963, 219 + xy: 949, 293 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-sand1 rotate: false - xy: 973, 229 + xy: 959, 293 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-sand2 rotate: false - xy: 983, 239 + xy: 969, 293 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-sand3 rotate: false - xy: 993, 249 + xy: 979, 293 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-snow1 rotate: false - xy: 1003, 251 + xy: 989, 293 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-snow2 rotate: false - xy: 1013, 261 + xy: 883, 287 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-snow3 rotate: false - xy: 943, 189 + xy: 883, 277 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-stone1 rotate: false - xy: 953, 199 + xy: 893, 287 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-stone2 rotate: false - xy: 963, 209 + xy: 883, 267 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-titanium-stone3 rotate: false - xy: 973, 219 + xy: 893, 277 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-blackstone1 rotate: false - xy: 983, 229 + xy: 903, 287 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-blackstone2 rotate: false - xy: 993, 239 + xy: 883, 257 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-blackstone3 rotate: false - xy: 1003, 241 + xy: 893, 267 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-grass1 rotate: false - xy: 1013, 251 + xy: 903, 277 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-grass2 rotate: false - xy: 953, 189 + xy: 913, 287 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-grass3 rotate: false - xy: 963, 199 + xy: 883, 247 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-ice1 rotate: false - xy: 973, 209 + xy: 893, 257 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-ice2 rotate: false - xy: 983, 219 + xy: 903, 267 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-ice3 rotate: false - xy: 993, 229 + xy: 913, 277 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-sand1 rotate: false - xy: 1003, 231 + xy: 923, 287 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-sand2 rotate: false - xy: 1013, 241 + xy: 883, 237 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-sand3 rotate: false - xy: 963, 189 + xy: 893, 247 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-snow1 rotate: false - xy: 973, 199 + xy: 903, 257 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-snow2 rotate: false - xy: 983, 209 + xy: 913, 267 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-snow3 rotate: false - xy: 993, 219 + xy: 923, 277 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-stone1 rotate: false - xy: 1003, 221 + xy: 933, 287 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-stone2 rotate: false - xy: 1013, 231 + xy: 883, 227 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ore-tungsten-stone3 rotate: false - xy: 973, 189 + xy: 893, 237 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand-cliff-edge rotate: false - xy: 581, 162 + xy: 893, 197 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand-cliff-edge-1 rotate: false - xy: 177, 9 + xy: 903, 207 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand-cliff-edge-2 rotate: false - xy: 187, 9 + xy: 913, 217 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand-cliff-side rotate: false - xy: 197, 9 + xy: 923, 227 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow-cliff-edge rotate: false - xy: 277, 9 + xy: 913, 197 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow-cliff-edge-1 rotate: false - xy: 287, 9 + xy: 923, 207 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow-cliff-edge-2 rotate: false - xy: 297, 9 + xy: 933, 217 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow-cliff-side rotate: false - xy: 307, 9 + xy: 913, 187 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 space-cliff-edge rotate: false - xy: 327, 11 + xy: 933, 207 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 space-cliff-edge-1 rotate: false - xy: 327, 1 + xy: 923, 187 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 space-cliff-edge-2 rotate: false - xy: 337, 11 + xy: 933, 197 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 space-cliff-side rotate: false - xy: 337, 1 + xy: 933, 187 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 unit-icon-dagger rotate: false - xy: 297, 19 + xy: 1005, 311 size: 12, 12 orig: 12, 12 offset: 0, 0 @@ -4843,112 +4836,112 @@ unit-icon-titan index: -1 item-biomatter rotate: false - xy: 903, 273 + xy: 257, 9 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-blast-compound rotate: false - xy: 853, 216 + xy: 267, 9 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-carbide rotate: false - xy: 863, 223 + xy: 277, 9 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-coal rotate: false - xy: 873, 233 + xy: 287, 9 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-lead rotate: false - xy: 883, 243 + xy: 297, 9 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-phase-matter rotate: false - xy: 893, 253 + xy: 307, 9 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-plastanium rotate: false - xy: 903, 263 + xy: 317, 9 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-pyratite rotate: false - xy: 913, 273 + xy: 327, 9 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-sand rotate: false - xy: 853, 206 + xy: 337, 9 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-silicon rotate: false - xy: 863, 213 + xy: 347, 9 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-stone rotate: false - xy: 873, 223 + xy: 357, 9 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-surge-alloy rotate: false - xy: 883, 233 + xy: 367, 9 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-thorium rotate: false - xy: 893, 243 + xy: 377, 7 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-titanium rotate: false - xy: 903, 253 + xy: 419, 114 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-tungsten rotate: false - xy: 913, 263 + xy: 419, 104 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquid-icon rotate: false - xy: 923, 263 + xy: 469, 114 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -5025,63 +5018,63 @@ dagger-leg index: -1 delta-mech rotate: false - xy: 877, 307 + xy: 893, 307 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 delta-mech-leg rotate: false - xy: 891, 307 + xy: 907, 307 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 omega-mech rotate: false - xy: 213, 19 + xy: 1005, 339 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 tau-mech rotate: false - xy: 213, 19 + xy: 1005, 339 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 dart-ship rotate: false - xy: 863, 307 + xy: 879, 307 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 halberd-ship rotate: false - xy: 905, 293 + xy: 227, 19 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 trident-ship rotate: false - xy: 905, 293 + xy: 227, 19 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 javelin-ship rotate: false - xy: 947, 303 + xy: 269, 19 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 mech-icon-javelin-ship rotate: false - xy: 947, 303 + xy: 269, 19 size: 12, 12 orig: 12, 12 offset: 0, 0 @@ -5314,28 +5307,28 @@ icon-arrow-16 index: -1 icon-arrow-down rotate: false - xy: 325, 21 + xy: 1003, 381 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-arrow-left rotate: false - xy: 337, 21 + xy: 723, 188 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-arrow-right rotate: false - xy: 349, 21 + xy: 735, 188 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-arrow-up rotate: false - xy: 361, 21 + xy: 747, 188 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -5370,7 +5363,7 @@ icon-cancel index: -1 icon-chat rotate: false - xy: 1003, 381 + xy: 759, 188 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -5384,21 +5377,21 @@ icon-check index: -1 icon-crafting rotate: false - xy: 1003, 369 + xy: 771, 188 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-cursor rotate: false - xy: 1003, 357 + xy: 783, 188 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-defense rotate: false - xy: 1003, 305 + xy: 383, 53 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -5419,7 +5412,7 @@ icon-discord index: -1 icon-distribution rotate: false - xy: 1003, 293 + xy: 383, 41 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -5559,14 +5552,14 @@ icon-grid index: -1 icon-hold rotate: false - xy: 373, 21 + xy: 383, 29 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-holdDelete rotate: false - xy: 1003, 281 + xy: 381, 17 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -5587,7 +5580,7 @@ icon-host index: -1 icon-info rotate: false - xy: 723, 188 + xy: 486, 197 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -5601,14 +5594,14 @@ icon-itch.io index: -1 icon-item rotate: false - xy: 735, 188 + xy: 498, 197 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-items-none rotate: false - xy: 883, 253 + xy: 237, 9 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -5629,7 +5622,7 @@ icon-link index: -1 icon-liquid rotate: false - xy: 747, 188 + xy: 510, 197 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -5671,7 +5664,7 @@ icon-locked index: -1 icon-logic rotate: false - xy: 759, 188 + xy: 522, 197 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -5685,7 +5678,7 @@ icon-map index: -1 icon-menu rotate: false - xy: 771, 188 + xy: 534, 197 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -5699,28 +5692,28 @@ icon-menu-large index: -1 icon-missing rotate: false - xy: 783, 188 + xy: 484, 185 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-none rotate: false - xy: 383, 53 + xy: 496, 185 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-nullitem rotate: false - xy: 893, 263 + xy: 247, 9 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icon-pause rotate: false - xy: 383, 41 + xy: 508, 185 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -5748,7 +5741,7 @@ icon-pick index: -1 icon-play rotate: false - xy: 486, 197 + xy: 520, 185 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -5762,21 +5755,21 @@ icon-play-2 index: -1 icon-players rotate: false - xy: 498, 197 + xy: 532, 185 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-power rotate: false - xy: 510, 197 + xy: 557, 194 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-production rotate: false - xy: 522, 197 + xy: 569, 194 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -5867,7 +5860,7 @@ icon-save-map index: -1 icon-settings rotate: false - xy: 534, 197 + xy: 581, 192 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -5888,14 +5881,14 @@ icon-tools index: -1 icon-touch rotate: false - xy: 484, 185 + xy: 593, 192 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-touchDelete rotate: false - xy: 496, 185 + xy: 605, 192 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -5937,7 +5930,7 @@ icon-undo index: -1 icon-units rotate: false - xy: 508, 185 + xy: 617, 192 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -5951,7 +5944,7 @@ icon-unlocks index: -1 icon-weapon rotate: false - xy: 520, 185 + xy: 629, 192 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -6167,14 +6160,14 @@ dagger index: -1 drone rotate: false - xy: 919, 307 + xy: 935, 307 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 unit-icon-drone rotate: false - xy: 919, 307 + xy: 935, 307 size: 12, 12 orig: 12, 12 offset: 0, 0 @@ -6195,14 +6188,14 @@ unit-icon-fabricator index: -1 interceptor rotate: false - xy: 933, 293 + xy: 255, 19 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 unit-icon-interceptor rotate: false - xy: 933, 293 + xy: 255, 19 size: 12, 12 orig: 12, 12 offset: 0, 0 @@ -6221,6 +6214,13 @@ unit-icon-monsoon orig: 18, 18 offset: 0, 0 index: -1 +power-cell + rotate: false + xy: 863, 305 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 titan rotate: false xy: 265, 81 @@ -6258,28 +6258,28 @@ chain-blaster-equip index: -1 flakgun-equip rotate: false - xy: 863, 293 + xy: 185, 19 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 flamethrower-equip rotate: false - xy: 877, 293 + xy: 199, 19 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 missiles-equip rotate: false - xy: 185, 19 + xy: 1003, 367 size: 12, 12 orig: 12, 12 offset: 0, 0 index: -1 shockgun-equip rotate: false - xy: 241, 19 + xy: 949, 303 size: 12, 12 orig: 12, 12 offset: 0, 0 diff --git a/core/src/io/anuke/mindustry/content/Recipes.java b/core/src/io/anuke/mindustry/content/Recipes.java index 92d447acaf..94c07d684c 100644 --- a/core/src/io/anuke/mindustry/content/Recipes.java +++ b/core/src/io/anuke/mindustry/content/Recipes.java @@ -139,7 +139,6 @@ public class Recipes implements ContentList{ new Recipe(units, UnitBlocks.monsoonPad, new ItemStack(Items.plastanium, 80), new ItemStack(Items.titanium, 100), new ItemStack(Items.lead, 130), new ItemStack(Items.silicon, 220)).setMode(GameMode.noWaves); new Recipe(units, UnitBlocks.repairPoint, new ItemStack(Items.lead, 30), new ItemStack(Items.tungsten, 30), new ItemStack(Items.silicon, 30)); - new Recipe(units, UnitBlocks.resupplyPoint, new ItemStack(Items.lead, 30), new ItemStack(Items.tungsten, 30), new ItemStack(Items.silicon, 30)); new Recipe(units, UnitBlocks.commandCenter, new ItemStack(Items.lead, 100), new ItemStack(Items.carbide, 100), new ItemStack(Items.silicon, 200)).setMode(GameMode.noWaves); //LIQUIDS diff --git a/core/src/io/anuke/mindustry/content/Weapons.java b/core/src/io/anuke/mindustry/content/Weapons.java index 934b05ea69..7909578967 100644 --- a/core/src/io/anuke/mindustry/content/Weapons.java +++ b/core/src/io/anuke/mindustry/content/Weapons.java @@ -19,7 +19,7 @@ public class Weapons implements ContentList{ reload = 15f; roundrobin = true; ejectEffect = ShootFx.shellEjectSmall; - setAmmo(AmmoTypes.bulletLead); + ammo = AmmoTypes.bulletLead; }}; missiles = new Weapon("missiles"){{ @@ -30,7 +30,7 @@ public class Weapons implements ContentList{ roundrobin = false; roundrobin = true; ejectEffect = Fx.none; - setAmmo(AmmoTypes.weaponMissile); + ammo = AmmoTypes.weaponMissile; }}; chainBlaster = new Weapon("chain-blaster"){{ @@ -38,7 +38,7 @@ public class Weapons implements ContentList{ reload = 28f; roundrobin = true; ejectEffect = ShootFx.shellEjectSmall; - setAmmo(AmmoTypes.bulletLead, AmmoTypes.bulletCarbide, AmmoTypes.bulletTungsten, AmmoTypes.bulletSilicon, AmmoTypes.bulletThorium); + ammo = AmmoTypes.bulletLead; }}; shockgun = new Weapon("shockgun"){{ @@ -50,7 +50,7 @@ public class Weapons implements ContentList{ recoil = 2f; velocityRnd = 0.7f; ejectEffect = ShootFx.shellEjectSmall; - setAmmo(AmmoTypes.shotgunTungsten); + ammo = AmmoTypes.shotgunTungsten; }}; flakgun = new Weapon("flakgun"){{ @@ -62,7 +62,7 @@ public class Weapons implements ContentList{ recoil = 3f; velocityRnd = 0.1f; ejectEffect = ShootFx.shellEjectMedium; - setAmmo(AmmoTypes.shellCarbide); + ammo = AmmoTypes.shellCarbide; }}; flamethrower = new Weapon("flamethrower"){{ @@ -71,7 +71,7 @@ public class Weapons implements ContentList{ roundrobin = true; recoil = 1f; ejectEffect = Fx.none; - setAmmo(AmmoTypes.flamerThermite); + ammo = AmmoTypes.flamerThermite; }}; sapper = new Weapon("sapper"){{ @@ -79,7 +79,7 @@ public class Weapons implements ContentList{ reload = 12f; roundrobin = true; ejectEffect = ShootFx.shellEjectSmall; - setAmmo(AmmoTypes.bulletCarbide); + ammo = AmmoTypes.bulletCarbide; }}; swarmer = new Weapon("swarmer"){{ @@ -87,7 +87,7 @@ public class Weapons implements ContentList{ reload = 10f; roundrobin = true; ejectEffect = ShootFx.shellEjectSmall; - setAmmo(AmmoTypes.bulletPyratite); + ammo = AmmoTypes.bulletPyratite; }}; bomber = new Weapon("bomber"){{ @@ -98,7 +98,7 @@ public class Weapons implements ContentList{ ejectEffect = Fx.none; velocityRnd = 1f; inaccuracy = 40f; - setAmmo(AmmoTypes.bombExplosive, AmmoTypes.bombIncendiary, AmmoTypes.bombOil); + ammo = AmmoTypes.bombExplosive; }}; } diff --git a/core/src/io/anuke/mindustry/content/blocks/UnitBlocks.java b/core/src/io/anuke/mindustry/content/blocks/UnitBlocks.java index 2159d0ab48..179b2b4642 100644 --- a/core/src/io/anuke/mindustry/content/blocks/UnitBlocks.java +++ b/core/src/io/anuke/mindustry/content/blocks/UnitBlocks.java @@ -8,7 +8,7 @@ import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.blocks.units.*; public class UnitBlocks extends BlockList implements ContentList{ - public static Block resupplyPoint, repairPoint, dronePad, + public static Block repairPoint, dronePad, fabricatorPad, interceptorPad, monsoonPad, daggerPad, titanPad, dropPoint, reconstructor, overdriveProjector, shieldProjector, commandCenter; @@ -64,11 +64,6 @@ public class UnitBlocks extends BlockList implements ContentList{ consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 20), new ItemStack(Items.thorium, 30)}); }}; - resupplyPoint = new ResupplyPoint("resupply-point"){{ - shadow = "shadow-round-1"; - itemCapacity = 30; - }}; - dropPoint = new DropPoint("drop-point"){{ shadow = "shadow-round-1"; itemCapacity = 40; diff --git a/core/src/io/anuke/mindustry/core/Renderer.java b/core/src/io/anuke/mindustry/core/Renderer.java index e16b96770d..5f4e1022f7 100644 --- a/core/src/io/anuke/mindustry/core/Renderer.java +++ b/core/src/io/anuke/mindustry/core/Renderer.java @@ -331,8 +331,8 @@ public class Renderer extends RendererModule{ Graphics.beginShaders(Shaders.outline); Graphics.shader(Shaders.mix, true); - drawAndInterpolate(unitGroups[team.ordinal()], u -> u.isFlying() == flying && !u.isDead()); - drawAndInterpolate(playerGroup, p -> p.isFlying() == flying && p.getTeam() == team); + drawAndInterpolate(unitGroups[team.ordinal()], u -> u.isFlying() == flying && !u.isDead(), Unit::drawAll); + drawAndInterpolate(playerGroup, p -> p.isFlying() == flying && p.getTeam() == team, Unit::drawAll); Graphics.shader(); blocks.drawTeamBlocks(Layer.turret, team); Graphics.endShaders(); diff --git a/core/src/io/anuke/mindustry/entities/Player.java b/core/src/io/anuke/mindustry/entities/Player.java index ed24d8053c..7419299a35 100644 --- a/core/src/io/anuke/mindustry/entities/Player.java +++ b/core/src/io/anuke/mindustry/entities/Player.java @@ -129,11 +129,6 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra return mech.itemCapacity; } - @Override - public int getAmmoCapacity(){ - return mech.ammoCapacity; - } - @Override public void interpolate(){ super.interpolate(); @@ -187,21 +182,11 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra return mech.armor; } - @Override - public boolean acceptsAmmo(Item item){ - return mech.weapon.getAmmoType(item) != null && inventory.canAcceptAmmo(mech.weapon.getAmmoType(item)); - } - @Override public void added(){ baseRotation = 90f; } - @Override - public void addAmmo(Item item){ - inventory.addAmmo(mech.weapon.getAmmoType(item)); - } - @Override public float getMass(){ return mech.mass; @@ -273,6 +258,23 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra Draw.rect(mech.iconRegion, x , y, rotation - 90); } + @Override + public void drawAll(){ + boolean snap = snapCamera && isLocal; + + float px = x, py = y; + + if(snap){ + x = (int) (x + 0.0001f); + y = (int) (y + 0.0001f); + } + + super.drawAll(); + + x = px; + y = py; + } + @Override public void draw(){ if((debug && (!showPlayer || !showUI)) || dead) return; @@ -284,15 +286,6 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra boostHeat = Mathf.lerpDelta(boostHeat, isBoosting && ((!movement.isZero() && moved) || !isLocal) ? 1f : 0f, 0.08f); - boolean snap = snapCamera && isLocal; - - float px = x, py = y; - - if(snap){ - x = (int) (x + 0.0001f); - y = (int) (y + 0.0001f); - } - float ft = Mathf.sin(walktime, 6f, 2f) * (1f - boostHeat); Floor floor = getFloorOn(); @@ -351,9 +344,6 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra } Draw.alpha(1f); - - x = px; - y = py; } @Override @@ -620,20 +610,20 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra y += Mathf.cos(Timers.time() + id * 999, 25f, 0.08f); //update shooting if not building, not mining and there's ammo left - if(!isBuilding() && inventory.hasAmmo() && getMineTile() == null){ + if(!isBuilding() && getMineTile() == null){ //autofire: mobile only! if(mobile){ if(target == null){ isShooting = false; - target = Units.getClosestTarget(team, x, y, inventory.getAmmoRange()); + target = Units.getClosestTarget(team, x, y, getWeapon().getAmmo().getRange()); }else if(target.isValid()){ //rotate toward and shoot the target rotation = Mathf.slerpDelta(rotation, angleTo(target), 0.2f); Vector2 intercept = - Predict.intercept(x, y, target.getX(), target.getY(), target.getVelocity().x - velocity.x, target.getVelocity().y - velocity.y, inventory.getAmmo().bullet.speed); + Predict.intercept(x, y, target.getX(), target.getY(), target.getVelocity().x - velocity.x, target.getVelocity().y - velocity.y, getWeapon().getAmmo().bullet.speed); pointerX = intercept.x; pointerY = intercept.y; @@ -677,7 +667,7 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra } public boolean isShooting(){ - return isShooting && inventory.hasAmmo() && (!isBoosting || mech.flying); + return isShooting && (!isBoosting || mech.flying); } public void updateRespawning(){ diff --git a/core/src/io/anuke/mindustry/entities/Unit.java b/core/src/io/anuke/mindustry/entities/Unit.java index 71d1fe1dac..6531b1e890 100644 --- a/core/src/io/anuke/mindustry/entities/Unit.java +++ b/core/src/io/anuke/mindustry/entities/Unit.java @@ -1,5 +1,6 @@ package io.anuke.mindustry.entities; +import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.math.Vector2; import io.anuke.mindustry.content.blocks.Blocks; @@ -8,8 +9,8 @@ import io.anuke.mindustry.game.Team; import io.anuke.mindustry.game.TeamInfo.TeamData; import io.anuke.mindustry.net.Interpolator; import io.anuke.mindustry.net.Net; -import io.anuke.mindustry.type.Item; import io.anuke.mindustry.type.StatusEffect; +import io.anuke.mindustry.type.Weapon; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.blocks.Floor; import io.anuke.ucore.core.Effects; @@ -294,16 +295,30 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ } } - public float getAmmoFraction(){ - return inventory.totalAmmo() / (float) inventory.ammoCapacity(); - } - public void drawUnder(){ } public void drawOver(){ } + public void drawStats(){ + Draw.color(Color.BLACK, team.color, healthf() + Mathf.absin(Timers.time(), 1f+healthf()*5f, 1f - healthf())); + Draw.alpha(hitTime); + Draw.rect(getPowerCellRegion(), x, y, rotation - 90); + Draw.color(); + } + + public TextureRegion getPowerCellRegion(){ + return Draw.region("power-cell"); + } + + public void drawAll(){ + if(!isDead()){ + draw(); + drawStats(); + } + } + public void drawShadow(){ Draw.rect(getIconRegion(), x , y, rotation - 90); } @@ -312,26 +327,18 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ Fill.circle(x, y, getViewDistance()); } - public boolean isInfiniteAmmo(){ - return false; - } - public float getViewDistance(){ return 135f; } public abstract TextureRegion getIconRegion(); + public abstract Weapon getWeapon(); + public abstract int getItemCapacity(); - public abstract int getAmmoCapacity(); - public abstract float getArmor(); - public abstract boolean acceptsAmmo(Item item); - - public abstract void addAmmo(Item item); - public abstract float getMass(); public abstract boolean isFlying(); diff --git a/core/src/io/anuke/mindustry/entities/UnitInventory.java b/core/src/io/anuke/mindustry/entities/UnitInventory.java index 0ebfcb27f9..834f0b8779 100644 --- a/core/src/io/anuke/mindustry/entities/UnitInventory.java +++ b/core/src/io/anuke/mindustry/entities/UnitInventory.java @@ -1,10 +1,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; import io.anuke.mindustry.type.ItemStack; @@ -14,8 +11,6 @@ import java.io.IOException; public class UnitInventory implements Saveable{ private final Unit unit; - private Array ammos = new Array<>(); - private int totalAmmo; private ItemStack item = new ItemStack(Items.stone, 0); public UnitInventory(Unit unit){ @@ -30,90 +25,19 @@ public class UnitInventory implements Saveable{ public void writeSave(DataOutput stream) throws IOException{ stream.writeShort(item.amount); stream.writeByte(item.item.id); - stream.writeShort(totalAmmo); - stream.writeByte(ammos.size); - for(int i = 0; i < ammos.size; i++){ - stream.writeByte(ammos.get(i).type.id); - stream.writeShort(ammos.get(i).amount); - } } @Override public void readSave(DataInput stream) throws IOException{ short iamount = stream.readShort(); byte iid = stream.readByte(); - this.totalAmmo = stream.readShort(); - byte ammoa = stream.readByte(); - for(int i = 0; i < ammoa; i++){ - byte aid = stream.readByte(); - int am = stream.readShort(); - ammos.add(new AmmoEntry(AmmoType.getByID(aid), am)); - } item.item = Item.getByID(iid); item.amount = iamount; } - /** - * Returns ammo range, or MAX_VALUE if this inventory has no ammo. - */ - public float getAmmoRange(){ - return hasAmmo() ? getAmmo().getRange() : Float.MAX_VALUE; - } - - public AmmoType getAmmo(){ - return ammos.size == 0 ? null : ammos.peek().type; - } - - public boolean hasAmmo(){ - return totalAmmo > 0; - } - - public void useAmmo(){ - if(unit.isInfiniteAmmo()) return; - AmmoEntry entry = ammos.peek(); - entry.amount--; - if(entry.amount == 0) ammos.pop(); - totalAmmo--; - } - - public int totalAmmo(){ - return totalAmmo; - } - - public int ammoCapacity(){ - return unit.getAmmoCapacity(); - } - - public boolean canAcceptAmmo(AmmoType type){ - return totalAmmo + type.quantityMultiplier <= unit.getAmmoCapacity(); - } - - public void addAmmo(AmmoType type){ - if(type == null) return; - totalAmmo += type.quantityMultiplier; - - //find ammo entry by type - for(int i = ammos.size - 1; i >= 0; i--){ - AmmoEntry entry = ammos.get(i); - - //if found, put it to the right - if(entry.type == type){ - entry.amount += type.quantityMultiplier; - ammos.swap(i, ammos.size - 1); - return; - } - } - - //must not be found - AmmoEntry entry = new AmmoEntry(type, (int) type.quantityMultiplier); - ammos.add(entry); - } - - public void fillAmmo(AmmoType type){ - totalAmmo = ammoCapacity(); - ammos.clear(); - ammos.add(new AmmoEntry(type, ammoCapacity())); + public void clear(){ + item.amount = 0; } public int capacity(){ @@ -140,12 +64,6 @@ public class UnitInventory implements Saveable{ return (!hasItem() && amount <= unit.getItemCapacity()) || (item.item == type && item.amount + amount <= unit.getItemCapacity()); } - public void clear(){ - item.amount = 0; - ammos.clear(); - totalAmmo = 0; - } - public void clearItem(){ item.amount = 0; } diff --git a/core/src/io/anuke/mindustry/entities/Units.java b/core/src/io/anuke/mindustry/entities/Units.java index 7afd5b28b6..22e6800b2d 100644 --- a/core/src/io/anuke/mindustry/entities/Units.java +++ b/core/src/io/anuke/mindustry/entities/Units.java @@ -51,7 +51,7 @@ public class Units{ * See {@link #invalidateTarget(TargetTrait, Team, float, float, float)} */ public static boolean invalidateTarget(TargetTrait target, Unit targeter){ - return invalidateTarget(target, targeter.team, targeter.x, targeter.y, targeter.inventory.getAmmoRange()); + return invalidateTarget(target, targeter.team, targeter.x, targeter.y, targeter.getWeapon().getAmmo().getRange()); } /** diff --git a/core/src/io/anuke/mindustry/entities/effect/ItemTransfer.java b/core/src/io/anuke/mindustry/entities/effect/ItemTransfer.java index 27ef69d948..bf23331e32 100644 --- a/core/src/io/anuke/mindustry/entities/effect/ItemTransfer.java +++ b/core/src/io/anuke/mindustry/entities/effect/ItemTransfer.java @@ -34,14 +34,6 @@ public class ItemTransfer extends TimedEntity implements DrawTrait{ public ItemTransfer(){ } - @Remote(called = Loc.server, unreliable = true) - public static void transferAmmo(Item item, float x, float y, Unit to){ - if(to == null) return; - to.addAmmo(item); - create(item, x, y, to, () -> { - }); - } - @Remote(called = Loc.server, unreliable = true) public static void transferItemEffect(Item item, float x, float y, Unit to){ if(to == null) return; diff --git a/core/src/io/anuke/mindustry/entities/units/BaseUnit.java b/core/src/io/anuke/mindustry/entities/units/BaseUnit.java index 8a3b2696b6..315c2f88a8 100644 --- a/core/src/io/anuke/mindustry/entities/units/BaseUnit.java +++ b/core/src/io/anuke/mindustry/entities/units/BaseUnit.java @@ -19,7 +19,6 @@ import io.anuke.mindustry.game.TeamInfo.TeamData; import io.anuke.mindustry.gen.Call; import io.anuke.mindustry.graphics.Palette; import io.anuke.mindustry.net.Net; -import io.anuke.mindustry.type.Item; import io.anuke.mindustry.type.ItemStack; import io.anuke.mindustry.type.Weapon; import io.anuke.mindustry.world.Tile; @@ -185,7 +184,7 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{ } public void targetClosest(){ - target = Units.getClosestTarget(team, x, y, inventory.getAmmoRange()); + target = Units.getClosestTarget(team, x, y, getWeapon().getAmmo().getRange()); } public TileEntity getClosestEnemyCore(){ @@ -253,16 +252,6 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{ return type.itemCapacity; } - @Override - public int getAmmoCapacity(){ - return type.ammoCapacity; - } - - @Override - public boolean isInfiniteAmmo(){ - return isWave; - } - @Override public void interpolate(){ super.interpolate(); @@ -282,16 +271,6 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{ return type.armor; } - @Override - public boolean acceptsAmmo(Item item){ - return getWeapon().getAmmoType(item) != null && inventory.canAcceptAmmo(getWeapon().getAmmoType(item)); - } - - @Override - public void addAmmo(Item item){ - inventory.addAmmo(getWeapon().getAmmoType(item)); - } - @Override public float getSize(){ return 8; diff --git a/core/src/io/anuke/mindustry/entities/units/FlyingUnit.java b/core/src/io/anuke/mindustry/entities/units/FlyingUnit.java index e7085f93b6..6dc76ac680 100644 --- a/core/src/io/anuke/mindustry/entities/units/FlyingUnit.java +++ b/core/src/io/anuke/mindustry/entities/units/FlyingUnit.java @@ -28,22 +28,6 @@ public abstract class FlyingUnit extends BaseUnit implements CarryTrait{ protected CarriableTrait carrying; protected final UnitState - resupply = new UnitState(){ - public void entered(){ - target = null; - } - - public void update(){ - if(inventory.totalAmmo() + 10 >= inventory.ammoCapacity()){ - state.set(attack); - }else if(!targetHasFlag(BlockFlag.resupplyPoint)){ - retarget(() -> targetClosestAllyFlag(BlockFlag.resupplyPoint)); - }else{ - circle(20f); - } - } - }, - idle = new UnitState(){ public void update(){ if(!isCommanded()){ @@ -75,9 +59,7 @@ public abstract class FlyingUnit extends BaseUnit implements CarryTrait{ target = null; } - if(!inventory.hasAmmo()){ - state.set(resupply); - }else if(target == null){ + if(target == null){ retarget(() -> { targetClosest(); if(target == null) targetClosestEnemyFlag(BlockFlag.target); @@ -91,10 +73,9 @@ public abstract class FlyingUnit extends BaseUnit implements CarryTrait{ }else{ attack(150f); - if((Mathf.angNear(angleTo(target), rotation, 15f) || !inventory.getAmmo().bullet.keepVelocity) //bombers don't care about rotation - && distanceTo(target) < inventory.getAmmo().getRange()){ - AmmoType ammo = inventory.getAmmo(); - inventory.useAmmo(); + if((Mathf.angNear(angleTo(target), rotation, 15f) || !getWeapon().getAmmo().bullet.keepVelocity) //bombers don't care about rotation + && distanceTo(target) < getWeapon().getAmmo().getRange()){ + AmmoType ammo = getWeapon().getAmmo(); Vector2 to = Predict.intercept(FlyingUnit.this, target, ammo.bullet.speed); diff --git a/core/src/io/anuke/mindustry/entities/units/GroundUnit.java b/core/src/io/anuke/mindustry/entities/units/GroundUnit.java index 9f2027c05c..38bcda1ff3 100644 --- a/core/src/io/anuke/mindustry/entities/units/GroundUnit.java +++ b/core/src/io/anuke/mindustry/entities/units/GroundUnit.java @@ -12,11 +12,9 @@ import io.anuke.mindustry.type.Upgrade; import io.anuke.mindustry.type.Weapon; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.blocks.Floor; -import io.anuke.mindustry.world.meta.BlockFlag; import io.anuke.ucore.core.Timers; import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.util.Angles; -import io.anuke.ucore.util.Geometry; import io.anuke.ucore.util.Mathf; import io.anuke.ucore.util.Translator; @@ -35,24 +33,6 @@ public abstract class GroundUnit extends BaseUnit{ public final UnitState - resupply = new UnitState(){ - public void entered(){ - target = null; - } - - public void update(){ - Tile tile = Geometry.findClosest(x, y, world.indexer().getAllied(team, BlockFlag.resupplyPoint)); - - if(tile != null && distanceTo(tile) > 40){ - moveAwayFromCore(); - } - - //TODO move toward resupply point - if(isWave || inventory.totalAmmo() + 10 >= inventory.ammoCapacity()){ - state.set(attack); - } - } - }, attack = new UnitState(){ public void entered(){ target = null; @@ -62,17 +42,15 @@ public abstract class GroundUnit extends BaseUnit{ TileEntity core = getClosestEnemyCore(); float dst = core == null ? 0 : distanceTo(core); - if(core != null && inventory.hasAmmo() && dst < inventory.getAmmo().getRange() / 1.1f){ + if(core != null && dst < getWeapon().getAmmo().getRange() / 1.1f){ target = core; }else{ retarget(() -> targetClosest()); } - if(!inventory.hasAmmo()){ - state.set(resupply); - }else if(target != null){ + if(target != null){ if(core != null){ - if(dst > inventory.getAmmo().getRange() * 0.5f){ + if(dst > getWeapon().getAmmo().getRange() * 0.5f){ moveToCore(); } @@ -80,11 +58,11 @@ public abstract class GroundUnit extends BaseUnit{ moveToCore(); } - if(distanceTo(target) < inventory.getAmmo().getRange()){ + if(distanceTo(target) < getWeapon().getAmmo().getRange()){ rotate(angleTo(target)); if(Mathf.angNear(angleTo(target), rotation, 13f)){ - AmmoType ammo = inventory.getAmmo(); + AmmoType ammo = getWeapon().getAmmo(); Vector2 to = Predict.intercept(GroundUnit.this, target, ammo.bullet.speed); @@ -143,14 +121,14 @@ public abstract class GroundUnit extends BaseUnit{ @Override public UnitState getStartState(){ - return resupply; + return attack; } @Override public void update(){ super.update(); - if(!velocity.isZero(0.0001f) && (target == null || !inventory.hasAmmo() || (inventory.hasAmmo() && distanceTo(target) > inventory.getAmmoRange()))){ + if(!velocity.isZero(0.0001f) && (target == null || (distanceTo(target) > getWeapon().getAmmo().getRange()))){ rotation = Mathf.slerpDelta(rotation, velocity.angle(), 0.2f); } } diff --git a/core/src/io/anuke/mindustry/entities/units/types/Drone.java b/core/src/io/anuke/mindustry/entities/units/types/Drone.java index c5b50d620b..61f9948237 100644 --- a/core/src/io/anuke/mindustry/entities/units/types/Drone.java +++ b/core/src/io/anuke/mindustry/entities/units/types/Drone.java @@ -395,11 +395,6 @@ public class Drone extends FlyingUnit implements BuilderTrait{ return isBuilding() ? placeDistance * 2f : 30f; } - @Override - public float getAmmoFraction(){ - return inventory.getItem().amount / (float) type.itemCapacity; - } - protected void findItem(){ TileEntity entity = getClosestCore(); if(entity == null){ diff --git a/core/src/io/anuke/mindustry/game/SpawnGroup.java b/core/src/io/anuke/mindustry/game/SpawnGroup.java index 4d8fe850be..63faefda7d 100644 --- a/core/src/io/anuke/mindustry/game/SpawnGroup.java +++ b/core/src/io/anuke/mindustry/game/SpawnGroup.java @@ -3,7 +3,6 @@ package io.anuke.mindustry.game; import io.anuke.mindustry.entities.units.BaseUnit; import io.anuke.mindustry.entities.units.GroundUnit; import io.anuke.mindustry.entities.units.UnitType; -import io.anuke.mindustry.type.Item; import io.anuke.mindustry.type.ItemStack; import io.anuke.mindustry.type.StatusEffect; import io.anuke.mindustry.type.Weapon; @@ -62,10 +61,6 @@ public class SpawnGroup{ * Items this unit spawns with. Null to disable. */ protected ItemStack items; - /** - * Ammo type this unit spawns with. Null to use the first available ammo. - */ - protected Item ammoItem; public SpawnGroup(UnitType type){ this.type = type; @@ -114,12 +109,6 @@ public class SpawnGroup{ unit.inventory.addItem(items.item, items.amount); } - if(ammoItem != null){ - unit.inventory.addAmmo(unit.getWeapon().getAmmoType(ammoItem)); - }else{ - unit.inventory.addAmmo(unit.getWeapon().getAmmoType(unit.getWeapon().getAcceptedItems().iterator().next())); - } - return unit; } } diff --git a/core/src/io/anuke/mindustry/game/Waves.java b/core/src/io/anuke/mindustry/game/Waves.java index 7267e88d6d..148c41b06b 100644 --- a/core/src/io/anuke/mindustry/game/Waves.java +++ b/core/src/io/anuke/mindustry/game/Waves.java @@ -41,7 +41,6 @@ public class Waves{ unitScaling = 2; unitAmount = 1; spacing = 2; - ammoItem = Items.tungsten; end = 30; }}, @@ -86,7 +85,6 @@ public class Waves{ groupAmount = 2; unitScaling = 3; effect = StatusEffects.overdrive; - ammoItem = Items.silicon; }}, new SpawnGroup(UnitTypes.dagger){{ @@ -95,7 +93,6 @@ public class Waves{ unitAmount = 1; unitScaling = 3; effect = StatusEffects.shielded; - ammoItem = Items.thorium; max = 10; }}, @@ -121,7 +118,6 @@ public class Waves{ new SpawnGroup(UnitTypes.monsoon){{ begin = 40; - ammoItem = Items.blastCompound; unitAmount = 2; spacing = 2; unitScaling = 3; @@ -140,7 +136,6 @@ public class Waves{ new SpawnGroup(UnitTypes.monsoon){{ begin = 53; - ammoItem = Items.pyratite; unitAmount = 2; unitScaling = 3; spacing = 4; @@ -150,7 +145,6 @@ public class Waves{ new SpawnGroup(UnitTypes.monsoon){{ begin = 53; - ammoItem = Items.coal; unitAmount = 2; unitScaling = 3; spacing = 4; @@ -176,10 +170,6 @@ public class Waves{ System.out.print(":" + spawn.weapon.name); } - if(spawn.ammoItem != null){ - System.out.print(":" + spawn.ammoItem.name); - } - System.out.print(" "); } } diff --git a/core/src/io/anuke/mindustry/graphics/OverlayRenderer.java b/core/src/io/anuke/mindustry/graphics/OverlayRenderer.java index ba3942d9b4..9755346932 100644 --- a/core/src/io/anuke/mindustry/graphics/OverlayRenderer.java +++ b/core/src/io/anuke/mindustry/graphics/OverlayRenderer.java @@ -7,14 +7,11 @@ import com.badlogic.gdx.utils.Array; import io.anuke.mindustry.content.blocks.Blocks; import io.anuke.mindustry.entities.Player; import io.anuke.mindustry.entities.TileEntity; -import io.anuke.mindustry.entities.Unit; -import io.anuke.mindustry.game.TeamInfo.TeamData; import io.anuke.mindustry.input.InputHandler; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.meta.BlockBar; import io.anuke.ucore.core.Graphics; -import io.anuke.ucore.core.Settings; import io.anuke.ucore.core.Timers; import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.graphics.Fill; @@ -176,32 +173,7 @@ public class OverlayRenderer{ Draw.color(); } } - } - - if((!debug || showUI) && Settings.getBool("healthbars")){ - for(TeamData ally : (debug ? state.teams.getTeams() : state.teams.getTeams(true))){ - renderer.drawAndInterpolate(unitGroups[ally.team.ordinal()], u -> !u.isDead(), this::drawStats); - } - - renderer.drawAndInterpolate(playerGroup, u -> !u.isDead(), this::drawStats); - } - } - - void drawStats(Unit unit){ - if(unit.isDead()) return; - - float x = unit.x; - float y = unit.y; - - if(unit == players[0] && players.length == 1 && snapCamera){ - x = (int) (x + 0.0001f); - y = (int) (y + 0.0001f); - } - - drawEncloser(x, y - 9f, 2f); - drawBar(Palette.healthstats, x, y - 8f, unit.healthf()); - drawBar(Palette.ammo, x, y - 9f, unit.getAmmoFraction()); } void drawBar(Color color, float x, float y, float finion){ diff --git a/core/src/io/anuke/mindustry/graphics/Palette.java b/core/src/io/anuke/mindustry/graphics/Palette.java index d62d980823..29e42f3289 100644 --- a/core/src/io/anuke/mindustry/graphics/Palette.java +++ b/core/src/io/anuke/mindustry/graphics/Palette.java @@ -3,70 +3,72 @@ package io.anuke.mindustry.graphics; import com.badlogic.gdx.graphics.Color; public class Palette{ - public static final Color command = Color.valueOf("eab678"); + public static final Color - public static final Color bulletYellow = Color.valueOf("ffeec9"); - public static final Color bulletYellowBack = Color.valueOf("f9c87a"); + command = Color.valueOf("eab678"), - public static final Color missileYellow = Color.valueOf("ffd2ae"); - public static final Color missileYellowBack = Color.valueOf("e58956"); + bulletYellow = Color.valueOf("ffeec9"), + bulletYellowBack = Color.valueOf("f9c87a"), - public static final Color plastaniumBack = Color.valueOf("d8d97f"); - public static final Color plastaniumFront = Color.valueOf("fffac6"); + missileYellow = Color.valueOf("ffd2ae"), + missileYellowBack = Color.valueOf("e58956"), - public static final Color lightFlame = Color.valueOf("ffdd55"); - public static final Color darkFlame = Color.valueOf("db401c"); + plastaniumBack = Color.valueOf("d8d97f"), + plastaniumFront = Color.valueOf("fffac6"), - public static final Color turretHeat = Color.valueOf("ab3400"); + lightFlame = Color.valueOf("ffdd55"), + darkFlame = Color.valueOf("db401c"), - public static final Color lightOrange = Color.valueOf("f68021"); - public static final Color lightishOrange = Color.valueOf("f8ad42"); - public static final Color lighterOrange = Color.valueOf("f6e096"); + turretHeat = Color.valueOf("ab3400"), - public static final Color lightishGray = Color.valueOf("a2a2a2"); - public static final Color darkishGray = new Color(0.3f, 0.3f, 0.3f, 1f); + lightOrange = Color.valueOf("f68021"), + lightishOrange = Color.valueOf("f8ad42"), + lighterOrange = Color.valueOf("f6e096"), - public static final Color lancerLaser = Color.valueOf("a9d8ff"); + lightishGray = Color.valueOf("a2a2a2"), + darkishGray = new Color(0.3f, 0.3f, 0.3f, 1f), - public static final Color stoneGray = Color.valueOf("8f8f8f"); + lancerLaser = Color.valueOf("a9d8ff"), - public static final Color portalLight = Color.valueOf("9054ea"); - public static final Color portal = Color.valueOf("6344d7"); - public static final Color portalDark = Color.valueOf("3f3dac"); + stoneGray = Color.valueOf("8f8f8f"), - public static final Color powerLaserFrom = Color.valueOf("e3e3e3"); - public static final Color powerLaserTo = Color.valueOf("ffe7a8"); + portalLight = Color.valueOf("9054ea"), + portal = Color.valueOf("6344d7"), + portalDark = Color.valueOf("3f3dac"), - public static final Color description = Color.WHITE; - public static final Color turretinfo = Color.ORANGE; - public static final Color iteminfo = Color.LIGHT_GRAY; - public static final Color powerinfo = Color.YELLOW; - public static final Color liquidinfo = Color.ROYAL; - public static final Color craftinfo = Color.LIGHT_GRAY; + powerLaserFrom = Color.valueOf("e3e3e3"), + powerLaserTo = Color.valueOf("ffe7a8"), - public static final Color missingitems = Color.SCARLET; - public static final Color health = Color.YELLOW; - public static final Color ammo = Color.valueOf("32cf6d"); - public static final Color healthstats = Color.SCARLET; - public static final Color bar = Color.SLATE; - public static final Color interact = Color.ORANGE; - public static final Color accent = Color.valueOf("f4ba6e"); - public static final Color place = Color.valueOf("6335f8"); - public static final Color remove = Color.valueOf("e55454"); - public static final Color placeRotate = accent; - public static final Color breakInvalid = Color.valueOf("d44b3d"); - public static final Color range = Color.valueOf("f4ba6e"); - public static final Color power = Color.valueOf("fbd367"); - public static final Color placing = Color.valueOf("616161"); + description = Color.WHITE, + turretinfo = Color.ORANGE, + iteminfo = Color.LIGHT_GRAY, + powerinfo = Color.YELLOW, + liquidinfo = Color.ROYAL, + craftinfo = Color.LIGHT_GRAY, - public static final Color lightTrail = Color.valueOf("ffe2a9"); + missingitems = Color.SCARLET, + health = Color.YELLOW, + ammo = Color.valueOf("32cf6d"), + healthstats = Color.SCARLET, + bar = Color.SLATE, + interact = Color.ORANGE, + accent = Color.valueOf("f4ba6e"), + place = Color.valueOf("6335f8"), + remove = Color.valueOf("e55454"), + placeRotate = accent, + breakInvalid = Color.valueOf("d44b3d"), + range = Color.valueOf("f4ba6e"), + power = Color.valueOf("fbd367"), + placing = Color.valueOf("616161"), - public static final Color redSpark = Color.valueOf("fbb97f"); - public static final Color orangeSpark = Color.valueOf("d2b29c"); + lightTrail = Color.valueOf("ffe2a9"), - public static final Color redDust = Color.valueOf("ffa480"); - public static final Color redderDust = Color.valueOf("ff7b69"); + redSpark = Color.valueOf("fbb97f"), + orangeSpark = Color.valueOf("d2b29c"), - public static final Color plasticSmoke = Color.valueOf("f1e479"); - public static final Color plasticBurn = Color.valueOf("e9ead3"); + redDust = Color.valueOf("ffa480"), + redderDust = Color.valueOf("ff7b69"), + + plasticSmoke = Color.valueOf("f1e479"), + plasticBurn = Color.valueOf("e9ead3"); } diff --git a/core/src/io/anuke/mindustry/maps/generation/FortressGenerator.java b/core/src/io/anuke/mindustry/maps/generation/FortressGenerator.java index 021123cf1a..725072d6f3 100644 --- a/core/src/io/anuke/mindustry/maps/generation/FortressGenerator.java +++ b/core/src/io/anuke/mindustry/maps/generation/FortressGenerator.java @@ -15,7 +15,6 @@ import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.blocks.defense.turrets.ItemTurret; import io.anuke.mindustry.world.blocks.defense.turrets.PowerTurret; -import io.anuke.mindustry.world.blocks.units.ResupplyPoint; import io.anuke.ucore.util.Mathf; import static io.anuke.mindustry.Vars.world; @@ -186,7 +185,6 @@ public class FortressGenerator{ } Block fixBlock(Block result){ - if(result == UnitBlocks.resupplyPoint) result = DefenseBlocks.tungstenWall; if(result == UnitBlocks.dronePad) result = DefenseBlocks.tungstenWallLarge; if(result == UnitBlocks.fabricatorPad) result = DefenseBlocks.tungstenWallLarge; return result; @@ -201,8 +199,6 @@ public class FortressGenerator{ ItemTurret turret = (ItemTurret)block; AmmoType[] type = turret.getAmmoTypes(); block.handleStack(type[0].item, block.acceptStack(type[0].item, 1000, tile, null), tile, null); - }else if(block instanceof ResupplyPoint){ - tile.entity.items.add(Items.lead, tile.block().itemCapacity); } } diff --git a/core/src/io/anuke/mindustry/type/Weapon.java b/core/src/io/anuke/mindustry/type/Weapon.java index 623be27e86..e900563bdd 100644 --- a/core/src/io/anuke/mindustry/type/Weapon.java +++ b/core/src/io/anuke/mindustry/type/Weapon.java @@ -1,7 +1,6 @@ package io.anuke.mindustry.type; import com.badlogic.gdx.graphics.g2d.TextureRegion; -import com.badlogic.gdx.utils.OrderedMap; import io.anuke.annotations.Annotations.Loc; import io.anuke.annotations.Annotations.Remote; import io.anuke.mindustry.Vars; @@ -19,64 +18,37 @@ import io.anuke.ucore.util.Mathf; import io.anuke.ucore.util.Translator; public class Weapon extends Upgrade{ - /** - * minimum cursor distance from player, fixes 'cross-eyed' shooting. - */ + /**minimum cursor distance from player, fixes 'cross-eyed' shooting.*/ protected static float minPlayerDist = 20f; - public TextureRegion equipRegion, region; - /** - * ammo type map. set with setAmmo() - */ - protected OrderedMap ammoMap = new OrderedMap<>(); - /** - * shell ejection effect - */ + /**ammo type map. set with setAmmo()*/ + protected AmmoType ammo; + /**shell ejection effect*/ protected Effect ejectEffect = Fx.none; - /** - * weapon reload in frames - */ + /**weapon reload in frames*/ protected float reload; - /** - * amount of shots per fire - */ + /**amount of shots per fire*/ protected int shots = 1; - /** - * spacing in degrees between multiple shots, if applicable - */ + /**spacing in degrees between multiple shots, if applicable*/ protected float spacing = 12f; - /** - * inaccuracy of degrees of each shot - */ + /**inaccuracy of degrees of each shot*/ protected float inaccuracy = 0f; - /** - * intensity and duration of each shot's screen shake - */ + /**intensity and duration of each shot's screen shake*/ protected float shake = 0f; - /** - * visual weapon knockback. - */ + /**visual weapon knockback.*/ protected float recoil = 1.5f; - /** - * shoot barrel y offset - */ + /**shoot barrel y offset*/ protected float length = 3f; - /** - * shoot barrel x offset. - */ + /**shoot barrel x offset.*/ protected float width = 4f; - /** - * fraction of velocity that is random - */ + /**fraction of velocity that is random*/ protected float velocityRnd = 0f; - /** - * whether to shoot the weapons in different arms one after another, rather than all at once - */ + /**whether to shoot the weapons in different arms one after another, rather than all at once*/ protected boolean roundrobin = false; - /** - * translator for vector calulations - */ + /**translator for vector calulations*/ protected Translator tr = new Translator(); + public TextureRegion equipRegion, region; + protected Weapon(String name){ super(name); } @@ -103,12 +75,9 @@ public class Weapon extends Upgrade{ Weapon weapon = shooter.getWeapon(); Angles.shotgun(weapon.shots, weapon.spacing, rotation, f -> weapon.bullet(shooter, x, y, f + Mathf.range(weapon.inaccuracy))); + AmmoType ammo = weapon.ammo; - AmmoType type = shooter.getInventory().getAmmo(); - - if(type == null) return; - - weapon.tr.trns(rotation + 180f, type.recoil); + weapon.tr.trns(rotation + 180f, ammo.recoil); shooter.getVelocity().add(weapon.tr); @@ -116,8 +85,8 @@ public class Weapon extends Upgrade{ Effects.shake(weapon.shake, weapon.shake, x, y); Effects.effect(weapon.ejectEffect, x, y, rotation * -Mathf.sign(left)); - Effects.effect(type.shootEffect, x + weapon.tr.x, y + weapon.tr.y, rotation, shooter); - Effects.effect(type.smokeEffect, x + weapon.tr.x, y + weapon.tr.y, rotation, shooter); + Effects.effect(ammo.shootEffect, x + weapon.tr.x, y + weapon.tr.y, rotation, shooter); + Effects.effect(ammo.smokeEffect, x + weapon.tr.x, y + weapon.tr.y, rotation, shooter); //reset timer for remote players shooter.getTimer().get(shooter.getShootTimer(left), weapon.reload); @@ -134,13 +103,17 @@ public class Weapon extends Upgrade{ return "weapon"; } + public AmmoType getAmmo(){ + return ammo; + } + public void update(ShooterTrait shooter, float pointerX, float pointerY){ update(shooter, true, pointerX, pointerY); update(shooter, false, pointerX, pointerY); } private void update(ShooterTrait shooter, boolean left, float pointerX, float pointerY){ - if(shooter.getInventory().hasAmmo() && shooter.getTimer().get(shooter.getShootTimer(left), reload)){ + if(shooter.getTimer().get(shooter.getShootTimer(left), reload)){ if(roundrobin){ shooter.getTimer().reset(shooter.getShootTimer(!left), reload / 2f); } @@ -180,29 +153,13 @@ public class Weapon extends Upgrade{ Call.onGenericShootWeapon(p, x, y, angle, left); } } - - p.getInventory().useAmmo(); - } - - public Iterable getAcceptedItems(){ - return ammoMap.orderedKeys(); - } - - public AmmoType getAmmoType(Item item){ - return ammoMap.get(item); - } - - protected void setAmmo(AmmoType... types){ - for(AmmoType type : types){ - ammoMap.put(type.item, type); - } } void bullet(ShooterTrait owner, float x, float y, float angle){ - if(owner == null || !owner.getInventory().hasAmmo()) return; + if(owner == null) return; tr.trns(angle, 3f); - Bullet.create(owner.getInventory().getAmmo().bullet, + Bullet.create(ammo.bullet, owner, owner.getTeam(), x + tr.x, y + tr.y, angle, (1f - velocityRnd) + Mathf.random(velocityRnd)); } } diff --git a/core/src/io/anuke/mindustry/ui/fragments/DebugFragment.java b/core/src/io/anuke/mindustry/ui/fragments/DebugFragment.java index 10aa2d8460..a3461fe929 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/DebugFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/DebugFragment.java @@ -145,7 +145,6 @@ public class DebugFragment extends Fragment{ for(UnitType type : UnitType.all()){ dialog.content().addImageButton("white", 40, () -> { BaseUnit unit = type.create(player.getTeam()); - unit.inventory.addAmmo(type.weapon.getAmmoType(type.weapon.getAcceptedItems().iterator().next())); unit.setWave(); unit.set(player.x, player.y); unit.add(); diff --git a/core/src/io/anuke/mindustry/world/blocks/storage/CoreBlock.java b/core/src/io/anuke/mindustry/world/blocks/storage/CoreBlock.java index d6d90797e6..7b23a65ccf 100644 --- a/core/src/io/anuke/mindustry/world/blocks/storage/CoreBlock.java +++ b/core/src/io/anuke/mindustry/world/blocks/storage/CoreBlock.java @@ -235,25 +235,6 @@ public class CoreBlock extends StorageBlock{ entity.heat = Mathf.lerpDelta(entity.heat, 0f, 0.1f); } - - if(entity.solid && tile.entity.timer.get(timerSupply, supplyInterval)){ - rect.setSize(supplyRadius * 2).setCenter(tile.drawx(), tile.drawy()); - - Units.getNearby(tile.getTeam(), rect, unit -> { - if(unit.isDead() || unit.distanceTo(tile.drawx(), tile.drawy()) > supplyRadius || unit.getGroup() == null) - return; - - for(int i = 0; i < Item.all().size; i++){ - Item item = Item.getByID(i); - if(tile.entity.items.get(item) > 0 && unit.acceptsAmmo(item)){ - tile.entity.items.remove(item, 1); - unit.addAmmo(item); - Call.transferAmmo(item, tile.drawx(), tile.drawy(), unit); - return; - } - } - }); - } } @Override @@ -261,19 +242,6 @@ public class CoreBlock extends StorageBlock{ return new CoreEntity(); } - /* - @Remote(called = Loc.server) - public static void onCoreUnitSet(Tile tile, Unit player){ - CoreEntity entity = tile.entity(); - entity.currentUnit = player; - entity.progress = 0f; - player.set(tile.drawx(), tile.drawy()); - - if(player instanceof Player){ - ((Player) player).setRespawning(true); - } - } - */ public class CoreEntity extends TileEntity implements SpawnerTrait{ public Unit currentUnit; int droneID = -1; diff --git a/core/src/io/anuke/mindustry/world/blocks/units/ResupplyPoint.java b/core/src/io/anuke/mindustry/world/blocks/units/ResupplyPoint.java deleted file mode 100644 index 6f0c5a6281..0000000000 --- a/core/src/io/anuke/mindustry/world/blocks/units/ResupplyPoint.java +++ /dev/null @@ -1,144 +0,0 @@ -package io.anuke.mindustry.world.blocks.units; - -import com.badlogic.gdx.math.Rectangle; -import com.badlogic.gdx.math.Vector2; -import io.anuke.mindustry.entities.TileEntity; -import io.anuke.mindustry.entities.Unit; -import io.anuke.mindustry.entities.Units; -import io.anuke.mindustry.graphics.Layer; -import io.anuke.mindustry.graphics.Palette; -import io.anuke.mindustry.type.Item; -import io.anuke.mindustry.world.Block; -import io.anuke.mindustry.world.Tile; -import io.anuke.mindustry.world.meta.BlockFlag; -import io.anuke.ucore.core.Timers; -import io.anuke.ucore.graphics.Draw; -import io.anuke.ucore.graphics.Lines; -import io.anuke.ucore.graphics.Shapes; -import io.anuke.ucore.util.Angles; -import io.anuke.ucore.util.EnumSet; -import io.anuke.ucore.util.Mathf; - -public class ResupplyPoint extends Block{ - private static Rectangle rect = new Rectangle(); - - protected int timerSupply = timers++; - protected int timerTarget = timers++; - - protected float supplyRadius = 50f; - protected float supplyInterval = 10f; - - public ResupplyPoint(String name){ - super(name); - update = true; - solid = true; - flags = EnumSet.of(BlockFlag.resupplyPoint); - layer = Layer.laser; - hasItems = true; - hasPower = true; - powerCapacity = 20f; - - consumes.power(0.02f); - } - - @Override - public void drawSelect(Tile tile){ - Draw.color(Palette.accent); - Lines.dashCircle(tile.drawx(), tile.drawy(), supplyRadius); - Draw.color(); - } - - @Override - public void drawLayer(Tile tile){ - ResupplyPointEntity entity = tile.entity(); - - if(entity.strength > 0f){ - float ang = entity.angleTo(entity.lastx, entity.lasty); - float len = 5f; - float x1 = tile.drawx() + Angles.trnsx(ang, len), y1 = tile.drawy() + Angles.trnsy(ang, len); - float dstTo = Vector2.dst(x1, y1, entity.lastx, entity.lasty); - float space = 4f; - - float xf = entity.lastx - x1, yf = entity.lasty - y1; - - Shapes.laser("transfer", "transfer-end", - x1, y1, entity.lastx, entity.lasty, entity.strength); - - Draw.color(Palette.accent); - for(int i = 0; i < dstTo / space - 1; i++){ - float fract = (i * space) / dstTo + ((Timers.time() / 90f) % (space / dstTo)); - Draw.alpha(Mathf.clamp(fract * 1.5f)); - Draw.rect("transfer-arrow", x1 + fract * xf, y1 + fract * yf, - 8, 8 * entity.strength, ang); - } - - Draw.color(); - - } - } - - @Override - public void update(Tile tile){ - ResupplyPointEntity entity = tile.entity(); - - if(!validTarget(entity, entity.target) || entity.target.distanceTo(tile) > supplyRadius){ - entity.target = null; - }else if(entity.target != null && entity.strength > 0.5f){ - - if(entity.timer.get(timerSupply, supplyInterval)){ - for(int i = 0; i < Item.all().size; i++){ - Item item = Item.getByID(i); - if(tile.entity.items.has(item) && entity.target.acceptsAmmo(item)){ - tile.entity.items.remove(item, 1); - entity.target.addAmmo(item); - break; - } - } - } - - entity.rotation = Mathf.slerpDelta(entity.rotation, entity.angleTo(entity.target), 0.5f); - } - - if(entity.target != null && entity.cons.valid()){ - entity.lastx = entity.target.x; - entity.lasty = entity.target.y; - entity.strength = Mathf.lerpDelta(entity.strength, 1f, 0.08f * Timers.delta()); - }else{ - entity.strength = Mathf.lerpDelta(entity.strength, 0f, 0.08f * Timers.delta()); - } - - if(entity.timer.get(timerTarget, 20)){ - rect.setSize(supplyRadius * 2).setCenter(tile.drawx(), tile.drawy()); - - entity.target = Units.getClosest(tile.getTeam(), tile.drawx(), tile.drawy(), supplyRadius, unit -> validTarget(entity, unit)); - } - } - - @Override - public boolean acceptItem(Item item, Tile tile, Tile source){ - return tile.entity.items.total() < itemCapacity; - } - - @Override - public TileEntity getEntity(){ - return new ResupplyPointEntity(); - } - - boolean validTarget(ResupplyPointEntity entity, Unit unit){ - if(unit == null || unit.inventory.totalAmmo() >= unit.inventory.ammoCapacity() - || unit.isDead()) return false; - - for(int i = 0; i < Item.all().size; i++){ - Item item = Item.getByID(i); - if(entity.items.has(item) && unit.acceptsAmmo(item)){ - return true; - } - } - return false; - } - - public class ResupplyPointEntity extends TileEntity{ - public Unit target; - public float strength, rotation = 90, lastx, lasty; - } -} diff --git a/core/src/io/anuke/mindustry/world/blocks/units/UnitPad.java b/core/src/io/anuke/mindustry/world/blocks/units/UnitPad.java index fe6a617435..3a247e11e2 100644 --- a/core/src/io/anuke/mindustry/world/blocks/units/UnitPad.java +++ b/core/src/io/anuke/mindustry/world/blocks/units/UnitPad.java @@ -13,7 +13,6 @@ import io.anuke.mindustry.gen.Call; import io.anuke.mindustry.graphics.Palette; import io.anuke.mindustry.graphics.Shaders; import io.anuke.mindustry.net.Net; -import io.anuke.mindustry.type.AmmoType; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.type.ItemStack; import io.anuke.mindustry.world.BarType; @@ -74,10 +73,6 @@ public class UnitPad extends Block{ unit.set(tile.drawx(), tile.drawy()); unit.add(); unit.getVelocity().y = factory.launchVelocity; - - //fill inventory with 1st ammo - AmmoType type = unit.getWeapon().getAmmoType(unit.getWeapon().getAcceptedItems().iterator().next()); - unit.inventory.fillAmmo(type); } }