diff --git a/core/assets-raw/sprites/blocks/walls/ironwall-large.png b/core/assets-raw/sprites/blocks/walls/ironwall-large.png index 9d7f89f2d7..28f37e4207 100644 Binary files a/core/assets-raw/sprites/blocks/walls/ironwall-large.png and b/core/assets-raw/sprites/blocks/walls/ironwall-large.png differ diff --git a/core/assets/sprites/sprites.atlas b/core/assets/sprites/sprites.atlas index cf2ad1f019..78076da1da 100644 --- a/core/assets/sprites/sprites.atlas +++ b/core/assets/sprites/sprites.atlas @@ -13,28 +13,28 @@ background index: -1 conveyor-arrow rotate: false - xy: 737, 308 + xy: 747, 308 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 laserconveyor-arrow rotate: false - xy: 713, 209 + xy: 713, 199 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 laserconveyor-bridge rotate: false - xy: 713, 199 + xy: 723, 209 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 laserconveyor-end rotate: false - xy: 723, 209 + xy: 723, 199 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -53,13 +53,6 @@ ripple orig: 24, 24 offset: 0, 0 index: -1 -titanium-conveyor - rotate: false - xy: 325, 3 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 warpgate-top rotate: false xy: 679, 357 @@ -69,28 +62,28 @@ warpgate-top index: -1 irondrill rotate: false - xy: 746, 298 + xy: 746, 288 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 irondrill-rotator rotate: false - xy: 746, 288 + xy: 756, 298 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titaniumdrill-rotator rotate: false - xy: 746, 288 + xy: 756, 298 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 irondrill-top rotate: false - xy: 756, 298 + xy: 756, 288 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -202,42 +195,42 @@ plasmadrill-top index: -1 reinforceddrill rotate: false - xy: 305, 13 + xy: 315, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 reinforceddrill-rotator rotate: false - xy: 315, 23 + xy: 325, 33 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 reinforceddrill-top rotate: false - xy: 325, 33 + xy: 315, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 steeldrill rotate: false - xy: 385, 23 + xy: 395, 33 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 steeldrill-rotator rotate: false - xy: 395, 33 + xy: 385, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 steeldrill-top rotate: false - xy: 385, 13 + xy: 395, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -363,28 +356,28 @@ blackstoneedge index: -1 coal2 rotate: false - xy: 737, 318 + xy: 747, 328 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 coal3 rotate: false - xy: 747, 328 + xy: 747, 318 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt2 rotate: false - xy: 757, 308 + xy: 767, 320 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 dirt3 rotate: false - xy: 767, 320 + xy: 767, 310 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -398,28 +391,28 @@ dirtedge index: -1 grass2 rotate: false - xy: 787, 310 + xy: 706, 299 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grass3 rotate: false - xy: 706, 299 + xy: 706, 289 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grassblock1 rotate: false - xy: 706, 289 + xy: 716, 299 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 grassblock2 rotate: false - xy: 716, 299 + xy: 706, 279 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -433,14 +426,14 @@ grassedge index: -1 ice2 rotate: false - xy: 706, 279 + xy: 716, 289 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ice3 rotate: false - xy: 716, 289 + xy: 726, 299 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -454,49 +447,49 @@ iceedge index: -1 icerock2 rotate: false - xy: 726, 299 + xy: 716, 279 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icerockshadow1 rotate: false - xy: 716, 279 + xy: 726, 289 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rockshadow1 rotate: false - xy: 716, 279 + xy: 726, 289 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icerockshadow2 rotate: false - xy: 726, 289 + xy: 726, 279 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rockshadow2 rotate: false - xy: 726, 289 + xy: 726, 279 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 iron2 rotate: false - xy: 736, 298 + xy: 736, 288 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 iron3 rotate: false - xy: 736, 288 + xy: 746, 298 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -510,49 +503,49 @@ lavaedge index: -1 lead2 rotate: false - xy: 713, 189 + xy: 723, 189 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lead3 rotate: false - xy: 723, 189 + xy: 827, 423 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor2 rotate: false - xy: 923, 417 + xy: 933, 417 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor3 rotate: false - xy: 933, 417 + xy: 943, 417 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor4 rotate: false - xy: 943, 417 + xy: 953, 413 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor5 rotate: false - xy: 953, 413 + xy: 963, 423 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor6 rotate: false - xy: 963, 423 + xy: 963, 413 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -566,7 +559,7 @@ metalflooredge index: -1 mossblock rotate: false - xy: 963, 413 + xy: 295, 33 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -580,42 +573,42 @@ oiledge index: -1 rock2 rotate: false - xy: 325, 23 + xy: 335, 33 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand2 rotate: false - xy: 325, 13 + xy: 335, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand3 rotate: false - xy: 335, 23 + xy: 345, 33 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sandblock1 rotate: false - xy: 345, 33 + xy: 335, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sandblock2 rotate: false - xy: 335, 13 + xy: 345, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sandblock3 rotate: false - xy: 345, 23 + xy: 355, 33 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -629,42 +622,42 @@ sandedge index: -1 shrubshadow rotate: false - xy: 355, 13 + xy: 365, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow2 rotate: false - xy: 375, 33 + xy: 365, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snow3 rotate: false - xy: 365, 13 + xy: 375, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snowblock1 rotate: false - xy: 375, 23 + xy: 385, 33 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snowblock2 rotate: false - xy: 385, 33 + xy: 375, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 snowblock3 rotate: false - xy: 375, 13 + xy: 385, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -685,63 +678,63 @@ spaceedge index: -1 stone-cliff-edge rotate: false - xy: 395, 13 + xy: 405, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone-cliff-edge-1 rotate: false - xy: 405, 23 + xy: 415, 33 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone-cliff-edge-2 rotate: false - xy: 415, 33 + xy: 405, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone-cliff-side rotate: false - xy: 405, 13 + xy: 415, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone2 rotate: false - xy: 395, 23 + xy: 405, 33 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stone3 rotate: false - xy: 405, 33 + xy: 395, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stoneblock1 rotate: false - xy: 415, 23 + xy: 415, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stoneblock2 rotate: false - xy: 415, 13 + xy: 425, 35 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stoneblock3 rotate: false - xy: 425, 35 + xy: 425, 25 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -755,28 +748,28 @@ stoneedge index: -1 thorium2 rotate: false - xy: 425, 15 + xy: 295, 3 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 thorium3 rotate: false - xy: 295, 3 + xy: 305, 3 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium2 rotate: false - xy: 305, 3 + xy: 315, 3 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanium3 rotate: false - xy: 315, 3 + xy: 325, 3 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -839,42 +832,42 @@ combustion-generator-top index: -1 block-middle rotate: false - xy: 707, 329 + xy: 697, 309 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pump-liquid rotate: false - xy: 707, 329 + xy: 697, 309 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-slope rotate: false - xy: 697, 309 + xy: 717, 329 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 border rotate: false - xy: 717, 329 + xy: 707, 319 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-liquid rotate: false - xy: 757, 328 + xy: 757, 318 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 cross-1 rotate: false - xy: 747, 308 + xy: 757, 308 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -902,7 +895,7 @@ cross-4 index: -1 enemyspawn rotate: false - xy: 777, 310 + xy: 787, 320 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -916,14 +909,14 @@ nuclearreactor-shadow index: -1 place-arrow rotate: false - xy: 295, 33 + xy: 295, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 playerspawn rotate: false - xy: 295, 23 + xy: 305, 33 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1035,105 +1028,105 @@ shadow-round-2 index: -1 bridgeconduit-arrow rotate: false - xy: 707, 319 + xy: 717, 319 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridgeconduit-bridge rotate: false - xy: 717, 319 + xy: 707, 309 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridgeconduit-end rotate: false - xy: 707, 309 + xy: 717, 309 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridgeconveyor-arrow rotate: false - xy: 717, 309 + xy: 727, 329 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridgeconveyor-bridge rotate: false - xy: 727, 329 + xy: 727, 319 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 bridgeconveyor-end rotate: false - xy: 727, 319 + xy: 727, 309 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-bottom rotate: false - xy: 747, 318 + xy: 757, 328 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 conduit-top rotate: false - xy: 757, 318 + xy: 737, 308 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 laserconduit-arrow rotate: false - xy: 717, 229 + xy: 709, 219 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 laserconduit-bridge rotate: false - xy: 709, 219 + xy: 719, 219 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 laserconduit-end rotate: false - xy: 719, 219 + xy: 713, 209 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquidrouter rotate: false - xy: 827, 423 + xy: 893, 417 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquidrouter-bottom rotate: false - xy: 893, 417 + xy: 903, 417 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquidrouter-liquid rotate: false - xy: 903, 417 + xy: 913, 417 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquidrouter-top rotate: false - xy: 913, 417 + xy: 923, 417 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1161,14 +1154,14 @@ liquidtank-top index: -1 pulseconduit-bottom rotate: false - xy: 305, 33 + xy: 295, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulseconduit-top rotate: false - xy: 295, 13 + xy: 305, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1273,7 +1266,7 @@ nuclear-reactor-lights index: -1 rtg-generator-top rotate: false - xy: 335, 33 + xy: 325, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1427,14 +1420,14 @@ cultivator-top index: -1 extractor rotate: false - xy: 787, 320 + xy: 787, 310 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lavasmelter rotate: false - xy: 723, 199 + xy: 713, 189 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1469,28 +1462,28 @@ silicon-smelter-top index: -1 pulverizer rotate: false - xy: 305, 23 + xy: 315, 33 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 pulverizer-rotator rotate: false - xy: 315, 33 + xy: 305, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 separator-liquid rotate: false - xy: 355, 33 + xy: 345, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 siliconextractor rotate: false - xy: 365, 23 + xy: 375, 33 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1595,7 +1588,7 @@ crux-panel-right index: -1 duo rotate: false - xy: 777, 320 + xy: 777, 310 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1742,7 +1735,7 @@ reconstructor-open index: -1 repairpoint-turret rotate: false - xy: 315, 13 + xy: 325, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1756,14 +1749,14 @@ door-large-open index: -1 door-open rotate: false - xy: 767, 310 + xy: 777, 320 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 stonewall rotate: false - xy: 425, 25 + xy: 425, 15 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1889,7 +1882,7 @@ shell-back index: -1 shot rotate: false - xy: 365, 33 + xy: 355, 13 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3175,23 +3168,37 @@ titanium1 orig: 8, 8 offset: 0, 0 index: -1 -block-icon-titaniumdrill +block-icon-titanium-conveyor rotate: false xy: 447, 51 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 -block-icon-titaniumwall +titanium-conveyor + rotate: false + xy: 447, 51 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +block-icon-titaniumdrill rotate: false xy: 447, 41 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 +block-icon-titaniumwall + rotate: false + xy: 697, 329 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 titaniumwall rotate: false - xy: 447, 41 + xy: 697, 329 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3226,14 +3233,14 @@ turbine-generator index: -1 block-icon-unloader rotate: false - xy: 697, 329 + xy: 697, 319 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 unloader rotate: false - xy: 697, 329 + xy: 697, 319 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3268,14 +3275,14 @@ warpgate index: -1 block-icon-water rotate: false - xy: 697, 319 + xy: 707, 329 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 water rotate: false - xy: 697, 319 + xy: 707, 329 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -3352,189 +3359,189 @@ mech-icon-trident-ship index: -1 item-armor-piercing-bullet rotate: false - xy: 756, 288 + xy: 736, 278 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-composite-flak rotate: false - xy: 706, 269 + xy: 716, 269 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-explosive-shell rotate: false - xy: 716, 269 + xy: 726, 269 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-frag-shell rotate: false - xy: 726, 269 + xy: 705, 259 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-homing-bullet rotate: false - xy: 705, 259 + xy: 715, 259 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-incendiary-mortar-shell rotate: false - xy: 715, 259 + xy: 725, 259 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-lead-bullet rotate: false - xy: 746, 268 + xy: 756, 268 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-scythe-missile rotate: false - xy: 755, 258 + xy: 713, 249 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-surge-mortar-shell rotate: false - xy: 753, 248 + xy: 713, 239 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-swarm-missile rotate: false - xy: 713, 239 + xy: 723, 239 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-thorium-shell rotate: false - xy: 743, 238 + xy: 753, 238 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-tracer-bullet rotate: false - xy: 707, 229 + xy: 717, 229 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-biomatter rotate: false - xy: 736, 278 + xy: 746, 278 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-blast-compound rotate: false - xy: 746, 278 + xy: 756, 278 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-coal rotate: false - xy: 756, 278 + xy: 706, 269 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-iron rotate: false - xy: 725, 259 + xy: 736, 268 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-lead rotate: false - xy: 736, 268 + xy: 746, 268 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-phase-matter rotate: false - xy: 756, 268 + xy: 735, 258 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-plasteel rotate: false - xy: 735, 258 + xy: 745, 258 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-sand rotate: false - xy: 745, 258 + xy: 755, 258 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-silicon rotate: false - xy: 713, 249 + xy: 723, 249 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-steel rotate: false - xy: 723, 249 + xy: 733, 248 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-stone rotate: false - xy: 733, 248 + xy: 743, 248 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-surge-alloy rotate: false - xy: 743, 248 + xy: 753, 248 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-thermite rotate: false - xy: 723, 239 + xy: 733, 238 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-thorium rotate: false - xy: 733, 238 + xy: 743, 238 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 item-titanium rotate: false - xy: 753, 238 + xy: 707, 229 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -4173,7 +4180,7 @@ icon-itch.io index: -1 icon-items-none rotate: false - xy: 726, 279 + xy: 736, 298 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -4738,14 +4745,14 @@ blaster-equip index: -1 clustergun rotate: false - xy: 727, 309 + xy: 737, 328 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 clustergun-equip rotate: false - xy: 737, 328 + xy: 737, 318 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -4759,14 +4766,14 @@ generic-weapon index: -1 shockgun rotate: false - xy: 345, 13 + xy: 355, 23 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shockgun-equip rotate: false - xy: 355, 23 + xy: 365, 33 size: 8, 8 orig: 8, 8 offset: 0, 0 diff --git a/core/assets/sprites/sprites.png b/core/assets/sprites/sprites.png index f71f6dcd81..dabb6f5e29 100644 Binary files a/core/assets/sprites/sprites.png and b/core/assets/sprites/sprites.png differ diff --git a/core/src/io/anuke/mindustry/Vars.java b/core/src/io/anuke/mindustry/Vars.java index 15c69e5be4..aafb852dd3 100644 --- a/core/src/io/anuke/mindustry/Vars.java +++ b/core/src/io/anuke/mindustry/Vars.java @@ -40,7 +40,7 @@ public class Vars{ //waves can last no longer than 3 minutes, otherwise the next one spawns public static final float maxwavespace = 60*60*4f; - public static final float coreBuildRange = 400f; + public static final float coreBuildRange = 800f; //discord group URL public static final String discordURL = "https://discord.gg/BKADYds"; diff --git a/core/src/io/anuke/mindustry/content/AmmoTypes.java b/core/src/io/anuke/mindustry/content/AmmoTypes.java index 9e2b84b4f1..57b330481d 100644 --- a/core/src/io/anuke/mindustry/content/AmmoTypes.java +++ b/core/src/io/anuke/mindustry/content/AmmoTypes.java @@ -15,32 +15,32 @@ public class AmmoTypes implements ContentList { //bullets - bulletIron = new AmmoType(Items.iron, StandardBullets.iron, 5) {{ + bulletIron = new AmmoType(Items.iron, StandardBullets.iron, 3) {{ shootEffect = ShootFx.shootSmall; smokeEffect = ShootFx.shootSmallSmoke; }}; - bulletLead = new AmmoType(Items.lead, StandardBullets.lead, 5) {{ + bulletLead = new AmmoType(Items.lead, StandardBullets.lead, 3) {{ shootEffect = ShootFx.shootSmall; smokeEffect = ShootFx.shootSmallSmoke; }}; - bulletSteel = new AmmoType(Items.steel, StandardBullets.steel, 5) {{ + bulletSteel = new AmmoType(Items.steel, StandardBullets.steel, 3) {{ shootEffect = ShootFx.shootSmall; smokeEffect = ShootFx.shootSmallSmoke; }}; - bulletThorium = new AmmoType(Items.thorium, StandardBullets.thorium, 5) {{ + bulletThorium = new AmmoType(Items.thorium, StandardBullets.thorium, 3) {{ shootEffect = ShootFx.shootSmall; smokeEffect = ShootFx.shootSmallSmoke; }}; - bulletSilicon = new AmmoType(Items.silicon, StandardBullets.homing, 5) {{ + bulletSilicon = new AmmoType(Items.silicon, StandardBullets.homing, 3) {{ shootEffect = ShootFx.shootSmall; smokeEffect = ShootFx.shootSmallSmoke; }}; - bulletThermite = new AmmoType(Items.thermite, StandardBullets.tracer, 5) {{ + bulletThermite = new AmmoType(Items.thermite, StandardBullets.tracer, 3) {{ shootEffect = ShootFx.shootSmall; smokeEffect = ShootFx.shootSmallSmoke; }}; diff --git a/core/src/io/anuke/mindustry/content/Mechs.java b/core/src/io/anuke/mindustry/content/Mechs.java index 9d0662ca37..b5136c3caf 100644 --- a/core/src/io/anuke/mindustry/content/Mechs.java +++ b/core/src/io/anuke/mindustry/content/Mechs.java @@ -17,26 +17,22 @@ public class Mechs implements ContentList { alpha = new Mech("alpha-mech", false){{ drillPower = 2; - speed = 1.1f; - maxSpeed = 1.1f; + speed = 0.5f; }}; delta = new Mech("delta-mech", false){{ drillPower = -1; - speed = 1.5f; - maxSpeed = 1.5f; + speed = 0.6f; }}; tau = new Mech("tau-mech", false){{ drillPower = 2; - speed = 1.1f; - maxSpeed = 1.1f; + speed = 0.5f; }}; omega = new Mech("omega-mech", false){{ drillPower = 1; - speed = 1.0f; - maxSpeed = 1.0f; + speed = 0.4f; }}; dart = new Mech("dart-ship", true){{ diff --git a/core/src/io/anuke/mindustry/content/Recipes.java b/core/src/io/anuke/mindustry/content/Recipes.java index 4319bc5690..ff5465d2fa 100644 --- a/core/src/io/anuke/mindustry/content/Recipes.java +++ b/core/src/io/anuke/mindustry/content/Recipes.java @@ -40,6 +40,7 @@ public class Recipes implements ContentList{ new Recipe(power, PowerBlocks.battery, new ItemStack(Items.iron, 8), new ItemStack(Items.lead, 30)); //new Recipe(power, PowerBlocks.batteryLarge, new ItemStack(Items.steel, 5), new ItemStack(Items.iron, 5)); new Recipe(power, PowerBlocks.combustiongenerator, new ItemStack(Items.iron, 30), new ItemStack(Items.lead, 30)); + //new Recipe(distribution, StorageBlocks.vault, new ItemStack(Items.steel, 50)); //new Recipe(distribution, StorageBlocks.core, new ItemStack(Items.steel, 50)); //new Recipe(distribution, StorageBlocks.unloader, new ItemStack(Items.steel, 5)); @@ -49,6 +50,10 @@ public class Recipes implements ContentList{ new Recipe(production, ProductionBlocks.reinforcedDrill, new ItemStack(Items.iron, 20), new ItemStack(Items.lead, 20)); new Recipe(production, ProductionBlocks.steelDrill, new ItemStack(Items.iron, 40), new ItemStack(Items.lead, 25), new ItemStack(Items.steel, 25)); new Recipe(production, ProductionBlocks.titaniumDrill, new ItemStack(Items.iron, 40), new ItemStack(Items.titanium, 40), new ItemStack(Items.steel, 40)); + + new Recipe(units, UnitBlocks.droneFactory, new ItemStack(Items.iron, 50), new ItemStack(Items.lead, 50)); + new Recipe(units, UnitBlocks.repairPoint, new ItemStack(Items.lead, 20), new ItemStack(Items.steel, 10)); + /* new Recipe(production, ProductionBlocks.laserdrill, new ItemStack(Items.titanium, 40), new ItemStack(Items.surgealloy, 40)); new Recipe(production, ProductionBlocks.nucleardrill, new ItemStack(Items.titanium, 40), new ItemStack(Items.surgealloy, 40)); diff --git a/core/src/io/anuke/mindustry/content/blocks/DefenseBlocks.java b/core/src/io/anuke/mindustry/content/blocks/DefenseBlocks.java index 76bf734f7b..f2efce25f0 100644 --- a/core/src/io/anuke/mindustry/content/blocks/DefenseBlocks.java +++ b/core/src/io/anuke/mindustry/content/blocks/DefenseBlocks.java @@ -21,7 +21,8 @@ public class DefenseBlocks extends BlockList implements ContentList { }}; ironwalllarge = new Wall("ironwall-large") {{ - health = 80 * wallHealthMultiplier; + health = 80 * 4 * wallHealthMultiplier; + size = 2; }}; steelwall = new Wall("steelwall") {{ diff --git a/core/src/io/anuke/mindustry/core/NetServer.java b/core/src/io/anuke/mindustry/core/NetServer.java index 71cded2a3a..bf3f122629 100644 --- a/core/src/io/anuke/mindustry/core/NetServer.java +++ b/core/src/io/anuke/mindustry/core/NetServer.java @@ -170,8 +170,10 @@ public class NetServer extends Module{ long elapsed = TimeUtils.timeSinceMillis(connection.lastRecievedTime); + float maxSpeed = packet.boosting ? player.mech.boostSpeed : player.mech.speed; + //extra 1.1x multiplicaton is added just in case - float maxMove = elapsed / 1000f * 60f * player.mech.maxSpeed * 1.1f; + float maxMove = elapsed / 1000f * 60f * maxSpeed * 1.1f; player.pointerX = packet.pointerX; player.pointerY = packet.pointerY; diff --git a/core/src/io/anuke/mindustry/entities/Player.java b/core/src/io/anuke/mindustry/entities/Player.java index a85f9daaff..17f9f4c040 100644 --- a/core/src/io/anuke/mindustry/entities/Player.java +++ b/core/src/io/anuke/mindustry/entities/Player.java @@ -32,7 +32,10 @@ import io.anuke.ucore.entities.EntityGroup; import io.anuke.ucore.entities.trait.SolidTrait; import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.graphics.Lines; -import io.anuke.ucore.util.*; +import io.anuke.ucore.util.Angles; +import io.anuke.ucore.util.Mathf; +import io.anuke.ucore.util.ThreadQueue; +import io.anuke.ucore.util.Timer; import java.io.DataInput; import java.io.DataOutput; @@ -54,7 +57,8 @@ public class Player extends Unit implements BuilderTrait, CarryTrait { public float pointerX, pointerY; public String name = "name"; public String uuid, usid; - public boolean isAdmin, isTransferring, isShooting; + public boolean isAdmin, isTransferring, isShooting, isBoosting; + public float boostHeat; public Color color = new Color(); public Mech mech; @@ -83,7 +87,6 @@ public class Player extends Unit implements BuilderTrait, CarryTrait { //region unit and event overrides, utility methods - @Override public int getItemCapacity() { return mech.itemCapacity; @@ -250,10 +253,12 @@ public class Player extends Unit implements BuilderTrait, CarryTrait { if((debug && (!showPlayer || !showUI)) || dead) return; if(!movement.isZero() && moved){ - walktime += Timers.delta() * movement.len()/1.6f * getFloorOn().speedMultiplier; + walktime += Timers.delta() * movement.len()/0.7f * getFloorOn().speedMultiplier; baseRotation = Mathf.slerpDelta(baseRotation, movement.angle(), 0.13f); } + boostHeat = Mathf.lerpDelta(boostHeat, isBoosting ? 1f : 0f, 0.08f); + boolean snap = snapCamera && isLocal; float px = x, py =y; @@ -263,7 +268,7 @@ public class Player extends Unit implements BuilderTrait, CarryTrait { y = (int)y; } - float ft = Mathf.sin(walktime, 6f, 2f); + float ft = Mathf.sin(walktime, 6f, 2f) * (1f-boostHeat); Floor floor = getFloorOn(); @@ -275,11 +280,15 @@ public class Player extends Unit implements BuilderTrait, CarryTrait { Draw.tint(Color.WHITE, floor.liquidColor, 0.5f); } + float boostTrnsY = -boostHeat * 3f; + float boostTrnsX = boostHeat * 3f; + float boostAng = boostHeat*40f; + for (int i : Mathf.signs) { Draw.rect(mech.legRegion, - x + Angles.trnsx(baseRotation, ft * i), - y + Angles.trnsy(baseRotation, ft * i), - 12f * i, 12f - Mathf.clamp(ft * i, 0, 2), baseRotation - 90); + x + Angles.trnsx(baseRotation, ft * i + boostTrnsY, -boostTrnsX*i), + y + Angles.trnsy(baseRotation, ft * i + boostTrnsY, -boostTrnsX*i), + 12f * i, 12f - Mathf.clamp(ft * i, 0, 2), baseRotation - 90 + boostAng*i); } Draw.rect(mech.baseRegion, x, y, baseRotation- 90); @@ -328,8 +337,13 @@ public class Player extends Unit implements BuilderTrait, CarryTrait { drawBuilding(this); } - if(mech.flying){ - trail.draw(Palette.lighterOrange, Palette.lightishOrange, 5f); + if(mech.flying || boostHeat > 0.001f){ + float wobblyness = 0.6f; + trail.update(x + Angles.trnsx(rotation + 180f, 5f) + Mathf.range(wobblyness), + y + Angles.trnsy(rotation + 180f, 5f) + Mathf.range(wobblyness)); + trail.draw(Palette.lighterOrange, Palette.lightishOrange, 5f * (isFlying() ? 1f : boostHeat)); + }else{ + trail.clear(); } } @@ -421,11 +435,6 @@ public class Player extends Unit implements BuilderTrait, CarryTrait { avoidOthers(8f); - float wobblyness = 0.6f; - - trail.update(x + Angles.trnsx(rotation + 180f, 6f) + Mathf.range(wobblyness), - y + Angles.trnsy(rotation + 180f, 6f) + Mathf.range(wobblyness)); - if(!isShooting()) { updateBuilding(this); } @@ -444,7 +453,7 @@ public class Player extends Unit implements BuilderTrait, CarryTrait { if(ui.chatfrag.chatOpen()) return; - float speed = Inputs.keyDown("dash") && debug ? 5f : mech.speed; + float speed = isBoosting ? mech.boostSpeed : mech.speed; float carrySlowdown = 0.3f; speed *= ((1f-carrySlowdown) + (inventory.hasItem() ? (float)inventory.getItem().amount/inventory.capacity(): 1f) * carrySlowdown); @@ -474,14 +483,12 @@ public class Player extends Unit implements BuilderTrait, CarryTrait { } } - movement.set(0, 0); + movement.setZero(); String section = "player_" + (playerIndex + 1); float xa = Inputs.getAxis(section, "move_x"); float ya = Inputs.getAxis(section, "move_y"); - if(Math.abs(xa) < 0.3) xa = 0; - if(Math.abs(ya) < 0.3) ya = 0; movement.y += ya*speed; movement.x += xa*speed; @@ -497,7 +504,7 @@ public class Player extends Unit implements BuilderTrait, CarryTrait { velocity.add(movement); float prex = x, prey = y; - updateVelocityStatus(mech.drag, debug ? speed : mech.maxSpeed); + updateVelocityStatus(mech.drag, 10f); moved = distanceTo(prex, prey) > 0.01f; if(!isShooting()){ @@ -620,7 +627,7 @@ public class Player extends Unit implements BuilderTrait, CarryTrait { } public boolean isShooting(){ - return isShooting && inventory.hasAmmo(); + return isShooting && inventory.hasAmmo() && !isBoosting; } public void setRespawning(){ @@ -680,6 +687,7 @@ public class Player extends Unit implements BuilderTrait, CarryTrait { buffer.writeInt(Color.rgba8888(color)); buffer.writeBoolean(dead); buffer.writeByte(mech.id); + buffer.writeBoolean(isBoosting); } @Override @@ -691,12 +699,15 @@ public class Player extends Unit implements BuilderTrait, CarryTrait { color.set(buffer.readInt()); dead = buffer.readBoolean(); mech = Upgrade.getByID(buffer.readByte()); + boolean dashing = buffer.readBoolean(); interpolator.read(lastx, lasty, x, y, time, rotation); rotation = lastrot; if(isLocal){ x = lastx; y = lasty; + }else{ + isBoosting = dashing; } } diff --git a/core/src/io/anuke/mindustry/entities/units/BaseUnit.java b/core/src/io/anuke/mindustry/entities/units/BaseUnit.java index 01e684164a..9175ac63b6 100644 --- a/core/src/io/anuke/mindustry/entities/units/BaseUnit.java +++ b/core/src/io/anuke/mindustry/entities/units/BaseUnit.java @@ -306,6 +306,7 @@ public abstract class BaseUnit extends Unit{ if(unit == null) return; unit.onSuperDeath(); + UnitDrops.dropItems(unit); Effects.effect(ExplosionFx.explosion, unit); Effects.shake(2f, 2f, unit); diff --git a/core/src/io/anuke/mindustry/entities/units/UnitDrops.java b/core/src/io/anuke/mindustry/entities/units/UnitDrops.java new file mode 100644 index 0000000000..04df3cef10 --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/units/UnitDrops.java @@ -0,0 +1,24 @@ +package io.anuke.mindustry.entities.units; + +import io.anuke.mindustry.content.Items; +import io.anuke.mindustry.gen.CallEntity; +import io.anuke.mindustry.type.Item; +import io.anuke.ucore.util.Mathf; + +public class UnitDrops { + private static Item[] dropTable; + + public static void dropItems(BaseUnit unit){ + if(dropTable == null){ + dropTable = new Item[]{Items.iron, Items.lead, Items.steel}; + } + + for(Item item : dropTable){ + if(Mathf.chance(0.2)){ + int amount = Mathf.random(1, 30); + CallEntity.createItemDrop(item, amount, unit.x + Mathf.range(2f), unit.y + Mathf.range(2f), + unit.getVelocity().x + Mathf.range(0.5f), unit.getVelocity().y + Mathf.range(0.5f)); + } + } + } +} diff --git a/core/src/io/anuke/mindustry/input/DesktopInput.java b/core/src/io/anuke/mindustry/input/DesktopInput.java index 50a6b3c7e2..f47cdea035 100644 --- a/core/src/io/anuke/mindustry/input/DesktopInput.java +++ b/core/src/io/anuke/mindustry/input/DesktopInput.java @@ -126,6 +126,8 @@ public class DesktopInput extends InputHandler{ public void update(){ if(player.isDead() || state.is(State.menu) || ui.hasDialog()) return; + player.isBoosting = Inputs.keyDown("dash"); + //deslect if not placing if(!isPlacing() && mode == placing){ mode = none; diff --git a/core/src/io/anuke/mindustry/net/Packets.java b/core/src/io/anuke/mindustry/net/Packets.java index 2ee5883f1d..d3078d0ac1 100644 --- a/core/src/io/anuke/mindustry/net/Packets.java +++ b/core/src/io/anuke/mindustry/net/Packets.java @@ -104,6 +104,7 @@ public class Packets { public long timeSent; //player snapshot data public float x, y, pointerX, pointerY, rotation, baseRotation, xv, yv; + public boolean boosting; @Override public void write(ByteBuffer buffer) { @@ -117,6 +118,7 @@ public class Packets { buffer.putFloat(player.y); buffer.putFloat(player.pointerX); buffer.putFloat(player.pointerY); + buffer.put(player.isBoosting ? (byte)1 : 0); buffer.put((byte)(Mathf.clamp(player.getVelocity().x, -Unit.maxAbsVelocity, Unit.maxAbsVelocity) * Unit.velocityPercision)); buffer.put((byte)(Mathf.clamp(player.getVelocity().y, -Unit.maxAbsVelocity, Unit.maxAbsVelocity) * Unit.velocityPercision)); @@ -135,6 +137,7 @@ public class Packets { y = buffer.getFloat(); pointerX = buffer.getFloat(); pointerY = buffer.getFloat(); + boosting = buffer.get() == 1; xv = buffer.get() / Unit.velocityPercision; yv = buffer.get() / Unit.velocityPercision; rotation = buffer.getShort()/2f; diff --git a/core/src/io/anuke/mindustry/type/Mech.java b/core/src/io/anuke/mindustry/type/Mech.java index 62814913ae..ace6b5a57c 100644 --- a/core/src/io/anuke/mindustry/type/Mech.java +++ b/core/src/io/anuke/mindustry/type/Mech.java @@ -9,6 +9,7 @@ public class Mech extends Upgrade { public float speed = 1.1f; public float maxSpeed = 1.1f; + public float boostSpeed = 0.75f; public float drag = 0.4f; public float mass = 1f; public float armor = 1f; diff --git a/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java b/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java index e9ab576f86..12f5e35863 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java @@ -1,10 +1,12 @@ package io.anuke.mindustry.ui.fragments; +import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.math.Interpolation; import com.badlogic.gdx.utils.Array; import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.entities.Player; +import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.input.InputHandler; import io.anuke.mindustry.type.Category; import io.anuke.mindustry.type.ItemStack; @@ -116,6 +118,7 @@ public class BlocksFragment implements Fragment{ int cati = 0; int checkedi = 0; + int rowsUsed = 0; //add categories for (Category cat : Category.values()) { @@ -184,6 +187,8 @@ public class BlocksFragment implements Fragment{ } image.getImageCell().setActor(istack).size(size); + image.getStyle().imageUpColor = Color.WHITE; + image.getStyle().imageDisabledColor = Color.GRAY; image.addChild(istack); image.setTouchable(Touchable.enabled); image.getImage().remove(); @@ -225,9 +230,23 @@ public class BlocksFragment implements Fragment{ } }); + image.setDisabled(() -> { + TileEntity entity = players[0].getClosestCore(); + + if(entity == null) return true; + + for(ItemStack s : r.requirements){ + if(!entity.items.hasItem(s.item, Mathf.ceil(s.amount/2f))){ + return true; + } + } + return false; + }); + recipeTable.add(image).size(size + 8); image.update(() -> { + image.getImage().setColor(image.isDisabled() ? Color.GRAY : Color.WHITE); for(Player player : players){ if(control.input(player.playerIndex).recipe == r){ image.setChecked(true); @@ -238,6 +257,7 @@ public class BlocksFragment implements Fragment{ }); if (i % rows == rows - 1) { + rowsUsed = Math.max((i+1)/rows, rowsUsed); recipeTable.row(); } @@ -252,7 +272,7 @@ public class BlocksFragment implements Fragment{ } selectTable.row(); - selectTable.add(stack).growX().left().top().colspan(Category.values().length).padBottom(-5).height((size + 12)*maxrow); + selectTable.add(stack).growX().left().top().colspan(Category.values().length).padBottom(-5).height((size + 12)*rowsUsed); } void toggle(boolean show, float t, Interpolation ip){ @@ -305,14 +325,7 @@ public class BlocksFragment implements Fragment{ for(ItemStack stack : recipe.requirements){ requirements.addImage(stack.item.region).size(8*3); - Label reqlabel = new Label(""); - - reqlabel.update(() -> { - int current = stack.amount; - String text = Mathf.clamp(current, 0, stack.amount) + "/" + stack.amount; - - reqlabel.setText(text); - }); + Label reqlabel = new Label(() -> Mathf.clamp(stack.amount, 0, stack.amount) + "/" + stack.amount); requirements.add(reqlabel).left(); requirements.row(); diff --git a/core/src/io/anuke/mindustry/world/ColorMapper.java b/core/src/io/anuke/mindustry/world/ColorMapper.java index 01788b4ecc..50d67046db 100644 --- a/core/src/io/anuke/mindustry/world/ColorMapper.java +++ b/core/src/io/anuke/mindustry/world/ColorMapper.java @@ -36,7 +36,8 @@ public class ColorMapper{ "c3a490", pair(Blocks.iron), "161616", pair(Blocks.coal), "6277bc", pair(Blocks.titanium), - "83bc58", pair(Blocks.thorium), + "c594dc", pair(Blocks.thorium), + "9790b5", pair(Blocks.lead), "000000", pair(Blocks.space) ); }