diff --git a/core/assets/bundles/bundle_de.properties b/core/assets/bundles/bundle_de.properties index 775d11ff0d..64f33a9f70 100644 --- a/core/assets/bundles/bundle_de.properties +++ b/core/assets/bundles/bundle_de.properties @@ -287,7 +287,7 @@ save.corrupted = [accent]Datei beschädigt oder ungültig! empty = on = An off = Aus -save.search = Search saved games... +save.search = Spiele durchsuchen... save.autosave = Automatisches Speichern: {0} save.map = Karte: {0} save.wave = Welle: {0} @@ -381,11 +381,11 @@ editor.newmap = Neue Karte editor.center = Zur Mitte editor.search = Karten durchsuchen... editor.filters = Karten filtern -editor.filters.mode = Gamemodes: -editor.filters.type = Map Type: -editor.filters.search = Search In: -editor.filters.author = Author -editor.filters.description = Description +editor.filters.mode = Spielmodi: +editor.filters.type = Kartentyp: +editor.filters.search = Suchen nach: +editor.filters.author = Autor +editor.filters.description = Beschreibung workshop = Workshop waves.title = Wellen waves.remove = Entfernen @@ -419,7 +419,7 @@ wavemode.health = Lebenspunkte editor.default = [lightgray] details = Details edit = Bearbeiten -variables = Vars +variables = Variablen editor.name = Name: editor.spawn = Spawnbereich editor.removeunit = Bereich entfernen @@ -1300,7 +1300,7 @@ block.plated-conduit.name = Gepanzerter Kanal block.phase-conduit.name = Phasenkanal block.liquid-router.name = Flüssigkeits-Verteiler block.liquid-tank.name = Flüssigkeitstank -block.liquid-container.name = Liquid Container +block.liquid-container.name = Flüssigkeitsbehälter block.liquid-junction.name = Flüssigkeits-Kreuzung block.bridge-conduit.name = Kanalbrücke block.rotary-pump.name = Rotierende Pumpe @@ -1347,16 +1347,16 @@ block.disassembler.name = Großer Trenner block.silicon-crucible.name = Silizium Schmelztiegel block.overdrive-dome.name = Beschleunigungs-Maschine block.interplanetary-accelerator.name = Interplanetarischer Beschleuniger -block.constructor.name = Constructor -block.constructor.description = Fabricates structures up to 2x2 tiles in size. -block.large-constructor.name = Large Constructor -block.large-constructor.description = Fabricates structures up to 4x4 tiles in size. -block.deconstructor.name = Deconstructor -block.deconstructor.description = Deconstructs structures and units. Returns 100% of build cost. -block.payload-loader.name = Payload Loader -block.payload-loader.description = Load liquids and items into blocks. -block.payload-unloader.name = Payload Unloader -block.payload-unloader.description = Unloads liquids and items from blocks. +block.constructor.name = Konstruktor +block.constructor.description = Erstellt Blöcke, die höchstens 2x2 groß sind. +block.large-constructor.name = Großer Konstruktor +block.large-constructor.description = Erstellt Blöcke, die höchstens 4x4 groß sind. +block.deconstructor.name = Dekonstruktor +block.deconstructor.description = Zerstört Einheiten und Blöcke. Gibt 100% der Baumaterialien zurück. +block.payload-loader.name = Frachtlader +block.payload-loader.description = Lädt Blöcke und Items in Blöcke. +block.payload-unloader.name = Frachtentlader +block.payload-unloader.description = Entlädt Blöcke und Items aus Blöcken. block.switch.name = Schalter block.micro-processor.name = Mikroprozessor @@ -1511,8 +1511,8 @@ block.impulse-pump.description = Eine Pumpe. block.conduit.description = Transportiert Flüssigkeiten. Wird mit Extraktoren, Pumpen oder anderen Kanälen benutzt. block.pulse-conduit.description = Transportiert Flüssigkeiten. Transportiert Flüssigkeiten schneller und speichert mehr als ein Leitungsrohr. block.plated-conduit.description = Transportiert Flüssigkeiten. Nimmt keine Flüssigkeiten von der Seite an.\nHat keine Lecks. -block.liquid-router.description = Verteilt Flüssigkeiten auf bis zu drei Richtungen. Speicher außerdem eine kleine Menge an Flüssigkeit. -block.liquid-container.description = Stores a sizeable amount of liquid. Outputs to all sides, similarly to a liquid router. +block.liquid-router.description = Verteilt Flüssigkeiten auf bis zu drei Richtungen. Speichert außerdem eine kleine Menge an Flüssigkeit. +block.liquid-container.description = Speichert etwas Flüssigkeit. Hat Ausgänge an allen Seiten, ähnlich einem Flüssigkeitsverteiler. block.liquid-tank.description = Speichert eine große Menge an Flüssigkeiten. Ähnlich wie ein Flüssigkeitsverteiler. block.liquid-junction.description = Fungiert als Brücke über zwei kreuzende Kanäle. block.bridge-conduit.description = Transportiert Flüssigkeiten über Terrain oder über Blöcke. @@ -1778,7 +1778,7 @@ lenum.itemdrop = Items abwerfen. lenum.itemtake = Items aus einem Block nehmen. lenum.paydrop = Lässt einen Block / eine Einheit wieder fallen. lenum.paytake = Hebt einen Block / eine kleine Einheit auf. -lenum.payenter = Enter/land on the payload block the unit is on. +lenum.payenter = Betritt den Fracht-Block, auf dem sich die Einheit befindet. lenum.flag = Zahl, mit der eine Einheit identifiziert werden kann. lenum.mine = Erz von einer Position abbauen. lenum.build = Einen Block bauen. diff --git a/core/src/mindustry/entities/comp/BuildingComp.java b/core/src/mindustry/entities/comp/BuildingComp.java index cc4bb003b6..75aa611dbb 100644 --- a/core/src/mindustry/entities/comp/BuildingComp.java +++ b/core/src/mindustry/entities/comp/BuildingComp.java @@ -468,8 +468,15 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, } unit.remove(); + //needs new ID as it is now a payload - unit.id = EntityGroup.nextId(); + if(net.client()){ + unit.id = EntityGroup.nextId(); + }else{ + //server-side, this needs to be delayed until next frame because otherwise the packets sent out right after this event would have the wrong unit ID, leading to ghosts + Core.app.post(() -> unit.id = EntityGroup.nextId()); + } + grabber.get(new UnitPayload(unit)); Fx.unitDrop.at(unit); } diff --git a/core/src/mindustry/entities/effect/ParticleEffect.java b/core/src/mindustry/entities/effect/ParticleEffect.java index 477e52e19a..7fedbe189e 100644 --- a/core/src/mindustry/entities/effect/ParticleEffect.java +++ b/core/src/mindustry/entities/effect/ParticleEffect.java @@ -32,6 +32,8 @@ public class ParticleEffect extends Effect{ public float spin = 0f; /** Controls the initial and final sprite sizes. */ public float sizeFrom = 2f, sizeTo = 0f; + /** Whether the rotation adds with the parent */ + public boolean useRotation = true; /** Rotation offset. */ public float offset = 0; /** Sprite to draw. */ @@ -53,10 +55,11 @@ public class ParticleEffect extends Effect{ public void render(EffectContainer e){ if(tex == null) tex = Core.atlas.find(region); + float realRotation = (useRotation ? e.rotation : baseRotation); float rawfin = e.fin(); float fin = e.fin(interp); float rad = sizeInterp.apply(sizeFrom, sizeTo, rawfin) * 2; - float ox = e.x + Angles.trnsx(e.rotation, offsetX, offsetY), oy = e.y + Angles.trnsy(e.rotation, offsetX, offsetY); + float ox = e.x + Angles.trnsx(realRotation, offsetX, offsetY), oy = e.y + Angles.trnsy(realRotation, offsetX, offsetY); Draw.color(colorFrom, colorTo, fin); Color lightColor = this.lightColor == null ? Draw.getColor() : this.lightColor; @@ -68,7 +71,7 @@ public class ParticleEffect extends Effect{ rand.setSeed(e.id); for(int i = 0; i < particles; i++){ float l = length * fin + baseLength; - rv.trns(e.rotation + rand.range(cone), !randLength ? l : rand.random(l)); + rv.trns(realRotation + rand.range(cone), !randLength ? l : rand.random(l)); float x = rv.x, y = rv.y; Lines.lineAngle(ox + x, oy + y, Mathf.angle(x, y), len); @@ -78,10 +81,10 @@ public class ParticleEffect extends Effect{ rand.setSeed(e.id); for(int i = 0; i < particles; i++){ float l = length * fin + baseLength; - rv.trns(e.rotation + rand.range(cone), !randLength ? l : rand.random(l)); + rv.trns(realRotation + rand.range(cone), !randLength ? l : rand.random(l)); float x = rv.x, y = rv.y; - Draw.rect(tex, ox + x, oy + y, rad, rad, e.rotation + offset + e.time * spin); + Draw.rect(tex, ox + x, oy + y, rad, rad, realRotation + offset + e.time * spin); Drawf.light(ox + x, oy + y, rad * lightScl, lightColor, lightOpacity * Draw.getColor().a); } } diff --git a/core/src/mindustry/io/JsonIO.java b/core/src/mindustry/io/JsonIO.java index 497ed7546a..b3984444ab 100644 --- a/core/src/mindustry/io/JsonIO.java +++ b/core/src/mindustry/io/JsonIO.java @@ -231,8 +231,8 @@ public class JsonIO{ UnitType unit = Vars.content.getByName(ContentType.unit, str); return item != null ? item : - block != null ? block : liquid != null ? liquid : + block != null ? block : unit; } }); diff --git a/core/src/mindustry/world/blocks/defense/MendProjector.java b/core/src/mindustry/world/blocks/defense/MendProjector.java index 90d3e30c95..911375fcb1 100644 --- a/core/src/mindustry/world/blocks/defense/MendProjector.java +++ b/core/src/mindustry/world/blocks/defense/MendProjector.java @@ -121,7 +121,7 @@ public class MendProjector extends Block{ float f = 1f - (Time.time / 100f) % 1f; Draw.color(baseColor, phaseColor, phaseHeat); - Draw.alpha(heat * Mathf.absin(Time.time, 10f, 1f) * 0.5f); + Draw.alpha(heat * Mathf.absin(Time.time, 50f / Mathf.PI2, 1f) * 0.5f); Draw.rect(topRegion, x, y); Draw.alpha(1f); Lines.stroke((2f * f + 0.2f) * heat); diff --git a/core/src/mindustry/world/blocks/defense/OverdriveProjector.java b/core/src/mindustry/world/blocks/defense/OverdriveProjector.java index 1286147421..ed535c2e18 100644 --- a/core/src/mindustry/world/blocks/defense/OverdriveProjector.java +++ b/core/src/mindustry/world/blocks/defense/OverdriveProjector.java @@ -137,7 +137,7 @@ public class OverdriveProjector extends Block{ float f = 1f - (Time.time / 100f) % 1f; Draw.color(baseColor, phaseColor, phaseHeat); - Draw.alpha(heat * Mathf.absin(Time.time, 10f, 1f) * 0.5f); + Draw.alpha(heat * Mathf.absin(Time.time, 50f / Mathf.PI2, 1f) * 0.5f); Draw.rect(topRegion, x, y); Draw.alpha(1f); Lines.stroke((2f * f + 0.1f) * heat); diff --git a/servers_v6.json b/servers_v6.json index cb0a524397..d9295c19c9 100644 --- a/servers_v6.json +++ b/servers_v6.json @@ -21,7 +21,7 @@ }, { "name": "Chaotic Neutral", - "address": ["Chaotic-Neutral.ddns.net:1111", "Chaotic-Neutral.ddns.net:2222", "Chaotic-Neutral.ddns.net:7777"] + "address": ["c-n.ddns.net:1111", "c-n.ddns.net:2222", "c-n.ddns.net:3333", "c-n.ddns.net:4444"] }, { "name": "Ranked", @@ -59,10 +59,6 @@ "name": "Obvilion Network", "address": ["obvilion.ru", "obvilion.ru:7001", "obvilion.ru:7002", "obvilion.ru:7003"] }, - { - "name": "Mindustry PLAY", - "address": ["92.63.100.160"] - }, { "name": "Nydus", "address": ["v6.mindustry.nydus.app:6566"] @@ -101,7 +97,7 @@ }, { "name": "Mindustry Español", - "address": ["panel.mindustry.me:2011", "mindustry.me:2034", "mindustry.me:2035"] + "address": ["panel.mindustry.me:2011", "yeeth.mindustry.me:6573", "panel.mindustry.me:2000", "panel.mindustry.me:2026"] }, { "name": "CreateDustry",