diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 4fa00bd859..94a4e69a14 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -2448,7 +2448,7 @@ unit.collaris.description = Fires long-range fragmenting artillery at enemy targ unit.elude.description = Fires pairs of homing bullets at enemy targets. Can float over bodies of liquid. unit.avert.description = Fires twisting pairs of bullets at enemy targets. unit.obviate.description = Fires twisting pairs of lightning orbs at enemy targets. -unit.quell.description = Fires long-range homing missiles at enemy targets. Suppresses enemy structure repair blocks. Only attacks ground targets. +unit.quell.description = Fires long-range homing missiles with unstable plasma shielding at enemy targets. Suppresses enemy structure repair blocks. Only attacks ground targets. unit.disrupt.description = Fires long-range homing suppression missiles at enemy targets. Suppresses enemy structure repair blocks. Only attacks ground targets. unit.evoke.description = Builds structures to defend the Bastion core. Repairs structures with a beam. Capable of carrying 2x2 structures. unit.incite.description = Builds structures to defend the Citadel core. Repairs structures with a beam. Capable of carrying 2x2 structures. diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index 6e34ac4264..113193b15a 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -3829,8 +3829,10 @@ public class UnitTypes{ engineSize = 4.8f; engineOffset = 61 / 4f; + range = 4.3f * 60f * 1.4f; abilities.add(new SuppressionFieldAbility(){{ + reload = 60f * 8f; orbRadius = 5.3f; y = 1f; }}); @@ -3846,36 +3848,59 @@ public class UnitTypes{ recoil = 1f; rotationLimit = 60f; - bullet = new BulletType(){{ + bullet = new BasicBulletType(4.3f, 70f, "missile-large"){{ shootEffect = Fx.shootBig; smokeEffect = Fx.shootBigSmoke2; shake = 1f; - speed = 0f; + lifetime = 60 * 0.496f; + rangeOverride = 361.2f; + followAimSpeed = 5f; + + width = 12f; + height = 22f; + hitSize = 7f; + hitColor = backColor = trailColor = Pal.sapBulletBack; + trailWidth = 3f; + trailLength = 12; + hitEffect = despawnEffect = Fx.hitBulletColor; + keepVelocity = false; + collidesGround = true; collidesAir = false; - spawnUnit = new MissileUnitType("quell-missile"){{ - targetAir = false; - speed = 4.3f; - maxRange = 6f; - lifetime = 60f * 1.4f; - outlineColor = Pal.darkOutline; - engineColor = trailColor = Pal.sapBulletBack; - engineLayer = Layer.effect; - health = 45; - loopSoundVolume = 0.1f; + //workaround to get the missile to behave like in spawnUnit while still spawning on death + fragRandomSpread = 0; + fragBullets = 1; + fragVelocityMin = 1f; + fragOffsetMax = 1f; - weapons.add(new Weapon(){{ - shootSound = Sounds.none; - shootCone = 360f; - mirror = false; - reload = 1f; - shootOnDeath = true; - bullet = new ExplosionBulletType(110f, 25f){{ - shootEffect = Fx.massiveExplosion; - collidesAir = false; - }}; - }}); + fragBullet = new BulletType(){{ + speed = 0f; + keepVelocity = false; + collidesAir = false; + spawnUnit = new MissileUnitType("quell-missile"){{ + targetAir = false; + speed = 4.3f; + maxRange = 6f; + lifetime = 60f * (1.4f - 0.496f); + outlineColor = Pal.darkOutline; + engineColor = trailColor = Pal.sapBulletBack; + engineLayer = Layer.effect; + health = 45; + loopSoundVolume = 0.1f; + + weapons.add(new Weapon() {{ + shootSound = Sounds.none; + shootCone = 360f; + mirror = false; + reload = 1f; + shootOnDeath = true; + bullet = new ExplosionBulletType(110f, 25f) {{ + shootEffect = Fx.massiveExplosion; + collidesAir = false; + }}; + }}); + }}; }}; }}; }}); @@ -3909,6 +3934,8 @@ public class UnitTypes{ int parts = 10; abilities.add(new SuppressionFieldAbility(){{ + reload = 60 * 15f; + range = 320f; orbRadius = orbRad; particleSize = partRad; y = 10f; diff --git a/core/src/mindustry/entities/abilities/SuppressionFieldAbility.java b/core/src/mindustry/entities/abilities/SuppressionFieldAbility.java index be69a45797..9785ac6597 100644 --- a/core/src/mindustry/entities/abilities/SuppressionFieldAbility.java +++ b/core/src/mindustry/entities/abilities/SuppressionFieldAbility.java @@ -17,6 +17,7 @@ public class SuppressionFieldAbility extends Ability{ protected static Rand rand = new Rand(); public float reload = 60f * 1.5f; + public float maxDelay = 60f * 1.5f; public float range = 200f; public float orbRadius = 4.1f, orbMidScl = 0.33f, orbSinScl = 8f, orbSinMag = 1f; @@ -55,9 +56,9 @@ public class SuppressionFieldAbility extends Ability{ public void update(Unit unit){ if(!active) return; - if((timer += Time.delta) >= reload){ + if((timer += Time.delta) >= maxDelay){ Tmp.v1.set(x, y).rotate(unit.rotation - 90f).add(unit); - Damage.applySuppression(unit.team, Tmp.v1.x, Tmp.v1.y, range, reload, reload, applyParticleChance, unit, effectColor); + Damage.applySuppression(unit.team, Tmp.v1.x, Tmp.v1.y, range, reload, maxDelay, applyParticleChance, unit, effectColor); timer = 0f; } } diff --git a/core/src/mindustry/ui/fragments/PlacementFragment.java b/core/src/mindustry/ui/fragments/PlacementFragment.java index 6213c923c3..013695c336 100644 --- a/core/src/mindustry/ui/fragments/PlacementFragment.java +++ b/core/src/mindustry/ui/fragments/PlacementFragment.java @@ -251,12 +251,16 @@ public class PlacementFragment{ } if(Core.input.keyTap(Binding.blockInfo)){ - var build = world.buildWorld(Core.input.mouseWorld().x, Core.input.mouseWorld().y); - Block hovering = build == null ? null : build instanceof ConstructBuild c ? c.current : build.block; - Block displayBlock = menuHoverBlock != null ? menuHoverBlock : input.block != null ? input.block : hovering; - if(displayBlock != null && displayBlock.unlockedNow()){ - ui.content.show(displayBlock); - Events.fire(new BlockInfoEvent()); + if(hovered() instanceof Unit unit && unit.type.unlockedNow()){ + ui.content.show(unit.type()); + }else{ + var build = world.buildWorld(Core.input.mouseWorld().x, Core.input.mouseWorld().y); + Block hovering = build == null ? null : build instanceof ConstructBuild c ? c.current : build.block; + Block displayBlock = menuHoverBlock != null ? menuHoverBlock : input.block != null ? input.block : hovering; + if(displayBlock != null && displayBlock.unlockedNow()){ + ui.content.show(displayBlock); + Events.fire(new BlockInfoEvent()); + } } } diff --git a/servers_v7.json b/servers_v7.json index d7ced22a1e..b3d254ae05 100644 --- a/servers_v7.json +++ b/servers_v7.json @@ -1,27 +1,4 @@ [ - { - "name": "EscoCorp", - "address": [ - "121.127.37.17", - "121.127.37.17:6568", - "121.127.37.17:6569", - "121.127.37.17:6570", - "121.121.37.17:6571", - "121.127.37.17:6572", - "121.127.37.17:6573", - "31.58.85.20:6567", - "194.164.245.218:6567", - "194.164.245.218:6568", - "194.164.245.218:6569", - "194.164.245.218:6570", - "194.164.245.218:6571", - "194.164.245.218:6572", - "194.164.245.218:6573", - "194.164.245.218:6574", - "194.164.245.218:6575", - "194.164.245.218:6576" - ] - }, { "name": "EchoDustry", "address": [ @@ -262,7 +239,7 @@ { "name": "Kalpe Games", "address": [ - "mindustry.kalpe.games" + "mv7-survival.kalpe.games" ] }, { @@ -329,7 +306,12 @@ "server.mindustry-tool.com:10002", "server.mindustry-tool.com:10003", "server.mindustry-tool.com:10004", - "server.mindustry-tool.com:10005" + "server.mindustry-tool.com:10005", + "144.76.57.59:14899", + "144.76.57.59:24942", + "144.76.57.59:19672", + "144.76.57.59:12858", + "144.76.57.59:14761" ] }, {