diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 16555d31db..e1a9a0f5a5 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -2160,3 +2160,109 @@ lenum.boost = Start/stop boosting. #Don't translate these yet! onset.commandmode = Hold [accent]shift[] to enter [accent]command mode[].\n[accent]Left-click and drag[] to select units.\n[accent]Right-click[] to order selected units to move or attack. onset.commandmode.mobile = Press the [accent]command button[] to enter [accent]command mode[].\nHold down a finger, then [accent]drag[] to select units.\n[accent]Tap[] to order selected units to move or attack. + + +#TODO! +block.core-bastion.description = Core of the base. Armored. Once destroyed, the sector is lost. +block.core-citadel.description = Core of the base. Very well armored. Stores more resources than a Bastion. +block.core-acropolis.description = Core of the base. Exceptionally well armored. Stores more resources than a Citadel. + +block.breach.description = Fires piercing beryllium or tungsten ammunition at enemy targets. +block.diffuse.description = Fires a burst of bullets in a wide cone. +block.sublimate.description = Fires a continuous jet of flame at enemy targets. Pierces armor. +block.titan.description = Fires a massive explosive artillery shell at ground targets. Requires hydrogen. +block.afflict.description = Fires a massive charged orb of fragmentary flak. Requires heating. +block.disperse.description = Fires bursts of flak at aerial targets. +block.lustre.description = Fires a slow-moving single-target laser at enemy targets. +block.scathe.description = Launches a powerful missile at ground targets over vast distances. +block.smite.description = Fires bursts of lightning-emitting piercing bullets. +block.malign.description = Fires a barrage of homing laser charges at enemy targets. Requires extensive heating. + +block.silicon-arc-furnace.description = Refines silicon from sand and graphite. +block.oxidation-chamber.description = Converts beryllium and ozone into oxide. Emits heat as a by-product. +block.electric-heater.description = Heats facing blocks. Requires power. Inefficient, but simple. +block.slag-heater.description = Heats facing blocks. Requires slag. +block.phase-heater.description = Heats facing blocks. Requires phase fabric. +block.heat-redirector.description = Redirects accumulated heat to other blocks. +block.electrolyzer.description = Converts water into hydrogen and ozone gas. +block.atmospheric-concentrator.description = Concentrates nitrogen from the atmosphere. Requires heat. +block.surge-crucible.description = Forms surge alloy from slag and silicon. Requires heat. +block.phase-synthesizer.description = Synthesizes phase fabric from thorium, sand, and ozone. Requires heat. +block.carbide-crucible.description = Fuses graphite and tungsten into carbide. Requires heat. +block.cyanogen-synthesizer.description = Synthesizes cyanogen from arkycite and graphite. Requires heat. +block.slag-incinerator.description = Incinerates non-volatile items or liquids. Requires slag. +block.vent-condenser.description = Condenses vent gases into water. Consumes power. + +block.plasma-bore.description = When placed facing an ore wall, outputs items indefinitely. Requires small amounts of power. +block.large-plasma-bore.description = A larger plasma bore. Capable of mining tungsten and thorium. Requires hydrogen and power. +block.cliff-crusher.description = Crushes walls, outputting sand indefinitely. Requires power. Efficiency varies based on type of wall. +block.impact-drill.description = When placed on ore, outputs items in bursts indefinitely. Requires power and water. +block.eruption-drill.description = An improved impact drill. Capable of mining thorium. Requires hydrogen. +block.reinforced-conduit.description = Moves fluids forward. Doesn't accept non-conduit inputs to the sides. +block.reinforced-liquid-router.description = Distributes fluids equally to all sides. +block.reinforced-junction.description = Acts as a bridge for two crossing conduits. +block.reinforced-liquid-tank.description = Stores a large amount of fluids. +block.reinforced-liquid-container.description = Stores a sizeable amount of fluids. +block.reinforced-bridge-conduit.description = Transports fluids over structures and terrain. +block.reinforced-pump.description = Pumps and outputs liquids. Requires hydrogen. +block.beryllium-wall.description = Protects structures from enemy projectiles. +block.beryllium-wall-large.description = Protects structures from enemy projectiles. +block.tungsten-wall.description = Protects structures from enemy projectiles. +block.tungsten-wall-large.description = Protects structures from enemy projectiles. +block.carbide-wall.description = Protects structures from enemy projectiles. +block.carbide-wall-large.description = Protects structures from enemy projectiles. +block.reinforced-surge-wall.description = Protects structures from enemy projectiles, periodically launching electric arcs upon projectile contact. +block.reinforced-surge-wall-large.description = Protects structures from enemy projectiles, periodically launching electric arcs upon projectile contact. +block.shielded-wall.description = Protects structures from enemy projectiles. Deploys a shield that absorbs most projectiles when power is provided. Conducts power. +block.blast-door.description = A wall that opens and closes automatically whenever a friendly ground unit approaches it. Cannot be manually controlled. +block.duct.description = Moves items forward. Only capable of storing a single item. +block.armored-duct.description = Moves items forward. Does not accept non-duct inputs from the sides. +block.duct-router.description = Distributes items equally across three directions. Only accepts items from the back side. Can be configured as an item sorter. +block.overflow-duct.description = Only outputs items to the sides if the front path is blocked. +block.duct-bridge.description = Moves items over structures and terrain. +block.duct-unloader.description = Unloads the selected item from the block behind it. Cannot unload from cores. +block.surge-conveyor.description = Moves items in batches. Can be sped up with power. Conducts power. +block.surge-router.description = Equally distributes items in three directions from surge conveyors. Can be sped up with power. Conducts power. +block.unit-cargo-loader.description = Constructs cargo drones. Drones automatically distribute items to Cargo Unload Points with a matching filter. +block.unit-cargo-unload-point.description = Acts as an unloading point for cargo drones. Accepts items that match the selected filter. +block.beam-node.description = Transmits power to other blocks orthogonally. Stores a small amount of power. +block.beam-tower.description = Transmits power to other blocks orthogonally. Stores a large amount of power. Long-range. +block.turbine-condenser.description = Generates power when placed on vents. Produces a small amount of water. +block.chemical-combustion-chamber.description = Generates power from arkycite and ozone. +block.pyrolysis-generator.description = Generates large amounts of power from arkycite and slag. Produces water as a byproduct. +block.flux-reactor.description = Generates large amounts of power when heated. Requires cyanogen as a stabilizer. Power output and cyanogen requirements are proportional to heat input.\nExplodes if insufficient cyanogen is provided. +block.neoplasia-reactor.description = Uses arkycite, water and phase fabric to generate large amounts of power. Produces heat and dangerous neoplasm as a byproduct.\nExplodes violently if neoplasm is not removed from the reactor via conduits. +block.build-tower.description = Automatically rebuilds structures in range and assists other units in construction. +block.regen-projector.description = Slowly repairs allied structures in a square perimeter. Requires hydrogen. +block.reinforced-container.description = Stores a small amount of items. Contents can be retrieved via unloaders. Doesn't increase core storage capacity. +block.reinforced-vault.description = Stores a large amount of items. Contents can be retrieved via unloaders. Doesn't increase core storage capacity. +block.tank-fabricator.description = Constructs Stell units. Outputted units can be used directly, or moved into refabricators for upgrading. +block.ship-fabricator.description = Constructs Elude units. Outputted units can be used directly, or moved into refabricators for upgrading. +block.mech-fabricator.description = Constructs Merui units. Outputted units can be used directly, or moved into refabricators for upgrading. +block.tank-assembler.description = Assembles large tanks out of inputted blocks and units. Output tier may be increased by adding modules. +block.ship-assembler.description = Assembles large ships out of inputted blocks and units. Output tier may be increased by adding modules. +block.mech-assembler.description = Assembles large mechs out of inputted blocks and units. Output tier may be increased by adding modules. +block.tank-refabricator.description = Upgrades inputted tank units to the second tier. +block.ship-refabricator.description = Upgrades inputted ship units to the second tier. +block.mech-refabricator.description = Upgrades inputted mech units to the second tier. +block.prime-refabricator.description = Upgrades inputted units to the third tier. +block.basic-assembler-module.description = Increases assembler tier when placed next to a construction boundary. Requires power. Can be used as a payload input. +block.small-deconstructor.description = Deconstructs inputted structures and units. Returns 100% of the build cost. +block.reinforced-payload-conveyor.description = Moves payloads forward. +block.reinforced-payload-router.description = Distributes payloads into adjacent blocks. Functions as a sorter when a filter is set. +block.payload-mass-driver.description = Long range payload transport structure. Shoots received payloads to linked payload mass drivers. +block.unit-repair-tower.description = Repairs all units in its vicinity. Requires ozone. +block.radar.description = Gradually uncovers terrain and enemy units in a large radius. Requires power. +block.shockwave-tower.description = Damages and destroys enemy projectiles in a radius. Requires cyanogen. + +item.beryllium.description = Used in many types of construction and ammunition on Erekir. +item.tungsten.description = Used in drills, armor and ammunition. Required in the construction of more advanced structures. +item.oxide.description = Used as a heat conductor and insulator for power. +item.carbide.description = Used in advanced structures, heavier units, and ammunition. +liquid.arkycite.description = Used in chemical reactions for power generation and material synthesis. +liquid.ozone.description = Used as an oxidizing agent in material production, and as fuel. Moderately explosive. +liquid.hydrogen.description = Used in resource extraction, unit production and structure repair. Flammable. +liquid.cyanogen.description = Used for ammunition, construction of advanced units, and various reactions in advanced blocks. Highly flammable. +liquid.nitrogen.description = Used in resource extraction, gas creation and unit production. Inert. +liquid.neoplasm.description = A dangerous biological byproduct of the Neoplasia reactor. Quickly spreads to any adjacent water-containing block it touches, damaging them in the process. Viscous. +liquids.neoplasm.details = Neoplasm. An uncontrollable mass of rapidly-dividing synthetic cells with a sludge-like consistency. Heat-resistant. Extremely dangerous to any structures involving water.\n\nToo complex and unstable for standard analysis. Potential applications unknown. Incineration in slag pools is recommended. \ No newline at end of file diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 256a31ff92..60b82023c5 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -2566,8 +2566,8 @@ public class Blocks{ itemDuration = 60f * 3f; itemCapacity = 10; - explosionRadius = 5; - explosionDamage = 500; + explosionRadius = 7; + explosionDamage = 1000; explodeEffect = new MultiEffect(Fx.bigShockwave, new WrapEffect(Fx.titanSmoke, Liquids.neoplasm.color), Fx.neoplasmSplat); explodeSound = Sounds.largeExplosion; @@ -4842,10 +4842,11 @@ public class Blocks{ outlineColor = Pal.darkOutline; size = 5; envEnabled |= Env.space; + warmupMaintainTime = 30f; reload = 100f; recoil = 2f; range = 300; - shootCone = 10f; + shootCone = 30f; scaledHealth = 350; rotateSpeed = 1.5f; @@ -4871,7 +4872,7 @@ public class Blocks{ loopSound = Sounds.spellLoop; loopSoundVolume = 1.3f; - shootType = new FlakBulletType(8f, 80f){{ + shootType = new FlakBulletType(8f, 70f){{ sprite = "missile-large"; lifetime = 45f; @@ -4908,7 +4909,7 @@ public class Blocks{ flakInterval = 20f; despawnShake = 3f; - fragBullet = new LaserBulletType(90f){{ + fragBullet = new LaserBulletType(65f){{ colors = new Color[]{haloColor.cpy().a(0.4f), haloColor, Color.white}; buildingDamageMultiplier = 0.25f; width = 19f; @@ -5167,6 +5168,7 @@ public class Blocks{ velocityRnd = 0.15f; heatRequirement = 90f; maxHeatEfficiency = 2f; + warmupMaintainTime = 30f; consumePower(10f); shoot = new ShootSummon(0f, 0f, circleRad, 48f); diff --git a/core/src/mindustry/world/blocks/defense/turrets/Turret.java b/core/src/mindustry/world/blocks/defense/turrets/Turret.java index 994515f016..dcaec29eab 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/Turret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/Turret.java @@ -66,6 +66,8 @@ public class Turret extends ReloadTurret{ public boolean accurateDelay = true; /** If false, this turret can't move while charging. */ public boolean moveWhileCharging = true; + /** How long warmup is maintained even if this turret isn't shooting. */ + public float warmupMaintainTime = 0f; /** pattern used for bullets */ public ShootPattern shoot = new ShootPattern(); @@ -206,7 +208,7 @@ public class Turret extends ReloadTurret{ public Seq ammo = new Seq<>(); public int totalAmmo; public float curRecoil, heat, logicControlTime = -1; - public float shootWarmup, charge; + public float shootWarmup, charge, warmupHold = 0f; public int totalShots; public boolean logicShooting = false; public @Nullable Posc target; @@ -344,6 +346,14 @@ public class Turret extends ReloadTurret{ if(!validateTarget()) target = null; float warmupTarget = (isShooting() && canConsume()) || charging() ? 1f : 0f; + if(warmupTarget > 0){ + warmupHold = 1f; + } + if(warmupHold > 0f){ + warmupHold -= Time.delta / warmupMaintainTime; + warmupTarget = 1f; + } + if(linearWarmup){ shootWarmup = Mathf.approachDelta(shootWarmup, warmupTarget, shootWarmupSpeed * (warmupTarget > 0 ? efficiency : 1f)); }else{ diff --git a/core/src/mindustry/world/blocks/power/VariableReactor.java b/core/src/mindustry/world/blocks/power/VariableReactor.java index 058639169b..ae9aa1c693 100644 --- a/core/src/mindustry/world/blocks/power/VariableReactor.java +++ b/core/src/mindustry/world/blocks/power/VariableReactor.java @@ -38,8 +38,8 @@ public class VariableReactor extends PowerGenerator{ rebuildable = false; - explosionRadius = 12; - explosionDamage = 1000; + explosionRadius = 16; + explosionDamage = 1500; explodeEffect = new MultiEffect(Fx.bigShockwave, new WrapEffect(Fx.titanSmoke, Color.valueOf("e3ae6f"))); explodeSound = Sounds.explosionbig; diff --git a/tools/build.gradle b/tools/build.gradle index 9334c00200..b029266302 100644 --- a/tools/build.gradle +++ b/tools/build.gradle @@ -315,7 +315,7 @@ task updateBundles{ removals.clear() for(String key : other.orderedKeys()){ - if(!base.containsKey(key) && key.contains(".details")){ + if(!base.containsKey(key) && key.contains(".details") && false){ extras.put(key, other.get(key)) }else if(!base.containsKey(key)){ removals.add(key)