diff --git a/core/src/mindustry/entities/comp/BlockUnitComp.java b/core/src/mindustry/entities/comp/BlockUnitComp.java index a0b1fdebcd..39adf5c891 100644 --- a/core/src/mindustry/entities/comp/BlockUnitComp.java +++ b/core/src/mindustry/entities/comp/BlockUnitComp.java @@ -18,7 +18,7 @@ abstract class BlockUnitComp implements Unitc{ //sets up block stats maxHealth(tile.block.health); - health(tile.health()); + health(tile.health); hitSize(tile.block.size * tilesize * 0.7f); set(tile); } diff --git a/core/src/mindustry/entities/comp/BuildingComp.java b/core/src/mindustry/entities/comp/BuildingComp.java index e913895b98..db1995e282 100644 --- a/core/src/mindustry/entities/comp/BuildingComp.java +++ b/core/src/mindustry/entities/comp/BuildingComp.java @@ -1062,7 +1062,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, for(int i = 0; i < Mathf.clamp(amount / 5, 0, 30); i++){ Time.run(i / 2f, () -> { - Tile other = world.tile(tileX() + Mathf.range(block.size / 2), tileY() + Mathf.range(block.size / 2)); + Tile other = world.tileWorld(x + Mathf.range(block.size * tilesize / 2), y + Mathf.range(block.size * tilesize / 2)); if(other != null){ Puddles.deposit(other, liquid, splash); } diff --git a/core/src/mindustry/world/blocks/defense/turrets/LiquidTurret.java b/core/src/mindustry/world/blocks/defense/turrets/LiquidTurret.java index caae54ad41..72c0475aa2 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/LiquidTurret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/LiquidTurret.java @@ -91,9 +91,7 @@ public class LiquidTurret extends Turret{ @Override public void updateTile(){ - if(unit != null){ - unit.ammo(unit.type().ammoCapacity * liquids.currentAmount() / liquidCapacity); - } + unit.ammo(unit.type().ammoCapacity * liquids.currentAmount() / liquidCapacity); super.updateTile(); } diff --git a/core/src/mindustry/world/blocks/defense/turrets/PowerTurret.java b/core/src/mindustry/world/blocks/defense/turrets/PowerTurret.java index 7dc4eed3f6..4b19d33284 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/PowerTurret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/PowerTurret.java @@ -31,9 +31,7 @@ public class PowerTurret extends Turret{ @Override public void updateTile(){ - if(unit != null){ - unit.ammo(power.status * unit.type().ammoCapacity); - } + unit.ammo(power.status * unit.type().ammoCapacity); super.updateTile(); } diff --git a/core/src/mindustry/world/blocks/defense/turrets/Turret.java b/core/src/mindustry/world/blocks/defense/turrets/Turret.java index 1e971d884c..eb76c70604 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/Turret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/Turret.java @@ -149,15 +149,9 @@ public class Turret extends ReloadTurret{ public boolean logicShooting = false; public @Nullable Posc target; public Vec2 targetPos = new Vec2(); - public @Nullable BlockUnitc unit; + public BlockUnitc unit = (BlockUnitc)UnitTypes.block.create(team); public boolean wasShooting, charging; - @Override - public void created(){ - unit = (BlockUnitc)UnitTypes.block.create(team); - unit.tile(this); - } - @Override public boolean canControl(){ return playerControllable; @@ -165,7 +159,7 @@ public class Turret extends ReloadTurret{ @Override public void control(LAccess type, double p1, double p2, double p3, double p4){ - if(type == LAccess.shoot && (unit == null || !unit.isPlayer())){ + if(type == LAccess.shoot && !unit.isPlayer()){ targetPos.set(World.unconv((float)p1), World.unconv((float)p2)); logicControlTime = logicControlCooldown; logicShooting = !Mathf.zero(p3); @@ -203,15 +197,14 @@ public class Turret extends ReloadTurret{ } public boolean isShooting(){ - return (isControlled() ? (unit != null && unit.isShooting()) : logicControlled() ? logicShooting : target != null); + return (isControlled() ? unit.isShooting() : logicControlled() ? logicShooting : target != null); } @Override public Unit unit(){ - if(unit == null){ - unit = (BlockUnitc)UnitTypes.block.create(team); - unit.tile(this); - } + //make sure stats are correct + unit.tile(this); + unit.team(team); return (Unit)unit; } @@ -267,12 +260,9 @@ public class Turret extends ReloadTurret{ recoil = Mathf.lerpDelta(recoil, 0f, restitution); heat = Mathf.lerpDelta(heat, 0f, cooldown); - if(unit != null){ - unit.health(health); - unit.rotation(rotation); - unit.team(team); - unit.set(x, y); - } + unit.tile(this); + unit.rotation(rotation); + unit.team(team); if(logicControlTime > 0){ logicControlTime -= Time.delta; diff --git a/core/src/mindustry/world/blocks/production/AttributeCrafter.java b/core/src/mindustry/world/blocks/production/AttributeCrafter.java index 381e7af5e0..e11ba156ed 100644 --- a/core/src/mindustry/world/blocks/production/AttributeCrafter.java +++ b/core/src/mindustry/world/blocks/production/AttributeCrafter.java @@ -52,6 +52,11 @@ public class AttributeCrafter extends GenericCrafter{ return baseEfficiency + Math.min(maxBoost, boostScale * attrsum) + attribute.env(); } + @Override + public void pickedUp(){ + attrsum = 0f; + } + @Override public void onProximityUpdate(){ super.onProximityUpdate(); diff --git a/core/src/mindustry/world/blocks/production/Pump.java b/core/src/mindustry/world/blocks/production/Pump.java index 9a9aca65c3..f18b0c7640 100644 --- a/core/src/mindustry/world/blocks/production/Pump.java +++ b/core/src/mindustry/world/blocks/production/Pump.java @@ -91,6 +91,11 @@ public class Pump extends LiquidBlock{ Drawf.liquid(liquidRegion, x, y, liquids.currentAmount() / liquidCapacity, liquids.current().color); } + @Override + public void pickedUp(){ + amount = 0f; + } + @Override public void onProximityUpdate(){ super.onProximityUpdate(); diff --git a/core/src/mindustry/world/blocks/production/SolidPump.java b/core/src/mindustry/world/blocks/production/SolidPump.java index 912af46b18..7bd7cb9bed 100644 --- a/core/src/mindustry/world/blocks/production/SolidPump.java +++ b/core/src/mindustry/world/blocks/production/SolidPump.java @@ -95,6 +95,11 @@ public class SolidPump extends Pump{ @Override public void drawCracks(){} + @Override + public void pickedUp(){ + boost = validTiles = 0f; + } + @Override public void draw(){ Draw.rect(region, x, y);