diff --git a/core/assets-raw/sprites/weapons/mortar.png b/core/assets-raw/sprites/weapons/shockgun.png similarity index 100% rename from core/assets-raw/sprites/weapons/mortar.png rename to core/assets-raw/sprites/weapons/shockgun.png diff --git a/core/assets-raw/sprites/weapons/railgun.png b/core/assets-raw/sprites/weapons/vulcan.png similarity index 100% rename from core/assets-raw/sprites/weapons/railgun.png rename to core/assets-raw/sprites/weapons/vulcan.png diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index cb4b792d3e..2d51ca34a1 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -281,10 +281,10 @@ upgrade.clustergun.name=clustergun upgrade.clustergun.description=Shoots an inaccurate spread of explosive grenades. upgrade.beam.name=beam cannon upgrade.beam.description=Shoots a long-range piercing laser beam. -upgrade.railgun.name=railgun -upgrade.railgun.description=Shoots one long-range bullet. -upgrade.mortar.name=mortar -upgrade.mortar.description=Shoots a slow, but damaging shell. +upgrade.vulcan.name=railgun +upgrade.vulcan.description=Shoots a barrage of fast bullets. +upgrade.shockgun.name=shockgun +upgrade.shockgun.description=Shoots a devastating blast of charged shrapnel. item.stone.name=stone item.iron.name=iron item.coal.name=coal diff --git a/core/assets/sprites/sprites.atlas b/core/assets/sprites/sprites.atlas index 67766caafd..29957bbd07 100644 --- a/core/assets/sprites/sprites.atlas +++ b/core/assets/sprites/sprites.atlas @@ -608,14 +608,14 @@ blocks/mortarturret index: -1 blocks/mossblock rotate: false - xy: 811, 445 + xy: 801, 443 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/mossstone rotate: false - xy: 811, 445 + xy: 801, 443 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -636,7 +636,7 @@ blocks/nuclearreactor-center index: -1 blocks/nuclearreactor-icon rotate: false - xy: 821, 445 + xy: 811, 445 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -657,7 +657,7 @@ blocks/nuclearreactor-small index: -1 blocks/oil rotate: false - xy: 831, 445 + xy: 821, 445 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -671,14 +671,14 @@ blocks/oiledge index: -1 blocks/oilrefinery rotate: false - xy: 841, 444 + xy: 831, 445 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/omnidrill rotate: false - xy: 851, 443 + xy: 841, 444 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -692,77 +692,77 @@ blocks/plasmaturret index: -1 blocks/playerspawn rotate: false - xy: 861, 443 + xy: 851, 443 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/powerbooster rotate: false - xy: 871, 445 + xy: 861, 443 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/poweredconveyor rotate: false - xy: 881, 445 + xy: 871, 445 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/poweredconveyormove rotate: false - xy: 891, 445 + xy: 881, 445 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/powerlaser rotate: false - xy: 901, 445 + xy: 891, 445 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/powerlasercorner rotate: false - xy: 911, 445 + xy: 901, 445 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/powerlaserrouter rotate: false - xy: 921, 445 + xy: 911, 445 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/pulseconduit rotate: false - xy: 931, 445 + xy: 921, 445 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/pulseconduitbottom rotate: false - xy: 941, 445 + xy: 931, 445 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/pulseconduittop rotate: false - xy: 951, 445 + xy: 941, 445 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/pump rotate: false - xy: 961, 445 + xy: 951, 445 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -776,77 +776,77 @@ blocks/repairturret index: -1 blocks/rock1 rotate: false - xy: 981, 445 + xy: 961, 445 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/rock2 rotate: false - xy: 991, 445 + xy: 971, 445 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/router rotate: false - xy: 1001, 445 + xy: 981, 445 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/rtgenerator rotate: false - xy: 1011, 445 + xy: 991, 445 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/rtgenerator-top rotate: false - xy: 527, 126 + xy: 1001, 445 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/sand1 rotate: false - xy: 527, 116 + xy: 1011, 445 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/sand2 rotate: false - xy: 524, 106 + xy: 527, 126 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/sand3 rotate: false - xy: 736, 381 + xy: 527, 116 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/sandblock1 rotate: false - xy: 740, 371 + xy: 524, 106 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/sandblock2 rotate: false - xy: 740, 361 + xy: 736, 381 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/sandblock3 rotate: false - xy: 740, 351 + xy: 740, 371 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -867,7 +867,7 @@ blocks/shadow index: -1 blocks/shieldgenerator rotate: false - xy: 740, 331 + xy: 740, 351 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -881,28 +881,28 @@ blocks/shotgunturret index: -1 blocks/shrub rotate: false - xy: 302, 79 + xy: 798, 393 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/shrubshadow rotate: false - xy: 312, 79 + xy: 302, 79 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/smelter rotate: false - xy: 322, 79 + xy: 312, 79 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/smelter-middle rotate: false - xy: 332, 79 + xy: 322, 79 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -916,42 +916,42 @@ blocks/sniperturret index: -1 blocks/snow1 rotate: false - xy: 342, 79 + xy: 332, 79 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/snow2 rotate: false - xy: 352, 79 + xy: 342, 79 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/snow3 rotate: false - xy: 362, 83 + xy: 352, 79 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/snowblock1 rotate: false - xy: 372, 83 + xy: 362, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/snowblock2 rotate: false - xy: 382, 83 + xy: 372, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/snowblock3 rotate: false - xy: 392, 83 + xy: 382, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -965,28 +965,28 @@ blocks/snowedge index: -1 blocks/sorter rotate: false - xy: 402, 83 + xy: 392, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/steelconveyor rotate: false - xy: 412, 83 + xy: 402, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/steelconveyormove rotate: false - xy: 422, 83 + xy: 412, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/steelwall rotate: false - xy: 432, 83 + xy: 422, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1000,56 +1000,56 @@ blocks/steelwall-large index: -1 blocks/steelwall-large-icon rotate: false - xy: 442, 83 + xy: 432, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stone1 rotate: false - xy: 452, 83 + xy: 442, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stone2 rotate: false - xy: 462, 83 + xy: 452, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stone3 rotate: false - xy: 472, 83 + xy: 462, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stoneblock1 rotate: false - xy: 482, 76 + xy: 472, 83 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stoneblock2 rotate: false - xy: 492, 72 + xy: 482, 76 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stoneblock3 rotate: false - xy: 502, 72 + xy: 492, 72 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stonedrill rotate: false - xy: 512, 72 + xy: 502, 72 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1063,35 +1063,35 @@ blocks/stoneedge index: -1 blocks/stoneformer rotate: false - xy: 522, 72 + xy: 512, 72 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/stonewall rotate: false - xy: 528, 96 + xy: 522, 72 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/teleporter rotate: false - xy: 534, 106 + xy: 528, 96 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/teleporter-top rotate: false - xy: 538, 96 + xy: 534, 106 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/thermalgenerator rotate: false - xy: 532, 86 + xy: 538, 96 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1112,49 +1112,49 @@ blocks/titancannon-icon index: -1 blocks/titanium1 rotate: false - xy: 532, 76 + xy: 532, 86 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titanium2 rotate: false - xy: 542, 86 + xy: 532, 76 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titanium3 rotate: false - xy: 542, 76 + xy: 542, 86 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumdrill rotate: false - xy: 746, 381 + xy: 542, 76 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumpurifier rotate: false - xy: 750, 371 + xy: 746, 381 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumshieldwall rotate: false - xy: 750, 361 + xy: 750, 371 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/titaniumwall rotate: false - xy: 750, 351 + xy: 750, 361 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1168,7 +1168,7 @@ blocks/titaniumwall-large index: -1 blocks/titaniumwall-large-icon rotate: false - xy: 750, 341 + xy: 750, 351 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1182,28 +1182,28 @@ blocks/turret index: -1 blocks/uranium1 rotate: false - xy: 740, 311 + xy: 750, 321 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/uranium2 rotate: false - xy: 750, 311 + xy: 740, 311 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/uranium3 rotate: false - xy: 734, 301 + xy: 750, 311 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 blocks/uraniumdrill rotate: false - xy: 744, 301 + xy: 734, 301 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1595,28 +1595,28 @@ mechs/ship-standard index: -1 shell rotate: false - xy: 740, 341 + xy: 740, 361 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shot rotate: false - xy: 740, 321 + xy: 740, 331 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 shot-long rotate: false - xy: 798, 393 + xy: 740, 321 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 titanshell rotate: false - xy: 750, 331 + xy: 750, 341 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2404,23 +2404,23 @@ weapons/clustergun orig: 8, 8 offset: 0, 0 index: -1 -weapons/mortar +weapons/shockgun rotate: false - xy: 801, 443 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -weapons/railgun - rotate: false - xy: 971, 445 + xy: 740, 341 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 weapons/triblaster rotate: false - xy: 750, 321 + xy: 750, 331 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +weapons/vulcan + rotate: false + xy: 744, 301 size: 8, 8 orig: 8, 8 offset: 0, 0 diff --git a/core/assets/sprites/sprites.png b/core/assets/sprites/sprites.png index a643823d64..ba125a346e 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/core/Control.java b/core/src/io/anuke/mindustry/core/Control.java index d75f10a7ca..712949d1c4 100644 --- a/core/src/io/anuke/mindustry/core/Control.java +++ b/core/src/io/anuke/mindustry/core/Control.java @@ -227,8 +227,8 @@ public class Control extends Module{ player.weaponLeft = player.weaponRight = weapons.first(); if(debug){ - weapons.add(Weapon.triblaster, Weapon.clustergun, Weapon.beam, Weapon.railgun); - weapons.add(Weapon.mortar); + weapons.add(Weapon.triblaster, Weapon.clustergun, Weapon.beam, Weapon.vulcan); + weapons.add(Weapon.shockgun); player.weaponLeft = player.weaponRight = weapons.peek(); } diff --git a/core/src/io/anuke/mindustry/entities/BulletType.java b/core/src/io/anuke/mindustry/entities/BulletType.java index e3e6bd79f3..4b11494003 100644 --- a/core/src/io/anuke/mindustry/entities/BulletType.java +++ b/core/src/io/anuke/mindustry/entities/BulletType.java @@ -323,7 +323,7 @@ public abstract class BulletType extends BaseBulletType{ DamageArea.damage(!(b.owner instanceof Enemy), b.x, b.y, 22f, damage); } }, - rail = new BulletType(4.5f, 11) { + vulcan = new BulletType(4.5f, 11) { { lifetime = 50; } @@ -345,7 +345,7 @@ public abstract class BulletType extends BaseBulletType{ } } }, - shotgun = new BulletType(5.4f, 10) { + shockshell = new BulletType(5.4f, 10) { { drag = 0.03f; diff --git a/core/src/io/anuke/mindustry/entities/effect/EMP.java b/core/src/io/anuke/mindustry/entities/effect/EMP.java index e0b284e94a..48b7adb103 100644 --- a/core/src/io/anuke/mindustry/entities/effect/EMP.java +++ b/core/src/io/anuke/mindustry/entities/effect/EMP.java @@ -56,7 +56,9 @@ public class EMP extends TimedEntity{ p.setPower(tile, 0f); tile.entity.damage((int)(damage*1.5f)); //extra damage } - + + if(tile == null) continue; + //entity may be null here, after the block is dead! Effects.effect(Fx.empspark, tile.worldx(), tile.worldy()); if(tile.entity != null) tile.entity.damage(damage); @@ -96,7 +98,7 @@ public class EMP extends TimedEntity{ float dx = Mathf.range(r), dy = Mathf.range(r); - float frac = (float)(seg+1f)/joints; + float frac = (seg+1f)/joints; float tx = (targetx - x)*frac + x + dx, ty = (targety - y)*frac + y + dy; diff --git a/core/src/io/anuke/mindustry/graphics/Fx.java b/core/src/io/anuke/mindustry/graphics/Fx.java index 9c0c5e0995..db3cab3b4c 100644 --- a/core/src/io/anuke/mindustry/graphics/Fx.java +++ b/core/src/io/anuke/mindustry/graphics/Fx.java @@ -372,13 +372,13 @@ public class Fx{ Draw.reset(); }), - railShoot = new Effect(8, e -> { + vulcanShoot = new Effect(8, e -> { Draw.color(lighterOrange, lightOrange, e.ifract()); Draw.lineShot(e.x, e.y, e.rotation, 3, e.fract(), 10f, 2f, 0.7f); Draw.reset(); }), - mortarShoot = new Effect(8, e -> { + shockShoot = new Effect(8, e -> { Draw.color(Color.WHITE, Color.ORANGE, e.ifract()); Draw.lineShot(e.x, e.y, e.rotation, 3, e.fract(), 14f, 4f, 0.8f); Draw.reset(); diff --git a/core/src/io/anuke/mindustry/resource/UpgradeRecipes.java b/core/src/io/anuke/mindustry/resource/UpgradeRecipes.java index 742d3a963c..a3854e9e58 100644 --- a/core/src/io/anuke/mindustry/resource/UpgradeRecipes.java +++ b/core/src/io/anuke/mindustry/resource/UpgradeRecipes.java @@ -6,11 +6,11 @@ import io.anuke.ucore.util.Mathf; public class UpgradeRecipes { private static final ObjectMap recipes = Mathf.map( - Weapon.triblaster, list(stack(Item.iron, 40)), - Weapon.clustergun, list(stack(Item.iron, 60), stack(Item.steel, 20)), - Weapon.beam, list(stack(Item.steel, 60), stack(Item.iron, 120)), - Weapon.railgun, list(stack(Item.iron, 60), stack(Item.steel, 60)), - Weapon.mortar, list(stack(Item.titanium, 40), stack(Item.steel, 60)) + Weapon.triblaster, list(stack(Item.iron, 40), stack(Item.steel, 40)), + Weapon.clustergun, list(stack(Item.iron, 60), stack(Item.steel, 80)), + Weapon.vulcan, list(stack(Item.iron, 60), stack(Item.steel, 120), stack(Item.titanium, 60)), + Weapon.beam, list(stack(Item.steel, 240), stack(Item.titanium, 120), stack(Item.dirium, 80)), + Weapon.shockgun, list(stack(Item.steel, 120), stack(Item.titanium, 120), stack(Item.dirium, 120)) ); private static final ItemStack[] empty = {}; diff --git a/core/src/io/anuke/mindustry/resource/Weapon.java b/core/src/io/anuke/mindustry/resource/Weapon.java index bde5a5e6a6..e23fc32bdd 100644 --- a/core/src/io/anuke/mindustry/resource/Weapon.java +++ b/core/src/io/anuke/mindustry/resource/Weapon.java @@ -45,21 +45,20 @@ public class Weapon extends Upgrade{ shake = 2f; } }, - railgun = new Weapon("railgun", 5, BulletType.rail){ + vulcan = new Weapon("vulcan", 5, BulletType.vulcan){ { - shootsound = "railgun"; - effect = Fx.railShoot; + shootsound = "vulcan"; + effect = Fx.vulcanShoot; inaccuracy = 5; roundrobin = true; shake = 1f; inaccuracy = 4f; } }, - //TODO rename! - mortar = new Weapon("mortar", 36, BulletType.shotgun){ + shockgun = new Weapon("shockgun", 36, BulletType.shockshell){ { shootsound = "bigshot"; - effect = Fx.mortarShoot; + effect = Fx.shockShoot; shake = 2f; roundrobin = true; shots = 7;