From 1676ad5f1b505fef6e71d29108fa119236d1aaa7 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 20 Jun 2019 09:14:47 -0400 Subject: [PATCH] Bugfixes --- core/assets/bundles/bundle.properties | 1 + .../io/anuke/mindustry/content/Blocks.java | 2 +- .../io/anuke/mindustry/content/TechTree.java | 2 +- .../mindustry/editor/MapEditorDialog.java | 6 +++- .../mindustry/entities/bullet/BulletType.java | 2 -- .../mindustry/entities/type/BaseUnit.java | 3 +- .../entities/type/base/BaseDrone.java | 4 +-- .../entities/type/base/MinerDrone.java | 29 ++++--------------- .../world/blocks/distribution/MassDriver.java | 2 +- 9 files changed, 19 insertions(+), 32 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index fce61dbc44..d982ceca89 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -837,6 +837,7 @@ team.none.name = gray team.green.name = green team.purple.name = purple unit.spirit.name = Spirit Repair Drone +unit.draug.name = Draug Miner Drone unit.spirit.description = Automatically repairs blocks. unit.phantom.name = Phantom Builder Drone unit.phantom.description = An advanced drone unit. Helps players build blocks diff --git a/core/src/io/anuke/mindustry/content/Blocks.java b/core/src/io/anuke/mindustry/content/Blocks.java index adf1d74acf..0dc8de1cb0 100644 --- a/core/src/io/anuke/mindustry/content/Blocks.java +++ b/core/src/io/anuke/mindustry/content/Blocks.java @@ -1687,7 +1687,7 @@ public class Blocks implements ContentList{ repairPoint = new RepairPoint("repair-point"){{ requirements(Category.units, ItemStack.with(Items.lead, 30, Items.copper, 30, Items.silicon, 30)); - repairSpeed = 0.1f; + repairSpeed = 0.3f; powerUse = 1f; }}; diff --git a/core/src/io/anuke/mindustry/content/TechTree.java b/core/src/io/anuke/mindustry/content/TechTree.java index 2c3ee5d1b9..8228b78eb2 100644 --- a/core/src/io/anuke/mindustry/content/TechTree.java +++ b/core/src/io/anuke/mindustry/content/TechTree.java @@ -261,7 +261,7 @@ public class TechTree implements ContentList{ }); node(wraithFactory, () -> { - node(spiritFactory, () -> { + node(ghoulFactory, () -> { node(revenantFactory, () -> { }); diff --git a/core/src/io/anuke/mindustry/editor/MapEditorDialog.java b/core/src/io/anuke/mindustry/editor/MapEditorDialog.java index c83538840b..0bd09a19ff 100644 --- a/core/src/io/anuke/mindustry/editor/MapEditorDialog.java +++ b/core/src/io/anuke/mindustry/editor/MapEditorDialog.java @@ -436,12 +436,16 @@ public class MapEditorDialog extends Dialog implements Disposable{ table.update(() -> { Vector2 v = button.localToStageCoordinates(Tmp.v1.setZero()); table.setPosition(v.x, v.y, Align.topLeft); + if(!isShown()){ + table.remove(); + lastTable[0] = null; + } }); table.pack(); table.act(Core.graphics.getDeltaTime()); - Core.scene.add(table); + addChild(table); lastTable[0] = table; }); } diff --git a/core/src/io/anuke/mindustry/entities/bullet/BulletType.java b/core/src/io/anuke/mindustry/entities/bullet/BulletType.java index 3bda06008a..b554c2ac68 100644 --- a/core/src/io/anuke/mindustry/entities/bullet/BulletType.java +++ b/core/src/io/anuke/mindustry/entities/bullet/BulletType.java @@ -46,8 +46,6 @@ public abstract class BulletType extends Content{ public StatusEffect status = StatusEffects.none; /** Intensity of applied status effect in terms of duration. */ public float statusDuration = 60 * 1f; - /** Whether to sync this bullet to clients. */ - public boolean syncable; /** Whether this bullet type collides with tiles. */ public boolean collidesTiles = true; /** Whether this bullet type collides with tiles that are of the same team. */ diff --git a/core/src/io/anuke/mindustry/entities/type/BaseUnit.java b/core/src/io/anuke/mindustry/entities/type/BaseUnit.java index de040681cc..88f9090f5e 100644 --- a/core/src/io/anuke/mindustry/entities/type/BaseUnit.java +++ b/core/src/io/anuke/mindustry/entities/type/BaseUnit.java @@ -105,7 +105,8 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{ } public boolean targetHasFlag(BlockFlag flag){ - return target instanceof TileEntity && ((TileEntity)target).tile.block().flags.contains(flag); + return (target instanceof TileEntity && ((TileEntity)target).tile.block().flags.contains(flag)) || + (target instanceof Tile && ((Tile)target).block().flags.contains(flag)); } public void setState(UnitState state){ diff --git a/core/src/io/anuke/mindustry/entities/type/base/BaseDrone.java b/core/src/io/anuke/mindustry/entities/type/base/BaseDrone.java index 27ac0c86ff..0ce42b0bc1 100644 --- a/core/src/io/anuke/mindustry/entities/type/base/BaseDrone.java +++ b/core/src/io/anuke/mindustry/entities/type/base/BaseDrone.java @@ -17,7 +17,7 @@ public abstract class BaseDrone extends FlyingUnit{ public void update(){ if(health >= maxHealth()){ - state.set(attack); + state.set(getStartState()); }else if(!targetHasFlag(BlockFlag.repair)){ if(retarget()){ Tile repairPoint = Geometry.findClosest(x, y, world.indexer.getAllied(team, BlockFlag.repair)); @@ -44,7 +44,7 @@ public abstract class BaseDrone extends FlyingUnit{ @Override public void behavior(){ - if(health <= health * type.retreatPercent){ + if(health <= maxHealth() * type.retreatPercent && !state.is(retreat) && Geometry.findClosest(x, y, world.indexer.getAllied(team, BlockFlag.repair)) != null){ setState(retreat); } } diff --git a/core/src/io/anuke/mindustry/entities/type/base/MinerDrone.java b/core/src/io/anuke/mindustry/entities/type/base/MinerDrone.java index 9cc5f4f31c..8f40c9f092 100644 --- a/core/src/io/anuke/mindustry/entities/type/base/MinerDrone.java +++ b/core/src/io/anuke/mindustry/entities/type/base/MinerDrone.java @@ -33,32 +33,21 @@ public class MinerDrone extends BaseDrone implements MinerTrait{ if(entity == null) return; - if(targetItem == null){ - findItem(); - } + findItem(); - //core full + //core full of the target item, do nothing if(targetItem != null && entity.block.acceptStack(targetItem, 1, entity.tile, MinerDrone.this) == 0){ MinerDrone.this.clearItem(); return; } //if inventory is full, drop it off. - if(item.amount >= getItemCapacity()){ + if(item.amount >= getItemCapacity() || (targetItem != null && !acceptsItem(targetItem))){ setState(drop); }else{ - if(targetItem != null && !acceptsItem(targetItem)){ - setState(drop); - return; - } - - if(retarget()){ - findItem(); - - if(targetItem == null) return; - + if(retarget() && targetItem != null){ target = world.indexer.findClosestOre(x, y, targetItem); - }; + } if(target instanceof Tile){ moveTo(type.range / 1.5f); @@ -92,13 +81,7 @@ public class MinerDrone extends BaseDrone implements MinerTrait{ } public void update(){ - if(item.amount == 0){ - setState(mine); - return; - } - - if(item.item.type != ItemType.material){ - item.amount = 0; + if(item.amount == 0 || item.item.type != ItemType.material){ setState(mine); return; } diff --git a/core/src/io/anuke/mindustry/world/blocks/distribution/MassDriver.java b/core/src/io/anuke/mindustry/world/blocks/distribution/MassDriver.java index f04e47cb4e..73657741da 100644 --- a/core/src/io/anuke/mindustry/world/blocks/distribution/MassDriver.java +++ b/core/src/io/anuke/mindustry/world/blocks/distribution/MassDriver.java @@ -204,7 +204,7 @@ public class MassDriver extends Block{ if(entity.link == other.pos()){ Call.linkMassDriver(null, tile, -1); return false; - }else if(other.block() instanceof MassDriver && other.dst(tile) <= range){ + }else if(other.block() instanceof MassDriver && other.dst(tile) <= range && other.getTeam() == tile.getTeam()){ Call.linkMassDriver(null, tile, other.pos()); return false; }